From edcf0c3e55f99972ad12145adea16f4aadb0c744 Mon Sep 17 00:00:00 2001 From: Tobias Schmale Date: Wed, 6 Mar 2024 20:13:35 +0000 Subject: [PATCH 001/227] ESPULP: add option to set wakeup period and entrypoint --- locale/circuitpython.pot | 16 ++++++-- ports/espressif/bindings/espulp/ULP.c | 44 +++++++++++++++------ ports/espressif/bindings/espulp/ULP.h | 3 +- ports/espressif/common-hal/espulp/ULP.c | 51 +++++++++++++++---------- 4 files changed, 77 insertions(+), 37 deletions(-) diff --git a/locale/circuitpython.pot b/locale/circuitpython.pot index 4c58cd284852..54f8dc3a7e92 100644 --- a/locale/circuitpython.pot +++ b/locale/circuitpython.pot @@ -912,10 +912,6 @@ msgstr "" msgid "Error in safemode.py." msgstr "" -#: shared-bindings/ssl/SSLSocket.c -msgid "Error: Failure to bind" -msgstr "" - #: shared-bindings/alarm/__init__.c msgid "Expected a kind of %q" msgstr "" @@ -1238,6 +1234,10 @@ msgstr "" msgid "Invalid multicast MAC address" msgstr "" +#: ports/espressif/common-hal/espulp/ULP.c +msgid "Invalid parameters" +msgstr "" + #: ports/espressif/common-hal/espidf/__init__.c msgid "Invalid size" msgstr "" @@ -1278,6 +1278,10 @@ msgstr "" msgid "Layer must be a Group or TileGrid subclass" msgstr "" +#: ports/espressif/common-hal/espulp/ULP.c +msgid "Load binary failed" +msgstr "" + #: ports/espressif/common-hal/espidf/__init__.c msgid "MAC address was invalid" msgstr "" @@ -1823,6 +1827,10 @@ msgstr "" msgid "Right format but not supported" msgstr "" +#: ports/espressif/common-hal/espulp/ULP.c +msgid "Run binary failed" +msgstr "" + #: main.c msgid "Running in safe mode! Not running saved code.\n" msgstr "" diff --git a/ports/espressif/bindings/espulp/ULP.c b/ports/espressif/bindings/espulp/ULP.c index 9fd3be429798..4613d785a7c3 100644 --- a/ports/espressif/bindings/espulp/ULP.c +++ b/ports/espressif/bindings/espulp/ULP.c @@ -90,11 +90,29 @@ STATIC mp_obj_t espulp_ulp_obj___exit__(size_t n_args, const mp_obj_t *args) { } STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(espulp_ulp___exit___obj, 4, 4, espulp_ulp_obj___exit__); +//| def set_wakeup_period(self, period_index: int, period_us: int) -> None: +//| """Sets the wakeup period for the ULP.""" +//| ... +STATIC mp_obj_t espulp_ulp_set_wakeup_period(mp_obj_t self_in, mp_obj_t period_index, mp_obj_t period_us) { + espulp_ulp_obj_t *self = MP_OBJ_TO_PTR(self_in); + check_for_deinit(self); + + // period_index should be between 0 and 4 but bounds checking happens in esp-idf, so no need to do that here + common_hal_espulp_ulp_set_wakeup_period(self, mp_obj_get_int(period_index), mp_obj_get_int(period_us)); + + return mp_const_none; +} +STATIC MP_DEFINE_CONST_FUN_OBJ_3(espulp_ulp_set_wakeup_period_obj, espulp_ulp_set_wakeup_period); + //| def run( -//| self, program: ReadableBuffer, *, pins: Sequence[microcontroller.Pin] = () +//| self, +//| program: ReadableBuffer, +//| *, +//| entrypoint: int, +//| pins: Sequence[microcontroller.Pin] = () //| ) -> None: -//| """Loads the program into ULP memory and then runs the program. The given pins are -//| claimed and not reset until `halt()` is called. +//| """Loads the program into ULP memory and then runs the program, starting at entry_point. +//| The given pins are claimed and not reset until `halt()` is called. //| //| The program will continue to run even when the running Python is halted.""" //| ... @@ -102,9 +120,10 @@ STATIC mp_obj_t espulp_ulp_run(size_t n_args, const mp_obj_t *pos_args, mp_map_t espulp_ulp_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); check_for_deinit(self); - enum { ARG_program, ARG_pins }; + enum { ARG_program, ARG_entrypoint, ARG_pins }; static const mp_arg_t allowed_args[] = { { MP_QSTR_program, MP_ARG_REQUIRED | MP_ARG_OBJ}, + { MP_QSTR_entrypoint, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 0}}, { MP_QSTR_pins, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_empty_tuple} }, }; @@ -114,6 +133,8 @@ STATIC mp_obj_t espulp_ulp_run(size_t n_args, const mp_obj_t *pos_args, mp_map_t mp_buffer_info_t bufinfo; mp_get_buffer_raise(args[ARG_program].u_obj, &bufinfo, MP_BUFFER_READ); + mp_uint_t entrypoint = args[ARG_entrypoint].u_int; + mp_obj_t pins_in = args[ARG_pins].u_obj; const size_t num_pins = (size_t)MP_OBJ_SMALL_INT_VALUE(mp_obj_len(pins_in)); @@ -131,7 +152,7 @@ STATIC mp_obj_t espulp_ulp_run(size_t n_args, const mp_obj_t *pos_args, mp_map_t pin_mask |= 1 << pin->number; } - common_hal_espulp_ulp_run(self, bufinfo.buf, bufinfo.len, pin_mask); + common_hal_espulp_ulp_run(self, bufinfo.buf, bufinfo.len, entrypoint, pin_mask); return mp_const_none; } STATIC MP_DEFINE_CONST_FUN_OBJ_KW(espulp_ulp_run_obj, 2, espulp_ulp_run); @@ -163,12 +184,13 @@ MP_PROPERTY_GETTER(espulp_ulp_arch_obj, (mp_obj_t)&espulp_ulp_get_arch_obj); STATIC const mp_rom_map_elem_t espulp_ulp_locals_table[] = { - { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&espulp_ulp_deinit_obj) }, - { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&mp_identity_obj) }, - { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&espulp_ulp___exit___obj) }, - { MP_ROM_QSTR(MP_QSTR_run), MP_ROM_PTR(&espulp_ulp_run_obj) }, - { MP_ROM_QSTR(MP_QSTR_halt), MP_ROM_PTR(&espulp_ulp_halt_obj) }, - { MP_ROM_QSTR(MP_QSTR_arch), MP_ROM_PTR(&espulp_ulp_arch_obj) }, + { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&espulp_ulp_deinit_obj) }, + { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&mp_identity_obj) }, + { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&espulp_ulp___exit___obj) }, + { MP_ROM_QSTR(MP_QSTR_set_wakeup_period), MP_ROM_PTR(&espulp_ulp_set_wakeup_period_obj)}, + { MP_ROM_QSTR(MP_QSTR_run), MP_ROM_PTR(&espulp_ulp_run_obj) }, + { MP_ROM_QSTR(MP_QSTR_halt), MP_ROM_PTR(&espulp_ulp_halt_obj) }, + { MP_ROM_QSTR(MP_QSTR_arch), MP_ROM_PTR(&espulp_ulp_arch_obj) }, }; STATIC MP_DEFINE_CONST_DICT(espulp_ulp_locals_dict, espulp_ulp_locals_table); diff --git a/ports/espressif/bindings/espulp/ULP.h b/ports/espressif/bindings/espulp/ULP.h index 490cbef1ca75..bcf932560c40 100644 --- a/ports/espressif/bindings/espulp/ULP.h +++ b/ports/espressif/bindings/espulp/ULP.h @@ -35,5 +35,6 @@ void common_hal_espulp_ulp_construct(espulp_ulp_obj_t *self, espulp_architecture bool common_hal_espulp_ulp_deinited(espulp_ulp_obj_t *self); void common_hal_espulp_ulp_deinit(espulp_ulp_obj_t *self); -void common_hal_espulp_ulp_run(espulp_ulp_obj_t *self, uint32_t *program, size_t length, uint32_t pin_mask); +void common_hal_espulp_ulp_set_wakeup_period(espulp_ulp_obj_t *self, size_t period_index, uint32_t period_us); +void common_hal_espulp_ulp_run(espulp_ulp_obj_t *self, uint32_t *program, size_t length, uint32_t entry_point, uint32_t pin_mask); void common_hal_espulp_ulp_halt(espulp_ulp_obj_t *self); diff --git a/ports/espressif/common-hal/espulp/ULP.c b/ports/espressif/common-hal/espulp/ULP.c index ef050c6e030c..ed7248996acd 100644 --- a/ports/espressif/common-hal/espulp/ULP.c +++ b/ports/espressif/common-hal/espulp/ULP.c @@ -46,6 +46,13 @@ // To-do idf v5.0: remove following include #include "soc/rtc_cntl_reg.h" +#ifndef CONFIG_ULP_COPROC_TYPE_FSM +#warning "Have no FSM" +#endif +// #ifndef CONFIG_ULP_COPROC_TYPE_RISCV +// #warning "Have no RISCV" +// #endif + STATIC bool ulp_used = false; STATIC uint32_t pins_used = 0; @@ -54,7 +61,14 @@ void espulp_reset(void) { ulp_used = false; } -void common_hal_espulp_ulp_run(espulp_ulp_obj_t *self, uint32_t *program, size_t length, uint32_t pin_mask) { +void common_hal_espulp_ulp_set_wakeup_period(espulp_ulp_obj_t *self, size_t period_index, uint32_t period_us) { + int _errno = ulp_set_wakeup_period(period_index, period_us); + if (_errno != ESP_OK) { + mp_raise_ValueError(MP_ERROR_TEXT("Invalid parameters")); + } +} + +void common_hal_espulp_ulp_run(espulp_ulp_obj_t *self, uint32_t *program, size_t length, uint32_t entry_point, uint32_t pin_mask) { if (length > CONFIG_ULP_COPROC_RESERVE_MEM) { mp_raise_ValueError(MP_ERROR_TEXT("Program too long")); } @@ -87,13 +101,18 @@ void common_hal_espulp_ulp_run(espulp_ulp_obj_t *self, uint32_t *program, size_t } pins_used = pin_mask; - ulp_set_wakeup_period(0, 20000); - + int _errno; switch (self->arch) { #ifdef CONFIG_ULP_COPROC_TYPE_FSM case FSM: - ulp_load_binary(0, (const uint8_t *)program, length); - ulp_run(0); + _errno = ulp_load_binary(0, (const uint8_t *)program, length / sizeof(uint32_t)); + if (_errno != ESP_OK) { + mp_raise_RuntimeError(MP_ERROR_TEXT("Load binary failed")); + } + _errno = ulp_run(entry_point / sizeof(uint32_t)); + if (_errno != ESP_OK) { + mp_raise_RuntimeError(MP_ERROR_TEXT("Run binary failed")); + } break; #endif #ifdef CONFIG_ULP_COPROC_TYPE_RISCV @@ -109,23 +128,13 @@ void common_hal_espulp_ulp_run(espulp_ulp_obj_t *self, uint32_t *program, size_t } void common_hal_espulp_ulp_halt(espulp_ulp_obj_t *self) { - switch (self->arch) { - /* - #ifdef CONFIG_ULP_COPROC_TYPE_FSM - case FSM: - break; - #endif - */ - #ifdef CONFIG_ULP_COPROC_TYPE_RISCV - case RISCV: - ulp_riscv_timer_stop(); - ulp_riscv_halt(); - break; - #endif - default: - mp_raise_NotImplementedError(NULL); - break; + #ifdef CONFIG_ULP_COPROC_TYPE_RISCV + if (self->arch == RISCV) { + ulp_riscv_timer_stop(); + ulp_riscv_halt(); } + #endif + CLEAR_PERI_REG_MASK(RTC_CNTL_ULP_CP_TIMER_REG, RTC_CNTL_ULP_CP_SLP_TIMER_EN); // Release pins we were using. for (uint8_t i = 0; i < 32; i++) { From 9b52756f1cf187db74148aba9b7ddabd9ac259ae Mon Sep 17 00:00:00 2001 From: Tobias Schmale Date: Wed, 6 Mar 2024 20:22:44 +0000 Subject: [PATCH 002/227] ESPULP: set default ulp type --- ports/espressif/esp-idf-config/sdkconfig-esp32.defaults | 1 + ports/espressif/esp-idf-config/sdkconfig-esp32s2.defaults | 1 + ports/espressif/esp-idf-config/sdkconfig-esp32s3.defaults | 1 + 3 files changed, 3 insertions(+) diff --git a/ports/espressif/esp-idf-config/sdkconfig-esp32.defaults b/ports/espressif/esp-idf-config/sdkconfig-esp32.defaults index 582e10ad7721..0077e301ac20 100644 --- a/ports/espressif/esp-idf-config/sdkconfig-esp32.defaults +++ b/ports/espressif/esp-idf-config/sdkconfig-esp32.defaults @@ -65,6 +65,7 @@ CONFIG_SPI_FLASH_SUPPORT_TH_CHIP=y # Ultra Low Power (ULP) Co-processor # CONFIG_ULP_COPROC_ENABLED=y +CONFIG_ULP_COPROC_TYPE_FSM=y CONFIG_ULP_COPROC_RESERVE_MEM=4080 # end of Ultra Low Power (ULP) Co-processor diff --git a/ports/espressif/esp-idf-config/sdkconfig-esp32s2.defaults b/ports/espressif/esp-idf-config/sdkconfig-esp32s2.defaults index 8efa47508e8c..b10710bc7d62 100644 --- a/ports/espressif/esp-idf-config/sdkconfig-esp32s2.defaults +++ b/ports/espressif/esp-idf-config/sdkconfig-esp32s2.defaults @@ -51,6 +51,7 @@ CONFIG_NEWLIB_NANO_FORMAT=y # Ultra Low Power (ULP) Co-processor # CONFIG_ULP_COPROC_ENABLED=y +CONFIG_ULP_COPROC_TYPE_FSM=y CONFIG_ULP_COPROC_RESERVE_MEM=8176 # end of Ultra Low Power (ULP) Co-processor diff --git a/ports/espressif/esp-idf-config/sdkconfig-esp32s3.defaults b/ports/espressif/esp-idf-config/sdkconfig-esp32s3.defaults index 2bd949fadd29..15ccb7dba9e3 100644 --- a/ports/espressif/esp-idf-config/sdkconfig-esp32s3.defaults +++ b/ports/espressif/esp-idf-config/sdkconfig-esp32s3.defaults @@ -92,6 +92,7 @@ CONFIG_NEWLIB_NANO_FORMAT=y # Ultra Low Power (ULP) Co-processor # CONFIG_ULP_COPROC_ENABLED=y +CONFIG_ULP_COPROC_TYPE_FSM=y CONFIG_ULP_COPROC_RESERVE_MEM=8176 # end of Ultra Low Power (ULP) Co-processor From 21cc4c9355e9a6c50c29cc9d30c906767aacf4fd Mon Sep 17 00:00:00 2001 From: RetiredWizard Date: Tue, 23 Apr 2024 23:59:04 -0400 Subject: [PATCH 003/227] Update pin names to match info printed on baord --- .../boards/waveshare_rp2040_geek/pins.c | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/ports/raspberrypi/boards/waveshare_rp2040_geek/pins.c b/ports/raspberrypi/boards/waveshare_rp2040_geek/pins.c index 5f42213eeee5..c790befa974a 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_geek/pins.c +++ b/ports/raspberrypi/boards/waveshare_rp2040_geek/pins.c @@ -6,32 +6,32 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // 2-3 DEBUG - { MP_ROM_QSTR(MP_QSTR_IO2), MP_ROM_PTR(&pin_GPIO2) }, - { MP_ROM_QSTR(MP_QSTR_IO3), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_GP2), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_GP3), MP_ROM_PTR(&pin_GPIO3) }, // 4-5 UART - { MP_ROM_QSTR(MP_QSTR_IO4), MP_ROM_PTR(&pin_GPIO4) }, - { MP_ROM_QSTR(MP_QSTR_IO5), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_GP4), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_GP5), MP_ROM_PTR(&pin_GPIO5) }, // 8-12 LCD - { MP_ROM_QSTR(MP_QSTR_IO8), MP_ROM_PTR(&pin_GPIO8) }, - { MP_ROM_QSTR(MP_QSTR_IO9), MP_ROM_PTR(&pin_GPIO9) }, - { MP_ROM_QSTR(MP_QSTR_IO10), MP_ROM_PTR(&pin_GPIO10) }, - { MP_ROM_QSTR(MP_QSTR_IO11), MP_ROM_PTR(&pin_GPIO11) }, - { MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_GP8), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_GP9), MP_ROM_PTR(&pin_GPIO9) }, + { MP_ROM_QSTR(MP_QSTR_GP10), MP_ROM_PTR(&pin_GPIO10) }, + { MP_ROM_QSTR(MP_QSTR_GP11), MP_ROM_PTR(&pin_GPIO11) }, + { MP_ROM_QSTR(MP_QSTR_GP12), MP_ROM_PTR(&pin_GPIO12) }, // 16-17 I2C - { MP_ROM_QSTR(MP_QSTR_IO16), MP_ROM_PTR(&pin_GPIO16) }, - { MP_ROM_QSTR(MP_QSTR_IO17), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_GP16), MP_ROM_PTR(&pin_GPIO16) }, + { MP_ROM_QSTR(MP_QSTR_GP17), MP_ROM_PTR(&pin_GPIO17) }, // 18-23 SD Card - { MP_ROM_QSTR(MP_QSTR_IO18), MP_ROM_PTR(&pin_GPIO18) }, - { MP_ROM_QSTR(MP_QSTR_IO19), MP_ROM_PTR(&pin_GPIO19) }, - { MP_ROM_QSTR(MP_QSTR_IO20), MP_ROM_PTR(&pin_GPIO20) }, - { MP_ROM_QSTR(MP_QSTR_IO21), MP_ROM_PTR(&pin_GPIO21) }, - { MP_ROM_QSTR(MP_QSTR_IO22), MP_ROM_PTR(&pin_GPIO22) }, - { MP_ROM_QSTR(MP_QSTR_IO23), MP_ROM_PTR(&pin_GPIO23) }, + { MP_ROM_QSTR(MP_QSTR_GP18), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_GP19), MP_ROM_PTR(&pin_GPIO19) }, + { MP_ROM_QSTR(MP_QSTR_GP20), MP_ROM_PTR(&pin_GPIO20) }, + { MP_ROM_QSTR(MP_QSTR_GP21), MP_ROM_PTR(&pin_GPIO21) }, + { MP_ROM_QSTR(MP_QSTR_GP22), MP_ROM_PTR(&pin_GPIO22) }, + { MP_ROM_QSTR(MP_QSTR_GP23), MP_ROM_PTR(&pin_GPIO23) }, // 25 LCD Backlight - { MP_ROM_QSTR(MP_QSTR_IO25), MP_ROM_PTR(&pin_GPIO25) }, + { MP_ROM_QSTR(MP_QSTR_GP25), MP_ROM_PTR(&pin_GPIO25) }, // 28-29 I2C - { MP_ROM_QSTR(MP_QSTR_IO28), MP_ROM_PTR(&pin_GPIO28) }, - { MP_ROM_QSTR(MP_QSTR_IO29), MP_ROM_PTR(&pin_GPIO29) }, + { MP_ROM_QSTR(MP_QSTR_GP28), MP_ROM_PTR(&pin_GPIO28) }, + { MP_ROM_QSTR(MP_QSTR_GP29), MP_ROM_PTR(&pin_GPIO29) }, // UART { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO4) }, From 933efe082e80e16f44d6125cb2e8d4553a9a4f0c Mon Sep 17 00:00:00 2001 From: elpekenin Date: Fri, 3 May 2024 16:53:13 +0200 Subject: [PATCH 004/227] add `--list` to stubs setboard --- .../circuitpython_setboard/__init__.py | 36 +++++++++++++------ 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/tools/board_stubs/circuitpython_setboard/__init__.py b/tools/board_stubs/circuitpython_setboard/__init__.py index 0d5eedeb533e..dc6cf81c0236 100644 --- a/tools/board_stubs/circuitpython_setboard/__init__.py +++ b/tools/board_stubs/circuitpython_setboard/__init__.py @@ -1,26 +1,42 @@ # SPDX-FileCopyrightText: 2024 Tim Cocks # # SPDX-License-Identifier: MIT -from importlib import resources -import os +import argparse import sys import shutil +from importlib import resources def set_board(): - if len(sys.argv) != 2: - print(f"Incorrect args. Please call with: 'circuitpython_setboard chosen_board'") - return + parser = argparse.ArgumentParser( + prog=__name__, + usage="Install CircuitPython board-specific stubs", + ) + parser.add_argument("chosen_board", help="selected board", nargs="?") + parser.add_argument("-l", "--list", help="show available boards", action="store_true") + + args = parser.parse_args() + + if args.list: + sys.stdout.write("Available boards are: \n") + + for board in resources.files("board_definitions").iterdir(): + sys.stdout.write(f"{board.name}\n") + + sys.exit(0) + + if args.chosen_board is None: + sys.stderr.write("Must select a board") + sys.exit(1) - chosen_board = sys.argv[1] - print(f"setting board: {chosen_board}") + print(f"setting board: {args.chosen_board}") board_stubs_file = resources.files("board-stubs").joinpath("__init__.pyi") - board_definitions_path = resources.files("board_definitions").joinpath(chosen_board) + board_definitions_path = resources.files("board_definitions").joinpath(args.chosen_board) board_definitions_file = board_definitions_path.joinpath("__init__.pyi") if not board_definitions_file.is_file(): - print(f"Board: '{chosen_board}' was not found") - return + print(f"Board: '{args.chosen_board}' was not found") + sys.exit(1) shutil.copyfile(board_definitions_file, board_stubs_file) From 7140008a185632c855ce7614243f48a26d813de5 Mon Sep 17 00:00:00 2001 From: elpekenin Date: Fri, 3 May 2024 19:40:12 +0200 Subject: [PATCH 005/227] grouped and sorted --- .../circuitpython_setboard/__init__.py | 72 ++++++++++++++++--- 1 file changed, 61 insertions(+), 11 deletions(-) diff --git a/tools/board_stubs/circuitpython_setboard/__init__.py b/tools/board_stubs/circuitpython_setboard/__init__.py index dc6cf81c0236..8e1e7c5809c7 100644 --- a/tools/board_stubs/circuitpython_setboard/__init__.py +++ b/tools/board_stubs/circuitpython_setboard/__init__.py @@ -4,7 +4,34 @@ import argparse import sys import shutil +from collections import defaultdict from importlib import resources +from importlib.abc import Traversable + + +def get_definitions_or_raise(board: str) -> Traversable: + """Get the definitions file for a board given its name.""" + + path = resources.files("board_definitions").joinpath(board) + + file = path.joinpath("__init__.pyi") + if not file.is_file(): + sys.stderr.write(f"Definitions for: '{board}' were not found\n") + sys.exit(1) + + return file + + +def get_doc_or_raise(board: str) -> str: + """Get the docstring for a board given its name.""" + + with get_definitions_or_raise(board).open("r") as f: + return f.read().split('"""')[1] + + +def header(txt: str) -> str: + """Helper text formatter.""" + return txt + "\n" + "-" * len(txt) + "\n" def set_board(): @@ -18,25 +45,48 @@ def set_board(): args = parser.parse_args() if args.list: - sys.stdout.write("Available boards are: \n") + port_boards: defaultdict[str, list[str]] = defaultdict(list) for board in resources.files("board_definitions").iterdir(): - sys.stdout.write(f"{board.name}\n") + # NOTE: For the hand-crafted finding of port in the docstring, its + # format is assumed to be: + # + # + # Board stub for ... + # - port: ... + # - board_id: ... + # - NVM size: ... + # - Included modules: ... + # - Frozen libraries: ... + # + + lines = get_doc_or_raise(board).split("\n") + port = lines[2].split("-")[1].split(":")[1].strip() + + port_boards[port].append(board.name) + + sys.stdout.write("Available boards are: \n") + # sort by port name + for port, boards in sorted(port_boards.items(), key=lambda kv: kv[0]): + sys.stdout.write( + header(port) + + " * " + # sort by board name + + "\n * ".join(sorted(boards)) + + "\n\n" + ) sys.exit(0) if args.chosen_board is None: - sys.stderr.write("Must select a board") + sys.stderr.write("Must select a board\n") sys.exit(1) - print(f"setting board: {args.chosen_board}") + board_definitions_file = get_definitions_or_raise(args.chosen_board) board_stubs_file = resources.files("board-stubs").joinpath("__init__.pyi") - board_definitions_path = resources.files("board_definitions").joinpath(args.chosen_board) - board_definitions_file = board_definitions_path.joinpath("__init__.pyi") - - if not board_definitions_file.is_file(): - print(f"Board: '{args.chosen_board}' was not found") - sys.exit(1) - shutil.copyfile(board_definitions_file, board_stubs_file) + + sys.stdout.write( + header("Information about the board") + get_doc_or_raise(args.chose_board) + "\n" + ) From cdd6fea907b9ab4dc0ef15ff4ac97e825cec2e3e Mon Sep 17 00:00:00 2001 From: elpekenin Date: Sat, 4 May 2024 00:57:09 +0200 Subject: [PATCH 006/227] add filtering option --- .../circuitpython_setboard/__init__.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/tools/board_stubs/circuitpython_setboard/__init__.py b/tools/board_stubs/circuitpython_setboard/__init__.py index 8e1e7c5809c7..b08a85801c18 100644 --- a/tools/board_stubs/circuitpython_setboard/__init__.py +++ b/tools/board_stubs/circuitpython_setboard/__init__.py @@ -40,7 +40,12 @@ def set_board(): usage="Install CircuitPython board-specific stubs", ) parser.add_argument("chosen_board", help="selected board", nargs="?") - parser.add_argument("-l", "--list", help="show available boards", action="store_true") + parser.add_argument( + "-l", + "--list", + help=f"show available boards. can filter eg: '{__name__} -l feather'", + action="store_true", + ) args = parser.parse_args() @@ -48,6 +53,13 @@ def set_board(): port_boards: defaultdict[str, list[str]] = defaultdict(list) for board in resources.files("board_definitions").iterdir(): + # if we receive both the list flag and a board name, use it as filter + if ( + args.chosen_board is not None + and args.chosen_board.lower() not in board.name.lower() + ): + continue + # NOTE: For the hand-crafted finding of port in the docstring, its # format is assumed to be: # @@ -65,6 +77,10 @@ def set_board(): port_boards[port].append(board.name) + if not port_boards: + sys.stdout.write("Nothing found, check out your filter.\n") + sys.exit(0) + sys.stdout.write("Available boards are: \n") # sort by port name for port, boards in sorted(port_boards.items(), key=lambda kv: kv[0]): From 8c92cd80d0bfef250b52a7445ad8d38a48614162 Mon Sep 17 00:00:00 2001 From: elpekenin Date: Sat, 4 May 2024 01:10:22 +0200 Subject: [PATCH 007/227] fix typo --- tools/board_stubs/circuitpython_setboard/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/board_stubs/circuitpython_setboard/__init__.py b/tools/board_stubs/circuitpython_setboard/__init__.py index b08a85801c18..3bb116c88eb3 100644 --- a/tools/board_stubs/circuitpython_setboard/__init__.py +++ b/tools/board_stubs/circuitpython_setboard/__init__.py @@ -104,5 +104,5 @@ def set_board(): shutil.copyfile(board_definitions_file, board_stubs_file) sys.stdout.write( - header("Information about the board") + get_doc_or_raise(args.chose_board) + "\n" + header("Information about the board") + get_doc_or_raise(args.chosen_board) + "\n" ) From 77a4e429fd0e81f3843338f68f6bd086af50558d Mon Sep 17 00:00:00 2001 From: Bill Sideris Date: Sat, 4 May 2024 16:19:53 +0300 Subject: [PATCH 008/227] Always chdir back to root when reloading --- main.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/main.c b/main.c index 192dfa1a7ec0..06481d956ff2 100644 --- a/main.c +++ b/main.c @@ -473,9 +473,6 @@ STATIC bool __attribute__((noinline)) run_code_py(safe_mode_t safe_mode, bool *s usb_setup_with_vm(); #endif - // Make sure we are in the root directory before looking at files. - common_hal_os_chdir("/"); - // Check if a different run file has been allocated if (next_code_configuration != NULL) { next_code_configuration->options &= ~SUPERVISOR_NEXT_CODE_OPT_NEWLY_SET; @@ -1112,6 +1109,10 @@ int __attribute__((used)) main(void) { serial_write_compressed(MP_ERROR_TEXT("soft reboot\n")); } simulate_reset = false; + + // Always return to root before trying to run files. + common_hal_os_chdir("/"); + if (pyexec_mode_kind == PYEXEC_MODE_FRIENDLY_REPL) { // If code.py did a fake deep sleep, pretend that we // are running code.py for the first time after a hard From 49e0f5ab476db56a45fd14f2781afecc0932aa9e Mon Sep 17 00:00:00 2001 From: elpekenin Date: Mon, 6 May 2024 21:21:36 +0200 Subject: [PATCH 009/227] search by port, dont print dev info --- .../circuitpython_setboard/__init__.py | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/tools/board_stubs/circuitpython_setboard/__init__.py b/tools/board_stubs/circuitpython_setboard/__init__.py index 3bb116c88eb3..577b24feb3cd 100644 --- a/tools/board_stubs/circuitpython_setboard/__init__.py +++ b/tools/board_stubs/circuitpython_setboard/__init__.py @@ -9,7 +9,7 @@ from importlib.abc import Traversable -def get_definitions_or_raise(board: str) -> Traversable: +def get_definitions_or_exit(board: str) -> Traversable: """Get the definitions file for a board given its name.""" path = resources.files("board_definitions").joinpath(board) @@ -22,10 +22,10 @@ def get_definitions_or_raise(board: str) -> Traversable: return file -def get_doc_or_raise(board: str) -> str: +def get_doc_or_exit(board: str) -> str: """Get the docstring for a board given its name.""" - with get_definitions_or_raise(board).open("r") as f: + with get_definitions_or_exit(board).open("r") as f: return f.read().split('"""')[1] @@ -52,14 +52,10 @@ def set_board(): if args.list: port_boards: defaultdict[str, list[str]] = defaultdict(list) - for board in resources.files("board_definitions").iterdir(): - # if we receive both the list flag and a board name, use it as filter - if ( - args.chosen_board is not None - and args.chosen_board.lower() not in board.name.lower() - ): - continue + # NOTE: "" in some_str == True + looking_for = "" if args.chosen_board is None else args.chosen_board.lower() + for board in resources.files("board_definitions").iterdir(): # NOTE: For the hand-crafted finding of port in the docstring, its # format is assumed to be: # @@ -72,9 +68,12 @@ def set_board(): # - Frozen libraries: ... # - lines = get_doc_or_raise(board).split("\n") + lines = get_doc_or_exit(board).split("\n") port = lines[2].split("-")[1].split(":")[1].strip() + if looking_for not in board.name.lower() and looking_for not in port.lower(): + continue + port_boards[port].append(board.name) if not port_boards: @@ -98,11 +97,7 @@ def set_board(): sys.stderr.write("Must select a board\n") sys.exit(1) - board_definitions_file = get_definitions_or_raise(args.chosen_board) + board_definitions_file = get_definitions_or_exit(args.chosen_board) board_stubs_file = resources.files("board-stubs").joinpath("__init__.pyi") shutil.copyfile(board_definitions_file, board_stubs_file) - - sys.stdout.write( - header("Information about the board") + get_doc_or_raise(args.chosen_board) + "\n" - ) From 7234375e806f101673f3c91bf649442260588d97 Mon Sep 17 00:00:00 2001 From: Tim Date: Tue, 7 May 2024 16:36:19 -0700 Subject: [PATCH 010/227] add subticks to RP2040 port_get_raw_ticks --- ports/raspberrypi/supervisor/port.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ports/raspberrypi/supervisor/port.c b/ports/raspberrypi/supervisor/port.c index 500850d4609f..bc5c49171f92 100644 --- a/ports/raspberrypi/supervisor/port.c +++ b/ports/raspberrypi/supervisor/port.c @@ -267,6 +267,9 @@ static volatile bool _woken_up; uint64_t port_get_raw_ticks(uint8_t *subticks) { uint64_t microseconds = time_us_64(); + if (subticks != NULL) { + *subticks = (uint8_t) (((microseconds % 1000000) % 977) / 31); + } return 1024 * (microseconds / 1000000) + (microseconds % 1000000) / 977; } From 1a16e6aabd4e0debc485013faa475e2bce4a749e Mon Sep 17 00:00:00 2001 From: Tim Date: Wed, 8 May 2024 09:26:53 -0700 Subject: [PATCH 011/227] fix whitespace --- ports/raspberrypi/supervisor/port.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ports/raspberrypi/supervisor/port.c b/ports/raspberrypi/supervisor/port.c index bc5c49171f92..01776f833fb0 100644 --- a/ports/raspberrypi/supervisor/port.c +++ b/ports/raspberrypi/supervisor/port.c @@ -268,8 +268,8 @@ static volatile bool _woken_up; uint64_t port_get_raw_ticks(uint8_t *subticks) { uint64_t microseconds = time_us_64(); if (subticks != NULL) { - *subticks = (uint8_t) (((microseconds % 1000000) % 977) / 31); - } + *subticks = (uint8_t)(((microseconds % 1000000) % 977) / 31); + } return 1024 * (microseconds / 1000000) + (microseconds % 1000000) / 977; } From a9d800b3084c9341c6a09613b040d0a07f3efaf1 Mon Sep 17 00:00:00 2001 From: Andrew Mirsky Date: Wed, 8 May 2024 16:50:30 -0400 Subject: [PATCH 012/227] docs/i2ctarget: added examples and additional explanation to the `I2CTarget()` class Signed-off-by: Andrew Mirsky --- shared-bindings/i2ctarget/__init__.c | 227 ++++++++++++++++++++++----- 1 file changed, 188 insertions(+), 39 deletions(-) diff --git a/shared-bindings/i2ctarget/__init__.c b/shared-bindings/i2ctarget/__init__.c index 65d224b933e1..bf80a64772ad 100644 --- a/shared-bindings/i2ctarget/__init__.c +++ b/shared-bindings/i2ctarget/__init__.c @@ -36,58 +36,207 @@ //| """Two wire serial protocol target //| -//| The `i2ctarget` module contains classes to support an I2C target. +//| In many cases, i2c is used by a controller to retrieve (or send) to a peripheral (target). It is also possible +//| for a device to act as a target for another controller. However, a device can only be a controller or a target on +//| an I2C bus (although many devices now support multiple I2C busses). //| -//| Example emulating a target with 2 addresses (read and write):: +//| .. note:: +//| `I2CTarget` takes a list of addresses, but not all devices support this feature //| +//| Example of emulating a simple device that can only handle single writes and reads:: +//| +//| +//| import board +//| from i2ctarget import I2CTarget +//| +//| import adafruit_logging as logging +//| from logging import NamedStreamHandler +//| +//| logger = logging.getLogger('i2ctarget') +//| logger.setLevel(logging.INFO) +//| logger.addHandler(NamedStreamHandler()) +//| +//| logger.info("\n\ncode starting...") +//| +//| # initialize an I2C target with a device address of 0x40 +//| with I2CTarget(board.SCL, board.SDA, (0x40,)) as device: +//| +//| while True: +//| # check if there's a pending device request +//| i2c_target_request = device.request() +//| +//| if not i2c_target_request: +//| # no request is pending +//| continue +//| +//| # `with` invokes I2CTargetRequest's functions to handle the necessary opening and closing of a transaction +//| with i2c_target_request: +//| +//| # the address associated with the request +//| address = i2c_target_request.address +//| +//| if i2c_target_request.is_read: +//| logger.info(f"read request to address '0x{address:02x}'") +//| +//| # for our emulated device, return a fixed value for the request +//| buffer = bytes([0xaa]) +//| i2c_target_request.write(buffer) +//| else: +//| # transaction is a write request +//| data = i2c_target_request.read(1) +//| logger.info(f"write request to address 0x{address:02x}: {data}") +//| # for our emulated device, writes have no effect +//| +//| This example sets up an I2C device that can be accessed via another device running circuitpython:: +//| import busio +//| import board +//| i2c = busio.I2C(board.SCL, board.SDA) +//| +//| +//| # perform a single read +//| while not i2c.try_lock(): +//| pass +//| buffer = bytearray(1) +//| i2c.readfrom_into(0x40, buffer) +//| print(f"device responded with {buffer}") +//| i2c.unlock() +//| +//| # perform a single write +//| while not i2c.try_lock(): +//| pass +//| buffer = bytearray(1) +//| buffer[0] = 0x12 +//| i2c.writeto(0x40, buffer) +//| print(f"wrote {buffer} to device") +//| i2c.unlock() +//| +//| Typically, i2c devices support writes and reads to/from multiple register indices:: //| import board //| from i2ctarget import I2CTarget //| +//| import adafruit_logging as logging +//| from logging import NamedStreamHandler +//| +//| logger = logging.getLogger('i2ctarget') +//| logger.setLevel(logging.INFO) +//| logger.addHandler(NamedStreamHandler()) +//| +//| # emulate a target with 16 registers //| regs = [0] * 16 -//| index = 0 +//| register_index = None +//| +//| logger.info("\n\ncode starting...") +//| +//| # initialize an I2C target with a device address of 0x40 +//| with I2CTarget(board.SCL, board.SDA, (0x40,)) as device: //| -//| with I2CTarget(board.SCL, board.SDA, (0x40, 0x41)) as device: //| while True: -//| r = device.request() -//| if not r: -//| # Maybe do some housekeeping +//| # check if there's a pending device request +//| i2c_target_request = device.request() +//| +//| if not i2c_target_request: +//| # no request is pending //| continue -//| with r: # Closes the transfer if necessary by sending a NACK or feeding dummy bytes -//| if r.address == 0x40: -//| if not r.is_read: # Main write which is Selected read -//| b = r.read(1) -//| if not b or b[0] > 15: -//| break -//| index = b[0] -//| b = r.read(1) -//| if b: -//| regs[index] = b[0] -//| elif r.is_restart: # Combined transfer: This is the Main read message -//| n = r.write(bytes([regs[index]])) -//| #else: -//| # A read transfer is not supported in this example -//| # If the microcontroller tries, it will get 0xff byte(s) by the ctx manager (r.close()) -//| elif r.address == 0x41: -//| if not r.is_read: -//| b = r.read(1) -//| if b and b[0] == 0xde: -//| # do something -//| pass -//| -//| This example sets up an I2C device that can be accessed from Linux like this:: -//| -//| $ i2cget -y 1 0x40 0x01 -//| 0x00 -//| $ i2cset -y 1 0x40 0x01 0xaa -//| $ i2cget -y 1 0x40 0x01 -//| 0xaa +//| +//| # work with the i2c request +//| with i2c_target_request: +//| +//| if not i2c_target_request.is_read: +//| # a write request +//| +//| # bytearray contains the request's first byte, the register's index +//| index = i2c_target_request.read(1)[0] +//| +//| # bytearray containing the request's second byte, the data +//| data = i2c_target_request.read(1) +//| +//| # if the request doesn't have a second byte, this is read transaction +//| if not data: +//| +//| # since we're only emulating 16 registers, read from a larger address is an error +//| if index > 15: +//| logger.error(f"write portion of read transaction has invalid index {index}") +//| continue +//| +//| logger.info(f"write portion of read transaction, set index to {index}'") +//| register_index = index +//| continue +//| +//| # since we're only emulating 16 registers, writing to a larger address is an error +//| if index > 15: +//| logger.error(f"write request to incorrect index {index}") +//| continue +//| +//| logger.info(f"write request to index {index}: {data}") +//| regs[index] = data[0] +//| else: +//| # our emulated device requires a read to be part of a full write-then-read transaction +//| if not i2c_target_request.is_restart: +//| logger.warning(f"read request without first writing is not supported") +//| # still need to respond, but result data is not defined +//| i2c_target_request.write(bytes([0xff])) +//| register_index = None +//| continue +//| +//| # the single read transaction case is covered above, so we should always have a valid index +//| assert(register_index is not None) +//| +//| # the write-then-read to an invalid address is covered above, +//| # but if this is a restarted read, index might be out of bounds so need to check +//| if register_index > 16: +//| logger.error(f"restarted read yielded an unsupported index") +//| i2c_target_request.write(bytes([0xff])) +//| register_index = None +//| continue +//| +//| # retrieve the data from our register file and respond +//| data = regs[register_index] +//| logger.info(f"read request from index {register_index}: {data}") +//| i2c_target_request.write(bytes([data])) +//| +//| # in our emulated device, a single read transaction is covered above +//| # so any subsequent restarted read gets the value at the next index +//| assert(i2c_target_request.is_restart is True) +//| register_index += 1 +//| +//| This second example creates I2C target device that can be accessed via another device running circuitpython:: +//| import busio +//| import board +//| i2c = busio.I2C(board.SCL, board.SDA) +//| +//| # perform a write transaction +//| while not i2c.try_lock(): +//| pass +//| buffer = bytearray(2) +//| buffer[0] = 0x0b # the register index +//| buffer[1] = 0xa1 # the value +//| i2c.writeto(0x40, buffer) +//| print(f"wrote {buffer} to device") +//| i2c.unlock() +//| +//| # perform a full read transaction (write-then-read) +//| while not i2c.try_lock(): +//| pass +//| index_buffer = bytearray(1) +//| index_buffer[0] = 0x0b +//| read_buffer = bytearray(1) +//| i2c.writeto_then_readfrom(0x40, index_buffer, read_buffer) +//| print(f"read from device index {index_buffer}: {read_buffer}") +//| i2c.unlock() +//| +//| Or accessed from Linux like this:: +//| +//| $ i2cget -y 1 0x40 0x0b +//| 0xff +//| $ i2cset -y 1 0x40 0x0b 0xa1 +//| $ i2cget -y 1 0x40 0x01 +//| 0xa1 //| //| .. warning:: -//| I2CTarget makes use of clock stretching in order to slow down -//| the host. +//| I2CTarget makes use of clock stretching in order to slow down the host. //| Make sure the I2C host supports this. //| -//| Raspberry Pi in particular does not support this with its I2C hw block. +//| Raspberry Pi 3 and below, in particular, do not support this with its I2C hw block. //| This can be worked around by using the ``i2c-gpio`` bit banging driver. //| Since the RPi firmware uses the hw i2c, it's not possible to emulate a HAT eeprom.""" From 862fff3b59e672f1b40908cc04dd559305159a56 Mon Sep 17 00:00:00 2001 From: gitcnd Date: Thu, 9 May 2024 12:32:50 +0000 Subject: [PATCH 013/227] Add support for Ai Thinker ESP32-CAM boards --- .../boards/ai-thinker-esp32-cam/board.c | 27 +++++++ .../ai-thinker-esp32-cam/mpconfigboard.h | 48 +++++++++++ .../ai-thinker-esp32-cam/mpconfigboard.mk | 20 +++++ .../boards/ai-thinker-esp32-cam/pins.c | 79 +++++++++++++++++++ .../boards/ai-thinker-esp32-cam/sdkconfig | 11 +++ 5 files changed, 185 insertions(+) create mode 100755 ports/espressif/boards/ai-thinker-esp32-cam/board.c create mode 100755 ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.h create mode 100755 ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.mk create mode 100755 ports/espressif/boards/ai-thinker-esp32-cam/pins.c create mode 100755 ports/espressif/boards/ai-thinker-esp32-cam/sdkconfig diff --git a/ports/espressif/boards/ai-thinker-esp32-cam/board.c b/ports/espressif/boards/ai-thinker-esp32-cam/board.c new file mode 100755 index 000000000000..d45c02ac8331 --- /dev/null +++ b/ports/espressif/boards/ai-thinker-esp32-cam/board.c @@ -0,0 +1,27 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2024 Chris Drake, independently providing these changes. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "supervisor/board.h" diff --git a/ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.h b/ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.h new file mode 100755 index 000000000000..78f46890cd4a --- /dev/null +++ b/ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.h @@ -0,0 +1,48 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2024 Chris Drake, independently providing these changes. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#define MICROPY_HW_BOARD_NAME "Ai Thinker ESP32-CAM" +#define MICROPY_HW_MCU_NAME "ESP32" + +#define MICROPY_HW_LED_STATUS (&pin_GPIO33) +#define MICROPY_HW_LED_STATUS_INVERTED (1) + + +#define CIRCUITPY_BOARD_I2C (2) +/* OV2640 camera I2C pins are GPIO27 and _GPIO26. GPIO12 and GPIO13 are unused unless SD card inserted:- */ +#define CIRCUITPY_BOARD_I2C_PIN { {.scl = &pin_GPIO27, .sda = &pin_GPIO26}, \ + {.scl = &pin_GPIO12, .sda = &pin_GPIO13} } + +// SD_CARD +#define DEFAULT_SPI_BUS_SCK (&pin_GPIO14) +#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO15) +#define DEFAULT_SPI_BUS_MISO (&pin_GPIO2) + +// UART pins attached to the USB-serial converter chip +#define CIRCUITPY_CONSOLE_UART_TX (&pin_GPIO1) +#define CIRCUITPY_CONSOLE_UART_RX (&pin_GPIO3) + +#define CIRCUITPY_I2C_ALLOW_INTERNAL_PULL_UP (1) diff --git a/ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.mk b/ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.mk new file mode 100755 index 000000000000..f12c381bad09 --- /dev/null +++ b/ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.mk @@ -0,0 +1,20 @@ +CIRCUITPY_CREATOR_ID = 0x000C303B +CIRCUITPY_CREATION_ID = 0x00320001 + +IDF_TARGET = esp32 + +# This board doesn't have USB by default, it +# instead uses a CH340C USB-to-Serial chip +CIRCUITPY_USB_DEVICE = 0 +CIRCUITPY_ESP_USB_SERIAL_JTAG = 0 + +CIRCUITPY_ESP_FLASH_MODE = qio +CIRCUITPY_ESP_FLASH_FREQ = 80m +CIRCUITPY_ESP_FLASH_SIZE = 4MB + +CIRCUITPY_ESP_PSRAM_SIZE = 8MB +CIRCUITPY_ESP_PSRAM_MODE = qio +CIRCUITPY_ESP_PSRAM_FREQ = 80m + +CIRCUITPY_ESPCAMERA = 1 + diff --git a/ports/espressif/boards/ai-thinker-esp32-cam/pins.c b/ports/espressif/boards/ai-thinker-esp32-cam/pins.c new file mode 100755 index 000000000000..472462325b24 --- /dev/null +++ b/ports/espressif/boards/ai-thinker-esp32-cam/pins.c @@ -0,0 +1,79 @@ +#include "py/objtuple.h" +#include "shared-bindings/board/__init__.h" + +CIRCUITPY_BOARD_BUS_SINGLETON(sscb_i2c, i2c, 2) // Camera sensor + +STATIC const mp_rom_obj_tuple_t camera_data_tuple = { + // The order matters. They must be ordered from low to high (Y2, Y3 .. Y9). Do not include any of the control pins in here. + {&mp_type_tuple}, + 8, + { + MP_ROM_PTR(&pin_GPIO5), // Y2 + MP_ROM_PTR(&pin_GPIO18), // Y3 + MP_ROM_PTR(&pin_GPIO19), // Y4 + MP_ROM_PTR(&pin_GPIO21), // Y5 + MP_ROM_PTR(&pin_GPIO36), // Y6 + MP_ROM_PTR(&pin_GPIO39), // Y7 + MP_ROM_PTR(&pin_GPIO34), // Y8 + MP_ROM_PTR(&pin_GPIO35) // Y9 + } +}; + +STATIC const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + // Red LED on the back of the board + { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO33) }, + { MP_ROM_QSTR(MP_QSTR_LED_INVERTED), MP_ROM_PTR(&pin_GPIO33) }, + + // Bright white LED flashlight on the front (be aware that the SD card uses this when in fast mode) + { MP_ROM_QSTR(MP_QSTR_FLASHLIGHT), MP_ROM_PTR(&pin_GPIO4) }, + + // The second ESP32-CAM-MB button (first is RST) + { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO0) }, + + // SD Card (fast mode aka SDMMC) + { MP_ROM_QSTR(MP_QSTR_SDIO_CLK), MP_ROM_PTR(&pin_GPIO14)}, + { MP_ROM_QSTR(MP_QSTR_SDIO_CMD), MP_ROM_PTR(&pin_GPIO15)}, + { MP_ROM_QSTR(MP_QSTR_SDIO_D0), MP_ROM_PTR(&pin_GPIO2)}, + { MP_ROM_QSTR(MP_QSTR_SDIO_D1), MP_ROM_PTR(&pin_GPIO4)}, + { MP_ROM_QSTR(MP_QSTR_SDIO_D2), MP_ROM_PTR(&pin_GPIO12)}, + { MP_ROM_QSTR(MP_QSTR_SDIO_D3), MP_ROM_PTR(&pin_GPIO13)}, + + // SD Card (slow mode) + { MP_ROM_QSTR(MP_QSTR_SD_SCK), MP_ROM_PTR(&pin_GPIO14)}, + { MP_ROM_QSTR(MP_QSTR_SD_MOSI), MP_ROM_PTR(&pin_GPIO15)}, + { MP_ROM_QSTR(MP_QSTR_SD_MISO), MP_ROM_PTR(&pin_GPIO2)}, + { MP_ROM_QSTR(MP_QSTR_SD_CS), MP_ROM_PTR(&pin_GPIO13)}, + { MP_ROM_QSTR(MP_QSTR_SD_SPI), MP_ROM_PTR(&board_spi_obj) }, + + // Camera data + { MP_ROM_QSTR(MP_QSTR_CAMERA_DATA), MP_ROM_PTR(&camera_data_tuple) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_DATA2), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_DATA3), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_DATA4), MP_ROM_PTR(&pin_GPIO19) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_DATA5), MP_ROM_PTR(&pin_GPIO21) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_DATA6), MP_ROM_PTR(&pin_GPIO36) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_DATA7), MP_ROM_PTR(&pin_GPIO39) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_DATA8), MP_ROM_PTR(&pin_GPIO34) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_DATA9), MP_ROM_PTR(&pin_GPIO35) }, + + { MP_ROM_QSTR(MP_QSTR_CAMERA_HREF), MP_ROM_PTR(&pin_GPIO23) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_PCLK), MP_ROM_PTR(&pin_GPIO22) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_PWDN), MP_ROM_PTR(&pin_GPIO32) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_RESET), NULL }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_VSYNC), MP_ROM_PTR(&pin_GPIO25) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_XCLK), MP_ROM_PTR(&pin_GPIO0) }, + + { MP_ROM_QSTR(MP_QSTR_CAMERA_SIOD), MP_ROM_PTR(&pin_GPIO26) }, // SDA + { MP_ROM_QSTR(MP_QSTR_CAMERA_SIOC), MP_ROM_PTR(&pin_GPIO27) }, // SCL + + + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO13) }, + { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) } + +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); + + diff --git a/ports/espressif/boards/ai-thinker-esp32-cam/sdkconfig b/ports/espressif/boards/ai-thinker-esp32-cam/sdkconfig new file mode 100755 index 000000000000..66a8f0806e31 --- /dev/null +++ b/ports/espressif/boards/ai-thinker-esp32-cam/sdkconfig @@ -0,0 +1,11 @@ +# +# Espressif IoT Development Framework Configuration +# +# +# +# Component config +# +# +# Hardware Settings +CONFIG_OV2640_SUPPORT=y + From 9f5bce05bf8f880618b7f1a5413cacabeb04f743 Mon Sep 17 00:00:00 2001 From: gitcnd Date: Thu, 9 May 2024 13:53:38 +0000 Subject: [PATCH 014/227] Add support for Ai Thinker ESP32-CAM boards --- ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) mode change 100755 => 100644 ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.h diff --git a/ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.h b/ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.h old mode 100755 new mode 100644 index 78f46890cd4a..f6a23dfbbaf3 --- a/ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.h +++ b/ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.h @@ -34,7 +34,7 @@ #define CIRCUITPY_BOARD_I2C (2) /* OV2640 camera I2C pins are GPIO27 and _GPIO26. GPIO12 and GPIO13 are unused unless SD card inserted:- */ #define CIRCUITPY_BOARD_I2C_PIN { {.scl = &pin_GPIO27, .sda = &pin_GPIO26}, \ - {.scl = &pin_GPIO12, .sda = &pin_GPIO13} } + {.scl = &pin_GPIO12, .sda = &pin_GPIO13} } // SD_CARD #define DEFAULT_SPI_BUS_SCK (&pin_GPIO14) From 3b354696d8aef6a5acdc79f5ec290a2143022804 Mon Sep 17 00:00:00 2001 From: gitcnd Date: Thu, 9 May 2024 13:59:19 +0000 Subject: [PATCH 015/227] Add support for Ai Thinker ESP32-CAM boards --- ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.mk | 1 - ports/espressif/boards/ai-thinker-esp32-cam/pins.c | 2 -- ports/espressif/boards/ai-thinker-esp32-cam/sdkconfig | 1 - 3 files changed, 4 deletions(-) diff --git a/ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.mk b/ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.mk index f12c381bad09..1cd6b3c6c4ea 100755 --- a/ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.mk +++ b/ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.mk @@ -17,4 +17,3 @@ CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 80m CIRCUITPY_ESPCAMERA = 1 - diff --git a/ports/espressif/boards/ai-thinker-esp32-cam/pins.c b/ports/espressif/boards/ai-thinker-esp32-cam/pins.c index 472462325b24..a0ef943931bc 100755 --- a/ports/espressif/boards/ai-thinker-esp32-cam/pins.c +++ b/ports/espressif/boards/ai-thinker-esp32-cam/pins.c @@ -75,5 +75,3 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { }; MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); - - diff --git a/ports/espressif/boards/ai-thinker-esp32-cam/sdkconfig b/ports/espressif/boards/ai-thinker-esp32-cam/sdkconfig index 66a8f0806e31..7b3558c340ee 100755 --- a/ports/espressif/boards/ai-thinker-esp32-cam/sdkconfig +++ b/ports/espressif/boards/ai-thinker-esp32-cam/sdkconfig @@ -8,4 +8,3 @@ # # Hardware Settings CONFIG_OV2640_SUPPORT=y - From 717e2b1de9b488d3104e31b71e3c7682736c6594 Mon Sep 17 00:00:00 2001 From: Tobias Schmale Date: Thu, 9 May 2024 14:13:47 +0000 Subject: [PATCH 016/227] espulp: Enable gpio power domain during deep sleep --- ports/espressif/common-hal/espulp/ULP.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/ports/espressif/common-hal/espulp/ULP.c b/ports/espressif/common-hal/espulp/ULP.c index ed7248996acd..bd5d03e23f59 100644 --- a/ports/espressif/common-hal/espulp/ULP.c +++ b/ports/espressif/common-hal/espulp/ULP.c @@ -30,6 +30,8 @@ #include "py/runtime.h" #include "shared-bindings/microcontroller/Pin.h" +#include "esp_sleep.h" + #if defined(CONFIG_IDF_TARGET_ESP32) #include "esp32/ulp.h" #define ULP_COPROC_RESERVE_MEM (CONFIG_ESP32_ULP_COPROC_RESERVE_MEM) @@ -46,12 +48,6 @@ // To-do idf v5.0: remove following include #include "soc/rtc_cntl_reg.h" -#ifndef CONFIG_ULP_COPROC_TYPE_FSM -#warning "Have no FSM" -#endif -// #ifndef CONFIG_ULP_COPROC_TYPE_RISCV -// #warning "Have no RISCV" -// #endif STATIC bool ulp_used = false; STATIC uint32_t pins_used = 0; @@ -101,6 +97,13 @@ void common_hal_espulp_ulp_run(espulp_ulp_obj_t *self, uint32_t *program, size_t } pins_used = pin_mask; + // Main purpose of ULP is to run while main cpu is in deep sleep, so + // ensure GPIO Power Domain remains enabled during deep sleep, + // if any GPIO were supplied here. + if (pins_used > 0){ + esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); + } + int _errno; switch (self->arch) { #ifdef CONFIG_ULP_COPROC_TYPE_FSM From 64f4928eec2cfcb3766466c2a1022dfbbfb6ef50 Mon Sep 17 00:00:00 2001 From: gitcnd Date: Thu, 9 May 2024 15:16:00 +0000 Subject: [PATCH 017/227] Add support for Ai Thinker ESP32-CAM boards --- ports/espressif/boards/ai-thinker-esp32-cam/pins.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ports/espressif/boards/ai-thinker-esp32-cam/pins.c b/ports/espressif/boards/ai-thinker-esp32-cam/pins.c index a0ef943931bc..f2f63dcdaf7a 100755 --- a/ports/espressif/boards/ai-thinker-esp32-cam/pins.c +++ b/ports/espressif/boards/ai-thinker-esp32-cam/pins.c @@ -68,6 +68,8 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_CAMERA_SIOD), MP_ROM_PTR(&pin_GPIO26) }, // SDA { MP_ROM_QSTR(MP_QSTR_CAMERA_SIOC), MP_ROM_PTR(&pin_GPIO27) }, // SCL + { MP_ROM_QSTR(MP_QSTR_U0R), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_U0T), MP_ROM_PTR(&pin_GPIO1) }, { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO4) }, { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO13) }, From 2d94c01e1ea6828462accd6f68e28fd18295c7fa Mon Sep 17 00:00:00 2001 From: gitcnd Date: Thu, 9 May 2024 17:22:39 +0000 Subject: [PATCH 018/227] Add support for ESP32-WROVER-DEV boards with Camera --- .../boards/esp32-wrover-dev-cam/board.c | 27 +++ .../esp32-wrover-dev-cam/mpconfigboard.h | 43 +++++ .../esp32-wrover-dev-cam/mpconfigboard.mk | 19 +++ .../boards/esp32-wrover-dev-cam/pins.c | 159 ++++++++++++++++++ .../boards/esp32-wrover-dev-cam/sdkconfig | 10 ++ 5 files changed, 258 insertions(+) create mode 100755 ports/espressif/boards/esp32-wrover-dev-cam/board.c create mode 100644 ports/espressif/boards/esp32-wrover-dev-cam/mpconfigboard.h create mode 100755 ports/espressif/boards/esp32-wrover-dev-cam/mpconfigboard.mk create mode 100755 ports/espressif/boards/esp32-wrover-dev-cam/pins.c create mode 100755 ports/espressif/boards/esp32-wrover-dev-cam/sdkconfig diff --git a/ports/espressif/boards/esp32-wrover-dev-cam/board.c b/ports/espressif/boards/esp32-wrover-dev-cam/board.c new file mode 100755 index 000000000000..d45c02ac8331 --- /dev/null +++ b/ports/espressif/boards/esp32-wrover-dev-cam/board.c @@ -0,0 +1,27 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2024 Chris Drake, independently providing these changes. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "supervisor/board.h" diff --git a/ports/espressif/boards/esp32-wrover-dev-cam/mpconfigboard.h b/ports/espressif/boards/esp32-wrover-dev-cam/mpconfigboard.h new file mode 100644 index 000000000000..9f12d44f4019 --- /dev/null +++ b/ports/espressif/boards/esp32-wrover-dev-cam/mpconfigboard.h @@ -0,0 +1,43 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2024 Chris Drake, independently providing these changes. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#define MICROPY_HW_BOARD_NAME "Espressif ESP32-WROVER-DEV-CAM" +#define MICROPY_HW_MCU_NAME "ESP32" + +#define MICROPY_HW_LED_STATUS (&pin_GPIO2) +#define MICROPY_HW_LED_STATUS_INVERTED (1) + + +#define CIRCUITPY_BOARD_I2C (2) +/* OV2640 camera I2C pins are GPIO27 and _GPIO26. GPIO12 and GPIO13 are unused */ +#define CIRCUITPY_BOARD_I2C_PIN { {.scl = &pin_GPIO27, .sda = &pin_GPIO26}, \ + {.scl = &pin_GPIO12, .sda = &pin_GPIO13} } + +// UART pins attached to the USB-serial converter chip +#define CIRCUITPY_CONSOLE_UART_TX (&pin_GPIO1) +#define CIRCUITPY_CONSOLE_UART_RX (&pin_GPIO3) + +#define CIRCUITPY_I2C_ALLOW_INTERNAL_PULL_UP (1) diff --git a/ports/espressif/boards/esp32-wrover-dev-cam/mpconfigboard.mk b/ports/espressif/boards/esp32-wrover-dev-cam/mpconfigboard.mk new file mode 100755 index 000000000000..acd647886709 --- /dev/null +++ b/ports/espressif/boards/esp32-wrover-dev-cam/mpconfigboard.mk @@ -0,0 +1,19 @@ +CIRCUITPY_CREATOR_ID = 0x000C303A +CIRCUITPY_CREATION_ID = 0x00D00001 + +IDF_TARGET = esp32 + +# This board doesn't have USB by default, it +# instead uses a CH340C USB-to-Serial chip +CIRCUITPY_USB_DEVICE = 0 +CIRCUITPY_ESP_USB_SERIAL_JTAG = 0 + +CIRCUITPY_ESP_FLASH_MODE = qio +CIRCUITPY_ESP_FLASH_FREQ = 80m +CIRCUITPY_ESP_FLASH_SIZE = 4MB + +CIRCUITPY_ESP_PSRAM_SIZE = 8MB +CIRCUITPY_ESP_PSRAM_MODE = qio +CIRCUITPY_ESP_PSRAM_FREQ = 80m + +CIRCUITPY_ESPCAMERA = 1 diff --git a/ports/espressif/boards/esp32-wrover-dev-cam/pins.c b/ports/espressif/boards/esp32-wrover-dev-cam/pins.c new file mode 100755 index 000000000000..39c3b0dd304f --- /dev/null +++ b/ports/espressif/boards/esp32-wrover-dev-cam/pins.c @@ -0,0 +1,159 @@ +#include "py/objtuple.h" +#include "shared-bindings/board/__init__.h" + +CIRCUITPY_BOARD_BUS_SINGLETON(sscb_i2c, i2c, 2) // Camera sensor + +STATIC const mp_rom_obj_tuple_t camera_data_tuple = { + // The order matters. They must be ordered from low to high (Y2, Y3 .. Y9). Do not include any of the control pins in here. + {&mp_type_tuple}, + 8, + { + MP_ROM_PTR(&pin_GPIO4), // Y2 + MP_ROM_PTR(&pin_GPIO5), // Y3 + MP_ROM_PTR(&pin_GPIO18), // Y4 + MP_ROM_PTR(&pin_GPIO19), // Y5 + MP_ROM_PTR(&pin_GPIO36), // Y6 + MP_ROM_PTR(&pin_GPIO39), // Y7 + MP_ROM_PTR(&pin_GPIO34), // Y8 + MP_ROM_PTR(&pin_GPIO35) // Y9 + } +}; + +STATIC const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + // Red LED labelled IO2 on the front of the board + { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_LED_INVERTED), MP_ROM_PTR(&pin_GPIO2) }, + + // The second button (first is RST) + { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO0) }, + + // Camera data + { MP_ROM_QSTR(MP_QSTR_CAMERA_DATA), MP_ROM_PTR(&camera_data_tuple) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_DATA2), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_DATA3), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_DATA4), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_DATA5), MP_ROM_PTR(&pin_GPIO19) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_DATA6), MP_ROM_PTR(&pin_GPIO36) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_DATA7), MP_ROM_PTR(&pin_GPIO39) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_DATA8), MP_ROM_PTR(&pin_GPIO34) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_DATA9), MP_ROM_PTR(&pin_GPIO35) }, + + { MP_ROM_QSTR(MP_QSTR_CAMERA_HREF), MP_ROM_PTR(&pin_GPIO23) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_PCLK), MP_ROM_PTR(&pin_GPIO22) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_PWDN), MP_ROM_PTR(&pin_GPIO32) }, // ? + { MP_ROM_QSTR(MP_QSTR_CAMERA_RESET), NULL }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_VSYNC), MP_ROM_PTR(&pin_GPIO25) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_XCLK), MP_ROM_PTR(&pin_GPIO21) }, + + { MP_ROM_QSTR(MP_QSTR_CAMERA_SIOD), MP_ROM_PTR(&pin_GPIO26) }, // SDA + { MP_ROM_QSTR(MP_QSTR_CAMERA_SIOC), MP_ROM_PTR(&pin_GPIO27) }, // SCL + + { MP_ROM_QSTR(MP_QSTR_FLASH_D2), MP_ROM_PTR(&pin_GPIO9) }, + { MP_ROM_QSTR(MP_QSTR_FLASH_D3), MP_ROM_PTR(&pin_GPIO10) }, + { MP_ROM_QSTR(MP_QSTR_FLASH_CMD), MP_ROM_PTR(&pin_GPIO11) }, + + { MP_ROM_QSTR(MP_QSTR_FLASH_D1), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_FLASH_D0), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_FLASH_CLK), MP_ROM_PTR(&pin_GPIO6) }, + + + { MP_ROM_QSTR(MP_QSTR_SENSOR_VP), MP_ROM_PTR(&pin_GPIO36) }, + { MP_ROM_QSTR(MP_QSTR_CAM_Y6), MP_ROM_PTR(&pin_GPIO36) }, + { MP_ROM_QSTR(MP_QSTR_ADC1_CH0), MP_ROM_PTR(&pin_GPIO36) }, + + { MP_ROM_QSTR(MP_QSTR_SENSOR_VN), MP_ROM_PTR(&pin_GPIO39) }, + { MP_ROM_QSTR(MP_QSTR_CAM_Y7), MP_ROM_PTR(&pin_GPIO39) }, + { MP_ROM_QSTR(MP_QSTR_ADC1_CH3), MP_ROM_PTR(&pin_GPIO39) }, + + { MP_ROM_QSTR(MP_QSTR_CAM_Y8), MP_ROM_PTR(&pin_GPIO34) }, + { MP_ROM_QSTR(MP_QSTR_ADC1_CH6), MP_ROM_PTR(&pin_GPIO34) }, + + { MP_ROM_QSTR(MP_QSTR_CAM_Y9), MP_ROM_PTR(&pin_GPIO35) }, + { MP_ROM_QSTR(MP_QSTR_ADC1_CH7), MP_ROM_PTR(&pin_GPIO35) }, + + { MP_ROM_QSTR(MP_QSTR_TOUCH9), MP_ROM_PTR(&pin_GPIO32) }, + { MP_ROM_QSTR(MP_QSTR_ADC1_CH4), MP_ROM_PTR(&pin_GPIO32) }, + + { MP_ROM_QSTR(MP_QSTR_TOUCH8), MP_ROM_PTR(&pin_GPIO33) }, + { MP_ROM_QSTR(MP_QSTR_ADC1_CH5), MP_ROM_PTR(&pin_GPIO33) }, + + { MP_ROM_QSTR(MP_QSTR_I2S_LCK), MP_ROM_PTR(&pin_GPIO25) }, + { MP_ROM_QSTR(MP_QSTR_DAC1), MP_ROM_PTR(&pin_GPIO25) }, + { MP_ROM_QSTR(MP_QSTR_CAM_VSYNC), MP_ROM_PTR(&pin_GPIO25) }, + { MP_ROM_QSTR(MP_QSTR_ADC2_CH8), MP_ROM_PTR(&pin_GPIO25) }, + + { MP_ROM_QSTR(MP_QSTR_I2S_BCK), MP_ROM_PTR(&pin_GPIO26) }, + { MP_ROM_QSTR(MP_QSTR_DAC2), MP_ROM_PTR(&pin_GPIO26) }, + { MP_ROM_QSTR(MP_QSTR_CAM_SIOD), MP_ROM_PTR(&pin_GPIO26) }, + { MP_ROM_QSTR(MP_QSTR_SDA2), MP_ROM_PTR(&pin_GPIO26) }, + { MP_ROM_QSTR(MP_QSTR_ADC2_CH9), MP_ROM_PTR(&pin_GPIO26) }, + + { MP_ROM_QSTR(MP_QSTR_TOUCH7), MP_ROM_PTR(&pin_GPIO27) }, + { MP_ROM_QSTR(MP_QSTR_CAM_SIOC), MP_ROM_PTR(&pin_GPIO27) }, + { MP_ROM_QSTR(MP_QSTR_SCL2), MP_ROM_PTR(&pin_GPIO27) }, + { MP_ROM_QSTR(MP_QSTR_ADC2_CH7), MP_ROM_PTR(&pin_GPIO27) }, + + { MP_ROM_QSTR(MP_QSTR_TOUCH6), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_HSPI_CLK), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_ADC2_CH6), MP_ROM_PTR(&pin_GPIO14) }, + + { MP_ROM_QSTR(MP_QSTR_MTDI), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_TOUCH5), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_HSPI_MISO), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_ADC2_CH5), MP_ROM_PTR(&pin_GPIO12) }, + + { MP_ROM_QSTR(MP_QSTR_TOUCH4), MP_ROM_PTR(&pin_GPIO13) }, + { MP_ROM_QSTR(MP_QSTR_HSPI_MOSI), MP_ROM_PTR(&pin_GPIO13) }, + { MP_ROM_QSTR(MP_QSTR_ADC2_CH4), MP_ROM_PTR(&pin_GPIO13) }, + + { MP_ROM_QSTR(MP_QSTR_CAM_HREF), MP_ROM_PTR(&pin_GPIO23) }, + { MP_ROM_QSTR(MP_QSTR_VSPI_MOSI), MP_ROM_PTR(&pin_GPIO23) }, + + { MP_ROM_QSTR(MP_QSTR_I2S), MP_ROM_PTR(&pin_GPIO22) }, + { MP_ROM_QSTR(MP_QSTR_DIN), MP_ROM_PTR(&pin_GPIO22) }, + { MP_ROM_QSTR(MP_QSTR_CAM_PCLK), MP_ROM_PTR(&pin_GPIO22) }, + { MP_ROM_QSTR(MP_QSTR_I2C_SCL), MP_ROM_PTR(&pin_GPIO22) }, + + { MP_ROM_QSTR(MP_QSTR_LED_TX), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_U0TXD), MP_ROM_PTR(&pin_GPIO1) }, + + { MP_ROM_QSTR(MP_QSTR_LED_RX), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_U0RXD), MP_ROM_PTR(&pin_GPIO3) }, + + { MP_ROM_QSTR(MP_QSTR_CAM_XCLK), MP_ROM_PTR(&pin_GPIO21) }, + { MP_ROM_QSTR(MP_QSTR_I2C_SDA), MP_ROM_PTR(&pin_GPIO21) }, + + { MP_ROM_QSTR(MP_QSTR_CAM_Y5), MP_ROM_PTR(&pin_GPIO19) }, + { MP_ROM_QSTR(MP_QSTR_VSPI_MISO), MP_ROM_PTR(&pin_GPIO19) }, + + { MP_ROM_QSTR(MP_QSTR_CAM_Y4), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_VSPI_CLK), MP_ROM_PTR(&pin_GPIO18) }, + + { MP_ROM_QSTR(MP_QSTR_CAM_Y3), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_VSPI_CS), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_SDIO_SLAVE), MP_ROM_PTR(&pin_GPIO5) }, + + { MP_ROM_QSTR(MP_QSTR_TOUCH0), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_CAM_Y2), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_ADC2_CH0), MP_ROM_PTR(&pin_GPIO4) }, + + { MP_ROM_QSTR(MP_QSTR_TOUCH1), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_ADC2_CH1), MP_ROM_PTR(&pin_GPIO0) }, + + { MP_ROM_QSTR(MP_QSTR_TOUCH2), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_ADC2_CH2), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_LED_IO2), MP_ROM_PTR(&pin_GPIO2) }, + + { MP_ROM_QSTR(MP_QSTR_TOUCH3), MP_ROM_PTR(&pin_GPIO15) }, + { MP_ROM_QSTR(MP_QSTR_MTDO), MP_ROM_PTR(&pin_GPIO15) }, + { MP_ROM_QSTR(MP_QSTR_ADC2_CH3), MP_ROM_PTR(&pin_GPIO15) }, + { MP_ROM_QSTR(MP_QSTR_HSPI_CS), MP_ROM_PTR(&pin_GPIO15) }, + + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO13) }, + { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) } + +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); diff --git a/ports/espressif/boards/esp32-wrover-dev-cam/sdkconfig b/ports/espressif/boards/esp32-wrover-dev-cam/sdkconfig new file mode 100755 index 000000000000..7b3558c340ee --- /dev/null +++ b/ports/espressif/boards/esp32-wrover-dev-cam/sdkconfig @@ -0,0 +1,10 @@ +# +# Espressif IoT Development Framework Configuration +# +# +# +# Component config +# +# +# Hardware Settings +CONFIG_OV2640_SUPPORT=y From a00365ecbd3a8594372288f4f65225abae3c0e43 Mon Sep 17 00:00:00 2001 From: gitcnd Date: Thu, 9 May 2024 18:11:08 +0000 Subject: [PATCH 019/227] Add support for ESP32-WROVER-DEV boards with Camera (add IOnn aliases) --- .../boards/esp32-wrover-dev-cam/pins.c | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/ports/espressif/boards/esp32-wrover-dev-cam/pins.c b/ports/espressif/boards/esp32-wrover-dev-cam/pins.c index 39c3b0dd304f..d6aee44a3739 100755 --- a/ports/espressif/boards/esp32-wrover-dev-cam/pins.c +++ b/ports/espressif/boards/esp32-wrover-dev-cam/pins.c @@ -151,6 +151,37 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_ADC2_CH3), MP_ROM_PTR(&pin_GPIO15) }, { MP_ROM_QSTR(MP_QSTR_HSPI_CS), MP_ROM_PTR(&pin_GPIO15) }, + { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_IO1), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_IO2), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_IO3), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_IO4), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_IO5), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_IO6), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_IO7), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_IO8), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_IO9), MP_ROM_PTR(&pin_GPIO9) }, + { MP_ROM_QSTR(MP_QSTR_IO10), MP_ROM_PTR(&pin_GPIO10) }, + { MP_ROM_QSTR(MP_QSTR_IO11), MP_ROM_PTR(&pin_GPIO11) }, + { MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_IO13), MP_ROM_PTR(&pin_GPIO13) }, + { MP_ROM_QSTR(MP_QSTR_IO14), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_IO15), MP_ROM_PTR(&pin_GPIO15) }, + { MP_ROM_QSTR(MP_QSTR_IO18), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_IO19), MP_ROM_PTR(&pin_GPIO19) }, + { MP_ROM_QSTR(MP_QSTR_IO21), MP_ROM_PTR(&pin_GPIO21) }, + { MP_ROM_QSTR(MP_QSTR_IO22), MP_ROM_PTR(&pin_GPIO22) }, + { MP_ROM_QSTR(MP_QSTR_IO23), MP_ROM_PTR(&pin_GPIO23) }, + { MP_ROM_QSTR(MP_QSTR_IO25), MP_ROM_PTR(&pin_GPIO25) }, + { MP_ROM_QSTR(MP_QSTR_IO26), MP_ROM_PTR(&pin_GPIO26) }, + { MP_ROM_QSTR(MP_QSTR_IO27), MP_ROM_PTR(&pin_GPIO27) }, + { MP_ROM_QSTR(MP_QSTR_IO32), MP_ROM_PTR(&pin_GPIO32) }, + { MP_ROM_QSTR(MP_QSTR_IO33), MP_ROM_PTR(&pin_GPIO33) }, + { MP_ROM_QSTR(MP_QSTR_IO34), MP_ROM_PTR(&pin_GPIO34) }, + { MP_ROM_QSTR(MP_QSTR_IO35), MP_ROM_PTR(&pin_GPIO35) }, + { MP_ROM_QSTR(MP_QSTR_IO36), MP_ROM_PTR(&pin_GPIO36) }, + { MP_ROM_QSTR(MP_QSTR_IO39), MP_ROM_PTR(&pin_GPIO39) }, + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO4) }, { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO13) }, { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) } From 2396f8ba5ede334af5f2fd4668603be4cdfcc9a5 Mon Sep 17 00:00:00 2001 From: gitcnd Date: Thu, 9 May 2024 18:17:02 +0000 Subject: [PATCH 020/227] Add support for Ai Thinker ESP32-CAM boards (add IOnn aliases) --- ports/espressif/boards/ai-thinker-esp32-cam/pins.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/ports/espressif/boards/ai-thinker-esp32-cam/pins.c b/ports/espressif/boards/ai-thinker-esp32-cam/pins.c index f2f63dcdaf7a..3d13aab0fbf3 100755 --- a/ports/espressif/boards/ai-thinker-esp32-cam/pins.c +++ b/ports/espressif/boards/ai-thinker-esp32-cam/pins.c @@ -71,6 +71,19 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_U0R), MP_ROM_PTR(&pin_GPIO3) }, { MP_ROM_QSTR(MP_QSTR_U0T), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, // the button + { MP_ROM_QSTR(MP_QSTR_IO1), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_IO3), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_IO16), MP_ROM_PTR(&pin_GPIO16) }, + + { MP_ROM_QSTR(MP_QSTR_IO2), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_IO4), MP_ROM_PTR(&pin_GPIO4) }, + + { MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_IO13), MP_ROM_PTR(&pin_GPIO13) }, + { MP_ROM_QSTR(MP_QSTR_IO14), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_IO15), MP_ROM_PTR(&pin_GPIO15) }, + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO4) }, { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO13) }, { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) } From 24f2e4f99487fee549d093e309e64f09adcb03d0 Mon Sep 17 00:00:00 2001 From: gitcnd Date: Fri, 10 May 2024 00:17:53 +0000 Subject: [PATCH 021/227] Add support for Ai Thinker ESP32-CAM boards (default flashlight to off) --- .../boards/ai-thinker-esp32-cam/board.c | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/ports/espressif/boards/ai-thinker-esp32-cam/board.c b/ports/espressif/boards/ai-thinker-esp32-cam/board.c index d45c02ac8331..368352a9e80d 100755 --- a/ports/espressif/boards/ai-thinker-esp32-cam/board.c +++ b/ports/espressif/boards/ai-thinker-esp32-cam/board.c @@ -25,3 +25,29 @@ */ #include "supervisor/board.h" + +#include "mpconfigboard.h" +#include "shared-bindings/microcontroller/Pin.h" +#include "components/driver/gpio/include/driver/gpio.h" +#include "components/hal/include/hal/gpio_hal.h" +#include "common-hal/microcontroller/Pin.h" + +void board_init(void) { + reset_board(); +} + +bool espressif_board_reset_pin_number(gpio_num_t pin_number) { + // Pull one LED down on reset rather than the default up + if (pin_number == 4) { // This is the flashlight LED - very bright + 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; +} From 2584fc88f06e5246ffba0f6a1fd58ae2b74f0187 Mon Sep 17 00:00:00 2001 From: Andrew Mirsky Date: Fri, 10 May 2024 16:27:50 -0400 Subject: [PATCH 022/227] ports: rpi pico - i2ctarget update transaction restart register mask issue #: https://github.com/adafruit/circuitpython/issues/9232 Signed-off-by: Andrew Mirsky --- .../common-hal/i2ctarget/I2CTarget.c | 2 +- shared-bindings/i2ctarget/__init__.c | 283 +++++++++--------- 2 files changed, 143 insertions(+), 142 deletions(-) diff --git a/ports/raspberrypi/common-hal/i2ctarget/I2CTarget.c b/ports/raspberrypi/common-hal/i2ctarget/I2CTarget.c index 785fb08257a3..f729924c9d0c 100644 --- a/ports/raspberrypi/common-hal/i2ctarget/I2CTarget.c +++ b/ports/raspberrypi/common-hal/i2ctarget/I2CTarget.c @@ -111,7 +111,7 @@ int common_hal_i2ctarget_i2c_target_is_addressed(i2ctarget_i2c_target_obj_t *sel *address = self->peripheral->hw->sar; *is_read = !(self->peripheral->hw->raw_intr_stat & I2C_IC_INTR_STAT_R_RX_FULL_BITS); - *is_restart = ((self->peripheral->hw->raw_intr_stat & I2C_IC_RAW_INTR_STAT_RD_REQ_RESET) != 0); + *is_restart = ((self->peripheral->hw->raw_intr_stat & I2C_IC_INTR_STAT_R_RESTART_DET_BITS) != 0); common_hal_i2ctarget_i2c_target_ack(self, true); return 1; diff --git a/shared-bindings/i2ctarget/__init__.c b/shared-bindings/i2ctarget/__init__.c index bf80a64772ad..3cff8ce2c5df 100644 --- a/shared-bindings/i2ctarget/__init__.c +++ b/shared-bindings/i2ctarget/__init__.c @@ -45,7 +45,6 @@ //| //| Example of emulating a simple device that can only handle single writes and reads:: //| -//| //| import board //| from i2ctarget import I2CTarget //| @@ -56,7 +55,7 @@ //| logger.setLevel(logging.INFO) //| logger.addHandler(NamedStreamHandler()) //| -//| logger.info("\n\ncode starting...") +//| logger.info("\\n\\ncode starting...") //| //| # initialize an I2C target with a device address of 0x40 //| with I2CTarget(board.SCL, board.SDA, (0x40,)) as device: @@ -69,7 +68,7 @@ //| # no request is pending //| continue //| -//| # `with` invokes I2CTargetRequest's functions to handle the necessary opening and closing of a transaction +//| # `with` invokes I2CTargetRequest's functions to handle the necessary opening and closing of a request //| with i2c_target_request: //| //| # the address associated with the request @@ -87,144 +86,146 @@ //| logger.info(f"write request to address 0x{address:02x}: {data}") //| # for our emulated device, writes have no effect //| -//| This example sets up an I2C device that can be accessed via another device running circuitpython:: -//| import busio -//| import board -//| i2c = busio.I2C(board.SCL, board.SDA) -//| -//| -//| # perform a single read -//| while not i2c.try_lock(): -//| pass -//| buffer = bytearray(1) -//| i2c.readfrom_into(0x40, buffer) -//| print(f"device responded with {buffer}") -//| i2c.unlock() -//| -//| # perform a single write -//| while not i2c.try_lock(): -//| pass -//| buffer = bytearray(1) -//| buffer[0] = 0x12 -//| i2c.writeto(0x40, buffer) -//| print(f"wrote {buffer} to device") -//| i2c.unlock() -//| -//| Typically, i2c devices support writes and reads to/from multiple register indices:: -//| import board -//| from i2ctarget import I2CTarget -//| -//| import adafruit_logging as logging -//| from logging import NamedStreamHandler -//| -//| logger = logging.getLogger('i2ctarget') -//| logger.setLevel(logging.INFO) -//| logger.addHandler(NamedStreamHandler()) -//| -//| # emulate a target with 16 registers -//| regs = [0] * 16 -//| register_index = None -//| -//| logger.info("\n\ncode starting...") -//| -//| # initialize an I2C target with a device address of 0x40 -//| with I2CTarget(board.SCL, board.SDA, (0x40,)) as device: -//| -//| while True: -//| # check if there's a pending device request -//| i2c_target_request = device.request() -//| -//| if not i2c_target_request: -//| # no request is pending -//| continue -//| -//| # work with the i2c request -//| with i2c_target_request: -//| -//| if not i2c_target_request.is_read: -//| # a write request -//| -//| # bytearray contains the request's first byte, the register's index -//| index = i2c_target_request.read(1)[0] -//| -//| # bytearray containing the request's second byte, the data -//| data = i2c_target_request.read(1) -//| -//| # if the request doesn't have a second byte, this is read transaction -//| if not data: -//| -//| # since we're only emulating 16 registers, read from a larger address is an error -//| if index > 15: -//| logger.error(f"write portion of read transaction has invalid index {index}") -//| continue -//| -//| logger.info(f"write portion of read transaction, set index to {index}'") -//| register_index = index -//| continue -//| -//| # since we're only emulating 16 registers, writing to a larger address is an error -//| if index > 15: -//| logger.error(f"write request to incorrect index {index}") -//| continue -//| -//| logger.info(f"write request to index {index}: {data}") -//| regs[index] = data[0] -//| else: -//| # our emulated device requires a read to be part of a full write-then-read transaction -//| if not i2c_target_request.is_restart: -//| logger.warning(f"read request without first writing is not supported") -//| # still need to respond, but result data is not defined -//| i2c_target_request.write(bytes([0xff])) -//| register_index = None -//| continue -//| -//| # the single read transaction case is covered above, so we should always have a valid index -//| assert(register_index is not None) -//| -//| # the write-then-read to an invalid address is covered above, -//| # but if this is a restarted read, index might be out of bounds so need to check -//| if register_index > 16: -//| logger.error(f"restarted read yielded an unsupported index") -//| i2c_target_request.write(bytes([0xff])) -//| register_index = None -//| continue -//| -//| # retrieve the data from our register file and respond -//| data = regs[register_index] -//| logger.info(f"read request from index {register_index}: {data}") -//| i2c_target_request.write(bytes([data])) -//| -//| # in our emulated device, a single read transaction is covered above -//| # so any subsequent restarted read gets the value at the next index -//| assert(i2c_target_request.is_restart is True) -//| register_index += 1 -//| -//| This second example creates I2C target device that can be accessed via another device running circuitpython:: -//| import busio -//| import board -//| i2c = busio.I2C(board.SCL, board.SDA) -//| -//| # perform a write transaction -//| while not i2c.try_lock(): -//| pass -//| buffer = bytearray(2) -//| buffer[0] = 0x0b # the register index -//| buffer[1] = 0xa1 # the value -//| i2c.writeto(0x40, buffer) -//| print(f"wrote {buffer} to device") -//| i2c.unlock() -//| -//| # perform a full read transaction (write-then-read) -//| while not i2c.try_lock(): -//| pass -//| index_buffer = bytearray(1) -//| index_buffer[0] = 0x0b -//| read_buffer = bytearray(1) -//| i2c.writeto_then_readfrom(0x40, index_buffer, read_buffer) -//| print(f"read from device index {index_buffer}: {read_buffer}") -//| i2c.unlock() -//| -//| Or accessed from Linux like this:: +//| This example creates an I2C target device that can be accessed via another device as an I2C controller:: +//| +//| import busio +//| import board +//| i2c = busio.I2C(board.SCL, board.SDA) +//| +//| # perform a single read +//| while not i2c.try_lock(): +//| pass +//| buffer = bytearray(1) +//| i2c.readfrom_into(0x40, buffer) +//| print(f"device responded with {buffer}") +//| i2c.unlock() +//| +//| # perform a single write +//| while not i2c.try_lock(): +//| pass +//| buffer = bytearray(1) +//| buffer[0] = 0x12 +//| i2c.writeto(0x40, buffer) +//| print(f"wrote {buffer} to device") +//| i2c.unlock() +//| +//| Typically, i2c devices support writes and reads to/from multiple register indices as in this example :: +//| +//| import board +//| from i2ctarget import I2CTarget +//| +//| import adafruit_logging as logging +//| from logging import NamedStreamHandler +//| +//| logger = logging.getLogger('i2ctarget') +//| logger.setLevel(logging.INFO) +//| logger.addHandler(NamedStreamHandler()) +//| +//| # emulate a target with 16 registers +//| regs = [0] * 16 +//| register_index = None +//| +//| logger.info("\\n\\ncode starting...") +//| +//| # initialize an I2C target with a device address of 0x40 +//| with I2CTarget(board.SCL, board.SDA, (0x40,)) as device: +//| +//| while True: +//| # check if there's a pending device request +//| i2c_target_request = device.request() +//| +//| if not i2c_target_request: +//| # no request is pending +//| continue +//| +//| # work with the i2c request +//| with i2c_target_request: +//| +//| if not i2c_target_request.is_read: +//| # a write request +//| +//| # bytearray contains the request's first byte, the register's index +//| index = i2c_target_request.read(1)[0] +//| +//| # bytearray containing the request's second byte, the data +//| data = i2c_target_request.read(1) +//| +//| # if the request doesn't have a second byte, this is read transaction +//| if not data: +//| +//| # since we're only emulating 16 registers, read from a larger address is an error +//| if index > 15: +//| logger.error(f"write portion of read transaction has invalid index {index}") +//| continue +//| +//| logger.info(f"write portion of read transaction, set index to {index}'") +//| register_index = index +//| continue +//| +//| # since we're only emulating 16 registers, writing to a larger address is an error +//| if index > 15: +//| logger.error(f"write request to incorrect index {index}") +//| continue +//| +//| logger.info(f"write request to index {index}: {data}") +//| regs[index] = data[0] +//| else: +//| # our emulated device requires a read to be part of a full write-then-read transaction +//| if not i2c_target_request.is_restart: +//| logger.warning(f"read request without first writing is not supported") +//| # still need to respond, but result data is not defined +//| i2c_target_request.write(bytes([0xff])) +//| register_index = None +//| continue +//| +//| # the single read transaction case is covered above, so we should always have a valid index +//| assert(register_index is not None) +//| +//| # the write-then-read to an invalid address is covered above, +//| # but if this is a restarted read, index might be out of bounds so need to check +//| if register_index > 16: +//| logger.error(f"restarted read yielded an unsupported index") +//| i2c_target_request.write(bytes([0xff])) +//| register_index = None +//| continue +//| +//| # retrieve the data from our register file and respond +//| data = regs[register_index] +//| logger.info(f"read request from index {register_index}: {data}") +//| i2c_target_request.write(bytes([data])) +//| +//| # in our emulated device, a single read transaction is covered above +//| # so any subsequent restarted read gets the value at the next index +//| assert(i2c_target_request.is_restart is True) +//| register_index += 1 +//| +//| This second example creates I2C target device that can be accessed via another device as an I2C controller:: +//| +//| import busio +//| import board +//| i2c = busio.I2C(board.SCL, board.SDA) +//| +//| # perform a write transaction +//| while not i2c.try_lock(): +//| pass +//| buffer = bytearray(2) +//| buffer[0] = 0x0b # the register index +//| buffer[1] = 0xa1 # the value +//| i2c.writeto(0x40, buffer) +//| print(f"wrote {buffer} to device") +//| i2c.unlock() +//| +//| # perform a full read transaction (write-then-read) +//| while not i2c.try_lock(): +//| pass +//| index_buffer = bytearray(1) +//| index_buffer[0] = 0x0b +//| read_buffer = bytearray(1) +//| i2c.writeto_then_readfrom(0x40, index_buffer, read_buffer) +//| print(f"read from device index {index_buffer}: {read_buffer}") +//| i2c.unlock() +//| +//| Or accessed from Linux like this:: //| //| $ i2cget -y 1 0x40 0x0b //| 0xff From 5cace546fe45dcae7d6b588cce57cd9bed2d7d2b Mon Sep 17 00:00:00 2001 From: Andrew Mirsky Date: Fri, 10 May 2024 16:36:46 -0400 Subject: [PATCH 023/227] docs/i2ctarget : removed extraneous dependency Signed-off-by: Andrew Mirsky --- shared-bindings/i2ctarget/__init__.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/shared-bindings/i2ctarget/__init__.c b/shared-bindings/i2ctarget/__init__.c index 3cff8ce2c5df..0e6b641f0b4c 100644 --- a/shared-bindings/i2ctarget/__init__.c +++ b/shared-bindings/i2ctarget/__init__.c @@ -49,11 +49,10 @@ //| from i2ctarget import I2CTarget //| //| import adafruit_logging as logging -//| from logging import NamedStreamHandler //| //| logger = logging.getLogger('i2ctarget') //| logger.setLevel(logging.INFO) -//| logger.addHandler(NamedStreamHandler()) +//| logger.addHandler(logging.StreamHandler()) //| //| logger.info("\\n\\ncode starting...") //| @@ -115,11 +114,10 @@ //| from i2ctarget import I2CTarget //| //| import adafruit_logging as logging -//| from logging import NamedStreamHandler //| //| logger = logging.getLogger('i2ctarget') //| logger.setLevel(logging.INFO) -//| logger.addHandler(NamedStreamHandler()) +//| logger.addHandler(logging.StreamHandler()) //| //| # emulate a target with 16 registers //| regs = [0] * 16 From c7952c198e84ef7c958333c8f4a6b918fc85c5c8 Mon Sep 17 00:00:00 2001 From: Tuan Nguyen Date: Tue, 14 May 2024 11:40:44 +0700 Subject: [PATCH 024/227] espressif: Enable the _eve module Signed-off-by: Tuan Nguyen --- .../espressif/boards/adafruit_feather_esp32_v2/mpconfigboard.mk | 2 ++ .../espressif/boards/adafruit_feather_esp32s2/mpconfigboard.mk | 2 ++ .../adafruit_feather_esp32s3_4mbflash_2mbpsram/mpconfigboard.mk | 2 ++ .../boards/adafruit_feather_esp32s3_nopsram/mpconfigboard.mk | 2 ++ .../espressif/boards/adafruit_feather_huzzah32/mpconfigboard.mk | 2 ++ .../boards/adafruit_huzzah32_breakout/mpconfigboard.mk | 2 ++ .../espressif/boards/adafruit_itsybitsy_esp32/mpconfigboard.mk | 2 ++ .../espressif/boards/adafruit_matrixportal_s3/mpconfigboard.mk | 2 ++ ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.mk | 2 ++ ports/espressif/boards/adafruit_metro_esp32s3/mpconfigboard.mk | 2 ++ .../espressif/boards/adafruit_qtpy_esp32_pico/mpconfigboard.mk | 2 ++ ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.mk | 2 ++ .../adafruit_qtpy_esp32s3_4mbflash_2mbpsram/mpconfigboard.mk | 2 ++ .../boards/adafruit_qtpy_esp32s3_nopsram/mpconfigboard.mk | 2 ++ .../espressif/boards/adafruit_qualia_s3_rgb666/mpconfigboard.mk | 2 ++ ports/espressif/boards/ai_thinker_esp32-c3s-2m/mpconfigboard.mk | 2 ++ .../boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.mk | 2 ++ ports/espressif/boards/arduino_nano_esp32s3/mpconfigboard.mk | 2 ++ .../arduino_nano_esp32s3_inverted_statusled/mpconfigboard.mk | 2 ++ .../espressif_esp32_devkitc_v4_wroom_32e/mpconfigboard.mk | 2 ++ .../boards/espressif_esp32_devkitc_v4_wrover/mpconfigboard.mk | 2 ++ ports/espressif/boards/espressif_esp32_eye/mpconfigboard.mk | 2 ++ ports/espressif/boards/espressif_esp32_lyrat/mpconfigboard.mk | 2 ++ .../boards/espressif_esp32c6_devkitc_1_n8/mpconfigboard.mk | 2 ++ .../boards/espressif_esp32c6_devkitm_1_n4/mpconfigboard.mk | 2 ++ .../boards/espressif_esp32h2_devkitm_1_n4/mpconfigboard.mk | 2 ++ .../boards/espressif_esp32s2_devkitc_1_n4/mpconfigboard.mk | 2 ++ .../boards/espressif_esp32s2_devkitc_1_n4r2/mpconfigboard.mk | 2 ++ .../boards/espressif_esp32s2_devkitc_1_n8r2/mpconfigboard.mk | 2 ++ .../boards/espressif_esp32s3_devkitc_1_n32r8/mpconfigboard.mk | 2 ++ .../boards/espressif_esp32s3_devkitc_1_n8/mpconfigboard.mk | 2 ++ .../boards/espressif_esp32s3_devkitc_1_n8r2/mpconfigboard.mk | 2 ++ .../boards/espressif_esp32s3_devkitc_1_n8r8/mpconfigboard.mk | 2 ++ .../boards/espressif_esp32s3_devkitm_1_n8/mpconfigboard.mk | 2 ++ ports/espressif/boards/espressif_esp32s3_eye/mpconfigboard.mk | 2 ++ ports/espressif/boards/espressif_saola_1_wroom/mpconfigboard.mk | 2 ++ .../espressif/boards/espressif_saola_1_wrover/mpconfigboard.mk | 2 ++ 37 files changed, 74 insertions(+) diff --git a/ports/espressif/boards/adafruit_feather_esp32_v2/mpconfigboard.mk b/ports/espressif/boards/adafruit_feather_esp32_v2/mpconfigboard.mk index 2569b1cabb11..bad82f5caef7 100644 --- a/ports/espressif/boards/adafruit_feather_esp32_v2/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_feather_esp32_v2/mpconfigboard.mk @@ -10,3 +10,5 @@ CIRCUITPY_ESP_FLASH_SIZE = 8MB CIRCUITPY_ESP_PSRAM_SIZE = 2MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 40m + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_feather_esp32s2/mpconfigboard.mk b/ports/espressif/boards/adafruit_feather_esp32s2/mpconfigboard.mk index 891c70311550..df77ff19e61e 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s2/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_feather_esp32s2/mpconfigboard.mk @@ -12,3 +12,5 @@ CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESP_PSRAM_SIZE = 2MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 80m + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/mpconfigboard.mk b/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/mpconfigboard.mk index 68abfe8cca7f..63e05d845c63 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/mpconfigboard.mk @@ -16,3 +16,5 @@ CIRCUITPY_ESP_PSRAM_FREQ = 80m OPTIMIZATION_FLAGS = -Os CIRCUITPY_ESPCAMERA = 0 CIRCUITPY_PARALLELDISPLAYBUS = 0 + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/mpconfigboard.mk b/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/mpconfigboard.mk index bf0dc3f320f5..4619daf5d7f4 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/mpconfigboard.mk @@ -9,3 +9,5 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 8MB CIRCUITPY_ESPCAMERA = 0 + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_feather_huzzah32/mpconfigboard.mk b/ports/espressif/boards/adafruit_feather_huzzah32/mpconfigboard.mk index c6ca0ba66eb4..e1c91c7cefad 100644 --- a/ports/espressif/boards/adafruit_feather_huzzah32/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_feather_huzzah32/mpconfigboard.mk @@ -8,3 +8,5 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESPCAMERA = 0 + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_huzzah32_breakout/mpconfigboard.mk b/ports/espressif/boards/adafruit_huzzah32_breakout/mpconfigboard.mk index 3d53e1594222..acdf9bde2c8d 100644 --- a/ports/espressif/boards/adafruit_huzzah32_breakout/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_huzzah32_breakout/mpconfigboard.mk @@ -8,3 +8,5 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESPCAMERA = 0 + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_itsybitsy_esp32/mpconfigboard.mk b/ports/espressif/boards/adafruit_itsybitsy_esp32/mpconfigboard.mk index a32c17b806df..5f3391c3b476 100644 --- a/ports/espressif/boards/adafruit_itsybitsy_esp32/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_itsybitsy_esp32/mpconfigboard.mk @@ -10,3 +10,5 @@ CIRCUITPY_ESP_FLASH_SIZE = 8MB CIRCUITPY_ESP_PSRAM_SIZE = 2MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 40m + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_matrixportal_s3/mpconfigboard.mk b/ports/espressif/boards/adafruit_matrixportal_s3/mpconfigboard.mk index 51a03b346102..c79da8c2a137 100644 --- a/ports/espressif/boards/adafruit_matrixportal_s3/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_matrixportal_s3/mpconfigboard.mk @@ -17,3 +17,5 @@ CIRCUITPY_ESPCAMERA = 0 # Not enough pins. CIRCUITPY_PARALLELDISPLAYBUS = 0 + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.mk b/ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.mk index 20fa567f1bcd..d6f80819f9d5 100644 --- a/ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.mk @@ -12,3 +12,5 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_PSRAM_SIZE = 2MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 80m + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_metro_esp32s3/mpconfigboard.mk b/ports/espressif/boards/adafruit_metro_esp32s3/mpconfigboard.mk index 2fd5a40f2591..0366348fba49 100644 --- a/ports/espressif/boards/adafruit_metro_esp32s3/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_metro_esp32s3/mpconfigboard.mk @@ -12,3 +12,5 @@ CIRCUITPY_ESP_FLASH_SIZE = 16MB CIRCUITPY_ESP_PSRAM_MODE = opi CIRCUITPY_ESP_PSRAM_FREQ = 80m CIRCUITPY_ESP_PSRAM_SIZE = 8MB + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_qtpy_esp32_pico/mpconfigboard.mk b/ports/espressif/boards/adafruit_qtpy_esp32_pico/mpconfigboard.mk index e27e48cf51ea..ddda1e36af1b 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32_pico/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_qtpy_esp32_pico/mpconfigboard.mk @@ -13,3 +13,5 @@ CIRCUITPY_ESP_PSRAM_FREQ = 80m # Not enough pins. CIRCUITPY_PARALLELDISPLAYBUS = 0 + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.mk b/ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.mk index 4d5b1b636df2..c76d5eca5d57 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.mk @@ -16,3 +16,5 @@ CIRCUITPY_ESP_PSRAM_FREQ = 80m # Not enough pins. CIRCUITPY_PARALLELDISPLAYBUS = 0 + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/mpconfigboard.mk b/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/mpconfigboard.mk index afc6e335c1a4..6bdbd69924b0 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/mpconfigboard.mk @@ -16,3 +16,5 @@ CIRCUITPY_ESP_PSRAM_FREQ = 80m CIRCUITPY_ESPCAMERA = 0 # Not enough pins. CIRCUITPY_PARALLELDISPLAYBUS = 0 + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/mpconfigboard.mk b/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/mpconfigboard.mk index 43ac269cd099..a0dba9920411 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/mpconfigboard.mk @@ -14,3 +14,5 @@ CIRCUITPY_ESPCAMERA = 0 # Not enough pins. CIRCUITPY_PARALLELDISPLAYBUS = 0 + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_qualia_s3_rgb666/mpconfigboard.mk b/ports/espressif/boards/adafruit_qualia_s3_rgb666/mpconfigboard.mk index 65c872cf74b8..69bb6aa95095 100644 --- a/ports/espressif/boards/adafruit_qualia_s3_rgb666/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_qualia_s3_rgb666/mpconfigboard.mk @@ -14,3 +14,5 @@ CIRCUITPY_ESP_PSRAM_MODE = opi CIRCUITPY_ESP_PSRAM_FREQ = 80m CIRCUITPY_DOTCLOCKFRAMEBUFFER = 1 + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/ai_thinker_esp32-c3s-2m/mpconfigboard.mk b/ports/espressif/boards/ai_thinker_esp32-c3s-2m/mpconfigboard.mk index 515b6da5c07c..524c306582ad 100644 --- a/ports/espressif/boards/ai_thinker_esp32-c3s-2m/mpconfigboard.mk +++ b/ports/espressif/boards/ai_thinker_esp32-c3s-2m/mpconfigboard.mk @@ -10,3 +10,5 @@ CIRCUITPY_ESP_FLASH_SIZE = 2MB CIRCUITPY_DUALBANK = 0 CIRCUITPY_ESP_USB_SERIAL_JTAG = 0 + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.mk b/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.mk index 43c5bd8d89fa..cda74878377b 100644 --- a/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.mk +++ b/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.mk @@ -12,3 +12,5 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_PSRAM_SIZE = 8MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 80m + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/arduino_nano_esp32s3/mpconfigboard.mk b/ports/espressif/boards/arduino_nano_esp32s3/mpconfigboard.mk index 3abf3d9afcbb..6bf584881bf3 100644 --- a/ports/espressif/boards/arduino_nano_esp32s3/mpconfigboard.mk +++ b/ports/espressif/boards/arduino_nano_esp32s3/mpconfigboard.mk @@ -23,3 +23,5 @@ QSPI_FLASH_FILESYSTEM = 1 EXTERNAL_FLASH_DEVICES = GD25WQ128E CIRCUITPY_ESPCAMERA = 0 + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/mpconfigboard.mk b/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/mpconfigboard.mk index 3abf3d9afcbb..6bf584881bf3 100644 --- a/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/mpconfigboard.mk +++ b/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/mpconfigboard.mk @@ -23,3 +23,5 @@ QSPI_FLASH_FILESYSTEM = 1 EXTERNAL_FLASH_DEVICES = GD25WQ128E CIRCUITPY_ESPCAMERA = 0 + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/mpconfigboard.mk index 495a505fe761..e6a4593358c5 100644 --- a/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/mpconfigboard.mk @@ -8,3 +8,5 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESPCAMERA = 0 + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/mpconfigboard.mk index 6ff7d4e519bd..285f89715a8d 100644 --- a/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/mpconfigboard.mk @@ -12,3 +12,5 @@ CIRCUITPY_ESPCAMERA = 0 CIRCUITPY_ESP_PSRAM_SIZE = 8MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 40m + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32_eye/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32_eye/mpconfigboard.mk index 72eb1db85a01..091cb9808dde 100644 --- a/ports/espressif/boards/espressif_esp32_eye/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32_eye/mpconfigboard.mk @@ -20,3 +20,5 @@ CIRCUITPY_PS2IO = 0 CIRCUITPY_ROTARYIO = 0 CIRCUITPY_TOUCHIO = 0 CIRCUITPY_KEYPAD = 0 + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32_lyrat/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32_lyrat/mpconfigboard.mk index b1dd2f9f8774..e4a53e27ef7a 100644 --- a/ports/espressif/boards/espressif_esp32_lyrat/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32_lyrat/mpconfigboard.mk @@ -12,3 +12,5 @@ CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 40m CIRCUITPY_ESPCAMERA = 0 + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/mpconfigboard.mk index e15d2bf41e8d..af83b79676ec 100644 --- a/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/mpconfigboard.mk @@ -6,3 +6,5 @@ IDF_TARGET = esp32c6 CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 8MB + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/mpconfigboard.mk index 75e097afa84b..973359406847 100644 --- a/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/mpconfigboard.mk @@ -6,3 +6,5 @@ IDF_TARGET = esp32c6 CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/mpconfigboard.mk index 82eb611bdf3d..dc94f7de2d0f 100644 --- a/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/mpconfigboard.mk @@ -6,3 +6,5 @@ IDF_TARGET = esp32h2 CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 48m CIRCUITPY_ESP_FLASH_SIZE = 4MB + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/mpconfigboard.mk index 37f0450490c3..66391bf4002b 100644 --- a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/mpconfigboard.mk @@ -9,3 +9,5 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESPCAMERA = 0 + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/mpconfigboard.mk index 51abedf36a24..07f58ad9b964 100644 --- a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/mpconfigboard.mk @@ -12,3 +12,5 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_PSRAM_SIZE = 2MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 80m + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/mpconfigboard.mk index 4475b249b639..66b0a7ba54a4 100644 --- a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/mpconfigboard.mk @@ -12,3 +12,5 @@ CIRCUITPY_ESP_FLASH_SIZE=8MB CIRCUITPY_ESP_PSRAM_SIZE = 2MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 80m + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/mpconfigboard.mk index 223c3af6bfb7..a9fd853226e9 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/mpconfigboard.mk @@ -12,3 +12,5 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_PSRAM_SIZE = 8MB CIRCUITPY_ESP_PSRAM_MODE = opi CIRCUITPY_ESP_PSRAM_FREQ = 80m + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/mpconfigboard.mk index bd2cd4c0a337..ecfbe8cbcab2 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/mpconfigboard.mk @@ -9,3 +9,5 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 8MB CIRCUITPY_ESPCAMERA = 0 + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/mpconfigboard.mk index 50fc4c08e185..dfe013775e51 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/mpconfigboard.mk @@ -12,3 +12,5 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_PSRAM_SIZE = 2MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 80m + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/mpconfigboard.mk index 432e51c43bc8..4f306150f007 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/mpconfigboard.mk @@ -12,3 +12,5 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_PSRAM_SIZE = 8MB CIRCUITPY_ESP_PSRAM_MODE = opi CIRCUITPY_ESP_PSRAM_FREQ = 80m + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/mpconfigboard.mk index fdbd686e0902..207bf0af68d3 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/mpconfigboard.mk @@ -9,3 +9,5 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 8MB CIRCUITPY_ESPCAMERA = 0 + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32s3_eye/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32s3_eye/mpconfigboard.mk index 3ea9c72ff004..e749dca0b1c1 100644 --- a/ports/espressif/boards/espressif_esp32s3_eye/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32s3_eye/mpconfigboard.mk @@ -12,3 +12,5 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_PSRAM_SIZE = 8MB CIRCUITPY_ESP_PSRAM_MODE = opi CIRCUITPY_ESP_PSRAM_FREQ = 80m + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_saola_1_wroom/mpconfigboard.mk b/ports/espressif/boards/espressif_saola_1_wroom/mpconfigboard.mk index d00bf432c976..129b426e8f5c 100644 --- a/ports/espressif/boards/espressif_saola_1_wroom/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_saola_1_wroom/mpconfigboard.mk @@ -9,3 +9,5 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESPCAMERA = 0 + +CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_saola_1_wrover/mpconfigboard.mk b/ports/espressif/boards/espressif_saola_1_wrover/mpconfigboard.mk index 29a0a77d5bee..eda1a76656a9 100644 --- a/ports/espressif/boards/espressif_saola_1_wrover/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_saola_1_wrover/mpconfigboard.mk @@ -12,3 +12,5 @@ CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESP_PSRAM_SIZE = 2MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 80m + +CIRCUITPY__EVE = 1 From 2a8b335a0feb2f72cee6717ffaccd4ec3d9afa1c Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Tue, 14 May 2024 13:00:14 -0400 Subject: [PATCH 025/227] Feather nRF52840 Rev E has NEOPIXEL_POWER pin --- ports/nordic/boards/feather_nrf52840_express/mpconfigboard.h | 3 +++ ports/nordic/boards/feather_nrf52840_express/pins.c | 2 ++ 2 files changed, 5 insertions(+) diff --git a/ports/nordic/boards/feather_nrf52840_express/mpconfigboard.h b/ports/nordic/boards/feather_nrf52840_express/mpconfigboard.h index 64988e1a2875..850ac406efca 100644 --- a/ports/nordic/boards/feather_nrf52840_express/mpconfigboard.h +++ b/ports/nordic/boards/feather_nrf52840_express/mpconfigboard.h @@ -31,6 +31,9 @@ #define MICROPY_HW_MCU_NAME "nRF52840" #define MICROPY_HW_NEOPIXEL (&pin_P0_16) +// power control available only on Rev E and later. +#define CIRCUITPY_STATUS_LED_POWER (&pin_P1_14) + #define MICROPY_HW_LED_STATUS (&pin_P1_15) diff --git a/ports/nordic/boards/feather_nrf52840_express/pins.c b/ports/nordic/boards/feather_nrf52840_express/pins.c index 89757e3b5c9f..d8c4c6a40ccc 100644 --- a/ports/nordic/boards/feather_nrf52840_express/pins.c +++ b/ports/nordic/boards/feather_nrf52840_express/pins.c @@ -30,6 +30,8 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_P1_09) }, { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_P0_16) }, + // NEOPIXEL_POWER only works on Rev E and later. + { MP_ROM_QSTR(MP_QSTR_NEOPIXEL_POWER), MP_ROM_PTR(&pin_P1_14) }, { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_P0_14) }, { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_P0_13) }, From 9e878f7b3d28f691b0e528f8db8d7b76d0e68150 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Tue, 14 May 2024 15:54:21 -0500 Subject: [PATCH 026/227] synthio: Calculate LFO.value at construction Originally, the only (non-debug) way to make an LFO calculate its value was to associate it with a playing synthesizer. This posed a problem for LFOs that had "power on values" other than 0, and where the value was used other than to internally drive a note property. Now, an initial, possibly non-zero value is calculated at object construction time: ```py >>> l = synthio.LFO(offset = 1) >>> l.value 1.0 ``` Note that this happens just once at construction; it does not happen when updating LFO properties: ```py >>> l.offset = 2 >>> l.value 1.0 ``` --- shared-bindings/synthio/LFO.c | 19 +++++++++++++------ tests/circuitpython/synthlfo.py | 2 ++ tests/circuitpython/synthlfo.py.exp | 1 + 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/shared-bindings/synthio/LFO.c b/shared-bindings/synthio/LFO.c index 7b44bb883beb..047347722985 100644 --- a/shared-bindings/synthio/LFO.c +++ b/shared-bindings/synthio/LFO.c @@ -60,11 +60,12 @@ STATIC const uint16_t triangle[] = {0, 32767, 0, -32767}; //| should be considered an implementation detail, though it affects how LFOs //| behave for instance when used to implement an integrator (``l.offset = l``). //| -//| An LFO's output, which is reflected in its `value` property, is not -//| updated in any other way than when its associated synthesizer updates it. -//| For instance, if an LFO is created with ``offset=1``, its `value` will still -//| be ``0`` until it is updated by its associated synthesizer. Similarly, merely -//| updating its properties does not update its value property. +//| An LFO's ``value`` property is computed once when it is constructed, and then +//| when its associated synthesizer updates it. +//| +//| This means that for instance an LFO **created** with ``offset=1`` has ```value==1`` +//| immediately, but **updating** the ``offset`` property alone does not +//| change ``value``; it only updates through an association with an active synthesizer. //| //| The interpolation of the waveform is necessarily different depending on the //| ``once`` property. Consider a LFO with ``waveform=np.array([0, 100], @@ -120,11 +121,17 @@ STATIC mp_obj_t synthio_lfo_make_new(const mp_obj_type_t *type_in, size_t n_args synthio_synth_parse_waveform(&self->waveform_bufinfo, args[ARG_waveform].u_obj); } self->waveform_obj = args[ARG_waveform].u_obj; - self->base.last_tick = synthio_global_tick; mp_obj_t result = MP_OBJ_FROM_PTR(self); properties_construct_helper(result, lfo_properties + 1, args + 1, MP_ARRAY_SIZE(lfo_properties) - 1); + // Force computation of the LFO's initial output + synthio_global_rate_scale = 0; + self->base.last_tick = synthio_global_tick - 1; + synthio_block_slot_t slot; + synthio_block_assign_slot(MP_OBJ_FROM_PTR(result), &slot, MP_QSTR_self); + (void)synthio_block_slot_get(&slot); + return result; }; diff --git a/tests/circuitpython/synthlfo.py b/tests/circuitpython/synthlfo.py index a7bd1e897307..2ab1f02cb15b 100644 --- a/tests/circuitpython/synthlfo.py +++ b/tests/circuitpython/synthlfo.py @@ -17,5 +17,7 @@ lfos[2].rate = lfos[1] lfos[2].offset = lfos[0] +print("Initial values", *(l.value for l in lfos)) + for i in range(100): print(i * 256 / 48000, *list(lfo_tick(*lfos)) + [l.phase for l in lfos]) diff --git a/tests/circuitpython/synthlfo.py.exp b/tests/circuitpython/synthlfo.py.exp index 7a2ad7d6ba7c..a628347c2eef 100644 --- a/tests/circuitpython/synthlfo.py.exp +++ b/tests/circuitpython/synthlfo.py.exp @@ -1,3 +1,4 @@ +Initial values 0.0 1.99993896484375 0.0 0.999969482421875 0.999969482421875 0.0 0.02133268229166667 1.973273111979167 0.06342789066420661 0.999969482421875 0.9466377766927083 0.02133333333333333 0.01333333333333333 0.01052412326388889 0.02666666666666667 0.02666666666666667 0.005333333333333333 0.04266536458333333 1.946607259114583 0.1262869271612167 0.999969482421875 0.8933060709635416 0.04266666666666667 0.02666666666666667 0.02090602864583333 0.05333333333333333 0.05333333333333333 0.01066666666666667 0.06399804687500001 1.91994140625 0.1885771094910304 0.999969482421875 0.8399743652343751 0.064 0.03999999999999999 0.03114571614583333 0.07999999999999998 0.07999999999999998 From 1865db24f89b1a328c296f9e0155e3426d5bd397 Mon Sep 17 00:00:00 2001 From: Andrew Guest Date: Tue, 14 May 2024 19:30:03 -0500 Subject: [PATCH 027/227] Fix typo in start_advertising() param docs --- shared-bindings/_bleio/Adapter.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shared-bindings/_bleio/Adapter.c b/shared-bindings/_bleio/Adapter.c index 005f30f8b310..ddd1a8678c0c 100644 --- a/shared-bindings/_bleio/Adapter.c +++ b/shared-bindings/_bleio/Adapter.c @@ -198,8 +198,8 @@ MP_PROPERTY_GETSET(bleio_adapter_name_obj, //| :param bool anonymous: If `True` then this device's MAC address is randomized before advertising. //| :param int timeout: If set, we will only advertise for this many seconds. Zero means no timeout. //| :param float interval: advertising interval, in seconds -//| :param tx_power int: transmitter power while advertising in dBm -//| :param directed_to Address: peer to advertise directly to""" +//| :param int tx_power: transmitter power while advertising in dBm +//| :param Address directed_to: peer to advertise directly to""" //| ... STATIC mp_obj_t bleio_adapter_start_advertising(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { bleio_adapter_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); From 9cfcf9a683883742c4dd4e1dd76b887659fae9f2 Mon Sep 17 00:00:00 2001 From: Andrew Mirsky Date: Tue, 14 May 2024 20:58:52 -0400 Subject: [PATCH 028/227] [#8272] ports/challenger_rp2040_lte: fixes incorrect pin assignment for MISO Signed-off-by: Andrew Mirsky --- ports/raspberrypi/boards/challenger_rp2040_lte/pins.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/raspberrypi/boards/challenger_rp2040_lte/pins.c b/ports/raspberrypi/boards/challenger_rp2040_lte/pins.c index dd2b4d9bdae4..f6694922fb40 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_lte/pins.c +++ b/ports/raspberrypi/boards/challenger_rp2040_lte/pins.c @@ -56,11 +56,11 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_GP17), MP_ROM_PTR(&pin_GPIO17) }, // SPI + { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO20) }, { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO22) }, { MP_ROM_QSTR(MP_QSTR_GP22), MP_ROM_PTR(&pin_GPIO22) }, { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO23) }, { MP_ROM_QSTR(MP_QSTR_GP23), MP_ROM_PTR(&pin_GPIO23) }, - { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO24) }, { MP_ROM_QSTR(MP_QSTR_GP24), MP_ROM_PTR(&pin_GPIO24) }, // Analog input / Generic IO From 9a12fbc4f8dbd7301d323341d846c21af4bc0246 Mon Sep 17 00:00:00 2001 From: gitcnd Date: Wed, 15 May 2024 13:31:09 +0000 Subject: [PATCH 029/227] Add Freenove name and ID to their board --- ports/espressif/boards/esp32-wrover-dev-cam/mpconfigboard.h | 2 +- ports/espressif/boards/esp32-wrover-dev-cam/mpconfigboard.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ports/espressif/boards/esp32-wrover-dev-cam/mpconfigboard.h b/ports/espressif/boards/esp32-wrover-dev-cam/mpconfigboard.h index 9f12d44f4019..453292569ca9 100644 --- a/ports/espressif/boards/esp32-wrover-dev-cam/mpconfigboard.h +++ b/ports/espressif/boards/esp32-wrover-dev-cam/mpconfigboard.h @@ -24,7 +24,7 @@ * THE SOFTWARE. */ -#define MICROPY_HW_BOARD_NAME "Espressif ESP32-WROVER-DEV-CAM" +#define MICROPY_HW_BOARD_NAME "Freenove ESP32-WROVER-DEV-CAM" #define MICROPY_HW_MCU_NAME "ESP32" #define MICROPY_HW_LED_STATUS (&pin_GPIO2) diff --git a/ports/espressif/boards/esp32-wrover-dev-cam/mpconfigboard.mk b/ports/espressif/boards/esp32-wrover-dev-cam/mpconfigboard.mk index acd647886709..d7f409bf6aca 100755 --- a/ports/espressif/boards/esp32-wrover-dev-cam/mpconfigboard.mk +++ b/ports/espressif/boards/esp32-wrover-dev-cam/mpconfigboard.mk @@ -1,4 +1,4 @@ -CIRCUITPY_CREATOR_ID = 0x000C303A +CIRCUITPY_CREATOR_ID = 0x1C330000 CIRCUITPY_CREATION_ID = 0x00D00001 IDF_TARGET = esp32 From c95477b6a7f8fd86219cda97709661379d14db4b Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Wed, 15 May 2024 10:11:46 -0400 Subject: [PATCH 030/227] update frozen libraries for 9.1.0-beta.2 --- frozen/Adafruit_CircuitPython_BLE | 2 +- frozen/Adafruit_CircuitPython_BusDevice | 2 +- frozen/Adafruit_CircuitPython_ConnectionManager | 2 +- frozen/Adafruit_CircuitPython_Display_Shapes | 2 +- frozen/Adafruit_CircuitPython_ESP32SPI | 2 +- frozen/Adafruit_CircuitPython_IRRemote | 2 +- frozen/Adafruit_CircuitPython_IS31FL3731 | 2 +- frozen/Adafruit_CircuitPython_RFM69 | 2 +- frozen/Adafruit_CircuitPython_Requests | 2 +- frozen/Adafruit_CircuitPython_Thermistor | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/frozen/Adafruit_CircuitPython_BLE b/frozen/Adafruit_CircuitPython_BLE index 28349aec3194..9f2da7ce2ad6 160000 --- a/frozen/Adafruit_CircuitPython_BLE +++ b/frozen/Adafruit_CircuitPython_BLE @@ -1 +1 @@ -Subproject commit 28349aec3194529e451aa9f58dc7bbdd0c015799 +Subproject commit 9f2da7ce2ad6116ea97e1980bb55f0fed4774856 diff --git a/frozen/Adafruit_CircuitPython_BusDevice b/frozen/Adafruit_CircuitPython_BusDevice index c4f1054b1c65..88250a1e29a8 160000 --- a/frozen/Adafruit_CircuitPython_BusDevice +++ b/frozen/Adafruit_CircuitPython_BusDevice @@ -1 +1 @@ -Subproject commit c4f1054b1c655daf1c83ae450de7f4df3edb6c3a +Subproject commit 88250a1e29a806dfc2a9dd9045bb0591a1178cca diff --git a/frozen/Adafruit_CircuitPython_ConnectionManager b/frozen/Adafruit_CircuitPython_ConnectionManager index a37193847e3c..0a4f7452765a 160000 --- a/frozen/Adafruit_CircuitPython_ConnectionManager +++ b/frozen/Adafruit_CircuitPython_ConnectionManager @@ -1 +1 @@ -Subproject commit a37193847e3c7e9a4e5b9b3f893f0147df30cbad +Subproject commit 0a4f7452765a1fbfdd1245a1f67a49ce74d8edfc diff --git a/frozen/Adafruit_CircuitPython_Display_Shapes b/frozen/Adafruit_CircuitPython_Display_Shapes index f90a7cbccfd6..2742ae5025b0 160000 --- a/frozen/Adafruit_CircuitPython_Display_Shapes +++ b/frozen/Adafruit_CircuitPython_Display_Shapes @@ -1 +1 @@ -Subproject commit f90a7cbccfd698f6c2fb36bf787295bcf9ddb910 +Subproject commit 2742ae5025b0a9bcc853a8b89b293f8e46331498 diff --git a/frozen/Adafruit_CircuitPython_ESP32SPI b/frozen/Adafruit_CircuitPython_ESP32SPI index 956d6a08d287..56864ac052b4 160000 --- a/frozen/Adafruit_CircuitPython_ESP32SPI +++ b/frozen/Adafruit_CircuitPython_ESP32SPI @@ -1 +1 @@ -Subproject commit 956d6a08d287c6aef2556fc2d175df921390b747 +Subproject commit 56864ac052b4c085880d00c96a18170868bb8233 diff --git a/frozen/Adafruit_CircuitPython_IRRemote b/frozen/Adafruit_CircuitPython_IRRemote index 72b03fea2078..c4daaa7521a4 160000 --- a/frozen/Adafruit_CircuitPython_IRRemote +++ b/frozen/Adafruit_CircuitPython_IRRemote @@ -1 +1 @@ -Subproject commit 72b03fea2078101d0a814a5eb0dacc0502d6f261 +Subproject commit c4daaa7521a491f7045cf10007764e95e4e2c265 diff --git a/frozen/Adafruit_CircuitPython_IS31FL3731 b/frozen/Adafruit_CircuitPython_IS31FL3731 index 6d364d18f37f..9f1202c3c687 160000 --- a/frozen/Adafruit_CircuitPython_IS31FL3731 +++ b/frozen/Adafruit_CircuitPython_IS31FL3731 @@ -1 +1 @@ -Subproject commit 6d364d18f37fffd032c328fc526bf28b0a4e1e8a +Subproject commit 9f1202c3c6879c62d70058b0f43f21ef51c2ebe6 diff --git a/frozen/Adafruit_CircuitPython_RFM69 b/frozen/Adafruit_CircuitPython_RFM69 index cf64114ea070..5e050c4596fd 160000 --- a/frozen/Adafruit_CircuitPython_RFM69 +++ b/frozen/Adafruit_CircuitPython_RFM69 @@ -1 +1 @@ -Subproject commit cf64114ea070c9fe867e1777cfa2244fe4ae4b4a +Subproject commit 5e050c4596fd639d91fbd63ae99617b75485c7af diff --git a/frozen/Adafruit_CircuitPython_Requests b/frozen/Adafruit_CircuitPython_Requests index 12e6b47db7b9..d500e0c97bdb 160000 --- a/frozen/Adafruit_CircuitPython_Requests +++ b/frozen/Adafruit_CircuitPython_Requests @@ -1 +1 @@ -Subproject commit 12e6b47db7b905d2291f3f235160fcf95f7d0769 +Subproject commit d500e0c97bdb592e7848cdd92a6736a1e5272df3 diff --git a/frozen/Adafruit_CircuitPython_Thermistor b/frozen/Adafruit_CircuitPython_Thermistor index eb582b5c9854..09034b0fe522 160000 --- a/frozen/Adafruit_CircuitPython_Thermistor +++ b/frozen/Adafruit_CircuitPython_Thermistor @@ -1 +1 @@ -Subproject commit eb582b5c985462fa10894c5496158281f80b0691 +Subproject commit 09034b0fe5221faf8c2c01042e97a9d6334a1680 From 8acfc0c70ce14f989fcecc0e160ed3501988ad9a Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Wed, 15 May 2024 13:05:14 -0500 Subject: [PATCH 031/227] set the connected status of a socket after UDP & raw connect --- ports/raspberrypi/common-hal/socketpool/Socket.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ports/raspberrypi/common-hal/socketpool/Socket.c b/ports/raspberrypi/common-hal/socketpool/Socket.c index d305f63c7882..4c290acfbc73 100644 --- a/ports/raspberrypi/common-hal/socketpool/Socket.c +++ b/ports/raspberrypi/common-hal/socketpool/Socket.c @@ -1014,11 +1014,17 @@ void common_hal_socketpool_socket_connect(socketpool_socket_obj_t *socket, } case MOD_NETWORK_SOCK_DGRAM: { err = udp_connect(socket->pcb.udp, &dest, port); + if (err == ERR_OK) { + socket->state = STATE_CONNECTED; + } break; } #if MICROPY_PY_LWIP_SOCK_RAW case MOD_NETWORK_SOCK_RAW: { err = raw_connect(socket->pcb.raw, &dest); + if (err == ERR_OK) { + socket->state = STATE_CONNECTED; + } break; } #endif From 21a93262037fc6583e149528a2721ec6e6fbe0ab Mon Sep 17 00:00:00 2001 From: Tod Kurt Date: Thu, 16 May 2024 09:52:36 -0700 Subject: [PATCH 032/227] update tinyusb to 15 May 2024 version --- lib/tinyusb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/tinyusb b/lib/tinyusb index ee9ad0f18475..5393f8ddbc20 160000 --- a/lib/tinyusb +++ b/lib/tinyusb @@ -1 +1 @@ -Subproject commit ee9ad0f184752e4006ccfa6ae49b7ac83707d771 +Subproject commit 5393f8ddbc2036ee587536d0f9329fbfbdf399d0 From dd09492c45bb06bbe95738b97c540b33ebd5d972 Mon Sep 17 00:00:00 2001 From: CDarius Date: Fri, 17 May 2024 10:47:37 +0200 Subject: [PATCH 033/227] Enable camera and SD power supply --- ports/espressif/boards/m5stack_cores3/board.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ports/espressif/boards/m5stack_cores3/board.c b/ports/espressif/boards/m5stack_cores3/board.c index 968384624fa9..03cb6d06b772 100644 --- a/ports/espressif/boards/m5stack_cores3/board.c +++ b/ports/espressif/boards/m5stack_cores3/board.c @@ -114,9 +114,9 @@ static bool axp2101_init(busio_i2c_obj_t *i2c) { int rc; uint8_t write_buf[2]; - // 0x90 = 0b1011_1001 // LDOS ON/OFF control 0 + // 0x90 = 0b1011_1111 // LDOS ON/OFF control 0 write_buf[0] = 0x90; - write_buf[1] = 0b10111001; + write_buf[1] = 0b10111111; rc = common_hal_busio_i2c_write(i2c, AXP2101_I2C_ADDRESS, write_buf, sizeof(write_buf)); if (rc != 0) { return false; @@ -146,7 +146,7 @@ static bool axp2101_init(busio_i2c_obj_t *i2c) { return false; } - // 0x95, 0x1C // ALDO3 set to 3.3v for TF card slot + // 0x95, 0x1C // ALDO4 set to 3.3v for TF card slot write_buf[0] = 0x95; write_buf[1] = 0x1C; rc = common_hal_busio_i2c_write(i2c, AXP2101_I2C_ADDRESS, write_buf, sizeof(write_buf)); From 1681a3d8cb9235efaed74aff2f113a07690844a1 Mon Sep 17 00:00:00 2001 From: CDarius Date: Fri, 17 May 2024 10:48:23 +0200 Subject: [PATCH 034/227] Added camera configuration in sdkconfig --- ports/espressif/boards/m5stack_cores3/sdkconfig | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ports/espressif/boards/m5stack_cores3/sdkconfig b/ports/espressif/boards/m5stack_cores3/sdkconfig index 97f4eab3f9c1..2eb2f0a850b3 100644 --- a/ports/espressif/boards/m5stack_cores3/sdkconfig +++ b/ports/espressif/boards/m5stack_cores3/sdkconfig @@ -10,6 +10,13 @@ CONFIG_LWIP_LOCAL_HOSTNAME="m5stack-cores3" # end of LWIP +# +# Camera configuration +# +CONFIG_GC0308_SUPPORT=y +CONFIG_GC_SENSOR_SUBSAMPLE_MODE=y +# end of Camera configuration + # end of Component config # end of Espressif IoT Development Framework Configuration From bb47f352812030e2ef4ed72eaeb2c6f8f25baa58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Brad=C3=A1n=20Lane?= Date: Fri, 17 May 2024 11:08:34 -0400 Subject: [PATCH 035/227] added explorer badge RP2040 board --- .../bradanlanestudio_explorer_rp2040/board.c | 336 ++++++++++++++++++ .../mpconfigboard.h | 42 +++ .../mpconfigboard.mk | 16 + .../pico-sdk-configboard.h | 4 + .../bradanlanestudio_explorer_rp2040/pins.c | 146 ++++++++ 5 files changed, 544 insertions(+) create mode 100644 ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/board.c create mode 100644 ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.h create mode 100644 ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.mk create mode 100644 ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pico-sdk-configboard.h create mode 100644 ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pins.c diff --git a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/board.c b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/board.c new file mode 100644 index 000000000000..8130925b9708 --- /dev/null +++ b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/board.c @@ -0,0 +1,336 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2024 Bradán Lane STUDIO + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +/* + The Explorer Badge(s) have more than one specific hardware configuration. + This is a result of small changes in parts availability. The changes are + insignificant to the end user but require changes to the initialization. + The hardware revisions use a voltage divider connected to pin GP29 to + indicate which hardware configuration exists. The code generates a + "version ID" or VID which is used by the code to perform the correct + initialization. The VID is also exposed to the end user in case there is + a need - either for documentation, support requests, or tutorial materials. +*/ + +#include "mpconfigboard.h" + +#include "supervisor/board.h" +#include "shared-bindings/board/__init__.h" + +#include "shared-bindings/busio/SPI.h" +#include "shared-bindings/fourwire/FourWire.h" +#include "shared-bindings/microcontroller/Pin.h" +#include "shared-module/displayio/__init__.h" +#include "supervisor/shared/board.h" + +#include "src/rp2_common/hardware_gpio/include/hardware/gpio.h" + +#include "src/rp2_common/hardware_adc/include/hardware/adc.h" +#define ADC_FIRST_PIN_NUMBER 26 +#define ADC_PIN_COUNT 4 +extern void common_hal_mcu_delay_us(uint32_t); + +#define HEIGHT 200 +#define WIDTH 200 + +#define DELAY_FLAG 0x80 + +#define EPD_RAM_BW 0x10 +#define EPD_RAM_RED 0x13 + +#define DISPLAY_EN_PIN 8 + +// These commands are the combination of SSD1608 and SSD1681 and not all commands are supported for each controller +#define SSD_DRIVER_CONTROL 0x01 +#define SSD_GATE_VOLTAGE 0x03 +#define SSD_SOURCE_VOLTAGE 0x04 +#define SSD_DISPLAY_CONTROL 0x07 +#define SSD_PROGOTP_INITIAL 0x08 +#define SSD_WRITEREG_INITIAL 0x09 +#define SSD_READREG_INITIAL 0x0A +#define SSD_NON_OVERLAP 0x0B +#define SSD_BOOST_SOFT_START 0x0C +#define SSD_GATE_SCAN_START 0x0F +#define SSD_DEEP_SLEEP 0x10 +#define SSD_DATA_MODE 0x11 +#define SSD_SW_RESET 0x12 +#define SSD_HV_DETECT 0x14 +#define SSD_VCI_DETECT 0x15 +#define SSD_TEMP_CONTROL_1681 0x18 +#define SSD_TEMP_CONTROL_1608 0x1C +#define SSD_TEMP_WRITE 0x1A +#define SSD_TEMP_READ 0x1B +#define SSD_TEMP_EXTERN 0x1C +#define SSD_MASTER_ACTIVATE 0x20 +#define SSD_DISP_CTRL1 0x21 +#define SSD_DISP_CTRL2 0x22 +#define SSD_WRITE_RAM_BLK 0x24 +#define SSD_READ_RAM_BLK 0x25 +#define SSD_WRITE_RAM_RED 0x26 +#define SSD_READ_RAM_RED 0x27 +#define SSD_VCOM_SENSE 0x28 +#define SSD_VCOM_DURRATION 0x29 +#define SSD_PROG_VCOM 0x2A +#define SSD_CTRL_VCOM 0x2B +#define SSD_WRITE_VCOM 0x2C +#define SSD_READ_OTP 0x2D +#define SSD_READ_ID 0x2E +#define SSD_READ_STATUS 0x2F +#define SSD_WRITE_LUT 0x32 +#define SSD_WRITE_DUMMY 0x3A +#define SSD_WRITE_GATELINE_1608 0x3B +#define SSD_WRITE_BORDER 0x3C +#define SSD_SET_RAMXPOS 0x44 +#define SSD_SET_RAMYPOS 0x45 +#define SSD_SET_RAMXCOUNT 0x4E +#define SSD_SET_RAMYCOUNT 0x4F +#define SSD_NOP 0xFF + +const uint8_t _start_sequence_ssd1681[] = { + SSD_SW_RESET, DELAY_FLAG + 0, 20, // soft reset and wait 20ms + SSD_DATA_MODE, 1, 0x03, // Data entry sequence + SSD_WRITE_BORDER, 1, 0x05, // border color + SSD_TEMP_CONTROL_1681, 1, 0x80, // Temperature control + SSD_SET_RAMXCOUNT, 1, 0x00, + SSD_SET_RAMYCOUNT, 2, 0x00, 0x00, + SSD_DRIVER_CONTROL, 3, ((WIDTH - 1) & 0xFF), (((WIDTH >> 8) - 1) & 0xFF), 0x00, // set display size + SSD_DISP_CTRL2, 1, 0xf7, // Set DISP only full refreshes +}; +const uint8_t _stop_sequence_ssd1681[] = { + SSD_DEEP_SLEEP, DELAY_FLAG + 1, 0x01, 0x64 // Enter deep sleep +}; +const uint8_t _refresh_sequence_ssd1681[] = { + SSD_MASTER_ACTIVATE, 0, +}; + + +const uint8_t _start_sequence_ssd1608[] = { + SSD_SW_RESET, DELAY_FLAG + 0, 20, // soft reset and wait 20ms + SSD_DRIVER_CONTROL, 3, ((WIDTH - 1) & 0xFF), (((WIDTH - 1) >> 8) & 0xFF), 0x00, // set display size + SSD_WRITE_GATELINE_1608, 1, 0x0B, // gate line width + SSD_DATA_MODE, 1, 0x03, // Data entry sequence + SSD_WRITE_VCOM, 1, 0x70, + SSD_WRITE_LUT, 30, 0x02, 0x02, 0x01, 0x11, 0x12, 0x12, 0x22, 0x22, 0x66, 0x69, + 0x69, 0x59, 0x58, 0x99, 0x99, 0x88, 0x00, 0x00, 0x00, 0x00, + 0xf8, 0xb4, 0x13, 0x51, 0x35, 0x51, 0x51, 0x19, 0x01, 0x00, + SSD_DISP_CTRL2, 1, 0xC7, // Set DISP only full refreshes +}; +const uint8_t _stop_sequence_ssd1608[] = { + SSD_DEEP_SLEEP, DELAY_FLAG + 1, 0x01, 0x64 // Enter deep sleep +}; +const uint8_t _refresh_sequence_ssd1608[] = { + SSD_MASTER_ACTIVATE, 0, +}; + + +extern uint16_t vid_setting; // declared in pins.c +// _set_vid() uses the GPIO29 analog pin (which is connected to a voltage divider) to computer a revision code for the board +// this allows multiple similar boards to chare the same CP build +static int _set_vid(void) { + vid_setting = 9999; + + #define DCK01_VID_PIN 29 + uint16_t value; + adc_init(); + adc_gpio_init(DCK01_VID_PIN); + adc_select_input(DCK01_VID_PIN - ADC_FIRST_PIN_NUMBER); // the VID pin is 29 and the first ADC pin is 26 + common_hal_mcu_delay_us(100); + uint32_t accum = 0; + for (int i = 0; i < 10; i++) { + accum += adc_read(); + } + value = accum / 10; // average the readings + vid_setting = value; + /* + Voltage Divider with 3.3V: (1241 * V) + 10K/ 15K = 1.98V = 2458 + 15K/ 10K = 1.32V = 1638 + 15K/4.7K = 0.79V = 980 + 15K/ 2K = 1.32V = 482 + 15K/ 1K = 1.32V = 256 + Note: extreme values (using 100K or greater) will not create a strong enough current for the ADC to read accurately + Note: we do not get a usable value when the voltage divider is missing + */ + + // TODO change to min/max to tighten up the ranges (requires sampling of the initial boards) + if (value > 2800) { + vid_setting = 9; + } else if (value > 2000) { + vid_setting = 5; + } else if (value > 1200) { + vid_setting = 4; + } else if (value > 600) { + vid_setting = 3; + } else if (value > 300) { + vid_setting = 2; + } else if (value > 150) { + vid_setting = 1; + } else { + vid_setting = 0; + } + + return vid_setting; +} + + +// Note: board_reset_pin_number() is new to CP9 and allows a board to handle pin resets on a per-pin basis +// we use it to prevent the DISPLAY_EN pin from automatically changing state +bool board_reset_pin_number(uint8_t pin_number) { + static bool _display_pin_inited = false; + + if (pin_number == DISPLAY_EN_PIN) { + // init the pin the first time; do nothing after that + if (!_display_pin_inited) { + _display_pin_inited = true; + // doing this (rather than gpio_init) in this specific order ensures no + // glitch if pin was already configured as a high output. gpio_init() temporarily + // configures the pin as an input, so the power enable value would potentially + // glitch. + gpio_put(pin_number, 1); + gpio_set_dir(pin_number, GPIO_OUT); + hw_write_masked(&padsbank0_hw->io[pin_number], PADS_BANK0_GPIO0_DRIVE_VALUE_12MA << PADS_BANK0_GPIO0_DRIVE_LSB, PADS_BANK0_GPIO0_DRIVE_BITS); + gpio_set_function(pin_number, GPIO_FUNC_SIO); + } + return true; + } + return false; +} + +void board_init(void) { + board_reset_pin_number(DISPLAY_EN_PIN); + _set_vid(); // sets vid_setting global + + fourwire_fourwire_obj_t *bus = &allocate_display_bus()->fourwire_bus; + busio_spi_obj_t *spi = &bus->inline_bus; + common_hal_busio_spi_construct(spi, &pin_GPIO14, &pin_GPIO15, NULL, false); + common_hal_busio_spi_never_reset(spi); + + bus->base.type = &fourwire_fourwire_type; + common_hal_fourwire_fourwire_construct(bus, + spi, + &pin_GPIO11, // DEFAULT_SPI_BUS_DC, // EPD_DC Command or data + &pin_GPIO13, // DEFAULT_SPI_BUS_CS, // EPD_CS Chip select + &pin_GPIO10, // DEFAULT_SPI_BUS_RESET, // EPD_RST Reset + 1000000, // Baudrate + 0, // Polarity + 0); // Phase + + // board_vid is a computed flag to let us know what hardware is active + // currently, we only know two codes '1' and '2' and these indicate what ePaper display is installed + + epaperdisplay_epaperdisplay_obj_t *display = NULL; + + // Set up the DisplayIO epaper object + display = &allocate_display()->epaper_display; + display->base.type = &epaperdisplay_epaperdisplay_type; + + // VID codes: 1 = tricolor ePaper (BWR), 2 = monochrome ePaper (BW), other codes are TBD + if (vid_setting == 1) { + common_hal_epaperdisplay_epaperdisplay_construct( + display, + bus, + _start_sequence_ssd1681, sizeof(_start_sequence_ssd1681), + 1.0, // start up time + _stop_sequence_ssd1681, sizeof(_stop_sequence_ssd1681), + WIDTH, // width + HEIGHT, // height + WIDTH, // ram_width + HEIGHT + 0x60, // ram_height RAM is actually only 200 bits high but we use 296 to match the 9 bits + 0, // colstart + 0, // rowstart + 270, // rotation + SSD_SET_RAMXPOS, // set_column_window_command + SSD_SET_RAMYPOS, // set_row_window_command + SSD_SET_RAMXCOUNT, // set_current_column_command + SSD_SET_RAMYCOUNT, // set_current_row_command + SSD_WRITE_RAM_BLK, // write_black_ram_command + false, // black_bits_inverted + SSD_WRITE_RAM_RED, // write_color_ram_command + false, // color_bits_inverted + 0xFF0000, // highlight_color (RED for tri-color display) + _refresh_sequence_ssd1681, sizeof(_refresh_sequence_ssd1681), // refresh_display_command + 15.0, // refresh_time + &pin_GPIO9, // DEFAULT_SPI_BUS_BUSY, // busy_pin + true, // busy_state + 20.0, // seconds_per_frame (does not seem the user can change this) + true, // always_toggle_chip_select + false, // not grayscale + false, // not acep + false, // not two_byte_sequence_length + true); // address_little_endian + } else if (vid_setting == 2) { + common_hal_epaperdisplay_epaperdisplay_construct( + display, + bus, + _start_sequence_ssd1608, sizeof(_start_sequence_ssd1608), + 1.0, // start up time + _stop_sequence_ssd1608, sizeof(_stop_sequence_ssd1608), + WIDTH, // width + HEIGHT, // height + WIDTH, // ram_width + HEIGHT /* + 0x60 */, // ram_height RAM is actually only 200 bits high but we use 296 to match the 9 bits + 0, // colstart + 0, // rowstart + 0, // rotation + SSD_SET_RAMXPOS, // set_column_window_command + SSD_SET_RAMYPOS, // set_row_window_command + SSD_SET_RAMXCOUNT, // set_current_column_command + SSD_SET_RAMYCOUNT, // set_current_row_command + SSD_WRITE_RAM_BLK, // write_black_ram_command + false, // black_bits_inverted + NO_COMMAND, // write_color_ram_command + false, // color_bits_inverted + 0x000000, // highlight_color (RED for tri-color display) + _refresh_sequence_ssd1608, sizeof(_refresh_sequence_ssd1608), // refresh_display_command + 1.0, // refresh_time + &pin_GPIO9, // DEFAULT_SPI_BUS_BUSY, // busy_pin + true, // busy_state + 5.0, // seconds_per_frame (does not seem the user can change this) + true, // always_toggle_chip_select + false, // not grayscale + false, // not acep + false, // not two_byte_sequence_length + true); // address_little_endian + } else { + // what should happen if this firmware is installed on some other board? + // currently, we mark the display as None + display->base.type = &mp_type_NoneType; + } + +} + +void board_deinit(void) { + if ((vid_setting == 1) || (vid_setting == 2)) { + // we initialized an ePaper display so we can de-init it + epaperdisplay_epaperdisplay_obj_t *display = &displays[0].epaper_display; + if (display->base.type == &epaperdisplay_epaperdisplay_type) { + while (common_hal_epaperdisplay_epaperdisplay_get_busy(display)) { + // RUN_BACKGROUND_TASKS; + } + } + common_hal_displayio_release_displays(); + } +} + +// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.h new file mode 100644 index 000000000000..43271bb17d6e --- /dev/null +++ b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.h @@ -0,0 +1,42 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2024 Bradán Lane STUDIO + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#pragma once + +#define MICROPY_HW_BOARD_NAME "Bradán Lane STUDIO Explorer Badge" +#define MICROPY_HW_MCU_NAME "rp2040" + +#define MICROPY_HW_LED_STATUS (&pin_GPIO4) +// #define DEFAULT_UART_BUS_TX (&pin_GPIO0) +// #define DEFAULT_UART_BUS_RX (&pin_GPIO1) +#define DEFAULT_I2C_BUS_SDA (&pin_GPIO2) +#define DEFAULT_I2C_BUS_SCL (&pin_GPIO3) + +#define DEFAULT_SPI_BUS_BUSY (&pin_GPIO9) +#define DEFAULT_SPI_BUS_RESET (&pin_GPIO10) +#define DEFAULT_SPI_BUS_DC (&pin_GPIO11) +#define DEFAULT_SPI_BUS_MISO (&pin_GPIO12) +#define DEFAULT_SPI_BUS_CS (&pin_GPIO13) +#define DEFAULT_SPI_BUS_SCK (&pin_GPIO14) +#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO15) diff --git a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.mk b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.mk new file mode 100644 index 000000000000..06c8786d85c8 --- /dev/null +++ b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.mk @@ -0,0 +1,16 @@ +USB_VID = 0x2E8A +USB_PID = 0x1073 +USB_PRODUCT = "Explorer Badge" +USB_MANUFACTURER = "Bradán Lane STUDIO" +CHIP_VARIANT = RP2040 +CHIP_FAMILY = rp2 + +EXTERNAL_FLASH_DEVICES = "GD25Q64C" + +CIRCUITPY__EVE = 1 + +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Bitmap_Font +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Display_Text +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Display_Shapes +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_HID diff --git a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pico-sdk-configboard.h new file mode 100644 index 000000000000..a41131dd22b7 --- /dev/null +++ b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pico-sdk-configboard.h @@ -0,0 +1,4 @@ +// Put board-specific pico-sdk definitions here. This file must exist. + +// Allow extra time for xosc to start. +#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64 diff --git a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pins.c b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pins.c new file mode 100644 index 000000000000..d38562f7d8bd --- /dev/null +++ b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pins.c @@ -0,0 +1,146 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2024 Bradán Lane STUDIO + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "mpconfigboard.h" + +#include "shared-bindings/board/__init__.h" +#include "shared-module/displayio/__init__.h" + + +uint16_t vid_setting = 123; + +//| def foo() -> None: +//| """Return a value set in board.c""" +//| ... +//| +STATIC mp_obj_t board_vid(void) { + return mp_obj_new_int(vid_setting); +} +MP_DEFINE_CONST_FUN_OBJ_0(board_vid_obj, board_vid); + +#if 0 +extern int dck01_vid_value; // will hold a computed value to identify any board variations (like different e-paper displays) + +STATIC mp_obj_t board_vid(void) { + return mp_obj_new_int(dck01_vid_value); +} + +MP_DEFINE_CONST_FUN_OBJ_0(board_vid_obj, board_vid); +#endif + +STATIC const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_GP1), MP_ROM_PTR(&pin_GPIO1) }, + // GPIO0 and GPIO1 are also the UART + { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO1) }, + + { MP_ROM_QSTR(MP_QSTR_GP2), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_GP3), MP_ROM_PTR(&pin_GPIO3) }, + // GPIO2 and GPIO3 are also the I2C + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO3) }, + + { MP_ROM_QSTR(MP_QSTR_GP4), MP_ROM_PTR(&pin_GPIO4) }, + // GPIO4 is also the LED + { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO4) }, + + { MP_ROM_QSTR(MP_QSTR_GP5), MP_ROM_PTR(&pin_GPIO5) }, + // GPIO5 is also the NEOPIXEL + { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO5) }, + + { MP_ROM_QSTR(MP_QSTR_GP6), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_GP7), MP_ROM_PTR(&pin_GPIO7) }, + // GPIO6 is also the speaker (PWM) and GPIO7 is the enable + { MP_ROM_QSTR(MP_QSTR_SPEAKER), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_SPEAKER_EN), MP_ROM_PTR(&pin_GPIO7) }, + + { MP_ROM_QSTR(MP_QSTR_GP8), MP_ROM_PTR(&pin_GPIO8) }, + // GPIO8 is also the display enable + { MP_ROM_QSTR(MP_QSTR_DISPLAY_EN), MP_ROM_PTR(&pin_GPIO8) }, + + { MP_ROM_QSTR(MP_QSTR_GP9), MP_ROM_PTR(&pin_GPIO9) }, + { MP_ROM_QSTR(MP_QSTR_GP10), MP_ROM_PTR(&pin_GPIO10) }, + { MP_ROM_QSTR(MP_QSTR_GP11), MP_ROM_PTR(&pin_GPIO11) }, + { MP_ROM_QSTR(MP_QSTR_GP12), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_GP13), MP_ROM_PTR(&pin_GPIO13) }, + { MP_ROM_QSTR(MP_QSTR_GP14), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_GP15), MP_ROM_PTR(&pin_GPIO15) }, + // GPIO9 thru GPIO15 are the SPI for the ePaper display + { MP_ROM_QSTR(MP_QSTR_SPI_BUSY), MP_ROM_PTR(&pin_GPIO9) }, + { MP_ROM_QSTR(MP_QSTR_SPI_RESET), MP_ROM_PTR(&pin_GPIO10) }, + { MP_ROM_QSTR(MP_QSTR_SPI_DC), MP_ROM_PTR(&pin_GPIO11) }, + { MP_ROM_QSTR(MP_QSTR_SPI_MISO), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_SPI_CS), MP_ROM_PTR(&pin_GPIO13) }, + { MP_ROM_QSTR(MP_QSTR_SPI_SCK), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_SPI_MOSI), MP_ROM_PTR(&pin_GPIO15) }, + + { MP_ROM_QSTR(MP_QSTR_GP16), MP_ROM_PTR(&pin_GPIO16) }, + { MP_ROM_QSTR(MP_QSTR_GP17), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_GP18), MP_ROM_PTR(&pin_GPIO18) }, + // GPIO16 thru GPIO18 are also the I2S audio + { MP_ROM_QSTR(MP_QSTR_I2S_DATA), MP_ROM_PTR(&pin_GPIO16) }, + { MP_ROM_QSTR(MP_QSTR_I2S_BCK), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_I2S_LRCK), MP_ROM_PTR(&pin_GPIO18) }, + + { MP_ROM_QSTR(MP_QSTR_GP19), MP_ROM_PTR(&pin_GPIO19) }, + { MP_ROM_QSTR(MP_QSTR_GP20), MP_ROM_PTR(&pin_GPIO20) }, + { MP_ROM_QSTR(MP_QSTR_GP21), MP_ROM_PTR(&pin_GPIO21) }, + { MP_ROM_QSTR(MP_QSTR_GP22), MP_ROM_PTR(&pin_GPIO22) }, + { MP_ROM_QSTR(MP_QSTR_GP23), MP_ROM_PTR(&pin_GPIO23) }, + { MP_ROM_QSTR(MP_QSTR_GP24), MP_ROM_PTR(&pin_GPIO24) }, + { MP_ROM_QSTR(MP_QSTR_GP25), MP_ROM_PTR(&pin_GPIO25) }, + { MP_ROM_QSTR(MP_QSTR_GP26), MP_ROM_PTR(&pin_GPIO26) }, + { MP_ROM_QSTR(MP_QSTR_GP27), MP_ROM_PTR(&pin_GPIO27) }, + // GPIO19 thru GPIO27 are also the touch sensors + { MP_ROM_QSTR(MP_QSTR_TOUCH1), MP_ROM_PTR(&pin_GPIO19) }, + { MP_ROM_QSTR(MP_QSTR_TOUCH2), MP_ROM_PTR(&pin_GPIO20) }, + { MP_ROM_QSTR(MP_QSTR_TOUCH3), MP_ROM_PTR(&pin_GPIO21) }, + { MP_ROM_QSTR(MP_QSTR_TOUCH4), MP_ROM_PTR(&pin_GPIO22) }, + { MP_ROM_QSTR(MP_QSTR_TOUCH5), MP_ROM_PTR(&pin_GPIO23) }, + { MP_ROM_QSTR(MP_QSTR_TOUCH6), MP_ROM_PTR(&pin_GPIO24) }, + { MP_ROM_QSTR(MP_QSTR_TOUCH7), MP_ROM_PTR(&pin_GPIO25) }, + { MP_ROM_QSTR(MP_QSTR_TOUCH8), MP_ROM_PTR(&pin_GPIO26) }, + { MP_ROM_QSTR(MP_QSTR_TOUCH9), MP_ROM_PTR(&pin_GPIO27) }, + + { MP_ROM_QSTR(MP_QSTR_GP28), MP_ROM_PTR(&pin_GPIO28) }, + // GPIO28 is also the interrupt pin of the accelerometer + { MP_ROM_QSTR(MP_QSTR_ACCEL_INT), MP_ROM_PTR(&pin_GPIO28) }, + + { MP_ROM_QSTR(MP_QSTR_GP29), MP_ROM_PTR(&pin_GPIO29) }, + // GPIO29 is also the ID value of the board (an analog read value between 0 .. 4096) + // { MP_ROM_QSTR(MP_QSTR_VID), MP_ROM_PTR(&pin_GPIO29) }, + + + { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, + // { MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) }, + + { MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].epaper_display)}, + + { MP_ROM_QSTR(MP_QSTR_VID), MP_ROM_PTR(&board_vid_obj) }, +}; + +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); From bed97ed4c0cb55f1824dc03e39505633c613c730 Mon Sep 17 00:00:00 2001 From: bradanlane Date: Fri, 17 May 2024 13:58:59 -0400 Subject: [PATCH 036/227] =?UTF-8?q?Update=20pins.c=20comment=20to=20indica?= =?UTF-8?q?te=20=E2=80=9CVID=E2=80=9D=20returns=20an=20int?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../raspberrypi/boards/bradanlanestudio_explorer_rp2040/pins.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pins.c b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pins.c index d38562f7d8bd..971ca5f2597f 100644 --- a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pins.c +++ b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pins.c @@ -30,7 +30,7 @@ uint16_t vid_setting = 123; -//| def foo() -> None: +//| def VID() -> int: //| """Return a value set in board.c""" //| ... //| From 689c6fac20bf7d14f905a075e92a315bb923a03d Mon Sep 17 00:00:00 2001 From: Scott Shawcroft Date: Tue, 23 Apr 2024 15:42:17 -0700 Subject: [PATCH 037/227] Add ESP BLE GATT server support Enable BLE where we can. Switch 4MB, non-USB board default partitioning over to a single 2MB firmware bank. Old boards override this setting to keep the same behavior. This also adds alpha support for the ESP32-C2 (aka ESP8684). Fixes #5926 and fixes #7170 --- devices/ble_hci/common-hal/_bleio/Service.c | 3 + lib/tinyusb | 2 +- ports/espressif/Makefile | 30 +++- ports/espressif/README.rst | 1 + .../01space_lcd042_esp32c3/mpconfigboard.mk | 5 + .../mpconfigboard.mk | 1 + .../mpconfigboard.mk | 5 + .../adafruit_qtpy_esp32c3/mpconfigboard.mk | 5 + .../ai_thinker_esp32-c3s/mpconfigboard.mk | 5 + .../boards/beetle-esp32-c3/mpconfigboard.mk | 5 + .../crcibernetica-ideaboard/mpconfigboard.mk | 2 + .../boards/deneyap_kart/mpconfigboard.mk | 5 + .../boards/deneyap_kart_1a/mpconfigboard.mk | 5 + .../deneyap_kart_1a_v2/mpconfigboard.mk | 5 + .../boards/deneyap_kart_g/mpconfigboard.mk | 5 + .../boards/deneyap_mini/mpconfigboard.mk | 6 + .../boards/deneyap_mini_v2/mpconfigboard.mk | 5 + .../doit_esp32_devkit_v1/mpconfigboard.mk | 5 + .../mpconfigboard.mk | 5 + .../espressif_esp32_eye/mpconfigboard.mk | 5 + .../espressif_esp32_lyrat/mpconfigboard.mk | 5 + .../mpconfigboard.mk | 5 + .../mpconfigboard.mk | 6 + .../espressif_esp8684_devkitc_02_n4/board.c | 29 ++++ .../mpconfigboard.h | 41 +++++ .../mpconfigboard.mk | 8 + .../espressif_esp8684_devkitc_02_n4/pins.c | 30 ++++ .../espressif_esp8684_devkitc_02_n4/sdkconfig | 40 +++++ .../lilygo_ttgo_t-oi-plus/mpconfigboard.mk | 5 + .../mpconfigboard.mk | 5 + .../boards/lolin_c3_mini/mpconfigboard.mk | 5 + .../boards/lolin_c3_pico/mpconfigboard.mk | 5 + .../luatos_core_esp32c3/mpconfigboard.mk | 5 + .../mpconfigboard.mk | 5 + .../boards/m5stack_atom_echo/mpconfigboard.mk | 5 + .../boards/m5stack_atom_lite/mpconfigboard.mk | 5 + .../m5stack_atom_matrix/mpconfigboard.mk | 5 + .../boards/m5stack_atom_u/mpconfigboard.mk | 5 + .../boards/m5stack_stamp_c3/mpconfigboard.mk | 5 + .../boards/m5stack_stick_c/mpconfigboard.mk | 5 + .../m5stack_stick_c_plus/mpconfigboard.mk | 5 + .../m5stack_timer_camera_x/mpconfigboard.mk | 5 + .../mpconfigboard.mk | 5 + .../boards/microdev_micro_c3/mpconfigboard.mk | 5 + .../seeed_xiao_esp32c3/mpconfigboard.mk | 5 + .../boards/sqfmi_watchy/mpconfigboard.mk | 5 + .../sunton_esp32_2424S012/mpconfigboard.mk | 5 + .../sunton_esp32_2432S028/mpconfigboard.mk | 5 + .../unexpectedmaker_tinypico/mpconfigboard.mk | 5 + .../mpconfigboard.mk | 5 + .../boards/weact_esp32c6_n4/mpconfigboard.mk | 6 + .../wemos_lolin32_lite/mpconfigboard.mk | 5 + ports/espressif/common-hal/_bleio/Adapter.c | 98 ++++++++++-- .../common-hal/_bleio/Characteristic.c | 145 ++++++++++++++++-- .../common-hal/_bleio/Characteristic.h | 22 ++- .../common-hal/_bleio/CharacteristicBuffer.c | 59 ++----- .../common-hal/_bleio/CharacteristicBuffer.h | 6 +- .../espressif/common-hal/_bleio/Connection.h | 5 +- .../espressif/common-hal/_bleio/Descriptor.c | 32 ++++ .../espressif/common-hal/_bleio/Descriptor.h | 9 +- .../common-hal/_bleio/PacketBuffer.c | 104 +++++++++---- .../common-hal/_bleio/PacketBuffer.h | 5 +- ports/espressif/common-hal/_bleio/Service.c | 48 +++++- ports/espressif/common-hal/_bleio/Service.h | 14 +- ports/espressif/common-hal/_bleio/UUID.h | 5 +- ports/espressif/common-hal/_bleio/__init__.h | 7 +- .../espressif/common-hal/_bleio/ble_events.h | 5 +- .../common-hal/analogbufio/BufferedIn.c | 2 +- .../espressif/common-hal/analogio/AnalogIn.c | 4 +- .../dotclockframebuffer/DotClockFramebuffer.c | 10 +- .../common-hal/microcontroller/Pin.c | 16 ++ .../common-hal/microcontroller/Processor.c | 4 + .../common-hal/microcontroller/__init__.c | 3 + ports/espressif/esp-idf | 2 +- .../partitions-4MB-no-ota-no-uf2.csv | 7 + .../esp-idf-config/sdkconfig-ble.defaults | 14 +- .../esp-idf-config/sdkconfig-esp32.defaults | 20 ++- .../esp-idf-config/sdkconfig-esp32c2.defaults | 49 ++++++ .../sdkconfig-flash-16MB-no-uf2.defaults | 11 +- ...sdkconfig-flash-4MB-no-ota-no-uf2.defaults | 25 +++ .../sdkconfig-flash-60m.defaults | 14 ++ ports/espressif/mpconfigport.h | 2 +- ports/espressif/mpconfigport.mk | 56 +++++-- ports/espressif/mphalport.c | 2 + ports/espressif/peripherals/esp32c2/pins.c | 42 +++++ ports/espressif/peripherals/esp32c2/pins.h | 60 ++++++++ ports/espressif/peripherals/i2c.c | 2 + ports/espressif/peripherals/pins.h | 2 + ports/espressif/tools/build_memory_info.py | 3 + ports/espressif/tools/decode_backtrace.py | 15 +- ports/espressif/tools/update_sdkconfig.py | 7 +- ports/nordic/common-hal/_bleio/Service.c | 3 + ports/silabs/common-hal/_bleio/Service.c | 3 + py/makeqstrdefs.py | 2 +- py/nlraarch64.c | 2 +- py/nlrmips.c | 2 +- py/nlrpowerpc.c | 4 +- py/nlrthumb.c | 2 +- py/nlrx64.c | 2 +- py/nlrx86.c | 2 +- py/nlrxtensa.c | 2 +- shared-bindings/_bleio/PacketBuffer.c | 18 +-- shared-bindings/_bleio/Service.c | 15 +- shared-bindings/_bleio/Service.h | 1 + tools/ci_check_duplicate_usb_vid_pid.py | 2 +- 105 files changed, 1182 insertions(+), 209 deletions(-) create mode 100644 ports/espressif/boards/espressif_esp8684_devkitc_02_n4/board.c create mode 100644 ports/espressif/boards/espressif_esp8684_devkitc_02_n4/mpconfigboard.h create mode 100644 ports/espressif/boards/espressif_esp8684_devkitc_02_n4/mpconfigboard.mk create mode 100644 ports/espressif/boards/espressif_esp8684_devkitc_02_n4/pins.c create mode 100644 ports/espressif/boards/espressif_esp8684_devkitc_02_n4/sdkconfig create mode 100644 ports/espressif/esp-idf-config/partitions-4MB-no-ota-no-uf2.csv create mode 100644 ports/espressif/esp-idf-config/sdkconfig-esp32c2.defaults create mode 100644 ports/espressif/esp-idf-config/sdkconfig-flash-4MB-no-ota-no-uf2.defaults create mode 100644 ports/espressif/esp-idf-config/sdkconfig-flash-60m.defaults create mode 100644 ports/espressif/peripherals/esp32c2/pins.c create mode 100644 ports/espressif/peripherals/esp32c2/pins.h diff --git a/devices/ble_hci/common-hal/_bleio/Service.c b/devices/ble_hci/common-hal/_bleio/Service.c index a20f6d3a55b5..37c34d7cb245 100644 --- a/devices/ble_hci/common-hal/_bleio/Service.c +++ b/devices/ble_hci/common-hal/_bleio/Service.c @@ -57,6 +57,9 @@ void common_hal_bleio_service_construct(bleio_service_obj_t *self, bleio_uuid_ob } } +void common_hal_bleio_service_deinit(bleio_service_obj_t *self) { +} + void bleio_service_from_connection(bleio_service_obj_t *self, mp_obj_t connection) { self->handle = 0xFFFF; self->uuid = NULL; diff --git a/lib/tinyusb b/lib/tinyusb index 5393f8ddbc20..ccc7a36043e0 160000 --- a/lib/tinyusb +++ b/lib/tinyusb @@ -1 +1 @@ -Subproject commit 5393f8ddbc2036ee587536d0f9329fbfbdf399d0 +Subproject commit ccc7a36043e055ded1f478a979a303e694123187 diff --git a/ports/espressif/Makefile b/ports/espressif/Makefile index 8fb21c953f4e..f7c23a1bff5d 100644 --- a/ports/espressif/Makefile +++ b/ports/espressif/Makefile @@ -24,7 +24,10 @@ include ../../py/circuitpy_mkenv.mk -ifeq ($(IDF_TARGET),esp32c3) +ifeq ($(IDF_TARGET),esp32c2) +IDF_TARGET_ARCH = riscv +CROSS_COMPILE = riscv32-esp-elf- +else ifeq ($(IDF_TARGET),esp32c3) IDF_TARGET_ARCH = riscv CROSS_COMPILE = riscv32-esp-elf- else ifeq ($(IDF_TARGET),esp32c6) @@ -68,7 +71,9 @@ INC += \ -isystem esp-idf/components/bt/host/nimble/esp-hci/include \ -isystem esp-idf/components/bt/host/nimble/nimble/nimble/controller/include \ -isystem esp-idf/components/bt/host/nimble/nimble/nimble/host/include \ + -isystem esp-idf/components/bt/host/nimble/nimble/nimble/host/services/ans/include \ -isystem esp-idf/components/bt/host/nimble/nimble/nimble/host/services/gap/include \ + -isystem esp-idf/components/bt/host/nimble/nimble/nimble/host/services/gatt/include \ -isystem esp-idf/components/bt/host/nimble/nimble/nimble/include \ -isystem esp-idf/components/bt/host/nimble/nimble/nimble/host/util/include \ -isystem esp-idf/components/bt/host/nimble/nimble/nimble/transport/include \ @@ -223,6 +228,12 @@ LDFLAGS += \ -T$(IDF_TARGET).rom.newlib-data.ld \ -T$(IDF_TARGET).rom.newlib-funcs.ld \ -T$(IDF_TARGET).rom.spiflash.ld +else ifeq ($(IDF_TARGET),esp32c2) +LDFLAGS += \ + -Tesp32c2.rom.heap.ld \ + -Tesp32c2.rom.newlib.ld \ + -Tesp32c2.rom.version.ld +CFLAGS += -DSOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ else ifeq ($(IDF_TARGET),esp32c3) LDFLAGS += \ -Tesp32c3.rom.newlib.ld \ @@ -264,6 +275,8 @@ endif # Always add these because we might be doing host. ifeq ($(IDF_TARGET),esp32) CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_ESP32 +else ifeq ($(IDF_TARGET),esp32c2) +CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_ESP32C2 else ifeq ($(IDF_TARGET),esp32c3) CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_ESP32C3 else ifeq ($(IDF_TARGET),esp32c6) @@ -408,10 +421,14 @@ else UF2_BOOTLOADER ?= $(CIRCUITPY_USB_DEVICE) ifeq ($(UF2_BOOTLOADER), 1) FLASH_SIZE_SDKCONFIG ?= esp-idf-config/sdkconfig-flash-$(CIRCUITPY_ESP_FLASH_SIZE).defaults +else +ifeq ($(CIRCUITPY_ESP_FLASH_SIZE), 4MB) + FLASH_SIZE_SDKCONFIG ?= esp-idf-config/sdkconfig-flash-$(CIRCUITPY_ESP_FLASH_SIZE)-no-ota-no-uf2.defaults else FLASH_SIZE_SDKCONFIG ?= esp-idf-config/sdkconfig-flash-$(CIRCUITPY_ESP_FLASH_SIZE)-no-uf2.defaults endif endif +endif FLASH_MODE_SDKCONFIG ?= esp-idf-config/sdkconfig-flash-$(CIRCUITPY_ESP_FLASH_MODE).defaults FLASH_SPEED_SDKCONFIG ?= esp-idf-config/sdkconfig-flash-$(CIRCUITPY_ESP_FLASH_FREQ).defaults @@ -469,11 +486,15 @@ update-all-sdkconfigs: $(BUILD)/esp-idf/config/sdkconfig.h update-board-sdkconfig: $(BUILD)/esp-idf/config/sdkconfig.h python tools/update_sdkconfig.py --board=$(BOARD) --debug=$(DEBUG) -BINARY_WIFI_BLOBS = libcore.a libespnow.a libmesh.a libnet80211.a libpp.a libsmartconfig.a libwapi.a +BINARY_WIFI_BLOBS = libcore.a libespnow.a libnet80211.a libpp.a libsmartconfig.a BINARY_BLOBS = esp-idf/components/esp_phy/lib/$(IDF_TARGET)/libphy.a ifneq ($(CIRCUITPY_WIFI),0) BINARY_BLOBS += esp-idf/components/esp_coex/lib/$(IDF_TARGET)/libcoexist.a $(addprefix esp-idf/components/esp_wifi/lib/$(IDF_TARGET)/, $(BINARY_WIFI_BLOBS)) + ifneq ($(IDF_TARGET),esp32c2) + BINARY_BLOBS += $(addprefix esp-idf/components/esp_wifi/lib/$(IDF_TARGET)/, libmesh.a libwapi.a) + endif endif + ifeq ($(IDF_TARGET),esp32) BINARY_BLOBS += esp-idf/components/esp_phy/lib/$(IDF_TARGET)/librtc.a endif @@ -493,6 +514,9 @@ ifneq ($(CIRCUITPY_BLEIO),0) ESP_IDF_COMPONENTS_LINK += bt ifeq ($(BLE_IMPL),esp32) + # BLE will hang the ESP32 and trigger an interrupt watchdog without this undefined symbol at + # link because a weak version of the interrupt that BLE uses will be linked incorrectly. + LDFLAGS += -u ld_include_hli_vectors_bt BINARY_BLOBS += esp-idf/components/bt/controller/lib_esp32/$(IDF_TARGET)/libbtdm_app.a endif @@ -544,6 +568,8 @@ ifeq ($(IDF_TARGET),esp32) BOOTLOADER_OFFSET = 0x1000 else ifeq ($(IDF_TARGET),esp32h2) BOOTLOADER_OFFSET = 0x0 +else ifeq ($(IDF_TARGET),esp32c2) +BOOTLOADER_OFFSET = 0x0 else ifeq ($(IDF_TARGET),esp32c3) BOOTLOADER_OFFSET = 0x0 else ifeq ($(IDF_TARGET),esp32c6) diff --git a/ports/espressif/README.rst b/ports/espressif/README.rst index 64a5112b78f1..26521d9a0cf1 100644 --- a/ports/espressif/README.rst +++ b/ports/espressif/README.rst @@ -11,6 +11,7 @@ Support Status: ESP32, "beta" ESP32-H2, "alpha" + ESP32-C2, "alpha" ESP32-C3, "beta" ESP32-C6, "alpha" ESP32-S2, "stable" diff --git a/ports/espressif/boards/01space_lcd042_esp32c3/mpconfigboard.mk b/ports/espressif/boards/01space_lcd042_esp32c3/mpconfigboard.mk index ad0e985cd6fa..887fdf286d7c 100644 --- a/ports/espressif/boards/01space_lcd042_esp32c3/mpconfigboard.mk +++ b/ports/espressif/boards/01space_lcd042_esp32c3/mpconfigboard.mk @@ -7,4 +7,9 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + CIRCUITPY_ESP_USB_SERIAL_JTAG = 1 diff --git a/ports/espressif/boards/adafruit_feather_huzzah32/mpconfigboard.mk b/ports/espressif/boards/adafruit_feather_huzzah32/mpconfigboard.mk index c6ca0ba66eb4..2715f5ca3062 100644 --- a/ports/espressif/boards/adafruit_feather_huzzah32/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_feather_huzzah32/mpconfigboard.mk @@ -7,4 +7,5 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB +CIRCUITPY_BLEIO = 0 CIRCUITPY_ESPCAMERA = 0 diff --git a/ports/espressif/boards/adafruit_huzzah32_breakout/mpconfigboard.mk b/ports/espressif/boards/adafruit_huzzah32_breakout/mpconfigboard.mk index 3d53e1594222..36639e0313b1 100644 --- a/ports/espressif/boards/adafruit_huzzah32_breakout/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_huzzah32_breakout/mpconfigboard.mk @@ -7,4 +7,9 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + CIRCUITPY_ESPCAMERA = 0 diff --git a/ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.mk b/ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.mk index d15c1586f31c..de5ad5d7cbc2 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.mk @@ -7,6 +7,11 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + CIRCUITPY_ESP_USB_SERIAL_JTAG = 1 # Not enough pins. diff --git a/ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.mk b/ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.mk index 9bcaa3473a2c..d1313a82c7f3 100644 --- a/ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.mk +++ b/ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.mk @@ -7,4 +7,9 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + CIRCUITPY_ESP_USB_SERIAL_JTAG = 0 diff --git a/ports/espressif/boards/beetle-esp32-c3/mpconfigboard.mk b/ports/espressif/boards/beetle-esp32-c3/mpconfigboard.mk index 5ad71b2da59d..16159905ba9f 100644 --- a/ports/espressif/boards/beetle-esp32-c3/mpconfigboard.mk +++ b/ports/espressif/boards/beetle-esp32-c3/mpconfigboard.mk @@ -8,4 +8,9 @@ CIRCUITPY_ESP_FLASH_MODE=qio CIRCUITPY_ESP_FLASH_FREQ=80m CIRCUITPY_ESP_FLASH_SIZE=4MB +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + CIRCUITPY_ESP_USB_SERIAL_JTAG = 1 diff --git a/ports/espressif/boards/crcibernetica-ideaboard/mpconfigboard.mk b/ports/espressif/boards/crcibernetica-ideaboard/mpconfigboard.mk index 89b61d1e373d..3e7e54c9a63e 100644 --- a/ports/espressif/boards/crcibernetica-ideaboard/mpconfigboard.mk +++ b/ports/espressif/boards/crcibernetica-ideaboard/mpconfigboard.mk @@ -6,6 +6,8 @@ IDF_TARGET = esp32 CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 8MB + +CIRCUITPY_BLEIO = 0 CIRCUITPY_ESPCAMERA = 0 # Include these Python libraries in firmware diff --git a/ports/espressif/boards/deneyap_kart/mpconfigboard.mk b/ports/espressif/boards/deneyap_kart/mpconfigboard.mk index 69d81074fa7e..59a5748ab7d9 100644 --- a/ports/espressif/boards/deneyap_kart/mpconfigboard.mk +++ b/ports/espressif/boards/deneyap_kart/mpconfigboard.mk @@ -10,3 +10,8 @@ CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESP_PSRAM_SIZE = 8MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 80m + +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 diff --git a/ports/espressif/boards/deneyap_kart_1a/mpconfigboard.mk b/ports/espressif/boards/deneyap_kart_1a/mpconfigboard.mk index b1b6c9eab4bf..4bc7133c24a9 100644 --- a/ports/espressif/boards/deneyap_kart_1a/mpconfigboard.mk +++ b/ports/espressif/boards/deneyap_kart_1a/mpconfigboard.mk @@ -10,3 +10,8 @@ CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESP_PSRAM_SIZE = 8MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 80m + +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 diff --git a/ports/espressif/boards/deneyap_kart_1a_v2/mpconfigboard.mk b/ports/espressif/boards/deneyap_kart_1a_v2/mpconfigboard.mk index 448ecf3a0747..16686a212013 100644 --- a/ports/espressif/boards/deneyap_kart_1a_v2/mpconfigboard.mk +++ b/ports/espressif/boards/deneyap_kart_1a_v2/mpconfigboard.mk @@ -14,6 +14,11 @@ CIRCUITPY_ESP_PSRAM_SIZE = 8MB CIRCUITPY_ESP_PSRAM_MODE = opi CIRCUITPY_ESP_PSRAM_FREQ = 80m +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + CIRCUITPY_ESPCAMERA = 0 CIRCUITPY_BITMAPFILTER = 0 CIRCUITPY_CODEOP = 0 diff --git a/ports/espressif/boards/deneyap_kart_g/mpconfigboard.mk b/ports/espressif/boards/deneyap_kart_g/mpconfigboard.mk index 46e0fbb3e231..dd721a53f5ad 100644 --- a/ports/espressif/boards/deneyap_kart_g/mpconfigboard.mk +++ b/ports/espressif/boards/deneyap_kart_g/mpconfigboard.mk @@ -7,4 +7,9 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + CIRCUITPY_ESP_USB_SERIAL_JTAG = 1 diff --git a/ports/espressif/boards/deneyap_mini/mpconfigboard.mk b/ports/espressif/boards/deneyap_mini/mpconfigboard.mk index 05d90df6cfc6..764e78f7488d 100644 --- a/ports/espressif/boards/deneyap_mini/mpconfigboard.mk +++ b/ports/espressif/boards/deneyap_mini/mpconfigboard.mk @@ -9,4 +9,10 @@ IDF_TARGET = esp32s2 CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB + +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + CIRCUITPY_ESPCAMERA = 0 diff --git a/ports/espressif/boards/deneyap_mini_v2/mpconfigboard.mk b/ports/espressif/boards/deneyap_mini_v2/mpconfigboard.mk index 9712e8437f77..315c33a88858 100644 --- a/ports/espressif/boards/deneyap_mini_v2/mpconfigboard.mk +++ b/ports/espressif/boards/deneyap_mini_v2/mpconfigboard.mk @@ -13,3 +13,8 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_PSRAM_SIZE = 2MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 80m + +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 diff --git a/ports/espressif/boards/doit_esp32_devkit_v1/mpconfigboard.mk b/ports/espressif/boards/doit_esp32_devkit_v1/mpconfigboard.mk index d10be45d3994..ee24e1131b76 100644 --- a/ports/espressif/boards/doit_esp32_devkit_v1/mpconfigboard.mk +++ b/ports/espressif/boards/doit_esp32_devkit_v1/mpconfigboard.mk @@ -7,3 +7,8 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESPCAMERA = 0 + +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 diff --git a/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/mpconfigboard.mk index 495a505fe761..ed1f5e13b71a 100644 --- a/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/mpconfigboard.mk @@ -7,4 +7,9 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + CIRCUITPY_ESPCAMERA = 0 diff --git a/ports/espressif/boards/espressif_esp32_eye/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32_eye/mpconfigboard.mk index 72eb1db85a01..bd067e9ec1d9 100644 --- a/ports/espressif/boards/espressif_esp32_eye/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32_eye/mpconfigboard.mk @@ -13,6 +13,11 @@ CIRCUITPY_ESP_PSRAM_SIZE = 8MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 40m +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + CIRCUITPY_CANIO = 0 CIRCUITPY_NEOPIXEL_WRITE = 0 CIRCUITPY_PIXELBUF = 0 diff --git a/ports/espressif/boards/espressif_esp32_lyrat/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32_lyrat/mpconfigboard.mk index b1dd2f9f8774..ce0eb3467eeb 100644 --- a/ports/espressif/boards/espressif_esp32_lyrat/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32_lyrat/mpconfigboard.mk @@ -11,4 +11,9 @@ CIRCUITPY_ESP_PSRAM_SIZE = 4MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 40m +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + CIRCUITPY_ESPCAMERA = 0 diff --git a/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/mpconfigboard.mk index 1bbb997a710d..6206612cacc7 100644 --- a/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/mpconfigboard.mk @@ -7,4 +7,9 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + CIRCUITPY_ESP_USB_SERIAL_JTAG = 0 diff --git a/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/mpconfigboard.mk index 75e097afa84b..c795ca6c4981 100644 --- a/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/mpconfigboard.mk @@ -6,3 +6,9 @@ IDF_TARGET = esp32c6 CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB + +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 +CIRCUITPY_AUDIOMP3 = 0 diff --git a/ports/espressif/boards/espressif_esp8684_devkitc_02_n4/board.c b/ports/espressif/boards/espressif_esp8684_devkitc_02_n4/board.c new file mode 100644 index 000000000000..164430c88c92 --- /dev/null +++ b/ports/espressif/boards/espressif_esp8684_devkitc_02_n4/board.c @@ -0,0 +1,29 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "supervisor/board.h" + +// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/espressif/boards/espressif_esp8684_devkitc_02_n4/mpconfigboard.h b/ports/espressif/boards/espressif_esp8684_devkitc_02_n4/mpconfigboard.h new file mode 100644 index 000000000000..6d88ac52d2ae --- /dev/null +++ b/ports/espressif/boards/espressif_esp8684_devkitc_02_n4/mpconfigboard.h @@ -0,0 +1,41 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +// Micropython setup + +#define MICROPY_HW_BOARD_NAME "ESP8684-DevKitC-02-N4" +#define MICROPY_HW_MCU_NAME "ESP32C2" + +#define CIRCUITPY_RGB_STATUS_INVERTED_PWM +#define CIRCUITPY_RGB_STATUS_R (&pin_GPIO0) +#define CIRCUITPY_RGB_STATUS_G (&pin_GPIO1) +#define CIRCUITPY_RGB_STATUS_B (&pin_GPIO8) + +#define DEFAULT_UART_BUS_RX (&pin_GPIO19) +#define DEFAULT_UART_BUS_TX (&pin_GPIO20) + +#define CIRCUITPY_CONSOLE_UART_RX DEFAULT_UART_BUS_RX +#define CIRCUITPY_CONSOLE_UART_TX DEFAULT_UART_BUS_TX diff --git a/ports/espressif/boards/espressif_esp8684_devkitc_02_n4/mpconfigboard.mk b/ports/espressif/boards/espressif_esp8684_devkitc_02_n4/mpconfigboard.mk new file mode 100644 index 000000000000..0925e8de64d2 --- /dev/null +++ b/ports/espressif/boards/espressif_esp8684_devkitc_02_n4/mpconfigboard.mk @@ -0,0 +1,8 @@ +CIRCUITPY_CREATOR_ID = 0x000C303A +CIRCUITPY_CREATION_ID = 0x00C20000 + +IDF_TARGET = esp32c2 + +CIRCUITPY_ESP_FLASH_MODE = qio +CIRCUITPY_ESP_FLASH_FREQ = 60m +CIRCUITPY_ESP_FLASH_SIZE = 4MB diff --git a/ports/espressif/boards/espressif_esp8684_devkitc_02_n4/pins.c b/ports/espressif/boards/espressif_esp8684_devkitc_02_n4/pins.c new file mode 100644 index 000000000000..005342e42561 --- /dev/null +++ b/ports/espressif/boards/espressif_esp8684_devkitc_02_n4/pins.c @@ -0,0 +1,30 @@ +#include "shared-bindings/board/__init__.h" + +STATIC const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_LED_RED), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_IO1), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_LED_GREEN), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_IO2), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_IO3), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_IO4), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_IO5), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_IO6), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_IO7), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_IO8), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_LED_BLUE), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_IO9), MP_ROM_PTR(&pin_GPIO9) }, + { MP_ROM_QSTR(MP_QSTR_IO10), MP_ROM_PTR(&pin_GPIO10) }, + + { MP_ROM_QSTR(MP_QSTR_IO18), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_IO19), MP_ROM_PTR(&pin_GPIO19) }, + { MP_ROM_QSTR(MP_QSTR_IO20), MP_ROM_PTR(&pin_GPIO20) }, + + { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO20) }, + { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO19) }, + + { MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) }, +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); diff --git a/ports/espressif/boards/espressif_esp8684_devkitc_02_n4/sdkconfig b/ports/espressif/boards/espressif_esp8684_devkitc_02_n4/sdkconfig new file mode 100644 index 000000000000..cf803dfc43aa --- /dev/null +++ b/ports/espressif/boards/espressif_esp8684_devkitc_02_n4/sdkconfig @@ -0,0 +1,40 @@ +# +# Espressif IoT Development Framework Configuration +# +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 +# end of Serial flasher config + +# +# Component config +# +# +# Hardware Settings +# +# +# Main XTAL Config +# +CONFIG_XTAL_FREQ_26=y +# CONFIG_XTAL_FREQ_40 is not set +CONFIG_XTAL_FREQ=26 +# end of Main XTAL Config + +# end of Hardware Settings + +# +# ESP System Settings +# +CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 +# end of ESP System Settings + +# +# LWIP +# +CONFIG_LWIP_LOCAL_HOSTNAME="espressif-esp8684" +# end of LWIP + +# end of Component config + +# end of Espressif IoT Development Framework Configuration diff --git a/ports/espressif/boards/lilygo_ttgo_t-oi-plus/mpconfigboard.mk b/ports/espressif/boards/lilygo_ttgo_t-oi-plus/mpconfigboard.mk index 35ac1d44c623..d9bd399cb87a 100644 --- a/ports/espressif/boards/lilygo_ttgo_t-oi-plus/mpconfigboard.mk +++ b/ports/espressif/boards/lilygo_ttgo_t-oi-plus/mpconfigboard.mk @@ -7,4 +7,9 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + CIRCUITPY_ESP_USB_SERIAL_JTAG = 0 diff --git a/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/mpconfigboard.mk b/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/mpconfigboard.mk index 56912e66645a..d24fca347638 100644 --- a/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/mpconfigboard.mk +++ b/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/mpconfigboard.mk @@ -7,4 +7,9 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + CIRCUITPY_ESPCAMERA = 0 diff --git a/ports/espressif/boards/lolin_c3_mini/mpconfigboard.mk b/ports/espressif/boards/lolin_c3_mini/mpconfigboard.mk index 99c910e6d245..f9aa6d8f90a5 100644 --- a/ports/espressif/boards/lolin_c3_mini/mpconfigboard.mk +++ b/ports/espressif/boards/lolin_c3_mini/mpconfigboard.mk @@ -7,4 +7,9 @@ CIRCUITPY_ESP_FLASH_MODE=qio CIRCUITPY_ESP_FLASH_FREQ=80m CIRCUITPY_ESP_FLASH_SIZE=4MB +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + CIRCUITPY_ESP_USB_SERIAL_JTAG = 1 diff --git a/ports/espressif/boards/lolin_c3_pico/mpconfigboard.mk b/ports/espressif/boards/lolin_c3_pico/mpconfigboard.mk index 6778550a2d10..5fd7ec9db22e 100644 --- a/ports/espressif/boards/lolin_c3_pico/mpconfigboard.mk +++ b/ports/espressif/boards/lolin_c3_pico/mpconfigboard.mk @@ -7,6 +7,11 @@ CIRCUITPY_ESP_FLASH_MODE=qio CIRCUITPY_ESP_FLASH_FREQ=80m CIRCUITPY_ESP_FLASH_SIZE=4MB +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + CIRCUITPY_ESP_USB_SERIAL_JTAG = 1 # Include these Python libraries in firmware. diff --git a/ports/espressif/boards/luatos_core_esp32c3/mpconfigboard.mk b/ports/espressif/boards/luatos_core_esp32c3/mpconfigboard.mk index 03f5171a3102..e2c7765a2017 100644 --- a/ports/espressif/boards/luatos_core_esp32c3/mpconfigboard.mk +++ b/ports/espressif/boards/luatos_core_esp32c3/mpconfigboard.mk @@ -7,4 +7,9 @@ CIRCUITPY_ESP_FLASH_MODE=dio CIRCUITPY_ESP_FLASH_FREQ=80m CIRCUITPY_ESP_FLASH_SIZE=4MB +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + CIRCUITPY_ESP_USB_SERIAL_JTAG = 1 diff --git a/ports/espressif/boards/luatos_core_esp32c3_ch343/mpconfigboard.mk b/ports/espressif/boards/luatos_core_esp32c3_ch343/mpconfigboard.mk index 9e777889c0f7..ec1910762913 100644 --- a/ports/espressif/boards/luatos_core_esp32c3_ch343/mpconfigboard.mk +++ b/ports/espressif/boards/luatos_core_esp32c3_ch343/mpconfigboard.mk @@ -7,4 +7,9 @@ CIRCUITPY_ESP_FLASH_MODE=dio CIRCUITPY_ESP_FLASH_FREQ=80m CIRCUITPY_ESP_FLASH_SIZE=4MB +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + CIRCUITPY_ESP_USB_SERIAL_JTAG = 0 diff --git a/ports/espressif/boards/m5stack_atom_echo/mpconfigboard.mk b/ports/espressif/boards/m5stack_atom_echo/mpconfigboard.mk index 8ae3dfce95fa..86991d4c6a36 100644 --- a/ports/espressif/boards/m5stack_atom_echo/mpconfigboard.mk +++ b/ports/espressif/boards/m5stack_atom_echo/mpconfigboard.mk @@ -7,4 +7,9 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + CIRCUITPY_ESPCAMERA = 0 diff --git a/ports/espressif/boards/m5stack_atom_lite/mpconfigboard.mk b/ports/espressif/boards/m5stack_atom_lite/mpconfigboard.mk index ff7db6a63b72..c16c3796ca2e 100644 --- a/ports/espressif/boards/m5stack_atom_lite/mpconfigboard.mk +++ b/ports/espressif/boards/m5stack_atom_lite/mpconfigboard.mk @@ -7,4 +7,9 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + CIRCUITPY_ESPCAMERA = 0 diff --git a/ports/espressif/boards/m5stack_atom_matrix/mpconfigboard.mk b/ports/espressif/boards/m5stack_atom_matrix/mpconfigboard.mk index 298082eb6bed..76e440fe41bc 100644 --- a/ports/espressif/boards/m5stack_atom_matrix/mpconfigboard.mk +++ b/ports/espressif/boards/m5stack_atom_matrix/mpconfigboard.mk @@ -7,4 +7,9 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + CIRCUITPY_ESPCAMERA = 0 diff --git a/ports/espressif/boards/m5stack_atom_u/mpconfigboard.mk b/ports/espressif/boards/m5stack_atom_u/mpconfigboard.mk index 20ef88d601c7..9a84fa2e52fc 100644 --- a/ports/espressif/boards/m5stack_atom_u/mpconfigboard.mk +++ b/ports/espressif/boards/m5stack_atom_u/mpconfigboard.mk @@ -7,4 +7,9 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + CIRCUITPY_ESPCAMERA = 0 diff --git a/ports/espressif/boards/m5stack_stamp_c3/mpconfigboard.mk b/ports/espressif/boards/m5stack_stamp_c3/mpconfigboard.mk index 2f3b62f90fac..482202bee364 100644 --- a/ports/espressif/boards/m5stack_stamp_c3/mpconfigboard.mk +++ b/ports/espressif/boards/m5stack_stamp_c3/mpconfigboard.mk @@ -7,4 +7,9 @@ CIRCUITPY_ESP_FLASH_MODE=qio CIRCUITPY_ESP_FLASH_FREQ=80m CIRCUITPY_ESP_FLASH_SIZE=4MB +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + CIRCUITPY_ESP_USB_SERIAL_JTAG = 0 diff --git a/ports/espressif/boards/m5stack_stick_c/mpconfigboard.mk b/ports/espressif/boards/m5stack_stick_c/mpconfigboard.mk index ce4d23a3039d..b1d5b49417b9 100644 --- a/ports/espressif/boards/m5stack_stick_c/mpconfigboard.mk +++ b/ports/espressif/boards/m5stack_stick_c/mpconfigboard.mk @@ -8,4 +8,9 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESPCAMERA = 0 +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + SRC_C += pmic/axp192/axp192.c diff --git a/ports/espressif/boards/m5stack_stick_c_plus/mpconfigboard.mk b/ports/espressif/boards/m5stack_stick_c_plus/mpconfigboard.mk index 101ef3c2e0ae..b6d3fbe48100 100644 --- a/ports/espressif/boards/m5stack_stick_c_plus/mpconfigboard.mk +++ b/ports/espressif/boards/m5stack_stick_c_plus/mpconfigboard.mk @@ -8,4 +8,9 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESPCAMERA = 0 +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + SRC_C += pmic/axp192/axp192.c diff --git a/ports/espressif/boards/m5stack_timer_camera_x/mpconfigboard.mk b/ports/espressif/boards/m5stack_timer_camera_x/mpconfigboard.mk index e17f5061d9e8..a9979321367c 100644 --- a/ports/espressif/boards/m5stack_timer_camera_x/mpconfigboard.mk +++ b/ports/espressif/boards/m5stack_timer_camera_x/mpconfigboard.mk @@ -10,3 +10,8 @@ CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESP_PSRAM_SIZE = 8MB CIRCUITPY_ESP_PSRAM_MODE = opi CIRCUITPY_ESP_PSRAM_FREQ = 80m + +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 diff --git a/ports/espressif/boards/makergo_esp32c3_supermini/mpconfigboard.mk b/ports/espressif/boards/makergo_esp32c3_supermini/mpconfigboard.mk index d82f62df3779..3d83c635da94 100644 --- a/ports/espressif/boards/makergo_esp32c3_supermini/mpconfigboard.mk +++ b/ports/espressif/boards/makergo_esp32c3_supermini/mpconfigboard.mk @@ -7,4 +7,9 @@ CIRCUITPY_ESP_FLASH_MODE=dio CIRCUITPY_ESP_FLASH_FREQ=80m CIRCUITPY_ESP_FLASH_SIZE=4MB +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + CIRCUITPY_ESP_USB_SERIAL_JTAG = 1 diff --git a/ports/espressif/boards/microdev_micro_c3/mpconfigboard.mk b/ports/espressif/boards/microdev_micro_c3/mpconfigboard.mk index 79821f7c0e5d..fcdafae41223 100644 --- a/ports/espressif/boards/microdev_micro_c3/mpconfigboard.mk +++ b/ports/espressif/boards/microdev_micro_c3/mpconfigboard.mk @@ -7,4 +7,9 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + CIRCUITPY_ESP_USB_SERIAL_JTAG = 1 diff --git a/ports/espressif/boards/seeed_xiao_esp32c3/mpconfigboard.mk b/ports/espressif/boards/seeed_xiao_esp32c3/mpconfigboard.mk index c5b266ca7443..3b787bdf112d 100644 --- a/ports/espressif/boards/seeed_xiao_esp32c3/mpconfigboard.mk +++ b/ports/espressif/boards/seeed_xiao_esp32c3/mpconfigboard.mk @@ -7,4 +7,9 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + CIRCUITPY_ESP_USB_SERIAL_JTAG = 1 diff --git a/ports/espressif/boards/sqfmi_watchy/mpconfigboard.mk b/ports/espressif/boards/sqfmi_watchy/mpconfigboard.mk index 2e933bb35fac..7fcc1a6e635c 100644 --- a/ports/espressif/boards/sqfmi_watchy/mpconfigboard.mk +++ b/ports/espressif/boards/sqfmi_watchy/mpconfigboard.mk @@ -8,4 +8,9 @@ CIRCUITPY_ESP_FLASH_MODE=dio CIRCUITPY_ESP_FLASH_FREQ=40m CIRCUITPY_ESP_FLASH_SIZE=4MB +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + IDF_TARGET = esp32 diff --git a/ports/espressif/boards/sunton_esp32_2424S012/mpconfigboard.mk b/ports/espressif/boards/sunton_esp32_2424S012/mpconfigboard.mk index 716a01084c11..7c58fb169cfd 100644 --- a/ports/espressif/boards/sunton_esp32_2424S012/mpconfigboard.mk +++ b/ports/espressif/boards/sunton_esp32_2424S012/mpconfigboard.mk @@ -7,4 +7,9 @@ CIRCUITPY_ESP_FLASH_MODE=qio CIRCUITPY_ESP_FLASH_FREQ=80m CIRCUITPY_ESP_FLASH_SIZE=4MB +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 + CIRCUITPY_ESP_USB_SERIAL_JTAG = 1 diff --git a/ports/espressif/boards/sunton_esp32_2432S028/mpconfigboard.mk b/ports/espressif/boards/sunton_esp32_2432S028/mpconfigboard.mk index a37e9420d6ae..6254c3c5b0b5 100644 --- a/ports/espressif/boards/sunton_esp32_2432S028/mpconfigboard.mk +++ b/ports/espressif/boards/sunton_esp32_2432S028/mpconfigboard.mk @@ -8,3 +8,8 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESPCAMERA = 0 + +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 diff --git a/ports/espressif/boards/unexpectedmaker_tinypico/mpconfigboard.mk b/ports/espressif/boards/unexpectedmaker_tinypico/mpconfigboard.mk index 80acff0ca490..3c0ceb6f1b33 100644 --- a/ports/espressif/boards/unexpectedmaker_tinypico/mpconfigboard.mk +++ b/ports/espressif/boards/unexpectedmaker_tinypico/mpconfigboard.mk @@ -10,3 +10,8 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_PSRAM_SIZE = 8MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 80m + +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 diff --git a/ports/espressif/boards/unexpectedmaker_tinypico_nano/mpconfigboard.mk b/ports/espressif/boards/unexpectedmaker_tinypico_nano/mpconfigboard.mk index c919aff8aef2..92571c32d2ce 100644 --- a/ports/espressif/boards/unexpectedmaker_tinypico_nano/mpconfigboard.mk +++ b/ports/espressif/boards/unexpectedmaker_tinypico_nano/mpconfigboard.mk @@ -10,3 +10,8 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_PSRAM_SIZE = 8MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 80m + +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 diff --git a/ports/espressif/boards/weact_esp32c6_n4/mpconfigboard.mk b/ports/espressif/boards/weact_esp32c6_n4/mpconfigboard.mk index bdd407ef10d0..90d1d9f243e3 100644 --- a/ports/espressif/boards/weact_esp32c6_n4/mpconfigboard.mk +++ b/ports/espressif/boards/weact_esp32c6_n4/mpconfigboard.mk @@ -6,3 +6,9 @@ IDF_TARGET = esp32c6 CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB + +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 +CIRCUITPY_AUDIOMP3 = 0 diff --git a/ports/espressif/boards/wemos_lolin32_lite/mpconfigboard.mk b/ports/espressif/boards/wemos_lolin32_lite/mpconfigboard.mk index 8e44971792a6..a300f6969f0a 100644 --- a/ports/espressif/boards/wemos_lolin32_lite/mpconfigboard.mk +++ b/ports/espressif/boards/wemos_lolin32_lite/mpconfigboard.mk @@ -8,3 +8,8 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESPCAMERA = 0 + +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 diff --git a/ports/espressif/common-hal/_bleio/Adapter.c b/ports/espressif/common-hal/_bleio/Adapter.c index 36bc618be7d1..c042d6719a60 100644 --- a/ports/espressif/common-hal/_bleio/Adapter.c +++ b/ports/espressif/common-hal/_bleio/Adapter.c @@ -51,16 +51,16 @@ #include "nimble/nimble_port_freertos.h" #include "host/ble_gap.h" #include "host/util/util.h" +#include "services/ans/ble_svc_ans.h" #include "services/gap/ble_svc_gap.h" +#include "services/gatt/ble_svc_gatt.h" +#include "bindings/espidf/__init__.h" #include "common-hal/_bleio/Connection.h" #include "esp_bt.h" #include "esp_nimble_hci.h" - -#if CIRCUITPY_TINYUSB -#include "supervisor/usb.h" -#endif +#include "nvs_flash.h" #if CIRCUITPY_OS_GETENV #include "shared-module/os/__init__.h" @@ -98,11 +98,25 @@ void common_hal_bleio_adapter_set_enabled(bleio_adapter_obj_t *self, bool enable } if (enabled) { - nimble_port_init(); + esp_err_t err = nvs_flash_init(); + if (err == ESP_ERR_NVS_NO_FREE_PAGES || err == ESP_ERR_NVS_NEW_VERSION_FOUND) { + // NVS partition was truncated and needs to be erased + // Retry nvs_flash_init + ESP_ERROR_CHECK(nvs_flash_erase()); + err = nvs_flash_init(); + } + ESP_ERROR_CHECK(err); + + CHECK_ESP_RESULT(nimble_port_init()); + // ble_hs_cfg.reset_cb = blecent_on_reset; ble_hs_cfg.sync_cb = _on_sync; // ble_hs_cfg.store_status_cb = ble_store_util_status_rr; + ble_svc_gap_init(); + ble_svc_gatt_init(); + ble_svc_ans_init(); + #if CIRCUITPY_OS_GETENV char ble_name[1 + MYNEWT_VAL_BLE_SVC_GAP_DEVICE_NAME_MAX_LENGTH]; os_getenv_err_t result = common_hal_os_getenv_str("CIRCUITPY_BLE_NAME", ble_name, sizeof(ble_name)); @@ -127,12 +141,18 @@ void common_hal_bleio_adapter_set_enabled(bleio_adapter_obj_t *self, bool enable // Wait for sync. ulTaskNotifyTake(pdTRUE, pdMS_TO_TICKS(200)); } else { - nimble_port_stop(); + int ret = nimble_port_stop(); + while (xTaskGetHandle("nimble_host") != NULL) { + vTaskDelay(pdMS_TO_TICKS(2)); + } + if (ret == 0) { + nimble_port_deinit(); + } } } bool common_hal_bleio_adapter_get_enabled(bleio_adapter_obj_t *self) { - return xTaskGetHandle("ble") != NULL; + return xTaskGetHandle("nimble_host") != NULL; } bleio_address_obj_t *common_hal_bleio_adapter_get_address(bleio_adapter_obj_t *self) { @@ -201,6 +221,7 @@ static int _scan_event(struct ble_gap_event *event, void *scan_results_in) { disc->data, disc->length_data); } else { + #if MYNEWT_VAL(BLE_EXT_ADV) // Extended advertisement struct ble_gap_ext_disc_desc *disc = &event->ext_disc; shared_module_bleio_scanresults_append(scan_results, @@ -212,6 +233,7 @@ static int _scan_event(struct ble_gap_event *event, void *scan_results_in) { disc->addr.type, disc->data, disc->length_data); + #endif } return 0; @@ -403,6 +425,7 @@ mp_obj_t common_hal_bleio_adapter_connect(bleio_adapter_obj_t *self, bleio_addre return mp_const_none; } +#if MYNEWT_VAL(BLE_EXT_ADV) typedef struct { struct os_mbuf mbuf; struct os_mbuf_pkthdr hdr; @@ -422,25 +445,35 @@ STATIC void _wrap_in_mbuf(const uint8_t *data, uint16_t len, os_mbuf_t *buf) { // is ignored. mbuf->om_omp = NULL; } +#endif static int _advertising_event(struct ble_gap_event *event, void *self_in) { bleio_adapter_obj_t *self = (bleio_adapter_obj_t *)self_in; - - #if CIRCUITPY_VERBOSE_BLE - mp_printf(&mp_plat_print, "Advertising event: %d\n", event->type); - #endif switch (event->type) { case BLE_GAP_EVENT_CONNECT: // Spurious connect events can happen. + + #if !MYNEWT_VAL(BLE_EXT_ADV) + if (event->connect.status == NIMBLE_OK) { + _new_connection(event->connect.conn_handle); + // Set connections objs back to NULL since we have a new + // connection and need a new tuple. + self->connection_objs = NULL; + } + common_hal_bleio_adapter_stop_advertising(self); + #endif + break; case BLE_GAP_EVENT_ADV_COMPLETE: + #if MYNEWT_VAL(BLE_EXT_ADV) if (event->adv_complete.reason == NIMBLE_OK) { _new_connection(event->adv_complete.conn_handle); // Set connections objs back to NULL since we have a new // connection and need a new tuple. self->connection_objs = NULL; } + #endif // Other statuses indicate timeout or preemption. common_hal_bleio_adapter_stop_advertising(self); break; @@ -466,8 +499,6 @@ uint32_t _common_hal_bleio_adapter_start_advertising(bleio_adapter_obj_t *self, } uint32_t rc; - bool extended = advertising_data_len > BLE_ADV_LEGACY_DATA_MAX_LEN || - scan_response_data_len > BLE_ADV_LEGACY_DATA_MAX_LEN; ble_addr_t peer; if (directed_to != NULL) { @@ -484,6 +515,10 @@ uint32_t _common_hal_bleio_adapter_start_advertising(bleio_adapter_obj_t *self, bool high_duty_directed = directed_to != NULL && interval <= 3.5 && timeout <= 1.3; + #if MYNEWT_VAL(BLE_EXT_ADV) + bool extended = advertising_data_len > BLE_ADV_LEGACY_DATA_MAX_LEN || + scan_response_data_len > BLE_ADV_LEGACY_DATA_MAX_LEN; + struct ble_gap_ext_adv_params adv_params = { .connectable = connectable, .scannable = scan_response_data_len > 0, @@ -534,11 +569,40 @@ uint32_t _common_hal_bleio_adapter_start_advertising(bleio_adapter_obj_t *self, } rc = ble_gap_ext_adv_start(0, timeout / 10, 0); + #else + uint8_t conn_mode = connectable ? BLE_GAP_CONN_MODE_UND : BLE_GAP_CONN_MODE_NON; + if (directed_to != NULL) { + conn_mode = BLE_GAP_CONN_MODE_DIR; + } + + struct ble_gap_adv_params adv_params = { + .conn_mode = conn_mode, + .disc_mode = BLE_GAP_DISC_MODE_GEN, + .itvl_min = SEC_TO_UNITS(interval, UNIT_0_625_MS) + 0.5f, + .itvl_max = SEC_TO_UNITS(interval, UNIT_0_625_MS) + 0.5f, + .channel_map = 0, + .filter_policy = BLE_HCI_CONN_FILT_NO_WL, + .high_duty_cycle = high_duty_directed, + }; + + rc = ble_gap_adv_set_data(advertising_data, advertising_data_len); if (rc != NIMBLE_OK) { return rc; } - return NIMBLE_OK; + if (scan_response_data_len > 0) { + rc = ble_gap_adv_rsp_set_data(scan_response_data, scan_response_data_len); + if (rc != NIMBLE_OK) { + return rc; + } + } + rc = ble_gap_adv_start(own_addr_type, directed_to != NULL ? &peer: NULL, + timeout / 10, + &adv_params, + _advertising_event, self); + #endif + + return rc; } STATIC void check_data_fit(size_t data_len, bool connectable) { @@ -595,11 +659,15 @@ void common_hal_bleio_adapter_start_advertising(bleio_adapter_obj_t *self, bool } void common_hal_bleio_adapter_stop_advertising(bleio_adapter_obj_t *self) { + self->user_advertising = false; if (!common_hal_bleio_adapter_get_advertising(self)) { return; } + #if MYNEWT_VAL(BLE_EXT_ADV) int err_code = ble_gap_ext_adv_stop(0); - self->user_advertising = false; + #else + int err_code = ble_gap_adv_stop(); + #endif if ((err_code != NIMBLE_OK) && (err_code != BLE_HS_EALREADY) && diff --git a/ports/espressif/common-hal/_bleio/Characteristic.c b/ports/espressif/common-hal/_bleio/Characteristic.c index 0a787c017dcc..32037231c1dc 100644 --- a/ports/espressif/common-hal/_bleio/Characteristic.c +++ b/ports/espressif/common-hal/_bleio/Characteristic.c @@ -31,12 +31,18 @@ #include "shared-bindings/_bleio/__init__.h" #include "shared-bindings/_bleio/Characteristic.h" +#include "shared-bindings/_bleio/CharacteristicBuffer.h" #include "shared-bindings/_bleio/Descriptor.h" +#include "shared-bindings/_bleio/PacketBuffer.h" #include "shared-bindings/_bleio/Service.h" #include "common-hal/_bleio/Adapter.h" +#include "common-hal/_bleio/Service.h" // #include "common-hal/_bleio/bonding.h" + +STATIC int characteristic_on_ble_gap_evt(struct ble_gap_event *event, void *param); + void common_hal_bleio_characteristic_construct(bleio_characteristic_obj_t *self, bleio_service_obj_t *service, uint16_t handle, bleio_uuid_obj_t *uuid, bleio_characteristic_properties_t props, bleio_attribute_security_mode_t read_perm, bleio_attribute_security_mode_t write_perm, @@ -50,23 +56,42 @@ void common_hal_bleio_characteristic_construct(bleio_characteristic_obj_t *self, self->props = props; self->read_perm = read_perm; self->write_perm = write_perm; + self->observer = NULL; + + // Map CP's property values to Nimble's flag values. + self->flags = 0; + if ((props & CHAR_PROP_BROADCAST) != 0) { + self->flags |= BLE_GATT_CHR_F_BROADCAST; + } + if ((props & CHAR_PROP_INDICATE) != 0) { + self->flags |= BLE_GATT_CHR_F_INDICATE; + } + if ((props & CHAR_PROP_NOTIFY) != 0) { + self->flags |= BLE_GATT_CHR_F_NOTIFY; + } + if ((props & CHAR_PROP_READ) != 0) { + self->flags |= BLE_GATT_CHR_F_READ; + } + if ((props & CHAR_PROP_WRITE) != 0) { + self->flags |= BLE_GATT_CHR_F_WRITE; + } + if ((props & CHAR_PROP_WRITE_NO_RESPONSE) != 0) { + self->flags |= BLE_GATT_CHR_F_WRITE_NO_RSP; + } if (initial_value_bufinfo != NULL) { // Copy the initial value if it's on the heap. Otherwise it's internal and we may not be able // to allocate. self->current_value_len = initial_value_bufinfo->len; if (gc_alloc_possible()) { + self->current_value = m_malloc(max_length); + self->current_value_alloc = max_length; if (gc_nbytes(initial_value_bufinfo->buf) > 0) { - uint8_t *initial_value = m_malloc(self->current_value_len); - self->current_value_alloc = self->current_value_len; - memcpy(initial_value, initial_value_bufinfo->buf, self->current_value_len); - self->current_value = initial_value; - } else { - self->current_value_alloc = 0; - self->current_value = initial_value_bufinfo->buf; + memcpy(self->current_value, initial_value_bufinfo->buf, self->current_value_len); } } else { self->current_value = initial_value_bufinfo->buf; + assert(self->current_value_len == max_length); } } @@ -80,7 +105,9 @@ void common_hal_bleio_characteristic_construct(bleio_characteristic_obj_t *self, self->fixed_length = fixed_length; if (service->is_remote) { + // If the service is remote, we're buffering incoming notifications and indications. self->handle = handle; + ble_event_add_handler_entry(&self->event_handler_entry, characteristic_on_ble_gap_evt, self); } else { common_hal_bleio_service_add_characteristic(self->service, self, initial_value_bufinfo, user_description); } @@ -216,6 +243,89 @@ void common_hal_bleio_characteristic_set_value(bleio_characteristic_obj_t *self, } } +// Used when we're the client. +STATIC int characteristic_on_ble_gap_evt(struct ble_gap_event *event, void *param) { + bleio_characteristic_obj_t *self = (bleio_characteristic_obj_t *)param; + switch (event->type) { + case BLE_GAP_EVENT_NOTIFY_RX: { + // A remote service wrote to this characteristic. + + // Must be a notification, and event handle must match the handle for my characteristic. + if (event->notify_rx.indication == 0 && + event->notify_rx.attr_handle == self->handle) { + if (self->observer == mp_const_none) { + return 0; + } + const struct os_mbuf *m = event->notify_rx.om; + uint16_t packet_len = OS_MBUF_PKTLEN(m); + uint8_t temp_full_packet[packet_len]; + int rc = ble_hs_mbuf_to_flat(m, temp_full_packet, packet_len, NULL); + if (rc != 0) { + return rc; + } + if (mp_obj_is_type(self->observer, &bleio_characteristic_buffer_type)) { + bleio_characteristic_buffer_extend(MP_OBJ_FROM_PTR(self->observer), temp_full_packet, packet_len); + } else if (mp_obj_is_type(self->observer, &bleio_packet_buffer_type)) { + bleio_packet_buffer_extend(MP_OBJ_FROM_PTR(self->observer), event->notify_rx.conn_handle, temp_full_packet, packet_len); + } + } + break; + } + case BLE_GAP_EVENT_SUBSCRIBE: + break; + default: + return 0; + break; + } + return 0; +} + +// Used when we're the server. +int bleio_characteristic_access_cb(uint16_t conn_handle, uint16_t attr_handle, + struct ble_gatt_access_ctxt *ctxt, void *arg) { + bleio_characteristic_obj_t *self = (bleio_characteristic_obj_t *)arg; + int rc; + + switch (ctxt->op) { + case BLE_GATT_ACCESS_OP_READ_CHR: + if (attr_handle == self->handle) { + rc = os_mbuf_append(ctxt->om, + self->current_value, + self->current_value_len); + return rc == 0 ? 0 : BLE_ATT_ERR_INSUFFICIENT_RES; + } + return BLE_ATT_ERR_UNLIKELY; + + case BLE_GATT_ACCESS_OP_WRITE_CHR: + if (attr_handle == self->handle) { + uint16_t om_len = OS_MBUF_PKTLEN(ctxt->om); + if (om_len > self->max_length || (self->fixed_length && om_len != self->max_length)) { + return BLE_ATT_ERR_INVALID_ATTR_VALUE_LEN; + } + self->current_value_len = om_len; + + rc = ble_hs_mbuf_to_flat(ctxt->om, self->current_value, om_len, NULL); + if (rc != 0) { + return rc; + } + if (self->observer != mp_const_none) { + if (mp_obj_is_type(self->observer, &bleio_characteristic_buffer_type)) { + bleio_characteristic_buffer_extend(MP_OBJ_FROM_PTR(self->observer), self->current_value, self->current_value_len); + } else if (mp_obj_is_type(self->observer, &bleio_packet_buffer_type)) { + bleio_packet_buffer_extend(MP_OBJ_FROM_PTR(self->observer), conn_handle, self->current_value, self->current_value_len); + } + } + return rc; + } + return BLE_ATT_ERR_UNLIKELY; + + default: + return BLE_ATT_ERR_UNLIKELY; + } + + return BLE_ATT_ERR_UNLIKELY; +} + bleio_uuid_obj_t *common_hal_bleio_characteristic_get_uuid(bleio_characteristic_obj_t *self) { return self->uuid; } @@ -226,10 +336,19 @@ bleio_characteristic_properties_t common_hal_bleio_characteristic_get_properties void common_hal_bleio_characteristic_add_descriptor(bleio_characteristic_obj_t *self, bleio_descriptor_obj_t *descriptor) { - // TODO: Implement this. - + size_t i = self->descriptor_list->len; mp_obj_list_append(MP_OBJ_FROM_PTR(self->descriptor_list), MP_OBJ_FROM_PTR(descriptor)); + + descriptor->dsc_def = &self->dsc_defs[i]; + struct ble_gatt_dsc_def *dsc_def = descriptor->dsc_def; + dsc_def->uuid = &descriptor->uuid->nimble_ble_uuid.u; + dsc_def->att_flags = descriptor->flags; + dsc_def->min_key_size = 16; + dsc_def->access_cb = bleio_descriptor_access_cb; + dsc_def->arg = descriptor; + + bleio_service_readd(self->service); } void common_hal_bleio_characteristic_set_cccd(bleio_characteristic_obj_t *self, bool notify, bool indicate) { @@ -253,3 +372,11 @@ void common_hal_bleio_characteristic_set_cccd(bleio_characteristic_obj_t *self, xTaskNotifyWait(0, 0, (uint32_t *)&error_code, 200); CHECK_BLE_ERROR(error_code); } + +void bleio_characteristic_set_observer(bleio_characteristic_obj_t *self, mp_obj_t observer) { + self->observer = observer; +} + +void bleio_characteristic_clear_observer(bleio_characteristic_obj_t *self) { + self->observer = mp_const_none; +} diff --git a/ports/espressif/common-hal/_bleio/Characteristic.h b/ports/espressif/common-hal/_bleio/Characteristic.h index ed812a9805fb..2b503737b1e7 100644 --- a/ports/espressif/common-hal/_bleio/Characteristic.h +++ b/ports/espressif/common-hal/_bleio/Characteristic.h @@ -25,20 +25,25 @@ * THE SOFTWARE. */ -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_CHARACTERISTIC_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_CHARACTERISTIC_H +#pragma once #include "shared-bindings/_bleio/Attribute.h" #include "common-hal/_bleio/Descriptor.h" #include "shared-module/_bleio/Characteristic.h" +#include "common-hal/_bleio/ble_events.h" #include "common-hal/_bleio/Service.h" #include "common-hal/_bleio/UUID.h" +#include "host/ble_gatt.h" + +#define MAX_DESCRIPTORS 2 + typedef struct _bleio_characteristic_obj { mp_obj_base_t base; // Will be MP_OBJ_NULL before being assigned to a Service. bleio_service_obj_t *service; bleio_uuid_obj_t *uuid; + mp_obj_t observer; uint8_t *current_value; uint16_t current_value_len; // Our internal allocation length. If > 0, then current_value is managed by @@ -47,6 +52,7 @@ typedef struct _bleio_characteristic_obj { uint16_t max_length; uint16_t def_handle; uint16_t handle; + ble_gatt_chr_flags flags; bleio_characteristic_properties_t props; bleio_attribute_security_mode_t read_perm; bleio_attribute_security_mode_t write_perm; @@ -54,7 +60,17 @@ typedef struct _bleio_characteristic_obj { uint16_t user_desc_handle; uint16_t cccd_handle; uint16_t sccd_handle; + ble_event_handler_entry_t event_handler_entry; + // The actual structure is managed by the service because it needs to have + // an array. + struct ble_gatt_chr_def *chr_def; + struct ble_gatt_dsc_def dsc_defs[MAX_DESCRIPTORS + 1]; + bool fixed_length; } bleio_characteristic_obj_t; -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_CHARACTERISTIC_H +int bleio_characteristic_access_cb(uint16_t conn_handle, uint16_t attr_handle, + struct ble_gatt_access_ctxt *ctxt, void *arg); + +void bleio_characteristic_set_observer(bleio_characteristic_obj_t *self, mp_obj_t observer); +void bleio_characteristic_clear_observer(bleio_characteristic_obj_t *self); diff --git a/ports/espressif/common-hal/_bleio/CharacteristicBuffer.c b/ports/espressif/common-hal/_bleio/CharacteristicBuffer.c index 6838f1a8ff58..44c3f205c393 100644 --- a/ports/espressif/common-hal/_bleio/CharacteristicBuffer.c +++ b/ports/espressif/common-hal/_bleio/CharacteristicBuffer.c @@ -41,43 +41,18 @@ #include "common-hal/_bleio/ble_events.h" -STATIC int characteristic_buffer_on_ble_evt(struct ble_gap_event *event, void *param) { - bleio_characteristic_buffer_obj_t *self = (bleio_characteristic_buffer_obj_t *)param; - switch (event->type) { - case BLE_GAP_EVENT_NOTIFY_RX: { - // A remote service wrote to this characteristic. - - // Must be a notification, and event handle must match the handle for my characteristic. - if (event->notify_rx.indication == 0 && - event->notify_rx.attr_handle == self->characteristic->handle) { - const struct os_mbuf *m = event->notify_rx.om; - while (m != NULL) { - const uint8_t *data = m->om_data; - uint16_t len = m->om_len; - if (self->watch_for_interrupt_char) { - for (uint16_t i = 0; i < len; i++) { - if (data[i] == mp_interrupt_char) { - mp_sched_keyboard_interrupt(); - } else { - ringbuf_put(&self->ringbuf, data[i]); - } - } - } else { - ringbuf_put_n(&self->ringbuf, data, len); - } - m = SLIST_NEXT(m, om_next); - } +void bleio_characteristic_buffer_extend(bleio_characteristic_buffer_obj_t *self, const uint8_t *data, size_t len) { + if (self->watch_for_interrupt_char) { + for (uint16_t i = 0; i < len; i++) { + if (data[i] == mp_interrupt_char) { + mp_sched_keyboard_interrupt(); + } else { + ringbuf_put(&self->ringbuf, data[i]); } - break; } - default: - #if CIRCUITPY_VERBOSE_BLE - mp_printf(&mp_plat_print, "Unhandled gap event %d\n", event->type); - #endif - return 0; - break; + } else { + ringbuf_put_n(&self->ringbuf, data, len); } - return 0; } void _common_hal_bleio_characteristic_buffer_construct(bleio_characteristic_buffer_obj_t *self, @@ -90,12 +65,7 @@ void _common_hal_bleio_characteristic_buffer_construct(bleio_characteristic_buff self->timeout_ms = timeout * 1000; self->watch_for_interrupt_char = watch_for_interrupt_char; ringbuf_init(&self->ringbuf, buffer, buffer_size); - - if (static_handler_entry != NULL) { - ble_event_add_handler_entry((ble_event_handler_entry_t *)static_handler_entry, characteristic_buffer_on_ble_evt, self); - } else { - ble_event_add_handler(characteristic_buffer_on_ble_evt, self); - } + bleio_characteristic_set_observer(characteristic, self); } // Assumes that timeout and buffer_size have been validated before call. @@ -141,11 +111,12 @@ bool common_hal_bleio_characteristic_buffer_deinited(bleio_characteristic_buffer } void common_hal_bleio_characteristic_buffer_deinit(bleio_characteristic_buffer_obj_t *self) { - if (!common_hal_bleio_characteristic_buffer_deinited(self)) { - ble_event_remove_handler(characteristic_buffer_on_ble_evt, self); - self->characteristic = NULL; - ringbuf_deinit(&self->ringbuf); + if (common_hal_bleio_characteristic_buffer_deinited(self)) { + return; } + bleio_characteristic_clear_observer(self->characteristic); + self->characteristic = NULL; + ringbuf_deinit(&self->ringbuf); } bool common_hal_bleio_characteristic_buffer_connected(bleio_characteristic_buffer_obj_t *self) { diff --git a/ports/espressif/common-hal/_bleio/CharacteristicBuffer.h b/ports/espressif/common-hal/_bleio/CharacteristicBuffer.h index 30c3c426e61a..e22b3cd30286 100644 --- a/ports/espressif/common-hal/_bleio/CharacteristicBuffer.h +++ b/ports/espressif/common-hal/_bleio/CharacteristicBuffer.h @@ -24,8 +24,7 @@ * THE SOFTWARE. */ -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_CHARACTERISTICBUFFER_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_CHARACTERISTICBUFFER_H +#pragma once #include @@ -41,4 +40,5 @@ typedef struct { bool watch_for_interrupt_char; } bleio_characteristic_buffer_obj_t; -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_CHARACTERISTICBUFFER_H + +void bleio_characteristic_buffer_extend(bleio_characteristic_buffer_obj_t *self, const uint8_t *buffer, size_t len); diff --git a/ports/espressif/common-hal/_bleio/Connection.h b/ports/espressif/common-hal/_bleio/Connection.h index 73bfeff19ca2..0f3029267f26 100644 --- a/ports/espressif/common-hal/_bleio/Connection.h +++ b/ports/espressif/common-hal/_bleio/Connection.h @@ -25,8 +25,7 @@ * THE SOFTWARE. */ -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_CONNECTION_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_CONNECTION_H +#pragma once #include @@ -88,5 +87,3 @@ int bleio_connection_event_cb(struct ble_gap_event *event, void *connection_in); uint16_t bleio_connection_get_conn_handle(bleio_connection_obj_t *self); mp_obj_t bleio_connection_new_from_internal(bleio_connection_internal_t *connection); bleio_connection_internal_t *bleio_conn_handle_to_connection(uint16_t conn_handle); - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_CONNECTION_H diff --git a/ports/espressif/common-hal/_bleio/Descriptor.c b/ports/espressif/common-hal/_bleio/Descriptor.c index e72ec7d9e2a1..775a55d90f8e 100644 --- a/ports/espressif/common-hal/_bleio/Descriptor.c +++ b/ports/espressif/common-hal/_bleio/Descriptor.c @@ -26,6 +26,7 @@ * THE SOFTWARE. */ +#include "py/obj.h" #include "py/runtime.h" #include "shared-bindings/_bleio/__init__.h" @@ -94,3 +95,34 @@ void common_hal_bleio_descriptor_set_value(bleio_descriptor_obj_t *self, mp_buff } } + +int bleio_descriptor_access_cb(uint16_t conn_handle, uint16_t attr_handle, + struct ble_gatt_access_ctxt *ctxt, void *arg) { + bleio_descriptor_obj_t *self = arg; + const ble_uuid_t *uuid; + int rc; + + switch (ctxt->op) { + case BLE_GATT_ACCESS_OP_READ_DSC: + uuid = ctxt->dsc->uuid; + if (ble_uuid_cmp(uuid, &self->uuid->nimble_ble_uuid.u) == 0) { + mp_buffer_info_t bufinfo; + if (!mp_get_buffer(self->initial_value, &bufinfo, MP_BUFFER_READ)) { + return BLE_ATT_ERR_UNLIKELY; + } + rc = os_mbuf_append(ctxt->om, + bufinfo.buf, + bufinfo.len); + return rc == 0 ? 0 : BLE_ATT_ERR_INSUFFICIENT_RES; + } + return BLE_ATT_ERR_UNLIKELY; + + case BLE_GATT_ACCESS_OP_WRITE_DSC: + return BLE_ATT_ERR_UNLIKELY; + + default: + return BLE_ATT_ERR_UNLIKELY; + } + + return BLE_ATT_ERR_UNLIKELY; +} diff --git a/ports/espressif/common-hal/_bleio/Descriptor.h b/ports/espressif/common-hal/_bleio/Descriptor.h index e52251ce8248..1928c5d34fc4 100644 --- a/ports/espressif/common-hal/_bleio/Descriptor.h +++ b/ports/espressif/common-hal/_bleio/Descriptor.h @@ -26,8 +26,7 @@ * THE SOFTWARE. */ -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_DESCRIPTOR_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_DESCRIPTOR_H +#pragma once #include "py/obj.h" @@ -47,9 +46,11 @@ typedef struct _bleio_descriptor_obj { uint16_t max_length; bool fixed_length; uint16_t handle; - struct ble_gatt_dsc_def def; + struct ble_gatt_dsc_def *dsc_def; + uint8_t flags; bleio_attribute_security_mode_t read_perm; bleio_attribute_security_mode_t write_perm; } bleio_descriptor_obj_t; -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_DESCRIPTOR_H +int bleio_descriptor_access_cb(uint16_t conn_handle, uint16_t attr_handle, + struct ble_gatt_access_ctxt *ctxt, void *arg); diff --git a/ports/espressif/common-hal/_bleio/PacketBuffer.c b/ports/espressif/common-hal/_bleio/PacketBuffer.c index f6ef4128552b..bb7af0e6f345 100644 --- a/ports/espressif/common-hal/_bleio/PacketBuffer.c +++ b/ports/espressif/common-hal/_bleio/PacketBuffer.c @@ -43,8 +43,11 @@ #include "host/ble_att.h" -STATIC void write_to_ringbuf(bleio_packet_buffer_obj_t *self, const struct os_mbuf *mbuf) { - size_t len = OS_MBUF_PKTLEN(mbuf); +void bleio_packet_buffer_extend(bleio_packet_buffer_obj_t *self, uint16_t conn_handle, const uint8_t *data, size_t len) { + if (self->conn_handle != conn_handle) { + return; + } + if (len + sizeof(uint16_t) > ringbuf_size(&self->ringbuf)) { // This shouldn't happen but can if our buffer size was much smaller than // the writes the client actually makes. @@ -60,10 +63,7 @@ STATIC void write_to_ringbuf(bleio_packet_buffer_obj_t *self, const struct os_mb // set an overflow flag? } ringbuf_put_n(&self->ringbuf, (uint8_t *)&len, sizeof(uint16_t)); - while (mbuf != NULL) { - ringbuf_put_n(&self->ringbuf, mbuf->om_data, mbuf->om_len); - mbuf = SLIST_NEXT(mbuf, om_next); - } + ringbuf_put_n(&self->ringbuf, data, len); } STATIC int packet_buffer_on_ble_client_evt(struct ble_gap_event *event, void *param); @@ -97,7 +97,7 @@ STATIC int queue_next_write(bleio_packet_buffer_obj_t *self) { self->characteristic->handle, self->outgoing[self->pending_index], self->pending_size); - // We don't set packet_queued because we NimBLE will buffer our + // We don't set packet_queued because NimBLE will buffer our // outgoing packets. } else { err_code = ble_gattc_write_flat(conn_handle, @@ -108,10 +108,33 @@ STATIC int queue_next_write(bleio_packet_buffer_obj_t *self) { self->pending_index = (self->pending_index + 1) % 2; self->packet_queued = true; } - self->pending_size = 0; } else { - // TODO: Notify because we're the server. + // Allocate an mbuf because the functions below consume it. + struct os_mbuf *om = ble_hs_mbuf_from_flat(self->outgoing[self->pending_index], self->pending_size); + if (om == NULL) { + return BLE_HS_ENOMEM; + } + size_t pending_size = self->pending_size; + self->pending_size = 0; + if (self->write_type == CHAR_PROP_NOTIFY) { + err_code = ble_gatts_notify_custom(conn_handle, self->characteristic->handle, om); + } else if (self->write_type == CHAR_PROP_INDICATE) { + err_code = ble_gatts_indicate_custom(conn_handle, self->characteristic->handle, om); + self->pending_index = (self->pending_index + 1) % 2; + self->packet_queued = true; + } else { + // Placeholder error. + err_code = BLE_HS_EUNKNOWN; + } + // Undo our queueing if it fails. We need to do it early because we may recurse back + // to here from the above ble_gatts functions. + if (err_code != NIMBLE_OK) { + self->pending_index = (self->pending_index + 1) % 2; + self->packet_queued = false; + self->pending_size = pending_size; + } } + self->pending_size = 0; if (err_code != NIMBLE_OK) { // On error, simply skip updating the pending buffers so that the next HVC or WRITE // complete event triggers another attempt. @@ -121,28 +144,33 @@ STATIC int queue_next_write(bleio_packet_buffer_obj_t *self) { return NIMBLE_OK; } +// This is called from the nimble task. *Not* CircuitPython's. STATIC int packet_buffer_on_ble_client_evt(struct ble_gap_event *event, void *param) { bleio_packet_buffer_obj_t *self = (bleio_packet_buffer_obj_t *)param; if (event->type == BLE_GAP_EVENT_DISCONNECT && self->conn_handle == event->disconnect.conn.conn_handle) { self->conn_handle = BLEIO_HANDLE_INVALID; + return false; } - - switch (event->type) { - case BLE_GAP_EVENT_NOTIFY_RX: { - if (event->notify_rx.conn_handle != self->conn_handle) { + if (event->type == BLE_GAP_EVENT_SUBSCRIBE) { + if (self->conn_handle == BLEIO_HANDLE_INVALID && (event->subscribe.cur_notify == 1 || event->subscribe.cur_indicate == 1)) { + self->conn_handle = event->subscribe.conn_handle; + } else if (self->conn_handle == event->subscribe.conn_handle && event->subscribe.cur_notify == 0 && event->subscribe.cur_indicate == 0) { + self->conn_handle = BLEIO_HANDLE_INVALID; + } + return false; + } + if (event->type == BLE_GAP_EVENT_NOTIFY_TX) { + if (self->conn_handle == event->notify_tx.conn_handle && self->characteristic->handle == event->notify_tx.attr_handle) { + if (event->notify_tx.indication == 1 && event->notify_tx.status == 0) { + // The indicate has been queued. return false; } - // Must be a notification, and event handle must match the handle for my characteristic. - if (event->notify_rx.attr_handle == self->characteristic->handle) { - write_to_ringbuf(self, event->notify_rx.om); - } - break; - } - default: + queue_next_write(self); return false; - break; + } } - return true; + // Notify and indicate events are managed by the characteristic. + return false; } void _common_hal_bleio_packet_buffer_construct( @@ -176,12 +204,13 @@ void _common_hal_bleio_packet_buffer_construct( self->outgoing[0] = outgoing_buffer1; self->outgoing[1] = outgoing_buffer2; + if (static_handler_entry != NULL) { + ble_event_add_handler_entry((ble_event_handler_entry_t *)static_handler_entry, packet_buffer_on_ble_client_evt, self); + } else { + ble_event_add_handler(packet_buffer_on_ble_client_evt, self); + } + bleio_characteristic_set_observer(self->characteristic, self); if (self->client) { - if (static_handler_entry != NULL) { - ble_event_add_handler_entry((ble_event_handler_entry_t *)static_handler_entry, packet_buffer_on_ble_client_evt, self); - } else { - ble_event_add_handler(packet_buffer_on_ble_client_evt, self); - } if (incoming) { // Prefer notify if both are available. if (incoming & CHAR_PROP_NOTIFY) { @@ -197,7 +226,12 @@ void _common_hal_bleio_packet_buffer_construct( } } } else { - // TODO: Setup for server. + if (outgoing) { + self->write_type = CHAR_PROP_NOTIFY; + if (outgoing & CHAR_PROP_INDICATE) { + self->write_type = CHAR_PROP_INDICATE; + } + } } } @@ -219,7 +253,8 @@ void common_hal_bleio_packet_buffer_construct( size_t incoming_buffer_size = 0; uint32_t *incoming_buffer = NULL; if (incoming) { - ringbuf_init(&self->ringbuf, (uint8_t *)incoming_buffer, incoming_buffer_size); + incoming_buffer_size = buffer_size * (sizeof(uint16_t) + max_packet_size); + incoming_buffer = m_malloc(incoming_buffer_size); } uint32_t *outgoing1 = NULL; @@ -228,10 +263,9 @@ void common_hal_bleio_packet_buffer_construct( outgoing1 = m_malloc(max_packet_size); // Only allocate the second buffer if we are doing writes with responses. // Without responses, we just write as quickly as we can. - if (outgoing == CHAR_PROP_WRITE) { + if (outgoing == CHAR_PROP_WRITE || outgoing == CHAR_PROP_INDICATE) { outgoing2 = m_malloc(max_packet_size); } - } _common_hal_bleio_packet_buffer_construct(self, characteristic, incoming_buffer, incoming_buffer_size, @@ -411,8 +445,10 @@ bool common_hal_bleio_packet_buffer_deinited(bleio_packet_buffer_obj_t *self) { } void common_hal_bleio_packet_buffer_deinit(bleio_packet_buffer_obj_t *self) { - if (!common_hal_bleio_packet_buffer_deinited(self)) { - ble_event_remove_handler(packet_buffer_on_ble_client_evt, self); - ringbuf_deinit(&self->ringbuf); + if (common_hal_bleio_packet_buffer_deinited(self)) { + return; } + bleio_characteristic_clear_observer(self->characteristic); + ble_event_remove_handler(packet_buffer_on_ble_client_evt, self); + ringbuf_deinit(&self->ringbuf); } diff --git a/ports/espressif/common-hal/_bleio/PacketBuffer.h b/ports/espressif/common-hal/_bleio/PacketBuffer.h index 6ecc1a69b22c..e749e94535e5 100644 --- a/ports/espressif/common-hal/_bleio/PacketBuffer.h +++ b/ports/espressif/common-hal/_bleio/PacketBuffer.h @@ -24,8 +24,7 @@ * THE SOFTWARE. */ -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_PACKETBUFFER_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_PACKETBUFFER_H +#pragma once #include "py/ringbuf.h" #include "shared-bindings/_bleio/Characteristic.h" @@ -49,4 +48,4 @@ typedef struct { bool packet_queued; } bleio_packet_buffer_obj_t; -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_PACKETBUFFER_H +void bleio_packet_buffer_extend(bleio_packet_buffer_obj_t *self, uint16_t conn_handle, const uint8_t *buffer, size_t len); diff --git a/ports/espressif/common-hal/_bleio/Service.c b/ports/espressif/common-hal/_bleio/Service.c index 7aff2905e3fe..0ffdb0319bd3 100644 --- a/ports/espressif/common-hal/_bleio/Service.c +++ b/ports/espressif/common-hal/_bleio/Service.c @@ -41,15 +41,30 @@ uint32_t _common_hal_bleio_service_construct(bleio_service_obj_t *self, bleio_uu self->is_remote = false; self->connection = NULL; self->is_secondary = is_secondary; + + self->service_def.type = is_secondary? BLE_GATT_SVC_TYPE_SECONDARY : BLE_GATT_SVC_TYPE_PRIMARY; + self->service_def.uuid = &uuid->nimble_ble_uuid.u; + self->service_def.includes = NULL; + self->service_def.characteristics = self->chr_defs; + self->next_svc_type = 0; + + // Don't add the service yet because we don't have any characteristics. return 0; } void common_hal_bleio_service_construct(bleio_service_obj_t *self, bleio_uuid_obj_t *uuid, bool is_secondary) { - mp_raise_NotImplementedError(NULL); _common_hal_bleio_service_construct(self, uuid, is_secondary, mp_obj_new_list(0, NULL)); } +void common_hal_bleio_service_deinit(bleio_service_obj_t *self) { + // Delete the old version of the service. + if (self->characteristic_list->len > 1) { + ble_gatts_delete_svc(&self->uuid->nimble_ble_uuid.u); + } + self->service_def.type = 0; +} + void bleio_service_from_connection(bleio_service_obj_t *self, mp_obj_t connection) { self->handle = BLEIO_HANDLE_INVALID; self->uuid = NULL; @@ -75,14 +90,37 @@ bool common_hal_bleio_service_get_is_secondary(bleio_service_obj_t *self) { return self->is_secondary; } +// Used by characteristics to update their descriptors. +void bleio_service_readd(bleio_service_obj_t *self) { + // Delete the old version of the service. + if (self->characteristic_list->len > 1) { + ble_gatts_delete_svc(&self->uuid->nimble_ble_uuid.u); + } + CHECK_NIMBLE_ERROR(ble_gatts_add_dynamic_svcs(&self->service_def)); +} + + void common_hal_bleio_service_add_characteristic(bleio_service_obj_t *self, bleio_characteristic_obj_t *characteristic, mp_buffer_info_t *initial_value_bufinfo, const char *user_description) { + mp_obj_list_append(self->characteristic_list, MP_OBJ_FROM_PTR(characteristic)); - #if CIRCUITPY_VERBOSE_BLE - mp_printf(&mp_plat_print, "Char handle %x user %x cccd %x sccd %x\n", characteristic->handle, characteristic->user_desc_handle, characteristic->cccd_handle, characteristic->sccd_handle); - #endif + // Delete the old version of the service. + if (self->characteristic_list->len > 1) { + ble_gatts_delete_svc(&self->uuid->nimble_ble_uuid.u); + } + size_t i = self->characteristic_list->len - 1; + self->chr_defs[i].uuid = &characteristic->uuid->nimble_ble_uuid.u; + self->chr_defs[i].access_cb = bleio_characteristic_access_cb; + self->chr_defs[i].arg = characteristic; + self->chr_defs[i].descriptors = characteristic->dsc_defs; + self->chr_defs[i].flags = characteristic->flags; + self->chr_defs[i].min_key_size = 16; + self->chr_defs[i].val_handle = &characteristic->handle; + self->chr_defs[i].cpfd = NULL; + self->chr_defs[i + 1].uuid = NULL; + characteristic->chr_def = &self->chr_defs[i]; - mp_obj_list_append(self->characteristic_list, MP_OBJ_FROM_PTR(characteristic)); + CHECK_NIMBLE_ERROR(ble_gatts_add_dynamic_svcs(&self->service_def)); } diff --git a/ports/espressif/common-hal/_bleio/Service.h b/ports/espressif/common-hal/_bleio/Service.h index 6c1688df307e..a61dae77315a 100644 --- a/ports/espressif/common-hal/_bleio/Service.h +++ b/ports/espressif/common-hal/_bleio/Service.h @@ -25,12 +25,15 @@ * THE SOFTWARE. */ -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_SERVICE_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_SERVICE_H +#pragma once #include "py/objlist.h" #include "common-hal/_bleio/UUID.h" +#define MAX_CHARACTERISTIC_COUNT 10 + +#include "host/ble_gatt.h" + typedef struct bleio_service_obj { mp_obj_base_t base; // Handle for the local service. @@ -46,8 +49,11 @@ typedef struct bleio_service_obj { // Range of attribute handles of this remote service. uint16_t start_handle; uint16_t end_handle; + struct ble_gatt_svc_def service_def; + // Include a spot for terminating the service def array. + uint8_t next_svc_type; + struct ble_gatt_chr_def chr_defs[MAX_CHARACTERISTIC_COUNT + 1]; } bleio_service_obj_t; void bleio_service_from_connection(bleio_service_obj_t *self, mp_obj_t connection); - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_SERVICE_H +void bleio_service_readd(bleio_service_obj_t *self); diff --git a/ports/espressif/common-hal/_bleio/UUID.h b/ports/espressif/common-hal/_bleio/UUID.h index 166088ed96b1..9a40d466fc88 100644 --- a/ports/espressif/common-hal/_bleio/UUID.h +++ b/ports/espressif/common-hal/_bleio/UUID.h @@ -26,8 +26,7 @@ * THE SOFTWARE. */ -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_UUID_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_UUID_H +#pragma once #include "py/obj.h" @@ -45,5 +44,3 @@ typedef struct { void bleio_uuid_construct_from_nrf_ble_uuid(bleio_uuid_obj_t *self, ble_uuid_t *nrf_uuid); void bleio_uuid_convert_to_nrf_ble_uuid(bleio_uuid_obj_t *self, ble_uuid_t *nrf_uuid); - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_UUID_H diff --git a/ports/espressif/common-hal/_bleio/__init__.h b/ports/espressif/common-hal/_bleio/__init__.h index 41e9792603cc..097f6a1b2284 100644 --- a/ports/espressif/common-hal/_bleio/__init__.h +++ b/ports/espressif/common-hal/_bleio/__init__.h @@ -24,10 +24,9 @@ * THE SOFTWARE. */ -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_INIT_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_INIT_H +#pragma once -#include "FreeRTOS.h" +#include "freertos/FreeRTOS.h" // IWYU pragma: keep; for BaseType_t void bleio_background(void); @@ -60,5 +59,3 @@ void check_notify(BaseType_t result); #define UNIT_1_MS (1000) #define UNIT_1_25_MS (1250) #define UNIT_10_MS (10000) - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_INIT_H diff --git a/ports/espressif/common-hal/_bleio/ble_events.h b/ports/espressif/common-hal/_bleio/ble_events.h index cc6c9e92f789..fd81f83b8f56 100644 --- a/ports/espressif/common-hal/_bleio/ble_events.h +++ b/ports/espressif/common-hal/_bleio/ble_events.h @@ -26,8 +26,7 @@ * THE SOFTWARE. */ -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL__BLEIO_BLE_EVENTS_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL__BLEIO_BLE_EVENTS_H +#pragma once #include @@ -48,5 +47,3 @@ void ble_event_remove_handler(ble_gap_event_fn *func, void *param); void ble_event_add_handler_entry(ble_event_handler_entry_t *entry, ble_gap_event_fn *func, void *param); int ble_event_run_handlers(struct ble_gap_event *event); - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL__BLEIO_BLE_EVENTS_H diff --git a/ports/espressif/common-hal/analogbufio/BufferedIn.c b/ports/espressif/common-hal/analogbufio/BufferedIn.c index 5c3a0c097712..6d9270eb2031 100644 --- a/ports/espressif/common-hal/analogbufio/BufferedIn.c +++ b/ports/espressif/common-hal/analogbufio/BufferedIn.c @@ -56,7 +56,7 @@ #elif defined(CONFIG_IDF_TARGET_ESP32S2) #define ADC_RESULT_BYTE 2 #define ADC_CONV_LIMIT_EN 0 -#elif defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6) || defined(CONFIG_IDF_TARGET_ESP32H2) +#elif defined(CONFIG_IDF_TARGET_ESP32C2) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6) || defined(CONFIG_IDF_TARGET_ESP32H2) #define ADC_RESULT_BYTE 4 #define ADC_CONV_LIMIT_EN 0 #elif defined(CONFIG_IDF_TARGET_ESP32S3) diff --git a/ports/espressif/common-hal/analogio/AnalogIn.c b/ports/espressif/common-hal/analogio/AnalogIn.c index 51ee5a9cb27b..7ece8b164927 100644 --- a/ports/espressif/common-hal/analogio/AnalogIn.c +++ b/ports/espressif/common-hal/analogio/AnalogIn.c @@ -46,6 +46,8 @@ #define ATTENUATION ADC_ATTEN_DB_11 #if defined(CONFIG_IDF_TARGET_ESP32) #define DATA_WIDTH ADC_BITWIDTH_12 +#elif defined(CONFIG_IDF_TARGET_ESP32C2) +#define DATA_WIDTH ADC_BITWIDTH_12 #elif defined(CONFIG_IDF_TARGET_ESP32C3) #define DATA_WIDTH ADC_BITWIDTH_12 #elif defined(CONFIG_IDF_TARGET_ESP32C6) @@ -91,7 +93,7 @@ uint16_t common_hal_analogio_analogin_get_value(analogio_analogin_obj_t *self) { .unit_id = self->pin->adc_index, .ulp_mode = ADC_ULP_MODE_DISABLE }; - cp_check_esp_error(adc_oneshot_new_unit(&adc_config, &adc_handle)); + CHECK_ESP_RESULT(adc_oneshot_new_unit(&adc_config, &adc_handle)); adc_oneshot_chan_cfg_t channel_config = { .atten = ATTENUATION, diff --git a/ports/espressif/common-hal/dotclockframebuffer/DotClockFramebuffer.c b/ports/espressif/common-hal/dotclockframebuffer/DotClockFramebuffer.c index bc6390111f09..d28a797c304d 100644 --- a/ports/espressif/common-hal/dotclockframebuffer/DotClockFramebuffer.c +++ b/ports/espressif/common-hal/dotclockframebuffer/DotClockFramebuffer.c @@ -163,15 +163,15 @@ void common_hal_dotclockframebuffer_framebuffer_construct(dotclockframebuffer_fr cfg->flags.fb_in_psram = 1; // allocate frame buffer in PSRAM esp_err_t ret = esp_lcd_new_rgb_panel(&self->panel_config, &self->panel_handle); - cp_check_esp_error(ret); - cp_check_esp_error(esp_lcd_panel_reset(self->panel_handle)); - cp_check_esp_error(esp_lcd_panel_init(self->panel_handle)); + CHECK_ESP_RESULT(ret); + CHECK_ESP_RESULT(esp_lcd_panel_reset(self->panel_handle)); + CHECK_ESP_RESULT(esp_lcd_panel_init(self->panel_handle)); uint16_t color = 0; - cp_check_esp_error(self->panel_handle->draw_bitmap(self->panel_handle, 0, 0, 1, 1, &color)); + CHECK_ESP_RESULT(self->panel_handle->draw_bitmap(self->panel_handle, 0, 0, 1, 1, &color)); void *fb; - cp_check_esp_error(esp_lcd_rgb_panel_get_frame_buffer(self->panel_handle, 1, &fb)); + CHECK_ESP_RESULT(esp_lcd_rgb_panel_get_frame_buffer(self->panel_handle, 1, &fb)); self->frequency = frequency; self->width = width; diff --git a/ports/espressif/common-hal/microcontroller/Pin.c b/ports/espressif/common-hal/microcontroller/Pin.c index fd6ec720601b..4b92342450a2 100644 --- a/ports/espressif/common-hal/microcontroller/Pin.c +++ b/ports/espressif/common-hal/microcontroller/Pin.c @@ -109,6 +109,22 @@ static const uint64_t pin_mask_reset_forbidden = // SPI flash and PSRAM pins are protected at runtime in supervisor/port.c. #endif // ESP32 + #if defined(CONFIG_IDF_TARGET_ESP32C2) + // Never ever reset pins used to communicate with SPI flash. + GPIO_SEL_11 | // VDD_SPI + GPIO_SEL_12 | // SPIHD + GPIO_SEL_13 | // SPIWP + GPIO_SEL_14 | // SPICS0 + GPIO_SEL_15 | // SPICLK + GPIO_SEL_16 | // SPID + GPIO_SEL_17 | // SPIQ + #if defined(CONFIG_ESP_CONSOLE_UART_DEFAULT) && CONFIG_ESP_CONSOLE_UART_DEFAULT && CONFIG_ESP_CONSOLE_UART_NUM == 0 + // Never reset debug UART/console pins. + GPIO_SEL_19 | + GPIO_SEL_20 | + #endif + #endif // ESP32C2 + #if defined(CONFIG_IDF_TARGET_ESP32C3) // Never ever reset pins used to communicate with SPI flash. GPIO_SEL_11 | // VDD_SPI diff --git a/ports/espressif/common-hal/microcontroller/Processor.c b/ports/espressif/common-hal/microcontroller/Processor.c index 7c25608f89d0..427539524a84 100644 --- a/ports/espressif/common-hal/microcontroller/Processor.c +++ b/ports/espressif/common-hal/microcontroller/Processor.c @@ -81,6 +81,8 @@ void common_hal_mcu_processor_get_uid(uint8_t raw_id[]) { uint32_t mac_address_part = REG_READ(EFUSE_BLK0_RDATA1_REG); #elif defined(CONFIG_IDF_TARGET_ESP32H2) uint32_t mac_address_part = REG_READ(EFUSE_RD_MAC_SYS_0_REG); + #elif defined(CONFIG_IDF_TARGET_ESP32C2) + uint32_t mac_address_part = REG_READ(EFUSE_RD_BLK2_DATA0_REG); #else uint32_t mac_address_part = REG_READ(EFUSE_RD_MAC_SPI_SYS_0_REG); #endif @@ -98,6 +100,8 @@ void common_hal_mcu_processor_get_uid(uint8_t raw_id[]) { mac_address_part = REG_READ(EFUSE_BLK0_RDATA2_REG); #elif defined(CONFIG_IDF_TARGET_ESP32H2) mac_address_part = REG_READ(EFUSE_RD_MAC_SYS_1_REG); + #elif defined(CONFIG_IDF_TARGET_ESP32C2) + mac_address_part = REG_READ(EFUSE_RD_BLK2_DATA1_REG); #else mac_address_part = REG_READ(EFUSE_RD_MAC_SPI_SYS_1_REG); #endif diff --git a/ports/espressif/common-hal/microcontroller/__init__.c b/ports/espressif/common-hal/microcontroller/__init__.c index 470bebae5851..d96316db31dd 100644 --- a/ports/espressif/common-hal/microcontroller/__init__.c +++ b/ports/espressif/common-hal/microcontroller/__init__.c @@ -47,6 +47,9 @@ #if defined(CONFIG_IDF_TARGET_ESP32) #include "soc/rtc_cntl_reg.h" #include "esp32/rom/rtc.h" +#elif defined(CONFIG_IDF_TARGET_ESP32C2) +#include "soc/rtc_cntl_reg.h" +#include "esp32c2/rom/rtc.h" #elif defined(CONFIG_IDF_TARGET_ESP32C3) #include "soc/rtc_cntl_reg.h" #include "esp32c3/rom/rtc.h" diff --git a/ports/espressif/esp-idf b/ports/espressif/esp-idf index 722fba96a17f..da9dc379bede 160000 --- a/ports/espressif/esp-idf +++ b/ports/espressif/esp-idf @@ -1 +1 @@ -Subproject commit 722fba96a17fba2809434e01d65b6ce88ec4ca2e +Subproject commit da9dc379bede0bd684ddf7d95be4630897ca522e diff --git a/ports/espressif/esp-idf-config/partitions-4MB-no-ota-no-uf2.csv b/ports/espressif/esp-idf-config/partitions-4MB-no-ota-no-uf2.csv new file mode 100644 index 000000000000..59e0d9d1212b --- /dev/null +++ b/ports/espressif/esp-idf-config/partitions-4MB-no-ota-no-uf2.csv @@ -0,0 +1,7 @@ +# Name, Type, SubType, Offset, Size +# bootloader, app, boot, 0x1000/0x0, 28/32K +# partition_table, data, table, 0x8000, 4K +nvs, data, nvs, 0x9000, 20K +otadata, data, ota, 0xe000, 8K +ota_0, app, ota_0, 0x10000, 2048K +user_fs, data, fat, 0x210000, 1984K diff --git a/ports/espressif/esp-idf-config/sdkconfig-ble.defaults b/ports/espressif/esp-idf-config/sdkconfig-ble.defaults index c260c38016b3..4735b1f6271f 100644 --- a/ports/espressif/esp-idf-config/sdkconfig-ble.defaults +++ b/ports/espressif/esp-idf-config/sdkconfig-ble.defaults @@ -14,22 +14,18 @@ CONFIG_BT_NIMBLE_ENABLED=y # CONFIG_BT_NIMBLE_LOG_LEVEL_NONE=y CONFIG_BT_NIMBLE_NVS_PERSIST=y +CONFIG_BT_NIMBLE_DYNAMIC_SERVICE=y # # Memory Settings # -CONFIG_BT_NIMBLE_ACL_BUF_COUNT=20 -CONFIG_BT_NIMBLE_HCI_EVT_BUF_SIZE=70 +CONFIG_BT_NIMBLE_TRANSPORT_ACL_FROM_LL_COUNT=20 +CONFIG_BT_NIMBLE_TRANSPORT_EVT_SIZE=70 # end of Memory Settings -CONFIG_BT_NIMBLE_EXT_ADV=y +# CONFIG_BT_NIMBLE_ENABLE_PERIODIC_ADV is not set +CONFIG_BT_NIMBLE_HIGH_DUTY_ADV_ITVL=y # end of NimBLE Options -# -# Controller Options -# -# CONFIG_BT_CTRL_BLE_SCAN_DUPL is not set -# end of Controller Options - # end of Bluetooth # end of Component config diff --git a/ports/espressif/esp-idf-config/sdkconfig-esp32.defaults b/ports/espressif/esp-idf-config/sdkconfig-esp32.defaults index 582e10ad7721..cb5fa46e3714 100644 --- a/ports/espressif/esp-idf-config/sdkconfig-esp32.defaults +++ b/ports/espressif/esp-idf-config/sdkconfig-esp32.defaults @@ -4,6 +4,24 @@ # # Component config # +# +# Bluetooth +# +# +# NimBLE Options +# +CONFIG_BT_NIMBLE_PINNED_TO_CORE_1=y +# end of NimBLE Options + +# +# Controller Options +# +CONFIG_BTDM_CTRL_PINNED_TO_CORE_1=y +# CONFIG_BTDM_BLE_SCAN_DUPL is not set +# end of Controller Options + +# end of Bluetooth + # # Driver Configurations # @@ -40,7 +58,7 @@ CONFIG_ESP_IPC_TASK_STACK_SIZE=1536 # # Wi-Fi # -# CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE is not set +# CONFIG_ESP_WIFI_IRAM_OPT is not set # end of Wi-Fi # diff --git a/ports/espressif/esp-idf-config/sdkconfig-esp32c2.defaults b/ports/espressif/esp-idf-config/sdkconfig-esp32c2.defaults new file mode 100644 index 000000000000..bf9e57494c73 --- /dev/null +++ b/ports/espressif/esp-idf-config/sdkconfig-esp32c2.defaults @@ -0,0 +1,49 @@ +# +# Espressif IoT Development Framework Configuration +# +# +# Component config +# +# +# Bluetooth +# +CONFIG_BT_ENABLED=y +CONFIG_BT_NIMBLE_ENABLED=y +# +# NimBLE Options +# +CONFIG_BT_NIMBLE_LOG_LEVEL_NONE=y +CONFIG_BT_NIMBLE_NVS_PERSIST=y +# +# Memory Settings +# +CONFIG_BT_NIMBLE_TRANSPORT_ACL_FROM_LL_COUNT=20 +CONFIG_BT_NIMBLE_TRANSPORT_EVT_SIZE=70 +# end of Memory Settings + +CONFIG_BT_NIMBLE_EXT_ADV=y +# end of NimBLE Options + +# +# Controller Options +# +# CONFIG_BT_CTRL_BLE_SCAN_DUPL is not set +# end of Controller Options + +# end of Bluetooth + +# +# Wi-Fi +# +CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=4 +# end of Wi-Fi + +# +# Newlib +# +CONFIG_NEWLIB_NANO_FORMAT=y +# end of Newlib + +# end of Component config + +# end of Espressif IoT Development Framework Configuration diff --git a/ports/espressif/esp-idf-config/sdkconfig-flash-16MB-no-uf2.defaults b/ports/espressif/esp-idf-config/sdkconfig-flash-16MB-no-uf2.defaults index 6065abcd935f..70aa38c26e87 100644 --- a/ports/espressif/esp-idf-config/sdkconfig-flash-16MB-no-uf2.defaults +++ b/ports/espressif/esp-idf-config/sdkconfig-flash-16MB-no-uf2.defaults @@ -1,4 +1,7 @@ # +# Espressif IoT Development Framework Configuration +# +# # Serial flasher config # # CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set @@ -6,13 +9,17 @@ # CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set # CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y +# CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set CONFIG_ESPTOOLPY_FLASHSIZE="16MB" -CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y # end of Serial flasher config -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="esp-idf-config/partitions-16MB-no-uf2.csv" # # Partition Table # +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="esp-idf-config/partitions-16MB-no-uf2.csv" CONFIG_PARTITION_TABLE_FILENAME="esp-idf-config/partitions-16MB-no-uf2.csv" # end of Partition Table + +# end of Espressif IoT Development Framework Configuration diff --git a/ports/espressif/esp-idf-config/sdkconfig-flash-4MB-no-ota-no-uf2.defaults b/ports/espressif/esp-idf-config/sdkconfig-flash-4MB-no-ota-no-uf2.defaults new file mode 100644 index 000000000000..2d9f2573c6cd --- /dev/null +++ b/ports/espressif/esp-idf-config/sdkconfig-flash-4MB-no-ota-no-uf2.defaults @@ -0,0 +1,25 @@ +# +# Espressif IoT Development Framework Configuration +# +# +# Serial flasher config +# +# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_2MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y +# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE="4MB" +# end of Serial flasher config + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="esp-idf-config/partitions-4MB-no-ota-no-uf2.csv" +CONFIG_PARTITION_TABLE_FILENAME="esp-idf-config/partitions-4MB-no-ota-no-uf2.csv" +# end of Partition Table + +# end of Espressif IoT Development Framework Configuration diff --git a/ports/espressif/esp-idf-config/sdkconfig-flash-60m.defaults b/ports/espressif/esp-idf-config/sdkconfig-flash-60m.defaults new file mode 100644 index 000000000000..7068d0ce7408 --- /dev/null +++ b/ports/espressif/esp-idf-config/sdkconfig-flash-60m.defaults @@ -0,0 +1,14 @@ +# CONFIG_ESPTOOLPY_FLASHFREQ_120M is not set +# CONFIG_ESPTOOLPY_FLASHFREQ_80M is not set +# CONFIG_ESPTOOLPY_FLASHFREQ_64M is not set +CONFIG_ESPTOOLPY_FLASHFREQ_60M=y +# CONFIG_ESPTOOLPY_FLASHFREQ_48M is not set +# CONFIG_ESPTOOLPY_FLASHFREQ_40M is not set +# CONFIG_ESPTOOLPY_FLASHFREQ_32M is not set +# CONFIG_ESPTOOLPY_FLASHFREQ_30M is not set +# CONFIG_ESPTOOLPY_FLASHFREQ_26M is not set +# CONFIG_ESPTOOLPY_FLASHFREQ_24M is not set +# CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set +# CONFIG_ESPTOOLPY_FLASHFREQ_16M is not set +# CONFIG_ESPTOOLPY_FLASHFREQ_15M is not set +# CONFIG_ESPTOOLPY_FLASHFREQ_80M_DEFAULT is not set diff --git a/ports/espressif/mpconfigport.h b/ports/espressif/mpconfigport.h index e85242dfd290..ab6a6663bc04 100644 --- a/ports/espressif/mpconfigport.h +++ b/ports/espressif/mpconfigport.h @@ -45,7 +45,7 @@ // Nearly all boards have this because it is used to enter the ROM bootloader. #ifndef CIRCUITPY_BOOT_BUTTON - #if defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6) || defined(CONFIG_IDF_TARGET_ESP32H2) + #if defined(CONFIG_IDF_TARGET_ESP32C2) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6) || defined(CONFIG_IDF_TARGET_ESP32H2) #define CIRCUITPY_BOOT_BUTTON (&pin_GPIO9) #elif !defined(CONFIG_IDF_TARGET_ESP32) #define CIRCUITPY_BOOT_BUTTON (&pin_GPIO0) diff --git a/ports/espressif/mpconfigport.mk b/ports/espressif/mpconfigport.mk index 445c5c69d6a4..00fac5383abd 100644 --- a/ports/espressif/mpconfigport.mk +++ b/ports/espressif/mpconfigport.mk @@ -22,10 +22,10 @@ CIRCUITPY_ANALOGBUFIO ?= 1 CIRCUITPY_AUDIOBUSIO ?= 1 CIRCUITPY_AUDIOBUSIO_PDMIN ?= 0 CIRCUITPY_AUDIOIO ?= 0 +CIRCUITPY_BLEIO ?= 1 CIRCUITPY_BLEIO_HCI = 0 CIRCUITPY_CANIO ?= 1 CIRCUITPY_COUNTIO ?= 1 -CIRCUITPY_DUALBANK ?= 1 CIRCUITPY_ESPCAMERA ?= 1 CIRCUITPY_ESPIDF ?= 1 CIRCUITPY_ESPULP ?= 1 @@ -49,14 +49,50 @@ CIRCUITPY_WIFI ?= 1 ifeq ($(IDF_TARGET),esp32) # Modules CIRCUITPY_RGBMATRIX = 0 -CIRCUITPY_BLEIO = 0 # Features CIRCUITPY_USB_DEVICE = 0 +else ifeq ($(IDF_TARGET),esp32c2) + +# C2 ROM spits out the UART at 74880 when connected to a 26mhz crystal! Debug +# prints will default to that too. +# Modules +CIRCUITPY_ALARM = 0 +CIRCUITPY_ESPCAMERA = 0 +CIRCUITPY_ESPULP = 0 +CIRCUITPY_MEMORYMAP = 0 + +# No I80 support from the IDF +CIRCUITPY_PARALLELDISPLAYBUS = 0 + +# No PCNT peripheral +CIRCUITPY_FREQUENCYIO = 0 +CIRCUITPY_COUNTIO = 0 +CIRCUITPY_ROTARYIO = 0 + +# No two wire automotive +CIRCUITPY_CANIO = 0 + +# No DMA from ADC +CIRCUITPY_ANALOGBUFIO = 0 + +# No I2S +CIRCUITPY_AUDIOBUSIO = 0 + +# No RMT +CIRCUITPY_NEOPIXEL_WRITE = 0 +CIRCUITPY_PULSEIO = 0 +CIRCUITPY_RGBMATRIX = 0 + +CIRCUITPY_TOUCHIO ?= 1 +CIRCUITPY_TOUCHIO_USE_NATIVE = 0 +# Features +CIRCUITPY_USB_DEVICE = 0 +CIRCUITPY_ESP_USB_SERIAL_JTAG = 0 + else ifeq ($(IDF_TARGET),esp32c3) # Modules CIRCUITPY_ALARM = 0 -CIRCUITPY_BLEIO ?= 0 CIRCUITPY_ESPCAMERA = 0 CIRCUITPY_ESPULP = 0 CIRCUITPY_MEMORYMAP = 0 @@ -78,7 +114,6 @@ CIRCUITPY_ESP_USB_SERIAL_JTAG ?= 1 else ifeq ($(IDF_TARGET),esp32c6) # Modules CIRCUITPY_ALARM = 0 -CIRCUITPY_BLEIO ?= 0 CIRCUITPY_ESPCAMERA = 0 CIRCUITPY_ESPULP = 0 CIRCUITPY_MEMORYMAP = 0 @@ -99,7 +134,6 @@ CIRCUITPY_ESP_USB_SERIAL_JTAG ?= 1 else ifeq ($(IDF_TARGET),esp32h2) # Modules CIRCUITPY_ALARM = 0 -CIRCUITPY_BLEIO ?= 1 CIRCUITPY_ESPCAMERA = 0 CIRCUITPY_ESPULP = 0 CIRCUITPY_MEMORYMAP = 0 @@ -131,9 +165,7 @@ CIRCUITPY_ESP_USB_SERIAL_JTAG ?= 0 # No room for _bleio on boards with 4MB flash ifeq ($(CIRCUITPY_ESP_FLASH_SIZE),4MB) -CIRCUITPY_BLEIO ?= 0 -else -CIRCUITPY_BLEIO ?= 1 +CIRCUITPY_BLEIO = 0 endif endif @@ -142,10 +174,9 @@ endif ifeq ($(CIRCUITPY_ESP_FLASH_SIZE),4MB) CIRCUITPY_BITMAPFILTER ?= 0 OPTIMIZATION_FLAGS ?= -Os -# Until the 4MB C6 partition table is updated, disable mp3 on the 4MB C6 parts -ifeq ($(IDF_TARGET),esp32c6) -CIRCUITPY_AUDIOMP3 ?= 0 -endif +CIRCUITPY_DUALBANK ?= 0 +else +CIRCUITPY_DUALBANK ?= 1 endif # No room for dualbank or mp3 on boards with 2MB flash @@ -153,6 +184,7 @@ ifeq ($(CIRCUITPY_ESP_FLASH_SIZE),2MB) CIRCUITPY_BITMAPFILTER ?= 0 CIRCUITPY_DUALBANK = 0 CIRCUITPY_AUDIOMP3 = 0 +CIRCUITPY_BLEIO = 0 endif # Modules dependent on other modules diff --git a/ports/espressif/mphalport.c b/ports/espressif/mphalport.c index 511d92b22886..34abc3f30f36 100644 --- a/ports/espressif/mphalport.c +++ b/ports/espressif/mphalport.c @@ -30,6 +30,8 @@ #if defined(CONFIG_IDF_TARGET_ESP32) #include "components/esp_rom/include/esp32/rom/ets_sys.h" +#elif defined(CONFIG_IDF_TARGET_ESP32C2) +#include "components/esp_rom/include/esp32c2/rom/ets_sys.h" #elif defined(CONFIG_IDF_TARGET_ESP32C3) #include "components/esp_rom/include/esp32c3/rom/ets_sys.h" #elif defined(CONFIG_IDF_TARGET_ESP32C6) diff --git a/ports/espressif/peripherals/esp32c2/pins.c b/ports/espressif/peripherals/esp32c2/pins.c new file mode 100644 index 000000000000..b860b5cfc966 --- /dev/null +++ b/ports/espressif/peripherals/esp32c2/pins.c @@ -0,0 +1,42 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2021 microDev + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "peripherals/pins.h" + +const mcu_pin_obj_t pin_GPIO0 = PIN(0, ADC_UNIT_1, ADC_CHANNEL_0, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO1 = PIN(1, ADC_UNIT_1, ADC_CHANNEL_1, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO2 = PIN(2, ADC_UNIT_1, ADC_CHANNEL_2, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO3 = PIN(3, ADC_UNIT_1, ADC_CHANNEL_3, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO4 = PIN(4, ADC_UNIT_1, ADC_CHANNEL_4, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO5 = PIN(5, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO6 = PIN(6, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO7 = PIN(7, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO8 = PIN(8, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO9 = PIN(9, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO10 = PIN(10, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO18 = PIN(18, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO19 = PIN(19, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO20 = PIN(20, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); diff --git a/ports/espressif/peripherals/esp32c2/pins.h b/ports/espressif/peripherals/esp32c2/pins.h new file mode 100644 index 000000000000..789f2f5dbfb2 --- /dev/null +++ b/ports/espressif/peripherals/esp32c2/pins.h @@ -0,0 +1,60 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2021 microDev + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +// DO NOT include this file directly. +// Use shared-bindings/microcontroller/Pin.h instead. +// This ensures that all necessary includes are already included. + +#pragma once + +#define GPIO0_EXISTS 1 +extern const mcu_pin_obj_t pin_GPIO0; +#define GPIO1_EXISTS 1 +extern const mcu_pin_obj_t pin_GPIO1; +#define GPIO2_EXISTS 1 +extern const mcu_pin_obj_t pin_GPIO2; +#define GPIO3_EXISTS 1 +extern const mcu_pin_obj_t pin_GPIO3; +#define GPIO4_EXISTS 1 +extern const mcu_pin_obj_t pin_GPIO4; +#define GPIO5_EXISTS 1 +extern const mcu_pin_obj_t pin_GPIO5; +#define GPIO6_EXISTS 1 +extern const mcu_pin_obj_t pin_GPIO6; +#define GPIO7_EXISTS 1 +extern const mcu_pin_obj_t pin_GPIO7; +#define GPIO8_EXISTS 1 +extern const mcu_pin_obj_t pin_GPIO8; +#define GPIO9_EXISTS 1 +extern const mcu_pin_obj_t pin_GPIO9; +#define GPIO10_EXISTS 1 +extern const mcu_pin_obj_t pin_GPIO10; +#define GPIO18_EXISTS 1 +extern const mcu_pin_obj_t pin_GPIO18; +#define GPIO19_EXISTS 1 +extern const mcu_pin_obj_t pin_GPIO19; +#define GPIO20_EXISTS 1 +extern const mcu_pin_obj_t pin_GPIO20; diff --git a/ports/espressif/peripherals/i2c.c b/ports/espressif/peripherals/i2c.c index d16f165d3838..013e9322cbd9 100644 --- a/ports/espressif/peripherals/i2c.c +++ b/ports/espressif/peripherals/i2c.c @@ -54,10 +54,12 @@ esp_err_t peripherals_i2c_init(i2c_port_t num, const i2c_config_t *i2c_conf) { } size_t rx_buf_len = 0; size_t tx_buf_len = 0; + #ifdef SOC_I2C_SUPPORT_SLAVE if (i2c_conf->mode == I2C_MODE_SLAVE) { rx_buf_len = 256; tx_buf_len = 256; } + #endif return i2c_driver_install(num, i2c_conf->mode, rx_buf_len, tx_buf_len, 0); } diff --git a/ports/espressif/peripherals/pins.h b/ports/espressif/peripherals/pins.h index 5d759c661296..d6cba4429ffb 100644 --- a/ports/espressif/peripherals/pins.h +++ b/ports/espressif/peripherals/pins.h @@ -67,6 +67,8 @@ extern const mp_obj_type_t mcu_pin_type; // Choose based on chip #if defined(CONFIG_IDF_TARGET_ESP32) #include "esp32/pins.h" +#elif defined(CONFIG_IDF_TARGET_ESP32C2) +#include "esp32c2/pins.h" #elif defined(CONFIG_IDF_TARGET_ESP32C3) #include "esp32c3/pins.h" #elif defined(CONFIG_IDF_TARGET_ESP32C6) diff --git a/ports/espressif/tools/build_memory_info.py b/ports/espressif/tools/build_memory_info.py index 04ed04331af8..fa97bb9ed611 100644 --- a/ports/espressif/tools/build_memory_info.py +++ b/ports/espressif/tools/build_memory_info.py @@ -116,6 +116,9 @@ def find_region(start_address): offset = section["sh_offset"] if not size or not start: continue + if section.name.endswith("dummy"): + # print("Skipping dummy section", section.name) + continue # This handles sections that span two memory regions, not more than that. # print(start, size, offset, section.name) region = find_region(start) diff --git a/ports/espressif/tools/decode_backtrace.py b/ports/espressif/tools/decode_backtrace.py index 38b2c12b6689..6d2772d39f77 100644 --- a/ports/espressif/tools/decode_backtrace.py +++ b/ports/espressif/tools/decode_backtrace.py @@ -16,9 +16,16 @@ addresses = input("? ") if addresses.startswith("Backtrace:"): addresses = addresses[len("Backtrace:") :] + if addresses.startswith("Stack memory:"): + addresses = addresses[len("Stack memory:") :] addresses = addresses.strip().split() addresses = [address.split(":")[0] for address in addresses] - subprocess.run( - ["xtensa-esp32s2-elf-addr2line", "-aipfe", "build-{}/firmware.elf".format(board)] - + addresses - ) + for address in addresses: + result = subprocess.run( + ["xtensa-esp32s2-elf-addr2line", "-aipfe", "build-{}/firmware.elf".format(board)] + + [address], + capture_output=True, + ) + stdout = result.stdout.decode("utf-8") + if "?? ??" not in stdout: + print(stdout.strip()) diff --git a/ports/espressif/tools/update_sdkconfig.py b/ports/espressif/tools/update_sdkconfig.py index 827fac7ca4bc..7cb7fee152e5 100644 --- a/ports/espressif/tools/update_sdkconfig.py +++ b/ports/espressif/tools/update_sdkconfig.py @@ -176,12 +176,9 @@ def update(debug, board, update_all): if key == "IDF_TARGET": target = value if uf2_bootloader is None: - uf2_bootloader = target not in ("esp32", "esp32c3", "esp32c6", "esp32h2") + uf2_bootloader = target in ("esp32s2", "esp32s3") if ble_enabled is None: - ble_enabled = target not in ( - "esp32", - "esp32s2", - ) # ESP32 is disabled by us. S2 doesn't support it. + ble_enabled = target not in ("esp32s2",) # S2 doesn't support it. elif key == "CIRCUITPY_ESP_FLASH_SIZE": flash_size = value elif key == "CIRCUITPY_ESP_FLASH_MODE": diff --git a/ports/nordic/common-hal/_bleio/Service.c b/ports/nordic/common-hal/_bleio/Service.c index b0a6eeb83b71..bcf8b2f12ffc 100644 --- a/ports/nordic/common-hal/_bleio/Service.c +++ b/ports/nordic/common-hal/_bleio/Service.c @@ -77,6 +77,9 @@ void common_hal_bleio_service_construct(bleio_service_obj_t *self, bleio_uuid_ob mp_obj_new_list(0, NULL))); } +void common_hal_bleio_service_deinit(bleio_service_obj_t *self) { +} + void bleio_service_from_connection(bleio_service_obj_t *self, mp_obj_t connection) { self->handle = 0xFFFF; self->uuid = NULL; diff --git a/ports/silabs/common-hal/_bleio/Service.c b/ports/silabs/common-hal/_bleio/Service.c index 3e668e569ac4..694841e66284 100644 --- a/ports/silabs/common-hal/_bleio/Service.c +++ b/ports/silabs/common-hal/_bleio/Service.c @@ -109,6 +109,9 @@ void common_hal_bleio_service_construct(bleio_service_obj_t *self, mp_obj_new_list(0, NULL)); } +void common_hal_bleio_service_deinit(bleio_service_obj_t *self) { +} + // Get service from connection void bleio_service_from_connection(bleio_service_obj_t *self, mp_obj_t connection) { diff --git a/py/makeqstrdefs.py b/py/makeqstrdefs.py index 65f429ed547d..9839f7460186 100644 --- a/py/makeqstrdefs.py +++ b/py/makeqstrdefs.py @@ -95,7 +95,7 @@ def pp(flags): def run(files): completed = subprocess.run(args.pp + flags + files, stdout=subprocess.PIPE) if completed.returncode != 0: - raise RuntimeError() + raise RuntimeError(" ".join(args.pp + flags + files)) return completed.stdout return run diff --git a/py/nlraarch64.c b/py/nlraarch64.c index 5410aa4526a1..3c2674621bf2 100644 --- a/py/nlraarch64.c +++ b/py/nlraarch64.c @@ -75,7 +75,7 @@ NORETURN void nlr_jump(void *val) { "ret \n" : : "r" (top) - : + : "memory" ); MP_UNREACHABLE diff --git a/py/nlrmips.c b/py/nlrmips.c index b75d06cda61f..81a8306333f9 100644 --- a/py/nlrmips.c +++ b/py/nlrmips.c @@ -78,7 +78,7 @@ NORETURN void nlr_jump(void *val) { "nop \n" : : "r" (top) - : + : "memory" ); MP_UNREACHABLE } diff --git a/py/nlrpowerpc.c b/py/nlrpowerpc.c index a1b44efef1b3..edcea0d6f2f2 100644 --- a/py/nlrpowerpc.c +++ b/py/nlrpowerpc.c @@ -114,7 +114,7 @@ NORETURN void nlr_jump(void *val) { "blr ;" : : "r" (&top->regs) - : + : "memory" ); MP_UNREACHABLE; @@ -203,7 +203,7 @@ NORETURN void nlr_jump(void *val) { "blr ;" : : "r" (&top->regs) - : + : "memory" ); MP_UNREACHABLE; diff --git a/py/nlrthumb.c b/py/nlrthumb.c index 65798d148295..6cf6e8c487e4 100644 --- a/py/nlrthumb.c +++ b/py/nlrthumb.c @@ -133,7 +133,7 @@ NORETURN void nlr_jump(void *val) { "bx lr \n" // return : // output operands : "r" (top) // input operands - : // clobbered registers + : "memory" // clobbered registers ); MP_UNREACHABLE diff --git a/py/nlrx64.c b/py/nlrx64.c index 7c271fef2eb9..000d858cf733 100644 --- a/py/nlrx64.c +++ b/py/nlrx64.c @@ -123,7 +123,7 @@ NORETURN void nlr_jump(void *val) { "ret \n" // return : // output operands : "r" (top) // input operands - : // clobbered registers + : "memory" // clobbered registers ); MP_UNREACHABLE diff --git a/py/nlrx86.c b/py/nlrx86.c index a6c37a699833..0946f9284356 100644 --- a/py/nlrx86.c +++ b/py/nlrx86.c @@ -95,7 +95,7 @@ NORETURN void nlr_jump(void *val) { "ret \n" // return : // output operands : "r" (top) // input operands - : // clobbered registers + : "memory" // clobbered registers ); MP_UNREACHABLE diff --git a/py/nlrxtensa.c b/py/nlrxtensa.c index 4123efd18027..78c6a937b1e6 100644 --- a/py/nlrxtensa.c +++ b/py/nlrxtensa.c @@ -74,7 +74,7 @@ NORETURN void nlr_jump(void *val) { "ret.n \n" // return : // output operands : "r" (top) // input operands - : // clobbered registers + : "memory" // clobbered registers ); MP_UNREACHABLE diff --git a/shared-bindings/_bleio/PacketBuffer.c b/shared-bindings/_bleio/PacketBuffer.c index 9cd2c37379dc..81705d6c7729 100644 --- a/shared-bindings/_bleio/PacketBuffer.c +++ b/shared-bindings/_bleio/PacketBuffer.c @@ -36,14 +36,6 @@ #include "shared-bindings/util.h" //| class PacketBuffer: -//| """Accumulates a Characteristic's incoming packets in a FIFO buffer and facilitates packet aware -//| outgoing writes. A packet's size is either the characteristic length or the maximum transmission -//| unit (MTU) minus overhead, whichever is smaller. The MTU can change so check `incoming_packet_length` -//| and `outgoing_packet_length` before creating a buffer to store data. -//| -//| When we're the server, we ignore all connections besides the first to subscribe to -//| notifications.""" -//| //| def __init__( //| self, //| characteristic: Characteristic, @@ -51,11 +43,13 @@ //| buffer_size: int, //| max_packet_size: Optional[int] = None //| ) -> None: -//| """Monitor the given Characteristic. Each time a new value is written to the Characteristic -//| add the newly-written bytes to a FIFO buffer. +//| """Accumulates a Characteristic's incoming packets in a FIFO buffer and facilitates packet aware +//| outgoing writes. A packet's size is either the characteristic length or the maximum transmission +//| unit (MTU) minus overhead, whichever is smaller. The MTU can change so check `incoming_packet_length` +//| and `outgoing_packet_length` before creating a buffer to store data. //| -//| Monitor the given Characteristic. Each time a new value is written to the Characteristic -//| add the newly-written packet of bytes to a FIFO buffer. +//| When we're the server, we ignore all connections besides the first to subscribe to +//| notifications. //| //| :param Characteristic characteristic: The Characteristic to monitor. //| It may be a local Characteristic provided by a Peripheral Service, or a remote Characteristic diff --git a/shared-bindings/_bleio/Service.c b/shared-bindings/_bleio/Service.c index 22475f35f6bd..01ecef700311 100644 --- a/shared-bindings/_bleio/Service.c +++ b/shared-bindings/_bleio/Service.c @@ -61,13 +61,24 @@ STATIC mp_obj_t bleio_service_make_new(const mp_obj_type_t *type, size_t n_args, const bool is_secondary = args[ARG_secondary].u_bool; - bleio_service_obj_t *service = mp_obj_malloc(bleio_service_obj_t, &bleio_service_type); + bleio_service_obj_t *service = m_new_obj_with_finaliser(bleio_service_obj_t); + service->base.type = &bleio_service_type; common_hal_bleio_service_construct(service, uuid, is_secondary); return MP_OBJ_FROM_PTR(service); } +//| def deinit(self) -> None: +//| """Disable and deinitialise the Service.""" +//| ... +STATIC mp_obj_t bleio_service_deinit(mp_obj_t self_in) { + bleio_service_obj_t *self = MP_OBJ_TO_PTR(self_in); + common_hal_bleio_service_deinit(self); + return mp_const_none; +} +STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_service_deinit_obj, bleio_service_deinit); + //| characteristics: Tuple[Characteristic, ...] //| """A tuple of :py:class:`Characteristic` designating the characteristics that are offered by //| this service. (read-only)""" @@ -122,6 +133,8 @@ MP_PROPERTY_GETTER(bleio_service_uuid_obj, STATIC const mp_rom_map_elem_t bleio_service_locals_dict_table[] = { + { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&bleio_service_deinit_obj) }, + { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&bleio_service_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR_characteristics), MP_ROM_PTR(&bleio_service_characteristics_obj) }, { MP_ROM_QSTR(MP_QSTR_secondary), MP_ROM_PTR(&bleio_service_secondary_obj) }, { MP_ROM_QSTR(MP_QSTR_uuid), MP_ROM_PTR(&bleio_service_uuid_obj) }, diff --git a/shared-bindings/_bleio/Service.h b/shared-bindings/_bleio/Service.h index eb1d29b57e44..2df9459a6373 100644 --- a/shared-bindings/_bleio/Service.h +++ b/shared-bindings/_bleio/Service.h @@ -39,6 +39,7 @@ extern const mp_obj_type_t bleio_service_type; // Private version that doesn't allocate on the heap extern uint32_t _common_hal_bleio_service_construct(bleio_service_obj_t *self, bleio_uuid_obj_t *uuid, bool is_secondary, mp_obj_list_t *characteristic_list); extern void common_hal_bleio_service_construct(bleio_service_obj_t *self, bleio_uuid_obj_t *uuid, bool is_secondary); +extern void common_hal_bleio_service_deinit(bleio_service_obj_t *self); extern void common_hal_bleio_service_from_remote_service(bleio_service_obj_t *self, bleio_connection_obj_t *connection, bleio_uuid_obj_t *uuid, bool is_secondary); extern bleio_uuid_obj_t *common_hal_bleio_service_get_uuid(bleio_service_obj_t *self); extern mp_obj_tuple_t *common_hal_bleio_service_get_characteristics(bleio_service_obj_t *self); diff --git a/tools/ci_check_duplicate_usb_vid_pid.py b/tools/ci_check_duplicate_usb_vid_pid.py index 26e8ad0d22da..76bc1e667586 100644 --- a/tools/ci_check_duplicate_usb_vid_pid.py +++ b/tools/ci_check_duplicate_usb_vid_pid.py @@ -96,7 +96,7 @@ def check_vid_pid(files, clusterlist): """ usb_pattern = re.compile( - r"^CIRCUITPY_USB_DEVICE\s*=\s*0$|^IDF_TARGET = (esp32|esp32c3|esp32c6|esp32h2)$|^MCU_SERIES = MG24$", + r"^CIRCUITPY_USB_DEVICE\s*=\s*0$|^IDF_TARGET = (esp32|esp32c2|esp32c3|esp32c6|esp32h2)$|^MCU_SERIES = MG24$", flags=re.M, ) From daa11cb1c29eb4edc10dfd34bc10a392fb535d6c Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Thu, 16 May 2024 18:41:30 -0400 Subject: [PATCH 038/227] updates before header conversion --- LICENSES/lgpl-2.1.txt | 502 ++++++++++++++++++ devices/ble_hci/common-hal/_bleio/att.c | 10 +- devices/ble_hci/common-hal/_bleio/att.h | 10 +- devices/ble_hci/common-hal/_bleio/hci.c | 8 + devices/ble_hci/common-hal/_bleio/hci.h | 9 + .../common-hal/_bleio/hci_include/addr.h | 4 +- .../common-hal/_bleio/hci_include/att.h | 4 +- .../_bleio/hci_include/att_internal.h | 3 +- .../common-hal/_bleio/hci_include/hci.h | 3 +- .../_bleio/hci_include/l2cap_internal.h | 3 +- shared-bindings/aesio/aes.c | 26 + shared-bindings/countio/Counter.c | 25 + shared-bindings/countio/Counter.h | 26 + shared-bindings/countio/__init__.c | 25 + shared-bindings/countio/__init__.h | 25 + shared-bindings/displayio/Bitmap.c | 2 - shared-bindings/synthio/Biquad.h | 26 + shared-bindings/synthio/Note.h | 27 + shared-bindings/vectorio/Circle.c | 52 ++ shared-bindings/vectorio/Circle.h | 26 + shared-bindings/vectorio/Polygon.c | 26 + shared-bindings/vectorio/Polygon.h | 26 + shared-bindings/vectorio/Rectangle.c | 26 + shared-bindings/vectorio/Rectangle.h | 26 + shared-bindings/vectorio/VectorShape.c | 26 + shared-bindings/vectorio/VectorShape.h | 26 + shared-bindings/vectorio/__init__.c | 26 + shared-bindings/vectorio/__init__.h | 26 + shared-module/aesio/__init__.c | 26 + shared-module/aesio/aes.c | 2 + shared-module/aesio/aes.h | 26 + shared-module/dotclockframebuffer/__init__.c | 26 + shared-module/qrio/quirc_alloc.h | 26 + shared-module/struct/__init__.h | 1 - shared-module/touchio/__init__.c | 1 - shared-module/usb_video/__init__.c | 26 + shared-module/usb_video/descriptor.c | 26 + shared-module/vectorio/Circle.c | 25 + shared-module/vectorio/Circle.h | 26 + shared-module/vectorio/Polygon.c | 26 + shared-module/vectorio/Polygon.h | 26 + shared-module/vectorio/Rectangle.c | 26 + shared-module/vectorio/Rectangle.h | 26 + shared-module/vectorio/VectorShape.c | 25 + shared-module/vectorio/VectorShape.h | 26 + shared-module/vectorio/__init__.c | 25 + shared-module/vectorio/__init__.h | 26 + supervisor/shared/rgb_led_colors.h | 25 + supervisor/shared/usb/tusb_config.h | 4 + 49 files changed, 1457 insertions(+), 13 deletions(-) create mode 100644 LICENSES/lgpl-2.1.txt diff --git a/LICENSES/lgpl-2.1.txt b/LICENSES/lgpl-2.1.txt new file mode 100644 index 000000000000..e5ab03e1238a --- /dev/null +++ b/LICENSES/lgpl-2.1.txt @@ -0,0 +1,502 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/devices/ble_hci/common-hal/_bleio/att.c b/devices/ble_hci/common-hal/_bleio/att.c index a15907d81f60..57f7b0549ccc 100644 --- a/devices/ble_hci/common-hal/_bleio/att.c +++ b/devices/ble_hci/common-hal/_bleio/att.c @@ -1,5 +1,9 @@ -// Derived from ArduinoBLE. -// Copyright 2020 Dan Halbert for Adafruit Industries +// This file is part of the CircuitPython project: https://circuitpython.org + +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Arduino SA. All rights reserved. +// +// SPDX-License-Identifier: LGPL-2.1-or-later // Some functions here are unused now, but may be used in the future. // Don't warn or error about this, and depend on the compiler & linker to @@ -7,6 +11,8 @@ #pragma GCC diagnostic ignored "-Wunused" #pragma GCC diagnostic ignored "-Wunused-function" +// This file is derived from the ArduinoBLE library. Its header is below. + /* This file is part of the ArduinoBLE library. Copyright (c) 2018 Arduino SA. All rights reserved. diff --git a/devices/ble_hci/common-hal/_bleio/att.h b/devices/ble_hci/common-hal/_bleio/att.h index e8fdd53fd177..0482bea178d7 100644 --- a/devices/ble_hci/common-hal/_bleio/att.h +++ b/devices/ble_hci/common-hal/_bleio/att.h @@ -1,5 +1,11 @@ -// Derived from ArduinoBLE. -// Copyright 2020 Dan Halbert for Adafruit Industries +// This file is part of the CircuitPython project: https://circuitpython.org + +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Arduino SA. All rights reserved. +// +// SPDX-License-Identifier: LGPL-2.1-or-later + +// This file is derived from the ArduinoBLE library. Its header is below. /* This file is part of the ArduinoBLE library. diff --git a/devices/ble_hci/common-hal/_bleio/hci.c b/devices/ble_hci/common-hal/_bleio/hci.c index 00a3b114e715..e3f74421e51f 100644 --- a/devices/ble_hci/common-hal/_bleio/hci.c +++ b/devices/ble_hci/common-hal/_bleio/hci.c @@ -1,4 +1,12 @@ +// This file is part of the CircuitPython project: https://circuitpython.org + +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Arduino SA. All rights reserved. +// +// SPDX-License-Identifier: LGPL-2.1-or-later + // This file is derived from the ArduinoBLE library. Its header is below. + /* This file is part of the ArduinoBLE library. Copyright (c) 2018 Arduino SA. All rights reserved. diff --git a/devices/ble_hci/common-hal/_bleio/hci.h b/devices/ble_hci/common-hal/_bleio/hci.h index c9fd2393afe1..06e72482d63f 100644 --- a/devices/ble_hci/common-hal/_bleio/hci.h +++ b/devices/ble_hci/common-hal/_bleio/hci.h @@ -1,3 +1,12 @@ +// This file is part of the CircuitPython project: https://circuitpython.org + +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Arduino SA. All rights reserved. +// +// SPDX-License-Identifier: LGPL-2.1-or-later + +// This file is derived from the ArduinoBLE library. Its header is below. + /* This file is part of the ArduinoBLE library. Copyright (c) 2018 Arduino SA. All rights reserved. diff --git a/devices/ble_hci/common-hal/_bleio/hci_include/addr.h b/devices/ble_hci/common-hal/_bleio/hci_include/addr.h index 44f057e43dae..5d28cecf5e99 100644 --- a/devices/ble_hci/common-hal/_bleio/hci_include/addr.h +++ b/devices/ble_hci/common-hal/_bleio/hci_include/addr.h @@ -1,4 +1,6 @@ -// CircuitPython: Adapted from Zephyer include files. +// This file is part of the CircuitPython project: https://circuitpython.org +// Adapted from Zephyr include file. + /** @file * @brief Bluetooth device address definitions and utilities. */ diff --git a/devices/ble_hci/common-hal/_bleio/hci_include/att.h b/devices/ble_hci/common-hal/_bleio/hci_include/att.h index f292ceb4c3f6..421f7dda9de2 100644 --- a/devices/ble_hci/common-hal/_bleio/hci_include/att.h +++ b/devices/ble_hci/common-hal/_bleio/hci_include/att.h @@ -1,4 +1,6 @@ -// CircuitPython: Adapted from Zephyr include file. +// This file is part of the CircuitPython project: https://circuitpython.org\ +// Adapted from Zephyr include file. + /** @file * @brief Attribute Protocol handling. */ diff --git a/devices/ble_hci/common-hal/_bleio/hci_include/att_internal.h b/devices/ble_hci/common-hal/_bleio/hci_include/att_internal.h index 0f03894caac0..b812b5a7228d 100644 --- a/devices/ble_hci/common-hal/_bleio/hci_include/att_internal.h +++ b/devices/ble_hci/common-hal/_bleio/hci_include/att_internal.h @@ -1,4 +1,5 @@ -// CircuitPython: Adapted from Zephyr include file. +// This file is part of the CircuitPython project: https://circuitpython.org +// Adapted from Zephyr include file. /* att_internal.h - Attribute protocol handling */ diff --git a/devices/ble_hci/common-hal/_bleio/hci_include/hci.h b/devices/ble_hci/common-hal/_bleio/hci_include/hci.h index b5f950618158..ffab0a54a56c 100644 --- a/devices/ble_hci/common-hal/_bleio/hci_include/hci.h +++ b/devices/ble_hci/common-hal/_bleio/hci_include/hci.h @@ -1,4 +1,5 @@ -// CircuitPython: Adapted from Zephyr include file. +// This file is part of the CircuitPython project: https://circuitpython.org +// Adapted from Zephyr include file. /* hci.h - Bluetooth Host Control Interface definitions */ diff --git a/devices/ble_hci/common-hal/_bleio/hci_include/l2cap_internal.h b/devices/ble_hci/common-hal/_bleio/hci_include/l2cap_internal.h index b2e7fb450dfe..f66bac3c3527 100644 --- a/devices/ble_hci/common-hal/_bleio/hci_include/l2cap_internal.h +++ b/devices/ble_hci/common-hal/_bleio/hci_include/l2cap_internal.h @@ -1,4 +1,5 @@ -// CircuitPython: Adapted from Zephyr include file. +// This file is part of the CircuitPython project: https://circuitpython.org +// Adapted from Zephyr include file. /** @file * @brief Internal APIs for Bluetooth L2CAP handling. diff --git a/shared-bindings/aesio/aes.c b/shared-bindings/aesio/aes.c index 04ed4c0d9ec6..d9b91029a0fc 100644 --- a/shared-bindings/aesio/aes.c +++ b/shared-bindings/aesio/aes.c @@ -1,3 +1,29 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #include #include diff --git a/shared-bindings/countio/Counter.c b/shared-bindings/countio/Counter.c index cd85d37b9c82..62387464ac2d 100644 --- a/shared-bindings/countio/Counter.c +++ b/shared-bindings/countio/Counter.c @@ -1,3 +1,28 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 by Daniel Pollard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ #include diff --git a/shared-bindings/countio/Counter.h b/shared-bindings/countio/Counter.h index d660cc8f493e..75b797b804c1 100644 --- a/shared-bindings/countio/Counter.h +++ b/shared-bindings/countio/Counter.h @@ -1,3 +1,29 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 by Daniel Pollard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_COUNTIO_COUNTER_H #define MICROPY_INCLUDED_SHARED_BINDINGS_COUNTIO_COUNTER_H diff --git a/shared-bindings/countio/__init__.c b/shared-bindings/countio/__init__.c index c8327c9a575c..022dcb44383b 100644 --- a/shared-bindings/countio/__init__.c +++ b/shared-bindings/countio/__init__.c @@ -1,3 +1,28 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 by Daniel Pollard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ #include diff --git a/shared-bindings/countio/__init__.h b/shared-bindings/countio/__init__.h index 35ae9f035487..0853232726c4 100644 --- a/shared-bindings/countio/__init__.h +++ b/shared-bindings/countio/__init__.h @@ -1,3 +1,28 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 by Daniel Pollard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_COUNTIO___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_COUNTIO___INIT___H diff --git a/shared-bindings/displayio/Bitmap.c b/shared-bindings/displayio/Bitmap.c index 36afff36d603..e266bf9ca5a6 100644 --- a/shared-bindings/displayio/Bitmap.c +++ b/shared-bindings/displayio/Bitmap.c @@ -1,5 +1,3 @@ - - /* * This file is part of the Micro Python project, http://micropython.org/ * diff --git a/shared-bindings/synthio/Biquad.h b/shared-bindings/synthio/Biquad.h index 62b6c5843b53..b25e059a7458 100644 --- a/shared-bindings/synthio/Biquad.h +++ b/shared-bindings/synthio/Biquad.h @@ -1,3 +1,29 @@ +/* + * This file is part of the Micro Python project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2023 Jeff Epler for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #pragma once #include "py/obj.h" diff --git a/shared-bindings/synthio/Note.h b/shared-bindings/synthio/Note.h index 150f8ee54920..ee6a4eda7594 100644 --- a/shared-bindings/synthio/Note.h +++ b/shared-bindings/synthio/Note.h @@ -1,3 +1,30 @@ +/* + * This file is part of the Micro Python project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2021 Artyom Skrobov + * Copyright (c) 2023 Jeff Epler for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #pragma once #include "py/obj.h" diff --git a/shared-bindings/vectorio/Circle.c b/shared-bindings/vectorio/Circle.c index 4fa992d706a8..6fb6d760fea6 100644 --- a/shared-bindings/vectorio/Circle.c +++ b/shared-bindings/vectorio/Circle.c @@ -1,3 +1,55 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 by kvc0/WarriorOfWire + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 by Sean Cross + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #include "shared-bindings/vectorio/__init__.h" #include "shared-bindings/vectorio/Circle.h" #include "shared-bindings/vectorio/VectorShape.h" diff --git a/shared-bindings/vectorio/Circle.h b/shared-bindings/vectorio/Circle.h index 8f169795d25a..8d4c8b9a5f30 100644 --- a/shared-bindings/vectorio/Circle.h +++ b/shared-bindings/vectorio/Circle.h @@ -1,3 +1,29 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 by kvc0/WarriorOfWire + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_CIRCLE_H #define MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_CIRCLE_H diff --git a/shared-bindings/vectorio/Polygon.c b/shared-bindings/vectorio/Polygon.c index d9c923c0cddb..ca80a1f4e162 100644 --- a/shared-bindings/vectorio/Polygon.c +++ b/shared-bindings/vectorio/Polygon.c @@ -1,3 +1,29 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 by kvc0/WarriorOfWire + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #include "shared-bindings/vectorio/__init__.h" #include "shared-module/vectorio/__init__.h" #include "shared-bindings/vectorio/Polygon.h" diff --git a/shared-bindings/vectorio/Polygon.h b/shared-bindings/vectorio/Polygon.h index 9d3ce2dcc7a1..085769fe5314 100644 --- a/shared-bindings/vectorio/Polygon.h +++ b/shared-bindings/vectorio/Polygon.h @@ -1,3 +1,29 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 by kvc0/WarriorOfWire + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_POLYGON_H #define MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_POLYGON_H diff --git a/shared-bindings/vectorio/Rectangle.c b/shared-bindings/vectorio/Rectangle.c index 5130970694de..887dc59d2f7e 100644 --- a/shared-bindings/vectorio/Rectangle.c +++ b/shared-bindings/vectorio/Rectangle.c @@ -1,3 +1,29 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 by kvc0/WarriorOfWire + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #include "shared-bindings/vectorio/__init__.h" #include "shared-bindings/vectorio/Rectangle.h" #include "shared-module/vectorio/VectorShape.h" diff --git a/shared-bindings/vectorio/Rectangle.h b/shared-bindings/vectorio/Rectangle.h index 907ae68690b8..8e6580163bca 100644 --- a/shared-bindings/vectorio/Rectangle.h +++ b/shared-bindings/vectorio/Rectangle.h @@ -1,3 +1,29 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 by kvc0/WarriorOfWire + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_RECTANGLE_H #define MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_RECTANGLE_H diff --git a/shared-bindings/vectorio/VectorShape.c b/shared-bindings/vectorio/VectorShape.c index f872a21e0330..91ae40659536 100644 --- a/shared-bindings/vectorio/VectorShape.c +++ b/shared-bindings/vectorio/VectorShape.c @@ -1,3 +1,29 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 by kvc0/WarriorOfWire + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #include "shared-module/vectorio/__init__.h" #include "shared-bindings/vectorio/VectorShape.h" #include "shared-bindings/vectorio/Circle.h" diff --git a/shared-bindings/vectorio/VectorShape.h b/shared-bindings/vectorio/VectorShape.h index c94476c25a5e..658577dfd23d 100644 --- a/shared-bindings/vectorio/VectorShape.h +++ b/shared-bindings/vectorio/VectorShape.h @@ -1,3 +1,29 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 by kvc0/WarriorOfWire + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_SHAPE_H #define MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_SHAPE_H diff --git a/shared-bindings/vectorio/__init__.c b/shared-bindings/vectorio/__init__.c index 8e6c9766c3d5..f09e118319be 100644 --- a/shared-bindings/vectorio/__init__.c +++ b/shared-bindings/vectorio/__init__.c @@ -1,3 +1,29 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 by kvc0/WarriorOfWire + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #include #include "py/obj.h" diff --git a/shared-bindings/vectorio/__init__.h b/shared-bindings/vectorio/__init__.h index d4f10c926cde..622b20684974 100644 --- a/shared-bindings/vectorio/__init__.h +++ b/shared-bindings/vectorio/__init__.h @@ -1,3 +1,29 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 by kvc0/WarriorOfWire + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #ifndef SHARED_MODULE_VECTORIO__INIT__H #define SHARED_MODULE_VECTORIO__INIT__H diff --git a/shared-module/aesio/__init__.c b/shared-module/aesio/__init__.c index bd748f9800a6..d40fb81c4068 100644 --- a/shared-module/aesio/__init__.c +++ b/shared-module/aesio/__init__.c @@ -1,3 +1,29 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 by Sean Cross + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #include #include "py/runtime.h" diff --git a/shared-module/aesio/aes.c b/shared-module/aesio/aes.c index 70984a141f5f..71c1ba7c3148 100644 --- a/shared-module/aesio/aes.c +++ b/shared-module/aesio/aes.c @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: Unlicense +// From https://github.com/kokke/tiny-AES-c /* This is an implementation of the AES algorithm, specifically ECB, CTR and CBC mode. diff --git a/shared-module/aesio/aes.h b/shared-module/aesio/aes.h index 92539f1dab58..b1706ac4edc7 100644 --- a/shared-module/aesio/aes.h +++ b/shared-module/aesio/aes.h @@ -1,3 +1,29 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 by Sean Cross + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #ifndef _AES_H_ #define _AES_H_ diff --git a/shared-module/dotclockframebuffer/__init__.c b/shared-module/dotclockframebuffer/__init__.c index 1fa2426d2d8f..0b1b5c59ac14 100644 --- a/shared-module/dotclockframebuffer/__init__.c +++ b/shared-module/dotclockframebuffer/__init__.c @@ -1,3 +1,29 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2023 Jeff Epler for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #include "shared-bindings/dotclockframebuffer/__init__.h" #include diff --git a/shared-module/qrio/quirc_alloc.h b/shared-module/qrio/quirc_alloc.h index a669dcea310f..553af3c3e2da 100644 --- a/shared-module/qrio/quirc_alloc.h +++ b/shared-module/qrio/quirc_alloc.h @@ -1,3 +1,29 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2021 by Jeff Epler for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #pragma once #include "py/gc.h" diff --git a/shared-module/struct/__init__.h b/shared-module/struct/__init__.h index 637080b29200..bd3959b53ac8 100644 --- a/shared-module/struct/__init__.h +++ b/shared-module/struct/__init__.h @@ -1,4 +1,3 @@ - /* * This file is part of the MicroPython project, http://micropython.org/ * diff --git a/shared-module/touchio/__init__.c b/shared-module/touchio/__init__.c index d2290447c95e..e69de29bb2d1 100644 --- a/shared-module/touchio/__init__.c +++ b/shared-module/touchio/__init__.c @@ -1 +0,0 @@ -// No touchio module functions. diff --git a/shared-module/usb_video/__init__.c b/shared-module/usb_video/__init__.c index b3340e7627d1..18f155c84fbb 100644 --- a/shared-module/usb_video/__init__.c +++ b/shared-module/usb_video/__init__.c @@ -1,3 +1,29 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2024 by Jeff Epler for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #include "py/runtime.h" #include #include "class/video/video_device.h" diff --git a/shared-module/usb_video/descriptor.c b/shared-module/usb_video/descriptor.c index c0f6eecf7bea..631e49139d8f 100644 --- a/shared-module/usb_video/descriptor.c +++ b/shared-module/usb_video/descriptor.c @@ -1,3 +1,29 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2024 by Jeff Epler for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + // To find the offsets where the string and endpoint value are used, // build this on your host computer: // gcc descriptor.c -I ../../lib/tinyusb/src -iquote . -DTUP_DCD_ENDPOINT_MAX=0 && ./a.out diff --git a/shared-module/vectorio/Circle.c b/shared-module/vectorio/Circle.c index a304ec58adf1..d174e6d11af8 100644 --- a/shared-module/vectorio/Circle.c +++ b/shared-module/vectorio/Circle.c @@ -1,3 +1,28 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 by kvc0/WarriorOfWire + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ #include "shared-bindings/vectorio/Circle.h" #include "shared-module/vectorio/__init__.h" diff --git a/shared-module/vectorio/Circle.h b/shared-module/vectorio/Circle.h index 6ebd9af25f88..4da88762dc5e 100644 --- a/shared-module/vectorio/Circle.h +++ b/shared-module/vectorio/Circle.h @@ -1,3 +1,29 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 by kvc0/WarriorOfWire + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #ifndef MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_CIRCLE_H #define MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_CIRCLE_H diff --git a/shared-module/vectorio/Polygon.c b/shared-module/vectorio/Polygon.c index cc21bdda2d13..cc09a5f015f0 100644 --- a/shared-module/vectorio/Polygon.c +++ b/shared-module/vectorio/Polygon.c @@ -1,3 +1,29 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 by kvc0/WarriorOfWire + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #include "shared-module/vectorio/__init__.h" #include "shared-bindings/vectorio/Polygon.h" #include "shared-module/displayio/area.h" diff --git a/shared-module/vectorio/Polygon.h b/shared-module/vectorio/Polygon.h index 795e33561b56..60eb9d727413 100644 --- a/shared-module/vectorio/Polygon.h +++ b/shared-module/vectorio/Polygon.h @@ -1,3 +1,29 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 by kvc0/WarriorOfWire + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #ifndef MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_POLYGON_H #define MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_POLYGON_H diff --git a/shared-module/vectorio/Rectangle.c b/shared-module/vectorio/Rectangle.c index f9d4b56824a1..365d681f4d90 100644 --- a/shared-module/vectorio/Rectangle.c +++ b/shared-module/vectorio/Rectangle.c @@ -1,3 +1,29 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 by kvc0/WarriorOfWire + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #include "shared-module/vectorio/__init__.h" #include "shared-bindings/vectorio/Rectangle.h" #include "shared-module/displayio/area.h" diff --git a/shared-module/vectorio/Rectangle.h b/shared-module/vectorio/Rectangle.h index 2b1decca0490..fd75589e9d4b 100644 --- a/shared-module/vectorio/Rectangle.h +++ b/shared-module/vectorio/Rectangle.h @@ -1,3 +1,29 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 by kvc0/WarriorOfWire + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #ifndef MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_RECTANGLE_H #define MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_RECTANGLE_H diff --git a/shared-module/vectorio/VectorShape.c b/shared-module/vectorio/VectorShape.c index fab12c664e15..d25fa43421f9 100644 --- a/shared-module/vectorio/VectorShape.c +++ b/shared-module/vectorio/VectorShape.c @@ -1,3 +1,28 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 by kvc0/WarriorOfWire + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ #include "stdlib.h" diff --git a/shared-module/vectorio/VectorShape.h b/shared-module/vectorio/VectorShape.h index 6ce09f9308a9..69e38971ab9c 100644 --- a/shared-module/vectorio/VectorShape.h +++ b/shared-module/vectorio/VectorShape.h @@ -1,3 +1,29 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 by kvc0/WarriorOfWire + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #ifndef MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_SHAPE_H #define MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_SHAPE_H diff --git a/shared-module/vectorio/__init__.c b/shared-module/vectorio/__init__.c index f5227ef01f0a..4b8f4cdefa0a 100644 --- a/shared-module/vectorio/__init__.c +++ b/shared-module/vectorio/__init__.c @@ -1,2 +1,27 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 by kvc0/WarriorOfWire + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ // Don't need anything in here yet diff --git a/shared-module/vectorio/__init__.h b/shared-module/vectorio/__init__.h index 8da85bba4372..0343bfe3b026 100644 --- a/shared-module/vectorio/__init__.h +++ b/shared-module/vectorio/__init__.h @@ -1,3 +1,29 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 by kvc0/WarriorOfWire + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + #ifndef MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_INIT_H #define MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_INIT_H diff --git a/supervisor/shared/rgb_led_colors.h b/supervisor/shared/rgb_led_colors.h index 56dc0f48d1bf..831a874381a9 100644 --- a/supervisor/shared/rgb_led_colors.h +++ b/supervisor/shared/rgb_led_colors.h @@ -1,3 +1,28 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2017-2021 Scott Shawcroft for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ #define COLOR(r, g, b) (((r) << 16) | ((g) << 8) | (b)) // For brightness == 255 (full). This will be adjusted downward for various different RGB indicators, diff --git a/supervisor/shared/usb/tusb_config.h b/supervisor/shared/usb/tusb_config.h index bebeee4b53a1..a3ac3e3237d0 100644 --- a/supervisor/shared/usb/tusb_config.h +++ b/supervisor/shared/usb/tusb_config.h @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: Copyright (c) 2013, hathach (tinyusb.org) +// +// SPDX-License-Identifier: BSD-3-Clause + /**************************************************************************/ /*! @file tusb_config.h From 747b7619ea2f2bd89f43cdd7850e97b3ad6ae5c8 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Fri, 17 May 2024 14:51:41 -0400 Subject: [PATCH 039/227] update headers of most CircuitPython-only files --- devices/ble_hci/common-hal/_bleio/Adapter.c | 34 +-- devices/ble_hci/common-hal/_bleio/Adapter.h | 34 +-- devices/ble_hci/common-hal/_bleio/Attribute.c | 30 +-- devices/ble_hci/common-hal/_bleio/Attribute.h | 30 +-- .../common-hal/_bleio/Characteristic.c | 32 +-- .../common-hal/_bleio/Characteristic.h | 32 +-- .../common-hal/_bleio/CharacteristicBuffer.c | 30 +-- .../common-hal/_bleio/CharacteristicBuffer.h | 30 +-- .../ble_hci/common-hal/_bleio/Connection.c | 32 +-- .../ble_hci/common-hal/_bleio/Connection.h | 32 +-- .../ble_hci/common-hal/_bleio/Descriptor.c | 34 +-- .../ble_hci/common-hal/_bleio/Descriptor.h | 34 +-- .../ble_hci/common-hal/_bleio/PacketBuffer.c | 30 +-- .../ble_hci/common-hal/_bleio/PacketBuffer.h | 30 +-- devices/ble_hci/common-hal/_bleio/Service.c | 32 +-- devices/ble_hci/common-hal/_bleio/Service.h | 32 +-- devices/ble_hci/common-hal/_bleio/UUID.c | 34 +-- devices/ble_hci/common-hal/_bleio/UUID.h | 34 +-- devices/ble_hci/common-hal/_bleio/__init__.c | 34 +-- devices/ble_hci/common-hal/_bleio/__init__.h | 30 +-- devices/ble_hci/common-hal/_bleio/hci_debug.c | 30 +-- devices/ble_hci/supervisor/bluetooth.c | 30 +-- devices/ble_hci/supervisor/bluetooth.h | 30 +-- main.c | 30 +-- ports/atmel-samd/Makefile | 22 +- .../asf4_conf/samd21/hpl_adc_config.h | 6 + .../asf4_conf/samd21/hpl_dac_config.h | 6 + .../asf4_conf/samd21/hpl_dmac_config.h | 6 + .../asf4_conf/samd21/hpl_gclk_config.h | 6 + .../asf4_conf/samd21/hpl_nvmctrl_config.h | 6 + .../asf4_conf/samd21/hpl_pm_config.h | 6 + .../asf4_conf/samd21/hpl_rtc_config.h | 6 + .../asf4_conf/samd21/hpl_sercom_config.h | 6 + .../asf4_conf/samd21/hpl_sysctrl_config.h | 6 + .../asf4_conf/samd21/hpl_systick_config.h | 6 + .../asf4_conf/samd21/hpl_tc_config.h | 6 + .../asf4_conf/samd21/peripheral_clk_config.h | 6 + .../asf4_conf/samd51/hpl_adc_config.h | 6 + .../asf4_conf/samd51/hpl_dac_config.h | 6 + .../asf4_conf/samd51/hpl_dmac_config.h | 6 + .../asf4_conf/samd51/hpl_gclk_config.h | 6 + .../asf4_conf/samd51/hpl_mclk_config.h | 6 + .../asf4_conf/samd51/hpl_nvmctrl_config.h | 6 + .../asf4_conf/samd51/hpl_osc32kctrl_config.h | 6 + .../asf4_conf/samd51/hpl_oscctrl_config.h | 6 + .../asf4_conf/samd51/hpl_rtc_config.h | 6 + .../asf4_conf/samd51/hpl_sdhc_config.h | 6 + .../asf4_conf/samd51/hpl_sercom_config.h | 6 + .../asf4_conf/samd51/hpl_systick_config.h | 6 + .../asf4_conf/samd51/hpl_tc_config.h | 6 + .../asf4_conf/samd51/hpl_trng_config.h | 6 + .../asf4_conf/samd51/peripheral_clk_config.h | 6 + .../asf4_conf/same51/hpl_adc_config.h | 6 + .../asf4_conf/same51/hpl_dac_config.h | 6 + .../asf4_conf/same51/hpl_dmac_config.h | 6 + .../asf4_conf/same51/hpl_gclk_config.h | 6 + .../asf4_conf/same51/hpl_mclk_config.h | 6 + .../asf4_conf/same51/hpl_nvmctrl_config.h | 6 + .../asf4_conf/same51/hpl_osc32kctrl_config.h | 6 + .../asf4_conf/same51/hpl_oscctrl_config.h | 6 + .../asf4_conf/same51/hpl_rtc_config.h | 6 + .../asf4_conf/same51/hpl_sdhc_config.h | 6 + .../asf4_conf/same51/hpl_sercom_config.h | 6 + .../asf4_conf/same51/hpl_systick_config.h | 6 + .../asf4_conf/same51/hpl_tc_config.h | 6 + .../asf4_conf/same51/hpl_trng_config.h | 6 + .../asf4_conf/same51/peripheral_clk_config.h | 6 + .../asf4_conf/same54/hpl_adc_config.h | 6 + .../asf4_conf/same54/hpl_dac_config.h | 6 + .../asf4_conf/same54/hpl_dmac_config.h | 6 + .../asf4_conf/same54/hpl_gclk_config.h | 6 + .../asf4_conf/same54/hpl_mclk_config.h | 6 + .../asf4_conf/same54/hpl_nvmctrl_config.h | 6 + .../asf4_conf/same54/hpl_osc32kctrl_config.h | 6 + .../asf4_conf/same54/hpl_oscctrl_config.h | 6 + .../asf4_conf/same54/hpl_rtc_config.h | 6 + .../asf4_conf/same54/hpl_sdhc_config.h | 6 + .../asf4_conf/same54/hpl_sercom_config.h | 6 + .../asf4_conf/same54/hpl_systick_config.h | 6 + .../asf4_conf/same54/hpl_tc_config.h | 6 + .../asf4_conf/same54/hpl_trng_config.h | 6 + .../asf4_conf/same54/peripheral_clk_config.h | 6 + ports/atmel-samd/audio_dma.c | 30 +-- ports/atmel-samd/audio_dma.h | 30 +-- ports/atmel-samd/background.c | 30 +-- ports/atmel-samd/background.h | 30 +-- ports/atmel-samd/bindings/samd/Clock.c | 30 +-- ports/atmel-samd/bindings/samd/Clock.h | 30 +-- ports/atmel-samd/bindings/samd/__init__.c | 32 +-- .../atmel-samd/boards/8086_commander/board.c | 30 +-- .../boards/8086_commander/mpconfigboard.h | 6 + ports/atmel-samd/boards/8086_commander/pins.c | 6 + .../boards/adafruit_neokey_trinkey_m0/board.c | 30 +-- .../mpconfigboard.h | 6 + .../boards/adafruit_neokey_trinkey_m0/pins.c | 6 + .../boards/adafruit_pixel_trinkey_m0/board.c | 30 +-- .../adafruit_pixel_trinkey_m0/mpconfigboard.h | 6 + .../boards/adafruit_pixel_trinkey_m0/pins.c | 6 + .../adafruit_proxlight_trinkey_m0/board.c | 30 +-- .../mpconfigboard.h | 6 + .../adafruit_proxlight_trinkey_m0/pins.c | 6 + .../boards/adafruit_rotary_trinkey_m0/board.c | 30 +-- .../mpconfigboard.h | 6 + .../boards/adafruit_rotary_trinkey_m0/pins.c | 6 + .../boards/adafruit_sht4x_trinkey_m0/board.c | 30 +-- .../adafruit_sht4x_trinkey_m0/mpconfigboard.h | 6 + .../boards/adafruit_sht4x_trinkey_m0/pins.c | 6 + .../boards/adafruit_slide_trinkey_m0/board.c | 30 +-- .../adafruit_slide_trinkey_m0/mpconfigboard.h | 6 + .../boards/adafruit_slide_trinkey_m0/pins.c | 6 + .../boards/adafruit_trrs_trinkey_m0/board.c | 30 +-- .../adafruit_trrs_trinkey_m0/mpconfigboard.h | 6 + .../boards/adafruit_trrs_trinkey_m0/pins.c | 6 + .../boards/aloriumtech_evo_m51/board.c | 30 +-- .../aloriumtech_evo_m51/mpconfigboard.h | 6 + .../boards/aloriumtech_evo_m51/pins.c | 6 + .../atmel-samd/boards/arduino_mkr1300/board.c | 30 +-- .../boards/arduino_mkr1300/mpconfigboard.h | 6 + .../atmel-samd/boards/arduino_mkr1300/pins.c | 6 + .../atmel-samd/boards/arduino_mkrzero/board.c | 30 +-- .../boards/arduino_mkrzero/mpconfigboard.h | 6 + .../atmel-samd/boards/arduino_mkrzero/pins.c | 6 + .../boards/arduino_nano_33_iot/board.c | 30 +-- .../arduino_nano_33_iot/mpconfigboard.h | 6 + .../boards/arduino_nano_33_iot/pins.c | 6 + ports/atmel-samd/boards/arduino_zero/board.c | 30 +-- .../boards/arduino_zero/mpconfigboard.h | 6 + ports/atmel-samd/boards/arduino_zero/pins.c | 6 + .../boards/bast_pro_mini_m0/board.c | 30 +-- .../boards/bast_pro_mini_m0/mpconfigboard.h | 6 + .../atmel-samd/boards/bast_pro_mini_m0/pins.c | 6 + .../boards/bdmicro_vina_d21/board.c | 30 +-- .../boards/bdmicro_vina_d21/mpconfigboard.h | 6 + .../atmel-samd/boards/bdmicro_vina_d21/pins.c | 6 + .../boards/bdmicro_vina_d51/board.c | 30 +-- .../boards/bdmicro_vina_d51/mpconfigboard.h | 6 + .../atmel-samd/boards/bdmicro_vina_d51/pins.c | 6 + .../boards/bdmicro_vina_d51_pcb7/board.c | 30 +-- .../bdmicro_vina_d51_pcb7/mpconfigboard.h | 6 + .../boards/bdmicro_vina_d51_pcb7/pins.c | 6 + ports/atmel-samd/boards/blm_badge/board.c | 30 +-- .../boards/blm_badge/mpconfigboard.h | 6 + ports/atmel-samd/boards/blm_badge/pins.c | 6 + .../boards/capablerobot_usbhub/board.c | 30 +-- .../capablerobot_usbhub/mpconfigboard.h | 6 + .../boards/capablerobot_usbhub/pins.c | 6 + .../atmel-samd/boards/catwan_usbstick/board.c | 30 +-- .../boards/catwan_usbstick/mpconfigboard.h | 6 + .../atmel-samd/boards/catwan_usbstick/pins.c | 6 + .../boards/circuitbrains_basic_m0/board.c | 32 +-- .../circuitbrains_basic_m0/mpconfigboard.h | 7 + .../boards/circuitbrains_basic_m0/pins.c | 7 + .../boards/circuitbrains_deluxe_m4/board.c | 32 +-- .../circuitbrains_deluxe_m4/mpconfigboard.h | 7 + .../boards/circuitbrains_deluxe_m4/pins.c | 7 + .../boards/circuitplayground_express/board.c | 30 +-- .../circuitplayground_express/mpconfigboard.h | 6 + .../boards/circuitplayground_express/pins.c | 6 + .../circuitplayground_express_crickit/board.c | 30 +-- .../mpconfigboard.h | 6 + .../circuitplayground_express_crickit/pins.c | 6 + .../board.c | 30 +-- .../mpconfigboard.h | 6 + .../pins.c | 6 + ports/atmel-samd/boards/cp32-m4/board.c | 30 +-- .../atmel-samd/boards/cp32-m4/mpconfigboard.h | 6 + ports/atmel-samd/boards/cp32-m4/pins.c | 6 + ports/atmel-samd/boards/cp_sapling_m0/board.c | 30 +-- .../boards/cp_sapling_m0/mpconfigboard.h | 6 + ports/atmel-samd/boards/cp_sapling_m0/pins.c | 6 + .../boards/cp_sapling_m0_revb/board.c | 30 +-- .../boards/cp_sapling_m0_revb/mpconfigboard.h | 6 + .../boards/cp_sapling_m0_revb/pins.c | 6 + .../boards/cp_sapling_m0_spiflash/board.c | 30 +-- .../cp_sapling_m0_spiflash/mpconfigboard.h | 6 + .../boards/cp_sapling_m0_spiflash/pins.c | 6 + .../atmel-samd/boards/datalore_ip_m4/board.c | 30 +-- .../boards/datalore_ip_m4/mpconfigboard.h | 6 + ports/atmel-samd/boards/datalore_ip_m4/pins.c | 6 + .../atmel-samd/boards/datum_distance/board.c | 30 +-- .../boards/datum_distance/mpconfigboard.h | 6 + ports/atmel-samd/boards/datum_distance/pins.c | 6 + ports/atmel-samd/boards/datum_imu/board.c | 30 +-- .../boards/datum_imu/mpconfigboard.h | 6 + ports/atmel-samd/boards/datum_imu/pins.c | 6 + ports/atmel-samd/boards/datum_light/board.c | 30 +-- .../boards/datum_light/mpconfigboard.h | 6 + ports/atmel-samd/boards/datum_light/pins.c | 6 + ports/atmel-samd/boards/datum_weather/board.c | 30 +-- .../boards/datum_weather/mpconfigboard.h | 6 + ports/atmel-samd/boards/datum_weather/pins.c | 6 + ports/atmel-samd/boards/dynalora_usb/board.c | 30 +-- .../boards/dynalora_usb/mpconfigboard.h | 6 + ports/atmel-samd/boards/dynalora_usb/pins.c | 6 + .../boards/dynossat_edu_eps/board.c | 30 +-- .../boards/dynossat_edu_eps/mpconfigboard.h | 6 + .../atmel-samd/boards/dynossat_edu_eps/pins.c | 6 + .../boards/dynossat_edu_obc/board.c | 30 +-- .../boards/dynossat_edu_obc/mpconfigboard.h | 6 + .../atmel-samd/boards/dynossat_edu_obc/pins.c | 6 + .../boards/escornabot_makech/board.c | 30 +-- .../boards/escornabot_makech/mpconfigboard.h | 6 + .../boards/escornabot_makech/pins.c | 6 + .../boards/feather_m0_adalogger/board.c | 30 +-- .../feather_m0_adalogger/mpconfigboard.h | 6 + .../boards/feather_m0_adalogger/pins.c | 6 + .../boards/feather_m0_basic/board.c | 30 +-- .../boards/feather_m0_basic/mpconfigboard.h | 6 + .../atmel-samd/boards/feather_m0_basic/pins.c | 6 + .../boards/feather_m0_express/board.c | 30 +-- .../boards/feather_m0_express/mpconfigboard.h | 6 + .../boards/feather_m0_express/pins.c | 6 + .../boards/feather_m0_express_crickit/board.c | 30 +-- .../mpconfigboard.h | 6 + .../boards/feather_m0_express_crickit/pins.c | 6 + .../boards/feather_m0_rfm69/board.c | 30 +-- .../boards/feather_m0_rfm69/mpconfigboard.h | 6 + .../atmel-samd/boards/feather_m0_rfm69/pins.c | 6 + .../boards/feather_m0_rfm9x/board.c | 30 +-- .../boards/feather_m0_rfm9x/mpconfigboard.h | 6 + .../atmel-samd/boards/feather_m0_rfm9x/pins.c | 6 + .../boards/feather_m0_supersized/board.c | 30 +-- .../feather_m0_supersized/mpconfigboard.h | 6 + .../boards/feather_m0_supersized/pins.c | 6 + .../atmel-samd/boards/feather_m4_can/board.c | 30 +-- .../boards/feather_m4_can/mpconfigboard.h | 6 + ports/atmel-samd/boards/feather_m4_can/pins.c | 6 + .../boards/feather_m4_express/board.c | 30 +-- .../boards/feather_m4_express/mpconfigboard.h | 6 + .../boards/feather_m4_express/pins.c | 6 + ports/atmel-samd/boards/fluff_m0/board.c | 30 +-- .../boards/fluff_m0/mpconfigboard.h | 6 + ports/atmel-samd/boards/fluff_m0/pins.c | 6 + ports/atmel-samd/boards/gemma_m0/board.c | 30 +-- .../boards/gemma_m0/mpconfigboard.h | 6 + ports/atmel-samd/boards/gemma_m0/pins.c | 6 + .../boards/grandcentral_m4_express/board.c | 30 +-- .../grandcentral_m4_express/mpconfigboard.h | 6 + .../boards/grandcentral_m4_express/pins.c | 6 + .../boards/hallowing_m0_express/board.c | 30 +-- .../hallowing_m0_express/mpconfigboard.h | 6 + .../boards/hallowing_m0_express/pins.c | 6 + .../boards/hallowing_m4_express/board.c | 30 +-- .../hallowing_m4_express/mpconfigboard.h | 6 + .../boards/hallowing_m4_express/pins.c | 6 + ports/atmel-samd/boards/huntercat_nfc/board.c | 30 +-- .../boards/huntercat_nfc/mpconfigboard.h | 6 + ports/atmel-samd/boards/huntercat_nfc/pins.c | 6 + .../boards/itsybitsy_m0_express/board.c | 30 +-- .../itsybitsy_m0_express/mpconfigboard.h | 6 + .../boards/itsybitsy_m0_express/pins.c | 6 + .../boards/itsybitsy_m4_express/board.c | 30 +-- .../itsybitsy_m4_express/mpconfigboard.h | 6 + .../boards/itsybitsy_m4_express/pins.c | 6 + .../atmel-samd/boards/kicksat-sprite/board.c | 30 +-- .../boards/kicksat-sprite/mpconfigboard.h | 6 + ports/atmel-samd/boards/kicksat-sprite/pins.c | 6 + .../boards/loc_ber_m4_base_board/board.c | 30 +-- .../loc_ber_m4_base_board/mpconfigboard.h | 6 + .../boards/loc_ber_m4_base_board/pins.c | 6 + .../atmel-samd/boards/matrixportal_m4/board.c | 30 +-- .../boards/matrixportal_m4/mpconfigboard.h | 6 + .../atmel-samd/boards/matrixportal_m4/pins.c | 6 + ports/atmel-samd/boards/meowmeow/board.c | 30 +-- .../boards/meowmeow/mpconfigboard.h | 6 + ports/atmel-samd/boards/meowmeow/pins.c | 6 + .../boards/metro_m0_express/board.c | 30 +-- .../boards/metro_m0_express/mpconfigboard.h | 6 + .../atmel-samd/boards/metro_m0_express/pins.c | 6 + .../boards/metro_m4_airlift_lite/board.c | 30 +-- .../metro_m4_airlift_lite/mpconfigboard.h | 6 + .../boards/metro_m4_airlift_lite/pins.c | 6 + .../boards/metro_m4_express/board.c | 30 +-- .../boards/metro_m4_express/mpconfigboard.h | 6 + .../atmel-samd/boards/metro_m4_express/pins.c | 6 + ports/atmel-samd/boards/mini_sam_m4/board.c | 30 +-- .../boards/mini_sam_m4/mpconfigboard.h | 6 + ports/atmel-samd/boards/mini_sam_m4/pins.c | 6 + ports/atmel-samd/boards/monster_m4sk/board.c | 30 +-- .../boards/monster_m4sk/mpconfigboard.h | 6 + ports/atmel-samd/boards/monster_m4sk/pins.c | 6 + .../atmel-samd/boards/ndgarage_ndbit6/board.c | 30 +-- .../boards/ndgarage_ndbit6/mpconfigboard.h | 6 + .../atmel-samd/boards/ndgarage_ndbit6/pins.c | 6 + .../boards/ndgarage_ndbit6_v2/board.c | 30 +-- .../boards/ndgarage_ndbit6_v2/mpconfigboard.h | 6 + .../boards/ndgarage_ndbit6_v2/pins.c | 6 + .../boards/neopixel_trinkey_m0/board.c | 30 +-- .../neopixel_trinkey_m0/mpconfigboard.h | 6 + .../boards/neopixel_trinkey_m0/pins.c | 6 + ports/atmel-samd/boards/nfc_copy_cat/board.c | 30 +-- .../boards/nfc_copy_cat/mpconfigboard.h | 6 + ports/atmel-samd/boards/nfc_copy_cat/pins.c | 6 + ports/atmel-samd/boards/openbook_m4/board.c | 30 +-- .../boards/openbook_m4/mpconfigboard.h | 6 + ports/atmel-samd/boards/openbook_m4/pins.c | 6 + ports/atmel-samd/boards/p1am_200/board.c | 30 +-- .../boards/p1am_200/mpconfigboard.h | 6 + ports/atmel-samd/boards/p1am_200/pins.c | 6 + ports/atmel-samd/boards/pewpew10/board.c | 30 +-- .../boards/pewpew10/mpconfigboard.h | 6 + ports/atmel-samd/boards/pewpew10/pins.c | 6 + ports/atmel-samd/boards/pewpew_lcd/board.c | 31 +-- .../boards/pewpew_lcd/mpconfigboard.h | 6 + ports/atmel-samd/boards/pewpew_lcd/pins.c | 6 + ports/atmel-samd/boards/pewpew_m4/board.c | 31 +-- .../boards/pewpew_m4/mpconfigboard.h | 6 + ports/atmel-samd/boards/pewpew_m4/pins.c | 6 + ports/atmel-samd/boards/picoplanet/board.c | 30 +-- .../boards/picoplanet/mpconfigboard.h | 6 + ports/atmel-samd/boards/picoplanet/pins.c | 6 + ports/atmel-samd/boards/pybadge/board.c | 30 +-- .../atmel-samd/boards/pybadge/mpconfigboard.h | 6 + ports/atmel-samd/boards/pybadge/pins.c | 6 + ports/atmel-samd/boards/pycubed/board.c | 30 +-- .../atmel-samd/boards/pycubed/mpconfigboard.h | 6 + ports/atmel-samd/boards/pycubed/pins.c | 6 + ports/atmel-samd/boards/pycubed_mram/board.c | 30 +-- .../boards/pycubed_mram/mpconfigboard.h | 6 + ports/atmel-samd/boards/pycubed_mram/pins.c | 6 + .../boards/pycubed_mram_v05/board.c | 30 +-- .../boards/pycubed_mram_v05/mpconfigboard.h | 6 + .../atmel-samd/boards/pycubed_mram_v05/pins.c | 6 + ports/atmel-samd/boards/pycubed_v05/board.c | 30 +-- .../boards/pycubed_v05/mpconfigboard.h | 6 + ports/atmel-samd/boards/pycubed_v05/pins.c | 6 + ports/atmel-samd/boards/pygamer/board.c | 30 +-- .../atmel-samd/boards/pygamer/mpconfigboard.h | 6 + ports/atmel-samd/boards/pygamer/pins.c | 6 + ports/atmel-samd/boards/pyportal/board.c | 30 +-- .../boards/pyportal/mpconfigboard.h | 6 + ports/atmel-samd/boards/pyportal/pins.c | 6 + .../atmel-samd/boards/pyportal_titano/board.c | 30 +-- .../boards/pyportal_titano/mpconfigboard.h | 6 + .../atmel-samd/boards/pyportal_titano/pins.c | 6 + ports/atmel-samd/boards/pyruler/board.c | 30 +-- .../atmel-samd/boards/pyruler/mpconfigboard.h | 6 + ports/atmel-samd/boards/pyruler/pins.c | 6 + ports/atmel-samd/boards/qtpy_m0/board.c | 30 +-- .../atmel-samd/boards/qtpy_m0/mpconfigboard.h | 6 + ports/atmel-samd/boards/qtpy_m0/pins.c | 6 + .../boards/qtpy_m0_haxpress/board.c | 30 +-- .../boards/qtpy_m0_haxpress/mpconfigboard.h | 6 + .../atmel-samd/boards/qtpy_m0_haxpress/pins.c | 6 + ports/atmel-samd/boards/robohatmm1_m4/board.c | 30 +-- .../boards/robohatmm1_m4/mpconfigboard.h | 6 + ports/atmel-samd/boards/robohatmm1_m4/pins.c | 6 + ports/atmel-samd/boards/sam32/board.c | 30 +-- ports/atmel-samd/boards/sam32/mpconfigboard.h | 6 + ports/atmel-samd/boards/sam32/pins.c | 6 + .../atmel-samd/boards/same54_xplained/board.c | 30 +-- .../boards/same54_xplained/mpconfigboard.h | 6 + .../atmel-samd/boards/same54_xplained/pins.c | 6 + .../boards/seeeduino_wio_terminal/board.c | 30 +-- .../seeeduino_wio_terminal/mpconfigboard.h | 6 + .../boards/seeeduino_wio_terminal/pins.c | 6 + .../atmel-samd/boards/seeeduino_xiao/board.c | 30 +-- .../boards/seeeduino_xiao/mpconfigboard.h | 6 + ports/atmel-samd/boards/seeeduino_xiao/pins.c | 6 + .../boards/seeeduino_xiao_kb/board.c | 30 +-- .../boards/seeeduino_xiao_kb/mpconfigboard.h | 6 + .../boards/seeeduino_xiao_kb/pins.c | 6 + ports/atmel-samd/boards/sensebox_mcu/board.c | 30 +-- .../boards/sensebox_mcu/mpconfigboard.h | 6 + ports/atmel-samd/boards/sensebox_mcu/pins.c | 6 + ports/atmel-samd/boards/serpente/board.c | 30 +-- .../boards/serpente/mpconfigboard.h | 6 + ports/atmel-samd/boards/serpente/pins.c | 6 + ports/atmel-samd/boards/shirtty/board.c | 30 +-- .../atmel-samd/boards/shirtty/mpconfigboard.h | 6 + ports/atmel-samd/boards/shirtty/pins.c | 6 + .../boards/silicognition-m4-shim/board.c | 30 +-- .../silicognition-m4-shim/mpconfigboard.h | 6 + .../boards/silicognition-m4-shim/pins.c | 6 + ports/atmel-samd/boards/snekboard/board.c | 30 +-- .../boards/snekboard/mpconfigboard.h | 6 + ports/atmel-samd/boards/snekboard/pins.c | 6 + .../boards/sparkfun_lumidrive/board.c | 30 +-- .../boards/sparkfun_lumidrive/mpconfigboard.h | 6 + .../boards/sparkfun_lumidrive/pins.c | 6 + .../sparkfun_qwiic_micro_no_flash/board.c | 30 +-- .../mpconfigboard.h | 6 + .../sparkfun_qwiic_micro_no_flash/pins.c | 6 + .../sparkfun_qwiic_micro_with_flash/board.c | 30 +-- .../mpconfigboard.h | 6 + .../sparkfun_qwiic_micro_with_flash/pins.c | 6 + .../boards/sparkfun_redboard_turbo/board.c | 30 +-- .../sparkfun_redboard_turbo/mpconfigboard.h | 6 + .../boards/sparkfun_redboard_turbo/pins.c | 6 + .../boards/sparkfun_samd21_dev/board.c | 30 +-- .../sparkfun_samd21_dev/mpconfigboard.h | 6 + .../boards/sparkfun_samd21_dev/pins.c | 6 + .../boards/sparkfun_samd21_mini/board.c | 30 +-- .../sparkfun_samd21_mini/mpconfigboard.h | 6 + .../boards/sparkfun_samd21_mini/pins.c | 6 + .../boards/sparkfun_samd51_micromod/board.c | 30 +-- .../sparkfun_samd51_micromod/mpconfigboard.h | 6 + .../boards/sparkfun_samd51_micromod/pins.c | 32 +-- .../boards/sparkfun_samd51_thing_plus/board.c | 30 +-- .../mpconfigboard.h | 6 + .../boards/sparkfun_samd51_thing_plus/pins.c | 6 + .../boards/stackrduino_m0_pro/board.c | 30 +-- .../boards/stackrduino_m0_pro/mpconfigboard.h | 6 + .../boards/stackrduino_m0_pro/pins.c | 6 + .../boards/stringcar_m0_express/board.c | 30 +-- .../stringcar_m0_express/mpconfigboard.h | 6 + .../boards/stringcar_m0_express/pins.c | 6 + .../boards/trellis_m4_express/board.c | 30 +-- .../boards/trellis_m4_express/mpconfigboard.h | 6 + .../boards/trellis_m4_express/pins.c | 6 + ports/atmel-samd/boards/trinket_m0/board.c | 30 +-- .../boards/trinket_m0/mpconfigboard.h | 6 + ports/atmel-samd/boards/trinket_m0/pins.c | 6 + .../boards/trinket_m0_haxpress/board.c | 30 +-- .../trinket_m0_haxpress/mpconfigboard.h | 6 + .../boards/trinket_m0_haxpress/pins.c | 6 + ports/atmel-samd/boards/uartlogger2/board.c | 30 +-- .../boards/uartlogger2/mpconfigboard.h | 6 + ports/atmel-samd/boards/uartlogger2/pins.c | 6 + ports/atmel-samd/boards/uchip/board.c | 30 +-- ports/atmel-samd/boards/uchip/mpconfigboard.h | 6 + ports/atmel-samd/boards/uchip/pins.c | 6 + ports/atmel-samd/boards/ugame10/board.c | 31 +-- .../atmel-samd/boards/ugame10/mpconfigboard.h | 6 + ports/atmel-samd/boards/ugame10/pins.c | 6 + .../winterbloom_big_honking_button/board.c | 30 +-- .../mpconfigboard.h | 6 + .../winterbloom_big_honking_button/pins.c | 6 + .../usermods/_bhb/bhb.c | 6 + .../atmel-samd/boards/winterbloom_sol/board.c | 30 +-- .../boards/winterbloom_sol/mpconfigboard.h | 6 + .../atmel-samd/boards/winterbloom_sol/pins.c | 6 + ports/atmel-samd/boards/xinabox_cc03/board.c | 30 +-- .../boards/xinabox_cc03/mpconfigboard.h | 6 + ports/atmel-samd/boards/xinabox_cc03/pins.c | 6 + ports/atmel-samd/boards/xinabox_cs11/board.c | 30 +-- .../boards/xinabox_cs11/mpconfigboard.h | 6 + ports/atmel-samd/boards/xinabox_cs11/pins.c | 6 + ports/atmel-samd/common-hal/_pew/PewPew.c | 30 +-- ports/atmel-samd/common-hal/_pew/PewPew.h | 30 +-- ports/atmel-samd/common-hal/_pew/__init__.c | 30 +-- ports/atmel-samd/common-hal/_pew/__init__.h | 30 +-- .../atmel-samd/common-hal/alarm/SleepMemory.c | 30 +-- .../atmel-samd/common-hal/alarm/SleepMemory.h | 30 +-- ports/atmel-samd/common-hal/alarm/__init__.c | 30 +-- ports/atmel-samd/common-hal/alarm/__init__.h | 30 +-- .../common-hal/alarm/coproc/CoprocAlarm.c | 6 + .../common-hal/alarm/coproc/CoprocAlarm.h | 6 + .../common-hal/alarm/pin/PinAlarm.c | 30 +-- .../common-hal/alarm/pin/PinAlarm.h | 30 +-- .../common-hal/alarm/time/TimeAlarm.c | 30 +-- .../common-hal/alarm/time/TimeAlarm.h | 30 +-- .../common-hal/alarm/touch/TouchAlarm.c | 30 +-- .../common-hal/alarm/touch/TouchAlarm.h | 30 +-- .../atmel-samd/common-hal/analogio/AnalogIn.c | 30 +-- .../atmel-samd/common-hal/analogio/AnalogIn.h | 30 +-- .../common-hal/analogio/AnalogOut.c | 30 +-- .../common-hal/analogio/AnalogOut.h | 30 +-- .../atmel-samd/common-hal/analogio/__init__.c | 6 + .../atmel-samd/common-hal/audiobusio/I2SOut.c | 30 +-- .../atmel-samd/common-hal/audiobusio/I2SOut.h | 30 +-- .../atmel-samd/common-hal/audiobusio/PDMIn.c | 30 +-- .../atmel-samd/common-hal/audiobusio/PDMIn.h | 30 +-- .../common-hal/audiobusio/__init__.c | 6 + .../atmel-samd/common-hal/audioio/AudioOut.c | 30 +-- .../atmel-samd/common-hal/audioio/AudioOut.h | 30 +-- .../atmel-samd/common-hal/audioio/__init__.c | 6 + ports/atmel-samd/common-hal/board/__init__.c | 30 +-- ports/atmel-samd/common-hal/busio/I2C.c | 30 +-- ports/atmel-samd/common-hal/busio/I2C.h | 30 +-- ports/atmel-samd/common-hal/busio/SPI.c | 30 +-- ports/atmel-samd/common-hal/busio/SPI.h | 30 +-- ports/atmel-samd/common-hal/busio/UART.c | 30 +-- ports/atmel-samd/common-hal/busio/UART.h | 30 +-- ports/atmel-samd/common-hal/busio/__init__.c | 30 +-- ports/atmel-samd/common-hal/busio/__init__.h | 30 +-- ports/atmel-samd/common-hal/canio/CAN.c | 30 +-- ports/atmel-samd/common-hal/canio/CAN.h | 30 +-- ports/atmel-samd/common-hal/canio/Listener.c | 30 +-- ports/atmel-samd/common-hal/canio/Listener.h | 30 +-- ports/atmel-samd/common-hal/canio/__init__.c | 30 +-- ports/atmel-samd/common-hal/canio/__init__.h | 30 +-- ports/atmel-samd/common-hal/countio/Counter.c | 6 + ports/atmel-samd/common-hal/countio/Counter.h | 6 + .../atmel-samd/common-hal/countio/__init__.c | 6 + .../common-hal/digitalio/DigitalInOut.c | 30 +-- .../common-hal/digitalio/DigitalInOut.h | 30 +-- .../common-hal/digitalio/__init__.c | 6 + .../atmel-samd/common-hal/floppyio/__init__.c | 5 + .../atmel-samd/common-hal/floppyio/__init__.h | 30 +-- .../common-hal/frequencyio/FrequencyIn.c | 30 +-- .../common-hal/frequencyio/FrequencyIn.h | 30 +-- .../common-hal/frequencyio/__init__.c | 6 + .../common-hal/i2ctarget/I2CTarget.c | 30 +-- .../common-hal/i2ctarget/I2CTarget.h | 30 +-- .../common-hal/i2ctarget/__init__.c | 6 + .../imagecapture/ParallelImageCapture.c | 30 +-- .../imagecapture/ParallelImageCapture.h | 30 +-- .../common-hal/imagecapture/__init__.c | 5 + .../common-hal/imagecapture/__init__.h | 5 + .../atmel-samd/common-hal/max3421e/Max3421E.c | 30 +-- .../atmel-samd/common-hal/max3421e/Max3421E.h | 30 +-- .../common-hal/microcontroller/Pin.c | 30 +-- .../common-hal/microcontroller/Pin.h | 30 +-- .../common-hal/microcontroller/Processor.c | 30 +-- .../common-hal/microcontroller/Processor.h | 30 +-- .../common-hal/microcontroller/__init__.c | 30 +-- .../common-hal/neopixel_write/__init__.c | 30 +-- ports/atmel-samd/common-hal/nvm/ByteArray.c | 30 +-- ports/atmel-samd/common-hal/nvm/ByteArray.h | 30 +-- ports/atmel-samd/common-hal/nvm/__init__.c | 30 +-- ports/atmel-samd/common-hal/os/__init__.c | 30 +-- .../paralleldisplaybus/ParallelBus.c | 30 +-- .../paralleldisplaybus/ParallelBus.h | 30 +-- ports/atmel-samd/common-hal/ps2io/Ps2.c | 32 +-- ports/atmel-samd/common-hal/ps2io/Ps2.h | 32 +-- ports/atmel-samd/common-hal/ps2io/__init__.c | 6 + ports/atmel-samd/common-hal/pulseio/PulseIn.c | 30 +-- ports/atmel-samd/common-hal/pulseio/PulseIn.h | 30 +-- .../atmel-samd/common-hal/pulseio/PulseOut.c | 30 +-- .../atmel-samd/common-hal/pulseio/PulseOut.h | 30 +-- .../atmel-samd/common-hal/pulseio/__init__.c | 6 + ports/atmel-samd/common-hal/pwmio/PWMOut.c | 32 +-- ports/atmel-samd/common-hal/pwmio/PWMOut.h | 30 +-- ports/atmel-samd/common-hal/pwmio/__init__.c | 6 + .../common-hal/rgbmatrix/RGBMatrix.c | 30 +-- .../common-hal/rgbmatrix/RGBMatrix.h | 30 +-- .../common-hal/rgbmatrix/__init__.c | 5 + .../common-hal/rotaryio/IncrementalEncoder.c | 30 +-- .../common-hal/rotaryio/IncrementalEncoder.h | 30 +-- .../atmel-samd/common-hal/rotaryio/__init__.c | 6 + ports/atmel-samd/common-hal/rtc/RTC.c | 30 +-- ports/atmel-samd/common-hal/rtc/RTC.h | 30 +-- ports/atmel-samd/common-hal/rtc/__init__.c | 5 + ports/atmel-samd/common-hal/sdioio/SDCard.c | 30 +-- ports/atmel-samd/common-hal/sdioio/SDCard.h | 30 +-- ports/atmel-samd/common-hal/sdioio/__init__.c | 5 + ports/atmel-samd/common-hal/sdioio/__init__.h | 5 + ports/atmel-samd/common-hal/touchio/TouchIn.c | 30 +-- ports/atmel-samd/common-hal/touchio/TouchIn.h | 30 +-- .../atmel-samd/common-hal/touchio/__init__.c | 6 + .../common-hal/watchdog/WatchDogMode.c | 5 + .../common-hal/watchdog/WatchDogTimer.c | 30 +-- .../common-hal/watchdog/WatchDogTimer.h | 30 +-- .../atmel-samd/common-hal/watchdog/__init__.c | 5 + ports/atmel-samd/eic_handler.c | 30 +-- ports/atmel-samd/eic_handler.h | 30 +-- ports/atmel-samd/ld_defines.c | 6 + ports/atmel-samd/mpconfigport.h | 30 +-- ports/atmel-samd/mphalport.c | 30 +-- ports/atmel-samd/mphalport.h | 30 +-- ports/atmel-samd/qstrdefsport.h | 6 + ports/atmel-samd/reset.c | 30 +-- ports/atmel-samd/reset.h | 30 +-- ports/atmel-samd/samd_peripherals_config.h | 30 +-- ports/atmel-samd/sd_mmc/conf_sd_mmc.h | 6 + ports/atmel-samd/sd_mmc/sd_mmc.c | 6 + ports/atmel-samd/sd_mmc/sd_mmc.h | 6 + ports/atmel-samd/sd_mmc/sd_mmc_protocol.h | 6 + ports/atmel-samd/supervisor/internal_flash.c | 30 +-- ports/atmel-samd/supervisor/internal_flash.h | 30 +-- ports/atmel-samd/supervisor/port.c | 30 +-- ports/atmel-samd/supervisor/qspi_flash.c | 30 +-- .../supervisor/samd_prevent_sleep.h | 30 +-- ports/atmel-samd/supervisor/usb.c | 30 +-- ports/atmel-samd/timer_handler.c | 30 +-- ports/atmel-samd/timer_handler.h | 30 +-- ports/atmel-samd/tools/gen_pin_name_table.py | 22 +- ports/broadcom/Makefile | 22 +- ports/broadcom/background.c | 30 +-- ports/broadcom/background.h | 30 +-- .../broadcom/bindings/videocore/Framebuffer.c | 30 +-- .../broadcom/bindings/videocore/Framebuffer.h | 30 +-- ports/broadcom/bindings/videocore/__init__.c | 30 +-- .../boards/diodes_delight_piunora/board.c | 30 +-- .../diodes_delight_piunora/mpconfigboard.h | 6 + .../boards/diodes_delight_piunora/pins.c | 6 + ports/broadcom/boards/raspberrypi_cm4/board.c | 30 +-- .../boards/raspberrypi_cm4/mpconfigboard.h | 6 + ports/broadcom/boards/raspberrypi_cm4/pins.c | 6 + .../broadcom/boards/raspberrypi_cm4io/board.c | 30 +-- .../boards/raspberrypi_cm4io/mpconfigboard.h | 6 + .../broadcom/boards/raspberrypi_cm4io/pins.c | 6 + .../broadcom/boards/raspberrypi_pi4b/board.c | 30 +-- .../boards/raspberrypi_pi4b/mpconfigboard.h | 6 + ports/broadcom/boards/raspberrypi_pi4b/pins.c | 6 + .../broadcom/boards/raspberrypi_zero/board.c | 30 +-- .../boards/raspberrypi_zero/mpconfigboard.h | 6 + ports/broadcom/boards/raspberrypi_zero/pins.c | 6 + .../boards/raspberrypi_zero2w/board.c | 30 +-- .../boards/raspberrypi_zero2w/mpconfigboard.h | 6 + .../broadcom/boards/raspberrypi_zero2w/pins.c | 6 + .../boards/raspberrypi_zero_w/board.c | 30 +-- .../boards/raspberrypi_zero_w/mpconfigboard.h | 6 + .../broadcom/boards/raspberrypi_zero_w/pins.c | 6 + ports/broadcom/broadcom_peripherals_config.h | 30 +-- ports/broadcom/common-hal/board/__init__.c | 30 +-- ports/broadcom/common-hal/busio/I2C.c | 30 +-- ports/broadcom/common-hal/busio/I2C.h | 30 +-- ports/broadcom/common-hal/busio/SPI.c | 30 +-- ports/broadcom/common-hal/busio/SPI.h | 30 +-- ports/broadcom/common-hal/busio/UART.c | 30 +-- ports/broadcom/common-hal/busio/UART.h | 30 +-- ports/broadcom/common-hal/busio/__init__.c | 6 + .../common-hal/digitalio/DigitalInOut.c | 30 +-- .../common-hal/digitalio/DigitalInOut.h | 30 +-- .../broadcom/common-hal/digitalio/__init__.c | 6 + .../broadcom/common-hal/microcontroller/Pin.c | 30 +-- .../broadcom/common-hal/microcontroller/Pin.h | 30 +-- .../common-hal/microcontroller/Processor.c | 30 +-- .../common-hal/microcontroller/Processor.h | 30 +-- .../common-hal/microcontroller/__init__.c | 30 +-- .../common-hal/microcontroller/__init__.h | 30 +-- .../common-hal/neopixel_write/__init__.c | 30 +-- ports/broadcom/common-hal/os/__init__.c | 30 +-- ports/broadcom/common-hal/rtc/RTC.c | 32 +-- ports/broadcom/common-hal/rtc/RTC.h | 32 +-- ports/broadcom/common-hal/rtc/__init__.c | 5 + ports/broadcom/common-hal/sdioio/SDCard.c | 30 +-- ports/broadcom/common-hal/sdioio/SDCard.h | 30 +-- ports/broadcom/common-hal/sdioio/__init__.c | 5 + ports/broadcom/common-hal/sdioio/__init__.h | 5 + .../common-hal/videocore/Framebuffer.c | 6 + .../common-hal/videocore/Framebuffer.h | 32 +-- ports/broadcom/mpconfigport.h | 30 +-- ports/broadcom/mphalport.c | 6 + ports/broadcom/mphalport.h | 30 +-- ports/broadcom/qstrdefsport.h | 30 +-- ports/broadcom/supervisor/internal_flash.c | 30 +-- ports/broadcom/supervisor/internal_flash.h | 30 +-- ports/broadcom/supervisor/port.c | 30 +-- ports/broadcom/supervisor/usb.c | 30 +-- ports/cxd56/Makefile | 24 +- ports/cxd56/alloca.h | 6 + ports/cxd56/background.c | 30 +-- ports/cxd56/background.h | 30 +-- ports/cxd56/boards/spresense/board.c | 30 +-- ports/cxd56/boards/spresense/mpconfigboard.h | 30 +-- ports/cxd56/boards/spresense/pins.c | 30 +-- ports/cxd56/common-hal/analogio/AnalogIn.c | 30 +-- ports/cxd56/common-hal/analogio/AnalogIn.h | 30 +-- ports/cxd56/common-hal/analogio/AnalogOut.c | 30 +-- ports/cxd56/common-hal/analogio/AnalogOut.h | 30 +-- ports/cxd56/common-hal/analogio/__init__.c | 6 + ports/cxd56/common-hal/board/__init__.c | 6 + ports/cxd56/common-hal/busio/I2C.c | 30 +-- ports/cxd56/common-hal/busio/I2C.h | 30 +-- ports/cxd56/common-hal/busio/SPI.c | 30 +-- ports/cxd56/common-hal/busio/SPI.h | 30 +-- ports/cxd56/common-hal/busio/UART.c | 30 +-- ports/cxd56/common-hal/busio/UART.h | 30 +-- ports/cxd56/common-hal/busio/__init__.c | 6 + ports/cxd56/common-hal/camera/Camera.c | 30 +-- ports/cxd56/common-hal/camera/Camera.h | 30 +-- ports/cxd56/common-hal/camera/__init__.c | 6 + .../cxd56/common-hal/digitalio/DigitalInOut.c | 30 +-- .../cxd56/common-hal/digitalio/DigitalInOut.h | 30 +-- ports/cxd56/common-hal/digitalio/__init__.c | 6 + ports/cxd56/common-hal/gnss/GNSS.c | 30 +-- ports/cxd56/common-hal/gnss/GNSS.h | 30 +-- ports/cxd56/common-hal/gnss/PositionFix.c | 5 + ports/cxd56/common-hal/gnss/SatelliteSystem.c | 5 + ports/cxd56/common-hal/gnss/__init__.c | 5 + ports/cxd56/common-hal/microcontroller/Pin.c | 30 +-- ports/cxd56/common-hal/microcontroller/Pin.h | 30 +-- .../common-hal/microcontroller/Processor.c | 30 +-- .../common-hal/microcontroller/Processor.h | 30 +-- .../common-hal/microcontroller/__init__.c | 30 +-- ports/cxd56/common-hal/os/__init__.c | 30 +-- ports/cxd56/common-hal/pulseio/PulseIn.c | 30 +-- ports/cxd56/common-hal/pulseio/PulseIn.h | 30 +-- ports/cxd56/common-hal/pulseio/PulseOut.c | 30 +-- ports/cxd56/common-hal/pulseio/PulseOut.h | 30 +-- ports/cxd56/common-hal/pulseio/__init__.c | 6 + ports/cxd56/common-hal/pwmio/PWMOut.c | 30 +-- ports/cxd56/common-hal/pwmio/PWMOut.h | 30 +-- ports/cxd56/common-hal/pwmio/__init__.c | 6 + ports/cxd56/common-hal/rtc/RTC.c | 30 +-- ports/cxd56/common-hal/rtc/RTC.h | 30 +-- ports/cxd56/common-hal/rtc/__init__.c | 6 + ports/cxd56/common-hal/sdioio/SDCard.c | 30 +-- ports/cxd56/common-hal/sdioio/SDCard.h | 30 +-- ports/cxd56/common-hal/sdioio/__init__.c | 5 + ports/cxd56/mpconfigport.h | 30 +-- ports/cxd56/mphalport.c | 30 +-- ports/cxd56/mphalport.h | 30 +-- ports/cxd56/qstrdefsport.h | 6 + ports/cxd56/supervisor/internal_flash.c | 30 +-- ports/cxd56/supervisor/internal_flash.h | 30 +-- ports/cxd56/supervisor/port.c | 30 +-- ports/cxd56/supervisor/usb.c | 30 +-- ports/espressif/Makefile | 22 +- ports/espressif/background.c | 30 +-- ports/espressif/background.h | 30 +-- ports/espressif/bindings/espcamera/Camera.c | 30 +-- ports/espressif/bindings/espcamera/Camera.h | 30 +-- ports/espressif/bindings/espcamera/__init__.c | 30 +-- ports/espressif/bindings/espcamera/__init__.h | 30 +-- ports/espressif/bindings/espidf/__init__.c | 30 +-- ports/espressif/bindings/espidf/__init__.h | 30 +-- ports/espressif/bindings/espnow/ESPNow.c | 36 +-- ports/espressif/bindings/espnow/ESPNow.h | 32 +-- .../espressif/bindings/espnow/ESPNowPacket.c | 30 +-- .../espressif/bindings/espnow/ESPNowPacket.h | 30 +-- ports/espressif/bindings/espnow/Peer.c | 30 +-- ports/espressif/bindings/espnow/Peer.h | 30 +-- ports/espressif/bindings/espnow/Peers.c | 30 +-- ports/espressif/bindings/espnow/Peers.h | 30 +-- ports/espressif/bindings/espnow/__init__.c | 30 +-- ports/espressif/bindings/espnow/__init__.h | 30 +-- .../espressif/bindings/espulp/Architecture.c | 30 +-- .../espressif/bindings/espulp/Architecture.h | 30 +-- ports/espressif/bindings/espulp/ULP.c | 30 +-- ports/espressif/bindings/espulp/ULP.h | 30 +-- ports/espressif/bindings/espulp/ULPAlarm.c | 30 +-- ports/espressif/bindings/espulp/ULPAlarm.h | 30 +-- ports/espressif/bindings/espulp/__init__.c | 30 +-- ports/espressif/bindings/espulp/__init__.h | 30 +-- .../boards/01space_lcd042_esp32c3/board.c | 32 +-- .../01space_lcd042_esp32c3/mpconfigboard.h | 30 +-- .../boards/01space_lcd042_esp32c3/pins.c | 30 +-- .../boards/adafruit_esp32s3_camera/board.c | 30 +-- .../adafruit_esp32s3_camera/mpconfigboard.h | 30 +-- .../boards/adafruit_esp32s3_camera/pins.c | 6 + .../boards/adafruit_feather_esp32_v2/board.c | 30 +-- .../adafruit_feather_esp32_v2/mpconfigboard.h | 30 +-- .../boards/adafruit_feather_esp32_v2/pins.c | 6 + .../board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../pins.c | 6 + .../boards/adafruit_feather_esp32s2/board.c | 30 +-- .../adafruit_feather_esp32s2/mpconfigboard.h | 30 +-- .../boards/adafruit_feather_esp32s2/pins.c | 6 + .../board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../pins.c | 6 + .../adafruit_feather_esp32s2_tft/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../adafruit_feather_esp32s2_tft/pins.c | 6 + .../board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../pins.c | 6 + .../adafruit_feather_esp32s3_nopsram/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../adafruit_feather_esp32s3_nopsram/pins.c | 6 + .../board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../pins.c | 6 + .../adafruit_feather_esp32s3_tft/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../adafruit_feather_esp32s3_tft/pins.c | 6 + .../boards/adafruit_feather_huzzah32/board.c | 30 +-- .../adafruit_feather_huzzah32/mpconfigboard.h | 30 +-- .../boards/adafruit_feather_huzzah32/pins.c | 6 + .../boards/adafruit_funhouse/board.c | 30 +-- .../boards/adafruit_funhouse/mpconfigboard.h | 30 +-- .../espressif/boards/adafruit_funhouse/pins.c | 6 + .../boards/adafruit_huzzah32_breakout/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../boards/adafruit_huzzah32_breakout/pins.c | 6 + .../boards/adafruit_itsybitsy_esp32/board.c | 30 +-- .../adafruit_itsybitsy_esp32/mpconfigboard.h | 30 +-- .../boards/adafruit_itsybitsy_esp32/pins.c | 6 + .../adafruit_magtag_2.9_grayscale/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../adafruit_magtag_2.9_grayscale/pins.c | 6 + .../boards/adafruit_matrixportal_s3/board.c | 30 +-- .../adafruit_matrixportal_s3/mpconfigboard.h | 30 +-- .../boards/adafruit_matrixportal_s3/pins.c | 6 + .../boards/adafruit_metro_esp32s2/board.c | 30 +-- .../adafruit_metro_esp32s2/mpconfigboard.h | 30 +-- .../boards/adafruit_metro_esp32s2/pins.c | 6 + .../boards/adafruit_metro_esp32s3/board.c | 30 +-- .../adafruit_metro_esp32s3/mpconfigboard.h | 30 +-- .../boards/adafruit_metro_esp32s3/pins.c | 6 + .../boards/adafruit_qtpy_esp32_pico/board.c | 30 +-- .../adafruit_qtpy_esp32_pico/mpconfigboard.h | 30 +-- .../boards/adafruit_qtpy_esp32_pico/pins.c | 6 + .../boards/adafruit_qtpy_esp32c3/board.c | 32 +-- .../adafruit_qtpy_esp32c3/mpconfigboard.h | 32 +-- .../boards/adafruit_qtpy_esp32c3/pins.c | 32 +-- .../boards/adafruit_qtpy_esp32s2/board.c | 30 +-- .../adafruit_qtpy_esp32s2/mpconfigboard.h | 30 +-- .../boards/adafruit_qtpy_esp32s2/pins.c | 6 + .../board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../pins.c | 6 + .../adafruit_qtpy_esp32s3_nopsram/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../adafruit_qtpy_esp32s3_nopsram/pins.c | 6 + .../boards/adafruit_qualia_s3_rgb666/board.c | 30 +-- .../adafruit_qualia_s3_rgb666/mpconfigboard.h | 30 +-- .../boards/adafruit_qualia_s3_rgb666/pins.c | 6 + .../boards/ai-thinker-esp32-cam/board.c | 30 +-- .../ai-thinker-esp32-cam/mpconfigboard.h | 30 +-- .../boards/ai-thinker-esp32-cam/pins.c | 6 + .../boards/ai_thinker_esp32-c3s-2m/board.c | 32 +-- .../ai_thinker_esp32-c3s-2m/mpconfigboard.h | 32 +-- .../boards/ai_thinker_esp32-c3s-2m/pins.c | 32 +-- .../boards/ai_thinker_esp32-c3s/board.c | 32 +-- .../ai_thinker_esp32-c3s/mpconfigboard.h | 32 +-- .../boards/ai_thinker_esp32-c3s/pins.c | 32 +-- .../boards/ai_thinker_esp_12k_nodemcu/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../boards/ai_thinker_esp_12k_nodemcu/pins.c | 6 + .../boards/arduino_nano_esp32s3/board.c | 30 +-- .../arduino_nano_esp32s3/mpconfigboard.h | 30 +-- .../boards/arduino_nano_esp32s3/pins.c | 6 + .../board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../pins.c | 6 + ports/espressif/boards/artisense_rd00/board.c | 30 +-- .../boards/artisense_rd00/mpconfigboard.h | 30 +-- ports/espressif/boards/artisense_rd00/pins.c | 6 + .../boards/atmegazero_esp32s2/board.c | 30 +-- .../boards/atmegazero_esp32s2/mpconfigboard.h | 30 +-- .../boards/atmegazero_esp32s2/pins.c | 6 + .../espressif/boards/beetle-esp32-c3/board.c | 30 +-- .../boards/beetle-esp32-c3/mpconfigboard.h | 30 +-- ports/espressif/boards/beetle-esp32-c3/pins.c | 6 + ports/espressif/boards/bpi_bit_s2/board.c | 30 +-- .../boards/bpi_bit_s2/mpconfigboard.h | 30 +-- ports/espressif/boards/bpi_bit_s2/pins.c | 6 + ports/espressif/boards/bpi_leaf_s3/board.c | 30 +-- .../boards/bpi_leaf_s3/mpconfigboard.h | 30 +-- ports/espressif/boards/bpi_leaf_s3/pins.c | 6 + ports/espressif/boards/bpi_picow_s3/board.c | 30 +-- .../boards/bpi_picow_s3/mpconfigboard.h | 30 +-- ports/espressif/boards/bpi_picow_s3/pins.c | 6 + .../boards/brainboardz_neuron/board.c | 30 +-- .../boards/brainboardz_neuron/mpconfigboard.h | 30 +-- .../boards/brainboardz_neuron/pins.c | 6 + .../boards/columbia-dsl-sensor/board.c | 30 +-- .../columbia-dsl-sensor/mpconfigboard.h | 30 +-- .../boards/columbia-dsl-sensor/pins.c | 6 + .../boards/crcibernetica-ideaboard/board.c | 30 +-- .../crcibernetica-ideaboard/mpconfigboard.h | 30 +-- .../boards/crcibernetica-ideaboard/pins.c | 6 + .../boards/crumpspace_crumps2/board.c | 30 +-- .../boards/crumpspace_crumps2/mpconfigboard.h | 30 +-- .../boards/crumpspace_crumps2/pins.c | 6 + .../cytron_maker_feather_aiot_s3/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../cytron_maker_feather_aiot_s3/pins.c | 6 + ports/espressif/boards/deneyap_kart/board.c | 30 +-- .../boards/deneyap_kart/mpconfigboard.h | 30 +-- ports/espressif/boards/deneyap_kart/pins.c | 6 + .../espressif/boards/deneyap_kart_1a/board.c | 30 +-- .../boards/deneyap_kart_1a/mpconfigboard.h | 30 +-- ports/espressif/boards/deneyap_kart_1a/pins.c | 6 + .../boards/deneyap_kart_1a_v2/board.c | 30 +-- .../boards/deneyap_kart_1a_v2/mpconfigboard.h | 30 +-- .../boards/deneyap_kart_1a_v2/pins.c | 6 + ports/espressif/boards/deneyap_kart_g/board.c | 30 +-- .../boards/deneyap_kart_g/mpconfigboard.h | 32 +-- ports/espressif/boards/deneyap_kart_g/pins.c | 6 + ports/espressif/boards/deneyap_mini/board.c | 30 +-- .../boards/deneyap_mini/mpconfigboard.h | 30 +-- ports/espressif/boards/deneyap_mini/pins.c | 6 + .../espressif/boards/deneyap_mini_v2/board.c | 30 +-- .../boards/deneyap_mini_v2/mpconfigboard.h | 30 +-- ports/espressif/boards/deneyap_mini_v2/pins.c | 6 + .../boards/doit_esp32_devkit_v1/board.c | 30 +-- .../doit_esp32_devkit_v1/mpconfigboard.h | 30 +-- .../boards/doit_esp32_devkit_v1/pins.c | 6 + .../boards/electroniccats_bastwifi/board.c | 30 +-- .../electroniccats_bastwifi/mpconfigboard.h | 30 +-- .../boards/electroniccats_bastwifi/pins.c | 6 + ports/espressif/boards/es3ink/board.c | 30 +-- ports/espressif/boards/es3ink/mpconfigboard.h | 30 +-- ports/espressif/boards/es3ink/pins.c | 6 + .../board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../pins.c | 6 + .../espressif_esp32_devkitc_v4_wrover/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../espressif_esp32_devkitc_v4_wrover/pins.c | 6 + .../boards/espressif_esp32_eye/board.c | 30 +-- .../espressif_esp32_eye/mpconfigboard.h | 30 +-- .../boards/espressif_esp32_eye/pins.c | 6 + .../boards/espressif_esp32_lyrat/board.c | 30 +-- .../espressif_esp32_lyrat/mpconfigboard.h | 30 +-- .../boards/espressif_esp32_lyrat/pins.c | 6 + .../espressif_esp32c3_devkitm_1_n4/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../espressif_esp32c3_devkitm_1_n4/pins.c | 30 +-- .../espressif_esp32c6_devkitc_1_n8/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../espressif_esp32c6_devkitc_1_n8/pins.c | 6 + .../espressif_esp32c6_devkitm_1_n4/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../espressif_esp32c6_devkitm_1_n4/pins.c | 30 +-- .../espressif_esp32h2_devkitm_1_n4/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../espressif_esp32h2_devkitm_1_n4/pins.c | 30 +-- .../espressif_esp32s2_devkitc_1_n4/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../espressif_esp32s2_devkitc_1_n4/pins.c | 6 + .../espressif_esp32s2_devkitc_1_n4r2/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../espressif_esp32s2_devkitc_1_n4r2/pins.c | 6 + .../espressif_esp32s2_devkitc_1_n8r2/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../espressif_esp32s2_devkitc_1_n8r2/pins.c | 6 + .../boards/espressif_esp32s3_box/board.c | 30 +-- .../espressif_esp32s3_box/mpconfigboard.h | 30 +-- .../boards/espressif_esp32s3_box/pins.c | 6 + .../boards/espressif_esp32s3_box_lite/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../boards/espressif_esp32s3_box_lite/pins.c | 6 + .../espressif_esp32s3_devkitc_1_n32r8/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../espressif_esp32s3_devkitc_1_n32r8/pins.c | 6 + .../espressif_esp32s3_devkitc_1_n8/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../espressif_esp32s3_devkitc_1_n8/pins.c | 6 + .../espressif_esp32s3_devkitc_1_n8r2/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../espressif_esp32s3_devkitc_1_n8r2/pins.c | 6 + .../espressif_esp32s3_devkitc_1_n8r8/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../espressif_esp32s3_devkitc_1_n8r8/pins.c | 6 + .../board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../pins.c | 6 + .../espressif_esp32s3_devkitm_1_n8/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../espressif_esp32s3_devkitm_1_n8/pins.c | 6 + .../boards/espressif_esp32s3_eye/board.c | 30 +-- .../espressif_esp32s3_eye/mpconfigboard.h | 30 +-- .../boards/espressif_esp32s3_eye/pins.c | 6 + .../boards/espressif_esp32s3_lcd_ev/board.c | 30 +-- .../boards/espressif_esp32s3_lcd_ev/board.h | 30 +-- .../espressif_esp32s3_lcd_ev/mpconfigboard.h | 30 +-- .../boards/espressif_esp32s3_lcd_ev/pins.c | 6 + .../espressif_esp32s3_usb_otg_n8/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../espressif_esp32s3_usb_otg_n8/pins.c | 6 + .../boards/espressif_hmi_devkit_1/board.c | 30 +-- .../espressif_hmi_devkit_1/mpconfigboard.h | 30 +-- .../boards/espressif_hmi_devkit_1/pins.c | 6 + .../boards/espressif_kaluga_1.3/board.c | 30 +-- .../espressif_kaluga_1.3/mpconfigboard.h | 30 +-- .../boards/espressif_kaluga_1.3/pins.c | 6 + .../boards/espressif_kaluga_1/board.c | 30 +-- .../boards/espressif_kaluga_1/mpconfigboard.h | 30 +-- .../boards/espressif_kaluga_1/pins.c | 6 + .../boards/espressif_saola_1_wroom/board.c | 30 +-- .../espressif_saola_1_wroom/mpconfigboard.h | 30 +-- .../boards/espressif_saola_1_wroom/pins.c | 6 + .../boards/espressif_saola_1_wrover/board.c | 30 +-- .../espressif_saola_1_wrover/mpconfigboard.h | 30 +-- .../boards/espressif_saola_1_wrover/pins.c | 6 + .../boards/firebeetle2_esp32s3/board.c | 30 +-- .../firebeetle2_esp32s3/mpconfigboard.h | 30 +-- .../boards/firebeetle2_esp32s3/pins.c | 6 + .../boards/flipperzero_wifi_dev/board.c | 30 +-- .../flipperzero_wifi_dev/mpconfigboard.h | 30 +-- .../boards/flipperzero_wifi_dev/pins.c | 6 + .../boards/franzininho_wifi_wroom/board.c | 30 +-- .../franzininho_wifi_wroom/mpconfigboard.h | 30 +-- .../boards/franzininho_wifi_wroom/pins.c | 6 + .../boards/franzininho_wifi_wrover/board.c | 30 +-- .../franzininho_wifi_wrover/mpconfigboard.h | 30 +-- .../boards/franzininho_wifi_wrover/pins.c | 6 + .../boards/gravitech_cucumber_m/board.c | 30 +-- .../gravitech_cucumber_m/mpconfigboard.h | 30 +-- .../boards/gravitech_cucumber_m/pins.c | 6 + .../boards/gravitech_cucumber_ms/board.c | 30 +-- .../gravitech_cucumber_ms/mpconfigboard.h | 30 +-- .../boards/gravitech_cucumber_ms/pins.c | 6 + .../boards/gravitech_cucumber_r/board.c | 30 +-- .../gravitech_cucumber_r/mpconfigboard.h | 30 +-- .../boards/gravitech_cucumber_r/pins.c | 6 + .../boards/gravitech_cucumber_rs/board.c | 30 +-- .../gravitech_cucumber_rs/mpconfigboard.h | 30 +-- .../boards/gravitech_cucumber_rs/pins.c | 6 + .../boards/hardkernel_odroid_go/board.c | 30 +-- .../hardkernel_odroid_go/mpconfigboard.h | 30 +-- .../boards/hardkernel_odroid_go/pins.c | 6 + .../heltec_esp32s3_wifi_lora_v3/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../boards/heltec_esp32s3_wifi_lora_v3/pins.c | 6 + ports/espressif/boards/hexky_s2/board.c | 30 +-- .../espressif/boards/hexky_s2/mpconfigboard.h | 30 +-- ports/espressif/boards/hexky_s2/pins.c | 6 + ports/espressif/boards/hiibot_iots2/board.c | 30 +-- .../boards/hiibot_iots2/mpconfigboard.h | 30 +-- ports/espressif/boards/hiibot_iots2/pins.c | 6 + ports/espressif/boards/lilygo_tdeck/board.c | 30 +-- .../boards/lilygo_tdeck/mpconfigboard.h | 30 +-- ports/espressif/boards/lilygo_tdeck/pins.c | 6 + .../boards/lilygo_tdisplay_s3/board.c | 30 +-- .../boards/lilygo_tdisplay_s3/mpconfigboard.h | 30 +-- .../boards/lilygo_tdisplay_s3/pins.c | 6 + .../boards/lilygo_tembed_esp32s3/board.c | 30 +-- .../lilygo_tembed_esp32s3/mpconfigboard.h | 30 +-- .../boards/lilygo_tembed_esp32s3/pins.c | 6 + .../boards/lilygo_ttgo_t-01c3/board.c | 6 + .../boards/lilygo_ttgo_t-01c3/mpconfigboard.h | 6 + .../boards/lilygo_ttgo_t-01c3/pins.c | 6 + .../boards/lilygo_ttgo_t-oi-plus/board.c | 30 +-- .../lilygo_ttgo_t-oi-plus/mpconfigboard.h | 6 + .../boards/lilygo_ttgo_t-oi-plus/pins.c | 6 + .../lilygo_ttgo_t8_esp32_s2_wroom/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../lilygo_ttgo_t8_esp32_s2_wroom/pins.c | 6 + .../boards/lilygo_ttgo_t8_s2/board.c | 30 +-- .../boards/lilygo_ttgo_t8_s2/mpconfigboard.h | 30 +-- .../espressif/boards/lilygo_ttgo_t8_s2/pins.c | 6 + .../boards/lilygo_ttgo_t8_s2_st7789/board.c | 30 +-- .../lilygo_ttgo_t8_s2_st7789/mpconfigboard.h | 30 +-- .../boards/lilygo_ttgo_t8_s2_st7789/pins.c | 6 + .../lilygo_ttgo_tdisplay_esp32_16m/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../lilygo_ttgo_tdisplay_esp32_16m/pins.c | 6 + .../lilygo_ttgo_tdisplay_esp32_4m/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../lilygo_ttgo_tdisplay_esp32_4m/pins.c | 6 + .../boards/lilygo_twatch_2020_v3/board.c | 30 +-- .../lilygo_twatch_2020_v3/mpconfigboard.h | 30 +-- .../boards/lilygo_twatch_2020_v3/pins.c | 6 + ports/espressif/boards/lolin_c3_mini/board.c | 30 +-- .../boards/lolin_c3_mini/mpconfigboard.h | 30 +-- ports/espressif/boards/lolin_c3_mini/pins.c | 6 + ports/espressif/boards/lolin_c3_pico/board.c | 30 +-- .../boards/lolin_c3_pico/mpconfigboard.h | 30 +-- ports/espressif/boards/lolin_c3_pico/pins.c | 6 + ports/espressif/boards/lolin_s2_mini/board.c | 30 +-- .../boards/lolin_s2_mini/mpconfigboard.h | 30 +-- ports/espressif/boards/lolin_s2_mini/pins.c | 6 + ports/espressif/boards/lolin_s2_pico/board.c | 30 +-- .../boards/lolin_s2_pico/mpconfigboard.h | 30 +-- ports/espressif/boards/lolin_s2_pico/pins.c | 6 + ports/espressif/boards/lolin_s3/board.c | 30 +-- .../espressif/boards/lolin_s3/mpconfigboard.h | 30 +-- ports/espressif/boards/lolin_s3/pins.c | 6 + ports/espressif/boards/lolin_s3_mini/board.c | 30 +-- .../boards/lolin_s3_mini/mpconfigboard.h | 30 +-- ports/espressif/boards/lolin_s3_mini/pins.c | 6 + ports/espressif/boards/lolin_s3_pro/board.c | 30 +-- .../boards/lolin_s3_pro/mpconfigboard.h | 30 +-- ports/espressif/boards/lolin_s3_pro/pins.c | 6 + .../boards/luatos_core_esp32c3/board.c | 30 +-- .../luatos_core_esp32c3/mpconfigboard.h | 30 +-- .../boards/luatos_core_esp32c3/pins.c | 6 + .../boards/luatos_core_esp32c3_ch343/board.c | 30 +-- .../luatos_core_esp32c3_ch343/mpconfigboard.h | 30 +-- .../boards/luatos_core_esp32c3_ch343/pins.c | 6 + .../boards/m5stack_atom_echo/board.c | 30 +-- .../boards/m5stack_atom_echo/mpconfigboard.h | 30 +-- .../espressif/boards/m5stack_atom_echo/pins.c | 6 + .../boards/m5stack_atom_lite/board.c | 30 +-- .../boards/m5stack_atom_lite/mpconfigboard.h | 30 +-- .../espressif/boards/m5stack_atom_lite/pins.c | 6 + .../boards/m5stack_atom_matrix/board.c | 30 +-- .../m5stack_atom_matrix/mpconfigboard.h | 30 +-- .../boards/m5stack_atom_matrix/pins.c | 6 + ports/espressif/boards/m5stack_atom_u/board.c | 30 +-- .../boards/m5stack_atom_u/mpconfigboard.h | 30 +-- ports/espressif/boards/m5stack_atom_u/pins.c | 6 + ports/espressif/boards/m5stack_atoms3/board.c | 30 +-- .../boards/m5stack_atoms3/mpconfigboard.h | 30 +-- ports/espressif/boards/m5stack_atoms3/pins.c | 6 + .../boards/m5stack_atoms3_lite/board.c | 30 +-- .../m5stack_atoms3_lite/mpconfigboard.h | 30 +-- .../boards/m5stack_atoms3_lite/pins.c | 6 + .../espressif/boards/m5stack_atoms3u/board.c | 30 +-- .../boards/m5stack_atoms3u/mpconfigboard.h | 30 +-- ports/espressif/boards/m5stack_atoms3u/pins.c | 6 + .../boards/m5stack_cardputer/board.c | 30 +-- .../boards/m5stack_cardputer/keymap.h | 6 + .../boards/m5stack_cardputer/mpconfigboard.h | 30 +-- .../espressif/boards/m5stack_cardputer/pins.c | 6 + ports/espressif/boards/m5stack_core2/board.c | 29 +- .../boards/m5stack_core2/mpconfigboard.h | 30 +-- ports/espressif/boards/m5stack_core2/pins.c | 6 + .../boards/m5stack_core_basic/board.c | 30 +-- .../boards/m5stack_core_basic/mpconfigboard.h | 30 +-- .../boards/m5stack_core_basic/pins.c | 6 + .../boards/m5stack_core_fire/board.c | 30 +-- .../boards/m5stack_core_fire/mpconfigboard.h | 30 +-- .../espressif/boards/m5stack_core_fire/pins.c | 6 + ports/espressif/boards/m5stack_cores3/board.c | 30 +-- .../boards/m5stack_cores3/mpconfigboard.h | 30 +-- ports/espressif/boards/m5stack_cores3/pins.c | 6 + ports/espressif/boards/m5stack_dial/board.c | 30 +-- .../boards/m5stack_dial/mpconfigboard.h | 30 +-- ports/espressif/boards/m5stack_dial/pins.c | 6 + .../espressif/boards/m5stack_m5paper/board.c | 30 +-- .../boards/m5stack_m5paper/mpconfigboard.h | 30 +-- ports/espressif/boards/m5stack_m5paper/pins.c | 6 + .../espressif/boards/m5stack_stamp_c3/board.c | 30 +-- .../boards/m5stack_stamp_c3/mpconfigboard.h | 30 +-- .../espressif/boards/m5stack_stamp_c3/pins.c | 6 + .../espressif/boards/m5stack_stick_c/board.c | 30 +-- .../boards/m5stack_stick_c/mpconfigboard.h | 30 +-- ports/espressif/boards/m5stack_stick_c/pins.c | 6 + .../boards/m5stack_stick_c_plus/board.c | 30 +-- .../m5stack_stick_c_plus/mpconfigboard.h | 30 +-- .../boards/m5stack_stick_c_plus/pins.c | 6 + .../boards/m5stack_timer_camera_x/board.c | 30 +-- .../m5stack_timer_camera_x/mpconfigboard.h | 30 +-- .../boards/m5stack_timer_camera_x/pins.c | 6 + .../boards/magiclick_s3_n4r2/board.c | 30 +-- .../boards/magiclick_s3_n4r2/mpconfigboard.h | 30 +-- .../espressif/boards/magiclick_s3_n4r2/pins.c | 6 + ports/espressif/boards/maker_badge/board.c | 30 +-- .../boards/maker_badge/mpconfigboard.h | 30 +-- ports/espressif/boards/maker_badge/pins.c | 6 + ports/espressif/boards/makerfabs_tft7/board.c | 30 +-- .../boards/makerfabs_tft7/mpconfigboard.h | 30 +-- ports/espressif/boards/makerfabs_tft7/pins.c | 6 + .../boards/makergo_esp32c3_supermini/board.c | 30 +-- .../makergo_esp32c3_supermini/mpconfigboard.h | 30 +-- .../boards/makergo_esp32c3_supermini/pins.c | 6 + .../boards/microdev_micro_c3/board.c | 30 +-- .../boards/microdev_micro_c3/mpconfigboard.h | 30 +-- .../espressif/boards/microdev_micro_c3/pins.c | 30 +-- .../boards/microdev_micro_s2/board.c | 30 +-- .../boards/microdev_micro_s2/mpconfigboard.h | 30 +-- .../espressif/boards/microdev_micro_s2/pins.c | 30 +-- .../espressif/boards/mixgo_ce_serial/board.c | 30 +-- .../boards/mixgo_ce_serial/mpconfigboard.h | 30 +-- ports/espressif/boards/mixgo_ce_serial/pins.c | 6 + ports/espressif/boards/mixgo_ce_udisk/board.c | 30 +-- .../boards/mixgo_ce_udisk/mpconfigboard.h | 30 +-- ports/espressif/boards/mixgo_ce_udisk/pins.c | 6 + .../boards/morpheans_morphesp-240/board.c | 30 +-- .../morpheans_morphesp-240/mpconfigboard.h | 30 +-- .../boards/morpheans_morphesp-240/pins.c | 6 + .../boards/muselab_nanoesp32_s2_wroom/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../boards/muselab_nanoesp32_s2_wroom/pins.c | 6 + .../muselab_nanoesp32_s2_wrover/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../boards/muselab_nanoesp32_s2_wrover/pins.c | 6 + .../boards/odt_pixelwing_esp32_s2/board.c | 30 +-- .../odt_pixelwing_esp32_s2/mpconfigboard.h | 30 +-- .../boards/odt_pixelwing_esp32_s2/pins.c | 6 + .../espressif/boards/oxocard_artwork/board.c | 30 +-- .../boards/oxocard_artwork/mpconfigboard.h | 30 +-- ports/espressif/boards/oxocard_artwork/pins.c | 6 + .../espressif/boards/oxocard_connect/board.c | 30 +-- .../boards/oxocard_connect/mpconfigboard.h | 30 +-- ports/espressif/boards/oxocard_connect/pins.c | 6 + ports/espressif/boards/oxocard_galaxy/board.c | 30 +-- .../boards/oxocard_galaxy/mpconfigboard.h | 30 +-- ports/espressif/boards/oxocard_galaxy/pins.c | 6 + .../espressif/boards/oxocard_science/board.c | 30 +-- .../boards/oxocard_science/mpconfigboard.h | 30 +-- ports/espressif/boards/oxocard_science/pins.c | 6 + .../boards/seeed_xiao_esp32c3/board.c | 30 +-- .../boards/seeed_xiao_esp32c3/mpconfigboard.h | 6 + .../boards/seeed_xiao_esp32c3/pins.c | 6 + .../boards/sensebox_mcu_esp32s2/board.c | 30 +-- .../sensebox_mcu_esp32s2/mpconfigboard.h | 30 +-- .../boards/sensebox_mcu_esp32s2/pins.c | 6 + .../smartbeedesigns_bee_data_logger/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../smartbeedesigns_bee_data_logger/pins.c | 6 + .../smartbeedesigns_bee_motion_s3/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../smartbeedesigns_bee_motion_s3/pins.c | 6 + .../boards/smartbeedesigns_bee_s3/board.c | 30 +-- .../smartbeedesigns_bee_s3/mpconfigboard.h | 30 +-- .../boards/smartbeedesigns_bee_s3/pins.c | 6 + .../boards/spotpear_esp32c3_lcd_1_44/board.c | 30 +-- .../spotpear_esp32c3_lcd_1_44/mpconfigboard.h | 30 +-- .../boards/spotpear_esp32c3_lcd_1_44/pins.c | 6 + ports/espressif/boards/sqfmi_watchy/board.c | 30 +-- .../boards/sqfmi_watchy/mpconfigboard.h | 30 +-- ports/espressif/boards/sqfmi_watchy/pins.c | 6 + .../boards/sunton_esp32_2424S012/board.c | 30 +-- .../sunton_esp32_2424S012/mpconfigboard.h | 30 +-- .../boards/sunton_esp32_2424S012/pins.c | 6 + .../boards/sunton_esp32_2432S028/board.c | 30 +-- .../sunton_esp32_2432S028/mpconfigboard.h | 30 +-- .../boards/sunton_esp32_2432S028/pins.c | 6 + .../boards/sunton_esp32_8048S070/board.c | 30 +-- .../sunton_esp32_8048S070/mpconfigboard.h | 30 +-- .../boards/sunton_esp32_8048S070/pins.c | 6 + .../boards/targett_module_clip_wroom/board.c | 30 +-- .../targett_module_clip_wroom/mpconfigboard.h | 30 +-- .../boards/targett_module_clip_wroom/pins.c | 6 + .../boards/targett_module_clip_wrover/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../boards/targett_module_clip_wrover/pins.c | 6 + .../boards/unexpectedmaker_bling/board.c | 30 +-- .../unexpectedmaker_bling/mpconfigboard.h | 30 +-- .../boards/unexpectedmaker_bling/pins.c | 6 + .../unexpectedmaker_blizzard_s3/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../boards/unexpectedmaker_blizzard_s3/pins.c | 6 + .../boards/unexpectedmaker_feathers2/board.c | 30 +-- .../unexpectedmaker_feathers2/mpconfigboard.h | 30 +-- .../boards/unexpectedmaker_feathers2/pins.c | 6 + .../unexpectedmaker_feathers2_neo/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../unexpectedmaker_feathers2_neo/pins.c | 6 + .../board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../pins.c | 6 + .../boards/unexpectedmaker_feathers3/board.c | 30 +-- .../unexpectedmaker_feathers3/mpconfigboard.h | 30 +-- .../boards/unexpectedmaker_feathers3/pins.c | 6 + .../boards/unexpectedmaker_nanos3/board.c | 30 +-- .../unexpectedmaker_nanos3/mpconfigboard.h | 30 +-- .../boards/unexpectedmaker_nanos3/pins.c | 6 + .../boards/unexpectedmaker_pros3/board.c | 30 +-- .../unexpectedmaker_pros3/mpconfigboard.h | 30 +-- .../boards/unexpectedmaker_pros3/pins.c | 6 + .../boards/unexpectedmaker_tinyc6/board.c | 30 +-- .../unexpectedmaker_tinyc6/mpconfigboard.h | 30 +-- .../boards/unexpectedmaker_tinyc6/pins.c | 6 + .../boards/unexpectedmaker_tinypico/board.c | 30 +-- .../unexpectedmaker_tinypico/mpconfigboard.h | 30 +-- .../boards/unexpectedmaker_tinypico/pins.c | 6 + .../unexpectedmaker_tinypico_nano/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../unexpectedmaker_tinypico_nano/pins.c | 6 + .../boards/unexpectedmaker_tinys2/board.c | 30 +-- .../unexpectedmaker_tinys2/mpconfigboard.h | 30 +-- .../boards/unexpectedmaker_tinys2/pins.c | 6 + .../boards/unexpectedmaker_tinys3/board.c | 30 +-- .../unexpectedmaker_tinys3/mpconfigboard.h | 30 +-- .../boards/unexpectedmaker_tinys3/pins.c | 6 + .../unexpectedmaker_tinywatch_s3/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../unexpectedmaker_tinywatch_s3/pins.c | 6 + .../waveshare_esp32_s2_pico_lcd/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../boards/waveshare_esp32_s2_pico_lcd/pins.c | 6 + .../boards/waveshare_esp32_s3_geek/board.c | 30 +-- .../waveshare_esp32_s3_geek/mpconfigboard.h | 30 +-- .../boards/waveshare_esp32_s3_geek/pins.c | 6 + .../waveshare_esp32_s3_lcd_1_28/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../boards/waveshare_esp32_s3_lcd_1_28/pins.c | 6 + .../boards/waveshare_esp32_s3_pico/board.c | 30 +-- .../waveshare_esp32_s3_pico/mpconfigboard.h | 30 +-- .../boards/waveshare_esp32_s3_pico/pins.c | 6 + .../boards/waveshare_esp32_s3_zero/board.c | 30 +-- .../waveshare_esp32_s3_zero/mpconfigboard.h | 30 +-- .../boards/waveshare_esp32_s3_zero/pins.c | 6 + .../boards/waveshare_esp32s2_pico/board.c | 30 +-- .../waveshare_esp32s2_pico/mpconfigboard.h | 30 +-- .../boards/waveshare_esp32s2_pico/pins.c | 6 + .../espressif/boards/weact_esp32c6_n4/board.c | 30 +-- .../boards/weact_esp32c6_n4/mpconfigboard.h | 30 +-- .../espressif/boards/weact_esp32c6_n4/pins.c | 30 +-- .../espressif/boards/weact_esp32c6_n8/board.c | 30 +-- .../boards/weact_esp32c6_n8/mpconfigboard.h | 30 +-- .../espressif/boards/weact_esp32c6_n8/pins.c | 30 +-- .../boards/wemos_lolin32_lite/board.c | 30 +-- .../boards/wemos_lolin32_lite/mpconfigboard.h | 30 +-- .../boards/wemos_lolin32_lite/pins.c | 6 + .../boards/yd_esp32_s3_n16r8/board.c | 30 +-- .../boards/yd_esp32_s3_n16r8/mpconfigboard.h | 30 +-- .../espressif/boards/yd_esp32_s3_n16r8/pins.c | 6 + .../espressif/boards/yd_esp32_s3_n8r8/board.c | 30 +-- .../boards/yd_esp32_s3_n8r8/mpconfigboard.h | 30 +-- .../espressif/boards/yd_esp32_s3_n8r8/pins.c | 6 + ports/espressif/common-hal/_bleio/Adapter.c | 34 +-- ports/espressif/common-hal/_bleio/Adapter.h | 34 +-- ports/espressif/common-hal/_bleio/Attribute.c | 30 +-- ports/espressif/common-hal/_bleio/Attribute.h | 30 +-- .../common-hal/_bleio/Characteristic.c | 31 +-- .../common-hal/_bleio/Characteristic.h | 32 +-- .../common-hal/_bleio/CharacteristicBuffer.c | 30 +-- .../common-hal/_bleio/CharacteristicBuffer.h | 30 +-- .../espressif/common-hal/_bleio/Connection.c | 32 +-- .../espressif/common-hal/_bleio/Connection.h | 32 +-- .../espressif/common-hal/_bleio/Descriptor.c | 34 +-- .../espressif/common-hal/_bleio/Descriptor.h | 34 +-- .../common-hal/_bleio/PacketBuffer.c | 30 +-- .../common-hal/_bleio/PacketBuffer.h | 30 +-- ports/espressif/common-hal/_bleio/Service.c | 32 +-- ports/espressif/common-hal/_bleio/Service.h | 32 +-- ports/espressif/common-hal/_bleio/UUID.c | 34 +-- ports/espressif/common-hal/_bleio/UUID.h | 34 +-- ports/espressif/common-hal/_bleio/__init__.c | 34 +-- ports/espressif/common-hal/_bleio/__init__.h | 30 +-- .../espressif/common-hal/_bleio/ble_events.c | 34 +-- .../espressif/common-hal/_bleio/ble_events.h | 34 +-- ports/espressif/common-hal/_bleio/bonding.c | 30 +-- ports/espressif/common-hal/_bleio/bonding.h | 30 +-- .../espressif/common-hal/alarm/SleepMemory.c | 32 +-- .../espressif/common-hal/alarm/SleepMemory.h | 30 +-- ports/espressif/common-hal/alarm/__init__.c | 32 +-- ports/espressif/common-hal/alarm/__init__.h | 30 +-- .../espressif/common-hal/alarm/pin/PinAlarm.c | 32 +-- .../espressif/common-hal/alarm/pin/PinAlarm.h | 30 +-- .../common-hal/alarm/time/TimeAlarm.c | 30 +-- .../common-hal/alarm/time/TimeAlarm.h | 30 +-- .../common-hal/alarm/touch/TouchAlarm.c | 30 +-- .../common-hal/alarm/touch/TouchAlarm.h | 30 +-- .../common-hal/analogbufio/BufferedIn.c | 33 +-- .../common-hal/analogbufio/BufferedIn.h | 32 +-- .../common-hal/analogbufio/__init__.c | 6 + .../espressif/common-hal/analogio/AnalogIn.c | 30 +-- .../espressif/common-hal/analogio/AnalogIn.h | 30 +-- .../espressif/common-hal/analogio/AnalogOut.c | 32 +-- .../espressif/common-hal/analogio/AnalogOut.h | 32 +-- .../espressif/common-hal/analogio/__init__.c | 6 + .../espressif/common-hal/audiobusio/I2SOut.c | 30 +-- .../espressif/common-hal/audiobusio/I2SOut.h | 30 +-- ports/espressif/common-hal/audiobusio/PDMIn.c | 5 + ports/espressif/common-hal/audiobusio/PDMIn.h | 5 + .../common-hal/audiobusio/__init__.c | 30 +-- .../common-hal/audiobusio/__init__.h | 30 +-- .../espressif/common-hal/audiomp3/__init__.c | 30 +-- ports/espressif/common-hal/board/__init__.c | 6 + ports/espressif/common-hal/busio/I2C.c | 30 +-- ports/espressif/common-hal/busio/I2C.h | 30 +-- ports/espressif/common-hal/busio/SPI.c | 30 +-- ports/espressif/common-hal/busio/SPI.h | 30 +-- ports/espressif/common-hal/busio/UART.c | 30 +-- ports/espressif/common-hal/busio/UART.h | 30 +-- ports/espressif/common-hal/busio/__init__.c | 6 + ports/espressif/common-hal/canio/CAN.c | 30 +-- ports/espressif/common-hal/canio/CAN.h | 30 +-- ports/espressif/common-hal/canio/Listener.c | 30 +-- ports/espressif/common-hal/canio/Listener.h | 30 +-- ports/espressif/common-hal/canio/__init__.c | 30 +-- ports/espressif/common-hal/canio/__init__.h | 30 +-- ports/espressif/common-hal/countio/Counter.c | 30 +-- ports/espressif/common-hal/countio/Counter.h | 30 +-- ports/espressif/common-hal/countio/__init__.c | 6 + .../common-hal/digitalio/DigitalInOut.c | 30 +-- .../common-hal/digitalio/DigitalInOut.h | 32 +-- .../espressif/common-hal/digitalio/__init__.c | 6 + .../dotclockframebuffer/DotClockFramebuffer.c | 30 +-- .../dotclockframebuffer/DotClockFramebuffer.h | 30 +-- .../common-hal/dotclockframebuffer/__init__.c | 5 + .../common-hal/dotclockframebuffer/__init__.h | 5 + .../espressif/common-hal/dualbank/__init__.c | 30 +-- .../espressif/common-hal/dualbank/__init__.h | 30 +-- ports/espressif/common-hal/espcamera/Camera.c | 30 +-- ports/espressif/common-hal/espcamera/Camera.h | 30 +-- ports/espressif/common-hal/espidf/__init__.c | 30 +-- ports/espressif/common-hal/espidf/__init__.h | 30 +-- ports/espressif/common-hal/espnow/ESPNow.c | 36 +-- ports/espressif/common-hal/espnow/ESPNow.h | 30 +-- ports/espressif/common-hal/espnow/__init__.c | 30 +-- ports/espressif/common-hal/espnow/__init__.h | 30 +-- ports/espressif/common-hal/espulp/ULP.c | 30 +-- ports/espressif/common-hal/espulp/ULP.h | 30 +-- ports/espressif/common-hal/espulp/ULPAlarm.c | 30 +-- ports/espressif/common-hal/espulp/ULPAlarm.h | 30 +-- ports/espressif/common-hal/espulp/__init__.c | 30 +-- .../common-hal/frequencyio/FrequencyIn.c | 30 +-- .../common-hal/frequencyio/FrequencyIn.h | 30 +-- .../common-hal/frequencyio/__init__.c | 6 + .../common-hal/i2ctarget/I2CTarget.c | 30 +-- .../common-hal/i2ctarget/I2CTarget.h | 30 +-- .../espressif/common-hal/i2ctarget/__init__.c | 6 + .../espressif/common-hal/max3421e/Max3421E.c | 30 +-- .../espressif/common-hal/max3421e/Max3421E.h | 30 +-- .../espressif/common-hal/mdns/RemoteService.c | 30 +-- .../espressif/common-hal/mdns/RemoteService.h | 30 +-- ports/espressif/common-hal/mdns/Server.c | 30 +-- ports/espressif/common-hal/mdns/Server.h | 30 +-- ports/espressif/common-hal/mdns/__init__.c | 6 + .../common-hal/memorymap/AddressRange.c | 30 +-- .../common-hal/memorymap/AddressRange.h | 30 +-- .../espressif/common-hal/memorymap/__init__.c | 6 + .../common-hal/microcontroller/Pin.c | 32 +-- .../common-hal/microcontroller/Pin.h | 30 +-- .../common-hal/microcontroller/Processor.c | 32 +-- .../common-hal/microcontroller/Processor.h | 30 +-- .../common-hal/microcontroller/__init__.c | 32 +-- .../common-hal/neopixel_write/__init__.c | 30 +-- ports/espressif/common-hal/nvm/ByteArray.c | 30 +-- ports/espressif/common-hal/nvm/ByteArray.h | 30 +-- ports/espressif/common-hal/nvm/__init__.c | 6 + ports/espressif/common-hal/os/__init__.c | 30 +-- .../paralleldisplaybus/ParallelBus.c | 30 +-- .../paralleldisplaybus/ParallelBus.h | 30 +-- ports/espressif/common-hal/ps2io/Ps2.c | 30 +-- ports/espressif/common-hal/ps2io/Ps2.h | 30 +-- ports/espressif/common-hal/ps2io/__init__.c | 6 + ports/espressif/common-hal/pulseio/PulseIn.c | 30 +-- ports/espressif/common-hal/pulseio/PulseIn.h | 30 +-- ports/espressif/common-hal/pulseio/PulseOut.c | 30 +-- ports/espressif/common-hal/pulseio/PulseOut.h | 30 +-- ports/espressif/common-hal/pulseio/__init__.c | 6 + ports/espressif/common-hal/pwmio/PWMOut.c | 30 +-- ports/espressif/common-hal/pwmio/PWMOut.h | 30 +-- ports/espressif/common-hal/pwmio/__init__.c | 6 + .../common-hal/rgbmatrix/RGBMatrix.c | 30 +-- .../common-hal/rgbmatrix/RGBMatrix.h | 30 +-- .../espressif/common-hal/rgbmatrix/__init__.c | 5 + .../espressif/common-hal/rgbmatrix/__init__.h | 5 + .../common-hal/rotaryio/IncrementalEncoder.c | 30 +-- .../common-hal/rotaryio/IncrementalEncoder.h | 30 +-- .../espressif/common-hal/rotaryio/__init__.c | 6 + ports/espressif/common-hal/rtc/RTC.c | 30 +-- ports/espressif/common-hal/rtc/RTC.h | 30 +-- ports/espressif/common-hal/rtc/__init__.c | 5 + .../espressif/common-hal/socketpool/Socket.c | 30 +-- .../espressif/common-hal/socketpool/Socket.h | 30 +-- .../common-hal/socketpool/SocketPool.c | 30 +-- .../common-hal/socketpool/SocketPool.h | 30 +-- .../common-hal/socketpool/__init__.c | 30 +-- .../common-hal/socketpool/__init__.h | 30 +-- ports/espressif/common-hal/time/__init__.c | 30 +-- ports/espressif/common-hal/touchio/TouchIn.c | 30 +-- ports/espressif/common-hal/touchio/TouchIn.h | 30 +-- ports/espressif/common-hal/touchio/__init__.c | 6 + .../common-hal/watchdog/WatchDogMode.c | 6 + .../common-hal/watchdog/WatchDogTimer.c | 30 +-- .../common-hal/watchdog/WatchDogTimer.h | 30 +-- .../espressif/common-hal/watchdog/__init__.c | 6 + ports/espressif/common-hal/wifi/Monitor.c | 30 +-- ports/espressif/common-hal/wifi/Monitor.h | 30 +-- ports/espressif/common-hal/wifi/Network.c | 30 +-- ports/espressif/common-hal/wifi/Network.h | 30 +-- ports/espressif/common-hal/wifi/Radio.c | 30 +-- ports/espressif/common-hal/wifi/Radio.h | 30 +-- .../common-hal/wifi/ScannedNetworks.c | 34 +-- .../common-hal/wifi/ScannedNetworks.h | 32 +-- ports/espressif/common-hal/wifi/__init__.c | 30 +-- ports/espressif/common-hal/wifi/__init__.h | 30 +-- ports/espressif/mpconfigport.h | 32 +-- ports/espressif/mphalport.c | 32 +-- ports/espressif/mphalport.h | 30 +-- ports/espressif/peripherals/esp32/pins.c | 30 +-- ports/espressif/peripherals/esp32/pins.h | 30 +-- ports/espressif/peripherals/esp32c3/pins.c | 30 +-- ports/espressif/peripherals/esp32c3/pins.h | 30 +-- ports/espressif/peripherals/esp32c6/pins.c | 30 +-- ports/espressif/peripherals/esp32c6/pins.h | 30 +-- ports/espressif/peripherals/esp32h2/pins.c | 30 +-- ports/espressif/peripherals/esp32h2/pins.h | 30 +-- ports/espressif/peripherals/esp32s2/pins.c | 30 +-- ports/espressif/peripherals/esp32s2/pins.h | 30 +-- ports/espressif/peripherals/esp32s3/pins.c | 30 +-- ports/espressif/peripherals/esp32s3/pins.h | 30 +-- ports/espressif/peripherals/i2c.c | 30 +-- ports/espressif/peripherals/i2c.h | 30 +-- ports/espressif/peripherals/pins.h | 30 +-- ports/espressif/peripherals/touch.c | 30 +-- ports/espressif/peripherals/touch.h | 30 +-- ports/espressif/pmic/axp192/axp192.c | 6 + ports/espressif/pmic/axp192/axp192.h | 31 +-- ports/espressif/qstrdefsport.h | 6 + ports/espressif/supervisor/internal_flash.c | 32 +-- ports/espressif/supervisor/internal_flash.h | 32 +-- ports/espressif/supervisor/port.c | 32 +-- ports/espressif/supervisor/serial.c | 30 +-- ports/espressif/supervisor/usb.c | 32 +-- ports/espressif/supervisor/usb_serial_jtag.c | 32 +-- ports/espressif/supervisor/usb_serial_jtag.h | 30 +-- ports/litex/Makefile | 22 +- ports/litex/background.c | 30 +-- ports/litex/background.h | 30 +-- ports/litex/boards/fomu/board.c | 30 +-- ports/litex/boards/fomu/csr.h | 6 + ports/litex/boards/fomu/generated/soc.h | 6 + ports/litex/boards/fomu/mpconfigboard.h | 30 +-- ports/litex/boards/fomu/pins.c | 6 + .../litex/common-hal/digitalio/DigitalInOut.c | 32 +-- .../litex/common-hal/digitalio/DigitalInOut.h | 32 +-- ports/litex/common-hal/digitalio/__init__.c | 6 + ports/litex/common-hal/microcontroller/Pin.c | 32 +-- ports/litex/common-hal/microcontroller/Pin.h | 30 +-- .../common-hal/microcontroller/Processor.c | 32 +-- .../common-hal/microcontroller/Processor.h | 30 +-- .../common-hal/microcontroller/__init__.c | 32 +-- .../common-hal/neopixel_write/__init__.c | 30 +-- ports/litex/common-hal/os/__init__.c | 30 +-- ports/litex/common-hal/time/__init__.c | 30 +-- ports/litex/hw/common.h | 6 + ports/litex/irq.h | 6 + ports/litex/mpconfigport.h | 32 +-- ports/litex/mphalport.c | 32 +-- ports/litex/mphalport.h | 30 +-- ports/litex/qstrdefsport.h | 6 + ports/litex/supervisor/internal_flash.c | 32 +-- ports/litex/supervisor/internal_flash.h | 32 +-- ports/litex/supervisor/port.c | 32 +-- ports/litex/supervisor/usb.c | 32 +-- ports/mimxrt10xx/Makefile | 22 +- ports/mimxrt10xx/background.c | 32 +-- ports/mimxrt10xx/background.h | 32 +-- .../boards/adafruit_metro_m7_1011_sd/board.c | 32 +-- .../adafruit_metro_m7_1011_sd/mpconfigboard.h | 7 + .../boards/adafruit_metro_m7_1011_sd/pins.c | 7 + ports/mimxrt10xx/boards/board.h | 30 +-- .../mimxrt10xx/boards/feather_m7_1011/board.c | 32 +-- .../boards/feather_m7_1011/mpconfigboard.h | 7 + .../mimxrt10xx/boards/feather_m7_1011/pins.c | 7 + .../boards/feather_mimxrt1011/board.c | 32 +-- .../boards/feather_mimxrt1011/mpconfigboard.h | 7 + .../boards/feather_mimxrt1011/pins.c | 7 + .../boards/feather_mimxrt1062/board.c | 32 +-- .../boards/feather_mimxrt1062/mpconfigboard.h | 7 + .../boards/feather_mimxrt1062/pins.c | 7 + ports/mimxrt10xx/boards/flash_config.h | 30 +-- ports/mimxrt10xx/boards/imxrt1010_evk/board.c | 32 +-- .../boards/imxrt1010_evk/mpconfigboard.h | 7 + ports/mimxrt10xx/boards/imxrt1010_evk/pins.c | 7 + ports/mimxrt10xx/boards/imxrt1015_evk/board.c | 32 +-- .../boards/imxrt1015_evk/mpconfigboard.h | 7 + ports/mimxrt10xx/boards/imxrt1015_evk/pins.c | 7 + ports/mimxrt10xx/boards/imxrt1020_evk/board.c | 32 +-- .../boards/imxrt1020_evk/mpconfigboard.h | 7 + ports/mimxrt10xx/boards/imxrt1020_evk/pins.c | 7 + ports/mimxrt10xx/boards/imxrt1040_evk/board.c | 32 +-- .../boards/imxrt1040_evk/mpconfigboard.h | 7 + ports/mimxrt10xx/boards/imxrt1040_evk/pins.c | 7 + .../mimxrt10xx/boards/imxrt1050_evkb/board.c | 32 +-- .../boards/imxrt1050_evkb/mpconfigboard.h | 7 + ports/mimxrt10xx/boards/imxrt1050_evkb/pins.c | 7 + ports/mimxrt10xx/boards/imxrt1060_evk/board.c | 32 +-- .../boards/imxrt1060_evk/mpconfigboard.h | 7 + ports/mimxrt10xx/boards/imxrt1060_evk/pins.c | 7 + .../mimxrt10xx/boards/imxrt1060_evkb/board.c | 32 +-- .../boards/imxrt1060_evkb/mpconfigboard.h | 7 + ports/mimxrt10xx/boards/imxrt1060_evkb/pins.c | 7 + ports/mimxrt10xx/boards/metro_m7_1011/board.c | 32 +-- .../boards/metro_m7_1011/mpconfigboard.h | 7 + ports/mimxrt10xx/boards/metro_m7_1011/pins.c | 7 + .../boards/sparkfun_teensy_micromod/board.c | 32 +-- .../sparkfun_teensy_micromod/mpconfigboard.h | 7 + .../boards/sparkfun_teensy_micromod/pins.c | 7 + ports/mimxrt10xx/boards/teensy40/board.c | 32 +-- .../boards/teensy40/mpconfigboard.h | 7 + ports/mimxrt10xx/boards/teensy40/pins.c | 7 + ports/mimxrt10xx/boards/teensy41/board.c | 32 +-- .../boards/teensy41/mpconfigboard.h | 7 + ports/mimxrt10xx/boards/teensy41/pins.c | 7 + .../mimxrt10xx/common-hal/analogio/AnalogIn.c | 32 +-- .../mimxrt10xx/common-hal/analogio/AnalogIn.h | 32 +-- .../common-hal/analogio/AnalogOut.c | 32 +-- .../common-hal/analogio/AnalogOut.h | 32 +-- .../mimxrt10xx/common-hal/analogio/__init__.c | 6 + .../mimxrt10xx/common-hal/audiobusio/I2SOut.c | 30 +-- .../mimxrt10xx/common-hal/audiobusio/I2SOut.h | 30 +-- .../mimxrt10xx/common-hal/audiobusio/PDMIn.c | 5 + .../mimxrt10xx/common-hal/audiobusio/PDMIn.h | 5 + .../common-hal/audiobusio/__init__.c | 30 +-- .../common-hal/audiobusio/__init__.h | 30 +-- .../common-hal/audiopwmio/PWMAudioOut.c | 30 +-- .../common-hal/audiopwmio/PWMAudioOut.h | 30 +-- .../common-hal/audiopwmio/__init__.c | 5 + .../common-hal/audiopwmio/__init__.h | 5 + ports/mimxrt10xx/common-hal/board/__init__.c | 32 +-- ports/mimxrt10xx/common-hal/busio/I2C.c | 32 +-- ports/mimxrt10xx/common-hal/busio/I2C.h | 32 +-- ports/mimxrt10xx/common-hal/busio/SPI.c | 32 +-- ports/mimxrt10xx/common-hal/busio/SPI.h | 32 +-- ports/mimxrt10xx/common-hal/busio/UART.c | 32 +-- ports/mimxrt10xx/common-hal/busio/UART.h | 32 +-- ports/mimxrt10xx/common-hal/busio/__init__.c | 6 + .../common-hal/digitalio/DigitalInOut.c | 32 +-- .../common-hal/digitalio/DigitalInOut.h | 32 +-- .../common-hal/digitalio/__init__.c | 6 + .../common-hal/microcontroller/Pin.c | 34 +-- .../common-hal/microcontroller/Pin.h | 32 +-- .../common-hal/microcontroller/Processor.c | 32 +-- .../common-hal/microcontroller/Processor.h | 32 +-- .../common-hal/microcontroller/__init__.c | 32 +-- .../common-hal/neopixel_write/__init__.c | 32 +-- ports/mimxrt10xx/common-hal/os/__init__.c | 32 +-- ports/mimxrt10xx/common-hal/pwmio/PWMOut.c | 34 +-- ports/mimxrt10xx/common-hal/pwmio/PWMOut.h | 32 +-- ports/mimxrt10xx/common-hal/pwmio/__init__.c | 6 + .../common-hal/rotaryio/IncrementalEncoder.c | 32 +-- .../common-hal/rotaryio/IncrementalEncoder.h | 32 +-- .../mimxrt10xx/common-hal/rotaryio/__init__.c | 5 + .../mimxrt10xx/common-hal/rotaryio/__init__.h | 5 + ports/mimxrt10xx/common-hal/rtc/RTC.c | 32 +-- ports/mimxrt10xx/common-hal/rtc/RTC.h | 32 +-- ports/mimxrt10xx/common-hal/rtc/__init__.c | 5 + ports/mimxrt10xx/common-hal/usb_host/Port.c | 30 +-- ports/mimxrt10xx/common-hal/usb_host/Port.h | 30 +-- .../mimxrt10xx/common-hal/usb_host/__init__.c | 30 +-- ports/mimxrt10xx/imx_usb.h | 30 +-- ports/mimxrt10xx/mpconfigport.h | 32 +-- ports/mimxrt10xx/mphalport.c | 32 +-- ports/mimxrt10xx/mphalport.h | 32 +-- .../mimxrt10xx/MIMXRT1011/clocks.c | 30 +-- .../mimxrt10xx/MIMXRT1011/periph.c | 34 +-- .../mimxrt10xx/MIMXRT1011/periph.h | 34 +-- .../mimxrt10xx/MIMXRT1011/pin_names.h | 34 +-- .../peripherals/mimxrt10xx/MIMXRT1011/pins.c | 34 +-- .../peripherals/mimxrt10xx/MIMXRT1011/pins.h | 34 +-- .../mimxrt10xx/MIMXRT1015/clocks.c | 30 +-- .../mimxrt10xx/MIMXRT1015/periph.c | 34 +-- .../mimxrt10xx/MIMXRT1015/periph.h | 34 +-- .../mimxrt10xx/MIMXRT1015/pin_names.h | 34 +-- .../peripherals/mimxrt10xx/MIMXRT1015/pins.c | 34 +-- .../peripherals/mimxrt10xx/MIMXRT1015/pins.h | 34 +-- .../mimxrt10xx/MIMXRT1021/clocks.c | 32 +-- .../mimxrt10xx/MIMXRT1021/periph.c | 34 +-- .../mimxrt10xx/MIMXRT1021/periph.h | 34 +-- .../mimxrt10xx/MIMXRT1021/pin_names.h | 34 +-- .../peripherals/mimxrt10xx/MIMXRT1021/pins.c | 34 +-- .../peripherals/mimxrt10xx/MIMXRT1021/pins.h | 34 +-- .../mimxrt10xx/MIMXRT1042/clocks.c | 30 +-- .../mimxrt10xx/MIMXRT1042/periph.c | 34 +-- .../mimxrt10xx/MIMXRT1042/periph.h | 34 +-- .../mimxrt10xx/MIMXRT1042/pin_names.h | 34 +-- .../peripherals/mimxrt10xx/MIMXRT1042/pins.c | 34 +-- .../peripherals/mimxrt10xx/MIMXRT1042/pins.h | 34 +-- .../mimxrt10xx/MIMXRT1052/clocks.c | 30 +-- .../mimxrt10xx/MIMXRT1052/periph.c | 34 +-- .../mimxrt10xx/MIMXRT1052/periph.h | 34 +-- .../mimxrt10xx/MIMXRT1052/pin_names.h | 34 +-- .../peripherals/mimxrt10xx/MIMXRT1052/pins.c | 34 +-- .../peripherals/mimxrt10xx/MIMXRT1052/pins.h | 34 +-- .../mimxrt10xx/MIMXRT1062/clocks.c | 30 +-- .../mimxrt10xx/MIMXRT1062/periph.c | 34 +-- .../mimxrt10xx/MIMXRT1062/periph.h | 34 +-- .../mimxrt10xx/MIMXRT1062/pin_names.h | 34 +-- .../peripherals/mimxrt10xx/MIMXRT1062/pins.c | 34 +-- .../peripherals/mimxrt10xx/MIMXRT1062/pins.h | 34 +-- .../mimxrt10xx/MIMXRT1176/clocks.c | 30 +-- .../mimxrt10xx/MIMXRT1176/periph.c | 34 +-- .../mimxrt10xx/MIMXRT1176/periph.h | 34 +-- .../mimxrt10xx/MIMXRT1176/pin_names.h | 34 +-- .../peripherals/mimxrt10xx/MIMXRT1176/pins.c | 34 +-- .../peripherals/mimxrt10xx/MIMXRT1176/pins.h | 34 +-- .../peripherals/mimxrt10xx/clocks.h | 30 +-- .../peripherals/mimxrt10xx/periph.h | 32 +-- .../peripherals/mimxrt10xx/pin_names.h | 32 +-- .../mimxrt10xx/peripherals/mimxrt10xx/pins.c | 6 + .../mimxrt10xx/peripherals/mimxrt10xx/pins.h | 32 +-- ports/mimxrt10xx/qstrdefsport.h | 6 + ports/mimxrt10xx/reset.c | 30 +-- ports/mimxrt10xx/reset.h | 32 +-- ports/mimxrt10xx/supervisor/internal_flash.c | 32 +-- ports/mimxrt10xx/supervisor/internal_flash.h | 30 +-- ports/mimxrt10xx/supervisor/port.c | 32 +-- ports/mimxrt10xx/supervisor/usb.c | 32 +-- .../mimxrt10xx/tools/gen_peripherals_data.py | 35 +-- ports/nordic/Makefile | 22 +- ports/nordic/background.c | 30 +-- ports/nordic/background.h | 30 +-- ports/nordic/bluetooth/ble_drv.c | 34 +-- ports/nordic/bluetooth/ble_drv.h | 34 +-- ports/nordic/boards/ADM_B_NRF52840_1/board.c | 30 +-- .../boards/ADM_B_NRF52840_1/mpconfigboard.h | 31 +-- ports/nordic/boards/ADM_B_NRF52840_1/pins.c | 6 + .../boards/Seeed_XIAO_nRF52840_Sense/board.c | 30 +-- .../Seeed_XIAO_nRF52840_Sense/mpconfigboard.h | 32 +-- .../boards/Seeed_XIAO_nRF52840_Sense/pins.c | 6 + ports/nordic/boards/TG-Watch/board.c | 30 +-- ports/nordic/boards/TG-Watch/mpconfigboard.h | 32 +-- ports/nordic/boards/TG-Watch/pins.c | 6 + .../adafruit_led_glasses_nrf52840/board.c | 30 +-- .../mpconfigboard.h | 6 + .../adafruit_led_glasses_nrf52840/pins.c | 6 + ports/nordic/boards/aramcon2_badge/board.c | 32 +-- .../boards/aramcon2_badge/mpconfigboard.h | 32 +-- ports/nordic/boards/aramcon2_badge/pins.c | 7 + .../nordic/boards/aramcon_badge_2019/board.c | 32 +-- .../boards/aramcon_badge_2019/mpconfigboard.h | 7 + ports/nordic/boards/aramcon_badge_2019/pins.c | 7 + .../nordic/boards/arduino_nano_33_ble/board.c | 30 +-- .../arduino_nano_33_ble/mpconfigboard.h | 6 + .../nordic/boards/arduino_nano_33_ble/pins.c | 6 + ports/nordic/boards/bastble/board.c | 30 +-- ports/nordic/boards/bastble/mpconfigboard.h | 6 + ports/nordic/boards/bastble/pins.c | 6 + .../bless_dev_board_multi_sensor/board.c | 30 +-- .../mpconfigboard.h | 6 + .../bless_dev_board_multi_sensor/pins.c | 6 + ports/nordic/boards/bluemicro833/board.c | 30 +-- .../boards/bluemicro833/mpconfigboard.h | 32 +-- ports/nordic/boards/bluemicro833/pins.c | 6 + ports/nordic/boards/bluemicro840/board.c | 30 +-- .../boards/bluemicro840/mpconfigboard.h | 33 +-- ports/nordic/boards/bluemicro840/pins.c | 6 + ports/nordic/boards/challenger_840/board.c | 30 +-- .../boards/challenger_840/mpconfigboard.h | 6 + ports/nordic/boards/challenger_840/pins.c | 6 + .../circuitplayground_bluefruit/board.c | 30 +-- .../mpconfigboard.h | 32 +-- .../boards/circuitplayground_bluefruit/pins.c | 6 + .../boards/clue_nrf52840_express/board.c | 30 +-- .../clue_nrf52840_express/mpconfigboard.h | 32 +-- .../boards/clue_nrf52840_express/pins.c | 6 + .../boards/electronut_labs_blip/board.c | 30 +-- .../electronut_labs_blip/mpconfigboard.h | 34 +-- .../nordic/boards/electronut_labs_blip/pins.c | 6 + .../boards/electronut_labs_papyr/board.c | 30 +-- .../electronut_labs_papyr/mpconfigboard.h | 32 +-- .../boards/electronut_labs_papyr/pins.c | 6 + .../nordic/boards/espruino_banglejs2/board.c | 30 +-- .../boards/espruino_banglejs2/mpconfigboard.h | 32 +-- ports/nordic/boards/espruino_banglejs2/pins.c | 6 + .../boards/feather_bluefruit_sense/board.c | 30 +-- .../feather_bluefruit_sense/mpconfigboard.h | 32 +-- .../boards/feather_bluefruit_sense/pins.c | 6 + .../boards/feather_nrf52840_express/board.c | 30 +-- .../feather_nrf52840_express/mpconfigboard.h | 32 +-- .../boards/feather_nrf52840_express/pins.c | 6 + ports/nordic/boards/hiibot_bluefi/board.c | 30 +-- .../boards/hiibot_bluefi/mpconfigboard.h | 32 +-- ports/nordic/boards/hiibot_bluefi/pins.c | 6 + ports/nordic/boards/ikigaisense_vita/board.c | 30 +-- .../boards/ikigaisense_vita/mpconfigboard.h | 6 + ports/nordic/boards/ikigaisense_vita/pins.c | 6 + .../boards/itsybitsy_nrf52840_express/board.c | 30 +-- .../mpconfigboard.h | 6 + .../boards/itsybitsy_nrf52840_express/pins.c | 6 + .../boards/makerdiary_m60_keyboard/board.c | 30 +-- .../makerdiary_m60_keyboard/mpconfigboard.h | 32 +-- .../boards/makerdiary_m60_keyboard/pins.c | 6 + .../makerdiary_nrf52840_connectkit/board.c | 30 +-- .../mpconfigboard.h | 6 + .../makerdiary_nrf52840_connectkit/pins.c | 6 + .../makerdiary_nrf52840_m2_devkit/board.c | 32 +-- .../mpconfigboard.h | 32 +-- .../makerdiary_nrf52840_m2_devkit/pins.c | 7 + .../boards/makerdiary_nrf52840_mdk/board.c | 30 +-- .../makerdiary_nrf52840_mdk/mpconfigboard.h | 32 +-- .../boards/makerdiary_nrf52840_mdk/pins.c | 6 + .../board.c | 30 +-- .../mpconfigboard.h | 32 +-- .../makerdiary_nrf52840_mdk_usb_dongle/pins.c | 6 + .../boards/metro_nrf52840_express/board.c | 30 +-- .../metro_nrf52840_express/mpconfigboard.h | 32 +-- .../boards/metro_nrf52840_express/pins.c | 6 + ports/nordic/boards/microbit_v2/board.c | 30 +-- .../nordic/boards/microbit_v2/mpconfigboard.h | 32 +-- ports/nordic/boards/microbit_v2/pins.c | 6 + ports/nordic/boards/nice_nano/board.c | 30 +-- ports/nordic/boards/nice_nano/mpconfigboard.h | 32 +-- ports/nordic/boards/nice_nano/pins.c | 6 + ports/nordic/boards/nrf52_prefix.c | 6 + ports/nordic/boards/ohs2020_badge/board.c | 30 +-- .../boards/ohs2020_badge/mpconfigboard.h | 34 +-- ports/nordic/boards/ohs2020_badge/pins.c | 6 + ports/nordic/boards/particle_argon/board.c | 30 +-- .../boards/particle_argon/mpconfigboard.h | 32 +-- ports/nordic/boards/particle_argon/pins.c | 6 + ports/nordic/boards/particle_boron/board.c | 30 +-- .../boards/particle_boron/mpconfigboard.h | 32 +-- ports/nordic/boards/particle_boron/pins.c | 6 + ports/nordic/boards/particle_xenon/board.c | 30 +-- .../boards/particle_xenon/mpconfigboard.h | 32 +-- ports/nordic/boards/particle_xenon/pins.c | 6 + ports/nordic/boards/pca10056/board.c | 30 +-- ports/nordic/boards/pca10056/mpconfigboard.h | 31 +-- ports/nordic/boards/pca10056/pins.c | 6 + ports/nordic/boards/pca10059/board.c | 30 +-- ports/nordic/boards/pca10059/mpconfigboard.h | 30 +-- ports/nordic/boards/pca10059/pins.c | 6 + ports/nordic/boards/pca10100/board.c | 30 +-- ports/nordic/boards/pca10100/mpconfigboard.h | 32 +-- ports/nordic/boards/pca10100/pins.c | 6 + ports/nordic/boards/pctel_wsc_1450/board.c | 30 +-- .../boards/pctel_wsc_1450/mpconfigboard.h | 31 +-- ports/nordic/boards/pctel_wsc_1450/pins.c | 6 + ports/nordic/boards/pillbug/board.c | 30 +-- ports/nordic/boards/pillbug/mpconfigboard.h | 32 +-- ports/nordic/boards/pillbug/pins.c | 6 + ports/nordic/boards/pitaya_go/board.c | 30 +-- ports/nordic/boards/pitaya_go/mpconfigboard.h | 34 +-- ports/nordic/boards/pitaya_go/pins.c | 6 + .../boards/raytac_mdbt50q-db-40/board.c | 30 +-- .../raytac_mdbt50q-db-40/mpconfigboard.h | 30 +-- .../nordic/boards/raytac_mdbt50q-db-40/pins.c | 6 + ports/nordic/boards/raytac_mdbt50q-rx/board.c | 30 +-- .../boards/raytac_mdbt50q-rx/mpconfigboard.h | 30 +-- ports/nordic/boards/raytac_mdbt50q-rx/pins.c | 6 + ports/nordic/boards/simmel/board.c | 30 +-- ports/nordic/boards/simmel/mpconfigboard.h | 32 +-- ports/nordic/boards/simmel/pins.c | 6 + .../boards/sparkfun_nrf52840_micromod/board.c | 30 +-- .../mpconfigboard.h | 32 +-- .../boards/sparkfun_nrf52840_micromod/pins.c | 32 +-- .../boards/sparkfun_nrf52840_mini/board.c | 30 +-- .../sparkfun_nrf52840_mini/mpconfigboard.h | 30 +-- .../boards/sparkfun_nrf52840_mini/pins.c | 6 + .../boards/ssci_isp1807_dev_board/board.c | 30 +-- .../ssci_isp1807_dev_board/mpconfigboard.h | 6 + .../boards/ssci_isp1807_dev_board/pins.c | 6 + .../boards/ssci_isp1807_micro_board/board.c | 30 +-- .../ssci_isp1807_micro_board/mpconfigboard.h | 6 + .../boards/ssci_isp1807_micro_board/pins.c | 6 + .../nordic/boards/supermini_nrf52840/board.c | 30 +-- .../boards/supermini_nrf52840/mpconfigboard.h | 32 +-- ports/nordic/boards/supermini_nrf52840/pins.c | 6 + ports/nordic/boards/teknikio_bluebird/board.c | 30 +-- .../boards/teknikio_bluebird/mpconfigboard.h | 32 +-- ports/nordic/boards/teknikio_bluebird/pins.c | 6 + .../tinkeringtech_scoutmakes_azul/board.c | 30 +-- .../mpconfigboard.h | 32 +-- .../tinkeringtech_scoutmakes_azul/pins.c | 6 + ports/nordic/boards/warmbit_bluepixel/board.c | 30 +-- .../boards/warmbit_bluepixel/mpconfigboard.h | 6 + ports/nordic/boards/warmbit_bluepixel/pins.c | 6 + ports/nordic/common-hal/_bleio/Adapter.c | 34 +-- ports/nordic/common-hal/_bleio/Adapter.h | 34 +-- ports/nordic/common-hal/_bleio/Attribute.c | 30 +-- ports/nordic/common-hal/_bleio/Attribute.h | 30 +-- .../nordic/common-hal/_bleio/Characteristic.c | 31 +-- .../nordic/common-hal/_bleio/Characteristic.h | 32 +-- .../common-hal/_bleio/CharacteristicBuffer.c | 30 +-- .../common-hal/_bleio/CharacteristicBuffer.h | 30 +-- ports/nordic/common-hal/_bleio/Connection.c | 32 +-- ports/nordic/common-hal/_bleio/Connection.h | 32 +-- ports/nordic/common-hal/_bleio/Descriptor.c | 34 +-- ports/nordic/common-hal/_bleio/Descriptor.h | 34 +-- ports/nordic/common-hal/_bleio/PacketBuffer.c | 30 +-- ports/nordic/common-hal/_bleio/PacketBuffer.h | 30 +-- ports/nordic/common-hal/_bleio/Service.c | 32 +-- ports/nordic/common-hal/_bleio/Service.h | 32 +-- ports/nordic/common-hal/_bleio/UUID.c | 34 +-- ports/nordic/common-hal/_bleio/UUID.h | 34 +-- ports/nordic/common-hal/_bleio/__init__.c | 34 +-- ports/nordic/common-hal/_bleio/__init__.h | 30 +-- ports/nordic/common-hal/_bleio/bonding.c | 30 +-- ports/nordic/common-hal/_bleio/bonding.h | 30 +-- ports/nordic/common-hal/alarm/SleepMemory.c | 30 +-- ports/nordic/common-hal/alarm/SleepMemory.h | 30 +-- ports/nordic/common-hal/alarm/__init__.c | 34 +-- ports/nordic/common-hal/alarm/__init__.h | 32 +-- .../common-hal/alarm/coproc/CoprocAlarm.c | 6 + .../common-hal/alarm/coproc/CoprocAlarm.h | 6 + ports/nordic/common-hal/alarm/pin/PinAlarm.c | 34 +-- ports/nordic/common-hal/alarm/pin/PinAlarm.h | 30 +-- .../nordic/common-hal/alarm/time/TimeAlarm.c | 32 +-- .../nordic/common-hal/alarm/time/TimeAlarm.h | 30 +-- .../common-hal/alarm/touch/TouchAlarm.c | 30 +-- .../common-hal/alarm/touch/TouchAlarm.h | 30 +-- ports/nordic/common-hal/analogio/AnalogIn.c | 32 +-- ports/nordic/common-hal/analogio/AnalogIn.h | 30 +-- ports/nordic/common-hal/analogio/AnalogOut.c | 30 +-- ports/nordic/common-hal/analogio/AnalogOut.h | 30 +-- ports/nordic/common-hal/analogio/__init__.c | 6 + ports/nordic/common-hal/audiobusio/I2SOut.c | 30 +-- ports/nordic/common-hal/audiobusio/I2SOut.h | 30 +-- ports/nordic/common-hal/audiobusio/PDMIn.c | 30 +-- ports/nordic/common-hal/audiobusio/PDMIn.h | 30 +-- ports/nordic/common-hal/audiobusio/__init__.c | 5 + .../common-hal/audiopwmio/PWMAudioOut.c | 30 +-- .../common-hal/audiopwmio/PWMAudioOut.h | 30 +-- ports/nordic/common-hal/audiopwmio/__init__.c | 5 + ports/nordic/common-hal/board/__init__.c | 30 +-- ports/nordic/common-hal/busio/I2C.c | 36 +-- ports/nordic/common-hal/busio/I2C.h | 30 +-- ports/nordic/common-hal/busio/SPI.c | 32 +-- ports/nordic/common-hal/busio/SPI.h | 30 +-- ports/nordic/common-hal/busio/UART.c | 30 +-- ports/nordic/common-hal/busio/UART.h | 30 +-- ports/nordic/common-hal/busio/__init__.c | 6 + ports/nordic/common-hal/countio/Counter.c | 6 + ports/nordic/common-hal/countio/Counter.h | 6 + ports/nordic/common-hal/countio/__init__.c | 6 + .../common-hal/digitalio/DigitalInOut.c | 30 +-- .../common-hal/digitalio/DigitalInOut.h | 30 +-- ports/nordic/common-hal/digitalio/__init__.c | 6 + ports/nordic/common-hal/max3421e/Max3421E.c | 30 +-- .../common-hal/memorymap/AddressRange.c | 30 +-- .../common-hal/memorymap/AddressRange.h | 30 +-- ports/nordic/common-hal/memorymap/__init__.c | 6 + ports/nordic/common-hal/microcontroller/Pin.c | 30 +-- ports/nordic/common-hal/microcontroller/Pin.h | 30 +-- .../common-hal/microcontroller/Processor.c | 30 +-- .../common-hal/microcontroller/Processor.h | 30 +-- .../common-hal/microcontroller/__init__.c | 30 +-- .../common-hal/neopixel_write/__init__.c | 30 +-- .../common-hal/neopixel_write/__init__.h | 30 +-- ports/nordic/common-hal/nvm/ByteArray.c | 30 +-- ports/nordic/common-hal/nvm/ByteArray.h | 30 +-- ports/nordic/common-hal/nvm/__init__.c | 30 +-- ports/nordic/common-hal/os/__init__.c | 30 +-- .../paralleldisplaybus/ParallelBus.c | 30 +-- .../paralleldisplaybus/ParallelBus.h | 30 +-- ports/nordic/common-hal/pulseio/PulseIn.c | 30 +-- ports/nordic/common-hal/pulseio/PulseIn.h | 30 +-- ports/nordic/common-hal/pulseio/PulseOut.c | 30 +-- ports/nordic/common-hal/pulseio/PulseOut.h | 30 +-- ports/nordic/common-hal/pulseio/__init__.c | 6 + ports/nordic/common-hal/pwmio/PWMOut.c | 30 +-- ports/nordic/common-hal/pwmio/PWMOut.h | 30 +-- ports/nordic/common-hal/pwmio/__init__.c | 6 + ports/nordic/common-hal/rgbmatrix/RGBMatrix.c | 30 +-- ports/nordic/common-hal/rgbmatrix/RGBMatrix.h | 30 +-- ports/nordic/common-hal/rgbmatrix/__init__.c | 5 + .../common-hal/rotaryio/IncrementalEncoder.c | 30 +-- .../common-hal/rotaryio/IncrementalEncoder.h | 30 +-- ports/nordic/common-hal/rotaryio/__init__.c | 6 + ports/nordic/common-hal/rtc/RTC.c | 30 +-- ports/nordic/common-hal/rtc/RTC.h | 30 +-- ports/nordic/common-hal/rtc/__init__.c | 5 + .../nordic/common-hal/watchdog/WatchDogMode.c | 5 + .../common-hal/watchdog/WatchDogTimer.c | 30 +-- .../common-hal/watchdog/WatchDogTimer.h | 30 +-- ports/nordic/common-hal/watchdog/__init__.c | 30 +-- ports/nordic/common-hal/watchdog/__init__.h | 30 +-- ports/nordic/device/nrf52/startup_nrf52.c | 30 +-- ports/nordic/device/nrf52/startup_nrf52833.c | 30 +-- ports/nordic/device/nrf52/startup_nrf52840.c | 30 +-- ports/nordic/freeze/test.py | 5 - ports/nordic/gccollect.c | 30 +-- ports/nordic/ld_defines.c | 6 + ports/nordic/mpconfigport.h | 32 +-- ports/nordic/mphalport.h | 30 +-- ports/nordic/nrfx_config.h | 6 + ports/nordic/nrfx_glue.h | 6 + ports/nordic/nrfx_log.h | 6 + ports/nordic/peripherals/nrf/cache.c | 30 +-- ports/nordic/peripherals/nrf/cache.h | 30 +-- ports/nordic/peripherals/nrf/clocks.c | 31 +-- ports/nordic/peripherals/nrf/clocks.h | 30 +-- ports/nordic/peripherals/nrf/nrf52833/pins.c | 30 +-- ports/nordic/peripherals/nrf/nrf52833/pins.h | 30 +-- ports/nordic/peripherals/nrf/nrf52833/power.c | 30 +-- ports/nordic/peripherals/nrf/nrf52840/pins.c | 30 +-- ports/nordic/peripherals/nrf/nrf52840/pins.h | 30 +-- ports/nordic/peripherals/nrf/nrf52840/power.c | 30 +-- ports/nordic/peripherals/nrf/nvm.c | 32 +-- ports/nordic/peripherals/nrf/nvm.h | 32 +-- ports/nordic/peripherals/nrf/pins.h | 30 +-- ports/nordic/peripherals/nrf/power.h | 30 +-- ports/nordic/peripherals/nrf/timers.c | 30 +-- ports/nordic/peripherals/nrf/timers.h | 30 +-- ports/nordic/qstrdefsport.h | 6 + ports/nordic/sd_mutex.c | 30 +-- ports/nordic/sd_mutex.h | 30 +-- ports/nordic/supervisor/internal_flash.c | 30 +-- ports/nordic/supervisor/internal_flash.h | 30 +-- ports/nordic/supervisor/port.c | 32 +-- ports/nordic/supervisor/qspi_flash.c | 32 +-- ports/nordic/supervisor/qspi_flash.h | 6 + ports/nordic/supervisor/usb.c | 30 +-- ports/raspberrypi/Makefile | 22 +- ports/raspberrypi/audio_dma.c | 30 +-- ports/raspberrypi/audio_dma.h | 30 +-- ports/raspberrypi/background.c | 30 +-- ports/raspberrypi/background.h | 30 +-- ports/raspberrypi/bindings/cyw43/__init__.c | 32 +-- ports/raspberrypi/bindings/cyw43/__init__.h | 32 +-- .../bindings/picodvi/Framebuffer.c | 30 +-- .../bindings/picodvi/Framebuffer.h | 30 +-- ports/raspberrypi/bindings/picodvi/__init__.c | 30 +-- .../bindings/rp2pio/StateMachine.c | 30 +-- .../bindings/rp2pio/StateMachine.h | 30 +-- ports/raspberrypi/bindings/rp2pio/__init__.c | 30 +-- ports/raspberrypi/bindings/rp2pio/__init__.h | 30 +-- ports/raspberrypi/boards/0xcb_helios/board.c | 30 +-- .../boards/0xcb_helios/mpconfigboard.h | 6 + .../boards/0xcb_helios/pico-sdk-configboard.h | 6 + ports/raspberrypi/boards/0xcb_helios/pins.c | 6 + .../raspberrypi/boards/42keebs_frood/board.c | 30 +-- .../boards/42keebs_frood/mpconfigboard.h | 6 + .../42keebs_frood/pico-sdk-configboard.h | 6 + ports/raspberrypi/boards/42keebs_frood/pins.c | 6 + .../boards/adafruit_feather_rp2040/board.c | 30 +-- .../adafruit_feather_rp2040/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/adafruit_feather_rp2040/pins.c | 6 + .../adafruit_feather_rp2040_can/board.c | 30 +-- .../mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/adafruit_feather_rp2040_can/pins.c | 6 + .../adafruit_feather_rp2040_dvi/board.c | 30 +-- .../mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/adafruit_feather_rp2040_dvi/pins.c | 6 + .../board.c | 30 +-- .../mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../adafruit_feather_rp2040_prop_maker/pins.c | 6 + .../adafruit_feather_rp2040_rfm/board.c | 30 +-- .../mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/adafruit_feather_rp2040_rfm/pins.c | 6 + .../adafruit_feather_rp2040_scorpio/board.c | 30 +-- .../mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../adafruit_feather_rp2040_scorpio/pins.c | 6 + .../adafruit_feather_rp2040_thinkink/board.c | 30 +-- .../mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../adafruit_feather_rp2040_thinkink/pins.c | 6 + .../adafruit_feather_rp2040_usb_host/board.c | 30 +-- .../mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../adafruit_feather_rp2040_usb_host/pins.c | 6 + .../boards/adafruit_floppsy_rp2040/board.c | 30 +-- .../adafruit_floppsy_rp2040/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/adafruit_floppsy_rp2040/pins.c | 6 + .../boards/adafruit_itsybitsy_rp2040/board.c | 30 +-- .../adafruit_itsybitsy_rp2040/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/adafruit_itsybitsy_rp2040/pins.c | 6 + .../boards/adafruit_kb2040/board.c | 30 +-- .../boards/adafruit_kb2040/mpconfigboard.h | 6 + .../adafruit_kb2040/pico-sdk-configboard.h | 6 + .../raspberrypi/boards/adafruit_kb2040/pins.c | 6 + .../boards/adafruit_macropad_rp2040/board.c | 30 +-- .../adafruit_macropad_rp2040/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/adafruit_macropad_rp2040/pins.c | 6 + .../boards/adafruit_metro_rp2040/board.c | 30 +-- .../adafruit_metro_rp2040/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/adafruit_metro_rp2040/pins.c | 6 + .../boards/adafruit_qt2040_trinkey/board.c | 30 +-- .../adafruit_qt2040_trinkey/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/adafruit_qt2040_trinkey/pins.c | 6 + .../boards/adafruit_qtpy_rp2040/board.c | 30 +-- .../adafruit_qtpy_rp2040/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/adafruit_qtpy_rp2040/pins.c | 6 + .../arduino_nano_rp2040_connect/board.c | 30 +-- .../mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/arduino_nano_rp2040_connect/pins.c | 6 + .../boards/boardsource_blok/board.c | 30 +-- .../boards/boardsource_blok/mpconfigboard.h | 6 + .../boardsource_blok/pico-sdk-configboard.h | 6 + .../boards/boardsource_blok/pins.c | 6 + .../boards/breadstick_raspberry/board.c | 30 +-- .../breadstick_raspberry/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/breadstick_raspberry/pins.c | 6 + .../boards/bwshockley_figpi/board.c | 30 +-- .../boards/bwshockley_figpi/mpconfigboard.h | 6 + .../bwshockley_figpi/pico-sdk-configboard.h | 6 + .../boards/bwshockley_figpi/pins.c | 6 + .../boards/challenger_nb_rp2040_wifi/board.c | 30 +-- .../challenger_nb_rp2040_wifi/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/challenger_nb_rp2040_wifi/pins.c | 6 + .../boards/challenger_rp2040_lora/board.c | 30 +-- .../challenger_rp2040_lora/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/challenger_rp2040_lora/pins.c | 6 + .../boards/challenger_rp2040_lte/board.c | 30 +-- .../challenger_rp2040_lte/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/challenger_rp2040_lte/pins.c | 6 + .../boards/challenger_rp2040_sdrtc/board.c | 30 +-- .../challenger_rp2040_sdrtc/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/challenger_rp2040_sdrtc/pins.c | 6 + .../boards/challenger_rp2040_subghz/board.c | 30 +-- .../challenger_rp2040_subghz/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/challenger_rp2040_subghz/pins.c | 6 + .../boards/challenger_rp2040_wifi/board.c | 30 +-- .../challenger_rp2040_wifi/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/challenger_rp2040_wifi/pins.c | 6 + .../boards/challenger_rp2040_wifi_ble/board.c | 30 +-- .../mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/challenger_rp2040_wifi_ble/pins.c | 6 + ports/raspberrypi/boards/cosmo_pico/board.c | 30 +-- .../boards/cosmo_pico/mpconfigboard.h | 6 + .../boards/cosmo_pico/pico-sdk-configboard.h | 6 + ports/raspberrypi/boards/cosmo_pico/pins.c | 6 + .../boards/cytron_edu_pico_w/board.c | 30 +-- .../boards/cytron_edu_pico_w/mpconfigboard.h | 6 + .../cytron_edu_pico_w/pico-sdk-configboard.h | 6 + .../boards/cytron_edu_pico_w/pins.c | 6 + .../boards/cytron_maker_nano_rp2040/board.c | 30 +-- .../cytron_maker_nano_rp2040/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/cytron_maker_nano_rp2040/pins.c | 6 + .../boards/cytron_maker_pi_rp2040/board.c | 30 +-- .../cytron_maker_pi_rp2040/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/cytron_maker_pi_rp2040/pins.c | 6 + .../boards/cytron_maker_uno_rp2040/board.c | 30 +-- .../cytron_maker_uno_rp2040/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/cytron_maker_uno_rp2040/pins.c | 6 + .../boards/datanoise_picoadk/board.c | 30 +-- .../boards/datanoise_picoadk/mpconfigboard.h | 6 + .../datanoise_picoadk/pico-sdk-configboard.h | 6 + .../boards/datanoise_picoadk/pins.c | 6 + ports/raspberrypi/boards/e_fidget/board.c | 30 +-- .../boards/e_fidget/mpconfigboard.h | 6 + .../boards/e_fidget/pico-sdk-configboard.h | 6 + ports/raspberrypi/boards/e_fidget/pins.c | 6 + .../boards/elecfreaks_picoed/board.c | 30 +-- .../boards/elecfreaks_picoed/mpconfigboard.h | 6 + .../elecfreaks_picoed/pico-sdk-configboard.h | 6 + .../boards/elecfreaks_picoed/pins.c | 6 + .../boards/electrolama_minik/board.c | 30 +-- .../boards/electrolama_minik/mpconfigboard.h | 6 + .../electrolama_minik/pico-sdk-configboard.h | 6 + .../boards/electrolama_minik/pins.c | 6 + .../boards/hack_club_sprig/board.c | 30 +-- .../boards/hack_club_sprig/mpconfigboard.h | 6 + .../hack_club_sprig/pico-sdk-configboard.h | 6 + .../raspberrypi/boards/hack_club_sprig/pins.c | 6 + .../boards/heiafr_picomo_v2/board.c | 30 +-- .../boards/heiafr_picomo_v2/mpconfigboard.h | 6 + .../heiafr_picomo_v2/pico-sdk-configboard.h | 6 + .../boards/heiafr_picomo_v2/pins.c | 6 + .../jpconstantineau_encoderpad_rp2040/board.c | 30 +-- .../mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../jpconstantineau_encoderpad_rp2040/pins.c | 6 + .../boards/jpconstantineau_pykey18/board.c | 30 +-- .../jpconstantineau_pykey18/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/jpconstantineau_pykey18/pins.c | 6 + .../boards/jpconstantineau_pykey44/board.c | 30 +-- .../jpconstantineau_pykey44/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/jpconstantineau_pykey44/pins.c | 6 + .../boards/jpconstantineau_pykey60/board.c | 30 +-- .../jpconstantineau_pykey60/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/jpconstantineau_pykey60/pins.c | 6 + .../boards/jpconstantineau_pykey87/board.c | 30 +-- .../jpconstantineau_pykey87/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/jpconstantineau_pykey87/pins.c | 6 + .../boards/lilygo_t_display_rp2040/board.c | 30 +-- .../lilygo_t_display_rp2040/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/lilygo_t_display_rp2040/pins.c | 6 + .../raspberrypi/boards/maple_elite_pi/board.c | 30 +-- .../boards/maple_elite_pi/mpconfigboard.h | 6 + .../maple_elite_pi/pico-sdk-configboard.h | 6 + .../raspberrypi/boards/maple_elite_pi/pins.c | 6 + .../boards/melopero_shake_rp2040/board.c | 30 +-- .../melopero_shake_rp2040/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/melopero_shake_rp2040/pins.c | 6 + .../boards/nullbits_bit_c_pro/board.c | 30 +-- .../boards/nullbits_bit_c_pro/mpconfigboard.h | 6 + .../nullbits_bit_c_pro/pico-sdk-configboard.h | 6 + .../boards/nullbits_bit_c_pro/pins.c | 6 + .../raspberrypi/boards/odt_bread_2040/board.c | 30 +-- .../boards/odt_bread_2040/mpconfigboard.h | 6 + .../odt_bread_2040/pico-sdk-configboard.h | 6 + .../raspberrypi/boards/odt_bread_2040/pins.c | 6 + .../boards/odt_cast_away_rp2040/board.c | 30 +-- .../odt_cast_away_rp2040/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/odt_cast_away_rp2040/pins.c | 6 + .../boards/pajenicko_picopad/board.c | 30 +-- .../boards/pajenicko_picopad/mpconfigboard.h | 6 + .../pajenicko_picopad/pico-sdk-configboard.h | 6 + .../boards/pajenicko_picopad/pins.c | 6 + .../pimoroni_badger2040/badger-shared.h | 6 + .../boards/pimoroni_badger2040/board.c | 30 +-- .../pimoroni_badger2040/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/pimoroni_badger2040/pins.c | 6 + .../pimoroni_badger2040w/badger-shared.h | 6 + .../boards/pimoroni_badger2040w/board.c | 30 +-- .../pimoroni_badger2040w/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/pimoroni_badger2040w/pins.c | 6 + .../boards/pimoroni_inky_frame_5_7/board.c | 30 +-- .../pimoroni_inky_frame_5_7/inky-shared.h | 6 + .../pimoroni_inky_frame_5_7/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/pimoroni_inky_frame_5_7/pins.c | 6 + .../boards/pimoroni_inky_frame_7_3/board.c | 30 +-- .../pimoroni_inky_frame_7_3/inky-shared.h | 6 + .../pimoroni_inky_frame_7_3/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/pimoroni_inky_frame_7_3/pins.c | 6 + .../boards/pimoroni_interstate75/board.c | 30 +-- .../pimoroni_interstate75/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/pimoroni_interstate75/pins.c | 6 + .../boards/pimoroni_keybow2040/board.c | 30 +-- .../pimoroni_keybow2040/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/pimoroni_keybow2040/pins.c | 6 + .../boards/pimoroni_motor2040/board.c | 30 +-- .../boards/pimoroni_motor2040/mpconfigboard.h | 6 + .../pimoroni_motor2040/pico-sdk-configboard.h | 6 + .../boards/pimoroni_motor2040/pins.c | 6 + .../boards/pimoroni_pga2040/board.c | 30 +-- .../boards/pimoroni_pga2040/mpconfigboard.h | 6 + .../pimoroni_pga2040/pico-sdk-configboard.h | 6 + .../boards/pimoroni_pga2040/pins.c | 6 + .../boards/pimoroni_pico_dv_base/board.c | 30 +-- .../pimoroni_pico_dv_base/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/pimoroni_pico_dv_base/pins.c | 6 + .../boards/pimoroni_pico_dv_base_w/board.c | 30 +-- .../pimoroni_pico_dv_base_w/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/pimoroni_pico_dv_base_w/pins.c | 6 + .../boards/pimoroni_picolipo_16mb/board.c | 30 +-- .../pimoroni_picolipo_16mb/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/pimoroni_picolipo_16mb/pins.c | 6 + .../boards/pimoroni_picolipo_4mb/board.c | 30 +-- .../pimoroni_picolipo_4mb/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/pimoroni_picolipo_4mb/pins.c | 6 + .../boards/pimoroni_picosystem/board.c | 30 +-- .../pimoroni_picosystem/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/pimoroni_picosystem/pins.c | 6 + .../boards/pimoroni_plasma2040/board.c | 30 +-- .../pimoroni_plasma2040/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/pimoroni_plasma2040/pins.c | 6 + .../boards/pimoroni_plasma2040w/board.c | 30 +-- .../pimoroni_plasma2040w/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/pimoroni_plasma2040w/pins.c | 6 + .../boards/pimoroni_servo2040/board.c | 30 +-- .../boards/pimoroni_servo2040/mpconfigboard.h | 6 + .../pimoroni_servo2040/pico-sdk-configboard.h | 6 + .../boards/pimoroni_servo2040/pins.c | 6 + .../boards/pimoroni_tiny2040/board.c | 30 +-- .../boards/pimoroni_tiny2040/mpconfigboard.h | 6 + .../pimoroni_tiny2040/pico-sdk-configboard.h | 6 + .../boards/pimoroni_tiny2040/pins.c | 6 + .../boards/pimoroni_tiny2040_2mb/board.c | 30 +-- .../pimoroni_tiny2040_2mb/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/pimoroni_tiny2040_2mb/pins.c | 6 + .../boards/raspberry_pi_pico/board.c | 30 +-- .../boards/raspberry_pi_pico/mpconfigboard.h | 6 + .../raspberry_pi_pico/pico-sdk-configboard.h | 6 + .../boards/raspberry_pi_pico/pins.c | 6 + .../boards/raspberry_pi_pico_w/board.c | 30 +-- .../raspberry_pi_pico_w/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/raspberry_pi_pico_w/pins.c | 6 + .../raspberrypi/boards/rfguru_rp2040/board.c | 30 +-- .../boards/rfguru_rp2040/mpconfigboard.h | 6 + .../rfguru_rp2040/pico-sdk-configboard.h | 6 + ports/raspberrypi/boards/rfguru_rp2040/pins.c | 6 + .../boards/seeeduino_xiao_rp2040/board.c | 30 +-- .../seeeduino_xiao_rp2040/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/seeeduino_xiao_rp2040/pins.c | 6 + .../boards/silicognition_rp2040_shim/board.c | 30 +-- .../silicognition_rp2040_shim/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/silicognition_rp2040_shim/pins.c | 6 + .../boards/solderparty_bbq20kbd/board.c | 30 +-- .../solderparty_bbq20kbd/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/solderparty_bbq20kbd/pins.c | 6 + .../boards/solderparty_rp2040_stamp/board.c | 30 +-- .../solderparty_rp2040_stamp/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/solderparty_rp2040_stamp/pins.c | 6 + .../boards/sparkfun_micromod_rp2040/board.c | 30 +-- .../sparkfun_micromod_rp2040/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/sparkfun_micromod_rp2040/pins.c | 32 +-- .../boards/sparkfun_pro_micro_rp2040/board.c | 30 +-- .../sparkfun_pro_micro_rp2040/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/sparkfun_pro_micro_rp2040/pins.c | 6 + .../boards/sparkfun_thing_plus_rp2040/board.c | 30 +-- .../mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/sparkfun_thing_plus_rp2040/pins.c | 6 + .../boards/splitkb_liatris/board.c | 30 +-- .../boards/splitkb_liatris/mpconfigboard.h | 6 + .../splitkb_liatris/pico-sdk-configboard.h | 6 + .../raspberrypi/boards/splitkb_liatris/pins.c | 6 + .../takayoshiotake_octave_rp2040/board.c | 30 +-- .../mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../takayoshiotake_octave_rp2040/pins.c | 6 + ports/raspberrypi/boards/ugame22/board.c | 30 +-- .../boards/ugame22/mpconfigboard.h | 6 + .../boards/ugame22/pico-sdk-configboard.h | 6 + ports/raspberrypi/boards/ugame22/pins.c | 6 + .../boards/vcc_gnd_yd_rp2040/board.c | 30 +-- .../boards/vcc_gnd_yd_rp2040/mpconfigboard.h | 6 + .../vcc_gnd_yd_rp2040/pico-sdk-configboard.h | 6 + .../boards/vcc_gnd_yd_rp2040/pins.c | 6 + .../boards/waveshare_rp2040_geek/board.c | 6 + .../waveshare_rp2040_geek/mpconfigboard.h | 30 +-- .../pico-sdk-configboard.h | 6 + .../boards/waveshare_rp2040_geek/pins.c | 6 + .../boards/waveshare_rp2040_lcd_0_96/board.c | 30 +-- .../waveshare_rp2040_lcd_0_96/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/waveshare_rp2040_lcd_0_96/pins.c | 6 + .../boards/waveshare_rp2040_lcd_1_28/board.c | 30 +-- .../waveshare_rp2040_lcd_1_28/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/waveshare_rp2040_lcd_1_28/pins.c | 6 + .../boards/waveshare_rp2040_plus_16mb/board.c | 30 +-- .../mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/waveshare_rp2040_plus_16mb/pins.c | 6 + .../boards/waveshare_rp2040_plus_4mb/board.c | 30 +-- .../waveshare_rp2040_plus_4mb/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/waveshare_rp2040_plus_4mb/pins.c | 6 + .../boards/waveshare_rp2040_tiny/board.c | 30 +-- .../waveshare_rp2040_tiny/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/waveshare_rp2040_tiny/pins.c | 6 + .../waveshare_rp2040_touch_lcd_1_28/board.c | 30 +-- .../mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../waveshare_rp2040_touch_lcd_1_28/pins.c | 6 + .../boards/waveshare_rp2040_zero/board.c | 30 +-- .../waveshare_rp2040_zero/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/waveshare_rp2040_zero/pins.c | 6 + .../boards/weact_studio_pico/board.c | 30 +-- .../boards/weact_studio_pico/mpconfigboard.h | 6 + .../weact_studio_pico/pico-sdk-configboard.h | 6 + .../boards/weact_studio_pico/pins.c | 6 + .../boards/weact_studio_pico_16mb/board.c | 30 +-- .../weact_studio_pico_16mb/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/weact_studio_pico_16mb/pins.c | 6 + .../boards/wisdpi_ardu2040m/board.c | 30 +-- .../boards/wisdpi_ardu2040m/mpconfigboard.h | 6 + .../wisdpi_ardu2040m/pico-sdk-configboard.h | 6 + .../boards/wisdpi_ardu2040m/pins.c | 6 + .../boards/wisdpi_tiny_rp2040/board.c | 30 +-- .../boards/wisdpi_tiny_rp2040/mpconfigboard.h | 6 + .../wisdpi_tiny_rp2040/pico-sdk-configboard.h | 6 + .../boards/wisdpi_tiny_rp2040/pins.c | 6 + .../boards/wiznet_w5100s_evb_pico/board.c | 30 +-- .../wiznet_w5100s_evb_pico/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/wiznet_w5100s_evb_pico/pins.c | 6 + .../boards/wiznet_w5500_evb_pico/board.c | 30 +-- .../wiznet_w5500_evb_pico/mpconfigboard.h | 6 + .../pico-sdk-configboard.h | 6 + .../boards/wiznet_w5500_evb_pico/pins.c | 6 + .../boards/zrichard_rp2.65-f/board.c | 30 +-- .../boards/zrichard_rp2.65-f/mpconfigboard.h | 6 + .../zrichard_rp2.65-f/pico-sdk-configboard.h | 6 + .../boards/zrichard_rp2.65-f/pins.c | 6 + .../common-hal/alarm/SleepMemory.c | 30 +-- .../common-hal/alarm/SleepMemory.h | 30 +-- ports/raspberrypi/common-hal/alarm/__init__.c | 30 +-- ports/raspberrypi/common-hal/alarm/__init__.h | 30 +-- .../common-hal/alarm/coproc/CoprocAlarm.c | 6 + .../common-hal/alarm/coproc/CoprocAlarm.h | 6 + .../common-hal/alarm/pin/PinAlarm.c | 30 +-- .../common-hal/alarm/pin/PinAlarm.h | 30 +-- .../common-hal/alarm/time/TimeAlarm.c | 30 +-- .../common-hal/alarm/time/TimeAlarm.h | 30 +-- .../common-hal/alarm/touch/TouchAlarm.c | 30 +-- .../common-hal/alarm/touch/TouchAlarm.h | 30 +-- .../common-hal/analogbufio/BufferedIn.c | 36 +-- .../common-hal/analogbufio/BufferedIn.h | 36 +-- .../common-hal/analogbufio/__init__.c | 6 + .../common-hal/analogio/AnalogIn.c | 30 +-- .../common-hal/analogio/AnalogIn.h | 30 +-- .../common-hal/analogio/AnalogOut.c | 30 +-- .../common-hal/analogio/AnalogOut.h | 30 +-- .../common-hal/analogio/__init__.c | 6 + .../common-hal/audiobusio/I2SOut.c | 30 +-- .../common-hal/audiobusio/I2SOut.h | 31 +-- .../raspberrypi/common-hal/audiobusio/PDMIn.c | 30 +-- .../raspberrypi/common-hal/audiobusio/PDMIn.h | 30 +-- .../common-hal/audiobusio/__init__.c | 6 + .../common-hal/audiopwmio/PWMAudioOut.c | 30 +-- .../common-hal/audiopwmio/PWMAudioOut.h | 30 +-- .../common-hal/audiopwmio/__init__.c | 5 + ports/raspberrypi/common-hal/board/__init__.c | 30 +-- ports/raspberrypi/common-hal/busio/I2C.c | 30 +-- ports/raspberrypi/common-hal/busio/I2C.h | 30 +-- ports/raspberrypi/common-hal/busio/SPI.c | 30 +-- ports/raspberrypi/common-hal/busio/SPI.h | 30 +-- ports/raspberrypi/common-hal/busio/UART.c | 30 +-- ports/raspberrypi/common-hal/busio/UART.h | 30 +-- ports/raspberrypi/common-hal/busio/__init__.c | 6 + .../raspberrypi/common-hal/countio/Counter.c | 6 + .../raspberrypi/common-hal/countio/Counter.h | 6 + .../raspberrypi/common-hal/countio/__init__.c | 6 + .../common-hal/digitalio/DigitalInOut.c | 30 +-- .../common-hal/digitalio/DigitalInOut.h | 30 +-- .../common-hal/digitalio/__init__.c | 6 + .../common-hal/floppyio/__init__.c | 30 +-- .../common-hal/floppyio/__init__.h | 30 +-- .../common-hal/i2ctarget/I2CTarget.c | 30 +-- .../common-hal/i2ctarget/I2CTarget.h | 30 +-- .../common-hal/i2ctarget/__init__.c | 6 + .../imagecapture/ParallelImageCapture.c | 30 +-- .../imagecapture/ParallelImageCapture.h | 30 +-- .../common-hal/imagecapture/__init__.c | 5 + .../common-hal/imagecapture/__init__.h | 5 + .../common-hal/max3421e/Max3421E.c | 30 +-- .../common-hal/mdns/RemoteService.c | 30 +-- .../common-hal/mdns/RemoteService.h | 30 +-- ports/raspberrypi/common-hal/mdns/Server.c | 30 +-- ports/raspberrypi/common-hal/mdns/Server.h | 30 +-- ports/raspberrypi/common-hal/mdns/__init__.c | 6 + .../common-hal/memorymap/AddressRange.c | 32 +-- .../common-hal/memorymap/AddressRange.h | 32 +-- .../common-hal/memorymap/__init__.c | 6 + .../common-hal/microcontroller/Pin.c | 30 +-- .../common-hal/microcontroller/Pin.h | 30 +-- .../common-hal/microcontroller/Processor.c | 30 +-- .../common-hal/microcontroller/Processor.h | 30 +-- .../common-hal/microcontroller/__init__.c | 30 +-- .../common-hal/microcontroller/__init__.h | 30 +-- .../common-hal/neopixel_write/__init__.c | 30 +-- ports/raspberrypi/common-hal/nvm/ByteArray.c | 30 +-- ports/raspberrypi/common-hal/nvm/ByteArray.h | 30 +-- ports/raspberrypi/common-hal/nvm/__init__.c | 6 + ports/raspberrypi/common-hal/os/__init__.c | 30 +-- .../paralleldisplaybus/ParallelBus.c | 30 +-- .../paralleldisplaybus/ParallelBus.h | 30 +-- .../common-hal/picodvi/Framebuffer.c | 30 +-- .../common-hal/picodvi/Framebuffer.h | 32 +-- .../raspberrypi/common-hal/pulseio/PulseIn.c | 30 +-- .../raspberrypi/common-hal/pulseio/PulseIn.h | 30 +-- .../raspberrypi/common-hal/pulseio/PulseOut.c | 30 +-- .../raspberrypi/common-hal/pulseio/PulseOut.h | 30 +-- .../raspberrypi/common-hal/pulseio/__init__.c | 6 + ports/raspberrypi/common-hal/pwmio/PWMOut.c | 30 +-- ports/raspberrypi/common-hal/pwmio/PWMOut.h | 30 +-- ports/raspberrypi/common-hal/pwmio/__init__.c | 6 + .../common-hal/rgbmatrix/RGBMatrix.c | 30 +-- .../common-hal/rgbmatrix/RGBMatrix.h | 30 +-- .../common-hal/rgbmatrix/__init__.c | 5 + .../common-hal/rotaryio/IncrementalEncoder.c | 30 +-- .../common-hal/rotaryio/IncrementalEncoder.h | 30 +-- .../common-hal/rotaryio/__init__.c | 6 + .../common-hal/rotaryio/__init__.h | 5 + .../common-hal/rp2pio/StateMachine.c | 30 +-- .../common-hal/rp2pio/StateMachine.h | 30 +-- .../raspberrypi/common-hal/rp2pio/__init__.c | 30 +-- ports/raspberrypi/common-hal/rtc/RTC.c | 30 +-- ports/raspberrypi/common-hal/rtc/RTC.h | 30 +-- ports/raspberrypi/common-hal/rtc/__init__.c | 6 + .../common-hal/socketpool/Socket.c | 38 +-- .../common-hal/socketpool/Socket.h | 36 +-- .../common-hal/socketpool/SocketPool.c | 30 +-- .../common-hal/socketpool/SocketPool.h | 30 +-- .../common-hal/socketpool/__init__.c | 30 +-- .../common-hal/socketpool/__init__.h | 30 +-- ports/raspberrypi/common-hal/usb_host/Port.c | 30 +-- ports/raspberrypi/common-hal/usb_host/Port.h | 30 +-- .../common-hal/usb_host/__init__.c | 30 +-- .../common-hal/watchdog/WatchDogMode.c | 6 + .../common-hal/watchdog/WatchDogTimer.c | 30 +-- .../common-hal/watchdog/WatchDogTimer.h | 30 +-- .../common-hal/watchdog/__init__.c | 6 + ports/raspberrypi/common-hal/wifi/Monitor.c | 30 +-- ports/raspberrypi/common-hal/wifi/Monitor.h | 32 +-- ports/raspberrypi/common-hal/wifi/Network.c | 30 +-- ports/raspberrypi/common-hal/wifi/Network.h | 30 +-- ports/raspberrypi/common-hal/wifi/Radio.c | 30 +-- ports/raspberrypi/common-hal/wifi/Radio.h | 30 +-- .../common-hal/wifi/ScannedNetworks.c | 34 +-- .../common-hal/wifi/ScannedNetworks.h | 32 +-- ports/raspberrypi/common-hal/wifi/__init__.c | 30 +-- ports/raspberrypi/common-hal/wifi/__init__.h | 30 +-- ports/raspberrypi/cyw43_configport.h | 30 +-- ports/raspberrypi/mpconfigport.h | 30 +-- ports/raspberrypi/mphalport.c | 30 +-- ports/raspberrypi/mphalport.h | 30 +-- ports/raspberrypi/peripherals/pins.c | 30 +-- ports/raspberrypi/peripherals/pins.h | 30 +-- ports/raspberrypi/qstrdefsport.h | 6 + ports/raspberrypi/supervisor/internal_flash.c | 30 +-- ports/raspberrypi/supervisor/internal_flash.h | 30 +-- ports/raspberrypi/supervisor/port.c | 30 +-- ports/raspberrypi/supervisor/usb.c | 30 +-- ports/renode/Makefile | 24 +- ports/renode/background.c | 30 +-- ports/renode/background.h | 30 +-- .../boards/renode_cortex_m0plus/board.c | 30 +-- .../renode_cortex_m0plus/mpconfigboard.h | 6 + .../renode/boards/renode_cortex_m0plus/pins.c | 6 + ports/renode/common-hal/board/__init__.c | 30 +-- ports/renode/common-hal/busio/I2C.c | 30 +-- ports/renode/common-hal/busio/I2C.h | 30 +-- ports/renode/common-hal/busio/SPI.c | 30 +-- ports/renode/common-hal/busio/SPI.h | 30 +-- ports/renode/common-hal/busio/UART.c | 30 +-- ports/renode/common-hal/busio/UART.h | 30 +-- ports/renode/common-hal/busio/__init__.c | 6 + ports/renode/common-hal/microcontroller/Pin.c | 30 +-- ports/renode/common-hal/microcontroller/Pin.h | 30 +-- .../common-hal/microcontroller/Processor.c | 30 +-- .../common-hal/microcontroller/Processor.h | 30 +-- .../common-hal/microcontroller/__init__.c | 30 +-- .../common-hal/microcontroller/__init__.h | 30 +-- ports/renode/common-hal/os/__init__.c | 30 +-- ports/renode/mpconfigport.h | 30 +-- ports/renode/mphalport.c | 30 +-- ports/renode/mphalport.h | 30 +-- ports/renode/qstrdefsport.h | 6 + ports/renode/supervisor/internal_flash.c | 30 +-- ports/renode/supervisor/internal_flash.h | 30 +-- ports/renode/supervisor/port.c | 30 +-- ports/stm/Makefile | 22 +- ports/stm/background.c | 30 +-- ports/stm/background.h | 30 +-- ports/stm/boards/STM32F746xG_fs.ld | 32 +-- ports/stm/boards/espruino_pico/board.c | 30 +-- .../stm/boards/espruino_pico/mpconfigboard.h | 30 +-- ports/stm/boards/espruino_pico/pins.c | 6 + ports/stm/boards/espruino_wifi/board.c | 30 +-- .../stm/boards/espruino_wifi/mpconfigboard.h | 30 +-- ports/stm/boards/espruino_wifi/pins.c | 6 + .../boards/feather_stm32f405_express/board.c | 30 +-- .../feather_stm32f405_express/mpconfigboard.h | 30 +-- .../boards/feather_stm32f405_express/pins.c | 6 + ports/stm/boards/meowbit_v121/board.c | 30 +-- ports/stm/boards/meowbit_v121/mpconfigboard.h | 30 +-- ports/stm/boards/meowbit_v121/pins.c | 6 + ports/stm/boards/nucleo_f446re/board.c | 30 +-- .../stm/boards/nucleo_f446re/mpconfigboard.h | 30 +-- ports/stm/boards/nucleo_f446re/pins.c | 6 + ports/stm/boards/nucleo_f746zg/board.c | 30 +-- .../stm/boards/nucleo_f746zg/mpconfigboard.h | 32 +-- ports/stm/boards/nucleo_f746zg/pins.c | 6 + ports/stm/boards/nucleo_f767zi/board.c | 30 +-- .../stm/boards/nucleo_f767zi/mpconfigboard.h | 30 +-- ports/stm/boards/nucleo_f767zi/pins.c | 6 + ports/stm/boards/nucleo_h743zi_2/board.c | 30 +-- .../boards/nucleo_h743zi_2/mpconfigboard.h | 30 +-- ports/stm/boards/nucleo_h743zi_2/pins.c | 6 + ports/stm/boards/openmv_h7/board.c | 30 +-- ports/stm/boards/openmv_h7/mpconfigboard.h | 30 +-- ports/stm/boards/openmv_h7/pins.c | 6 + ports/stm/boards/pyb_nano_v2/board.c | 30 +-- ports/stm/boards/pyb_nano_v2/mpconfigboard.h | 30 +-- ports/stm/boards/pyb_nano_v2/pins.c | 6 + ports/stm/boards/pyboard_v11/board.c | 30 +-- ports/stm/boards/pyboard_v11/mpconfigboard.h | 30 +-- ports/stm/boards/pyboard_v11/pins.c | 6 + .../boards/sparkfun_stm32_thing_plus/board.c | 30 +-- .../sparkfun_stm32_thing_plus/mpconfigboard.h | 30 +-- .../boards/sparkfun_stm32_thing_plus/pins.c | 6 + .../sparkfun_stm32f405_micromod/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../boards/sparkfun_stm32f405_micromod/pins.c | 30 +-- .../stm/boards/stm32f411ce_blackpill/board.c | 30 +-- .../stm32f411ce_blackpill/mpconfigboard.h | 30 +-- ports/stm/boards/stm32f411ce_blackpill/pins.c | 6 + .../stm32f411ce_blackpill_with_flash/board.c | 30 +-- .../mpconfigboard.h | 30 +-- .../stm32f411ce_blackpill_with_flash/pins.c | 6 + .../stm/boards/stm32f411ve_discovery/board.c | 30 +-- .../stm32f411ve_discovery/mpconfigboard.h | 30 +-- ports/stm/boards/stm32f411ve_discovery/pins.c | 6 + .../stm/boards/stm32f412zg_discovery/board.c | 30 +-- .../stm32f412zg_discovery/mpconfigboard.h | 30 +-- ports/stm/boards/stm32f412zg_discovery/pins.c | 6 + ports/stm/boards/stm32f4_discovery/board.c | 30 +-- .../boards/stm32f4_discovery/mpconfigboard.h | 30 +-- ports/stm/boards/stm32f4_discovery/pins.c | 6 + ports/stm/boards/stm32f746g_discovery/board.c | 32 +-- .../stm32f746g_discovery/mpconfigboard.h | 32 +-- ports/stm/boards/stm32f746g_discovery/pins.c | 7 + ports/stm/boards/swan_r5/board.c | 30 +-- ports/stm/boards/swan_r5/board.h | 6 + ports/stm/boards/swan_r5/mpconfigboard.h | 30 +-- ports/stm/boards/swan_r5/pins.c | 6 + ports/stm/boards/system_stm32f7xx.c | 6 + ports/stm/boards/thunderpack_v11/board.c | 30 +-- .../boards/thunderpack_v11/mpconfigboard.h | 30 +-- ports/stm/boards/thunderpack_v11/pins.c | 6 + ports/stm/boards/thunderpack_v12/board.c | 30 +-- .../boards/thunderpack_v12/mpconfigboard.h | 30 +-- ports/stm/boards/thunderpack_v12/pins.c | 6 + ports/stm/common-hal/alarm/SleepMemory.c | 30 +-- ports/stm/common-hal/alarm/SleepMemory.h | 30 +-- ports/stm/common-hal/alarm/__init__.c | 30 +-- ports/stm/common-hal/alarm/__init__.h | 30 +-- .../stm/common-hal/alarm/coproc/CoprocAlarm.c | 6 + .../stm/common-hal/alarm/coproc/CoprocAlarm.h | 6 + ports/stm/common-hal/alarm/pin/PinAlarm.c | 30 +-- ports/stm/common-hal/alarm/pin/PinAlarm.h | 30 +-- ports/stm/common-hal/alarm/time/TimeAlarm.c | 30 +-- ports/stm/common-hal/alarm/time/TimeAlarm.h | 30 +-- ports/stm/common-hal/alarm/touch/TouchAlarm.c | 30 +-- ports/stm/common-hal/alarm/touch/TouchAlarm.h | 30 +-- ports/stm/common-hal/analogio/AnalogIn.c | 32 +-- ports/stm/common-hal/analogio/AnalogIn.h | 32 +-- ports/stm/common-hal/analogio/AnalogOut.c | 32 +-- ports/stm/common-hal/analogio/AnalogOut.h | 32 +-- ports/stm/common-hal/analogio/__init__.c | 6 + ports/stm/common-hal/audiobusio/I2SOut.c | 6 + ports/stm/common-hal/audiobusio/I2SOut.h | 6 + ports/stm/common-hal/audiobusio/MEMS_Audio.c | 28 +- ports/stm/common-hal/audiobusio/MEMS_Audio.h | 50 ++-- .../stm/common-hal/audiobusio/MEMS_Audio_ll.h | 28 +- .../audiobusio/MEMS_Audio_ll_stm32l4.c | 255 ++++++++---------- .../audiobusio/MEMS_Audio_ll_stm32l4.h | 28 +- .../stm/common-hal/audiobusio/OpenPDMFilter.c | 6 + .../stm/common-hal/audiobusio/OpenPDMFilter.h | 6 + ports/stm/common-hal/audiobusio/PDMIn.c | 30 +-- ports/stm/common-hal/audiobusio/PDMIn.h | 30 +-- ports/stm/common-hal/audiobusio/__init__.c | 5 + ports/stm/common-hal/audiopwmio/PWMAudioOut.c | 30 +-- ports/stm/common-hal/audiopwmio/PWMAudioOut.h | 30 +-- ports/stm/common-hal/audiopwmio/__init__.c | 5 + ports/stm/common-hal/board/__init__.c | 30 +-- ports/stm/common-hal/busio/I2C.c | 32 +-- ports/stm/common-hal/busio/I2C.h | 32 +-- ports/stm/common-hal/busio/SPI.c | 32 +-- ports/stm/common-hal/busio/SPI.h | 32 +-- ports/stm/common-hal/busio/UART.c | 30 +-- ports/stm/common-hal/busio/UART.h | 30 +-- ports/stm/common-hal/busio/__init__.c | 6 + ports/stm/common-hal/canio/CAN.c | 30 +-- ports/stm/common-hal/canio/CAN.h | 30 +-- ports/stm/common-hal/canio/Listener.c | 30 +-- ports/stm/common-hal/canio/Listener.h | 30 +-- ports/stm/common-hal/canio/__init__.c | 30 +-- ports/stm/common-hal/canio/__init__.h | 30 +-- ports/stm/common-hal/digitalio/DigitalInOut.c | 32 +-- ports/stm/common-hal/digitalio/DigitalInOut.h | 32 +-- ports/stm/common-hal/digitalio/__init__.c | 6 + ports/stm/common-hal/microcontroller/Pin.c | 32 +-- ports/stm/common-hal/microcontroller/Pin.h | 30 +-- .../common-hal/microcontroller/Processor.c | 30 +-- .../common-hal/microcontroller/Processor.h | 30 +-- .../stm/common-hal/microcontroller/__init__.c | 32 +-- .../stm/common-hal/neopixel_write/__init__.c | 30 +-- ports/stm/common-hal/nvm/ByteArray.c | 30 +-- ports/stm/common-hal/nvm/ByteArray.h | 30 +-- ports/stm/common-hal/nvm/__init__.c | 30 +-- ports/stm/common-hal/os/__init__.c | 32 +-- ports/stm/common-hal/pulseio/PulseIn.c | 30 +-- ports/stm/common-hal/pulseio/PulseIn.h | 30 +-- ports/stm/common-hal/pulseio/PulseOut.c | 30 +-- ports/stm/common-hal/pulseio/PulseOut.h | 30 +-- ports/stm/common-hal/pulseio/__init__.c | 6 + ports/stm/common-hal/pwmio/PWMOut.c | 32 +-- ports/stm/common-hal/pwmio/PWMOut.h | 30 +-- ports/stm/common-hal/pwmio/__init__.c | 6 + ports/stm/common-hal/rgbmatrix/RGBMatrix.c | 30 +-- ports/stm/common-hal/rgbmatrix/RGBMatrix.h | 30 +-- ports/stm/common-hal/rgbmatrix/__init__.c | 5 + ports/stm/common-hal/rgbmatrix/__init__.h | 5 + ports/stm/common-hal/rtc/RTC.c | 30 +-- ports/stm/common-hal/rtc/RTC.h | 30 +-- ports/stm/common-hal/rtc/__init__.c | 5 + ports/stm/common-hal/rtc/__init__.h | 5 + ports/stm/common-hal/sdioio/SDCard.c | 30 +-- ports/stm/common-hal/sdioio/SDCard.h | 30 +-- ports/stm/common-hal/sdioio/__init__.c | 5 + ports/stm/common-hal/sdioio/__init__.h | 5 + ports/stm/mpconfigport.h | 32 +-- ports/stm/mpconfigport_nanbox.h | 30 +-- ports/stm/mphalport.c | 32 +-- ports/stm/mphalport.h | 30 +-- ports/stm/packages/TFBGA216.c | 31 +-- ports/stm/peripherals/clocks.h | 30 +-- ports/stm/peripherals/exti.c | 30 +-- ports/stm/peripherals/exti.h | 30 +-- ports/stm/peripherals/gpio.h | 30 +-- ports/stm/peripherals/periph.h | 30 +-- ports/stm/peripherals/pins.h | 30 +-- ports/stm/peripherals/rtc.c | 32 +-- ports/stm/peripherals/rtc.h | 32 +-- ports/stm/peripherals/stm32f4/clocks.c | 30 +-- .../peripherals/stm32f4/stm32f401xe/clocks.h | 30 +-- .../peripherals/stm32f4/stm32f401xe/gpio.c | 30 +-- .../peripherals/stm32f4/stm32f401xe/periph.c | 30 +-- .../peripherals/stm32f4/stm32f401xe/periph.h | 30 +-- .../peripherals/stm32f4/stm32f401xe/pins.c | 30 +-- .../peripherals/stm32f4/stm32f401xe/pins.h | 30 +-- .../peripherals/stm32f4/stm32f405xx/clocks.h | 30 +-- .../peripherals/stm32f4/stm32f405xx/gpio.c | 30 +-- .../peripherals/stm32f4/stm32f405xx/periph.c | 30 +-- .../peripherals/stm32f4/stm32f405xx/periph.h | 30 +-- .../peripherals/stm32f4/stm32f405xx/pins.c | 30 +-- .../peripherals/stm32f4/stm32f405xx/pins.h | 30 +-- .../peripherals/stm32f4/stm32f407xx/clocks.h | 30 +-- .../peripherals/stm32f4/stm32f407xx/gpio.c | 30 +-- .../peripherals/stm32f4/stm32f407xx/periph.c | 30 +-- .../peripherals/stm32f4/stm32f407xx/periph.h | 30 +-- .../peripherals/stm32f4/stm32f407xx/pins.c | 30 +-- .../peripherals/stm32f4/stm32f407xx/pins.h | 30 +-- .../peripherals/stm32f4/stm32f411xe/clocks.h | 30 +-- .../peripherals/stm32f4/stm32f411xe/gpio.c | 30 +-- .../peripherals/stm32f4/stm32f411xe/periph.c | 30 +-- .../peripherals/stm32f4/stm32f411xe/periph.h | 30 +-- .../peripherals/stm32f4/stm32f411xe/pins.c | 30 +-- .../peripherals/stm32f4/stm32f411xe/pins.h | 30 +-- .../peripherals/stm32f4/stm32f412cx/clocks.h | 30 +-- .../peripherals/stm32f4/stm32f412cx/gpio.c | 30 +-- .../peripherals/stm32f4/stm32f412cx/periph.c | 30 +-- .../peripherals/stm32f4/stm32f412cx/periph.h | 30 +-- .../peripherals/stm32f4/stm32f412cx/pins.c | 30 +-- .../peripherals/stm32f4/stm32f412cx/pins.h | 30 +-- .../peripherals/stm32f4/stm32f412zx/clocks.h | 30 +-- .../peripherals/stm32f4/stm32f412zx/gpio.c | 30 +-- .../peripherals/stm32f4/stm32f412zx/periph.c | 30 +-- .../peripherals/stm32f4/stm32f412zx/periph.h | 30 +-- .../peripherals/stm32f4/stm32f412zx/pins.c | 30 +-- .../peripherals/stm32f4/stm32f412zx/pins.h | 30 +-- .../peripherals/stm32f4/stm32f446xx/clocks.h | 30 +-- .../peripherals/stm32f4/stm32f446xx/gpio.c | 30 +-- .../peripherals/stm32f4/stm32f446xx/periph.c | 30 +-- .../peripherals/stm32f4/stm32f446xx/periph.h | 30 +-- .../peripherals/stm32f4/stm32f446xx/pins.c | 30 +-- .../peripherals/stm32f4/stm32f446xx/pins.h | 30 +-- ports/stm/peripherals/stm32f7/clocks.c | 30 +-- .../peripherals/stm32f7/stm32f746xx/clocks.h | 30 +-- .../peripherals/stm32f7/stm32f746xx/gpio.c | 32 +-- .../peripherals/stm32f7/stm32f746xx/periph.c | 32 +-- .../peripherals/stm32f7/stm32f746xx/periph.h | 32 +-- .../peripherals/stm32f7/stm32f746xx/pins.c | 30 +-- .../peripherals/stm32f7/stm32f746xx/pins.h | 30 +-- .../peripherals/stm32f7/stm32f767xx/clocks.h | 30 +-- .../peripherals/stm32f7/stm32f767xx/gpio.c | 30 +-- .../peripherals/stm32f7/stm32f767xx/periph.c | 30 +-- .../peripherals/stm32f7/stm32f767xx/periph.h | 30 +-- .../peripherals/stm32f7/stm32f767xx/pins.c | 30 +-- .../peripherals/stm32f7/stm32f767xx/pins.h | 30 +-- ports/stm/peripherals/stm32h7/clocks.c | 30 +-- .../peripherals/stm32h7/stm32h743xx/clocks.h | 31 +-- .../peripherals/stm32h7/stm32h743xx/gpio.c | 30 +-- .../peripherals/stm32h7/stm32h743xx/periph.c | 30 +-- .../peripherals/stm32h7/stm32h743xx/periph.h | 30 +-- .../peripherals/stm32h7/stm32h743xx/pins.c | 30 +-- .../peripherals/stm32h7/stm32h743xx/pins.h | 30 +-- ports/stm/peripherals/stm32l4/clocks.c | 30 +-- .../peripherals/stm32l4/stm32l4r5xx/clocks.h | 30 +-- .../peripherals/stm32l4/stm32l4r5xx/gpio.c | 30 +-- .../peripherals/stm32l4/stm32l4r5xx/periph.c | 30 +-- .../peripherals/stm32l4/stm32l4r5xx/periph.h | 30 +-- .../peripherals/stm32l4/stm32l4r5xx/pins.c | 30 +-- .../peripherals/stm32l4/stm32l4r5xx/pins.h | 30 +-- ports/stm/peripherals/timers.c | 30 +-- ports/stm/peripherals/timers.h | 30 +-- ports/stm/qstrdefsport.h | 6 + ports/stm/supervisor/internal_flash.c | 32 +-- ports/stm/supervisor/internal_flash.h | 34 +-- ports/stm/supervisor/port.c | 32 +-- ports/stm/supervisor/qspi_flash.c | 32 +-- ports/stm/supervisor/serial.c | 32 +-- ports/stm/supervisor/usb.c | 32 +-- ports/stm/tools/parse_af_csv.py | 22 +- ports/stm/tools/parse_pins_csv.py | 22 +- ports/unix/displayio_min.c | 30 +-- py/circuitpy_mpconfig.h | 30 +-- py/enum.c | 30 +-- py/enum.h | 30 +-- py/proto.c | 30 +-- py/proto.h | 30 +-- py/ringbuf.c | 34 +-- py/ringbuf.h | 32 +-- shared-bindings/__future__/__init__.c | 30 +-- shared-bindings/__future__/__init__.h | 30 +-- shared-bindings/_bleio/Adapter.c | 32 +-- shared-bindings/_bleio/Adapter.h | 32 +-- shared-bindings/_bleio/Address.c | 32 +-- shared-bindings/_bleio/Address.h | 32 +-- shared-bindings/_bleio/Attribute.c | 30 +-- shared-bindings/_bleio/Attribute.h | 30 +-- shared-bindings/_bleio/Characteristic.c | 34 +-- shared-bindings/_bleio/Characteristic.h | 32 +-- shared-bindings/_bleio/CharacteristicBuffer.c | 30 +-- shared-bindings/_bleio/CharacteristicBuffer.h | 30 +-- shared-bindings/_bleio/Connection.c | 34 +-- shared-bindings/_bleio/Connection.h | 32 +-- shared-bindings/_bleio/Descriptor.c | 34 +-- shared-bindings/_bleio/Descriptor.h | 32 +-- shared-bindings/_bleio/PacketBuffer.c | 30 +-- shared-bindings/_bleio/PacketBuffer.h | 30 +-- shared-bindings/_bleio/ScanEntry.c | 34 +-- shared-bindings/_bleio/ScanEntry.h | 34 +-- shared-bindings/_bleio/ScanResults.c | 34 +-- shared-bindings/_bleio/ScanResults.h | 34 +-- shared-bindings/_bleio/Service.c | 34 +-- shared-bindings/_bleio/Service.h | 32 +-- shared-bindings/_bleio/UUID.c | 34 +-- shared-bindings/_bleio/UUID.h | 32 +-- shared-bindings/_bleio/__init__.c | 34 +-- shared-bindings/_bleio/__init__.h | 34 +-- shared-bindings/_eve/__init__.c | 30 +-- shared-bindings/_eve/__init__.h | 30 +-- shared-bindings/_pew/PewPew.c | 30 +-- shared-bindings/_pew/PewPew.h | 30 +-- shared-bindings/_pew/__init__.c | 30 +-- shared-bindings/_pixelmap/PixelMap.c | 32 +-- shared-bindings/_pixelmap/PixelMap.h | 32 +-- shared-bindings/_pixelmap/__init__.c | 30 +-- shared-bindings/_pixelmap/__init__.h | 30 +-- shared-bindings/_stage/Layer.c | 30 +-- shared-bindings/_stage/Layer.h | 30 +-- shared-bindings/_stage/Text.c | 30 +-- shared-bindings/_stage/Text.h | 30 +-- shared-bindings/_stage/__init__.c | 30 +-- shared-bindings/_stage/__init__.h | 30 +-- .../adafruit_bus_device/__init__.c | 30 +-- .../adafruit_bus_device/__init__.h | 30 +-- .../i2c_device/I2CDevice.c | 30 +-- .../i2c_device/I2CDevice.h | 30 +-- .../spi_device/SPIDevice.c | 30 +-- .../spi_device/SPIDevice.h | 30 +-- shared-bindings/adafruit_pixelbuf/PixelBuf.c | 30 +-- shared-bindings/adafruit_pixelbuf/PixelBuf.h | 30 +-- shared-bindings/adafruit_pixelbuf/__init__.c | 30 +-- shared-bindings/adafruit_pixelbuf/__init__.h | 30 +-- shared-bindings/aesio/__init__.c | 30 +-- shared-bindings/aesio/__init__.h | 30 +-- shared-bindings/aesio/aes.c | 30 +-- shared-bindings/alarm/SleepMemory.c | 32 +-- shared-bindings/alarm/SleepMemory.h | 32 +-- shared-bindings/alarm/__init__.c | 30 +-- shared-bindings/alarm/__init__.h | 30 +-- shared-bindings/alarm/pin/PinAlarm.c | 30 +-- shared-bindings/alarm/pin/PinAlarm.h | 30 +-- shared-bindings/alarm/time/TimeAlarm.c | 30 +-- shared-bindings/alarm/time/TimeAlarm.h | 30 +-- shared-bindings/alarm/touch/TouchAlarm.c | 30 +-- shared-bindings/alarm/touch/TouchAlarm.h | 30 +-- shared-bindings/analogbufio/BufferedIn.c | 32 +-- shared-bindings/analogbufio/BufferedIn.h | 30 +-- shared-bindings/analogbufio/__init__.c | 30 +-- shared-bindings/analogbufio/__init__.h | 30 +-- shared-bindings/analogio/AnalogIn.c | 30 +-- shared-bindings/analogio/AnalogIn.h | 30 +-- shared-bindings/analogio/AnalogOut.c | 30 +-- shared-bindings/analogio/AnalogOut.h | 30 +-- shared-bindings/analogio/__init__.c | 30 +-- shared-bindings/analogio/__init__.h | 30 +-- shared-bindings/atexit/__init__.c | 30 +-- shared-bindings/audiobusio/I2SOut.c | 30 +-- shared-bindings/audiobusio/I2SOut.h | 30 +-- shared-bindings/audiobusio/PDMIn.c | 30 +-- shared-bindings/audiobusio/PDMIn.h | 30 +-- shared-bindings/audiobusio/__init__.c | 30 +-- shared-bindings/audiobusio/__init__.h | 30 +-- shared-bindings/audiocore/RawSample.c | 30 +-- shared-bindings/audiocore/RawSample.h | 30 +-- shared-bindings/audiocore/WaveFile.c | 30 +-- shared-bindings/audiocore/WaveFile.h | 30 +-- shared-bindings/audiocore/__init__.c | 30 +-- shared-bindings/audiocore/__init__.h | 30 +-- shared-bindings/audioio/AudioOut.c | 30 +-- shared-bindings/audioio/AudioOut.h | 30 +-- shared-bindings/audioio/__init__.c | 30 +-- shared-bindings/audioio/__init__.h | 30 +-- shared-bindings/audiomixer/Mixer.c | 30 +-- shared-bindings/audiomixer/Mixer.h | 30 +-- shared-bindings/audiomixer/MixerVoice.c | 30 +-- shared-bindings/audiomixer/MixerVoice.h | 30 +-- shared-bindings/audiomixer/__init__.c | 30 +-- shared-bindings/audiomixer/__init__.h | 30 +-- shared-bindings/audiomp3/MP3Decoder.c | 32 +-- shared-bindings/audiomp3/MP3Decoder.h | 32 +-- shared-bindings/audiomp3/__init__.c | 30 +-- shared-bindings/audiomp3/__init__.h | 30 +-- shared-bindings/audiopwmio/PWMAudioOut.c | 30 +-- shared-bindings/audiopwmio/PWMAudioOut.h | 30 +-- shared-bindings/audiopwmio/__init__.c | 30 +-- shared-bindings/audiopwmio/__init__.h | 30 +-- shared-bindings/bitbangio/I2C.c | 30 +-- shared-bindings/bitbangio/I2C.h | 30 +-- shared-bindings/bitbangio/SPI.c | 30 +-- shared-bindings/bitbangio/SPI.h | 30 +-- shared-bindings/bitbangio/__init__.c | 30 +-- shared-bindings/bitbangio/__init__.h | 30 +-- shared-bindings/bitmapfilter/__init__.c | 30 +-- shared-bindings/bitmapfilter/__init__.h | 30 +-- shared-bindings/bitmaptools/__init__.c | 30 +-- shared-bindings/bitmaptools/__init__.h | 30 +-- shared-bindings/bitops/__init__.c | 30 +-- shared-bindings/bitops/__init__.h | 30 +-- shared-bindings/board/__init__.c | 30 +-- shared-bindings/board/__init__.h | 30 +-- shared-bindings/busdisplay/BusDisplay.c | 30 +-- shared-bindings/busdisplay/BusDisplay.h | 30 +-- shared-bindings/busdisplay/__init__.c | 30 +-- shared-bindings/busdisplay/__init__.h | 30 +-- shared-bindings/busio/I2C.c | 30 +-- shared-bindings/busio/I2C.h | 30 +-- shared-bindings/busio/SPI.c | 30 +-- shared-bindings/busio/SPI.h | 30 +-- shared-bindings/busio/UART.c | 30 +-- shared-bindings/busio/UART.h | 30 +-- shared-bindings/busio/__init__.c | 30 +-- shared-bindings/busio/__init__.h | 30 +-- shared-bindings/camera/Camera.c | 30 +-- shared-bindings/camera/Camera.h | 30 +-- shared-bindings/camera/ImageFormat.c | 30 +-- shared-bindings/camera/ImageFormat.h | 30 +-- shared-bindings/camera/__init__.c | 30 +-- shared-bindings/canio/CAN.c | 30 +-- shared-bindings/canio/CAN.h | 30 +-- shared-bindings/canio/Listener.c | 30 +-- shared-bindings/canio/Listener.h | 30 +-- shared-bindings/canio/Match.c | 30 +-- shared-bindings/canio/Match.h | 30 +-- shared-bindings/canio/Message.c | 30 +-- shared-bindings/canio/Message.h | 30 +-- .../canio/RemoteTransmissionRequest.c | 30 +-- .../canio/RemoteTransmissionRequest.h | 30 +-- shared-bindings/canio/__init__.c | 30 +-- shared-bindings/canio/__init__.h | 30 +-- shared-bindings/codeop/__init__.c | 30 +-- shared-bindings/countio/Counter.c | 30 +-- shared-bindings/countio/Counter.h | 30 +-- shared-bindings/countio/Edge.c | 30 +-- shared-bindings/countio/Edge.h | 30 +-- shared-bindings/countio/__init__.c | 30 +-- shared-bindings/countio/__init__.h | 30 +-- shared-bindings/digitalio/DigitalInOut.c | 30 +-- shared-bindings/digitalio/DigitalInOut.h | 30 +-- shared-bindings/digitalio/Direction.c | 30 +-- shared-bindings/digitalio/Direction.h | 30 +-- shared-bindings/digitalio/DriveMode.c | 30 +-- shared-bindings/digitalio/DriveMode.h | 30 +-- shared-bindings/digitalio/Pull.c | 30 +-- shared-bindings/digitalio/Pull.h | 30 +-- shared-bindings/digitalio/__init__.c | 30 +-- shared-bindings/digitalio/__init__.h | 30 +-- shared-bindings/displayio/Bitmap.c | 30 +-- shared-bindings/displayio/Bitmap.h | 30 +-- shared-bindings/displayio/ColorConverter.c | 30 +-- shared-bindings/displayio/ColorConverter.h | 30 +-- shared-bindings/displayio/Colorspace.c | 30 +-- shared-bindings/displayio/Group.c | 30 +-- shared-bindings/displayio/Group.h | 30 +-- shared-bindings/displayio/OnDiskBitmap.c | 30 +-- shared-bindings/displayio/OnDiskBitmap.h | 30 +-- shared-bindings/displayio/Palette.c | 30 +-- shared-bindings/displayio/Palette.h | 30 +-- shared-bindings/displayio/TileGrid.c | 30 +-- shared-bindings/displayio/TileGrid.h | 30 +-- shared-bindings/displayio/__init__.c | 30 +-- shared-bindings/displayio/__init__.h | 30 +-- shared-bindings/displayio/area.c | 5 + .../dotclockframebuffer/DotClockFramebuffer.c | 30 +-- .../dotclockframebuffer/DotClockFramebuffer.h | 30 +-- .../dotclockframebuffer/__init__.c | 30 +-- .../dotclockframebuffer/__init__.h | 30 +-- shared-bindings/dualbank/__init__.c | 30 +-- shared-bindings/dualbank/__init__.h | 30 +-- shared-bindings/epaperdisplay/EPaperDisplay.c | 30 +-- shared-bindings/epaperdisplay/EPaperDisplay.h | 30 +-- shared-bindings/epaperdisplay/__init__.c | 30 +-- shared-bindings/epaperdisplay/__init__.h | 30 +-- shared-bindings/floppyio/__init__.c | 30 +-- shared-bindings/floppyio/__init__.h | 30 +-- shared-bindings/fontio/BuiltinFont.c | 30 +-- shared-bindings/fontio/BuiltinFont.h | 30 +-- shared-bindings/fontio/Glyph.c | 30 +-- shared-bindings/fontio/Glyph.h | 30 +-- shared-bindings/fontio/__init__.c | 30 +-- shared-bindings/fontio/__init__.h | 30 +-- shared-bindings/fourwire/FourWire.c | 30 +-- shared-bindings/fourwire/FourWire.h | 30 +-- shared-bindings/fourwire/__init__.c | 30 +-- shared-bindings/fourwire/__init__.h | 30 +-- .../framebufferio/FramebufferDisplay.c | 32 +-- .../framebufferio/FramebufferDisplay.h | 32 +-- shared-bindings/framebufferio/__init__.c | 30 +-- shared-bindings/framebufferio/__init__.h | 5 + shared-bindings/frequencyio/FrequencyIn.c | 30 +-- shared-bindings/frequencyio/FrequencyIn.h | 30 +-- shared-bindings/frequencyio/__init__.c | 30 +-- shared-bindings/frequencyio/__init__.h | 30 +-- shared-bindings/getpass/__init__.c | 30 +-- shared-bindings/gifio/GifWriter.c | 30 +-- shared-bindings/gifio/GifWriter.h | 30 +-- shared-bindings/gifio/OnDiskGif.c | 30 +-- shared-bindings/gifio/OnDiskGif.h | 30 +-- shared-bindings/gifio/__init__.c | 30 +-- shared-bindings/gifio/__init__.h | 5 + shared-bindings/hashlib/Hash.c | 30 +-- shared-bindings/hashlib/Hash.h | 30 +-- shared-bindings/hashlib/__init__.c | 30 +-- shared-bindings/hashlib/__init__.h | 30 +-- shared-bindings/help.rst | 24 +- shared-bindings/i2cdisplaybus/I2CDisplayBus.c | 30 +-- shared-bindings/i2cdisplaybus/I2CDisplayBus.h | 30 +-- shared-bindings/i2cdisplaybus/__init__.c | 30 +-- shared-bindings/i2cdisplaybus/__init__.h | 30 +-- shared-bindings/i2ctarget/I2CTarget.c | 30 +-- shared-bindings/i2ctarget/I2CTarget.h | 30 +-- shared-bindings/i2ctarget/__init__.c | 30 +-- .../imagecapture/ParallelImageCapture.c | 30 +-- .../imagecapture/ParallelImageCapture.h | 30 +-- shared-bindings/imagecapture/__init__.c | 30 +-- shared-bindings/imagecapture/__init__.h | 30 +-- shared-bindings/ipaddress/IPv4Address.c | 32 +-- shared-bindings/ipaddress/IPv4Address.h | 30 +-- shared-bindings/ipaddress/__init__.c | 30 +-- shared-bindings/ipaddress/__init__.h | 30 +-- shared-bindings/is31fl3741/FrameBuffer.c | 30 +-- shared-bindings/is31fl3741/FrameBuffer.h | 30 +-- shared-bindings/is31fl3741/IS31FL3741.c | 30 +-- shared-bindings/is31fl3741/IS31FL3741.h | 30 +-- shared-bindings/is31fl3741/__init__.c | 30 +-- shared-bindings/jpegio/JpegDecoder.c | 30 +-- shared-bindings/jpegio/JpegDecoder.h | 30 +-- shared-bindings/jpegio/__init__.c | 30 +-- shared-bindings/jpegio/__init__.h | 5 + shared-bindings/keypad/Event.c | 30 +-- shared-bindings/keypad/Event.h | 30 +-- shared-bindings/keypad/EventQueue.c | 30 +-- shared-bindings/keypad/EventQueue.h | 30 +-- shared-bindings/keypad/KeyMatrix.c | 30 +-- shared-bindings/keypad/KeyMatrix.h | 30 +-- shared-bindings/keypad/Keys.c | 30 +-- shared-bindings/keypad/Keys.h | 30 +-- shared-bindings/keypad/ShiftRegisterKeys.c | 30 +-- shared-bindings/keypad/ShiftRegisterKeys.h | 30 +-- shared-bindings/keypad/__init__.c | 30 +-- shared-bindings/keypad/__init__.h | 30 +-- shared-bindings/keypad_demux/DemuxKeyMatrix.c | 30 +-- shared-bindings/keypad_demux/DemuxKeyMatrix.h | 30 +-- shared-bindings/keypad_demux/__init__.c | 30 +-- shared-bindings/locale/__init__.c | 30 +-- shared-bindings/math/__init__.c | 32 +-- shared-bindings/max3421e/Max3421E.c | 30 +-- shared-bindings/max3421e/Max3421E.h | 30 +-- shared-bindings/max3421e/__init__.c | 30 +-- shared-bindings/max3421e/__init__.h | 30 +-- shared-bindings/mdns/RemoteService.c | 34 +-- shared-bindings/mdns/RemoteService.h | 34 +-- shared-bindings/mdns/Server.c | 32 +-- shared-bindings/mdns/Server.h | 30 +-- shared-bindings/mdns/__init__.c | 30 +-- shared-bindings/mdns/__init__.h | 30 +-- shared-bindings/memorymap/AddressRange.c | 30 +-- shared-bindings/memorymap/AddressRange.h | 30 +-- shared-bindings/memorymap/__init__.c | 30 +-- shared-bindings/memorymap/__init__.h | 30 +-- .../memorymonitor/AllocationAlarm.c | 30 +-- .../memorymonitor/AllocationAlarm.h | 30 +-- .../memorymonitor/AllocationSize.c | 30 +-- .../memorymonitor/AllocationSize.h | 30 +-- shared-bindings/memorymonitor/__init__.c | 30 +-- shared-bindings/memorymonitor/__init__.h | 30 +-- shared-bindings/microcontroller/Pin.c | 30 +-- shared-bindings/microcontroller/Pin.h | 30 +-- shared-bindings/microcontroller/Processor.c | 30 +-- shared-bindings/microcontroller/Processor.h | 30 +-- shared-bindings/microcontroller/ResetReason.c | 30 +-- shared-bindings/microcontroller/ResetReason.h | 30 +-- shared-bindings/microcontroller/RunMode.c | 30 +-- shared-bindings/microcontroller/RunMode.h | 30 +-- shared-bindings/microcontroller/__init__.c | 30 +-- shared-bindings/microcontroller/__init__.h | 30 +-- shared-bindings/msgpack/ExtType.c | 30 +-- shared-bindings/msgpack/ExtType.h | 30 +-- shared-bindings/msgpack/__init__.c | 30 +-- shared-bindings/msgpack/__init__.h | 30 +-- shared-bindings/neopixel_write/__init__.c | 30 +-- shared-bindings/neopixel_write/__init__.h | 30 +-- shared-bindings/nvm/ByteArray.c | 30 +-- shared-bindings/nvm/ByteArray.h | 30 +-- shared-bindings/nvm/__init__.c | 30 +-- shared-bindings/nvm/__init__.h | 30 +-- shared-bindings/onewireio/OneWire.c | 30 +-- shared-bindings/onewireio/OneWire.h | 30 +-- shared-bindings/onewireio/__init__.c | 30 +-- shared-bindings/onewireio/__init__.h | 30 +-- shared-bindings/os/__init__.c | 34 +-- shared-bindings/os/__init__.h | 30 +-- .../paralleldisplaybus/ParallelBus.c | 30 +-- .../paralleldisplaybus/ParallelBus.h | 30 +-- shared-bindings/paralleldisplaybus/__init__.c | 30 +-- shared-bindings/paralleldisplaybus/__init__.h | 30 +-- shared-bindings/ps2io/Ps2.c | 32 +-- shared-bindings/ps2io/Ps2.h | 32 +-- shared-bindings/ps2io/__init__.c | 32 +-- shared-bindings/ps2io/__init__.h | 32 +-- shared-bindings/pulseio/PulseIn.c | 30 +-- shared-bindings/pulseio/PulseIn.h | 30 +-- shared-bindings/pulseio/PulseOut.c | 30 +-- shared-bindings/pulseio/PulseOut.h | 30 +-- shared-bindings/pulseio/__init__.c | 30 +-- shared-bindings/pulseio/__init__.h | 30 +-- shared-bindings/pwmio/PWMOut.c | 30 +-- shared-bindings/pwmio/PWMOut.h | 30 +-- shared-bindings/pwmio/__init__.c | 30 +-- shared-bindings/pwmio/__init__.h | 30 +-- shared-bindings/qrio/PixelPolicy.c | 30 +-- shared-bindings/qrio/PixelPolicy.h | 30 +-- shared-bindings/qrio/QRDecoder.c | 30 +-- shared-bindings/qrio/QRDecoder.h | 30 +-- shared-bindings/qrio/QRInfo.c | 30 +-- shared-bindings/qrio/QRInfo.h | 30 +-- shared-bindings/qrio/__init__.c | 30 +-- shared-bindings/qrio/__init__.h | 30 +-- shared-bindings/rainbowio/__init__.c | 30 +-- shared-bindings/rainbowio/__init__.h | 30 +-- shared-bindings/random/__init__.c | 32 +-- shared-bindings/random/__init__.h | 30 +-- shared-bindings/rgbmatrix/RGBMatrix.c | 30 +-- shared-bindings/rgbmatrix/RGBMatrix.h | 30 +-- shared-bindings/rgbmatrix/__init__.c | 30 +-- shared-bindings/rotaryio/IncrementalEncoder.c | 30 +-- shared-bindings/rotaryio/IncrementalEncoder.h | 30 +-- shared-bindings/rotaryio/__init__.c | 30 +-- shared-bindings/rotaryio/__init__.h | 30 +-- shared-bindings/rtc/RTC.c | 32 +-- shared-bindings/rtc/RTC.h | 30 +-- shared-bindings/rtc/__init__.c | 32 +-- shared-bindings/rtc/__init__.h | 30 +-- shared-bindings/sdcardio/SDCard.c | 30 +-- shared-bindings/sdcardio/SDCard.h | 32 +-- shared-bindings/sdcardio/__init__.c | 30 +-- shared-bindings/sdcardio/__init__.h | 5 + shared-bindings/sdioio/SDCard.c | 30 +-- shared-bindings/sdioio/SDCard.h | 30 +-- shared-bindings/sdioio/__init__.c | 30 +-- shared-bindings/sdioio/__init__.h | 5 + .../sharpdisplay/SharpMemoryFramebuffer.c | 30 +-- .../sharpdisplay/SharpMemoryFramebuffer.h | 30 +-- shared-bindings/sharpdisplay/__init__.c | 30 +-- shared-bindings/sharpdisplay/__init__.h | 5 + shared-bindings/socketpool/Socket.c | 32 +-- shared-bindings/socketpool/Socket.h | 30 +-- shared-bindings/socketpool/SocketPool.c | 30 +-- shared-bindings/socketpool/SocketPool.h | 30 +-- shared-bindings/socketpool/__init__.c | 30 +-- shared-bindings/socketpool/__init__.h | 30 +-- shared-bindings/socketpool/enum.h | 30 +-- shared-bindings/ssl/SSLContext.c | 30 +-- shared-bindings/ssl/SSLContext.h | 30 +-- shared-bindings/ssl/SSLSocket.c | 30 +-- shared-bindings/ssl/SSLSocket.h | 30 +-- shared-bindings/ssl/__init__.c | 30 +-- shared-bindings/ssl/__init__.h | 30 +-- shared-bindings/storage/__init__.c | 34 +-- shared-bindings/storage/__init__.h | 30 +-- shared-bindings/struct/__init__.c | 34 +-- shared-bindings/struct/__init__.h | 30 +-- shared-bindings/supervisor/RunReason.c | 30 +-- shared-bindings/supervisor/RunReason.h | 30 +-- shared-bindings/supervisor/Runtime.c | 30 +-- shared-bindings/supervisor/Runtime.h | 30 +-- shared-bindings/supervisor/SafeModeReason.c | 30 +-- shared-bindings/supervisor/SafeModeReason.h | 30 +-- shared-bindings/supervisor/StatusBar.c | 30 +-- shared-bindings/supervisor/StatusBar.h | 30 +-- shared-bindings/supervisor/__init__.c | 30 +-- shared-bindings/supervisor/__init__.h | 30 +-- shared-bindings/synthio/Biquad.c | 30 +-- shared-bindings/synthio/Biquad.h | 30 +-- shared-bindings/synthio/LFO.c | 32 +-- shared-bindings/synthio/LFO.h | 30 +-- shared-bindings/synthio/Math.c | 32 +-- shared-bindings/synthio/Math.h | 30 +-- shared-bindings/synthio/MidiTrack.c | 30 +-- shared-bindings/synthio/MidiTrack.h | 30 +-- shared-bindings/synthio/Note.c | 32 +-- shared-bindings/synthio/Note.h | 32 +-- shared-bindings/synthio/Synthesizer.c | 32 +-- shared-bindings/synthio/Synthesizer.h | 32 +-- shared-bindings/synthio/__init__.c | 30 +-- shared-bindings/synthio/__init__.h | 30 +-- shared-bindings/terminalio/Terminal.c | 30 +-- shared-bindings/terminalio/Terminal.h | 30 +-- shared-bindings/terminalio/__init__.c | 30 +-- shared-bindings/terminalio/__init__.h | 30 +-- shared-bindings/time/__init__.c | 34 +-- shared-bindings/time/__init__.h | 30 +-- shared-bindings/touchio/TouchIn.c | 30 +-- shared-bindings/touchio/TouchIn.h | 30 +-- shared-bindings/touchio/__init__.c | 30 +-- shared-bindings/touchio/__init__.h | 30 +-- shared-bindings/traceback/__init__.c | 30 +-- shared-bindings/uheap/__init__.c | 30 +-- shared-bindings/uheap/__init__.h | 30 +-- shared-bindings/usb/__init__.c | 30 +-- shared-bindings/usb/__init__.h | 30 +-- shared-bindings/usb/core/Device.c | 30 +-- shared-bindings/usb/core/Device.h | 30 +-- shared-bindings/usb/core/__init__.c | 30 +-- shared-bindings/usb/core/__init__.h | 30 +-- shared-bindings/usb_cdc/Serial.c | 30 +-- shared-bindings/usb_cdc/Serial.h | 30 +-- shared-bindings/usb_cdc/__init__.c | 30 +-- shared-bindings/usb_cdc/__init__.h | 30 +-- shared-bindings/usb_hid/Device.c | 30 +-- shared-bindings/usb_hid/Device.h | 30 +-- shared-bindings/usb_hid/__init__.c | 30 +-- shared-bindings/usb_hid/__init__.h | 30 +-- shared-bindings/usb_host/Port.c | 30 +-- shared-bindings/usb_host/Port.h | 30 +-- shared-bindings/usb_host/__init__.c | 30 +-- shared-bindings/usb_host/__init__.h | 30 +-- shared-bindings/usb_midi/PortIn.c | 30 +-- shared-bindings/usb_midi/PortIn.h | 30 +-- shared-bindings/usb_midi/PortOut.c | 30 +-- shared-bindings/usb_midi/PortOut.h | 30 +-- shared-bindings/usb_midi/__init__.c | 30 +-- shared-bindings/usb_midi/__init__.h | 30 +-- shared-bindings/usb_video/USBFramebuffer.c | 30 +-- shared-bindings/usb_video/USBFramebuffer.h | 30 +-- shared-bindings/usb_video/__init__.c | 30 +-- shared-bindings/usb_video/__init__.h | 30 +-- shared-bindings/ustack/__init__.c | 30 +-- shared-bindings/ustack/__init__.h | 30 +-- shared-bindings/util.c | 30 +-- shared-bindings/util.h | 30 +-- shared-bindings/vectorio/Circle.c | 56 +--- shared-bindings/vectorio/Circle.h | 30 +-- shared-bindings/vectorio/Polygon.c | 30 +-- shared-bindings/vectorio/Polygon.h | 30 +-- shared-bindings/vectorio/Rectangle.c | 30 +-- shared-bindings/vectorio/Rectangle.h | 30 +-- shared-bindings/vectorio/VectorShape.c | 30 +-- shared-bindings/vectorio/VectorShape.h | 30 +-- shared-bindings/vectorio/__init__.c | 30 +-- shared-bindings/vectorio/__init__.h | 30 +-- shared-bindings/warnings/__init__.c | 30 +-- shared-bindings/warnings/__init__.h | 30 +-- shared-bindings/watchdog/WatchDogMode.c | 30 +-- shared-bindings/watchdog/WatchDogMode.h | 30 +-- shared-bindings/watchdog/WatchDogTimer.c | 30 +-- shared-bindings/watchdog/WatchDogTimer.h | 30 +-- shared-bindings/watchdog/__init__.c | 30 +-- shared-bindings/watchdog/__init__.h | 30 +-- shared-bindings/wifi/AuthMode.c | 30 +-- shared-bindings/wifi/AuthMode.h | 30 +-- shared-bindings/wifi/Monitor.c | 30 +-- shared-bindings/wifi/Monitor.h | 30 +-- shared-bindings/wifi/Network.c | 30 +-- shared-bindings/wifi/Network.h | 30 +-- shared-bindings/wifi/Packet.c | 30 +-- shared-bindings/wifi/Packet.h | 30 +-- shared-bindings/wifi/Radio.c | 30 +-- shared-bindings/wifi/Radio.h | 30 +-- shared-bindings/wifi/ScannedNetworks.c | 34 +-- shared-bindings/wifi/ScannedNetworks.h | 34 +-- shared-bindings/wifi/__init__.c | 30 +-- shared-bindings/wifi/__init__.h | 30 +-- shared-bindings/zlib/__init__.c | 30 +-- shared-bindings/zlib/__init__.h | 30 +-- shared-module/_bleio/Address.c | 32 +-- shared-module/_bleio/Address.h | 32 +-- shared-module/_bleio/Attribute.c | 30 +-- shared-module/_bleio/Attribute.h | 30 +-- shared-module/_bleio/Characteristic.h | 30 +-- shared-module/_bleio/ScanEntry.c | 34 +-- shared-module/_bleio/ScanEntry.h | 32 +-- shared-module/_bleio/ScanResults.c | 34 +-- shared-module/_bleio/ScanResults.h | 32 +-- shared-module/_eve/__init__.c | 30 +-- shared-module/_eve/__init__.h | 30 +-- shared-module/_pixelmap/PixelMap.c | 32 +-- shared-module/_pixelmap/PixelMap.h | 32 +-- shared-module/_pixelmap/__init__.c | 5 + shared-module/_stage/Layer.c | 30 +-- shared-module/_stage/Layer.h | 30 +-- shared-module/_stage/Text.c | 30 +-- shared-module/_stage/Text.h | 30 +-- shared-module/_stage/__init__.c | 30 +-- shared-module/_stage/__init__.h | 30 +-- shared-module/adafruit_bus_device/__init__.c | 5 + .../i2c_device/I2CDevice.c | 30 +-- .../i2c_device/I2CDevice.h | 30 +-- .../spi_device/SPIDevice.c | 30 +-- .../spi_device/SPIDevice.h | 30 +-- shared-module/adafruit_pixelbuf/PixelBuf.c | 30 +-- shared-module/adafruit_pixelbuf/PixelBuf.h | 30 +-- shared-module/adafruit_pixelbuf/__init__.c | 5 + shared-module/aesio/__init__.c | 30 +-- shared-module/aesio/__init__.h | 30 +-- shared-module/aesio/aes.h | 30 +-- shared-module/atexit/__init__.c | 30 +-- shared-module/atexit/__init__.h | 30 +-- shared-module/audiocore/RawSample.c | 30 +-- shared-module/audiocore/RawSample.h | 30 +-- shared-module/audiocore/WaveFile.c | 30 +-- shared-module/audiocore/WaveFile.h | 30 +-- shared-module/audiocore/__init__.c | 30 +-- shared-module/audiocore/__init__.h | 30 +-- shared-module/audioio/__init__.c | 5 + shared-module/audioio/__init__.h | 30 +-- shared-module/audiomixer/Mixer.c | 32 +-- shared-module/audiomixer/Mixer.h | 30 +-- shared-module/audiomixer/MixerVoice.c | 30 +-- shared-module/audiomixer/MixerVoice.h | 30 +-- shared-module/audiomixer/__init__.c | 5 + shared-module/audiomixer/__init__.h | 30 +-- shared-module/audiomp3/MP3Decoder.c | 32 +-- shared-module/audiomp3/MP3Decoder.h | 32 +-- shared-module/audiomp3/__init__.c | 30 +-- shared-module/audiomp3/__init__.h | 30 +-- shared-module/audiopwmio/__init__.c | 5 + shared-module/audiopwmio/__init__.h | 30 +-- shared-module/bitbangio/I2C.c | 30 +-- shared-module/bitbangio/I2C.h | 30 +-- shared-module/bitbangio/SPI.c | 30 +-- shared-module/bitbangio/SPI.h | 30 +-- shared-module/bitbangio/__init__.c | 30 +-- shared-module/bitmapfilter/__init__.c | 15 +- shared-module/bitmapfilter/__init__.h | 5 + shared-module/bitmapfilter/macros.h | 15 +- shared-module/bitmaptools/__init__.c | 30 +-- shared-module/bitops/__init__.c | 30 +-- shared-module/bitops/__init__.h | 30 +-- shared-module/board/__init__.c | 30 +-- shared-module/board/__init__.h | 30 +-- shared-module/busdisplay/BusDisplay.c | 30 +-- shared-module/busdisplay/BusDisplay.h | 30 +-- shared-module/busdisplay/__init__.c | 30 +-- shared-module/canio/Match.c | 30 +-- shared-module/canio/Match.h | 30 +-- shared-module/canio/Message.c | 30 +-- shared-module/canio/Message.h | 30 +-- .../canio/RemoteTransmissionRequest.c | 30 +-- .../canio/RemoteTransmissionRequest.h | 30 +-- shared-module/displayio/Bitmap.c | 30 +-- shared-module/displayio/Bitmap.h | 30 +-- shared-module/displayio/ColorConverter.c | 30 +-- shared-module/displayio/ColorConverter.h | 30 +-- shared-module/displayio/Group.c | 30 +-- shared-module/displayio/Group.h | 30 +-- shared-module/displayio/OnDiskBitmap.c | 30 +-- shared-module/displayio/OnDiskBitmap.h | 30 +-- shared-module/displayio/Palette.c | 30 +-- shared-module/displayio/Palette.h | 30 +-- shared-module/displayio/Shape.c | 30 +-- shared-module/displayio/Shape.h | 30 +-- shared-module/displayio/TileGrid.c | 30 +-- shared-module/displayio/TileGrid.h | 30 +-- shared-module/displayio/__init__.c | 30 +-- shared-module/displayio/__init__.h | 30 +-- shared-module/displayio/area.c | 30 +-- shared-module/displayio/area.h | 30 +-- shared-module/displayio/bus_core.c | 30 +-- shared-module/displayio/bus_core.h | 30 +-- shared-module/displayio/display_core.c | 30 +-- shared-module/displayio/display_core.h | 30 +-- shared-module/displayio/mipi_constants.h | 30 +-- shared-module/dotclockframebuffer/__init__.c | 30 +-- shared-module/epaperdisplay/EPaperDisplay.c | 30 +-- shared-module/epaperdisplay/EPaperDisplay.h | 30 +-- shared-module/epaperdisplay/__init__.c | 5 + shared-module/floppyio/__init__.c | 30 +-- shared-module/fontio/BuiltinFont.c | 30 +-- shared-module/fontio/BuiltinFont.h | 30 +-- shared-module/fontio/__init__.c | 30 +-- shared-module/fourwire/FourWire.c | 30 +-- shared-module/fourwire/FourWire.h | 30 +-- shared-module/fourwire/__init__.c | 5 + .../framebufferio/FramebufferDisplay.c | 32 +-- .../framebufferio/FramebufferDisplay.h | 32 +-- shared-module/framebufferio/__init__.c | 5 + shared-module/framebufferio/__init__.h | 5 + shared-module/getpass/__init__.c | 30 +-- shared-module/getpass/__init__.h | 30 +-- shared-module/gifio/GifWriter.c | 34 +-- shared-module/gifio/GifWriter.h | 30 +-- shared-module/gifio/OnDiskGif.c | 30 +-- shared-module/gifio/OnDiskGif.h | 30 +-- shared-module/gifio/__init__.c | 5 + shared-module/gifio/__init__.h | 5 + shared-module/hashlib/Hash.c | 30 +-- shared-module/hashlib/Hash.h | 30 +-- shared-module/hashlib/__init__.c | 30 +-- shared-module/hashlib/__init__.h | 32 +-- shared-module/i2cdisplaybus/I2CDisplayBus.c | 30 +-- shared-module/i2cdisplaybus/I2CDisplayBus.h | 30 +-- shared-module/i2cdisplaybus/__init__.c | 5 + .../imagecapture/ParallelImageCapture.c | 30 +-- shared-module/ipaddress/IPv4Address.c | 30 +-- shared-module/ipaddress/IPv4Address.h | 30 +-- shared-module/ipaddress/__init__.c | 30 +-- shared-module/ipaddress/__init__.h | 30 +-- shared-module/is31fl3741/FrameBuffer.c | 30 +-- shared-module/is31fl3741/FrameBuffer.h | 30 +-- shared-module/is31fl3741/IS31FL3741.c | 30 +-- shared-module/is31fl3741/IS31FL3741.h | 30 +-- shared-module/is31fl3741/__init__.c | 30 +-- shared-module/is31fl3741/__init__.h | 5 + shared-module/jpegio/JpegDecoder.c | 30 +-- shared-module/jpegio/JpegDecoder.h | 30 +-- shared-module/jpegio/__init__.c | 5 + shared-module/jpegio/__init__.h | 5 + shared-module/keypad/Event.c | 30 +-- shared-module/keypad/Event.h | 30 +-- shared-module/keypad/EventQueue.c | 30 +-- shared-module/keypad/EventQueue.h | 30 +-- shared-module/keypad/KeyMatrix.c | 30 +-- shared-module/keypad/KeyMatrix.h | 30 +-- shared-module/keypad/Keys.c | 30 +-- shared-module/keypad/Keys.h | 30 +-- shared-module/keypad/ShiftRegisterKeys.c | 30 +-- shared-module/keypad/ShiftRegisterKeys.h | 30 +-- shared-module/keypad/__init__.c | 30 +-- shared-module/keypad/__init__.h | 30 +-- shared-module/keypad_demux/DemuxKeyMatrix.c | 30 +-- shared-module/keypad_demux/DemuxKeyMatrix.h | 30 +-- shared-module/keypad_demux/__init__.c | 5 + shared-module/max3421e/Max3421E.c | 30 +-- shared-module/max3421e/Max3421E.h | 30 +-- shared-module/max3421e/__init__.c | 5 + shared-module/memorymonitor/AllocationAlarm.c | 30 +-- shared-module/memorymonitor/AllocationAlarm.h | 30 +-- shared-module/memorymonitor/AllocationSize.c | 30 +-- shared-module/memorymonitor/AllocationSize.h | 30 +-- shared-module/memorymonitor/__init__.c | 30 +-- shared-module/memorymonitor/__init__.h | 30 +-- shared-module/msgpack/__init__.c | 30 +-- shared-module/msgpack/__init__.h | 30 +-- shared-module/onewireio/OneWire.c | 30 +-- shared-module/onewireio/OneWire.h | 30 +-- shared-module/onewireio/__init__.c | 30 +-- shared-module/os/__init__.c | 34 +-- shared-module/os/__init__.h | 30 +-- shared-module/os/getenv.c | 30 +-- .../paralleldisplaybus/ParallelBus.c | 30 +-- shared-module/qrio/QRDecoder.c | 30 +-- shared-module/qrio/QRDecoder.h | 30 +-- shared-module/qrio/__init__.c | 5 + shared-module/qrio/quirc_alloc.h | 30 +-- shared-module/rainbowio/__init__.c | 30 +-- shared-module/random/__init__.c | 32 +-- shared-module/rgbmatrix/RGBMatrix.c | 30 +-- shared-module/rgbmatrix/RGBMatrix.h | 30 +-- shared-module/rgbmatrix/__init__.c | 5 + shared-module/rgbmatrix/__init__.h | 5 + shared-module/rgbmatrix/allocator.h | 30 +-- shared-module/rotaryio/IncrementalEncoder.c | 30 +-- shared-module/rotaryio/IncrementalEncoder.h | 30 +-- shared-module/sdcardio/SDCard.c | 30 +-- shared-module/sdcardio/SDCard.h | 30 +-- shared-module/sdcardio/__init__.c | 5 + shared-module/sdcardio/__init__.h | 5 + .../sharpdisplay/SharpMemoryFramebuffer.c | 30 +-- .../sharpdisplay/SharpMemoryFramebuffer.h | 30 +-- shared-module/sharpdisplay/__init__.c | 5 + shared-module/sharpdisplay/__init__.h | 5 + shared-module/ssl/SSLContext.c | 30 +-- shared-module/ssl/SSLContext.h | 32 +-- shared-module/ssl/SSLSocket.c | 34 +-- shared-module/ssl/SSLSocket.h | 32 +-- shared-module/ssl/__init__.c | 32 +-- shared-module/ssl/__init__.h | 30 +-- shared-module/storage/__init__.c | 34 +-- shared-module/storage/__init__.h | 30 +-- shared-module/struct/__init__.c | 34 +-- shared-module/struct/__init__.h | 30 +-- shared-module/supervisor/Runtime.h | 30 +-- shared-module/supervisor/StatusBar.c | 30 +-- shared-module/supervisor/StatusBar.h | 30 +-- shared-module/supervisor/__init__.c | 30 +-- shared-module/synthio/Biquad.c | 30 +-- shared-module/synthio/Biquad.h | 30 +-- shared-module/synthio/LFO.c | 30 +-- shared-module/synthio/LFO.h | 30 +-- shared-module/synthio/Math.c | 30 +-- shared-module/synthio/Math.h | 30 +-- shared-module/synthio/MidiTrack.c | 30 +-- shared-module/synthio/MidiTrack.h | 30 +-- shared-module/synthio/Note.c | 30 +-- shared-module/synthio/Note.h | 30 +-- shared-module/synthio/Synthesizer.c | 30 +-- shared-module/synthio/Synthesizer.h | 32 +-- shared-module/synthio/__init__.c | 32 +-- shared-module/synthio/__init__.h | 30 +-- shared-module/synthio/block.h | 30 +-- shared-module/terminalio/Terminal.c | 30 +-- shared-module/terminalio/Terminal.h | 30 +-- shared-module/terminalio/__init__.c | 30 +-- shared-module/terminalio/__init__.h | 30 +-- shared-module/time/__init__.c | 30 +-- shared-module/touchio/TouchIn.c | 32 +-- shared-module/touchio/TouchIn.h | 32 +-- shared-module/touchio/__init__.c | 5 + shared-module/traceback/__init__.c | 30 +-- shared-module/traceback/__init__.h | 30 +-- shared-module/uheap/__init__.c | 30 +-- shared-module/usb/__init__.c | 30 +-- shared-module/usb/core/Device.c | 30 +-- shared-module/usb/core/Device.h | 30 +-- shared-module/usb/core/__init__.c | 30 +-- shared-module/usb/utf16le.c | 30 +-- shared-module/usb/utf16le.h | 30 +-- shared-module/usb_cdc/Serial.c | 30 +-- shared-module/usb_cdc/Serial.h | 30 +-- shared-module/usb_cdc/__init__.c | 30 +-- shared-module/usb_cdc/__init__.h | 30 +-- shared-module/usb_hid/Device.c | 30 +-- shared-module/usb_hid/Device.h | 30 +-- shared-module/usb_hid/__init__.c | 30 +-- shared-module/usb_hid/__init__.h | 30 +-- shared-module/usb_midi/PortIn.c | 30 +-- shared-module/usb_midi/PortIn.h | 30 +-- shared-module/usb_midi/PortOut.c | 30 +-- shared-module/usb_midi/PortOut.h | 30 +-- shared-module/usb_midi/__init__.c | 30 +-- shared-module/usb_midi/__init__.h | 30 +-- shared-module/usb_video/USBFramebuffer.c | 30 +-- shared-module/usb_video/USBFramebuffer.h | 30 +-- shared-module/usb_video/__init__.c | 30 +-- shared-module/usb_video/__init__.h | 30 +-- shared-module/usb_video/descriptor.c | 30 +-- shared-module/usb_video/tusb_config.h | 5 + shared-module/usb_video/uvc_usb_descriptors.h | 31 +-- shared-module/ustack/__init__.c | 30 +-- shared-module/vectorio/Circle.c | 30 +-- shared-module/vectorio/Circle.h | 30 +-- shared-module/vectorio/Polygon.c | 30 +-- shared-module/vectorio/Polygon.h | 30 +-- shared-module/vectorio/Rectangle.c | 30 +-- shared-module/vectorio/Rectangle.h | 30 +-- shared-module/vectorio/VectorShape.c | 30 +-- shared-module/vectorio/VectorShape.h | 30 +-- shared-module/vectorio/__init__.c | 30 +-- shared-module/vectorio/__init__.h | 30 +-- shared-module/warnings/__init__.c | 34 +-- shared-module/warnings/__init__.h | 30 +-- shared-module/watchdog/__init__.c | 30 +-- shared-module/watchdog/__init__.h | 30 +-- shared-module/zlib/__init__.c | 30 +-- shared/runtime/buffer_helper.c | 30 +-- shared/runtime/buffer_helper.h | 30 +-- shared/runtime/context_manager_helpers.c | 30 +-- shared/runtime/context_manager_helpers.h | 30 +-- supervisor/background_callback.h | 30 +-- supervisor/board.h | 30 +-- supervisor/cpu.h | 30 +-- supervisor/fatfs.h | 30 +-- supervisor/filesystem.h | 30 +-- supervisor/flash.h | 30 +-- supervisor/linker.h | 30 +-- supervisor/port.h | 30 +-- supervisor/port_heap.h | 30 +-- supervisor/shared/background_callback.c | 30 +-- supervisor/shared/bluetooth/bluetooth.c | 30 +-- supervisor/shared/bluetooth/bluetooth.h | 30 +-- supervisor/shared/bluetooth/file_transfer.c | 30 +-- supervisor/shared/bluetooth/file_transfer.h | 30 +-- .../shared/bluetooth/file_transfer_protocol.h | 30 +-- supervisor/shared/bluetooth/serial.c | 30 +-- supervisor/shared/bluetooth/serial.h | 30 +-- supervisor/shared/board.c | 30 +-- supervisor/shared/board.h | 30 +-- supervisor/shared/cpu.c | 30 +-- supervisor/shared/cpu.h | 30 +-- supervisor/shared/display.c | 30 +-- supervisor/shared/display.h | 30 +-- .../shared/external_flash/common_commands.h | 30 +-- supervisor/shared/external_flash/device.h | 30 +-- .../shared/external_flash/devices.h.jinja | 31 +-- .../shared/external_flash/external_flash.c | 30 +-- .../shared/external_flash/external_flash.h | 30 +-- supervisor/shared/external_flash/qspi_flash.c | 30 +-- supervisor/shared/external_flash/qspi_flash.h | 30 +-- supervisor/shared/external_flash/spi_flash.c | 30 +-- supervisor/shared/fatfs.c | 30 +-- supervisor/shared/filesystem.c | 30 +-- supervisor/shared/flash.c | 30 +-- supervisor/shared/internal_flash.h | 30 +-- supervisor/shared/lock.c | 30 +-- supervisor/shared/lock.h | 30 +-- supervisor/shared/memory.c | 5 + supervisor/shared/micropython.c | 30 +-- supervisor/shared/port.c | 30 +-- supervisor/shared/reload.c | 30 +-- supervisor/shared/reload.h | 30 +-- supervisor/shared/rgb_led_colors.h | 30 +-- supervisor/shared/safe_mode.c | 30 +-- supervisor/shared/safe_mode.h | 30 +-- supervisor/shared/serial.c | 30 +-- supervisor/shared/serial.h | 30 +-- supervisor/shared/stack.c | 30 +-- supervisor/shared/stack.h | 30 +-- supervisor/shared/status_bar.c | 30 +-- supervisor/shared/status_bar.h | 30 +-- supervisor/shared/status_leds.c | 30 +-- supervisor/shared/status_leds.h | 30 +-- supervisor/shared/tick.c | 30 +-- supervisor/shared/tick.h | 30 +-- supervisor/shared/traceback.c | 30 +-- supervisor/shared/traceback.h | 30 +-- .../shared/translate/compressed_string.h | 30 +-- supervisor/shared/translate/translate.c | 30 +-- supervisor/shared/translate/translate.h | 30 +-- supervisor/shared/translate/translate_impl.h | 30 +-- supervisor/shared/usb/host_keyboard.c | 32 +-- supervisor/shared/usb/usb.c | 30 +-- supervisor/shared/usb/usb_desc.c | 30 +-- supervisor/shared/usb/usb_device.c | 30 +-- supervisor/shared/usb/usb_msc_flash.c | 30 +-- .../shared/usb/usb_vendor_descriptors.h | 28 +- supervisor/shared/web_workflow/web_workflow.c | 30 +-- supervisor/shared/web_workflow/web_workflow.h | 30 +-- supervisor/shared/web_workflow/websocket.c | 30 +-- supervisor/shared/web_workflow/websocket.h | 30 +-- supervisor/shared/workflow.c | 30 +-- supervisor/shared/workflow.h | 30 +-- supervisor/spi_flash_api.h | 30 +-- supervisor/stub/filesystem.c | 30 +-- supervisor/stub/internal_flash.c | 30 +-- supervisor/stub/misc.c | 30 +-- supervisor/stub/safe_mode.c | 30 +-- supervisor/stub/stack.c | 30 +-- supervisor/usb.h | 30 +-- supervisor/workflow.h | 30 +-- 3604 files changed, 19620 insertions(+), 63154 deletions(-) delete mode 100644 ports/nordic/freeze/test.py diff --git a/devices/ble_hci/common-hal/_bleio/Adapter.c b/devices/ble_hci/common-hal/_bleio/Adapter.c index 4fb858d89557..fd28f09a5e55 100644 --- a/devices/ble_hci/common-hal/_bleio/Adapter.c +++ b/devices/ble_hci/common-hal/_bleio/Adapter.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Dan Halbert for Adafruit Industries - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include #include diff --git a/devices/ble_hci/common-hal/_bleio/Adapter.h b/devices/ble_hci/common-hal/_bleio/Adapter.h index 45a37ad67c2c..9c849a8def41 100644 --- a/devices/ble_hci/common-hal/_bleio/Adapter.h +++ b/devices/ble_hci/common-hal/_bleio/Adapter.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_ADAPTER_H #define MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_ADAPTER_H diff --git a/devices/ble_hci/common-hal/_bleio/Attribute.c b/devices/ble_hci/common-hal/_bleio/Attribute.c index 77a5a4df9b58..960a8f967cbc 100644 --- a/devices/ble_hci/common-hal/_bleio/Attribute.c +++ b/devices/ble_hci/common-hal/_bleio/Attribute.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" diff --git a/devices/ble_hci/common-hal/_bleio/Attribute.h b/devices/ble_hci/common-hal/_bleio/Attribute.h index b8702cae45ad..a838ba0e95d3 100644 --- a/devices/ble_hci/common-hal/_bleio/Attribute.h +++ b/devices/ble_hci/common-hal/_bleio/Attribute.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_ATTRIBUTE_H #define MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_ATTRIBUTE_H diff --git a/devices/ble_hci/common-hal/_bleio/Characteristic.c b/devices/ble_hci/common-hal/_bleio/Characteristic.c index fe501ceb5c28..f142239ded22 100644 --- a/devices/ble_hci/common-hal/_bleio/Characteristic.c +++ b/devices/ble_hci/common-hal/_bleio/Characteristic.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" diff --git a/devices/ble_hci/common-hal/_bleio/Characteristic.h b/devices/ble_hci/common-hal/_bleio/Characteristic.h index 6d5a12509cf5..c30cd8bdfddd 100644 --- a/devices/ble_hci/common-hal/_bleio/Characteristic.h +++ b/devices/ble_hci/common-hal/_bleio/Characteristic.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_CHARACTERISTIC_H #define MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_CHARACTERISTIC_H diff --git a/devices/ble_hci/common-hal/_bleio/CharacteristicBuffer.c b/devices/ble_hci/common-hal/_bleio/CharacteristicBuffer.c index 4150fcfaa025..e7c6ec9817b4 100644 --- a/devices/ble_hci/common-hal/_bleio/CharacteristicBuffer.c +++ b/devices/ble_hci/common-hal/_bleio/CharacteristicBuffer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/devices/ble_hci/common-hal/_bleio/CharacteristicBuffer.h b/devices/ble_hci/common-hal/_bleio/CharacteristicBuffer.h index 107e5801f8b3..ee4d1a3f3d52 100644 --- a/devices/ble_hci/common-hal/_bleio/CharacteristicBuffer.h +++ b/devices/ble_hci/common-hal/_bleio/CharacteristicBuffer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_CHARACTERISTICBUFFER_H #define MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_CHARACTERISTICBUFFER_H diff --git a/devices/ble_hci/common-hal/_bleio/Connection.c b/devices/ble_hci/common-hal/_bleio/Connection.c index 059124ddad50..4bd44ce2ba79 100644 --- a/devices/ble_hci/common-hal/_bleio/Connection.c +++ b/devices/ble_hci/common-hal/_bleio/Connection.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "shared-bindings/_bleio/Connection.h" diff --git a/devices/ble_hci/common-hal/_bleio/Connection.h b/devices/ble_hci/common-hal/_bleio/Connection.h index 185a8b351758..ce693edf25c7 100644 --- a/devices/ble_hci/common-hal/_bleio/Connection.h +++ b/devices/ble_hci/common-hal/_bleio/Connection.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_CONNECTION_H #define MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_CONNECTION_H diff --git a/devices/ble_hci/common-hal/_bleio/Descriptor.c b/devices/ble_hci/common-hal/_bleio/Descriptor.c index 99d0ab274c37..49a296e1dd5d 100644 --- a/devices/ble_hci/common-hal/_bleio/Descriptor.c +++ b/devices/ble_hci/common-hal/_bleio/Descriptor.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" diff --git a/devices/ble_hci/common-hal/_bleio/Descriptor.h b/devices/ble_hci/common-hal/_bleio/Descriptor.h index ffa0c172aa8d..fc17e532a5dc 100644 --- a/devices/ble_hci/common-hal/_bleio/Descriptor.h +++ b/devices/ble_hci/common-hal/_bleio/Descriptor.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_DESCRIPTOR_H #define MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_DESCRIPTOR_H diff --git a/devices/ble_hci/common-hal/_bleio/PacketBuffer.c b/devices/ble_hci/common-hal/_bleio/PacketBuffer.c index e6cdee9a75dd..d4836700afa5 100644 --- a/devices/ble_hci/common-hal/_bleio/PacketBuffer.c +++ b/devices/ble_hci/common-hal/_bleio/PacketBuffer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019-2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019-2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/devices/ble_hci/common-hal/_bleio/PacketBuffer.h b/devices/ble_hci/common-hal/_bleio/PacketBuffer.h index 34471741fe7a..4ef764db8a25 100644 --- a/devices/ble_hci/common-hal/_bleio/PacketBuffer.h +++ b/devices/ble_hci/common-hal/_bleio/PacketBuffer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019-2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019-2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_PACKETBUFFER_H #define MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_PACKETBUFFER_H diff --git a/devices/ble_hci/common-hal/_bleio/Service.c b/devices/ble_hci/common-hal/_bleio/Service.c index a20f6d3a55b5..56c8f99c6606 100644 --- a/devices/ble_hci/common-hal/_bleio/Service.c +++ b/devices/ble_hci/common-hal/_bleio/Service.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" #include "shared-bindings/_bleio/__init__.h" diff --git a/devices/ble_hci/common-hal/_bleio/Service.h b/devices/ble_hci/common-hal/_bleio/Service.h index dce6f13144bd..8a58c91db23b 100644 --- a/devices/ble_hci/common-hal/_bleio/Service.h +++ b/devices/ble_hci/common-hal/_bleio/Service.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_SERVICE_H #define MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_SERVICE_H diff --git a/devices/ble_hci/common-hal/_bleio/UUID.c b/devices/ble_hci/common-hal/_bleio/UUID.c index f12d1e78fbdb..587ea85ea9ba 100644 --- a/devices/ble_hci/common-hal/_bleio/UUID.c +++ b/devices/ble_hci/common-hal/_bleio/UUID.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include diff --git a/devices/ble_hci/common-hal/_bleio/UUID.h b/devices/ble_hci/common-hal/_bleio/UUID.h index 59e09f7476b2..ee492e850f14 100644 --- a/devices/ble_hci/common-hal/_bleio/UUID.h +++ b/devices/ble_hci/common-hal/_bleio/UUID.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_UUID_H #define MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_UUID_H diff --git a/devices/ble_hci/common-hal/_bleio/__init__.c b/devices/ble_hci/common-hal/_bleio/__init__.c index be318a30d669..6cdc37f435c3 100644 --- a/devices/ble_hci/common-hal/_bleio/__init__.c +++ b/devices/ble_hci/common-hal/_bleio/__init__.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include diff --git a/devices/ble_hci/common-hal/_bleio/__init__.h b/devices/ble_hci/common-hal/_bleio/__init__.h index 5c9bbcc97949..42f5d77af9da 100644 --- a/devices/ble_hci/common-hal/_bleio/__init__.h +++ b/devices/ble_hci/common-hal/_bleio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_INIT_H #define MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_INIT_H diff --git a/devices/ble_hci/common-hal/_bleio/hci_debug.c b/devices/ble_hci/common-hal/_bleio/hci_debug.c index 5e57142c3c0a..162dd386e726 100644 --- a/devices/ble_hci/common-hal/_bleio/hci_debug.c +++ b/devices/ble_hci/common-hal/_bleio/hci_debug.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT // This file is #include'd in hci.c when HCI_DEBUG is non-zero. diff --git a/devices/ble_hci/supervisor/bluetooth.c b/devices/ble_hci/supervisor/bluetooth.c index 83a46728e571..1a295ca725dd 100644 --- a/devices/ble_hci/supervisor/bluetooth.c +++ b/devices/ble_hci/supervisor/bluetooth.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #if CIRCUITPY_BLE_FILE_SERVICE #error CIRCUITPY_BLE_FILE_SERVICE not implemented for CIRCUITPY_BLEIO_HCI diff --git a/devices/ble_hci/supervisor/bluetooth.h b/devices/ble_hci/supervisor/bluetooth.h index 03645829b148..937bebc217fc 100644 --- a/devices/ble_hci/supervisor/bluetooth.h +++ b/devices/ble_hci/supervisor/bluetooth.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_DEVICE_BLE_HCI_SUPERVISOR_BLUETOOTH_H #define MICROPY_INCLUDED_DEVICE_BLE_HCI_SUPERVISOR_BLUETOOTH_H diff --git a/main.c b/main.c index 06481d956ff2..3dbd8327a0af 100644 --- a/main.c +++ b/main.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016-2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016-2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/atmel-samd/Makefile b/ports/atmel-samd/Makefile index 92b9f1453a87..0c4eb3861309 100644 --- a/ports/atmel-samd/Makefile +++ b/ports/atmel-samd/Makefile @@ -1,26 +1,8 @@ -# This file is part of the MicroPython project, http://micropython.org/ -# -# The MIT License (MIT) +# This file is part of the CircuitPython project: https://circuitpython.org # # SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries # -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. +# SPDX-License-Identifier: MIT include ../../py/circuitpy_mkenv.mk diff --git a/ports/atmel-samd/asf4_conf/samd21/hpl_adc_config.h b/ports/atmel-samd/asf4_conf/samd21/hpl_adc_config.h index 627f4e9bd471..38dd90b882a5 100644 --- a/ports/atmel-samd/asf4_conf/samd21/hpl_adc_config.h +++ b/ports/atmel-samd/asf4_conf/samd21/hpl_adc_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_adc_config.h */ #ifndef HPL_ADC_CONFIG_H #define HPL_ADC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd21/hpl_dac_config.h b/ports/atmel-samd/asf4_conf/samd21/hpl_dac_config.h index 42b893a35918..7fd61880b97a 100644 --- a/ports/atmel-samd/asf4_conf/samd21/hpl_dac_config.h +++ b/ports/atmel-samd/asf4_conf/samd21/hpl_dac_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_dac_config.h */ #ifndef HPL_DAC_CONFIG_H #define HPL_DAC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd21/hpl_dmac_config.h b/ports/atmel-samd/asf4_conf/samd21/hpl_dmac_config.h index 3667e873ba30..84fde946324f 100644 --- a/ports/atmel-samd/asf4_conf/samd21/hpl_dmac_config.h +++ b/ports/atmel-samd/asf4_conf/samd21/hpl_dmac_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_dmac_config.h */ #ifndef HPL_DMAC_CONFIG_H #define HPL_DMAC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd21/hpl_gclk_config.h b/ports/atmel-samd/asf4_conf/samd21/hpl_gclk_config.h index 1161d6e75e4f..1b92d9754dd8 100644 --- a/ports/atmel-samd/asf4_conf/samd21/hpl_gclk_config.h +++ b/ports/atmel-samd/asf4_conf/samd21/hpl_gclk_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // CircuitPython SAMD21 clock tree: // DFLL48M (with USBCRM on to sync with external USB ref) -> GCLK0, GCLK1 // GCLK0 (48MHz) -> peripherals diff --git a/ports/atmel-samd/asf4_conf/samd21/hpl_nvmctrl_config.h b/ports/atmel-samd/asf4_conf/samd21/hpl_nvmctrl_config.h index 88d6bb93ff41..9b2c815585ab 100644 --- a/ports/atmel-samd/asf4_conf/samd21/hpl_nvmctrl_config.h +++ b/ports/atmel-samd/asf4_conf/samd21/hpl_nvmctrl_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_nvmctrl_config.h */ #ifndef HPL_NVMCTRL_CONFIG_H #define HPL_NVMCTRL_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd21/hpl_pm_config.h b/ports/atmel-samd/asf4_conf/samd21/hpl_pm_config.h index 1d24dffaa2b2..2a9285b4295d 100644 --- a/ports/atmel-samd/asf4_conf/samd21/hpl_pm_config.h +++ b/ports/atmel-samd/asf4_conf/samd21/hpl_pm_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_pm_config.h */ #ifndef HPL_PM_CONFIG_H #define HPL_PM_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd21/hpl_rtc_config.h b/ports/atmel-samd/asf4_conf/samd21/hpl_rtc_config.h index 7b77d9031084..1b7391b4a2a5 100644 --- a/ports/atmel-samd/asf4_conf/samd21/hpl_rtc_config.h +++ b/ports/atmel-samd/asf4_conf/samd21/hpl_rtc_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_rtc_config.h */ #ifndef HPL_RTC_CONFIG_H #define HPL_RTC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd21/hpl_sercom_config.h b/ports/atmel-samd/asf4_conf/samd21/hpl_sercom_config.h index 007a72d068ae..a4b836801df8 100644 --- a/ports/atmel-samd/asf4_conf/samd21/hpl_sercom_config.h +++ b/ports/atmel-samd/asf4_conf/samd21/hpl_sercom_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // For CircuitPython, use SERCOM settings as prototypes to set // the default settings. This file defines these SERCOMs // diff --git a/ports/atmel-samd/asf4_conf/samd21/hpl_sysctrl_config.h b/ports/atmel-samd/asf4_conf/samd21/hpl_sysctrl_config.h index 193298ed913b..c27511c71d5f 100644 --- a/ports/atmel-samd/asf4_conf/samd21/hpl_sysctrl_config.h +++ b/ports/atmel-samd/asf4_conf/samd21/hpl_sysctrl_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_sysctrl_config.h */ #ifndef HPL_SYSCTRL_CONFIG_H #define HPL_SYSCTRL_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd21/hpl_systick_config.h b/ports/atmel-samd/asf4_conf/samd21/hpl_systick_config.h index a7f2f36208fa..48280a3de761 100644 --- a/ports/atmel-samd/asf4_conf/samd21/hpl_systick_config.h +++ b/ports/atmel-samd/asf4_conf/samd21/hpl_systick_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_systick_config.h */ #ifndef HPL_SYSTICK_CONFIG_H #define HPL_SYSTICK_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd21/hpl_tc_config.h b/ports/atmel-samd/asf4_conf/samd21/hpl_tc_config.h index 706c7f4b6754..f44feb865bc5 100644 --- a/ports/atmel-samd/asf4_conf/samd21/hpl_tc_config.h +++ b/ports/atmel-samd/asf4_conf/samd21/hpl_tc_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_tc_config.h */ #ifndef HPL_TC_CONFIG_H #define HPL_TC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd21/peripheral_clk_config.h b/ports/atmel-samd/asf4_conf/samd21/peripheral_clk_config.h index 2e1e238aab3e..ce63a49f99ab 100644 --- a/ports/atmel-samd/asf4_conf/samd21/peripheral_clk_config.h +++ b/ports/atmel-samd/asf4_conf/samd21/peripheral_clk_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file peripheral_clk_config.h */ #ifndef PERIPHERAL_CLK_CONFIG_H #define PERIPHERAL_CLK_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_adc_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_adc_config.h index 13d8151028d2..3ba63a414183 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_adc_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_adc_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_adc_config.h */ #ifndef HPL_ADC_CONFIG_H #define HPL_ADC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_dac_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_dac_config.h index c46f99b7db22..47924cf0955f 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_dac_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_dac_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_dac_config.h */ #ifndef HPL_DAC_CONFIG_H #define HPL_DAC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_dmac_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_dmac_config.h index 90499fc27fea..479965e59ed3 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_dmac_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_dmac_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_dmac_config.h */ #ifndef HPL_DMAC_CONFIG_H #define HPL_DMAC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_gclk_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_gclk_config.h index 4f79d511bf18..906dfac7f7c5 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_gclk_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_gclk_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // CircuitPython SAMD51 clock tree: // DFLL48M (with USBCRM on to sync with external USB ref) -> GCLK1, GCLK5, GCLK6 // GCLK1 (48MHz) -> 48 MHz peripherals diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_mclk_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_mclk_config.h index a5a7de53c259..263898c6b11f 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_mclk_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_mclk_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_mclk_config.h */ #ifndef HPL_MCLK_CONFIG_H #define HPL_MCLK_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_nvmctrl_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_nvmctrl_config.h index 53fcb593abbc..26e8cf558054 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_nvmctrl_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_nvmctrl_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_nvmctrl_config.h */ #ifndef HPL_NVMCTRL_CONFIG_H #define HPL_NVMCTRL_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_osc32kctrl_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_osc32kctrl_config.h index d93cbf922e6e..d2a6b744a9a6 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_osc32kctrl_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_osc32kctrl_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_osc32kctrl_config.h */ #ifndef HPL_OSC32KCTRL_CONFIG_H #define HPL_OSC32KCTRL_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_oscctrl_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_oscctrl_config.h index f7f79fada1ed..e8d1a04128e9 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_oscctrl_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_oscctrl_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_oscctrl_config.h */ #ifndef HPL_OSCCTRL_CONFIG_H #define HPL_OSCCTRL_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_rtc_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_rtc_config.h index 2b0b6712e635..16d6a5307169 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_rtc_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_rtc_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_rtc_config.h */ #ifndef HPL_RTC_CONFIG_H #define HPL_RTC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_sdhc_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_sdhc_config.h index daa662051724..cdf32e51f328 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_sdhc_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_sdhc_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_sdhc_config.h */ #ifndef HPL_SDHC_CONFIG_H #define HPL_SDHC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_sercom_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_sercom_config.h index b438619773ef..c87a35cc7f3e 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_sercom_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_sercom_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // For CircuitPython, use SERCOM settings as prototypes to set // the default settings. This file defines these SERCOMs // diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_systick_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_systick_config.h index a7f2f36208fa..48280a3de761 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_systick_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_systick_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_systick_config.h */ #ifndef HPL_SYSTICK_CONFIG_H #define HPL_SYSTICK_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_tc_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_tc_config.h index dc08b6eb23f3..b73f6143bfae 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_tc_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_tc_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_tc_config.h */ #ifndef HPL_TC_CONFIG_H #define HPL_TC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_trng_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_trng_config.h index ba9014989a95..e632208f74c3 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_trng_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_trng_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_trng_config.h */ #ifndef HPL_TRNG_CONFIG_H #define HPL_TRNG_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/peripheral_clk_config.h b/ports/atmel-samd/asf4_conf/samd51/peripheral_clk_config.h index 59fe8730e6ff..1dc0f8091e71 100644 --- a/ports/atmel-samd/asf4_conf/samd51/peripheral_clk_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/peripheral_clk_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file peripheral_clk_config.h */ #ifndef PERIPHERAL_CLK_CONFIG_H #define PERIPHERAL_CLK_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_adc_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_adc_config.h index 13d8151028d2..3ba63a414183 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_adc_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_adc_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_adc_config.h */ #ifndef HPL_ADC_CONFIG_H #define HPL_ADC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_dac_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_dac_config.h index c46f99b7db22..47924cf0955f 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_dac_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_dac_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_dac_config.h */ #ifndef HPL_DAC_CONFIG_H #define HPL_DAC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_dmac_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_dmac_config.h index 90499fc27fea..479965e59ed3 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_dmac_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_dmac_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_dmac_config.h */ #ifndef HPL_DMAC_CONFIG_H #define HPL_DMAC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_gclk_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_gclk_config.h index 4f79d511bf18..906dfac7f7c5 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_gclk_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_gclk_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // CircuitPython SAMD51 clock tree: // DFLL48M (with USBCRM on to sync with external USB ref) -> GCLK1, GCLK5, GCLK6 // GCLK1 (48MHz) -> 48 MHz peripherals diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_mclk_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_mclk_config.h index a5a7de53c259..263898c6b11f 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_mclk_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_mclk_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_mclk_config.h */ #ifndef HPL_MCLK_CONFIG_H #define HPL_MCLK_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_nvmctrl_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_nvmctrl_config.h index 53fcb593abbc..26e8cf558054 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_nvmctrl_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_nvmctrl_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_nvmctrl_config.h */ #ifndef HPL_NVMCTRL_CONFIG_H #define HPL_NVMCTRL_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_osc32kctrl_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_osc32kctrl_config.h index d93cbf922e6e..d2a6b744a9a6 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_osc32kctrl_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_osc32kctrl_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_osc32kctrl_config.h */ #ifndef HPL_OSC32KCTRL_CONFIG_H #define HPL_OSC32KCTRL_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_oscctrl_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_oscctrl_config.h index f7f79fada1ed..e8d1a04128e9 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_oscctrl_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_oscctrl_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_oscctrl_config.h */ #ifndef HPL_OSCCTRL_CONFIG_H #define HPL_OSCCTRL_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_rtc_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_rtc_config.h index 2b0b6712e635..16d6a5307169 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_rtc_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_rtc_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_rtc_config.h */ #ifndef HPL_RTC_CONFIG_H #define HPL_RTC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_sdhc_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_sdhc_config.h index daa662051724..cdf32e51f328 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_sdhc_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_sdhc_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_sdhc_config.h */ #ifndef HPL_SDHC_CONFIG_H #define HPL_SDHC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_sercom_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_sercom_config.h index b438619773ef..c87a35cc7f3e 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_sercom_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_sercom_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // For CircuitPython, use SERCOM settings as prototypes to set // the default settings. This file defines these SERCOMs // diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_systick_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_systick_config.h index a7f2f36208fa..48280a3de761 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_systick_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_systick_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_systick_config.h */ #ifndef HPL_SYSTICK_CONFIG_H #define HPL_SYSTICK_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_tc_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_tc_config.h index dc08b6eb23f3..b73f6143bfae 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_tc_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_tc_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_tc_config.h */ #ifndef HPL_TC_CONFIG_H #define HPL_TC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_trng_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_trng_config.h index ba9014989a95..e632208f74c3 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_trng_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_trng_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_trng_config.h */ #ifndef HPL_TRNG_CONFIG_H #define HPL_TRNG_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/peripheral_clk_config.h b/ports/atmel-samd/asf4_conf/same51/peripheral_clk_config.h index 51173f6d3296..f62cf2b3add7 100644 --- a/ports/atmel-samd/asf4_conf/same51/peripheral_clk_config.h +++ b/ports/atmel-samd/asf4_conf/same51/peripheral_clk_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file peripheral_clk_config.h */ #ifndef PERIPHERAL_CLK_CONFIG_H #define PERIPHERAL_CLK_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_adc_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_adc_config.h index 13d8151028d2..3ba63a414183 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_adc_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_adc_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_adc_config.h */ #ifndef HPL_ADC_CONFIG_H #define HPL_ADC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_dac_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_dac_config.h index c46f99b7db22..47924cf0955f 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_dac_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_dac_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_dac_config.h */ #ifndef HPL_DAC_CONFIG_H #define HPL_DAC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_dmac_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_dmac_config.h index 90499fc27fea..479965e59ed3 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_dmac_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_dmac_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_dmac_config.h */ #ifndef HPL_DMAC_CONFIG_H #define HPL_DMAC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_gclk_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_gclk_config.h index 4f79d511bf18..906dfac7f7c5 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_gclk_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_gclk_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // CircuitPython SAMD51 clock tree: // DFLL48M (with USBCRM on to sync with external USB ref) -> GCLK1, GCLK5, GCLK6 // GCLK1 (48MHz) -> 48 MHz peripherals diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_mclk_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_mclk_config.h index a5a7de53c259..263898c6b11f 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_mclk_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_mclk_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_mclk_config.h */ #ifndef HPL_MCLK_CONFIG_H #define HPL_MCLK_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_nvmctrl_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_nvmctrl_config.h index 53fcb593abbc..26e8cf558054 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_nvmctrl_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_nvmctrl_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_nvmctrl_config.h */ #ifndef HPL_NVMCTRL_CONFIG_H #define HPL_NVMCTRL_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_osc32kctrl_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_osc32kctrl_config.h index d93cbf922e6e..d2a6b744a9a6 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_osc32kctrl_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_osc32kctrl_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_osc32kctrl_config.h */ #ifndef HPL_OSC32KCTRL_CONFIG_H #define HPL_OSC32KCTRL_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_oscctrl_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_oscctrl_config.h index f7f79fada1ed..e8d1a04128e9 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_oscctrl_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_oscctrl_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_oscctrl_config.h */ #ifndef HPL_OSCCTRL_CONFIG_H #define HPL_OSCCTRL_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_rtc_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_rtc_config.h index 2b0b6712e635..16d6a5307169 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_rtc_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_rtc_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_rtc_config.h */ #ifndef HPL_RTC_CONFIG_H #define HPL_RTC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_sdhc_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_sdhc_config.h index daa662051724..cdf32e51f328 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_sdhc_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_sdhc_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_sdhc_config.h */ #ifndef HPL_SDHC_CONFIG_H #define HPL_SDHC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_sercom_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_sercom_config.h index b438619773ef..c87a35cc7f3e 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_sercom_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_sercom_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // For CircuitPython, use SERCOM settings as prototypes to set // the default settings. This file defines these SERCOMs // diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_systick_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_systick_config.h index a7f2f36208fa..48280a3de761 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_systick_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_systick_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_systick_config.h */ #ifndef HPL_SYSTICK_CONFIG_H #define HPL_SYSTICK_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_tc_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_tc_config.h index dc08b6eb23f3..b73f6143bfae 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_tc_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_tc_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_tc_config.h */ #ifndef HPL_TC_CONFIG_H #define HPL_TC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_trng_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_trng_config.h index ba9014989a95..e632208f74c3 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_trng_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_trng_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file hpl_trng_config.h */ #ifndef HPL_TRNG_CONFIG_H #define HPL_TRNG_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/peripheral_clk_config.h b/ports/atmel-samd/asf4_conf/same54/peripheral_clk_config.h index 51173f6d3296..f62cf2b3add7 100644 --- a/ports/atmel-samd/asf4_conf/same54/peripheral_clk_config.h +++ b/ports/atmel-samd/asf4_conf/same54/peripheral_clk_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file peripheral_clk_config.h */ #ifndef PERIPHERAL_CLK_CONFIG_H #define PERIPHERAL_CLK_CONFIG_H diff --git a/ports/atmel-samd/audio_dma.c b/ports/atmel-samd/audio_dma.c index 287ef41b35c1..c31461a41117 100644 --- a/ports/atmel-samd/audio_dma.c +++ b/ports/atmel-samd/audio_dma.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/atmel-samd/audio_dma.h b/ports/atmel-samd/audio_dma.h index cc41b0ae78d9..008272a98a9e 100644 --- a/ports/atmel-samd/audio_dma.h +++ b/ports/atmel-samd/audio_dma.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_AUDIO_DMA_H #define MICROPY_INCLUDED_ATMEL_SAMD_AUDIO_DMA_H diff --git a/ports/atmel-samd/background.c b/ports/atmel-samd/background.c index 2f8357d07b1c..2410f0fddb71 100644 --- a/ports/atmel-samd/background.c +++ b/ports/atmel-samd/background.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "background.h" #include "audio_dma.h" diff --git a/ports/atmel-samd/background.h b/ports/atmel-samd/background.h index 2a89c3b1b802..67e82c83813d 100644 --- a/ports/atmel-samd/background.h +++ b/ports/atmel-samd/background.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_BACKGROUND_H #define MICROPY_INCLUDED_ATMEL_SAMD_BACKGROUND_H diff --git a/ports/atmel-samd/bindings/samd/Clock.c b/ports/atmel-samd/bindings/samd/Clock.c index c7ca6c59d64c..ee879cb66e60 100644 --- a/ports/atmel-samd/bindings/samd/Clock.c +++ b/ports/atmel-samd/bindings/samd/Clock.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Noralf Trønnes - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Noralf Trønnes +// +// SPDX-License-Identifier: MIT #include "bindings/samd/Clock.h" #include "samd/clocks.h" diff --git a/ports/atmel-samd/bindings/samd/Clock.h b/ports/atmel-samd/bindings/samd/Clock.h index a4c11556b34e..738b05cb4cc6 100644 --- a/ports/atmel-samd/bindings/samd/Clock.h +++ b/ports/atmel-samd/bindings/samd/Clock.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Noralf Trønnes - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Noralf Trønnes +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_BINDINGS_SAMD_CLOCK_H #define MICROPY_INCLUDED_ATMEL_SAMD_BINDINGS_SAMD_CLOCK_H diff --git a/ports/atmel-samd/bindings/samd/__init__.c b/ports/atmel-samd/bindings/samd/__init__.c index 8f36452926af..76e7a3b2e0ee 100644 --- a/ports/atmel-samd/bindings/samd/__init__.c +++ b/ports/atmel-samd/bindings/samd/__init__.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Noralf Trønnes - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Noralf Trønnes +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/runtime.h" diff --git a/ports/atmel-samd/boards/8086_commander/board.c b/ports/atmel-samd/boards/8086_commander/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/8086_commander/board.c +++ b/ports/atmel-samd/boards/8086_commander/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/8086_commander/mpconfigboard.h b/ports/atmel-samd/boards/8086_commander/mpconfigboard.h index 5f5cad0fe82d..9a212c4ac9b8 100644 --- a/ports/atmel-samd/boards/8086_commander/mpconfigboard.h +++ b/ports/atmel-samd/boards/8086_commander/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "8086 Commander" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/8086_commander/pins.c b/ports/atmel-samd/boards/8086_commander/pins.c index d9c68cc0bcc5..09dbe751d981 100644 --- a/ports/atmel-samd/boards/8086_commander/pins.c +++ b/ports/atmel-samd/boards/8086_commander/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/adafruit_neokey_trinkey_m0/board.c b/ports/atmel-samd/boards/adafruit_neokey_trinkey_m0/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/adafruit_neokey_trinkey_m0/board.c +++ b/ports/atmel-samd/boards/adafruit_neokey_trinkey_m0/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/adafruit_neokey_trinkey_m0/mpconfigboard.h b/ports/atmel-samd/boards/adafruit_neokey_trinkey_m0/mpconfigboard.h index c932a0652fe4..a1739f2859f5 100644 --- a/ports/atmel-samd/boards/adafruit_neokey_trinkey_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/adafruit_neokey_trinkey_m0/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit NeoKey Trinkey M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/adafruit_neokey_trinkey_m0/pins.c b/ports/atmel-samd/boards/adafruit_neokey_trinkey_m0/pins.c index 7b0f72e283b1..a69b45efbbbe 100644 --- a/ports/atmel-samd/boards/adafruit_neokey_trinkey_m0/pins.c +++ b/ports/atmel-samd/boards/adafruit_neokey_trinkey_m0/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/adafruit_pixel_trinkey_m0/board.c b/ports/atmel-samd/boards/adafruit_pixel_trinkey_m0/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/adafruit_pixel_trinkey_m0/board.c +++ b/ports/atmel-samd/boards/adafruit_pixel_trinkey_m0/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/adafruit_pixel_trinkey_m0/mpconfigboard.h b/ports/atmel-samd/boards/adafruit_pixel_trinkey_m0/mpconfigboard.h index dded817ccf47..6483be72d9a5 100644 --- a/ports/atmel-samd/boards/adafruit_pixel_trinkey_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/adafruit_pixel_trinkey_m0/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Pixel Trinkey M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/adafruit_pixel_trinkey_m0/pins.c b/ports/atmel-samd/boards/adafruit_pixel_trinkey_m0/pins.c index 087a8f027bb3..20b5a2edfe0e 100644 --- a/ports/atmel-samd/boards/adafruit_pixel_trinkey_m0/pins.c +++ b/ports/atmel-samd/boards/adafruit_pixel_trinkey_m0/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/adafruit_proxlight_trinkey_m0/board.c b/ports/atmel-samd/boards/adafruit_proxlight_trinkey_m0/board.c index e0f8bda171c6..341cb760778c 100644 --- a/ports/atmel-samd/boards/adafruit_proxlight_trinkey_m0/board.c +++ b/ports/atmel-samd/boards/adafruit_proxlight_trinkey_m0/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "common-hal/microcontroller/Pin.h" diff --git a/ports/atmel-samd/boards/adafruit_proxlight_trinkey_m0/mpconfigboard.h b/ports/atmel-samd/boards/adafruit_proxlight_trinkey_m0/mpconfigboard.h index 878b25f2f8c1..3ba27ad17da0 100644 --- a/ports/atmel-samd/boards/adafruit_proxlight_trinkey_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/adafruit_proxlight_trinkey_m0/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit ProxLight Trinkey M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/adafruit_proxlight_trinkey_m0/pins.c b/ports/atmel-samd/boards/adafruit_proxlight_trinkey_m0/pins.c index 55e7d8466fe5..03cbbd3baa5a 100644 --- a/ports/atmel-samd/boards/adafruit_proxlight_trinkey_m0/pins.c +++ b/ports/atmel-samd/boards/adafruit_proxlight_trinkey_m0/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/adafruit_rotary_trinkey_m0/board.c b/ports/atmel-samd/boards/adafruit_rotary_trinkey_m0/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/adafruit_rotary_trinkey_m0/board.c +++ b/ports/atmel-samd/boards/adafruit_rotary_trinkey_m0/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/adafruit_rotary_trinkey_m0/mpconfigboard.h b/ports/atmel-samd/boards/adafruit_rotary_trinkey_m0/mpconfigboard.h index 7f31955f6dfe..1766aaa69cd8 100644 --- a/ports/atmel-samd/boards/adafruit_rotary_trinkey_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/adafruit_rotary_trinkey_m0/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Rotary Trinkey M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/adafruit_rotary_trinkey_m0/pins.c b/ports/atmel-samd/boards/adafruit_rotary_trinkey_m0/pins.c index 49e9853a578c..39001c43904a 100644 --- a/ports/atmel-samd/boards/adafruit_rotary_trinkey_m0/pins.c +++ b/ports/atmel-samd/boards/adafruit_rotary_trinkey_m0/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/adafruit_sht4x_trinkey_m0/board.c b/ports/atmel-samd/boards/adafruit_sht4x_trinkey_m0/board.c index 089d050df349..a9d9d01298a7 100644 --- a/ports/atmel-samd/boards/adafruit_sht4x_trinkey_m0/board.c +++ b/ports/atmel-samd/boards/adafruit_sht4x_trinkey_m0/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "common-hal/microcontroller/Pin.h" diff --git a/ports/atmel-samd/boards/adafruit_sht4x_trinkey_m0/mpconfigboard.h b/ports/atmel-samd/boards/adafruit_sht4x_trinkey_m0/mpconfigboard.h index d1d4a11b2d54..564e504436fa 100644 --- a/ports/atmel-samd/boards/adafruit_sht4x_trinkey_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/adafruit_sht4x_trinkey_m0/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit SHT4x Trinkey M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/adafruit_sht4x_trinkey_m0/pins.c b/ports/atmel-samd/boards/adafruit_sht4x_trinkey_m0/pins.c index fd8510f71980..67209ad9be90 100644 --- a/ports/atmel-samd/boards/adafruit_sht4x_trinkey_m0/pins.c +++ b/ports/atmel-samd/boards/adafruit_sht4x_trinkey_m0/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/adafruit_slide_trinkey_m0/board.c b/ports/atmel-samd/boards/adafruit_slide_trinkey_m0/board.c index 0d885160e99e..629e22836f00 100644 --- a/ports/atmel-samd/boards/adafruit_slide_trinkey_m0/board.c +++ b/ports/atmel-samd/boards/adafruit_slide_trinkey_m0/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "common-hal/microcontroller/Pin.h" diff --git a/ports/atmel-samd/boards/adafruit_slide_trinkey_m0/mpconfigboard.h b/ports/atmel-samd/boards/adafruit_slide_trinkey_m0/mpconfigboard.h index da7caf9b44e0..5383e63f3ef3 100644 --- a/ports/atmel-samd/boards/adafruit_slide_trinkey_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/adafruit_slide_trinkey_m0/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Slide Trinkey M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/adafruit_slide_trinkey_m0/pins.c b/ports/atmel-samd/boards/adafruit_slide_trinkey_m0/pins.c index eaf80401d5c8..14e9739af82a 100644 --- a/ports/atmel-samd/boards/adafruit_slide_trinkey_m0/pins.c +++ b/ports/atmel-samd/boards/adafruit_slide_trinkey_m0/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/adafruit_trrs_trinkey_m0/board.c b/ports/atmel-samd/boards/adafruit_trrs_trinkey_m0/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/adafruit_trrs_trinkey_m0/board.c +++ b/ports/atmel-samd/boards/adafruit_trrs_trinkey_m0/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/adafruit_trrs_trinkey_m0/mpconfigboard.h b/ports/atmel-samd/boards/adafruit_trrs_trinkey_m0/mpconfigboard.h index 07afbb4fa3a1..1ee236fad924 100644 --- a/ports/atmel-samd/boards/adafruit_trrs_trinkey_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/adafruit_trrs_trinkey_m0/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit TRRS Trinkey M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/adafruit_trrs_trinkey_m0/pins.c b/ports/atmel-samd/boards/adafruit_trrs_trinkey_m0/pins.c index d71d6e707251..e8d56789907e 100644 --- a/ports/atmel-samd/boards/adafruit_trrs_trinkey_m0/pins.c +++ b/ports/atmel-samd/boards/adafruit_trrs_trinkey_m0/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/aloriumtech_evo_m51/board.c b/ports/atmel-samd/boards/aloriumtech_evo_m51/board.c index 80e8b909a77e..eece51baa549 100644 --- a/ports/atmel-samd/boards/aloriumtech_evo_m51/board.c +++ b/ports/atmel-samd/boards/aloriumtech_evo_m51/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Updated to support Alorium Technology Evo M51 // Author: Bryan Craker diff --git a/ports/atmel-samd/boards/aloriumtech_evo_m51/mpconfigboard.h b/ports/atmel-samd/boards/aloriumtech_evo_m51/mpconfigboard.h index 2f4abe71919e..73abb6e495d0 100644 --- a/ports/atmel-samd/boards/aloriumtech_evo_m51/mpconfigboard.h +++ b/ports/atmel-samd/boards/aloriumtech_evo_m51/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "AloriumTech Evo M51" #define MICROPY_HW_MCU_NAME "samd51p19" diff --git a/ports/atmel-samd/boards/aloriumtech_evo_m51/pins.c b/ports/atmel-samd/boards/aloriumtech_evo_m51/pins.c index d6a2979d9e54..cbef4ed83e7c 100644 --- a/ports/atmel-samd/boards/aloriumtech_evo_m51/pins.c +++ b/ports/atmel-samd/boards/aloriumtech_evo_m51/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/arduino_mkr1300/board.c b/ports/atmel-samd/boards/arduino_mkr1300/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/arduino_mkr1300/board.c +++ b/ports/atmel-samd/boards/arduino_mkr1300/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/arduino_mkr1300/mpconfigboard.h b/ports/atmel-samd/boards/arduino_mkr1300/mpconfigboard.h index 6a3f7a96873c..d5ca3642f8ab 100644 --- a/ports/atmel-samd/boards/arduino_mkr1300/mpconfigboard.h +++ b/ports/atmel-samd/boards/arduino_mkr1300/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Arduino MKR1300" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/arduino_mkr1300/pins.c b/ports/atmel-samd/boards/arduino_mkr1300/pins.c index 21476a356125..b2819e2f8bdb 100644 --- a/ports/atmel-samd/boards/arduino_mkr1300/pins.c +++ b/ports/atmel-samd/boards/arduino_mkr1300/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/arduino_mkrzero/board.c b/ports/atmel-samd/boards/arduino_mkrzero/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/arduino_mkrzero/board.c +++ b/ports/atmel-samd/boards/arduino_mkrzero/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/arduino_mkrzero/mpconfigboard.h b/ports/atmel-samd/boards/arduino_mkrzero/mpconfigboard.h index 6226ecf49aad..11a21d513d0d 100644 --- a/ports/atmel-samd/boards/arduino_mkrzero/mpconfigboard.h +++ b/ports/atmel-samd/boards/arduino_mkrzero/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Arduino MKR Zero" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/arduino_mkrzero/pins.c b/ports/atmel-samd/boards/arduino_mkrzero/pins.c index 7c0e2f42afd1..b751373aa05e 100644 --- a/ports/atmel-samd/boards/arduino_mkrzero/pins.c +++ b/ports/atmel-samd/boards/arduino_mkrzero/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/arduino_nano_33_iot/board.c b/ports/atmel-samd/boards/arduino_nano_33_iot/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/arduino_nano_33_iot/board.c +++ b/ports/atmel-samd/boards/arduino_nano_33_iot/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/arduino_nano_33_iot/mpconfigboard.h b/ports/atmel-samd/boards/arduino_nano_33_iot/mpconfigboard.h index 6be4f5606aef..0d2241362969 100644 --- a/ports/atmel-samd/boards/arduino_nano_33_iot/mpconfigboard.h +++ b/ports/atmel-samd/boards/arduino_nano_33_iot/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Arduino Nano 33 IoT" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/arduino_nano_33_iot/pins.c b/ports/atmel-samd/boards/arduino_nano_33_iot/pins.c index f85145fd3aaa..2b4749c13e01 100644 --- a/ports/atmel-samd/boards/arduino_nano_33_iot/pins.c +++ b/ports/atmel-samd/boards/arduino_nano_33_iot/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/arduino_zero/board.c b/ports/atmel-samd/boards/arduino_zero/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/arduino_zero/board.c +++ b/ports/atmel-samd/boards/arduino_zero/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/arduino_zero/mpconfigboard.h b/ports/atmel-samd/boards/arduino_zero/mpconfigboard.h index 7ee912e49a43..e4a4037ca8f0 100644 --- a/ports/atmel-samd/boards/arduino_zero/mpconfigboard.h +++ b/ports/atmel-samd/boards/arduino_zero/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Arduino Zero" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/arduino_zero/pins.c b/ports/atmel-samd/boards/arduino_zero/pins.c index 02f51aa1e8de..d5f2545dd6f4 100644 --- a/ports/atmel-samd/boards/arduino_zero/pins.c +++ b/ports/atmel-samd/boards/arduino_zero/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/bast_pro_mini_m0/board.c b/ports/atmel-samd/boards/bast_pro_mini_m0/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/bast_pro_mini_m0/board.c +++ b/ports/atmel-samd/boards/bast_pro_mini_m0/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/bast_pro_mini_m0/mpconfigboard.h b/ports/atmel-samd/boards/bast_pro_mini_m0/mpconfigboard.h index 88c6c1a0fd8a..55bdd23923a3 100644 --- a/ports/atmel-samd/boards/bast_pro_mini_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/bast_pro_mini_m0/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Electronic Cats Bast Pro Mini M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/bast_pro_mini_m0/pins.c b/ports/atmel-samd/boards/bast_pro_mini_m0/pins.c index 6360150e70d4..d93ad0701054 100644 --- a/ports/atmel-samd/boards/bast_pro_mini_m0/pins.c +++ b/ports/atmel-samd/boards/bast_pro_mini_m0/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/bdmicro_vina_d21/board.c b/ports/atmel-samd/boards/bdmicro_vina_d21/board.c index f56275c0168d..019e4615653c 100644 --- a/ports/atmel-samd/boards/bdmicro_vina_d21/board.c +++ b/ports/atmel-samd/boards/bdmicro_vina_d21/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/atmel-samd/boards/bdmicro_vina_d21/mpconfigboard.h b/ports/atmel-samd/boards/bdmicro_vina_d21/mpconfigboard.h index 1c56e39a0f63..0e65168a5f79 100644 --- a/ports/atmel-samd/boards/bdmicro_vina_d21/mpconfigboard.h +++ b/ports/atmel-samd/boards/bdmicro_vina_d21/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "BDMICRO VINA-D21" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/bdmicro_vina_d21/pins.c b/ports/atmel-samd/boards/bdmicro_vina_d21/pins.c index d84e46d726ae..5f50a44e8922 100644 --- a/ports/atmel-samd/boards/bdmicro_vina_d21/pins.c +++ b/ports/atmel-samd/boards/bdmicro_vina_d21/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/bdmicro_vina_d51/board.c b/ports/atmel-samd/boards/bdmicro_vina_d51/board.c index 1bba99ac0657..d48264a51fed 100644 --- a/ports/atmel-samd/boards/bdmicro_vina_d51/board.c +++ b/ports/atmel-samd/boards/bdmicro_vina_d51/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/atmel-samd/boards/bdmicro_vina_d51/mpconfigboard.h b/ports/atmel-samd/boards/bdmicro_vina_d51/mpconfigboard.h index 41b88632d8e3..fb577ac65008 100644 --- a/ports/atmel-samd/boards/bdmicro_vina_d51/mpconfigboard.h +++ b/ports/atmel-samd/boards/bdmicro_vina_d51/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // More than one revision of this board is available. // This board specifies the most up to date PCB Revision diff --git a/ports/atmel-samd/boards/bdmicro_vina_d51/pins.c b/ports/atmel-samd/boards/bdmicro_vina_d51/pins.c index 925c5a525f9b..907cc24e0673 100644 --- a/ports/atmel-samd/boards/bdmicro_vina_d51/pins.c +++ b/ports/atmel-samd/boards/bdmicro_vina_d51/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // More than one revision of this board is available. // This board specifies the most up to date PCB Revision diff --git a/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/board.c b/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/board.c index f56275c0168d..019e4615653c 100644 --- a/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/board.c +++ b/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/mpconfigboard.h b/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/mpconfigboard.h index 36d1125ba359..6ec1c68a94ba 100644 --- a/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/mpconfigboard.h +++ b/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "BDMICRO VINA-D51" #define MICROPY_HW_MCU_NAME "samd51n20" diff --git a/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/pins.c b/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/pins.c index 6f57a0d7be02..43a77af8ab4a 100644 --- a/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/pins.c +++ b/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/blm_badge/board.c b/ports/atmel-samd/boards/blm_badge/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/blm_badge/board.c +++ b/ports/atmel-samd/boards/blm_badge/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/blm_badge/mpconfigboard.h b/ports/atmel-samd/boards/blm_badge/mpconfigboard.h index cc35610f1a43..d87b3302f06d 100644 --- a/ports/atmel-samd/boards/blm_badge/mpconfigboard.h +++ b/ports/atmel-samd/boards/blm_badge/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit BLM Badge" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/blm_badge/pins.c b/ports/atmel-samd/boards/blm_badge/pins.c index 993abae2b8fb..f7d3289e6b74 100644 --- a/ports/atmel-samd/boards/blm_badge/pins.c +++ b/ports/atmel-samd/boards/blm_badge/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/capablerobot_usbhub/board.c b/ports/atmel-samd/boards/capablerobot_usbhub/board.c index 711b2cf7664e..bb6af6a528c1 100644 --- a/ports/atmel-samd/boards/capablerobot_usbhub/board.c +++ b/ports/atmel-samd/boards/capablerobot_usbhub/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/atmel-samd/boards/capablerobot_usbhub/mpconfigboard.h b/ports/atmel-samd/boards/capablerobot_usbhub/mpconfigboard.h index 6ed80fbdf7f8..00f89cbd83a1 100644 --- a/ports/atmel-samd/boards/capablerobot_usbhub/mpconfigboard.h +++ b/ports/atmel-samd/boards/capablerobot_usbhub/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Capable Robot Programmable USB Hub" #define MICROPY_HW_MCU_NAME "samd51g19" diff --git a/ports/atmel-samd/boards/capablerobot_usbhub/pins.c b/ports/atmel-samd/boards/capablerobot_usbhub/pins.c index a2b3c9782295..7ff959f10ab2 100644 --- a/ports/atmel-samd/boards/capablerobot_usbhub/pins.c +++ b/ports/atmel-samd/boards/capablerobot_usbhub/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/catwan_usbstick/board.c b/ports/atmel-samd/boards/catwan_usbstick/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/catwan_usbstick/board.c +++ b/ports/atmel-samd/boards/catwan_usbstick/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/catwan_usbstick/mpconfigboard.h b/ports/atmel-samd/boards/catwan_usbstick/mpconfigboard.h index 3418466fb9c5..80fe04dd661e 100644 --- a/ports/atmel-samd/boards/catwan_usbstick/mpconfigboard.h +++ b/ports/atmel-samd/boards/catwan_usbstick/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Electronic Cats CatWAN USBStick" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/catwan_usbstick/pins.c b/ports/atmel-samd/boards/catwan_usbstick/pins.c index a0f44fc6f4af..bc0d437960a0 100644 --- a/ports/atmel-samd/boards/catwan_usbstick/pins.c +++ b/ports/atmel-samd/boards/catwan_usbstick/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/circuitbrains_basic_m0/board.c b/ports/atmel-samd/boards/circuitbrains_basic_m0/board.c index a28d51be4f98..e6344c0f1e62 100755 --- a/ports/atmel-samd/boards/circuitbrains_basic_m0/board.c +++ b/ports/atmel-samd/boards/circuitbrains_basic_m0/board.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Original work copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Modified work copyright (c) 2019 Kevin Neubauer for Null Byte Labs LLC - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Original work copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Modified work copyright (c) 2019 Kevin Neubauer for Null Byte Labs LLC +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/circuitbrains_basic_m0/mpconfigboard.h b/ports/atmel-samd/boards/circuitbrains_basic_m0/mpconfigboard.h index 384022f874dd..1abbd8664d3b 100755 --- a/ports/atmel-samd/boards/circuitbrains_basic_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/circuitbrains_basic_m0/mpconfigboard.h @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Original work copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Modified work copyright (c) 2019 Kevin Neubauer for Null Byte Labs LLC +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "CircuitBrains Basic" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/circuitbrains_basic_m0/pins.c b/ports/atmel-samd/boards/circuitbrains_basic_m0/pins.c index 0ecaf555ebd3..376d3ed11cf0 100644 --- a/ports/atmel-samd/boards/circuitbrains_basic_m0/pins.c +++ b/ports/atmel-samd/boards/circuitbrains_basic_m0/pins.c @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Original work copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Modified work copyright (c) 2019 Kevin Neubauer for Null Byte Labs LLC +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" // This mapping only includes functional names because pins broken diff --git a/ports/atmel-samd/boards/circuitbrains_deluxe_m4/board.c b/ports/atmel-samd/boards/circuitbrains_deluxe_m4/board.c index a28d51be4f98..e6344c0f1e62 100755 --- a/ports/atmel-samd/boards/circuitbrains_deluxe_m4/board.c +++ b/ports/atmel-samd/boards/circuitbrains_deluxe_m4/board.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Original work copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Modified work copyright (c) 2019 Kevin Neubauer for Null Byte Labs LLC - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Original work copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Modified work copyright (c) 2019 Kevin Neubauer for Null Byte Labs LLC +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/circuitbrains_deluxe_m4/mpconfigboard.h b/ports/atmel-samd/boards/circuitbrains_deluxe_m4/mpconfigboard.h index ce5b43cf44f4..6a105e698fec 100755 --- a/ports/atmel-samd/boards/circuitbrains_deluxe_m4/mpconfigboard.h +++ b/ports/atmel-samd/boards/circuitbrains_deluxe_m4/mpconfigboard.h @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Original work copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Modified work copyright (c) 2019 Kevin Neubauer for Null Byte Labs LLC +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "CircuitBrains Deluxe" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/circuitbrains_deluxe_m4/pins.c b/ports/atmel-samd/boards/circuitbrains_deluxe_m4/pins.c index 69f7ca050a96..4e8bcc171d0f 100644 --- a/ports/atmel-samd/boards/circuitbrains_deluxe_m4/pins.c +++ b/ports/atmel-samd/boards/circuitbrains_deluxe_m4/pins.c @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Original work copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Modified work copyright (c) 2019 Kevin Neubauer for Null Byte Labs LLC +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" // This mapping only includes functional names because pins broken diff --git a/ports/atmel-samd/boards/circuitplayground_express/board.c b/ports/atmel-samd/boards/circuitplayground_express/board.c index bda4f7520b7a..cc5d8355624b 100644 --- a/ports/atmel-samd/boards/circuitplayground_express/board.c +++ b/ports/atmel-samd/boards/circuitplayground_express/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/atmel-samd/boards/circuitplayground_express/mpconfigboard.h b/ports/atmel-samd/boards/circuitplayground_express/mpconfigboard.h index ee27e99caeac..09aaaa439c67 100644 --- a/ports/atmel-samd/boards/circuitplayground_express/mpconfigboard.h +++ b/ports/atmel-samd/boards/circuitplayground_express/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit CircuitPlayground Express" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/circuitplayground_express/pins.c b/ports/atmel-samd/boards/circuitplayground_express/pins.c index ea00f85c70f3..60cfeac1c1f7 100644 --- a/ports/atmel-samd/boards/circuitplayground_express/pins.c +++ b/ports/atmel-samd/boards/circuitplayground_express/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/circuitplayground_express_crickit/board.c b/ports/atmel-samd/boards/circuitplayground_express_crickit/board.c index bd9eba93cc43..5a3e55395f57 100644 --- a/ports/atmel-samd/boards/circuitplayground_express_crickit/board.c +++ b/ports/atmel-samd/boards/circuitplayground_express_crickit/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/atmel-samd/boards/circuitplayground_express_crickit/mpconfigboard.h b/ports/atmel-samd/boards/circuitplayground_express_crickit/mpconfigboard.h index 2791d87ce53e..e93216ae55b9 100644 --- a/ports/atmel-samd/boards/circuitplayground_express_crickit/mpconfigboard.h +++ b/ports/atmel-samd/boards/circuitplayground_express_crickit/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit CircuitPlayground Express with Crickit libraries" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/circuitplayground_express_crickit/pins.c b/ports/atmel-samd/boards/circuitplayground_express_crickit/pins.c index ea00f85c70f3..60cfeac1c1f7 100644 --- a/ports/atmel-samd/boards/circuitplayground_express_crickit/pins.c +++ b/ports/atmel-samd/boards/circuitplayground_express_crickit/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/circuitplayground_express_displayio/board.c b/ports/atmel-samd/boards/circuitplayground_express_displayio/board.c index bd9eba93cc43..5a3e55395f57 100644 --- a/ports/atmel-samd/boards/circuitplayground_express_displayio/board.c +++ b/ports/atmel-samd/boards/circuitplayground_express_displayio/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/atmel-samd/boards/circuitplayground_express_displayio/mpconfigboard.h b/ports/atmel-samd/boards/circuitplayground_express_displayio/mpconfigboard.h index 55fd91a0feff..ecbe363cab73 100644 --- a/ports/atmel-samd/boards/circuitplayground_express_displayio/mpconfigboard.h +++ b/ports/atmel-samd/boards/circuitplayground_express_displayio/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit CircuitPlayground Express with displayio" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/circuitplayground_express_displayio/pins.c b/ports/atmel-samd/boards/circuitplayground_express_displayio/pins.c index ea00f85c70f3..60cfeac1c1f7 100644 --- a/ports/atmel-samd/boards/circuitplayground_express_displayio/pins.c +++ b/ports/atmel-samd/boards/circuitplayground_express_displayio/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/cp32-m4/board.c b/ports/atmel-samd/boards/cp32-m4/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/cp32-m4/board.c +++ b/ports/atmel-samd/boards/cp32-m4/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/cp32-m4/mpconfigboard.h b/ports/atmel-samd/boards/cp32-m4/mpconfigboard.h index 13433707afba..a7c33c377e44 100644 --- a/ports/atmel-samd/boards/cp32-m4/mpconfigboard.h +++ b/ports/atmel-samd/boards/cp32-m4/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "CP32-M4" #define MICROPY_HW_MCU_NAME "samd51j20" diff --git a/ports/atmel-samd/boards/cp32-m4/pins.c b/ports/atmel-samd/boards/cp32-m4/pins.c index 2f8e7ad1c510..784acb235e87 100644 --- a/ports/atmel-samd/boards/cp32-m4/pins.c +++ b/ports/atmel-samd/boards/cp32-m4/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" // This mapping only includes functional names because pins broken diff --git a/ports/atmel-samd/boards/cp_sapling_m0/board.c b/ports/atmel-samd/boards/cp_sapling_m0/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/cp_sapling_m0/board.c +++ b/ports/atmel-samd/boards/cp_sapling_m0/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/cp_sapling_m0/mpconfigboard.h b/ports/atmel-samd/boards/cp_sapling_m0/mpconfigboard.h index ce9319d479b2..175415303914 100644 --- a/ports/atmel-samd/boards/cp_sapling_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/cp_sapling_m0/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "CP Sapling M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/cp_sapling_m0/pins.c b/ports/atmel-samd/boards/cp_sapling_m0/pins.c index effb33ffe004..229d575fd7ad 100644 --- a/ports/atmel-samd/boards/cp_sapling_m0/pins.c +++ b/ports/atmel-samd/boards/cp_sapling_m0/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/cp_sapling_m0_revb/board.c b/ports/atmel-samd/boards/cp_sapling_m0_revb/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/cp_sapling_m0_revb/board.c +++ b/ports/atmel-samd/boards/cp_sapling_m0_revb/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/cp_sapling_m0_revb/mpconfigboard.h b/ports/atmel-samd/boards/cp_sapling_m0_revb/mpconfigboard.h index 5c0526d0d9c6..936f97e50765 100644 --- a/ports/atmel-samd/boards/cp_sapling_m0_revb/mpconfigboard.h +++ b/ports/atmel-samd/boards/cp_sapling_m0_revb/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "CP Sapling M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/cp_sapling_m0_revb/pins.c b/ports/atmel-samd/boards/cp_sapling_m0_revb/pins.c index 85246486519f..b0fcf5c621d2 100644 --- a/ports/atmel-samd/boards/cp_sapling_m0_revb/pins.c +++ b/ports/atmel-samd/boards/cp_sapling_m0_revb/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/cp_sapling_m0_spiflash/board.c b/ports/atmel-samd/boards/cp_sapling_m0_spiflash/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/cp_sapling_m0_spiflash/board.c +++ b/ports/atmel-samd/boards/cp_sapling_m0_spiflash/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/cp_sapling_m0_spiflash/mpconfigboard.h b/ports/atmel-samd/boards/cp_sapling_m0_spiflash/mpconfigboard.h index ad97ae2262b8..41095430eda4 100644 --- a/ports/atmel-samd/boards/cp_sapling_m0_spiflash/mpconfigboard.h +++ b/ports/atmel-samd/boards/cp_sapling_m0_spiflash/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "CP Sapling M0 w/ SPI Flash" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/cp_sapling_m0_spiflash/pins.c b/ports/atmel-samd/boards/cp_sapling_m0_spiflash/pins.c index effb33ffe004..229d575fd7ad 100644 --- a/ports/atmel-samd/boards/cp_sapling_m0_spiflash/pins.c +++ b/ports/atmel-samd/boards/cp_sapling_m0_spiflash/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/datalore_ip_m4/board.c b/ports/atmel-samd/boards/datalore_ip_m4/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/datalore_ip_m4/board.c +++ b/ports/atmel-samd/boards/datalore_ip_m4/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/datalore_ip_m4/mpconfigboard.h b/ports/atmel-samd/boards/datalore_ip_m4/mpconfigboard.h index e2bf02e8d24c..cdcc3b96db42 100644 --- a/ports/atmel-samd/boards/datalore_ip_m4/mpconfigboard.h +++ b/ports/atmel-samd/boards/datalore_ip_m4/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "TG-Boards' Datalore IP M4" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/datalore_ip_m4/pins.c b/ports/atmel-samd/boards/datalore_ip_m4/pins.c index bd922755dc4b..65a0c9c22b20 100644 --- a/ports/atmel-samd/boards/datalore_ip_m4/pins.c +++ b/ports/atmel-samd/boards/datalore_ip_m4/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" // This mapping only includes functional names because pins broken diff --git a/ports/atmel-samd/boards/datum_distance/board.c b/ports/atmel-samd/boards/datum_distance/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/datum_distance/board.c +++ b/ports/atmel-samd/boards/datum_distance/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/datum_distance/mpconfigboard.h b/ports/atmel-samd/boards/datum_distance/mpconfigboard.h index 789a47c5e18d..e0cfbe06ec9a 100644 --- a/ports/atmel-samd/boards/datum_distance/mpconfigboard.h +++ b/ports/atmel-samd/boards/datum_distance/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // LEDs #define MICROPY_HW_LED_STATUS (&pin_PA17) #define MICROPY_HW_LED_TX &pin_PA27 diff --git a/ports/atmel-samd/boards/datum_distance/pins.c b/ports/atmel-samd/boards/datum_distance/pins.c index e09bf14c7ef2..e922829682a4 100644 --- a/ports/atmel-samd/boards/datum_distance/pins.c +++ b/ports/atmel-samd/boards/datum_distance/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/datum_imu/board.c b/ports/atmel-samd/boards/datum_imu/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/datum_imu/board.c +++ b/ports/atmel-samd/boards/datum_imu/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/datum_imu/mpconfigboard.h b/ports/atmel-samd/boards/datum_imu/mpconfigboard.h index 421ffaa5d41f..7654daadf2eb 100644 --- a/ports/atmel-samd/boards/datum_imu/mpconfigboard.h +++ b/ports/atmel-samd/boards/datum_imu/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // LEDs #define MICROPY_HW_LED_STATUS (&pin_PA17) #define MICROPY_HW_LED_TX &pin_PA27 diff --git a/ports/atmel-samd/boards/datum_imu/pins.c b/ports/atmel-samd/boards/datum_imu/pins.c index 7b6224507048..a9cef252b237 100644 --- a/ports/atmel-samd/boards/datum_imu/pins.c +++ b/ports/atmel-samd/boards/datum_imu/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/datum_light/board.c b/ports/atmel-samd/boards/datum_light/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/datum_light/board.c +++ b/ports/atmel-samd/boards/datum_light/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/datum_light/mpconfigboard.h b/ports/atmel-samd/boards/datum_light/mpconfigboard.h index 7fd5f2efc9a8..4dde48a54278 100644 --- a/ports/atmel-samd/boards/datum_light/mpconfigboard.h +++ b/ports/atmel-samd/boards/datum_light/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // LEDs #define MICROPY_HW_LED_STATUS (&pin_PA17) #define MICROPY_HW_LED_TX &pin_PA27 diff --git a/ports/atmel-samd/boards/datum_light/pins.c b/ports/atmel-samd/boards/datum_light/pins.c index e09bf14c7ef2..e922829682a4 100644 --- a/ports/atmel-samd/boards/datum_light/pins.c +++ b/ports/atmel-samd/boards/datum_light/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/datum_weather/board.c b/ports/atmel-samd/boards/datum_weather/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/datum_weather/board.c +++ b/ports/atmel-samd/boards/datum_weather/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/datum_weather/mpconfigboard.h b/ports/atmel-samd/boards/datum_weather/mpconfigboard.h index f12a5796b52b..851414de96f2 100644 --- a/ports/atmel-samd/boards/datum_weather/mpconfigboard.h +++ b/ports/atmel-samd/boards/datum_weather/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // LEDs #define MICROPY_HW_LED_STATUS (&pin_PA17) #define MICROPY_HW_LED_TX &pin_PA27 diff --git a/ports/atmel-samd/boards/datum_weather/pins.c b/ports/atmel-samd/boards/datum_weather/pins.c index 19934f84c94e..fe40cdff068d 100644 --- a/ports/atmel-samd/boards/datum_weather/pins.c +++ b/ports/atmel-samd/boards/datum_weather/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/dynalora_usb/board.c b/ports/atmel-samd/boards/dynalora_usb/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/dynalora_usb/board.c +++ b/ports/atmel-samd/boards/dynalora_usb/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/dynalora_usb/mpconfigboard.h b/ports/atmel-samd/boards/dynalora_usb/mpconfigboard.h index ef039292f125..46f366d6b35b 100644 --- a/ports/atmel-samd/boards/dynalora_usb/mpconfigboard.h +++ b/ports/atmel-samd/boards/dynalora_usb/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "DynaLoRa_USB" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/dynalora_usb/pins.c b/ports/atmel-samd/boards/dynalora_usb/pins.c index d9965d665bee..8efe68762fb3 100644 --- a/ports/atmel-samd/boards/dynalora_usb/pins.c +++ b/ports/atmel-samd/boards/dynalora_usb/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/dynossat_edu_eps/board.c b/ports/atmel-samd/boards/dynossat_edu_eps/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/dynossat_edu_eps/board.c +++ b/ports/atmel-samd/boards/dynossat_edu_eps/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/dynossat_edu_eps/mpconfigboard.h b/ports/atmel-samd/boards/dynossat_edu_eps/mpconfigboard.h index 75b7b1fc8ac1..e060a684c3ec 100644 --- a/ports/atmel-samd/boards/dynossat_edu_eps/mpconfigboard.h +++ b/ports/atmel-samd/boards/dynossat_edu_eps/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "DynOSSAT-EDU-EPS" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/dynossat_edu_eps/pins.c b/ports/atmel-samd/boards/dynossat_edu_eps/pins.c index 68ee80b30783..943d477e65e8 100644 --- a/ports/atmel-samd/boards/dynossat_edu_eps/pins.c +++ b/ports/atmel-samd/boards/dynossat_edu_eps/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/dynossat_edu_obc/board.c b/ports/atmel-samd/boards/dynossat_edu_obc/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/dynossat_edu_obc/board.c +++ b/ports/atmel-samd/boards/dynossat_edu_obc/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/dynossat_edu_obc/mpconfigboard.h b/ports/atmel-samd/boards/dynossat_edu_obc/mpconfigboard.h index afe96a9cd632..bc35a5939991 100644 --- a/ports/atmel-samd/boards/dynossat_edu_obc/mpconfigboard.h +++ b/ports/atmel-samd/boards/dynossat_edu_obc/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "DynOSSAT-EDU-OBC" #define MICROPY_HW_MCU_NAME "samd51j20" diff --git a/ports/atmel-samd/boards/dynossat_edu_obc/pins.c b/ports/atmel-samd/boards/dynossat_edu_obc/pins.c index 7978e6e73843..c225af8fbdf6 100644 --- a/ports/atmel-samd/boards/dynossat_edu_obc/pins.c +++ b/ports/atmel-samd/boards/dynossat_edu_obc/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/escornabot_makech/board.c b/ports/atmel-samd/boards/escornabot_makech/board.c index a3c19899e806..f64f1a2535c3 100644 --- a/ports/atmel-samd/boards/escornabot_makech/board.c +++ b/ports/atmel-samd/boards/escornabot_makech/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Andrés Sabas for Electronic Cats - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Andrés Sabas for Electronic Cats +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/escornabot_makech/mpconfigboard.h b/ports/atmel-samd/boards/escornabot_makech/mpconfigboard.h index 1886f9e23392..6aec5fb78804 100644 --- a/ports/atmel-samd/boards/escornabot_makech/mpconfigboard.h +++ b/ports/atmel-samd/boards/escornabot_makech/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Andrés Sabas for Electronic Cats +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Escornabot Makech" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/escornabot_makech/pins.c b/ports/atmel-samd/boards/escornabot_makech/pins.c index ad771dcb8eb5..5d274a88a243 100644 --- a/ports/atmel-samd/boards/escornabot_makech/pins.c +++ b/ports/atmel-samd/boards/escornabot_makech/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Andrés Sabas for Electronic Cats +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/feather_m0_adalogger/board.c b/ports/atmel-samd/boards/feather_m0_adalogger/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/feather_m0_adalogger/board.c +++ b/ports/atmel-samd/boards/feather_m0_adalogger/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/feather_m0_adalogger/mpconfigboard.h b/ports/atmel-samd/boards/feather_m0_adalogger/mpconfigboard.h index 3dfefac54529..575abe96accf 100644 --- a/ports/atmel-samd/boards/feather_m0_adalogger/mpconfigboard.h +++ b/ports/atmel-samd/boards/feather_m0_adalogger/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // LEDs #define MICROPY_HW_LED_STATUS (&pin_PA17) diff --git a/ports/atmel-samd/boards/feather_m0_adalogger/pins.c b/ports/atmel-samd/boards/feather_m0_adalogger/pins.c index 29b060e59769..3a5234da77c9 100644 --- a/ports/atmel-samd/boards/feather_m0_adalogger/pins.c +++ b/ports/atmel-samd/boards/feather_m0_adalogger/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/feather_m0_basic/board.c b/ports/atmel-samd/boards/feather_m0_basic/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/feather_m0_basic/board.c +++ b/ports/atmel-samd/boards/feather_m0_basic/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/feather_m0_basic/mpconfigboard.h b/ports/atmel-samd/boards/feather_m0_basic/mpconfigboard.h index b8d81992f636..b844999bf5d9 100644 --- a/ports/atmel-samd/boards/feather_m0_basic/mpconfigboard.h +++ b/ports/atmel-samd/boards/feather_m0_basic/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // LEDs #define MICROPY_HW_LED_STATUS (&pin_PA17) diff --git a/ports/atmel-samd/boards/feather_m0_basic/pins.c b/ports/atmel-samd/boards/feather_m0_basic/pins.c index bc10b1ca12a7..24f5a839d140 100644 --- a/ports/atmel-samd/boards/feather_m0_basic/pins.c +++ b/ports/atmel-samd/boards/feather_m0_basic/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/feather_m0_express/board.c b/ports/atmel-samd/boards/feather_m0_express/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/feather_m0_express/board.c +++ b/ports/atmel-samd/boards/feather_m0_express/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/feather_m0_express/mpconfigboard.h b/ports/atmel-samd/boards/feather_m0_express/mpconfigboard.h index 7c6492728e28..682d594e3af6 100644 --- a/ports/atmel-samd/boards/feather_m0_express/mpconfigboard.h +++ b/ports/atmel-samd/boards/feather_m0_express/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Feather M0 Express" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/feather_m0_express/pins.c b/ports/atmel-samd/boards/feather_m0_express/pins.c index af33c3e0a009..c52a03af8a65 100644 --- a/ports/atmel-samd/boards/feather_m0_express/pins.c +++ b/ports/atmel-samd/boards/feather_m0_express/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/feather_m0_express_crickit/board.c b/ports/atmel-samd/boards/feather_m0_express_crickit/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/feather_m0_express_crickit/board.c +++ b/ports/atmel-samd/boards/feather_m0_express_crickit/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/feather_m0_express_crickit/mpconfigboard.h b/ports/atmel-samd/boards/feather_m0_express_crickit/mpconfigboard.h index fb8444639b32..b9e65240c63c 100644 --- a/ports/atmel-samd/boards/feather_m0_express_crickit/mpconfigboard.h +++ b/ports/atmel-samd/boards/feather_m0_express_crickit/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Feather M0 Express with Crickit libraries" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/feather_m0_express_crickit/pins.c b/ports/atmel-samd/boards/feather_m0_express_crickit/pins.c index af33c3e0a009..c52a03af8a65 100644 --- a/ports/atmel-samd/boards/feather_m0_express_crickit/pins.c +++ b/ports/atmel-samd/boards/feather_m0_express_crickit/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/feather_m0_rfm69/board.c b/ports/atmel-samd/boards/feather_m0_rfm69/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/feather_m0_rfm69/board.c +++ b/ports/atmel-samd/boards/feather_m0_rfm69/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/feather_m0_rfm69/mpconfigboard.h b/ports/atmel-samd/boards/feather_m0_rfm69/mpconfigboard.h index e2520ef4fc0c..b1d909e8156f 100644 --- a/ports/atmel-samd/boards/feather_m0_rfm69/mpconfigboard.h +++ b/ports/atmel-samd/boards/feather_m0_rfm69/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // LEDs #define MICROPY_HW_LED_STATUS (&pin_PA17) diff --git a/ports/atmel-samd/boards/feather_m0_rfm69/pins.c b/ports/atmel-samd/boards/feather_m0_rfm69/pins.c index d2e1ade1a0e6..9d58e52a4db3 100644 --- a/ports/atmel-samd/boards/feather_m0_rfm69/pins.c +++ b/ports/atmel-samd/boards/feather_m0_rfm69/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/feather_m0_rfm9x/board.c b/ports/atmel-samd/boards/feather_m0_rfm9x/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/feather_m0_rfm9x/board.c +++ b/ports/atmel-samd/boards/feather_m0_rfm9x/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/feather_m0_rfm9x/mpconfigboard.h b/ports/atmel-samd/boards/feather_m0_rfm9x/mpconfigboard.h index e338fe4d6969..52734fb6f4eb 100644 --- a/ports/atmel-samd/boards/feather_m0_rfm9x/mpconfigboard.h +++ b/ports/atmel-samd/boards/feather_m0_rfm9x/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // LEDs #define MICROPY_HW_LED_STATUS (&pin_PA17) diff --git a/ports/atmel-samd/boards/feather_m0_rfm9x/pins.c b/ports/atmel-samd/boards/feather_m0_rfm9x/pins.c index ef678fa39998..5b01f214c4ec 100644 --- a/ports/atmel-samd/boards/feather_m0_rfm9x/pins.c +++ b/ports/atmel-samd/boards/feather_m0_rfm9x/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/feather_m0_supersized/board.c b/ports/atmel-samd/boards/feather_m0_supersized/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/feather_m0_supersized/board.c +++ b/ports/atmel-samd/boards/feather_m0_supersized/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/feather_m0_supersized/mpconfigboard.h b/ports/atmel-samd/boards/feather_m0_supersized/mpconfigboard.h index 2bc6eb611506..0a1ffc162e33 100644 --- a/ports/atmel-samd/boards/feather_m0_supersized/mpconfigboard.h +++ b/ports/atmel-samd/boards/feather_m0_supersized/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + /* Adafruit Feather M0 Express with an 8MB SPI flash instead of the usual 2MB */ #define MICROPY_HW_BOARD_NAME "Hacked Feather M0 Express with 8Mbyte SPI flash" diff --git a/ports/atmel-samd/boards/feather_m0_supersized/pins.c b/ports/atmel-samd/boards/feather_m0_supersized/pins.c index af33c3e0a009..c52a03af8a65 100644 --- a/ports/atmel-samd/boards/feather_m0_supersized/pins.c +++ b/ports/atmel-samd/boards/feather_m0_supersized/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/feather_m4_can/board.c b/ports/atmel-samd/boards/feather_m4_can/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/feather_m4_can/board.c +++ b/ports/atmel-samd/boards/feather_m4_can/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/feather_m4_can/mpconfigboard.h b/ports/atmel-samd/boards/feather_m4_can/mpconfigboard.h index c7178f2c90b0..8c09216fa9b5 100644 --- a/ports/atmel-samd/boards/feather_m4_can/mpconfigboard.h +++ b/ports/atmel-samd/boards/feather_m4_can/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Feather M4 CAN" #define MICROPY_HW_MCU_NAME "same51j19a" diff --git a/ports/atmel-samd/boards/feather_m4_can/pins.c b/ports/atmel-samd/boards/feather_m4_can/pins.c index 8389b7e2effd..579474479ef3 100644 --- a/ports/atmel-samd/boards/feather_m4_can/pins.c +++ b/ports/atmel-samd/boards/feather_m4_can/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/feather_m4_express/board.c b/ports/atmel-samd/boards/feather_m4_express/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/feather_m4_express/board.c +++ b/ports/atmel-samd/boards/feather_m4_express/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/feather_m4_express/mpconfigboard.h b/ports/atmel-samd/boards/feather_m4_express/mpconfigboard.h index 0744fc3f92de..27c5e5a015c1 100644 --- a/ports/atmel-samd/boards/feather_m4_express/mpconfigboard.h +++ b/ports/atmel-samd/boards/feather_m4_express/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Feather M4 Express" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/feather_m4_express/pins.c b/ports/atmel-samd/boards/feather_m4_express/pins.c index 7484c2ef8e5b..90f455090d28 100644 --- a/ports/atmel-samd/boards/feather_m4_express/pins.c +++ b/ports/atmel-samd/boards/feather_m4_express/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/fluff_m0/board.c b/ports/atmel-samd/boards/fluff_m0/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/fluff_m0/board.c +++ b/ports/atmel-samd/boards/fluff_m0/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/fluff_m0/mpconfigboard.h b/ports/atmel-samd/boards/fluff_m0/mpconfigboard.h index a2b34b6eb157..ae3972984193 100644 --- a/ports/atmel-samd/boards/fluff_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/fluff_m0/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Fluff M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/fluff_m0/pins.c b/ports/atmel-samd/boards/fluff_m0/pins.c index 7f115052815e..080b31a85821 100644 --- a/ports/atmel-samd/boards/fluff_m0/pins.c +++ b/ports/atmel-samd/boards/fluff_m0/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/gemma_m0/board.c b/ports/atmel-samd/boards/gemma_m0/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/gemma_m0/board.c +++ b/ports/atmel-samd/boards/gemma_m0/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/gemma_m0/mpconfigboard.h b/ports/atmel-samd/boards/gemma_m0/mpconfigboard.h index 81a81d6f5487..5127848418ff 100644 --- a/ports/atmel-samd/boards/gemma_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/gemma_m0/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Gemma M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/gemma_m0/pins.c b/ports/atmel-samd/boards/gemma_m0/pins.c index d89704c7d057..a5ed8fc33ecb 100644 --- a/ports/atmel-samd/boards/gemma_m0/pins.c +++ b/ports/atmel-samd/boards/gemma_m0/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/grandcentral_m4_express/board.c b/ports/atmel-samd/boards/grandcentral_m4_express/board.c index 7180deb2783c..4ffc5795151a 100644 --- a/ports/atmel-samd/boards/grandcentral_m4_express/board.c +++ b/ports/atmel-samd/boards/grandcentral_m4_express/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/grandcentral_m4_express/mpconfigboard.h b/ports/atmel-samd/boards/grandcentral_m4_express/mpconfigboard.h index 893ff80b181c..c30f0307dc1c 100644 --- a/ports/atmel-samd/boards/grandcentral_m4_express/mpconfigboard.h +++ b/ports/atmel-samd/boards/grandcentral_m4_express/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Grand Central M4 Express" #define MICROPY_HW_MCU_NAME "samd51p20" diff --git a/ports/atmel-samd/boards/grandcentral_m4_express/pins.c b/ports/atmel-samd/boards/grandcentral_m4_express/pins.c index 7641a9b6304e..6bf7b45a7544 100644 --- a/ports/atmel-samd/boards/grandcentral_m4_express/pins.c +++ b/ports/atmel-samd/boards/grandcentral_m4_express/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" diff --git a/ports/atmel-samd/boards/hallowing_m0_express/board.c b/ports/atmel-samd/boards/hallowing_m0_express/board.c index ac27080b7618..c4915f21300b 100644 --- a/ports/atmel-samd/boards/hallowing_m0_express/board.c +++ b/ports/atmel-samd/boards/hallowing_m0_express/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/hallowing_m0_express/mpconfigboard.h b/ports/atmel-samd/boards/hallowing_m0_express/mpconfigboard.h index 9672199a4deb..6645c6ca2d19 100644 --- a/ports/atmel-samd/boards/hallowing_m0_express/mpconfigboard.h +++ b/ports/atmel-samd/boards/hallowing_m0_express/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "HalloWing M0 Express" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/hallowing_m0_express/pins.c b/ports/atmel-samd/boards/hallowing_m0_express/pins.c index 576936a4aa79..43cffa6cbfc6 100644 --- a/ports/atmel-samd/boards/hallowing_m0_express/pins.c +++ b/ports/atmel-samd/boards/hallowing_m0_express/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/hallowing_m4_express/board.c b/ports/atmel-samd/boards/hallowing_m4_express/board.c index 82d8cea619b6..a8237fdd0aa4 100644 --- a/ports/atmel-samd/boards/hallowing_m4_express/board.c +++ b/ports/atmel-samd/boards/hallowing_m4_express/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/atmel-samd/boards/hallowing_m4_express/mpconfigboard.h b/ports/atmel-samd/boards/hallowing_m4_express/mpconfigboard.h index c85c8f40d0ac..d2b946297896 100644 --- a/ports/atmel-samd/boards/hallowing_m4_express/mpconfigboard.h +++ b/ports/atmel-samd/boards/hallowing_m4_express/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Hallowing M4 Express" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/hallowing_m4_express/pins.c b/ports/atmel-samd/boards/hallowing_m4_express/pins.c index 105206ba8e8e..eb3044bb65b7 100644 --- a/ports/atmel-samd/boards/hallowing_m4_express/pins.c +++ b/ports/atmel-samd/boards/hallowing_m4_express/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/atmel-samd/boards/huntercat_nfc/board.c b/ports/atmel-samd/boards/huntercat_nfc/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/huntercat_nfc/board.c +++ b/ports/atmel-samd/boards/huntercat_nfc/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/huntercat_nfc/mpconfigboard.h b/ports/atmel-samd/boards/huntercat_nfc/mpconfigboard.h index 61248c5496ed..5855f2b2bc15 100644 --- a/ports/atmel-samd/boards/huntercat_nfc/mpconfigboard.h +++ b/ports/atmel-samd/boards/huntercat_nfc/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Electronic Cats Hunter Cat NFC" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/huntercat_nfc/pins.c b/ports/atmel-samd/boards/huntercat_nfc/pins.c index ce0b112ede88..4ed56b244be7 100644 --- a/ports/atmel-samd/boards/huntercat_nfc/pins.c +++ b/ports/atmel-samd/boards/huntercat_nfc/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/itsybitsy_m0_express/board.c b/ports/atmel-samd/boards/itsybitsy_m0_express/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/itsybitsy_m0_express/board.c +++ b/ports/atmel-samd/boards/itsybitsy_m0_express/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/itsybitsy_m0_express/mpconfigboard.h b/ports/atmel-samd/boards/itsybitsy_m0_express/mpconfigboard.h index d57479e16411..98689173d30d 100644 --- a/ports/atmel-samd/boards/itsybitsy_m0_express/mpconfigboard.h +++ b/ports/atmel-samd/boards/itsybitsy_m0_express/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit ItsyBitsy M0 Express" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/itsybitsy_m0_express/pins.c b/ports/atmel-samd/boards/itsybitsy_m0_express/pins.c index 848e8a9732fd..ff51363861ca 100644 --- a/ports/atmel-samd/boards/itsybitsy_m0_express/pins.c +++ b/ports/atmel-samd/boards/itsybitsy_m0_express/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/itsybitsy_m4_express/board.c b/ports/atmel-samd/boards/itsybitsy_m4_express/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/itsybitsy_m4_express/board.c +++ b/ports/atmel-samd/boards/itsybitsy_m4_express/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/itsybitsy_m4_express/mpconfigboard.h b/ports/atmel-samd/boards/itsybitsy_m4_express/mpconfigboard.h index c893d614d2d4..9cbe4f2e227e 100644 --- a/ports/atmel-samd/boards/itsybitsy_m4_express/mpconfigboard.h +++ b/ports/atmel-samd/boards/itsybitsy_m4_express/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit ItsyBitsy M4 Express" #define MICROPY_HW_MCU_NAME "samd51g19" diff --git a/ports/atmel-samd/boards/itsybitsy_m4_express/pins.c b/ports/atmel-samd/boards/itsybitsy_m4_express/pins.c index 89cf966b112f..404292a6a1a8 100644 --- a/ports/atmel-samd/boards/itsybitsy_m4_express/pins.c +++ b/ports/atmel-samd/boards/itsybitsy_m4_express/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" // This mapping only includes functional names because pins broken diff --git a/ports/atmel-samd/boards/kicksat-sprite/board.c b/ports/atmel-samd/boards/kicksat-sprite/board.c index b22d8ae36635..c47357b434d1 100644 --- a/ports/atmel-samd/boards/kicksat-sprite/board.c +++ b/ports/atmel-samd/boards/kicksat-sprite/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/kicksat-sprite/mpconfigboard.h b/ports/atmel-samd/boards/kicksat-sprite/mpconfigboard.h index eb7f1c62e30c..2f701784d73b 100644 --- a/ports/atmel-samd/boards/kicksat-sprite/mpconfigboard.h +++ b/ports/atmel-samd/boards/kicksat-sprite/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Sprite_v2b" #define MICROPY_HW_MCU_NAME "samd51G19" diff --git a/ports/atmel-samd/boards/kicksat-sprite/pins.c b/ports/atmel-samd/boards/kicksat-sprite/pins.c index aaf48fd43c10..ea914681eb59 100644 --- a/ports/atmel-samd/boards/kicksat-sprite/pins.c +++ b/ports/atmel-samd/boards/kicksat-sprite/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/loc_ber_m4_base_board/board.c b/ports/atmel-samd/boards/loc_ber_m4_base_board/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/loc_ber_m4_base_board/board.c +++ b/ports/atmel-samd/boards/loc_ber_m4_base_board/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/loc_ber_m4_base_board/mpconfigboard.h b/ports/atmel-samd/boards/loc_ber_m4_base_board/mpconfigboard.h index a15b19aa64b4..2224cf0ceed6 100644 --- a/ports/atmel-samd/boards/loc_ber_m4_base_board/mpconfigboard.h +++ b/ports/atmel-samd/boards/loc_ber_m4_base_board/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "LoC BeR M4 base board" #define MICROPY_HW_MCU_NAME "samd51g19" diff --git a/ports/atmel-samd/boards/loc_ber_m4_base_board/pins.c b/ports/atmel-samd/boards/loc_ber_m4_base_board/pins.c index b9c1034a738e..642823167088 100644 --- a/ports/atmel-samd/boards/loc_ber_m4_base_board/pins.c +++ b/ports/atmel-samd/boards/loc_ber_m4_base_board/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" // This mapping only includes functional names because pins broken diff --git a/ports/atmel-samd/boards/matrixportal_m4/board.c b/ports/atmel-samd/boards/matrixportal_m4/board.c index 65d7297ed9eb..de9174021593 100644 --- a/ports/atmel-samd/boards/matrixportal_m4/board.c +++ b/ports/atmel-samd/boards/matrixportal_m4/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/matrixportal_m4/mpconfigboard.h b/ports/atmel-samd/boards/matrixportal_m4/mpconfigboard.h index 912b986dd01a..b17c51a939a9 100644 --- a/ports/atmel-samd/boards/matrixportal_m4/mpconfigboard.h +++ b/ports/atmel-samd/boards/matrixportal_m4/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Matrix Portal M4" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/matrixportal_m4/pins.c b/ports/atmel-samd/boards/matrixportal_m4/pins.c index 84426bd1bff9..f2748d7f45a4 100644 --- a/ports/atmel-samd/boards/matrixportal_m4/pins.c +++ b/ports/atmel-samd/boards/matrixportal_m4/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" diff --git a/ports/atmel-samd/boards/meowmeow/board.c b/ports/atmel-samd/boards/meowmeow/board.c index a3c19899e806..f64f1a2535c3 100644 --- a/ports/atmel-samd/boards/meowmeow/board.c +++ b/ports/atmel-samd/boards/meowmeow/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Andrés Sabas for Electronic Cats - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Andrés Sabas for Electronic Cats +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/meowmeow/mpconfigboard.h b/ports/atmel-samd/boards/meowmeow/mpconfigboard.h index 008ab5125d82..8b0fceaae0dd 100644 --- a/ports/atmel-samd/boards/meowmeow/mpconfigboard.h +++ b/ports/atmel-samd/boards/meowmeow/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Andrés Sabas for Electronic Cats +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Meow Meow" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/meowmeow/pins.c b/ports/atmel-samd/boards/meowmeow/pins.c index 1c86b3149c92..d92f0d86125e 100644 --- a/ports/atmel-samd/boards/meowmeow/pins.c +++ b/ports/atmel-samd/boards/meowmeow/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Andrés Sabas for Electronic Cats +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/metro_m0_express/board.c b/ports/atmel-samd/boards/metro_m0_express/board.c index f56275c0168d..019e4615653c 100644 --- a/ports/atmel-samd/boards/metro_m0_express/board.c +++ b/ports/atmel-samd/boards/metro_m0_express/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/atmel-samd/boards/metro_m0_express/mpconfigboard.h b/ports/atmel-samd/boards/metro_m0_express/mpconfigboard.h index 8dac0d665fd3..dd7a9dea45de 100644 --- a/ports/atmel-samd/boards/metro_m0_express/mpconfigboard.h +++ b/ports/atmel-samd/boards/metro_m0_express/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Metro M0 Express" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/metro_m0_express/pins.c b/ports/atmel-samd/boards/metro_m0_express/pins.c index d8f970ac3591..8b00c7329e26 100644 --- a/ports/atmel-samd/boards/metro_m0_express/pins.c +++ b/ports/atmel-samd/boards/metro_m0_express/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/metro_m4_airlift_lite/board.c b/ports/atmel-samd/boards/metro_m4_airlift_lite/board.c index 1bba99ac0657..d48264a51fed 100644 --- a/ports/atmel-samd/boards/metro_m4_airlift_lite/board.c +++ b/ports/atmel-samd/boards/metro_m4_airlift_lite/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/atmel-samd/boards/metro_m4_airlift_lite/mpconfigboard.h b/ports/atmel-samd/boards/metro_m4_airlift_lite/mpconfigboard.h index 803fd30526b8..1afa9259cf5a 100644 --- a/ports/atmel-samd/boards/metro_m4_airlift_lite/mpconfigboard.h +++ b/ports/atmel-samd/boards/metro_m4_airlift_lite/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Metro M4 Airlift Lite" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/metro_m4_airlift_lite/pins.c b/ports/atmel-samd/boards/metro_m4_airlift_lite/pins.c index 5c496aa63be1..e52042721e88 100644 --- a/ports/atmel-samd/boards/metro_m4_airlift_lite/pins.c +++ b/ports/atmel-samd/boards/metro_m4_airlift_lite/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" // This mapping only includes functional names because pins broken diff --git a/ports/atmel-samd/boards/metro_m4_express/board.c b/ports/atmel-samd/boards/metro_m4_express/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/metro_m4_express/board.c +++ b/ports/atmel-samd/boards/metro_m4_express/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/metro_m4_express/mpconfigboard.h b/ports/atmel-samd/boards/metro_m4_express/mpconfigboard.h index 3b9ca9666988..c297d16a0a2a 100644 --- a/ports/atmel-samd/boards/metro_m4_express/mpconfigboard.h +++ b/ports/atmel-samd/boards/metro_m4_express/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Metro M4 Express" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/metro_m4_express/pins.c b/ports/atmel-samd/boards/metro_m4_express/pins.c index f7e50f645388..73a36156618b 100644 --- a/ports/atmel-samd/boards/metro_m4_express/pins.c +++ b/ports/atmel-samd/boards/metro_m4_express/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" // This mapping only includes functional names because pins broken diff --git a/ports/atmel-samd/boards/mini_sam_m4/board.c b/ports/atmel-samd/boards/mini_sam_m4/board.c index 1bba99ac0657..d48264a51fed 100644 --- a/ports/atmel-samd/boards/mini_sam_m4/board.c +++ b/ports/atmel-samd/boards/mini_sam_m4/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/atmel-samd/boards/mini_sam_m4/mpconfigboard.h b/ports/atmel-samd/boards/mini_sam_m4/mpconfigboard.h index ac54a36802f2..d16e6ab1bce5 100644 --- a/ports/atmel-samd/boards/mini_sam_m4/mpconfigboard.h +++ b/ports/atmel-samd/boards/mini_sam_m4/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Mini SAM M4" #define MICROPY_HW_MCU_NAME "samd51g19" diff --git a/ports/atmel-samd/boards/mini_sam_m4/pins.c b/ports/atmel-samd/boards/mini_sam_m4/pins.c index 0f7a3adb245a..6edc837a39c1 100644 --- a/ports/atmel-samd/boards/mini_sam_m4/pins.c +++ b/ports/atmel-samd/boards/mini_sam_m4/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" // This mapping only includes functional names because pins broken diff --git a/ports/atmel-samd/boards/monster_m4sk/board.c b/ports/atmel-samd/boards/monster_m4sk/board.c index 34948b6a34b5..264f01d1b7c1 100644 --- a/ports/atmel-samd/boards/monster_m4sk/board.c +++ b/ports/atmel-samd/boards/monster_m4sk/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/atmel-samd/boards/monster_m4sk/mpconfigboard.h b/ports/atmel-samd/boards/monster_m4sk/mpconfigboard.h index 6007edc58aa9..8617a7f577a6 100644 --- a/ports/atmel-samd/boards/monster_m4sk/mpconfigboard.h +++ b/ports/atmel-samd/boards/monster_m4sk/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Monster M4SK" // Board is mislabeled as SAMD51J19. #define MICROPY_HW_MCU_NAME "samd51g19" diff --git a/ports/atmel-samd/boards/monster_m4sk/pins.c b/ports/atmel-samd/boards/monster_m4sk/pins.c index 9f5369c574be..7b91ac0b6ee0 100644 --- a/ports/atmel-samd/boards/monster_m4sk/pins.c +++ b/ports/atmel-samd/boards/monster_m4sk/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/ndgarage_ndbit6/board.c b/ports/atmel-samd/boards/ndgarage_ndbit6/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/ndgarage_ndbit6/board.c +++ b/ports/atmel-samd/boards/ndgarage_ndbit6/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/ndgarage_ndbit6/mpconfigboard.h b/ports/atmel-samd/boards/ndgarage_ndbit6/mpconfigboard.h index dee3565cb1c3..a5ece93ec183 100644 --- a/ports/atmel-samd/boards/ndgarage_ndbit6/mpconfigboard.h +++ b/ports/atmel-samd/boards/ndgarage_ndbit6/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "ndGarage[n°]Bit6:FeatherSnow" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/ndgarage_ndbit6/pins.c b/ports/atmel-samd/boards/ndgarage_ndbit6/pins.c index ed573fde1b2e..f6755dc5bb8c 100644 --- a/ports/atmel-samd/boards/ndgarage_ndbit6/pins.c +++ b/ports/atmel-samd/boards/ndgarage_ndbit6/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/ndgarage_ndbit6_v2/board.c b/ports/atmel-samd/boards/ndgarage_ndbit6_v2/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/ndgarage_ndbit6_v2/board.c +++ b/ports/atmel-samd/boards/ndgarage_ndbit6_v2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/ndgarage_ndbit6_v2/mpconfigboard.h b/ports/atmel-samd/boards/ndgarage_ndbit6_v2/mpconfigboard.h index 7401b256c5fa..4b5ab3c7b699 100644 --- a/ports/atmel-samd/boards/ndgarage_ndbit6_v2/mpconfigboard.h +++ b/ports/atmel-samd/boards/ndgarage_ndbit6_v2/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "ndGarage[n°] Bit6: FeatherSnow-v2" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/ndgarage_ndbit6_v2/pins.c b/ports/atmel-samd/boards/ndgarage_ndbit6_v2/pins.c index e75e6e920823..96a5a0cc2139 100644 --- a/ports/atmel-samd/boards/ndgarage_ndbit6_v2/pins.c +++ b/ports/atmel-samd/boards/ndgarage_ndbit6_v2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/neopixel_trinkey_m0/board.c b/ports/atmel-samd/boards/neopixel_trinkey_m0/board.c index ed5481712916..ed85e4ed4da0 100644 --- a/ports/atmel-samd/boards/neopixel_trinkey_m0/board.c +++ b/ports/atmel-samd/boards/neopixel_trinkey_m0/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "common-hal/microcontroller/Pin.h" diff --git a/ports/atmel-samd/boards/neopixel_trinkey_m0/mpconfigboard.h b/ports/atmel-samd/boards/neopixel_trinkey_m0/mpconfigboard.h index 1eb6fbf3e6bf..cc658bf139e6 100644 --- a/ports/atmel-samd/boards/neopixel_trinkey_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/neopixel_trinkey_m0/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit NeoPixel Trinkey M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/neopixel_trinkey_m0/pins.c b/ports/atmel-samd/boards/neopixel_trinkey_m0/pins.c index b48764518e62..af4edfbd1d77 100644 --- a/ports/atmel-samd/boards/neopixel_trinkey_m0/pins.c +++ b/ports/atmel-samd/boards/neopixel_trinkey_m0/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/nfc_copy_cat/board.c b/ports/atmel-samd/boards/nfc_copy_cat/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/nfc_copy_cat/board.c +++ b/ports/atmel-samd/boards/nfc_copy_cat/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/nfc_copy_cat/mpconfigboard.h b/ports/atmel-samd/boards/nfc_copy_cat/mpconfigboard.h index 697cab8a123b..09e143ce747a 100644 --- a/ports/atmel-samd/boards/nfc_copy_cat/mpconfigboard.h +++ b/ports/atmel-samd/boards/nfc_copy_cat/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Electronic Cats NFC Copy Cat" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/nfc_copy_cat/pins.c b/ports/atmel-samd/boards/nfc_copy_cat/pins.c index cbf25ce4e964..2829e382a44d 100644 --- a/ports/atmel-samd/boards/nfc_copy_cat/pins.c +++ b/ports/atmel-samd/boards/nfc_copy_cat/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/openbook_m4/board.c b/ports/atmel-samd/boards/openbook_m4/board.c index d6911c7a07c3..9ccb634a6f71 100644 --- a/ports/atmel-samd/boards/openbook_m4/board.c +++ b/ports/atmel-samd/boards/openbook_m4/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Joey Castillo - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Joey Castillo +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/atmel-samd/boards/openbook_m4/mpconfigboard.h b/ports/atmel-samd/boards/openbook_m4/mpconfigboard.h index 21463a585127..9a8ea22668e7 100644 --- a/ports/atmel-samd/boards/openbook_m4/mpconfigboard.h +++ b/ports/atmel-samd/boards/openbook_m4/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Joey Castillo +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "The Open Book Feather" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/openbook_m4/pins.c b/ports/atmel-samd/boards/openbook_m4/pins.c index 750c687bb273..c8cdfe351e91 100644 --- a/ports/atmel-samd/boards/openbook_m4/pins.c +++ b/ports/atmel-samd/boards/openbook_m4/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Joey Castillo +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/p1am_200/board.c b/ports/atmel-samd/boards/p1am_200/board.c index a3caa046a4d8..faed096faf80 100644 --- a/ports/atmel-samd/boards/p1am_200/board.c +++ b/ports/atmel-samd/boards/p1am_200/board.c @@ -1,27 +1,7 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/p1am_200/mpconfigboard.h b/ports/atmel-samd/boards/p1am_200/mpconfigboard.h index 87bff7b2d0a6..6c272126fa2b 100644 --- a/ports/atmel-samd/boards/p1am_200/mpconfigboard.h +++ b/ports/atmel-samd/boards/p1am_200/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "P1AM-200" #define MICROPY_HW_MCU_NAME "samd51p20" diff --git a/ports/atmel-samd/boards/p1am_200/pins.c b/ports/atmel-samd/boards/p1am_200/pins.c index f1cab61c1b85..d7dbaee64cbc 100644 --- a/ports/atmel-samd/boards/p1am_200/pins.c +++ b/ports/atmel-samd/boards/p1am_200/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" // This mapping only includes functional names because pins broken diff --git a/ports/atmel-samd/boards/pewpew10/board.c b/ports/atmel-samd/boards/pewpew10/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/pewpew10/board.c +++ b/ports/atmel-samd/boards/pewpew10/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/pewpew10/mpconfigboard.h b/ports/atmel-samd/boards/pewpew10/mpconfigboard.h index 661c578f1e0d..ad9d7d05523a 100644 --- a/ports/atmel-samd/boards/pewpew10/mpconfigboard.h +++ b/ports/atmel-samd/boards/pewpew10/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "PewPew 10.2" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/pewpew10/pins.c b/ports/atmel-samd/boards/pewpew10/pins.c index fd36aba00fdb..846b0c85dafb 100644 --- a/ports/atmel-samd/boards/pewpew10/pins.c +++ b/ports/atmel-samd/boards/pewpew10/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/pewpew_lcd/board.c b/ports/atmel-samd/boards/pewpew_lcd/board.c index 3e1a1c1cf62c..bf174481a61a 100644 --- a/ports/atmel-samd/boards/pewpew_lcd/board.c +++ b/ports/atmel-samd/boards/pewpew_lcd/board.c @@ -1,29 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries, 2020 Radomir - * Dopieralski - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries, 2020 Radomir +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "shared-bindings/board/__init__.h" diff --git a/ports/atmel-samd/boards/pewpew_lcd/mpconfigboard.h b/ports/atmel-samd/boards/pewpew_lcd/mpconfigboard.h index 4123e7a135f2..741007099589 100644 --- a/ports/atmel-samd/boards/pewpew_lcd/mpconfigboard.h +++ b/ports/atmel-samd/boards/pewpew_lcd/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries, 2020 Radomir +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "PewPew LCD" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/pewpew_lcd/pins.c b/ports/atmel-samd/boards/pewpew_lcd/pins.c index 2b6057d39743..36d92a39bc6e 100644 --- a/ports/atmel-samd/boards/pewpew_lcd/pins.c +++ b/ports/atmel-samd/boards/pewpew_lcd/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries, 2020 Radomir +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/atmel-samd/boards/pewpew_m4/board.c b/ports/atmel-samd/boards/pewpew_m4/board.c index ba37a9ddcea8..30ccf86ce5c6 100644 --- a/ports/atmel-samd/boards/pewpew_m4/board.c +++ b/ports/atmel-samd/boards/pewpew_m4/board.c @@ -1,29 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries, 2020 Radomir - * Dopieralski - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries, 2020 Radomir +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/atmel-samd/boards/pewpew_m4/mpconfigboard.h b/ports/atmel-samd/boards/pewpew_m4/mpconfigboard.h index 3475f2e47c54..4dd4aa170f27 100644 --- a/ports/atmel-samd/boards/pewpew_m4/mpconfigboard.h +++ b/ports/atmel-samd/boards/pewpew_m4/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries, 2020 Radomir +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "PewPew M4" #define MICROPY_HW_MCU_NAME "samd51g19" diff --git a/ports/atmel-samd/boards/pewpew_m4/pins.c b/ports/atmel-samd/boards/pewpew_m4/pins.c index ad0685e89625..d5cc79305dcc 100644 --- a/ports/atmel-samd/boards/pewpew_m4/pins.c +++ b/ports/atmel-samd/boards/pewpew_m4/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries, 2020 Radomir +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/atmel-samd/boards/picoplanet/board.c b/ports/atmel-samd/boards/picoplanet/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/picoplanet/board.c +++ b/ports/atmel-samd/boards/picoplanet/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/picoplanet/mpconfigboard.h b/ports/atmel-samd/boards/picoplanet/mpconfigboard.h index 1f0636eb9a3f..072177256c9e 100644 --- a/ports/atmel-samd/boards/picoplanet/mpconfigboard.h +++ b/ports/atmel-samd/boards/picoplanet/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "PicoPlanet" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/picoplanet/pins.c b/ports/atmel-samd/boards/picoplanet/pins.c index 1691063fc9ff..745a481962ad 100644 --- a/ports/atmel-samd/boards/picoplanet/pins.c +++ b/ports/atmel-samd/boards/picoplanet/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/pybadge/board.c b/ports/atmel-samd/boards/pybadge/board.c index 8314f354a296..545918374e27 100644 --- a/ports/atmel-samd/boards/pybadge/board.c +++ b/ports/atmel-samd/boards/pybadge/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/atmel-samd/boards/pybadge/mpconfigboard.h b/ports/atmel-samd/boards/pybadge/mpconfigboard.h index 468ee2b3e005..30139c3e0a4c 100644 --- a/ports/atmel-samd/boards/pybadge/mpconfigboard.h +++ b/ports/atmel-samd/boards/pybadge/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Pybadge" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/pybadge/pins.c b/ports/atmel-samd/boards/pybadge/pins.c index 49a48447a638..ba5902a57d74 100644 --- a/ports/atmel-samd/boards/pybadge/pins.c +++ b/ports/atmel-samd/boards/pybadge/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/pycubed/board.c b/ports/atmel-samd/boards/pycubed/board.c index f0e84103e2ef..7589900314ab 100644 --- a/ports/atmel-samd/boards/pycubed/board.c +++ b/ports/atmel-samd/boards/pycubed/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/atmel-samd/boards/pycubed/mpconfigboard.h b/ports/atmel-samd/boards/pycubed/mpconfigboard.h index 2024b242a7e3..d0c32239e028 100644 --- a/ports/atmel-samd/boards/pycubed/mpconfigboard.h +++ b/ports/atmel-samd/boards/pycubed/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "PyCubedv04" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/pycubed/pins.c b/ports/atmel-samd/boards/pycubed/pins.c index 8beb8d0cd6a3..cfb40b06b43e 100644 --- a/ports/atmel-samd/boards/pycubed/pins.c +++ b/ports/atmel-samd/boards/pycubed/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/pycubed_mram/board.c b/ports/atmel-samd/boards/pycubed_mram/board.c index f0e84103e2ef..7589900314ab 100644 --- a/ports/atmel-samd/boards/pycubed_mram/board.c +++ b/ports/atmel-samd/boards/pycubed_mram/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/atmel-samd/boards/pycubed_mram/mpconfigboard.h b/ports/atmel-samd/boards/pycubed_mram/mpconfigboard.h index 284fd36d1fa3..f35a147e4f92 100644 --- a/ports/atmel-samd/boards/pycubed_mram/mpconfigboard.h +++ b/ports/atmel-samd/boards/pycubed_mram/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "PyCubedv04-MRAM" #define MICROPY_HW_MCU_NAME "samd51j19" #define CIRCUITPY_MCU_FAMILY samd51 diff --git a/ports/atmel-samd/boards/pycubed_mram/pins.c b/ports/atmel-samd/boards/pycubed_mram/pins.c index 8beb8d0cd6a3..cfb40b06b43e 100644 --- a/ports/atmel-samd/boards/pycubed_mram/pins.c +++ b/ports/atmel-samd/boards/pycubed_mram/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/pycubed_mram_v05/board.c b/ports/atmel-samd/boards/pycubed_mram_v05/board.c index f0e84103e2ef..7589900314ab 100644 --- a/ports/atmel-samd/boards/pycubed_mram_v05/board.c +++ b/ports/atmel-samd/boards/pycubed_mram_v05/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/atmel-samd/boards/pycubed_mram_v05/mpconfigboard.h b/ports/atmel-samd/boards/pycubed_mram_v05/mpconfigboard.h index 8e0a2ec2d07b..98c307a107ad 100644 --- a/ports/atmel-samd/boards/pycubed_mram_v05/mpconfigboard.h +++ b/ports/atmel-samd/boards/pycubed_mram_v05/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "PyCubedv05-MRAM" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/pycubed_mram_v05/pins.c b/ports/atmel-samd/boards/pycubed_mram_v05/pins.c index ffd4a3864027..473e2e52e496 100644 --- a/ports/atmel-samd/boards/pycubed_mram_v05/pins.c +++ b/ports/atmel-samd/boards/pycubed_mram_v05/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/pycubed_v05/board.c b/ports/atmel-samd/boards/pycubed_v05/board.c index f0e84103e2ef..7589900314ab 100644 --- a/ports/atmel-samd/boards/pycubed_v05/board.c +++ b/ports/atmel-samd/boards/pycubed_v05/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/atmel-samd/boards/pycubed_v05/mpconfigboard.h b/ports/atmel-samd/boards/pycubed_v05/mpconfigboard.h index 4cab70365fc8..7a699c7da61b 100644 --- a/ports/atmel-samd/boards/pycubed_v05/mpconfigboard.h +++ b/ports/atmel-samd/boards/pycubed_v05/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "PyCubedv05" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/pycubed_v05/pins.c b/ports/atmel-samd/boards/pycubed_v05/pins.c index 9cf8da2e7402..f513523fc2fb 100644 --- a/ports/atmel-samd/boards/pycubed_v05/pins.c +++ b/ports/atmel-samd/boards/pycubed_v05/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/pygamer/board.c b/ports/atmel-samd/boards/pygamer/board.c index 746298f578fe..91c389bd74f8 100644 --- a/ports/atmel-samd/boards/pygamer/board.c +++ b/ports/atmel-samd/boards/pygamer/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/atmel-samd/boards/pygamer/mpconfigboard.h b/ports/atmel-samd/boards/pygamer/mpconfigboard.h index bfe41988e42a..338c7c4bcbbe 100644 --- a/ports/atmel-samd/boards/pygamer/mpconfigboard.h +++ b/ports/atmel-samd/boards/pygamer/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit PyGamer" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/pygamer/pins.c b/ports/atmel-samd/boards/pygamer/pins.c index 191f8a7c6b3d..959be3aca8aa 100644 --- a/ports/atmel-samd/boards/pygamer/pins.c +++ b/ports/atmel-samd/boards/pygamer/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/pyportal/board.c b/ports/atmel-samd/boards/pyportal/board.c index 4080d703b834..78741cdfe607 100644 --- a/ports/atmel-samd/boards/pyportal/board.c +++ b/ports/atmel-samd/boards/pyportal/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/atmel-samd/boards/pyportal/mpconfigboard.h b/ports/atmel-samd/boards/pyportal/mpconfigboard.h index 6cd9290af00b..8257328a8d4c 100644 --- a/ports/atmel-samd/boards/pyportal/mpconfigboard.h +++ b/ports/atmel-samd/boards/pyportal/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit PyPortal" #define MICROPY_HW_MCU_NAME "samd51j20" diff --git a/ports/atmel-samd/boards/pyportal/pins.c b/ports/atmel-samd/boards/pyportal/pins.c index bdff2358ba3d..f502613c04d8 100644 --- a/ports/atmel-samd/boards/pyportal/pins.c +++ b/ports/atmel-samd/boards/pyportal/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/pyportal_titano/board.c b/ports/atmel-samd/boards/pyportal_titano/board.c index 245b8b9dd8f3..118e103292c2 100644 --- a/ports/atmel-samd/boards/pyportal_titano/board.c +++ b/ports/atmel-samd/boards/pyportal_titano/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/atmel-samd/boards/pyportal_titano/mpconfigboard.h b/ports/atmel-samd/boards/pyportal_titano/mpconfigboard.h index 5b7408d6ec7a..012b6dfa89ff 100644 --- a/ports/atmel-samd/boards/pyportal_titano/mpconfigboard.h +++ b/ports/atmel-samd/boards/pyportal_titano/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit PyPortal Titano" #define MICROPY_HW_MCU_NAME "samd51j20" diff --git a/ports/atmel-samd/boards/pyportal_titano/pins.c b/ports/atmel-samd/boards/pyportal_titano/pins.c index bdff2358ba3d..f502613c04d8 100644 --- a/ports/atmel-samd/boards/pyportal_titano/pins.c +++ b/ports/atmel-samd/boards/pyportal_titano/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/pyruler/board.c b/ports/atmel-samd/boards/pyruler/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/pyruler/board.c +++ b/ports/atmel-samd/boards/pyruler/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/pyruler/mpconfigboard.h b/ports/atmel-samd/boards/pyruler/mpconfigboard.h index d7c26364f8da..55e066d1e385 100644 --- a/ports/atmel-samd/boards/pyruler/mpconfigboard.h +++ b/ports/atmel-samd/boards/pyruler/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit PyRuler" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/pyruler/pins.c b/ports/atmel-samd/boards/pyruler/pins.c index a607af30f99a..af78aa245b0f 100644 --- a/ports/atmel-samd/boards/pyruler/pins.c +++ b/ports/atmel-samd/boards/pyruler/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/qtpy_m0/board.c b/ports/atmel-samd/boards/qtpy_m0/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/qtpy_m0/board.c +++ b/ports/atmel-samd/boards/qtpy_m0/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/qtpy_m0/mpconfigboard.h b/ports/atmel-samd/boards/qtpy_m0/mpconfigboard.h index d03ce51d1535..4326ad795640 100644 --- a/ports/atmel-samd/boards/qtpy_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/qtpy_m0/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit QT Py M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/qtpy_m0/pins.c b/ports/atmel-samd/boards/qtpy_m0/pins.c index 477fead9ca2e..4618ed5108fe 100644 --- a/ports/atmel-samd/boards/qtpy_m0/pins.c +++ b/ports/atmel-samd/boards/qtpy_m0/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/qtpy_m0_haxpress/board.c b/ports/atmel-samd/boards/qtpy_m0_haxpress/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/qtpy_m0_haxpress/board.c +++ b/ports/atmel-samd/boards/qtpy_m0_haxpress/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/qtpy_m0_haxpress/mpconfigboard.h b/ports/atmel-samd/boards/qtpy_m0_haxpress/mpconfigboard.h index 569fe1264a01..36eec93ffb0b 100644 --- a/ports/atmel-samd/boards/qtpy_m0_haxpress/mpconfigboard.h +++ b/ports/atmel-samd/boards/qtpy_m0_haxpress/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit QT Py M0 Haxpress" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/qtpy_m0_haxpress/pins.c b/ports/atmel-samd/boards/qtpy_m0_haxpress/pins.c index 477fead9ca2e..4618ed5108fe 100644 --- a/ports/atmel-samd/boards/qtpy_m0_haxpress/pins.c +++ b/ports/atmel-samd/boards/qtpy_m0_haxpress/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/robohatmm1_m4/board.c b/ports/atmel-samd/boards/robohatmm1_m4/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/robohatmm1_m4/board.c +++ b/ports/atmel-samd/boards/robohatmm1_m4/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/robohatmm1_m4/mpconfigboard.h b/ports/atmel-samd/boards/robohatmm1_m4/mpconfigboard.h index 90fbcd9b041f..1a394ee30c56 100644 --- a/ports/atmel-samd/boards/robohatmm1_m4/mpconfigboard.h +++ b/ports/atmel-samd/boards/robohatmm1_m4/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Robo HAT MM1 M4" #define MICROPY_HW_MCU_NAME "samd51g19" diff --git a/ports/atmel-samd/boards/robohatmm1_m4/pins.c b/ports/atmel-samd/boards/robohatmm1_m4/pins.c index f56c0ed8a81f..793aa352e0c4 100644 --- a/ports/atmel-samd/boards/robohatmm1_m4/pins.c +++ b/ports/atmel-samd/boards/robohatmm1_m4/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" // Version 2.4 STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/sam32/board.c b/ports/atmel-samd/boards/sam32/board.c index 106159ae4d62..74bc55c85754 100644 --- a/ports/atmel-samd/boards/sam32/board.c +++ b/ports/atmel-samd/boards/sam32/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/atmel-samd/boards/sam32/mpconfigboard.h b/ports/atmel-samd/boards/sam32/mpconfigboard.h index 6c4cdec76810..406e8046b90a 100644 --- a/ports/atmel-samd/boards/sam32/mpconfigboard.h +++ b/ports/atmel-samd/boards/sam32/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "SAM32v26" #define MICROPY_HW_MCU_NAME "samd51j20" #define CIRCUITPY_MCU_FAMILY samd51 diff --git a/ports/atmel-samd/boards/sam32/pins.c b/ports/atmel-samd/boards/sam32/pins.c index 33abb0d7aaf2..160c9a10775d 100644 --- a/ports/atmel-samd/boards/sam32/pins.c +++ b/ports/atmel-samd/boards/sam32/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/same54_xplained/board.c b/ports/atmel-samd/boards/same54_xplained/board.c index 7180deb2783c..4ffc5795151a 100644 --- a/ports/atmel-samd/boards/same54_xplained/board.c +++ b/ports/atmel-samd/boards/same54_xplained/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/same54_xplained/mpconfigboard.h b/ports/atmel-samd/boards/same54_xplained/mpconfigboard.h index 766821f72e10..0cc7cd25cd29 100644 --- a/ports/atmel-samd/boards/same54_xplained/mpconfigboard.h +++ b/ports/atmel-samd/boards/same54_xplained/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "SAM E54 Xplained Pro" #define MICROPY_HW_MCU_NAME "same54p20" diff --git a/ports/atmel-samd/boards/same54_xplained/pins.c b/ports/atmel-samd/boards/same54_xplained/pins.c index 8df2ec5371b3..25a3f5fad101 100644 --- a/ports/atmel-samd/boards/same54_xplained/pins.c +++ b/ports/atmel-samd/boards/same54_xplained/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" diff --git a/ports/atmel-samd/boards/seeeduino_wio_terminal/board.c b/ports/atmel-samd/boards/seeeduino_wio_terminal/board.c index a4e563017a58..6390c1def5ed 100644 --- a/ports/atmel-samd/boards/seeeduino_wio_terminal/board.c +++ b/ports/atmel-samd/boards/seeeduino_wio_terminal/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/atmel-samd/boards/seeeduino_wio_terminal/mpconfigboard.h b/ports/atmel-samd/boards/seeeduino_wio_terminal/mpconfigboard.h index 9743b018d1d2..7d70cb5930ad 100644 --- a/ports/atmel-samd/boards/seeeduino_wio_terminal/mpconfigboard.h +++ b/ports/atmel-samd/boards/seeeduino_wio_terminal/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Seeeduino Wio Terminal" #define MICROPY_HW_MCU_NAME "samd51p19" diff --git a/ports/atmel-samd/boards/seeeduino_wio_terminal/pins.c b/ports/atmel-samd/boards/seeeduino_wio_terminal/pins.c index 90daa8df005d..e45e2dd55778 100644 --- a/ports/atmel-samd/boards/seeeduino_wio_terminal/pins.c +++ b/ports/atmel-samd/boards/seeeduino_wio_terminal/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/atmel-samd/boards/seeeduino_xiao/board.c b/ports/atmel-samd/boards/seeeduino_xiao/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/seeeduino_xiao/board.c +++ b/ports/atmel-samd/boards/seeeduino_xiao/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/seeeduino_xiao/mpconfigboard.h b/ports/atmel-samd/boards/seeeduino_xiao/mpconfigboard.h index 7eca910a37eb..fa9cd3d8407e 100644 --- a/ports/atmel-samd/boards/seeeduino_xiao/mpconfigboard.h +++ b/ports/atmel-samd/boards/seeeduino_xiao/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Seeeduino XIAO" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/seeeduino_xiao/pins.c b/ports/atmel-samd/boards/seeeduino_xiao/pins.c index b5a43f022b41..4da8ef047350 100644 --- a/ports/atmel-samd/boards/seeeduino_xiao/pins.c +++ b/ports/atmel-samd/boards/seeeduino_xiao/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/seeeduino_xiao_kb/board.c b/ports/atmel-samd/boards/seeeduino_xiao_kb/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/seeeduino_xiao_kb/board.c +++ b/ports/atmel-samd/boards/seeeduino_xiao_kb/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/seeeduino_xiao_kb/mpconfigboard.h b/ports/atmel-samd/boards/seeeduino_xiao_kb/mpconfigboard.h index 85a3ec36c039..070bc9aae06b 100644 --- a/ports/atmel-samd/boards/seeeduino_xiao_kb/mpconfigboard.h +++ b/ports/atmel-samd/boards/seeeduino_xiao_kb/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Seeeduino XIAO KB" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/seeeduino_xiao_kb/pins.c b/ports/atmel-samd/boards/seeeduino_xiao_kb/pins.c index b5a43f022b41..4da8ef047350 100644 --- a/ports/atmel-samd/boards/seeeduino_xiao_kb/pins.c +++ b/ports/atmel-samd/boards/seeeduino_xiao_kb/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/sensebox_mcu/board.c b/ports/atmel-samd/boards/sensebox_mcu/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/sensebox_mcu/board.c +++ b/ports/atmel-samd/boards/sensebox_mcu/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/sensebox_mcu/mpconfigboard.h b/ports/atmel-samd/boards/sensebox_mcu/mpconfigboard.h index 32a7134b094c..d18b7f561dcc 100644 --- a/ports/atmel-samd/boards/sensebox_mcu/mpconfigboard.h +++ b/ports/atmel-samd/boards/sensebox_mcu/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "senseBox MCU" #define MICROPY_HW_MCU_NAME "senseBox" diff --git a/ports/atmel-samd/boards/sensebox_mcu/pins.c b/ports/atmel-samd/boards/sensebox_mcu/pins.c index 1f8633b177b7..6a498ef34c42 100644 --- a/ports/atmel-samd/boards/sensebox_mcu/pins.c +++ b/ports/atmel-samd/boards/sensebox_mcu/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/serpente/board.c b/ports/atmel-samd/boards/serpente/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/serpente/board.c +++ b/ports/atmel-samd/boards/serpente/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/serpente/mpconfigboard.h b/ports/atmel-samd/boards/serpente/mpconfigboard.h index 5ade0c50c1c2..cd38a8fbc3b0 100644 --- a/ports/atmel-samd/boards/serpente/mpconfigboard.h +++ b/ports/atmel-samd/boards/serpente/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Serpente" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/serpente/pins.c b/ports/atmel-samd/boards/serpente/pins.c index 96d566e7a30b..3158f5964c9c 100644 --- a/ports/atmel-samd/boards/serpente/pins.c +++ b/ports/atmel-samd/boards/serpente/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/shirtty/board.c b/ports/atmel-samd/boards/shirtty/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/shirtty/board.c +++ b/ports/atmel-samd/boards/shirtty/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/shirtty/mpconfigboard.h b/ports/atmel-samd/boards/shirtty/mpconfigboard.h index 184584112ef5..b0a52708d4ab 100644 --- a/ports/atmel-samd/boards/shirtty/mpconfigboard.h +++ b/ports/atmel-samd/boards/shirtty/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "@sarfata shIRtty" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/shirtty/pins.c b/ports/atmel-samd/boards/shirtty/pins.c index 4ed0d37c67a3..0c3f599cac5c 100644 --- a/ports/atmel-samd/boards/shirtty/pins.c +++ b/ports/atmel-samd/boards/shirtty/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/silicognition-m4-shim/board.c b/ports/atmel-samd/boards/silicognition-m4-shim/board.c index f888faa2af78..1732abc687e3 100644 --- a/ports/atmel-samd/boards/silicognition-m4-shim/board.c +++ b/ports/atmel-samd/boards/silicognition-m4-shim/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/silicognition-m4-shim/mpconfigboard.h b/ports/atmel-samd/boards/silicognition-m4-shim/mpconfigboard.h index faf689b911ab..1c736c97731d 100644 --- a/ports/atmel-samd/boards/silicognition-m4-shim/mpconfigboard.h +++ b/ports/atmel-samd/boards/silicognition-m4-shim/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Silicognition LLC M4-Shim" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/silicognition-m4-shim/pins.c b/ports/atmel-samd/boards/silicognition-m4-shim/pins.c index 4753b42a8182..e593c6c45316 100644 --- a/ports/atmel-samd/boards/silicognition-m4-shim/pins.c +++ b/ports/atmel-samd/boards/silicognition-m4-shim/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/snekboard/board.c b/ports/atmel-samd/boards/snekboard/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/snekboard/board.c +++ b/ports/atmel-samd/boards/snekboard/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/snekboard/mpconfigboard.h b/ports/atmel-samd/boards/snekboard/mpconfigboard.h index aa05b2f94bb0..783a0525d278 100644 --- a/ports/atmel-samd/boards/snekboard/mpconfigboard.h +++ b/ports/atmel-samd/boards/snekboard/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "keithp.com snekboard" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/snekboard/pins.c b/ports/atmel-samd/boards/snekboard/pins.c index 46269bf7d35e..2c07e14c4d78 100644 --- a/ports/atmel-samd/boards/snekboard/pins.c +++ b/ports/atmel-samd/boards/snekboard/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/sparkfun_lumidrive/board.c b/ports/atmel-samd/boards/sparkfun_lumidrive/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/sparkfun_lumidrive/board.c +++ b/ports/atmel-samd/boards/sparkfun_lumidrive/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/sparkfun_lumidrive/mpconfigboard.h b/ports/atmel-samd/boards/sparkfun_lumidrive/mpconfigboard.h index 8d442c604999..3e8cd15ddf5d 100644 --- a/ports/atmel-samd/boards/sparkfun_lumidrive/mpconfigboard.h +++ b/ports/atmel-samd/boards/sparkfun_lumidrive/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "SparkFun LUMIDrive" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/sparkfun_lumidrive/pins.c b/ports/atmel-samd/boards/sparkfun_lumidrive/pins.c index 9557abac9325..3494fb20d742 100755 --- a/ports/atmel-samd/boards/sparkfun_lumidrive/pins.c +++ b/ports/atmel-samd/boards/sparkfun_lumidrive/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/sparkfun_qwiic_micro_no_flash/board.c b/ports/atmel-samd/boards/sparkfun_qwiic_micro_no_flash/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/sparkfun_qwiic_micro_no_flash/board.c +++ b/ports/atmel-samd/boards/sparkfun_qwiic_micro_no_flash/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/sparkfun_qwiic_micro_no_flash/mpconfigboard.h b/ports/atmel-samd/boards/sparkfun_qwiic_micro_no_flash/mpconfigboard.h index 530b53054c42..2ef31edf76a9 100644 --- a/ports/atmel-samd/boards/sparkfun_qwiic_micro_no_flash/mpconfigboard.h +++ b/ports/atmel-samd/boards/sparkfun_qwiic_micro_no_flash/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "SparkFun Qwiic Micro" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/sparkfun_qwiic_micro_no_flash/pins.c b/ports/atmel-samd/boards/sparkfun_qwiic_micro_no_flash/pins.c index af365cdaa38c..804514ddf24f 100644 --- a/ports/atmel-samd/boards/sparkfun_qwiic_micro_no_flash/pins.c +++ b/ports/atmel-samd/boards/sparkfun_qwiic_micro_no_flash/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/sparkfun_qwiic_micro_with_flash/board.c b/ports/atmel-samd/boards/sparkfun_qwiic_micro_with_flash/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/sparkfun_qwiic_micro_with_flash/board.c +++ b/ports/atmel-samd/boards/sparkfun_qwiic_micro_with_flash/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/sparkfun_qwiic_micro_with_flash/mpconfigboard.h b/ports/atmel-samd/boards/sparkfun_qwiic_micro_with_flash/mpconfigboard.h index 6afaade5f191..054b7bcd3bfc 100644 --- a/ports/atmel-samd/boards/sparkfun_qwiic_micro_with_flash/mpconfigboard.h +++ b/ports/atmel-samd/boards/sparkfun_qwiic_micro_with_flash/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "SparkFun Qwiic Micro" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/sparkfun_qwiic_micro_with_flash/pins.c b/ports/atmel-samd/boards/sparkfun_qwiic_micro_with_flash/pins.c index af365cdaa38c..804514ddf24f 100644 --- a/ports/atmel-samd/boards/sparkfun_qwiic_micro_with_flash/pins.c +++ b/ports/atmel-samd/boards/sparkfun_qwiic_micro_with_flash/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/sparkfun_redboard_turbo/board.c b/ports/atmel-samd/boards/sparkfun_redboard_turbo/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/sparkfun_redboard_turbo/board.c +++ b/ports/atmel-samd/boards/sparkfun_redboard_turbo/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/sparkfun_redboard_turbo/mpconfigboard.h b/ports/atmel-samd/boards/sparkfun_redboard_turbo/mpconfigboard.h index 6a3f860cccd9..ee8781e47f6d 100644 --- a/ports/atmel-samd/boards/sparkfun_redboard_turbo/mpconfigboard.h +++ b/ports/atmel-samd/boards/sparkfun_redboard_turbo/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "SparkFun RedBoard Turbo" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/sparkfun_redboard_turbo/pins.c b/ports/atmel-samd/boards/sparkfun_redboard_turbo/pins.c index 8b321e11cfa1..00784c16ce4a 100755 --- a/ports/atmel-samd/boards/sparkfun_redboard_turbo/pins.c +++ b/ports/atmel-samd/boards/sparkfun_redboard_turbo/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/sparkfun_samd21_dev/board.c b/ports/atmel-samd/boards/sparkfun_samd21_dev/board.c index 1bba99ac0657..d48264a51fed 100644 --- a/ports/atmel-samd/boards/sparkfun_samd21_dev/board.c +++ b/ports/atmel-samd/boards/sparkfun_samd21_dev/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/atmel-samd/boards/sparkfun_samd21_dev/mpconfigboard.h b/ports/atmel-samd/boards/sparkfun_samd21_dev/mpconfigboard.h index fd7ccc473c6c..5bb61b530022 100644 --- a/ports/atmel-samd/boards/sparkfun_samd21_dev/mpconfigboard.h +++ b/ports/atmel-samd/boards/sparkfun_samd21_dev/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "SparkFun SAMD21 Dev Breakout" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/sparkfun_samd21_dev/pins.c b/ports/atmel-samd/boards/sparkfun_samd21_dev/pins.c index d4c3ca6bb595..1e6898b5f45c 100644 --- a/ports/atmel-samd/boards/sparkfun_samd21_dev/pins.c +++ b/ports/atmel-samd/boards/sparkfun_samd21_dev/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/sparkfun_samd21_mini/board.c b/ports/atmel-samd/boards/sparkfun_samd21_mini/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/sparkfun_samd21_mini/board.c +++ b/ports/atmel-samd/boards/sparkfun_samd21_mini/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/sparkfun_samd21_mini/mpconfigboard.h b/ports/atmel-samd/boards/sparkfun_samd21_mini/mpconfigboard.h index b4e65d15ccf7..e396bcd0b5fb 100644 --- a/ports/atmel-samd/boards/sparkfun_samd21_mini/mpconfigboard.h +++ b/ports/atmel-samd/boards/sparkfun_samd21_mini/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "SparkFun SAMD21 Mini Breakout" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/sparkfun_samd21_mini/pins.c b/ports/atmel-samd/boards/sparkfun_samd21_mini/pins.c index 5808af6e07b3..ed068ed1bacb 100644 --- a/ports/atmel-samd/boards/sparkfun_samd21_mini/pins.c +++ b/ports/atmel-samd/boards/sparkfun_samd21_mini/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/sparkfun_samd51_micromod/board.c b/ports/atmel-samd/boards/sparkfun_samd51_micromod/board.c index b079679d3388..a8153347defb 100644 --- a/ports/atmel-samd/boards/sparkfun_samd51_micromod/board.c +++ b/ports/atmel-samd/boards/sparkfun_samd51_micromod/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/atmel-samd/boards/sparkfun_samd51_micromod/mpconfigboard.h b/ports/atmel-samd/boards/sparkfun_samd51_micromod/mpconfigboard.h index 15fbcc45de56..984b3dfb8279 100644 --- a/ports/atmel-samd/boards/sparkfun_samd51_micromod/mpconfigboard.h +++ b/ports/atmel-samd/boards/sparkfun_samd51_micromod/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "SparkFun MicroMod SAMD51 Processor" #define MICROPY_HW_MCU_NAME "samd51j20" diff --git a/ports/atmel-samd/boards/sparkfun_samd51_micromod/pins.c b/ports/atmel-samd/boards/sparkfun_samd51_micromod/pins.c index e39272b41e15..d79b00223074 100644 --- a/ports/atmel-samd/boards/sparkfun_samd51_micromod/pins.c +++ b/ports/atmel-samd/boards/sparkfun_samd51_micromod/pins.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2021 Chris Wilson - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2021 Chris Wilson +// +// SPDX-License-Identifier: MIT #include "shared-bindings/board/__init__.h" diff --git a/ports/atmel-samd/boards/sparkfun_samd51_thing_plus/board.c b/ports/atmel-samd/boards/sparkfun_samd51_thing_plus/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/sparkfun_samd51_thing_plus/board.c +++ b/ports/atmel-samd/boards/sparkfun_samd51_thing_plus/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/sparkfun_samd51_thing_plus/mpconfigboard.h b/ports/atmel-samd/boards/sparkfun_samd51_thing_plus/mpconfigboard.h index 5d405860c2b2..5567750b790f 100644 --- a/ports/atmel-samd/boards/sparkfun_samd51_thing_plus/mpconfigboard.h +++ b/ports/atmel-samd/boards/sparkfun_samd51_thing_plus/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "SparkFun Thing Plus - SAMD51" #define MICROPY_HW_MCU_NAME "samd51j20" diff --git a/ports/atmel-samd/boards/sparkfun_samd51_thing_plus/pins.c b/ports/atmel-samd/boards/sparkfun_samd51_thing_plus/pins.c index 3e7a2b5548e0..cca6a4881749 100644 --- a/ports/atmel-samd/boards/sparkfun_samd51_thing_plus/pins.c +++ b/ports/atmel-samd/boards/sparkfun_samd51_thing_plus/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/stackrduino_m0_pro/board.c b/ports/atmel-samd/boards/stackrduino_m0_pro/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/stackrduino_m0_pro/board.c +++ b/ports/atmel-samd/boards/stackrduino_m0_pro/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/stackrduino_m0_pro/mpconfigboard.h b/ports/atmel-samd/boards/stackrduino_m0_pro/mpconfigboard.h index b4eb4233e716..1bd131b83ef4 100644 --- a/ports/atmel-samd/boards/stackrduino_m0_pro/mpconfigboard.h +++ b/ports/atmel-samd/boards/stackrduino_m0_pro/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "StackRduino M0 PRO" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/stackrduino_m0_pro/pins.c b/ports/atmel-samd/boards/stackrduino_m0_pro/pins.c index a8162309e041..163697b730a5 100644 --- a/ports/atmel-samd/boards/stackrduino_m0_pro/pins.c +++ b/ports/atmel-samd/boards/stackrduino_m0_pro/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/stringcar_m0_express/board.c b/ports/atmel-samd/boards/stringcar_m0_express/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/stringcar_m0_express/board.c +++ b/ports/atmel-samd/boards/stringcar_m0_express/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/stringcar_m0_express/mpconfigboard.h b/ports/atmel-samd/boards/stringcar_m0_express/mpconfigboard.h index 51acc0ba6816..af1715b46717 100644 --- a/ports/atmel-samd/boards/stringcar_m0_express/mpconfigboard.h +++ b/ports/atmel-samd/boards/stringcar_m0_express/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Cedar Grove StringCar M0 Express" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/stringcar_m0_express/pins.c b/ports/atmel-samd/boards/stringcar_m0_express/pins.c index 3e2a74786fe6..bb650ea86d9c 100644 --- a/ports/atmel-samd/boards/stringcar_m0_express/pins.c +++ b/ports/atmel-samd/boards/stringcar_m0_express/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/trellis_m4_express/board.c b/ports/atmel-samd/boards/trellis_m4_express/board.c index e0455e93440f..0ade87471a13 100644 --- a/ports/atmel-samd/boards/trellis_m4_express/board.c +++ b/ports/atmel-samd/boards/trellis_m4_express/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/atmel-samd/boards/trellis_m4_express/mpconfigboard.h b/ports/atmel-samd/boards/trellis_m4_express/mpconfigboard.h index 7b238e2e9a1b..cca01e68157d 100644 --- a/ports/atmel-samd/boards/trellis_m4_express/mpconfigboard.h +++ b/ports/atmel-samd/boards/trellis_m4_express/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Trellis M4 Express" #define MICROPY_HW_MCU_NAME "samd51g19" diff --git a/ports/atmel-samd/boards/trellis_m4_express/pins.c b/ports/atmel-samd/boards/trellis_m4_express/pins.c index 61ca942ce607..a8c45f09160a 100644 --- a/ports/atmel-samd/boards/trellis_m4_express/pins.c +++ b/ports/atmel-samd/boards/trellis_m4_express/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" // This mapping only includes functional names because pins broken diff --git a/ports/atmel-samd/boards/trinket_m0/board.c b/ports/atmel-samd/boards/trinket_m0/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/trinket_m0/board.c +++ b/ports/atmel-samd/boards/trinket_m0/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/trinket_m0/mpconfigboard.h b/ports/atmel-samd/boards/trinket_m0/mpconfigboard.h index 7570e214d83d..b74441a9187e 100644 --- a/ports/atmel-samd/boards/trinket_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/trinket_m0/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Trinket M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/trinket_m0/pins.c b/ports/atmel-samd/boards/trinket_m0/pins.c index 1c93f935e339..7f9e319faa9d 100644 --- a/ports/atmel-samd/boards/trinket_m0/pins.c +++ b/ports/atmel-samd/boards/trinket_m0/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/trinket_m0_haxpress/board.c b/ports/atmel-samd/boards/trinket_m0_haxpress/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/trinket_m0_haxpress/board.c +++ b/ports/atmel-samd/boards/trinket_m0_haxpress/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/trinket_m0_haxpress/mpconfigboard.h b/ports/atmel-samd/boards/trinket_m0_haxpress/mpconfigboard.h index 25e00c03bb6a..87db664a909f 100644 --- a/ports/atmel-samd/boards/trinket_m0_haxpress/mpconfigboard.h +++ b/ports/atmel-samd/boards/trinket_m0_haxpress/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Trinket M0 Haxpress" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/trinket_m0_haxpress/pins.c b/ports/atmel-samd/boards/trinket_m0_haxpress/pins.c index 1c93f935e339..7f9e319faa9d 100644 --- a/ports/atmel-samd/boards/trinket_m0_haxpress/pins.c +++ b/ports/atmel-samd/boards/trinket_m0_haxpress/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/uartlogger2/board.c b/ports/atmel-samd/boards/uartlogger2/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/uartlogger2/board.c +++ b/ports/atmel-samd/boards/uartlogger2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/uartlogger2/mpconfigboard.h b/ports/atmel-samd/boards/uartlogger2/mpconfigboard.h index d94df8da4b30..311d65c57f11 100644 --- a/ports/atmel-samd/boards/uartlogger2/mpconfigboard.h +++ b/ports/atmel-samd/boards/uartlogger2/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "UARTLogger II" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/uartlogger2/pins.c b/ports/atmel-samd/boards/uartlogger2/pins.c index 4dc3ee6e4f29..b6ce568a4959 100644 --- a/ports/atmel-samd/boards/uartlogger2/pins.c +++ b/ports/atmel-samd/boards/uartlogger2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" // This mapping only includes functional names because pins broken diff --git a/ports/atmel-samd/boards/uchip/board.c b/ports/atmel-samd/boards/uchip/board.c index 66469e12ce1a..667e08c676f3 100644 --- a/ports/atmel-samd/boards/uchip/board.c +++ b/ports/atmel-samd/boards/uchip/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/uchip/mpconfigboard.h b/ports/atmel-samd/boards/uchip/mpconfigboard.h index b95f772af492..7ba507444f56 100644 --- a/ports/atmel-samd/boards/uchip/mpconfigboard.h +++ b/ports/atmel-samd/boards/uchip/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "uChip" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/uchip/pins.c b/ports/atmel-samd/boards/uchip/pins.c index 7e5c9ceb274c..4ad74392846f 100644 --- a/ports/atmel-samd/boards/uchip/pins.c +++ b/ports/atmel-samd/boards/uchip/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/ugame10/board.c b/ports/atmel-samd/boards/ugame10/board.c index 5578beb06a28..03ba7de54dd7 100644 --- a/ports/atmel-samd/boards/ugame10/board.c +++ b/ports/atmel-samd/boards/ugame10/board.c @@ -1,29 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries, 2020 Radomir - * Dopieralski - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries, 2020 Radomir +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/ugame10/mpconfigboard.h b/ports/atmel-samd/boards/ugame10/mpconfigboard.h index d7a6d990f0e6..4baf10dbfd22 100644 --- a/ports/atmel-samd/boards/ugame10/mpconfigboard.h +++ b/ports/atmel-samd/boards/ugame10/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries, 2020 Radomir +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "uGame10" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/ugame10/pins.c b/ports/atmel-samd/boards/ugame10/pins.c index 0a221644f364..9cd38dd30ecd 100644 --- a/ports/atmel-samd/boards/ugame10/pins.c +++ b/ports/atmel-samd/boards/ugame10/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries, 2020 Radomir +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/atmel-samd/boards/winterbloom_big_honking_button/board.c b/ports/atmel-samd/boards/winterbloom_big_honking_button/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/winterbloom_big_honking_button/board.c +++ b/ports/atmel-samd/boards/winterbloom_big_honking_button/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/winterbloom_big_honking_button/mpconfigboard.h b/ports/atmel-samd/boards/winterbloom_big_honking_button/mpconfigboard.h index 89de7e36763c..e4a3e3038aff 100644 --- a/ports/atmel-samd/boards/winterbloom_big_honking_button/mpconfigboard.h +++ b/ports/atmel-samd/boards/winterbloom_big_honking_button/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Winterbloom Big Honking Button" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/winterbloom_big_honking_button/pins.c b/ports/atmel-samd/boards/winterbloom_big_honking_button/pins.c index 03b78aab7b36..9daaed174fea 100644 --- a/ports/atmel-samd/boards/winterbloom_big_honking_button/pins.c +++ b/ports/atmel-samd/boards/winterbloom_big_honking_button/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/winterbloom_big_honking_button/usermods/_bhb/bhb.c b/ports/atmel-samd/boards/winterbloom_big_honking_button/usermods/_bhb/bhb.c index 8feca3181747..b5c162b14dc4 100644 --- a/ports/atmel-samd/boards/winterbloom_big_honking_button/usermods/_bhb/bhb.c +++ b/ports/atmel-samd/boards/winterbloom_big_honking_button/usermods/_bhb/bhb.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + #include "py/obj.h" #include "py/runtime.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/atmel-samd/boards/winterbloom_sol/board.c b/ports/atmel-samd/boards/winterbloom_sol/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/winterbloom_sol/board.c +++ b/ports/atmel-samd/boards/winterbloom_sol/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/winterbloom_sol/mpconfigboard.h b/ports/atmel-samd/boards/winterbloom_sol/mpconfigboard.h index 958d6417ba73..bb02d31eba4a 100644 --- a/ports/atmel-samd/boards/winterbloom_sol/mpconfigboard.h +++ b/ports/atmel-samd/boards/winterbloom_sol/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Winterbloom Sol" #define MICROPY_HW_MCU_NAME "samd51j20" diff --git a/ports/atmel-samd/boards/winterbloom_sol/pins.c b/ports/atmel-samd/boards/winterbloom_sol/pins.c index c00390f95fb2..7a9e1bf1a578 100644 --- a/ports/atmel-samd/boards/winterbloom_sol/pins.c +++ b/ports/atmel-samd/boards/winterbloom_sol/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/xinabox_cc03/board.c b/ports/atmel-samd/boards/xinabox_cc03/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/atmel-samd/boards/xinabox_cc03/board.c +++ b/ports/atmel-samd/boards/xinabox_cc03/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/atmel-samd/boards/xinabox_cc03/mpconfigboard.h b/ports/atmel-samd/boards/xinabox_cc03/mpconfigboard.h index a7f60e60fd26..3a712599b819 100644 --- a/ports/atmel-samd/boards/xinabox_cc03/mpconfigboard.h +++ b/ports/atmel-samd/boards/xinabox_cc03/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "XinaBox CC03" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/xinabox_cc03/pins.c b/ports/atmel-samd/boards/xinabox_cc03/pins.c index 61a2b0b139a3..7c87d30f8c77 100644 --- a/ports/atmel-samd/boards/xinabox_cc03/pins.c +++ b/ports/atmel-samd/boards/xinabox_cc03/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/boards/xinabox_cs11/board.c b/ports/atmel-samd/boards/xinabox_cs11/board.c index 1bba99ac0657..d48264a51fed 100644 --- a/ports/atmel-samd/boards/xinabox_cs11/board.c +++ b/ports/atmel-samd/boards/xinabox_cs11/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/atmel-samd/boards/xinabox_cs11/mpconfigboard.h b/ports/atmel-samd/boards/xinabox_cs11/mpconfigboard.h index 31ac83e8b4ab..0a3fcb573747 100644 --- a/ports/atmel-samd/boards/xinabox_cs11/mpconfigboard.h +++ b/ports/atmel-samd/boards/xinabox_cs11/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "XinaBox CS11" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/xinabox_cs11/pins.c b/ports/atmel-samd/boards/xinabox_cs11/pins.c index a3d804397f4a..a462ea5ac1d2 100644 --- a/ports/atmel-samd/boards/xinabox_cs11/pins.c +++ b/ports/atmel-samd/boards/xinabox_cs11/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/atmel-samd/common-hal/_pew/PewPew.c b/ports/atmel-samd/common-hal/_pew/PewPew.c index 8a009fdfe4ba..84ff7bc16c73 100644 --- a/ports/atmel-samd/common-hal/_pew/PewPew.c +++ b/ports/atmel-samd/common-hal/_pew/PewPew.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Radomir Dopieralski - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Radomir Dopieralski +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/atmel-samd/common-hal/_pew/PewPew.h b/ports/atmel-samd/common-hal/_pew/PewPew.h index 523be01671ad..e7c4cc94fe02 100644 --- a/ports/atmel-samd/common-hal/_pew/PewPew.h +++ b/ports/atmel-samd/common-hal/_pew/PewPew.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Radomir Dopieralski - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Radomir Dopieralski +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_PEW_PEWPEW_H #define MICROPY_INCLUDED_PEW_PEWPEW_H diff --git a/ports/atmel-samd/common-hal/_pew/__init__.c b/ports/atmel-samd/common-hal/_pew/__init__.c index b89b464dd336..f6796784a4f9 100644 --- a/ports/atmel-samd/common-hal/_pew/__init__.c +++ b/ports/atmel-samd/common-hal/_pew/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Radomir Dopieralski - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Radomir Dopieralski +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/atmel-samd/common-hal/_pew/__init__.h b/ports/atmel-samd/common-hal/_pew/__init__.h index 4f953c61064d..8552271ebe48 100644 --- a/ports/atmel-samd/common-hal/_pew/__init__.h +++ b/ports/atmel-samd/common-hal/_pew/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Radomir Dopieralski - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Radomir Dopieralski +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_PEW_H #define MICROPY_INCLUDED_PEW_H diff --git a/ports/atmel-samd/common-hal/alarm/SleepMemory.c b/ports/atmel-samd/common-hal/alarm/SleepMemory.c index 1a8eef3aec47..e3680fa202be 100644 --- a/ports/atmel-samd/common-hal/alarm/SleepMemory.c +++ b/ports/atmel-samd/common-hal/alarm/SleepMemory.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/atmel-samd/common-hal/alarm/SleepMemory.h b/ports/atmel-samd/common-hal/alarm/SleepMemory.h index 14848cd5a011..59e612747692 100644 --- a/ports/atmel-samd/common-hal/alarm/SleepMemory.h +++ b/ports/atmel-samd/common-hal/alarm/SleepMemory.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/atmel-samd/common-hal/alarm/__init__.c b/ports/atmel-samd/common-hal/alarm/__init__.c index 1d0ebcfa244a..38ad44fb5788 100644 --- a/ports/atmel-samd/common-hal/alarm/__init__.c +++ b/ports/atmel-samd/common-hal/alarm/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/gc.h" #include "py/obj.h" diff --git a/ports/atmel-samd/common-hal/alarm/__init__.h b/ports/atmel-samd/common-hal/alarm/__init__.h index 3094811c2778..e9c8a2c613b5 100644 --- a/ports/atmel-samd/common-hal/alarm/__init__.h +++ b/ports/atmel-samd/common-hal/alarm/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/atmel-samd/common-hal/alarm/coproc/CoprocAlarm.c b/ports/atmel-samd/common-hal/alarm/coproc/CoprocAlarm.c index 4bd8276f3492..a7f2dfca2b67 100644 --- a/ports/atmel-samd/common-hal/alarm/coproc/CoprocAlarm.c +++ b/ports/atmel-samd/common-hal/alarm/coproc/CoprocAlarm.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // empty file diff --git a/ports/atmel-samd/common-hal/alarm/coproc/CoprocAlarm.h b/ports/atmel-samd/common-hal/alarm/coproc/CoprocAlarm.h index 4bd8276f3492..a7f2dfca2b67 100644 --- a/ports/atmel-samd/common-hal/alarm/coproc/CoprocAlarm.h +++ b/ports/atmel-samd/common-hal/alarm/coproc/CoprocAlarm.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // empty file diff --git a/ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c b/ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c index e4e209ad6ab8..9c83d96f3f05 100644 --- a/ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c +++ b/ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" #include "samd/external_interrupts.h" diff --git a/ports/atmel-samd/common-hal/alarm/pin/PinAlarm.h b/ports/atmel-samd/common-hal/alarm/pin/PinAlarm.h index ee9ea07b711c..e74e69b7f5ec 100644 --- a/ports/atmel-samd/common-hal/alarm/pin/PinAlarm.h +++ b/ports/atmel-samd/common-hal/alarm/pin/PinAlarm.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/atmel-samd/common-hal/alarm/time/TimeAlarm.c b/ports/atmel-samd/common-hal/alarm/time/TimeAlarm.c index a8f408181fbc..e8a4bca5c1d9 100644 --- a/ports/atmel-samd/common-hal/alarm/time/TimeAlarm.c +++ b/ports/atmel-samd/common-hal/alarm/time/TimeAlarm.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" #include "hpl/pm/hpl_pm_base.h" diff --git a/ports/atmel-samd/common-hal/alarm/time/TimeAlarm.h b/ports/atmel-samd/common-hal/alarm/time/TimeAlarm.h index ee517e02364d..db7d6508d8c4 100644 --- a/ports/atmel-samd/common-hal/alarm/time/TimeAlarm.h +++ b/ports/atmel-samd/common-hal/alarm/time/TimeAlarm.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/atmel-samd/common-hal/alarm/touch/TouchAlarm.c b/ports/atmel-samd/common-hal/alarm/touch/TouchAlarm.c index 46d38d864c29..44396fa8e8ab 100644 --- a/ports/atmel-samd/common-hal/alarm/touch/TouchAlarm.c +++ b/ports/atmel-samd/common-hal/alarm/touch/TouchAlarm.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/alarm/touch/TouchAlarm.h" #include "shared-bindings/microcontroller/__init__.h" diff --git a/ports/atmel-samd/common-hal/alarm/touch/TouchAlarm.h b/ports/atmel-samd/common-hal/alarm/touch/TouchAlarm.h index 59f202c69ded..0762c5616f9c 100644 --- a/ports/atmel-samd/common-hal/alarm/touch/TouchAlarm.h +++ b/ports/atmel-samd/common-hal/alarm/touch/TouchAlarm.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/atmel-samd/common-hal/analogio/AnalogIn.c b/ports/atmel-samd/common-hal/analogio/AnalogIn.c index f51f299bd3a7..c633cf44b678 100644 --- a/ports/atmel-samd/common-hal/analogio/AnalogIn.c +++ b/ports/atmel-samd/common-hal/analogio/AnalogIn.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "common-hal/analogio/AnalogIn.h" diff --git a/ports/atmel-samd/common-hal/analogio/AnalogIn.h b/ports/atmel-samd/common-hal/analogio/AnalogIn.h index 3a467f64dbeb..2c92eccd5a4d 100644 --- a/ports/atmel-samd/common-hal/analogio/AnalogIn.h +++ b/ports/atmel-samd/common-hal/analogio/AnalogIn.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_ANALOGIO_ANALOGIN_H #define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_ANALOGIO_ANALOGIN_H diff --git a/ports/atmel-samd/common-hal/analogio/AnalogOut.c b/ports/atmel-samd/common-hal/analogio/AnalogOut.c index 2fc1629c5563..e9c817501f97 100644 --- a/ports/atmel-samd/common-hal/analogio/AnalogOut.c +++ b/ports/atmel-samd/common-hal/analogio/AnalogOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/atmel-samd/common-hal/analogio/AnalogOut.h b/ports/atmel-samd/common-hal/analogio/AnalogOut.h index b5c97cca0287..a5aea945ffcc 100644 --- a/ports/atmel-samd/common-hal/analogio/AnalogOut.h +++ b/ports/atmel-samd/common-hal/analogio/AnalogOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_ANALOGIO_ANALOGOUT_H #define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_ANALOGIO_ANALOGOUT_H diff --git a/ports/atmel-samd/common-hal/analogio/__init__.c b/ports/atmel-samd/common-hal/analogio/__init__.c index eea58c77d631..d9027d63ec8b 100644 --- a/ports/atmel-samd/common-hal/analogio/__init__.c +++ b/ports/atmel-samd/common-hal/analogio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No analogio module functions. diff --git a/ports/atmel-samd/common-hal/audiobusio/I2SOut.c b/ports/atmel-samd/common-hal/audiobusio/I2SOut.c index 7f948a29c067..b8c8e93e88d8 100644 --- a/ports/atmel-samd/common-hal/audiobusio/I2SOut.c +++ b/ports/atmel-samd/common-hal/audiobusio/I2SOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/atmel-samd/common-hal/audiobusio/I2SOut.h b/ports/atmel-samd/common-hal/audiobusio/I2SOut.h index a66dae9bbd21..579a6db5dec9 100644 --- a/ports/atmel-samd/common-hal/audiobusio/I2SOut.h +++ b/ports/atmel-samd/common-hal/audiobusio/I2SOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_AUDIOBUSIO_I2SOUT_H #define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_AUDIOBUSIO_I2SOUT_H diff --git a/ports/atmel-samd/common-hal/audiobusio/PDMIn.c b/ports/atmel-samd/common-hal/audiobusio/PDMIn.c index c4ab65562a70..3244d06979ef 100644 --- a/ports/atmel-samd/common-hal/audiobusio/PDMIn.c +++ b/ports/atmel-samd/common-hal/audiobusio/PDMIn.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/atmel-samd/common-hal/audiobusio/PDMIn.h b/ports/atmel-samd/common-hal/audiobusio/PDMIn.h index 7f00886d2969..29536cee345a 100644 --- a/ports/atmel-samd/common-hal/audiobusio/PDMIn.h +++ b/ports/atmel-samd/common-hal/audiobusio/PDMIn.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_AUDIOBUSIO_AUDIOOUT_H #define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_AUDIOBUSIO_AUDIOOUT_H diff --git a/ports/atmel-samd/common-hal/audiobusio/__init__.c b/ports/atmel-samd/common-hal/audiobusio/__init__.c index 87db404966ab..0ba97b96d16b 100644 --- a/ports/atmel-samd/common-hal/audiobusio/__init__.c +++ b/ports/atmel-samd/common-hal/audiobusio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No audiobusio module functions. diff --git a/ports/atmel-samd/common-hal/audioio/AudioOut.c b/ports/atmel-samd/common-hal/audioio/AudioOut.c index 0f1884a9002d..e6c90243fa56 100644 --- a/ports/atmel-samd/common-hal/audioio/AudioOut.c +++ b/ports/atmel-samd/common-hal/audioio/AudioOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/atmel-samd/common-hal/audioio/AudioOut.h b/ports/atmel-samd/common-hal/audioio/AudioOut.h index 207344c04e5e..9ec1149ed211 100644 --- a/ports/atmel-samd/common-hal/audioio/AudioOut.h +++ b/ports/atmel-samd/common-hal/audioio/AudioOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_AUDIOIO_AUDIOOUT_H #define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_AUDIOIO_AUDIOOUT_H diff --git a/ports/atmel-samd/common-hal/audioio/__init__.c b/ports/atmel-samd/common-hal/audioio/__init__.c index 404f021a1173..35984e9bc0ab 100644 --- a/ports/atmel-samd/common-hal/audioio/__init__.c +++ b/ports/atmel-samd/common-hal/audioio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No audioio module functions. diff --git a/ports/atmel-samd/common-hal/board/__init__.c b/ports/atmel-samd/common-hal/board/__init__.c index 92a1721383f4..fc4f2c780888 100644 --- a/ports/atmel-samd/common-hal/board/__init__.c +++ b/ports/atmel-samd/common-hal/board/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/atmel-samd/common-hal/busio/I2C.c b/ports/atmel-samd/common-hal/busio/I2C.c index 408251b04536..d8136c1ef967 100644 --- a/ports/atmel-samd/common-hal/busio/I2C.c +++ b/ports/atmel-samd/common-hal/busio/I2C.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #include "shared-bindings/busio/I2C.h" #include "py/mperrno.h" diff --git a/ports/atmel-samd/common-hal/busio/I2C.h b/ports/atmel-samd/common-hal/busio/I2C.h index 74a1147fc75b..ebcba1d0daf0 100644 --- a/ports/atmel-samd/common-hal/busio/I2C.h +++ b/ports/atmel-samd/common-hal/busio/I2C.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_I2C_H #define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_I2C_H diff --git a/ports/atmel-samd/common-hal/busio/SPI.c b/ports/atmel-samd/common-hal/busio/SPI.c index a389e1055c78..62772faff424 100644 --- a/ports/atmel-samd/common-hal/busio/SPI.c +++ b/ports/atmel-samd/common-hal/busio/SPI.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #include "shared-bindings/busio/SPI.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/atmel-samd/common-hal/busio/SPI.h b/ports/atmel-samd/common-hal/busio/SPI.h index 2fced6d642ee..3839c101331f 100644 --- a/ports/atmel-samd/common-hal/busio/SPI.h +++ b/ports/atmel-samd/common-hal/busio/SPI.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_SPI_H #define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_SPI_H diff --git a/ports/atmel-samd/common-hal/busio/UART.c b/ports/atmel-samd/common-hal/busio/UART.c index 302051f2e941..31b644bea9af 100644 --- a/ports/atmel-samd/common-hal/busio/UART.c +++ b/ports/atmel-samd/common-hal/busio/UART.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2016 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Damien P. George +// +// SPDX-License-Identifier: MIT #if CIRCUITPY_BUSIO_UART #include "shared-bindings/microcontroller/__init__.h" diff --git a/ports/atmel-samd/common-hal/busio/UART.h b/ports/atmel-samd/common-hal/busio/UART.h index b99a16d7db05..fd65b06ca110 100644 --- a/ports/atmel-samd/common-hal/busio/UART.h +++ b/ports/atmel-samd/common-hal/busio/UART.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_UART_H #define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_UART_H diff --git a/ports/atmel-samd/common-hal/busio/__init__.c b/ports/atmel-samd/common-hal/busio/__init__.c index 8d1f085ffaed..0017aa662a2a 100644 --- a/ports/atmel-samd/common-hal/busio/__init__.c +++ b/ports/atmel-samd/common-hal/busio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #include "samd/sercom.h" #include "common-hal/busio/__init__.h" diff --git a/ports/atmel-samd/common-hal/busio/__init__.h b/ports/atmel-samd/common-hal/busio/__init__.h index ded88f113da4..293806014f30 100644 --- a/ports/atmel-samd/common-hal/busio/__init__.h +++ b/ports/atmel-samd/common-hal/busio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_INIT_H #define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_INIT_H diff --git a/ports/atmel-samd/common-hal/canio/CAN.c b/ports/atmel-samd/common-hal/canio/CAN.c index cd5100ed52df..324345ec9984 100644 --- a/ports/atmel-samd/common-hal/canio/CAN.c +++ b/ports/atmel-samd/common-hal/canio/CAN.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/atmel-samd/common-hal/canio/CAN.h b/ports/atmel-samd/common-hal/canio/CAN.h index ac6d4d42f152..8786ddc62ffe 100644 --- a/ports/atmel-samd/common-hal/canio/CAN.h +++ b/ports/atmel-samd/common-hal/canio/CAN.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/atmel-samd/common-hal/canio/Listener.c b/ports/atmel-samd/common-hal/canio/Listener.c index e4bea9bd8430..2c044ad4af11 100644 --- a/ports/atmel-samd/common-hal/canio/Listener.c +++ b/ports/atmel-samd/common-hal/canio/Listener.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/atmel-samd/common-hal/canio/Listener.h b/ports/atmel-samd/common-hal/canio/Listener.h index be19bd84fb21..e53ca045b9c0 100644 --- a/ports/atmel-samd/common-hal/canio/Listener.h +++ b/ports/atmel-samd/common-hal/canio/Listener.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/atmel-samd/common-hal/canio/__init__.c b/ports/atmel-samd/common-hal/canio/__init__.c index 7932bfc2da82..13a70a52c499 100644 --- a/ports/atmel-samd/common-hal/canio/__init__.c +++ b/ports/atmel-samd/common-hal/canio/__init__.c @@ -1,25 +1,5 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT diff --git a/ports/atmel-samd/common-hal/canio/__init__.h b/ports/atmel-samd/common-hal/canio/__init__.h index 32adc5bf96d5..17319e359593 100644 --- a/ports/atmel-samd/common-hal/canio/__init__.h +++ b/ports/atmel-samd/common-hal/canio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/atmel-samd/common-hal/countio/Counter.c b/ports/atmel-samd/common-hal/countio/Counter.c index 293d4e1524b3..d9766339cad4 100644 --- a/ports/atmel-samd/common-hal/countio/Counter.c +++ b/ports/atmel-samd/common-hal/countio/Counter.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + #include "common-hal/countio/Counter.h" #include "shared-bindings/countio/Counter.h" diff --git a/ports/atmel-samd/common-hal/countio/Counter.h b/ports/atmel-samd/common-hal/countio/Counter.h index a57df9a7775f..3f43e178c998 100644 --- a/ports/atmel-samd/common-hal/countio/Counter.h +++ b/ports/atmel-samd/common-hal/countio/Counter.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + #ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_COUNTIO_COUNTER_H #define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_COUNTIO_COUNTER_H diff --git a/ports/atmel-samd/common-hal/countio/__init__.c b/ports/atmel-samd/common-hal/countio/__init__.c index d47de33e53c3..86d03caa9b87 100644 --- a/ports/atmel-samd/common-hal/countio/__init__.c +++ b/ports/atmel-samd/common-hal/countio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No countio module functions diff --git a/ports/atmel-samd/common-hal/digitalio/DigitalInOut.c b/ports/atmel-samd/common-hal/digitalio/DigitalInOut.c index c2d60b3d9304..89902259a23a 100644 --- a/ports/atmel-samd/common-hal/digitalio/DigitalInOut.c +++ b/ports/atmel-samd/common-hal/digitalio/DigitalInOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/atmel-samd/common-hal/digitalio/DigitalInOut.h b/ports/atmel-samd/common-hal/digitalio/DigitalInOut.h index 3e8817e2825e..71e0d59784bb 100644 --- a/ports/atmel-samd/common-hal/digitalio/DigitalInOut.h +++ b/ports/atmel-samd/common-hal/digitalio/DigitalInOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_DIGITALIO_DIGITALINOUT_H #define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_DIGITALIO_DIGITALINOUT_H diff --git a/ports/atmel-samd/common-hal/digitalio/__init__.c b/ports/atmel-samd/common-hal/digitalio/__init__.c index 20fad459593a..fa222ed01f03 100644 --- a/ports/atmel-samd/common-hal/digitalio/__init__.c +++ b/ports/atmel-samd/common-hal/digitalio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No digitalio module functions. diff --git a/ports/atmel-samd/common-hal/floppyio/__init__.c b/ports/atmel-samd/common-hal/floppyio/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/atmel-samd/common-hal/floppyio/__init__.c +++ b/ports/atmel-samd/common-hal/floppyio/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/atmel-samd/common-hal/floppyio/__init__.h b/ports/atmel-samd/common-hal/floppyio/__init__.h index 693babb2ef06..747e7ff7923c 100644 --- a/ports/atmel-samd/common-hal/floppyio/__init__.h +++ b/ports/atmel-samd/common-hal/floppyio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c b/ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c index 5efbcc94d752..405e043bf691 100644 --- a/ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c +++ b/ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Michael Schroeder - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Michael Schroeder +// +// SPDX-License-Identifier: MIT #include "shared-bindings/frequencyio/FrequencyIn.h" diff --git a/ports/atmel-samd/common-hal/frequencyio/FrequencyIn.h b/ports/atmel-samd/common-hal/frequencyio/FrequencyIn.h index b1d5a58bdb56..3c339b024d14 100644 --- a/ports/atmel-samd/common-hal/frequencyio/FrequencyIn.h +++ b/ports/atmel-samd/common-hal/frequencyio/FrequencyIn.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Michael Schroeder - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Michael Schroeder +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_FREQUENCYIO_FREQUENCYIN_H #define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_FREQUENCYIO_FREQUENCYIN_H diff --git a/ports/atmel-samd/common-hal/frequencyio/__init__.c b/ports/atmel-samd/common-hal/frequencyio/__init__.c index 487814bd076b..2da497811858 100644 --- a/ports/atmel-samd/common-hal/frequencyio/__init__.c +++ b/ports/atmel-samd/common-hal/frequencyio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No ferquencyio module functions. diff --git a/ports/atmel-samd/common-hal/i2ctarget/I2CTarget.c b/ports/atmel-samd/common-hal/i2ctarget/I2CTarget.c index a68714328168..f838b576e436 100644 --- a/ports/atmel-samd/common-hal/i2ctarget/I2CTarget.c +++ b/ports/atmel-samd/common-hal/i2ctarget/I2CTarget.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Noralf Trønnes - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Noralf Trønnes +// +// SPDX-License-Identifier: MIT #include "shared-bindings/i2ctarget/I2CTarget.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/atmel-samd/common-hal/i2ctarget/I2CTarget.h b/ports/atmel-samd/common-hal/i2ctarget/I2CTarget.h index 894961ab7b22..bfb9f61d6382 100644 --- a/ports/atmel-samd/common-hal/i2ctarget/I2CTarget.h +++ b/ports/atmel-samd/common-hal/i2ctarget/I2CTarget.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Noralf Trønnes - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Noralf Trønnes +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_I2C_TARGET_H #define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_I2C_TARGET_H diff --git a/ports/atmel-samd/common-hal/i2ctarget/__init__.c b/ports/atmel-samd/common-hal/i2ctarget/__init__.c index 4ec26465adf0..ed0f642bfd30 100644 --- a/ports/atmel-samd/common-hal/i2ctarget/__init__.c +++ b/ports/atmel-samd/common-hal/i2ctarget/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No i2ctarget module functions. diff --git a/ports/atmel-samd/common-hal/imagecapture/ParallelImageCapture.c b/ports/atmel-samd/common-hal/imagecapture/ParallelImageCapture.c index 8f789f232b2d..05d5075e5786 100644 --- a/ports/atmel-samd/common-hal/imagecapture/ParallelImageCapture.c +++ b/ports/atmel-samd/common-hal/imagecapture/ParallelImageCapture.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/runtime.h" diff --git a/ports/atmel-samd/common-hal/imagecapture/ParallelImageCapture.h b/ports/atmel-samd/common-hal/imagecapture/ParallelImageCapture.h index 67311c5b0072..050d6f55aed1 100644 --- a/ports/atmel-samd/common-hal/imagecapture/ParallelImageCapture.h +++ b/ports/atmel-samd/common-hal/imagecapture/ParallelImageCapture.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/atmel-samd/common-hal/imagecapture/__init__.c b/ports/atmel-samd/common-hal/imagecapture/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/atmel-samd/common-hal/imagecapture/__init__.c +++ b/ports/atmel-samd/common-hal/imagecapture/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/atmel-samd/common-hal/imagecapture/__init__.h b/ports/atmel-samd/common-hal/imagecapture/__init__.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/atmel-samd/common-hal/imagecapture/__init__.h +++ b/ports/atmel-samd/common-hal/imagecapture/__init__.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/atmel-samd/common-hal/max3421e/Max3421E.c b/ports/atmel-samd/common-hal/max3421e/Max3421E.c index e87d5de6cc3d..bcf6bd2b31cb 100644 --- a/ports/atmel-samd/common-hal/max3421e/Max3421E.c +++ b/ports/atmel-samd/common-hal/max3421e/Max3421E.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-module/max3421e/Max3421E.h" diff --git a/ports/atmel-samd/common-hal/max3421e/Max3421E.h b/ports/atmel-samd/common-hal/max3421e/Max3421E.h index d4f3e87dd373..acc9354b3664 100644 --- a/ports/atmel-samd/common-hal/max3421e/Max3421E.h +++ b/ports/atmel-samd/common-hal/max3421e/Max3421E.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/atmel-samd/common-hal/microcontroller/Pin.c b/ports/atmel-samd/common-hal/microcontroller/Pin.c index 51c797e75e9d..16fce15a594f 100644 --- a/ports/atmel-samd/common-hal/microcontroller/Pin.c +++ b/ports/atmel-samd/common-hal/microcontroller/Pin.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" diff --git a/ports/atmel-samd/common-hal/microcontroller/Pin.h b/ports/atmel-samd/common-hal/microcontroller/Pin.h index 76da10852ff7..7b8a7ad11016 100644 --- a/ports/atmel-samd/common-hal/microcontroller/Pin.h +++ b/ports/atmel-samd/common-hal/microcontroller/Pin.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_MICROCONTROLLER_PIN_H #define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_MICROCONTROLLER_PIN_H diff --git a/ports/atmel-samd/common-hal/microcontroller/Processor.c b/ports/atmel-samd/common-hal/microcontroller/Processor.c index d720399b98f7..dd78c3f7e58f 100644 --- a/ports/atmel-samd/common-hal/microcontroller/Processor.c +++ b/ports/atmel-samd/common-hal/microcontroller/Processor.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * Includes code from ASF sample code adc_temp.h and adc_temp.c, diff --git a/ports/atmel-samd/common-hal/microcontroller/Processor.h b/ports/atmel-samd/common-hal/microcontroller/Processor.h index 1e1d201eb75f..23ee8fe5d0fd 100644 --- a/ports/atmel-samd/common-hal/microcontroller/Processor.h +++ b/ports/atmel-samd/common-hal/microcontroller/Processor.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H #define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H diff --git a/ports/atmel-samd/common-hal/microcontroller/__init__.c b/ports/atmel-samd/common-hal/microcontroller/__init__.c index 22bc52e45bcb..505cd078e3b2 100644 --- a/ports/atmel-samd/common-hal/microcontroller/__init__.c +++ b/ports/atmel-samd/common-hal/microcontroller/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/mphal.h" #include "py/obj.h" diff --git a/ports/atmel-samd/common-hal/neopixel_write/__init__.c b/ports/atmel-samd/common-hal/neopixel_write/__init__.c index 3520037afed4..5599a4b9e25d 100644 --- a/ports/atmel-samd/common-hal/neopixel_write/__init__.c +++ b/ports/atmel-samd/common-hal/neopixel_write/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "hpl_gpio.h" #include "py/mphal.h" diff --git a/ports/atmel-samd/common-hal/nvm/ByteArray.c b/ports/atmel-samd/common-hal/nvm/ByteArray.c index e6f77bb04857..a5b760215e0d 100644 --- a/ports/atmel-samd/common-hal/nvm/ByteArray.c +++ b/ports/atmel-samd/common-hal/nvm/ByteArray.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "common-hal/nvm/ByteArray.h" #include "shared-bindings/nvm/ByteArray.h" diff --git a/ports/atmel-samd/common-hal/nvm/ByteArray.h b/ports/atmel-samd/common-hal/nvm/ByteArray.h index 28c6d0e51052..72b749ea15ff 100644 --- a/ports/atmel-samd/common-hal/nvm/ByteArray.h +++ b/ports/atmel-samd/common-hal/nvm/ByteArray.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_NVM_BYTEARRAY_H #define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_NVM_BYTEARRAY_H diff --git a/ports/atmel-samd/common-hal/nvm/__init__.c b/ports/atmel-samd/common-hal/nvm/__init__.c index f0792430f01c..defabf7acbc9 100644 --- a/ports/atmel-samd/common-hal/nvm/__init__.c +++ b/ports/atmel-samd/common-hal/nvm/__init__.c @@ -1,27 +1,7 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // No nvm module functions. diff --git a/ports/atmel-samd/common-hal/os/__init__.c b/ports/atmel-samd/common-hal/os/__init__.c index f0e20bdfcf27..4d3d8d96fa5e 100644 --- a/ports/atmel-samd/common-hal/os/__init__.c +++ b/ports/atmel-samd/common-hal/os/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "genhdr/mpversion.h" #include "py/mpconfig.h" diff --git a/ports/atmel-samd/common-hal/paralleldisplaybus/ParallelBus.c b/ports/atmel-samd/common-hal/paralleldisplaybus/ParallelBus.c index fa6e396026d0..6f56753d29a9 100644 --- a/ports/atmel-samd/common-hal/paralleldisplaybus/ParallelBus.c +++ b/ports/atmel-samd/common-hal/paralleldisplaybus/ParallelBus.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/paralleldisplaybus/ParallelBus.h" diff --git a/ports/atmel-samd/common-hal/paralleldisplaybus/ParallelBus.h b/ports/atmel-samd/common-hal/paralleldisplaybus/ParallelBus.h index f1435352dd15..93676984abd3 100644 --- a/ports/atmel-samd/common-hal/paralleldisplaybus/ParallelBus.h +++ b/ports/atmel-samd/common-hal/paralleldisplaybus/ParallelBus.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/atmel-samd/common-hal/ps2io/Ps2.c b/ports/atmel-samd/common-hal/ps2io/Ps2.c index 0a906198c004..006833c3d636 100644 --- a/ports/atmel-samd/common-hal/ps2io/Ps2.c +++ b/ports/atmel-samd/common-hal/ps2io/Ps2.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017-2018 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Elvis Pfutzenreuter - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017-2018 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Elvis Pfutzenreuter +// +// SPDX-License-Identifier: MIT #include "common-hal/ps2io/Ps2.h" #include "shared-bindings/ps2io/Ps2.h" diff --git a/ports/atmel-samd/common-hal/ps2io/Ps2.h b/ports/atmel-samd/common-hal/ps2io/Ps2.h index fa8defdbebca..a55fea3e32c6 100644 --- a/ports/atmel-samd/common-hal/ps2io/Ps2.h +++ b/ports/atmel-samd/common-hal/ps2io/Ps2.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Elvis Pfutzenreuter - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Elvis Pfutzenreuter +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_PS2IO_PS2_H #define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_PS2IO_PS2_H diff --git a/ports/atmel-samd/common-hal/ps2io/__init__.c b/ports/atmel-samd/common-hal/ps2io/__init__.c index ba4b4249f733..d3f92aa17f5c 100644 --- a/ports/atmel-samd/common-hal/ps2io/__init__.c +++ b/ports/atmel-samd/common-hal/ps2io/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No ps2io module functions. diff --git a/ports/atmel-samd/common-hal/pulseio/PulseIn.c b/ports/atmel-samd/common-hal/pulseio/PulseIn.c index 8982fdf0f989..705f8ceeb8be 100644 --- a/ports/atmel-samd/common-hal/pulseio/PulseIn.c +++ b/ports/atmel-samd/common-hal/pulseio/PulseIn.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017-2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017-2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "common-hal/pulseio/PulseIn.h" diff --git a/ports/atmel-samd/common-hal/pulseio/PulseIn.h b/ports/atmel-samd/common-hal/pulseio/PulseIn.h index a168f033b64e..59b31d5541cb 100644 --- a/ports/atmel-samd/common-hal/pulseio/PulseIn.h +++ b/ports/atmel-samd/common-hal/pulseio/PulseIn.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/atmel-samd/common-hal/pulseio/PulseOut.c b/ports/atmel-samd/common-hal/pulseio/PulseOut.c index 488ef3f345d5..dabc9c02b7a8 100644 --- a/ports/atmel-samd/common-hal/pulseio/PulseOut.c +++ b/ports/atmel-samd/common-hal/pulseio/PulseOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2016 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Damien P. George +// +// SPDX-License-Identifier: MIT #include "common-hal/pulseio/PulseOut.h" diff --git a/ports/atmel-samd/common-hal/pulseio/PulseOut.h b/ports/atmel-samd/common-hal/pulseio/PulseOut.h index fcd9e07eefea..6d8ff4ad7083 100644 --- a/ports/atmel-samd/common-hal/pulseio/PulseOut.h +++ b/ports/atmel-samd/common-hal/pulseio/PulseOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/atmel-samd/common-hal/pulseio/__init__.c b/ports/atmel-samd/common-hal/pulseio/__init__.c index 2bee925bc77f..50db4c40454e 100644 --- a/ports/atmel-samd/common-hal/pulseio/__init__.c +++ b/ports/atmel-samd/common-hal/pulseio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No pulseio module functions. diff --git a/ports/atmel-samd/common-hal/pwmio/PWMOut.c b/ports/atmel-samd/common-hal/pwmio/PWMOut.c index ffc5c32f9d15..1b8afbc516a0 100644 --- a/ports/atmel-samd/common-hal/pwmio/PWMOut.c +++ b/ports/atmel-samd/common-hal/pwmio/PWMOut.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * SPDX-FileCopyrightText: Copyright (c) 2016 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2016 Damien P. George +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/atmel-samd/common-hal/pwmio/PWMOut.h b/ports/atmel-samd/common-hal/pwmio/PWMOut.h index b853b8a10c50..a599e0d0c616 100644 --- a/ports/atmel-samd/common-hal/pwmio/PWMOut.h +++ b/ports/atmel-samd/common-hal/pwmio/PWMOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/atmel-samd/common-hal/pwmio/__init__.c b/ports/atmel-samd/common-hal/pwmio/__init__.c index 9e551a1072b3..b43cd8b1b396 100644 --- a/ports/atmel-samd/common-hal/pwmio/__init__.c +++ b/ports/atmel-samd/common-hal/pwmio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No pwmio module functions. diff --git a/ports/atmel-samd/common-hal/rgbmatrix/RGBMatrix.c b/ports/atmel-samd/common-hal/rgbmatrix/RGBMatrix.c index 558b165f2bb7..c0b6386b4beb 100644 --- a/ports/atmel-samd/common-hal/rgbmatrix/RGBMatrix.c +++ b/ports/atmel-samd/common-hal/rgbmatrix/RGBMatrix.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/atmel-samd/common-hal/rgbmatrix/RGBMatrix.h b/ports/atmel-samd/common-hal/rgbmatrix/RGBMatrix.h index d14cd9b0836d..002169291322 100644 --- a/ports/atmel-samd/common-hal/rgbmatrix/RGBMatrix.h +++ b/ports/atmel-samd/common-hal/rgbmatrix/RGBMatrix.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_RGBMATRIX_RGBMATRIX_H #define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_RGBMATRIX_RGBMATRIX_H diff --git a/ports/atmel-samd/common-hal/rgbmatrix/__init__.c b/ports/atmel-samd/common-hal/rgbmatrix/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/atmel-samd/common-hal/rgbmatrix/__init__.c +++ b/ports/atmel-samd/common-hal/rgbmatrix/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c b/ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c index 3914b1340da8..c6cd4605784a 100644 --- a/ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c +++ b/ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "common-hal/rotaryio/IncrementalEncoder.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.h b/ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.h index f9223ddc7cf5..347c692a7d7c 100644 --- a/ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.h +++ b/ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_ROTARYIO_INCREMENTALENCODER_H #define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_ROTARYIO_INCREMENTALENCODER_H diff --git a/ports/atmel-samd/common-hal/rotaryio/__init__.c b/ports/atmel-samd/common-hal/rotaryio/__init__.c index 0aae79c26a1c..67cae26a8b7f 100644 --- a/ports/atmel-samd/common-hal/rotaryio/__init__.c +++ b/ports/atmel-samd/common-hal/rotaryio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No rotaryio module functions. diff --git a/ports/atmel-samd/common-hal/rtc/RTC.c b/ports/atmel-samd/common-hal/rtc/RTC.c index 2da624494bb3..250433b73f6d 100644 --- a/ports/atmel-samd/common-hal/rtc/RTC.c +++ b/ports/atmel-samd/common-hal/rtc/RTC.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Noralf Trønnes - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Noralf Trønnes +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/atmel-samd/common-hal/rtc/RTC.h b/ports/atmel-samd/common-hal/rtc/RTC.h index 19cbc0b5c5b7..0d43ee850173 100644 --- a/ports/atmel-samd/common-hal/rtc/RTC.h +++ b/ports/atmel-samd/common-hal/rtc/RTC.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Noralf Trønnes - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Noralf Trønnes +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_RTC_RTC_H #define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_RTC_RTC_H diff --git a/ports/atmel-samd/common-hal/rtc/__init__.c b/ports/atmel-samd/common-hal/rtc/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/atmel-samd/common-hal/rtc/__init__.c +++ b/ports/atmel-samd/common-hal/rtc/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/atmel-samd/common-hal/sdioio/SDCard.c b/ports/atmel-samd/common-hal/sdioio/SDCard.c index c6de588eccbf..e5a02bd29c99 100644 --- a/ports/atmel-samd/common-hal/sdioio/SDCard.c +++ b/ports/atmel-samd/common-hal/sdioio/SDCard.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include "py/mperrno.h" diff --git a/ports/atmel-samd/common-hal/sdioio/SDCard.h b/ports/atmel-samd/common-hal/sdioio/SDCard.h index 1ab89feddaff..8b8c2fd39f84 100644 --- a/ports/atmel-samd/common-hal/sdioio/SDCard.h +++ b/ports/atmel-samd/common-hal/sdioio/SDCard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/atmel-samd/common-hal/sdioio/__init__.c b/ports/atmel-samd/common-hal/sdioio/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/atmel-samd/common-hal/sdioio/__init__.c +++ b/ports/atmel-samd/common-hal/sdioio/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/atmel-samd/common-hal/sdioio/__init__.h b/ports/atmel-samd/common-hal/sdioio/__init__.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/atmel-samd/common-hal/sdioio/__init__.h +++ b/ports/atmel-samd/common-hal/sdioio/__init__.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/atmel-samd/common-hal/touchio/TouchIn.c b/ports/atmel-samd/common-hal/touchio/TouchIn.c index 9a4315c8305d..05c3f3ee923d 100644 --- a/ports/atmel-samd/common-hal/touchio/TouchIn.c +++ b/ports/atmel-samd/common-hal/touchio/TouchIn.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/atmel-samd/common-hal/touchio/TouchIn.h b/ports/atmel-samd/common-hal/touchio/TouchIn.h index 85550b8a3a2e..0d3a7dc87608 100644 --- a/ports/atmel-samd/common-hal/touchio/TouchIn.h +++ b/ports/atmel-samd/common-hal/touchio/TouchIn.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_TOUCHIO_TOUCHIN_H #define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_TOUCHIO_TOUCHIN_H diff --git a/ports/atmel-samd/common-hal/touchio/__init__.c b/ports/atmel-samd/common-hal/touchio/__init__.c index d2290447c95e..19c63ab0f5c8 100644 --- a/ports/atmel-samd/common-hal/touchio/__init__.c +++ b/ports/atmel-samd/common-hal/touchio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No touchio module functions. diff --git a/ports/atmel-samd/common-hal/watchdog/WatchDogMode.c b/ports/atmel-samd/common-hal/watchdog/WatchDogMode.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/atmel-samd/common-hal/watchdog/WatchDogMode.c +++ b/ports/atmel-samd/common-hal/watchdog/WatchDogMode.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/atmel-samd/common-hal/watchdog/WatchDogTimer.c b/ports/atmel-samd/common-hal/watchdog/WatchDogTimer.c index 6bf9bd0519b5..a11f995d8b4e 100644 --- a/ports/atmel-samd/common-hal/watchdog/WatchDogTimer.c +++ b/ports/atmel-samd/common-hal/watchdog/WatchDogTimer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/atmel-samd/common-hal/watchdog/WatchDogTimer.h b/ports/atmel-samd/common-hal/watchdog/WatchDogTimer.h index ae214a95e6b0..5999836e6e82 100644 --- a/ports/atmel-samd/common-hal/watchdog/WatchDogTimer.h +++ b/ports/atmel-samd/common-hal/watchdog/WatchDogTimer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_WATCHDOG_WATCHDOGTIMER_H #define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_WATCHDOG_WATCHDOGTIMER_H diff --git a/ports/atmel-samd/common-hal/watchdog/__init__.c b/ports/atmel-samd/common-hal/watchdog/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/atmel-samd/common-hal/watchdog/__init__.c +++ b/ports/atmel-samd/common-hal/watchdog/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/atmel-samd/eic_handler.c b/ports/atmel-samd/eic_handler.c index 90a10d9f7f98..3981698ed005 100644 --- a/ports/atmel-samd/eic_handler.c +++ b/ports/atmel-samd/eic_handler.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "common-hal/max3421e/Max3421E.h" #include "common-hal/pulseio/PulseIn.h" diff --git a/ports/atmel-samd/eic_handler.h b/ports/atmel-samd/eic_handler.h index 2166e2f6de63..49d8197ee0a4 100644 --- a/ports/atmel-samd/eic_handler.h +++ b/ports/atmel-samd/eic_handler.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once #define EIC_HANDLER_NO_INTERRUPT 0x0 diff --git a/ports/atmel-samd/ld_defines.c b/ports/atmel-samd/ld_defines.c index 56e26d8dca38..1a8e181e1847 100644 --- a/ports/atmel-samd/ld_defines.c +++ b/ports/atmel-samd/ld_defines.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // Fake source file used only to capture #define values for use in ld template files. #include "mpconfigport.h" diff --git a/ports/atmel-samd/mpconfigport.h b/ports/atmel-samd/mpconfigport.h index a63919978dda..2f7d1c5b3cd8 100644 --- a/ports/atmel-samd/mpconfigport.h +++ b/ports/atmel-samd/mpconfigport.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef __INCLUDED_MPCONFIGPORT_H #define __INCLUDED_MPCONFIGPORT_H diff --git a/ports/atmel-samd/mphalport.c b/ports/atmel-samd/mphalport.c index a039b5d2582f..6815fefbaa4f 100644 --- a/ports/atmel-samd/mphalport.c +++ b/ports/atmel-samd/mphalport.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/atmel-samd/mphalport.h b/ports/atmel-samd/mphalport.h index 8b9b7fd14c53..c5371e2f930d 100644 --- a/ports/atmel-samd/mphalport.h +++ b/ports/atmel-samd/mphalport.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_MPHALPORT_H #define MICROPY_INCLUDED_ATMEL_SAMD_MPHALPORT_H diff --git a/ports/atmel-samd/qstrdefsport.h b/ports/atmel-samd/qstrdefsport.h index 00d3e2ae3c55..b0f5566fabf2 100644 --- a/ports/atmel-samd/qstrdefsport.h +++ b/ports/atmel-samd/qstrdefsport.h @@ -1,2 +1,8 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // qstrs specific to this port // *FORMAT-OFF* diff --git a/ports/atmel-samd/reset.c b/ports/atmel-samd/reset.c index 066c9897a67d..9cacd4ab951a 100644 --- a/ports/atmel-samd/reset.c +++ b/ports/atmel-samd/reset.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "include/sam.h" diff --git a/ports/atmel-samd/reset.h b/ports/atmel-samd/reset.h index 482eb6ee80dc..49eac14463e8 100644 --- a/ports/atmel-samd/reset.h +++ b/ports/atmel-samd/reset.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_RESET_H #define MICROPY_INCLUDED_ATMEL_SAMD_RESET_H diff --git a/ports/atmel-samd/samd_peripherals_config.h b/ports/atmel-samd/samd_peripherals_config.h index 37df7b19a84a..bfd015a7f86e 100644 --- a/ports/atmel-samd/samd_peripherals_config.h +++ b/ports/atmel-samd/samd_peripherals_config.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_SAMD_PERIPHERALS_CONFIG_H #define MICROPY_INCLUDED_ATMEL_SAMD_SAMD_PERIPHERALS_CONFIG_H diff --git a/ports/atmel-samd/sd_mmc/conf_sd_mmc.h b/ports/atmel-samd/sd_mmc/conf_sd_mmc.h index 735dd3783c9e..a695b6a8feec 100644 --- a/ports/atmel-samd/sd_mmc/conf_sd_mmc.h +++ b/ports/atmel-samd/sd_mmc/conf_sd_mmc.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /* Auto-generated config file conf_sd_mmc.h */ #ifndef CONF_SD_MMC_H #define CONF_SD_MMC_H diff --git a/ports/atmel-samd/sd_mmc/sd_mmc.c b/ports/atmel-samd/sd_mmc/sd_mmc.c index b558922d1f14..60b4d9f8985a 100644 --- a/ports/atmel-samd/sd_mmc/sd_mmc.c +++ b/ports/atmel-samd/sd_mmc/sd_mmc.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /** * \file * diff --git a/ports/atmel-samd/sd_mmc/sd_mmc.h b/ports/atmel-samd/sd_mmc/sd_mmc.h index 667520317cd8..dd5a1ffb9497 100644 --- a/ports/atmel-samd/sd_mmc/sd_mmc.h +++ b/ports/atmel-samd/sd_mmc/sd_mmc.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /** * \file * diff --git a/ports/atmel-samd/sd_mmc/sd_mmc_protocol.h b/ports/atmel-samd/sd_mmc/sd_mmc_protocol.h index c205415559bc..9e96ebb3c815 100644 --- a/ports/atmel-samd/sd_mmc/sd_mmc_protocol.h +++ b/ports/atmel-samd/sd_mmc/sd_mmc_protocol.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /** * \file * diff --git a/ports/atmel-samd/supervisor/internal_flash.c b/ports/atmel-samd/supervisor/internal_flash.c index 3e57e21d9148..02ad1cb4f7f3 100644 --- a/ports/atmel-samd/supervisor/internal_flash.c +++ b/ports/atmel-samd/supervisor/internal_flash.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// +// SPDX-License-Identifier: MIT #include "supervisor/internal_flash.h" diff --git a/ports/atmel-samd/supervisor/internal_flash.h b/ports/atmel-samd/supervisor/internal_flash.h index 1199e3b9c486..af3219802321 100644 --- a/ports/atmel-samd/supervisor/internal_flash.h +++ b/ports/atmel-samd/supervisor/internal_flash.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_INTERNAL_FLASH_H #define MICROPY_INCLUDED_ATMEL_SAMD_INTERNAL_FLASH_H diff --git a/ports/atmel-samd/supervisor/port.c b/ports/atmel-samd/supervisor/port.c index 42445030b28c..8f5115789da2 100644 --- a/ports/atmel-samd/supervisor/port.c +++ b/ports/atmel-samd/supervisor/port.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/atmel-samd/supervisor/qspi_flash.c b/ports/atmel-samd/supervisor/qspi_flash.c index 5adb40e737e1..956d71044f84 100644 --- a/ports/atmel-samd/supervisor/qspi_flash.c +++ b/ports/atmel-samd/supervisor/qspi_flash.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016, 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016, 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/spi_flash_api.h" diff --git a/ports/atmel-samd/supervisor/samd_prevent_sleep.h b/ports/atmel-samd/supervisor/samd_prevent_sleep.h index ea5581134cc2..27a3ee42279a 100644 --- a/ports/atmel-samd/supervisor/samd_prevent_sleep.h +++ b/ports/atmel-samd/supervisor/samd_prevent_sleep.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// +// SPDX-License-Identifier: MIT #pragma once #include diff --git a/ports/atmel-samd/supervisor/usb.c b/ports/atmel-samd/supervisor/usb.c index 63ceaa9a3345..88392f57d694 100644 --- a/ports/atmel-samd/supervisor/usb.c +++ b/ports/atmel-samd/supervisor/usb.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017, 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017, 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "atmel_start_pins.h" #include "hpl/pm/hpl_pm_base.h" diff --git a/ports/atmel-samd/timer_handler.c b/ports/atmel-samd/timer_handler.c index eab9311d6a82..55e5818e7250 100644 --- a/ports/atmel-samd/timer_handler.c +++ b/ports/atmel-samd/timer_handler.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/atmel-samd/timer_handler.h b/ports/atmel-samd/timer_handler.h index 517ad768baac..2a44457eaa4c 100644 --- a/ports/atmel-samd/timer_handler.h +++ b/ports/atmel-samd/timer_handler.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_TIMER_HANDLER_H #define MICROPY_INCLUDED_ATMEL_SAMD_TIMER_HANDLER_H diff --git a/ports/atmel-samd/tools/gen_pin_name_table.py b/ports/atmel-samd/tools/gen_pin_name_table.py index 3eb0fbdbb3c4..16af2540bddb 100644 --- a/ports/atmel-samd/tools/gen_pin_name_table.py +++ b/ports/atmel-samd/tools/gen_pin_name_table.py @@ -1,26 +1,8 @@ -# This file is part of the MicroPython project, http://micropython.org/ -# -# The MIT License (MIT) +# This file is part of the CircuitPython project: https://circuitpython.org # # SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries # -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. +# SPDX-License-Identifier: MIT # This helper generates the pinout tables in ../README.rst. diff --git a/ports/broadcom/Makefile b/ports/broadcom/Makefile index 0a2fda994406..92c00ebf944c 100644 --- a/ports/broadcom/Makefile +++ b/ports/broadcom/Makefile @@ -1,26 +1,8 @@ -# This file is part of the MicroPython project, http://micropython.org/ -# -# The MIT License (MIT) +# This file is part of the CircuitPython project: https://circuitpython.org # # SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries # -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. +# SPDX-License-Identifier: MIT include ../../py/circuitpy_mkenv.mk diff --git a/ports/broadcom/background.c b/ports/broadcom/background.c index 9074a80400a4..5bb961eea59a 100644 --- a/ports/broadcom/background.c +++ b/ports/broadcom/background.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "background.h" #include "py/runtime.h" diff --git a/ports/broadcom/background.h b/ports/broadcom/background.h index ecbdd5d363e7..30ed25c0fa75 100644 --- a/ports/broadcom/background.h +++ b/ports/broadcom/background.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_BROADCOM_BACKGROUND_H #define MICROPY_INCLUDED_BROADCOM_BACKGROUND_H diff --git a/ports/broadcom/bindings/videocore/Framebuffer.c b/ports/broadcom/bindings/videocore/Framebuffer.c index 0816e31aed62..9c2278400930 100644 --- a/ports/broadcom/bindings/videocore/Framebuffer.c +++ b/ports/broadcom/bindings/videocore/Framebuffer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/objproperty.h" diff --git a/ports/broadcom/bindings/videocore/Framebuffer.h b/ports/broadcom/bindings/videocore/Framebuffer.h index 2c981a4b859c..cb6c04a67bca 100644 --- a/ports/broadcom/bindings/videocore/Framebuffer.h +++ b/ports/broadcom/bindings/videocore/Framebuffer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/broadcom/bindings/videocore/__init__.c b/ports/broadcom/bindings/videocore/__init__.c index ffb90680ef12..34cee303af40 100644 --- a/ports/broadcom/bindings/videocore/__init__.c +++ b/ports/broadcom/bindings/videocore/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/broadcom/boards/diodes_delight_piunora/board.c b/ports/broadcom/boards/diodes_delight_piunora/board.c index ab9454298c10..612d93776df1 100644 --- a/ports/broadcom/boards/diodes_delight_piunora/board.c +++ b/ports/broadcom/boards/diodes_delight_piunora/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/broadcom/boards/diodes_delight_piunora/mpconfigboard.h b/ports/broadcom/boards/diodes_delight_piunora/mpconfigboard.h index 12a68201fa83..d5690fe7a0ae 100644 --- a/ports/broadcom/boards/diodes_delight_piunora/mpconfigboard.h +++ b/ports/broadcom/boards/diodes_delight_piunora/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Diodes Delight Piunora" #define DEFAULT_I2C_BUS_SCL (&pin_GPIO3) diff --git a/ports/broadcom/boards/diodes_delight_piunora/pins.c b/ports/broadcom/boards/diodes_delight_piunora/pins.c index a6907d398540..ea410bf247eb 100644 --- a/ports/broadcom/boards/diodes_delight_piunora/pins.c +++ b/ports/broadcom/boards/diodes_delight_piunora/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/broadcom/boards/raspberrypi_cm4/board.c b/ports/broadcom/boards/raspberrypi_cm4/board.c index ab9454298c10..612d93776df1 100644 --- a/ports/broadcom/boards/raspberrypi_cm4/board.c +++ b/ports/broadcom/boards/raspberrypi_cm4/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/broadcom/boards/raspberrypi_cm4/mpconfigboard.h b/ports/broadcom/boards/raspberrypi_cm4/mpconfigboard.h index fbd258577e2a..d34ed6924fe9 100644 --- a/ports/broadcom/boards/raspberrypi_cm4/mpconfigboard.h +++ b/ports/broadcom/boards/raspberrypi_cm4/mpconfigboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Raspberry Pi Compute Module 4" diff --git a/ports/broadcom/boards/raspberrypi_cm4/pins.c b/ports/broadcom/boards/raspberrypi_cm4/pins.c index 8999066cb34e..0d1e8e4abeb8 100644 --- a/ports/broadcom/boards/raspberrypi_cm4/pins.c +++ b/ports/broadcom/boards/raspberrypi_cm4/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/broadcom/boards/raspberrypi_cm4io/board.c b/ports/broadcom/boards/raspberrypi_cm4io/board.c index ab9454298c10..612d93776df1 100644 --- a/ports/broadcom/boards/raspberrypi_cm4io/board.c +++ b/ports/broadcom/boards/raspberrypi_cm4io/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/broadcom/boards/raspberrypi_cm4io/mpconfigboard.h b/ports/broadcom/boards/raspberrypi_cm4io/mpconfigboard.h index 832a0b887ba8..e87636d1afeb 100644 --- a/ports/broadcom/boards/raspberrypi_cm4io/mpconfigboard.h +++ b/ports/broadcom/boards/raspberrypi_cm4io/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Raspberry Pi Compute Module 4 IO Board" #define DEFAULT_I2C_BUS_SCL (&pin_GPIO3) diff --git a/ports/broadcom/boards/raspberrypi_cm4io/pins.c b/ports/broadcom/boards/raspberrypi_cm4io/pins.c index db4eb917107a..7c40a17369b2 100644 --- a/ports/broadcom/boards/raspberrypi_cm4io/pins.c +++ b/ports/broadcom/boards/raspberrypi_cm4io/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/broadcom/boards/raspberrypi_pi4b/board.c b/ports/broadcom/boards/raspberrypi_pi4b/board.c index ab9454298c10..612d93776df1 100644 --- a/ports/broadcom/boards/raspberrypi_pi4b/board.c +++ b/ports/broadcom/boards/raspberrypi_pi4b/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/broadcom/boards/raspberrypi_pi4b/mpconfigboard.h b/ports/broadcom/boards/raspberrypi_pi4b/mpconfigboard.h index 521c8fda259c..dda8dad382a8 100644 --- a/ports/broadcom/boards/raspberrypi_pi4b/mpconfigboard.h +++ b/ports/broadcom/boards/raspberrypi_pi4b/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Raspberry Pi 4B" #define DEFAULT_I2C_BUS_SCL (&pin_GPIO3) diff --git a/ports/broadcom/boards/raspberrypi_pi4b/pins.c b/ports/broadcom/boards/raspberrypi_pi4b/pins.c index db4eb917107a..7c40a17369b2 100644 --- a/ports/broadcom/boards/raspberrypi_pi4b/pins.c +++ b/ports/broadcom/boards/raspberrypi_pi4b/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/broadcom/boards/raspberrypi_zero/board.c b/ports/broadcom/boards/raspberrypi_zero/board.c index ab9454298c10..612d93776df1 100644 --- a/ports/broadcom/boards/raspberrypi_zero/board.c +++ b/ports/broadcom/boards/raspberrypi_zero/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/broadcom/boards/raspberrypi_zero/mpconfigboard.h b/ports/broadcom/boards/raspberrypi_zero/mpconfigboard.h index c1566e8fc0c9..c03207468b04 100644 --- a/ports/broadcom/boards/raspberrypi_zero/mpconfigboard.h +++ b/ports/broadcom/boards/raspberrypi_zero/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Raspberry Pi Zero" #define DEFAULT_I2C_BUS_SCL (&pin_GPIO3) diff --git a/ports/broadcom/boards/raspberrypi_zero/pins.c b/ports/broadcom/boards/raspberrypi_zero/pins.c index bb6632b923ca..362675216b43 100644 --- a/ports/broadcom/boards/raspberrypi_zero/pins.c +++ b/ports/broadcom/boards/raspberrypi_zero/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/broadcom/boards/raspberrypi_zero2w/board.c b/ports/broadcom/boards/raspberrypi_zero2w/board.c index ab9454298c10..612d93776df1 100644 --- a/ports/broadcom/boards/raspberrypi_zero2w/board.c +++ b/ports/broadcom/boards/raspberrypi_zero2w/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/broadcom/boards/raspberrypi_zero2w/mpconfigboard.h b/ports/broadcom/boards/raspberrypi_zero2w/mpconfigboard.h index e65bf5c1636f..f0c90491d72e 100644 --- a/ports/broadcom/boards/raspberrypi_zero2w/mpconfigboard.h +++ b/ports/broadcom/boards/raspberrypi_zero2w/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Raspberry Pi Zero 2W" #define DEFAULT_I2C_BUS_SCL (&pin_GPIO3) diff --git a/ports/broadcom/boards/raspberrypi_zero2w/pins.c b/ports/broadcom/boards/raspberrypi_zero2w/pins.c index 5e12613b3f19..77295b2152fe 100644 --- a/ports/broadcom/boards/raspberrypi_zero2w/pins.c +++ b/ports/broadcom/boards/raspberrypi_zero2w/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/broadcom/boards/raspberrypi_zero_w/board.c b/ports/broadcom/boards/raspberrypi_zero_w/board.c index ab9454298c10..612d93776df1 100644 --- a/ports/broadcom/boards/raspberrypi_zero_w/board.c +++ b/ports/broadcom/boards/raspberrypi_zero_w/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/broadcom/boards/raspberrypi_zero_w/mpconfigboard.h b/ports/broadcom/boards/raspberrypi_zero_w/mpconfigboard.h index 4dc1372ae50f..468ea5b3f099 100644 --- a/ports/broadcom/boards/raspberrypi_zero_w/mpconfigboard.h +++ b/ports/broadcom/boards/raspberrypi_zero_w/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Raspberry Pi Zero W" #define DEFAULT_I2C_BUS_SCL (&pin_GPIO3) diff --git a/ports/broadcom/boards/raspberrypi_zero_w/pins.c b/ports/broadcom/boards/raspberrypi_zero_w/pins.c index bb6632b923ca..362675216b43 100644 --- a/ports/broadcom/boards/raspberrypi_zero_w/pins.c +++ b/ports/broadcom/boards/raspberrypi_zero_w/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/broadcom/broadcom_peripherals_config.h b/ports/broadcom/broadcom_peripherals_config.h index e31b3f635c8a..64d35affea3e 100644 --- a/ports/broadcom/broadcom_peripherals_config.h +++ b/ports/broadcom/broadcom_peripherals_config.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/broadcom/common-hal/board/__init__.c b/ports/broadcom/common-hal/board/__init__.c index 3c7f30df2240..bbb34aa3454a 100644 --- a/ports/broadcom/common-hal/board/__init__.c +++ b/ports/broadcom/common-hal/board/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/broadcom/common-hal/busio/I2C.c b/ports/broadcom/common-hal/busio/I2C.c index 64187f434bd3..c0e40a681120 100644 --- a/ports/broadcom/common-hal/busio/I2C.c +++ b/ports/broadcom/common-hal/busio/I2C.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/mperrno.h" #include "py/mphal.h" diff --git a/ports/broadcom/common-hal/busio/I2C.h b/ports/broadcom/common-hal/busio/I2C.h index d8e45bef854b..6747db7b09e1 100644 --- a/ports/broadcom/common-hal/busio/I2C.h +++ b/ports/broadcom/common-hal/busio/I2C.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_BROADCOM_COMMON_HAL_BUSIO_I2C_H #define MICROPY_INCLUDED_BROADCOM_COMMON_HAL_BUSIO_I2C_H diff --git a/ports/broadcom/common-hal/busio/SPI.c b/ports/broadcom/common-hal/busio/SPI.c index 5f21f09241b2..5169470de84b 100644 --- a/ports/broadcom/common-hal/busio/SPI.c +++ b/ports/broadcom/common-hal/busio/SPI.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/busio/SPI.h" diff --git a/ports/broadcom/common-hal/busio/SPI.h b/ports/broadcom/common-hal/busio/SPI.h index d1d5fbaf699a..659a26f40847 100644 --- a/ports/broadcom/common-hal/busio/SPI.h +++ b/ports/broadcom/common-hal/busio/SPI.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_BROADCOM_COMMON_HAL_BUSIO_SPI_H #define MICROPY_INCLUDED_BROADCOM_COMMON_HAL_BUSIO_SPI_H diff --git a/ports/broadcom/common-hal/busio/UART.c b/ports/broadcom/common-hal/busio/UART.c index e6ab9f1fce45..a5dc2732b698 100644 --- a/ports/broadcom/common-hal/busio/UART.c +++ b/ports/broadcom/common-hal/busio/UART.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include "shared-bindings/busio/UART.h" diff --git a/ports/broadcom/common-hal/busio/UART.h b/ports/broadcom/common-hal/busio/UART.h index 57926ca58bb4..8503fa045980 100644 --- a/ports/broadcom/common-hal/busio/UART.h +++ b/ports/broadcom/common-hal/busio/UART.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_BROADCOM_COMMON_HAL_BUSIO_UART_H #define MICROPY_INCLUDED_BROADCOM_COMMON_HAL_BUSIO_UART_H diff --git a/ports/broadcom/common-hal/busio/__init__.c b/ports/broadcom/common-hal/busio/__init__.c index 41761b6743ae..b726684324a3 100644 --- a/ports/broadcom/common-hal/busio/__init__.c +++ b/ports/broadcom/common-hal/busio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No busio module functions. diff --git a/ports/broadcom/common-hal/digitalio/DigitalInOut.c b/ports/broadcom/common-hal/digitalio/DigitalInOut.c index ac747235c27c..b2b0aae404bd 100644 --- a/ports/broadcom/common-hal/digitalio/DigitalInOut.c +++ b/ports/broadcom/common-hal/digitalio/DigitalInOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/broadcom/common-hal/digitalio/DigitalInOut.h b/ports/broadcom/common-hal/digitalio/DigitalInOut.h index 8cb0236390dd..e002542a0b5c 100644 --- a/ports/broadcom/common-hal/digitalio/DigitalInOut.h +++ b/ports/broadcom/common-hal/digitalio/DigitalInOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_BROADCOM_COMMON_HAL_DIGITALIO_DIGITALINOUT_H #define MICROPY_INCLUDED_BROADCOM_COMMON_HAL_DIGITALIO_DIGITALINOUT_H diff --git a/ports/broadcom/common-hal/digitalio/__init__.c b/ports/broadcom/common-hal/digitalio/__init__.c index 20fad459593a..fa222ed01f03 100644 --- a/ports/broadcom/common-hal/digitalio/__init__.c +++ b/ports/broadcom/common-hal/digitalio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No digitalio module functions. diff --git a/ports/broadcom/common-hal/microcontroller/Pin.c b/ports/broadcom/common-hal/microcontroller/Pin.c index 82963f563357..758256f21cf4 100644 --- a/ports/broadcom/common-hal/microcontroller/Pin.c +++ b/ports/broadcom/common-hal/microcontroller/Pin.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/broadcom/common-hal/microcontroller/Pin.h b/ports/broadcom/common-hal/microcontroller/Pin.h index d234657ddab7..15e643b0629b 100644 --- a/ports/broadcom/common-hal/microcontroller/Pin.h +++ b/ports/broadcom/common-hal/microcontroller/Pin.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_BROADCOM_COMMON_HAL_MICROCONTROLLER_PIN_H #define MICROPY_INCLUDED_BROADCOM_COMMON_HAL_MICROCONTROLLER_PIN_H diff --git a/ports/broadcom/common-hal/microcontroller/Processor.c b/ports/broadcom/common-hal/microcontroller/Processor.c index 259ecb6c5f50..4956604f9b6b 100644 --- a/ports/broadcom/common-hal/microcontroller/Processor.c +++ b/ports/broadcom/common-hal/microcontroller/Processor.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/microcontroller/Processor.h" diff --git a/ports/broadcom/common-hal/microcontroller/Processor.h b/ports/broadcom/common-hal/microcontroller/Processor.h index 5abaf629d7bd..9850e2c148c9 100644 --- a/ports/broadcom/common-hal/microcontroller/Processor.h +++ b/ports/broadcom/common-hal/microcontroller/Processor.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_BROADCOM_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H #define MICROPY_INCLUDED_BROADCOM_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H diff --git a/ports/broadcom/common-hal/microcontroller/__init__.c b/ports/broadcom/common-hal/microcontroller/__init__.c index 53f04ebec3d7..b0ed1fcb9ec6 100644 --- a/ports/broadcom/common-hal/microcontroller/__init__.c +++ b/ports/broadcom/common-hal/microcontroller/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/microcontroller/__init__.h" diff --git a/ports/broadcom/common-hal/microcontroller/__init__.h b/ports/broadcom/common-hal/microcontroller/__init__.h index 5490850e5b8f..7f7170129dff 100644 --- a/ports/broadcom/common-hal/microcontroller/__init__.h +++ b/ports/broadcom/common-hal/microcontroller/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_BROADCOM_COMMON_HAL_MICROCONTROLLER___INIT___H #define MICROPY_INCLUDED_BROADCOM_COMMON_HAL_MICROCONTROLLER___INIT___H diff --git a/ports/broadcom/common-hal/neopixel_write/__init__.c b/ports/broadcom/common-hal/neopixel_write/__init__.c index 93b5641e895a..175caf540417 100644 --- a/ports/broadcom/common-hal/neopixel_write/__init__.c +++ b/ports/broadcom/common-hal/neopixel_write/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/neopixel_write/__init__.h" diff --git a/ports/broadcom/common-hal/os/__init__.c b/ports/broadcom/common-hal/os/__init__.c index d5f234688538..eaf402deb14d 100644 --- a/ports/broadcom/common-hal/os/__init__.c +++ b/ports/broadcom/common-hal/os/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "genhdr/mpversion.h" #include "py/mpconfig.h" diff --git a/ports/broadcom/common-hal/rtc/RTC.c b/ports/broadcom/common-hal/rtc/RTC.c index b2aea7b57d2f..c7092edd3fe7 100644 --- a/ports/broadcom/common-hal/rtc/RTC.c +++ b/ports/broadcom/common-hal/rtc/RTC.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Nick Moore for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Nick Moore for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/broadcom/common-hal/rtc/RTC.h b/ports/broadcom/common-hal/rtc/RTC.h index 09ae4ea86f30..7c71e373a1e6 100644 --- a/ports/broadcom/common-hal/rtc/RTC.h +++ b/ports/broadcom/common-hal/rtc/RTC.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Noralf Trønnes - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Noralf Trønnes +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_BROADCOM_COMMON_HAL_RTC_RTC_H #define MICROPY_INCLUDED_BROADCOM_COMMON_HAL_RTC_RTC_H diff --git a/ports/broadcom/common-hal/rtc/__init__.c b/ports/broadcom/common-hal/rtc/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/broadcom/common-hal/rtc/__init__.c +++ b/ports/broadcom/common-hal/rtc/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/broadcom/common-hal/sdioio/SDCard.c b/ports/broadcom/common-hal/sdioio/SDCard.c index 32e6ad95d164..cd523ff4373f 100644 --- a/ports/broadcom/common-hal/sdioio/SDCard.c +++ b/ports/broadcom/common-hal/sdioio/SDCard.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include "mphalport.h" diff --git a/ports/broadcom/common-hal/sdioio/SDCard.h b/ports/broadcom/common-hal/sdioio/SDCard.h index d180bc19a274..e63f8db99f29 100644 --- a/ports/broadcom/common-hal/sdioio/SDCard.h +++ b/ports/broadcom/common-hal/sdioio/SDCard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/broadcom/common-hal/sdioio/__init__.c b/ports/broadcom/common-hal/sdioio/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/broadcom/common-hal/sdioio/__init__.c +++ b/ports/broadcom/common-hal/sdioio/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/broadcom/common-hal/sdioio/__init__.h b/ports/broadcom/common-hal/sdioio/__init__.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/broadcom/common-hal/sdioio/__init__.h +++ b/ports/broadcom/common-hal/sdioio/__init__.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/broadcom/common-hal/videocore/Framebuffer.c b/ports/broadcom/common-hal/videocore/Framebuffer.c index 8dbc5f9fb988..26672d95f4d3 100644 --- a/ports/broadcom/common-hal/videocore/Framebuffer.c +++ b/ports/broadcom/common-hal/videocore/Framebuffer.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + #include "bindings/videocore/Framebuffer.h" diff --git a/ports/broadcom/common-hal/videocore/Framebuffer.h b/ports/broadcom/common-hal/videocore/Framebuffer.h index 267e299d9226..939204efbcd7 100644 --- a/ports/broadcom/common-hal/videocore/Framebuffer.h +++ b/ports/broadcom/common-hal/videocore/Framebuffer.h @@ -1,30 +1,10 @@ -#pragma once +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +#pragma once #include "py/obj.h" diff --git a/ports/broadcom/mpconfigport.h b/ports/broadcom/mpconfigport.h index 453f126818c8..46a92cba9040 100644 --- a/ports/broadcom/mpconfigport.h +++ b/ports/broadcom/mpconfigport.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef __INCLUDED_MPCONFIGPORT_H #define __INCLUDED_MPCONFIGPORT_H diff --git a/ports/broadcom/mphalport.c b/ports/broadcom/mphalport.c index fa7dcaac8ebe..32718511f05e 100644 --- a/ports/broadcom/mphalport.c +++ b/ports/broadcom/mphalport.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + #include #include diff --git a/ports/broadcom/mphalport.h b/ports/broadcom/mphalport.h index d67c9f4a504b..bde56ff51732 100644 --- a/ports/broadcom/mphalport.h +++ b/ports/broadcom/mphalport.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_BROADCOM_MPHALPORT_H #define MICROPY_INCLUDED_BROADCOM_MPHALPORT_H diff --git a/ports/broadcom/qstrdefsport.h b/ports/broadcom/qstrdefsport.h index 6b44d1062b4d..3abaafc7fcc1 100644 --- a/ports/broadcom/qstrdefsport.h +++ b/ports/broadcom/qstrdefsport.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2014 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2014 Damien P. George +// +// SPDX-License-Identifier: MIT // qstrs specific to this port, only needed if they aren't auto-generated diff --git a/ports/broadcom/supervisor/internal_flash.c b/ports/broadcom/supervisor/internal_flash.c index 806d3fb18b59..0fa8f1e157ae 100644 --- a/ports/broadcom/supervisor/internal_flash.c +++ b/ports/broadcom/supervisor/internal_flash.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/flash.h" #include "supervisor/internal_flash.h" diff --git a/ports/broadcom/supervisor/internal_flash.h b/ports/broadcom/supervisor/internal_flash.h index f27e161dd106..7239f2e94644 100644 --- a/ports/broadcom/supervisor/internal_flash.h +++ b/ports/broadcom/supervisor/internal_flash.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_BROADCOM_INTERNAL_FLASH_H #define MICROPY_INCLUDED_BROADCOM_INTERNAL_FLASH_H diff --git a/ports/broadcom/supervisor/port.c b/ports/broadcom/supervisor/port.c index afb205ea2130..6a936586995d 100644 --- a/ports/broadcom/supervisor/port.c +++ b/ports/broadcom/supervisor/port.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/broadcom/supervisor/usb.c b/ports/broadcom/supervisor/usb.c index 7c38b1a4c041..166ed4e3e2ed 100644 --- a/ports/broadcom/supervisor/usb.c +++ b/ports/broadcom/supervisor/usb.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017, 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017, 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "lib/tinyusb/src/device/usbd.h" #include "py/runtime.h" diff --git a/ports/cxd56/Makefile b/ports/cxd56/Makefile index c6203350d127..30abb8bb47fd 100644 --- a/ports/cxd56/Makefile +++ b/ports/cxd56/Makefile @@ -1,26 +1,8 @@ -# This file is part of the MicroPython project, http://micropython.org/ +# This file is part of the CircuitPython project: https://circuitpython.org # -# The MIT License (MIT) +# SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation # -# Copyright 2019 Sony Semiconductor Solutions Corporation -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. +# SPDX-License-Identifier: MIT include ../../py/circuitpy_mkenv.mk diff --git a/ports/cxd56/alloca.h b/ports/cxd56/alloca.h index aad2f8b5b33e..df19d3f109fb 100644 --- a/ports/cxd56/alloca.h +++ b/ports/cxd56/alloca.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + #ifndef _ALLOCA_H #define _ALLOCA_H diff --git a/ports/cxd56/background.c b/ports/cxd56/background.c index 8425f8cfa201..5b03ed12c2d3 100644 --- a/ports/cxd56/background.c +++ b/ports/cxd56/background.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #include "background.h" diff --git a/ports/cxd56/background.h b/ports/cxd56/background.h index 5f76e644292c..6bff0f1e8edd 100644 --- a/ports/cxd56/background.h +++ b/ports/cxd56/background.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_CXD56_BACKGROUND_H #define MICROPY_INCLUDED_CXD56_BACKGROUND_H diff --git a/ports/cxd56/boards/spresense/board.c b/ports/cxd56/boards/spresense/board.c index b397789c3e33..c6e196b17a80 100644 --- a/ports/cxd56/boards/spresense/board.c +++ b/ports/cxd56/boards/spresense/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/cxd56/boards/spresense/mpconfigboard.h b/ports/cxd56/boards/spresense/mpconfigboard.h index adfcbacb9e04..1b0f97fac19f 100644 --- a/ports/cxd56/boards/spresense/mpconfigboard.h +++ b/ports/cxd56/boards/spresense/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #define MICROPY_HW_BOARD_NAME "SPRESENSE" #define MICROPY_HW_MCU_NAME "CXD5602" diff --git a/ports/cxd56/boards/spresense/pins.c b/ports/cxd56/boards/spresense/pins.c index f3b6571a1e25..a552307e268f 100644 --- a/ports/cxd56/boards/spresense/pins.c +++ b/ports/cxd56/boards/spresense/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #include "py/objtuple.h" diff --git a/ports/cxd56/common-hal/analogio/AnalogIn.c b/ports/cxd56/common-hal/analogio/AnalogIn.c index bb19d02c2521..ca27afe83f78 100644 --- a/ports/cxd56/common-hal/analogio/AnalogIn.c +++ b/ports/cxd56/common-hal/analogio/AnalogIn.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/cxd56/common-hal/analogio/AnalogIn.h b/ports/cxd56/common-hal/analogio/AnalogIn.h index 9cf73003f50d..f70f7aff0c4b 100644 --- a/ports/cxd56/common-hal/analogio/AnalogIn.h +++ b/ports/cxd56/common-hal/analogio/AnalogIn.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_CXD56_COMMON_HAL_ANALOGIO_ANALOGIN_H #define MICROPY_INCLUDED_CXD56_COMMON_HAL_ANALOGIO_ANALOGIN_H diff --git a/ports/cxd56/common-hal/analogio/AnalogOut.c b/ports/cxd56/common-hal/analogio/AnalogOut.c index 7252d09c38d9..152d3b799f45 100644 --- a/ports/cxd56/common-hal/analogio/AnalogOut.c +++ b/ports/cxd56/common-hal/analogio/AnalogOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" diff --git a/ports/cxd56/common-hal/analogio/AnalogOut.h b/ports/cxd56/common-hal/analogio/AnalogOut.h index b0fd65265a08..00daf5f0bbda 100644 --- a/ports/cxd56/common-hal/analogio/AnalogOut.h +++ b/ports/cxd56/common-hal/analogio/AnalogOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_CXD56_COMMON_HAL_ANALOGIO_ANALOGOUT_H #define MICROPY_INCLUDED_CXD56_COMMON_HAL_ANALOGIO_ANALOGOUT_H diff --git a/ports/cxd56/common-hal/analogio/__init__.c b/ports/cxd56/common-hal/analogio/__init__.c index eea58c77d631..d9027d63ec8b 100644 --- a/ports/cxd56/common-hal/analogio/__init__.c +++ b/ports/cxd56/common-hal/analogio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No analogio module functions. diff --git a/ports/cxd56/common-hal/board/__init__.c b/ports/cxd56/common-hal/board/__init__.c index 7a409d503edc..3cb457d1ce24 100644 --- a/ports/cxd56/common-hal/board/__init__.c +++ b/ports/cxd56/common-hal/board/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No board module functions. diff --git a/ports/cxd56/common-hal/busio/I2C.c b/ports/cxd56/common-hal/busio/I2C.c index 07d9024a518a..ca7e4476c3e2 100644 --- a/ports/cxd56/common-hal/busio/I2C.c +++ b/ports/cxd56/common-hal/busio/I2C.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/cxd56/common-hal/busio/I2C.h b/ports/cxd56/common-hal/busio/I2C.h index 4d1d3ce9b863..61db1d9cd7fd 100644 --- a/ports/cxd56/common-hal/busio/I2C.h +++ b/ports/cxd56/common-hal/busio/I2C.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_CXD56_COMMON_HAL_BUSIO_I2C_H #define MICROPY_INCLUDED_CXD56_COMMON_HAL_BUSIO_I2C_H diff --git a/ports/cxd56/common-hal/busio/SPI.c b/ports/cxd56/common-hal/busio/SPI.c index 5131028665c0..2e4ffbbbd183 100644 --- a/ports/cxd56/common-hal/busio/SPI.c +++ b/ports/cxd56/common-hal/busio/SPI.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/cxd56/common-hal/busio/SPI.h b/ports/cxd56/common-hal/busio/SPI.h index ee04de08c4e1..70e131cfff06 100644 --- a/ports/cxd56/common-hal/busio/SPI.h +++ b/ports/cxd56/common-hal/busio/SPI.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_CXD56_COMMON_HAL_BUSIO_SPI_H #define MICROPY_INCLUDED_CXD56_COMMON_HAL_BUSIO_SPI_H diff --git a/ports/cxd56/common-hal/busio/UART.c b/ports/cxd56/common-hal/busio/UART.c index 8eb24d1e4603..12325d94cba3 100644 --- a/ports/cxd56/common-hal/busio/UART.c +++ b/ports/cxd56/common-hal/busio/UART.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/cxd56/common-hal/busio/UART.h b/ports/cxd56/common-hal/busio/UART.h index a69c470566b1..7f8fd27dd7dc 100644 --- a/ports/cxd56/common-hal/busio/UART.h +++ b/ports/cxd56/common-hal/busio/UART.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_CXD56_COMMON_HAL_BUSIO_UART_H #define MICROPY_INCLUDED_CXD56_COMMON_HAL_BUSIO_UART_H diff --git a/ports/cxd56/common-hal/busio/__init__.c b/ports/cxd56/common-hal/busio/__init__.c index 41761b6743ae..b726684324a3 100644 --- a/ports/cxd56/common-hal/busio/__init__.c +++ b/ports/cxd56/common-hal/busio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No busio module functions. diff --git a/ports/cxd56/common-hal/camera/Camera.c b/ports/cxd56/common-hal/camera/Camera.c index 4f468a537b95..239460ab07ea 100644 --- a/ports/cxd56/common-hal/camera/Camera.c +++ b/ports/cxd56/common-hal/camera/Camera.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2020 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2020 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/cxd56/common-hal/camera/Camera.h b/ports/cxd56/common-hal/camera/Camera.h index 7056237d16f7..8e9a0b3911e5 100644 --- a/ports/cxd56/common-hal/camera/Camera.h +++ b/ports/cxd56/common-hal/camera/Camera.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2020 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2020 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_CXD56_COMMON_HAL_CAMERA_CAMERA_H #define MICROPY_INCLUDED_CXD56_COMMON_HAL_CAMERA_CAMERA_H diff --git a/ports/cxd56/common-hal/camera/__init__.c b/ports/cxd56/common-hal/camera/__init__.c index bf38b5f2bd3b..9afd13e41def 100644 --- a/ports/cxd56/common-hal/camera/__init__.c +++ b/ports/cxd56/common-hal/camera/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No camera module functions. diff --git a/ports/cxd56/common-hal/digitalio/DigitalInOut.c b/ports/cxd56/common-hal/digitalio/DigitalInOut.c index c1f247d0a9b8..6936fe4f8cd6 100644 --- a/ports/cxd56/common-hal/digitalio/DigitalInOut.c +++ b/ports/cxd56/common-hal/digitalio/DigitalInOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/cxd56/common-hal/digitalio/DigitalInOut.h b/ports/cxd56/common-hal/digitalio/DigitalInOut.h index 58a11817c8a3..6df87313d043 100644 --- a/ports/cxd56/common-hal/digitalio/DigitalInOut.h +++ b/ports/cxd56/common-hal/digitalio/DigitalInOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_CXD56_COMMON_HAL_DIGITALIO_DIGITALINOUT_H #define MICROPY_INCLUDED_CXD56_COMMON_HAL_DIGITALIO_DIGITALINOUT_H diff --git a/ports/cxd56/common-hal/digitalio/__init__.c b/ports/cxd56/common-hal/digitalio/__init__.c index 20fad459593a..fa222ed01f03 100644 --- a/ports/cxd56/common-hal/digitalio/__init__.c +++ b/ports/cxd56/common-hal/digitalio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No digitalio module functions. diff --git a/ports/cxd56/common-hal/gnss/GNSS.c b/ports/cxd56/common-hal/gnss/GNSS.c index 3c63990cf99c..bb16b1ad822e 100644 --- a/ports/cxd56/common-hal/gnss/GNSS.c +++ b/ports/cxd56/common-hal/gnss/GNSS.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2020 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2020 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/cxd56/common-hal/gnss/GNSS.h b/ports/cxd56/common-hal/gnss/GNSS.h index e226104492b6..35e4084a41b9 100644 --- a/ports/cxd56/common-hal/gnss/GNSS.h +++ b/ports/cxd56/common-hal/gnss/GNSS.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2020 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2020 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_CXD56_COMMON_HAL_GNSS_GNSS_H #define MICROPY_INCLUDED_CXD56_COMMON_HAL_GNSS_GNSS_H diff --git a/ports/cxd56/common-hal/gnss/PositionFix.c b/ports/cxd56/common-hal/gnss/PositionFix.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/cxd56/common-hal/gnss/PositionFix.c +++ b/ports/cxd56/common-hal/gnss/PositionFix.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/cxd56/common-hal/gnss/SatelliteSystem.c b/ports/cxd56/common-hal/gnss/SatelliteSystem.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/cxd56/common-hal/gnss/SatelliteSystem.c +++ b/ports/cxd56/common-hal/gnss/SatelliteSystem.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/cxd56/common-hal/gnss/__init__.c b/ports/cxd56/common-hal/gnss/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/cxd56/common-hal/gnss/__init__.c +++ b/ports/cxd56/common-hal/gnss/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/cxd56/common-hal/microcontroller/Pin.c b/ports/cxd56/common-hal/microcontroller/Pin.c index 7aba1ad54b8f..5ac185d7cc22 100644 --- a/ports/cxd56/common-hal/microcontroller/Pin.c +++ b/ports/cxd56/common-hal/microcontroller/Pin.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/cxd56/common-hal/microcontroller/Pin.h b/ports/cxd56/common-hal/microcontroller/Pin.h index 259fc5716292..0a4a8cb9fd30 100644 --- a/ports/cxd56/common-hal/microcontroller/Pin.h +++ b/ports/cxd56/common-hal/microcontroller/Pin.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_CXD56_COMMON_HAL_MICROCONTROLLER_PIN_H #define MICROPY_INCLUDED_CXD56_COMMON_HAL_MICROCONTROLLER_PIN_H diff --git a/ports/cxd56/common-hal/microcontroller/Processor.c b/ports/cxd56/common-hal/microcontroller/Processor.c index b5efe37ce653..6b9d20afa046 100644 --- a/ports/cxd56/common-hal/microcontroller/Processor.c +++ b/ports/cxd56/common-hal/microcontroller/Processor.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #include // for cxd56_clock.h #include diff --git a/ports/cxd56/common-hal/microcontroller/Processor.h b/ports/cxd56/common-hal/microcontroller/Processor.h index 5d7ad56977fb..575ae3ad8efd 100644 --- a/ports/cxd56/common-hal/microcontroller/Processor.h +++ b/ports/cxd56/common-hal/microcontroller/Processor.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_CXD56_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H #define MICROPY_INCLUDED_CXD56_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H diff --git a/ports/cxd56/common-hal/microcontroller/__init__.c b/ports/cxd56/common-hal/microcontroller/__init__.c index 4dce786393e5..9240d7309d9b 100644 --- a/ports/cxd56/common-hal/microcontroller/__init__.c +++ b/ports/cxd56/common-hal/microcontroller/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #include // for cxd56_clock.h #include diff --git a/ports/cxd56/common-hal/os/__init__.c b/ports/cxd56/common-hal/os/__init__.c index e44d293f0006..0cb374f60aa6 100644 --- a/ports/cxd56/common-hal/os/__init__.c +++ b/ports/cxd56/common-hal/os/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/cxd56/common-hal/pulseio/PulseIn.c b/ports/cxd56/common-hal/pulseio/PulseIn.c index d1d38cbc3121..f0063d3f0d8c 100644 --- a/ports/cxd56/common-hal/pulseio/PulseIn.c +++ b/ports/cxd56/common-hal/pulseio/PulseIn.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/cxd56/common-hal/pulseio/PulseIn.h b/ports/cxd56/common-hal/pulseio/PulseIn.h index 1604db257daa..bb8241d75087 100644 --- a/ports/cxd56/common-hal/pulseio/PulseIn.h +++ b/ports/cxd56/common-hal/pulseio/PulseIn.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/cxd56/common-hal/pulseio/PulseOut.c b/ports/cxd56/common-hal/pulseio/PulseOut.c index 0558659363f5..a3023cc89739 100644 --- a/ports/cxd56/common-hal/pulseio/PulseOut.c +++ b/ports/cxd56/common-hal/pulseio/PulseOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/cxd56/common-hal/pulseio/PulseOut.h b/ports/cxd56/common-hal/pulseio/PulseOut.h index 61d5f201a4e8..e93c3b239396 100644 --- a/ports/cxd56/common-hal/pulseio/PulseOut.h +++ b/ports/cxd56/common-hal/pulseio/PulseOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/cxd56/common-hal/pulseio/__init__.c b/ports/cxd56/common-hal/pulseio/__init__.c index 2bee925bc77f..50db4c40454e 100644 --- a/ports/cxd56/common-hal/pulseio/__init__.c +++ b/ports/cxd56/common-hal/pulseio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No pulseio module functions. diff --git a/ports/cxd56/common-hal/pwmio/PWMOut.c b/ports/cxd56/common-hal/pwmio/PWMOut.c index 79b974098f4d..ee87f2ce71b0 100644 --- a/ports/cxd56/common-hal/pwmio/PWMOut.c +++ b/ports/cxd56/common-hal/pwmio/PWMOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/cxd56/common-hal/pwmio/PWMOut.h b/ports/cxd56/common-hal/pwmio/PWMOut.h index f97058d472ce..8f60d4732ca3 100644 --- a/ports/cxd56/common-hal/pwmio/PWMOut.h +++ b/ports/cxd56/common-hal/pwmio/PWMOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/cxd56/common-hal/pwmio/__init__.c b/ports/cxd56/common-hal/pwmio/__init__.c index 9e551a1072b3..b43cd8b1b396 100644 --- a/ports/cxd56/common-hal/pwmio/__init__.c +++ b/ports/cxd56/common-hal/pwmio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No pwmio module functions. diff --git a/ports/cxd56/common-hal/rtc/RTC.c b/ports/cxd56/common-hal/rtc/RTC.c index 1997955fd91e..ca343c8f7be9 100644 --- a/ports/cxd56/common-hal/rtc/RTC.c +++ b/ports/cxd56/common-hal/rtc/RTC.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/cxd56/common-hal/rtc/RTC.h b/ports/cxd56/common-hal/rtc/RTC.h index 5647fdcf1495..a61d52a25d03 100644 --- a/ports/cxd56/common-hal/rtc/RTC.h +++ b/ports/cxd56/common-hal/rtc/RTC.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_CXD56_COMMON_HAL_RTC_RTC_H #define MICROPY_INCLUDED_CXD56_COMMON_HAL_RTC_RTC_H diff --git a/ports/cxd56/common-hal/rtc/__init__.c b/ports/cxd56/common-hal/rtc/__init__.c index 92d25d563e28..3741e6d77035 100644 --- a/ports/cxd56/common-hal/rtc/__init__.c +++ b/ports/cxd56/common-hal/rtc/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No rtc module functions. diff --git a/ports/cxd56/common-hal/sdioio/SDCard.c b/ports/cxd56/common-hal/sdioio/SDCard.c index 9e2e2da4ddc0..5497ea152dea 100644 --- a/ports/cxd56/common-hal/sdioio/SDCard.c +++ b/ports/cxd56/common-hal/sdioio/SDCard.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2020 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2020 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/cxd56/common-hal/sdioio/SDCard.h b/ports/cxd56/common-hal/sdioio/SDCard.h index 04f6ccdba2e5..d772abd794fc 100644 --- a/ports/cxd56/common-hal/sdioio/SDCard.h +++ b/ports/cxd56/common-hal/sdioio/SDCard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2020 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2020 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_CXD56_SDIOIO_SDCARD_H #define MICROPY_INCLUDED_CXD56_SDIOIO_SDCARD_H diff --git a/ports/cxd56/common-hal/sdioio/__init__.c b/ports/cxd56/common-hal/sdioio/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/cxd56/common-hal/sdioio/__init__.c +++ b/ports/cxd56/common-hal/sdioio/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/cxd56/mpconfigport.h b/ports/cxd56/mpconfigport.h index a0f5c0c1e1b3..2460c7562186 100644 --- a/ports/cxd56/mpconfigport.h +++ b/ports/cxd56/mpconfigport.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #ifndef __INCLUDED_MPCONFIGPORT_H #define __INCLUDED_MPCONFIGPORT_H diff --git a/ports/cxd56/mphalport.c b/ports/cxd56/mphalport.c index 5a76b83bdf60..2a551bf28806 100644 --- a/ports/cxd56/mphalport.c +++ b/ports/cxd56/mphalport.c @@ -1,25 +1,5 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT diff --git a/ports/cxd56/mphalport.h b/ports/cxd56/mphalport.h index 3327b523fa4f..826912cb418b 100644 --- a/ports/cxd56/mphalport.h +++ b/ports/cxd56/mphalport.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_CXD56_MPHALPORT_H #define MICROPY_INCLUDED_CXD56_MPHALPORT_H diff --git a/ports/cxd56/qstrdefsport.h b/ports/cxd56/qstrdefsport.h index 00d3e2ae3c55..b0f5566fabf2 100644 --- a/ports/cxd56/qstrdefsport.h +++ b/ports/cxd56/qstrdefsport.h @@ -1,2 +1,8 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // qstrs specific to this port // *FORMAT-OFF* diff --git a/ports/cxd56/supervisor/internal_flash.c b/ports/cxd56/supervisor/internal_flash.c index 9c103fb19e0d..c8560ede99af 100644 --- a/ports/cxd56/supervisor/internal_flash.c +++ b/ports/cxd56/supervisor/internal_flash.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/cxd56/supervisor/internal_flash.h b/ports/cxd56/supervisor/internal_flash.h index 1580ad3e1e38..31e23a389090 100644 --- a/ports/cxd56/supervisor/internal_flash.h +++ b/ports/cxd56/supervisor/internal_flash.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_CXD56_INTERNAL_FLASH_H #define MICROPY_INCLUDED_CXD56_INTERNAL_FLASH_H diff --git a/ports/cxd56/supervisor/port.c b/ports/cxd56/supervisor/port.c index ecb16d77da91..237013ff2bda 100644 --- a/ports/cxd56/supervisor/port.c +++ b/ports/cxd56/supervisor/port.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/cxd56/supervisor/usb.c b/ports/cxd56/supervisor/usb.c index 6ad253c6d4f3..2402ed0abd65 100644 --- a/ports/cxd56/supervisor/usb.c +++ b/ports/cxd56/supervisor/usb.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #include "supervisor/usb.h" diff --git a/ports/espressif/Makefile b/ports/espressif/Makefile index 8fb21c953f4e..a64bdf6c52bb 100644 --- a/ports/espressif/Makefile +++ b/ports/espressif/Makefile @@ -1,26 +1,8 @@ -# This file is part of the MicroPython project, http://micropython.org/ -# -# The MIT License (MIT) +# This file is part of the CircuitPython project: https://circuitpython.org # # SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries # -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. +# SPDX-License-Identifier: MIT include ../../py/circuitpy_mkenv.mk diff --git a/ports/espressif/background.c b/ports/espressif/background.c index ad8708165cf1..61615c01615b 100644 --- a/ports/espressif/background.c +++ b/ports/espressif/background.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" #include "supervisor/filesystem.h" diff --git a/ports/espressif/background.h b/ports/espressif/background.h index 58793e95e9e8..bb815ed05e58 100644 --- a/ports/espressif/background.h +++ b/ports/espressif/background.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_BACKGROUND_H #define MICROPY_INCLUDED_ESPRESSIF_BACKGROUND_H diff --git a/ports/espressif/bindings/espcamera/Camera.c b/ports/espressif/bindings/espcamera/Camera.c index c36c4355de42..9e3c6d9c7851 100644 --- a/ports/espressif/bindings/espcamera/Camera.c +++ b/ports/espressif/bindings/espcamera/Camera.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/espressif/bindings/espcamera/Camera.h b/ports/espressif/bindings/espcamera/Camera.h index c6d8182090d2..7ab563713f3f 100644 --- a/ports/espressif/bindings/espcamera/Camera.h +++ b/ports/espressif/bindings/espcamera/Camera.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/bindings/espcamera/__init__.c b/ports/espressif/bindings/espcamera/__init__.c index 3963f46bfeb9..8cef1fb0dfe7 100644 --- a/ports/espressif/bindings/espcamera/__init__.c +++ b/ports/espressif/bindings/espcamera/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/runtime.h" diff --git a/ports/espressif/bindings/espcamera/__init__.h b/ports/espressif/bindings/espcamera/__init__.h index 6e55ac38707d..2b4bed635ed4 100644 --- a/ports/espressif/bindings/espcamera/__init__.h +++ b/ports/espressif/bindings/espcamera/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/bindings/espidf/__init__.c b/ports/espressif/bindings/espidf/__init__.c index 7e4b5ce38710..e0373eaa6112 100644 --- a/ports/espressif/bindings/espidf/__init__.c +++ b/ports/espressif/bindings/espidf/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/runtime.h" diff --git a/ports/espressif/bindings/espidf/__init__.h b/ports/espressif/bindings/espidf/__init__.h index 15a669cc282c..779bd949b20d 100644 --- a/ports/espressif/bindings/espidf/__init__.h +++ b/ports/espressif/bindings/espidf/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_BINDINGS_ESPIDF___INIT___H #define MICROPY_INCLUDED_ESPRESSIF_BINDINGS_ESPIDF___INIT___H diff --git a/ports/espressif/bindings/espnow/ESPNow.c b/ports/espressif/bindings/espnow/ESPNow.c index 833dd80ca87a..6c8d2b50a537 100644 --- a/ports/espressif/bindings/espnow/ESPNow.c +++ b/ports/espressif/bindings/espnow/ESPNow.c @@ -1,31 +1,11 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017-2020 Nick Moore - * Copyright (c) 2018 shawwwn - * Copyright (c) 2020-2021 Glenn Moloney @glenn20 - * Copyright (c) 2023 MicroDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017-2020 Nick Moore +// SPDX-FileCopyrightText: Copyright (c) 2018 shawwwn +// SPDX-FileCopyrightText: Copyright (c) 2020-2021 Glenn Moloney @glenn20 +// SPDX-FileCopyrightText: Copyright (c) 2023 MicroDev +// +// SPDX-License-Identifier: MIT #include "py/objproperty.h" #include "py/runtime.h" diff --git a/ports/espressif/bindings/espnow/ESPNow.h b/ports/espressif/bindings/espnow/ESPNow.h index 6aa011c5017d..745c831f8dae 100644 --- a/ports/espressif/bindings/espnow/ESPNow.h +++ b/ports/espressif/bindings/espnow/ESPNow.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Glenn Moloney @glenn20 - * Copyright (c) 2023 MicroDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Glenn Moloney @glenn20 +// SPDX-FileCopyrightText: Copyright (c) 2023 MicroDev +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/bindings/espnow/ESPNowPacket.c b/ports/espressif/bindings/espnow/ESPNowPacket.c index cefdb1e9e8e6..c53ed9dc77cc 100644 --- a/ports/espressif/bindings/espnow/ESPNowPacket.c +++ b/ports/espressif/bindings/espnow/ESPNowPacket.c @@ -1,28 +1,8 @@ -/* - * This file is part of the CircuitPython project, https://github.com/adafruit/circuitpython - * - * The MIT License (MIT) - * - * Copyright (c) 2023 MicroDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 MicroDev +// +// SPDX-License-Identifier: MIT #include "bindings/espnow/ESPNowPacket.h" diff --git a/ports/espressif/bindings/espnow/ESPNowPacket.h b/ports/espressif/bindings/espnow/ESPNowPacket.h index 87fc51ee9232..6b88102bc288 100644 --- a/ports/espressif/bindings/espnow/ESPNowPacket.h +++ b/ports/espressif/bindings/espnow/ESPNowPacket.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 MicroDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 MicroDev +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/bindings/espnow/Peer.c b/ports/espressif/bindings/espnow/Peer.c index c9f8b75b95a6..35f18e44bec4 100644 --- a/ports/espressif/bindings/espnow/Peer.c +++ b/ports/espressif/bindings/espnow/Peer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 MicroDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 MicroDev +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/objproperty.h" diff --git a/ports/espressif/bindings/espnow/Peer.h b/ports/espressif/bindings/espnow/Peer.h index 23a691b3bc97..5e126d71d608 100644 --- a/ports/espressif/bindings/espnow/Peer.h +++ b/ports/espressif/bindings/espnow/Peer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 MicroDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 MicroDev +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/bindings/espnow/Peers.c b/ports/espressif/bindings/espnow/Peers.c index 0606d3a94f38..f3965b04ed8b 100644 --- a/ports/espressif/bindings/espnow/Peers.c +++ b/ports/espressif/bindings/espnow/Peers.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 MicroDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 MicroDev +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/objlist.h" diff --git a/ports/espressif/bindings/espnow/Peers.h b/ports/espressif/bindings/espnow/Peers.h index e871ae86c0e9..9f3e3fa2509d 100644 --- a/ports/espressif/bindings/espnow/Peers.h +++ b/ports/espressif/bindings/espnow/Peers.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 MicroDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 MicroDev +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/bindings/espnow/__init__.c b/ports/espressif/bindings/espnow/__init__.c index e44cd6b11f1a..67c768df1b9d 100644 --- a/ports/espressif/bindings/espnow/__init__.c +++ b/ports/espressif/bindings/espnow/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 MicroDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 MicroDev +// +// SPDX-License-Identifier: MIT #include "bindings/espnow/__init__.h" #include "bindings/espnow/ESPNow.h" diff --git a/ports/espressif/bindings/espnow/__init__.h b/ports/espressif/bindings/espnow/__init__.h index fb814a434f07..a27f5a5ce44c 100644 --- a/ports/espressif/bindings/espnow/__init__.h +++ b/ports/espressif/bindings/espnow/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 MicroDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 MicroDev +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/bindings/espulp/Architecture.c b/ports/espressif/bindings/espulp/Architecture.c index d87691716c57..fd657a9ac30e 100644 --- a/ports/espressif/bindings/espulp/Architecture.c +++ b/ports/espressif/bindings/espulp/Architecture.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 MicroDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 MicroDev +// +// SPDX-License-Identifier: MIT #include "py/enum.h" diff --git a/ports/espressif/bindings/espulp/Architecture.h b/ports/espressif/bindings/espulp/Architecture.h index 54c0677f05bf..b3ba0dbc9507 100644 --- a/ports/espressif/bindings/espulp/Architecture.h +++ b/ports/espressif/bindings/espulp/Architecture.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 MicroDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 MicroDev +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_BINDINGS_ESPULP_ARCHITECTURE_H #define MICROPY_INCLUDED_BINDINGS_ESPULP_ARCHITECTURE_H diff --git a/ports/espressif/bindings/espulp/ULP.c b/ports/espressif/bindings/espulp/ULP.c index 9fd3be429798..41c0c10b223b 100644 --- a/ports/espressif/bindings/espulp/ULP.c +++ b/ports/espressif/bindings/espulp/ULP.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 microDev +// +// SPDX-License-Identifier: MIT #include "shared-bindings/microcontroller/Pin.h" #include "shared-bindings/util.h" diff --git a/ports/espressif/bindings/espulp/ULP.h b/ports/espressif/bindings/espulp/ULP.h index 490cbef1ca75..99f3571ee39c 100644 --- a/ports/espressif/bindings/espulp/ULP.h +++ b/ports/espressif/bindings/espulp/ULP.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 microDev +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/bindings/espulp/ULPAlarm.c b/ports/espressif/bindings/espulp/ULPAlarm.c index 76a56d91d207..cef898d83ef6 100644 --- a/ports/espressif/bindings/espulp/ULPAlarm.c +++ b/ports/espressif/bindings/espulp/ULPAlarm.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 microDev +// +// SPDX-License-Identifier: MIT #include "bindings/espulp/ULPAlarm.h" diff --git a/ports/espressif/bindings/espulp/ULPAlarm.h b/ports/espressif/bindings/espulp/ULPAlarm.h index f2b2e69bba3e..e66abfda5e36 100644 --- a/ports/espressif/bindings/espulp/ULPAlarm.h +++ b/ports/espressif/bindings/espulp/ULPAlarm.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 microDev +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/bindings/espulp/__init__.c b/ports/espressif/bindings/espulp/__init__.c index 36f50e8949ff..dbbdf8dd2698 100644 --- a/ports/espressif/bindings/espulp/__init__.c +++ b/ports/espressif/bindings/espulp/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 microDev +// +// SPDX-License-Identifier: MIT #include "shared-bindings/util.h" diff --git a/ports/espressif/bindings/espulp/__init__.h b/ports/espressif/bindings/espulp/__init__.h index 70daf5318330..9212ac83322a 100644 --- a/ports/espressif/bindings/espulp/__init__.h +++ b/ports/espressif/bindings/espulp/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 microDev +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/boards/01space_lcd042_esp32c3/board.c b/ports/espressif/boards/01space_lcd042_esp32c3/board.c index 3bc314b49803..c675636bb55c 100644 --- a/ports/espressif/boards/01space_lcd042_esp32c3/board.c +++ b/ports/espressif/boards/01space_lcd042_esp32c3/board.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * Copyright (c) 2021 skieast/Bruce Segal - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// SPDX-FileCopyrightText: Copyright (c) 2021 skieast/Bruce Segal +// +// SPDX-License-Identifier: MIT #include "shared-bindings/board/__init__.h" #include "shared-bindings/i2cdisplaybus/I2CDisplayBus.h" diff --git a/ports/espressif/boards/01space_lcd042_esp32c3/mpconfigboard.h b/ports/espressif/boards/01space_lcd042_esp32c3/mpconfigboard.h index 7ff1fb17caf9..54fcac8abd03 100644 --- a/ports/espressif/boards/01space_lcd042_esp32c3/mpconfigboard.h +++ b/ports/espressif/boards/01space_lcd042_esp32c3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Neradoc - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Neradoc +// +// SPDX-License-Identifier: MIT // Board setup #define MICROPY_HW_BOARD_NAME "01Space 0.42 OLED ESP32C3" diff --git a/ports/espressif/boards/01space_lcd042_esp32c3/pins.c b/ports/espressif/boards/01space_lcd042_esp32c3/pins.c index a28ffca6d265..2942fc304fa0 100644 --- a/ports/espressif/boards/01space_lcd042_esp32c3/pins.c +++ b/ports/espressif/boards/01space_lcd042_esp32c3/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Neradoc - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Neradoc +// +// SPDX-License-Identifier: MIT #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/adafruit_esp32s3_camera/board.c b/ports/espressif/boards/adafruit_esp32s3_camera/board.c index 67c7f400224a..cd187a48efda 100644 --- a/ports/espressif/boards/adafruit_esp32s3_camera/board.c +++ b/ports/espressif/boards/adafruit_esp32s3_camera/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/adafruit_esp32s3_camera/mpconfigboard.h b/ports/espressif/boards/adafruit_esp32s3_camera/mpconfigboard.h index 75620675e7b5..643c7bb9315f 100644 --- a/ports/espressif/boards/adafruit_esp32s3_camera/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_esp32s3_camera/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #define MICROPY_HW_BOARD_NAME "Adafruit Camera" #define MICROPY_HW_MCU_NAME "ESP32S3" diff --git a/ports/espressif/boards/adafruit_esp32s3_camera/pins.c b/ports/espressif/boards/adafruit_esp32s3_camera/pins.c index 7d5a5a00b8e2..72d8a9729e24 100644 --- a/ports/espressif/boards/adafruit_esp32s3_camera/pins.c +++ b/ports/espressif/boards/adafruit_esp32s3_camera/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/adafruit_feather_esp32_v2/board.c b/ports/espressif/boards/adafruit_feather_esp32_v2/board.c index 02c3cb2ff423..7d2f6f9e6ec6 100644 --- a/ports/espressif/boards/adafruit_feather_esp32_v2/board.c +++ b/ports/espressif/boards/adafruit_feather_esp32_v2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/adafruit_feather_esp32_v2/mpconfigboard.h b/ports/espressif/boards/adafruit_feather_esp32_v2/mpconfigboard.h index a9bcd85646e1..5adedb7c057b 100644 --- a/ports/espressif/boards/adafruit_feather_esp32_v2/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_feather_esp32_v2/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/adafruit_feather_esp32_v2/pins.c b/ports/espressif/boards/adafruit_feather_esp32_v2/pins.c index 43cca6a7af0c..c985cc505746 100644 --- a/ports/espressif/boards/adafruit_feather_esp32_v2/pins.c +++ b/ports/espressif/boards/adafruit_feather_esp32_v2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/board.c b/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/board.c index a105fbb50160..274694470868 100644 --- a/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/board.c +++ b/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/mpconfigboard.h b/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/mpconfigboard.h index 1a11549f6dda..edabcd130c56 100644 --- a/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/pins.c b/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/pins.c index 8821100996a8..36e859867105 100644 --- a/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/pins.c +++ b/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/adafruit_feather_esp32s2/board.c b/ports/espressif/boards/adafruit_feather_esp32s2/board.c index 4d64c316e1b1..f2ce447e4bc9 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s2/board.c +++ b/ports/espressif/boards/adafruit_feather_esp32s2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/adafruit_feather_esp32s2/mpconfigboard.h b/ports/espressif/boards/adafruit_feather_esp32s2/mpconfigboard.h index 4e7da01b5aa3..12324990db38 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s2/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_feather_esp32s2/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/adafruit_feather_esp32s2/pins.c b/ports/espressif/boards/adafruit_feather_esp32s2/pins.c index cf4c915e7ff2..860e19292428 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s2/pins.c +++ b/ports/espressif/boards/adafruit_feather_esp32s2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/board.c b/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/board.c index 0e0c35bcbf84..b649d0796047 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/board.c +++ b/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/mpconfigboard.h b/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/mpconfigboard.h index d170bba4876b..ef0194221738 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/pins.c b/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/pins.c index 32718700b194..597b31639299 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/pins.c +++ b/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/adafruit_feather_esp32s2_tft/board.c b/ports/espressif/boards/adafruit_feather_esp32s2_tft/board.c index f383f4de258e..a2bdb3aaf83f 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s2_tft/board.c +++ b/ports/espressif/boards/adafruit_feather_esp32s2_tft/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/adafruit_feather_esp32s2_tft/mpconfigboard.h b/ports/espressif/boards/adafruit_feather_esp32s2_tft/mpconfigboard.h index e9eb3326eaf4..b3c630aadf45 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s2_tft/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_feather_esp32s2_tft/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/adafruit_feather_esp32s2_tft/pins.c b/ports/espressif/boards/adafruit_feather_esp32s2_tft/pins.c index fb2f898a1898..a6ee350588b9 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s2_tft/pins.c +++ b/ports/espressif/boards/adafruit_feather_esp32s2_tft/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/board.c b/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/board.c index ba228d7b12d6..c14708677906 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/board.c +++ b/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/mpconfigboard.h b/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/mpconfigboard.h index ecaa13a34400..1936b1ab12c5 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/pins.c b/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/pins.c index cf4c915e7ff2..860e19292428 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/pins.c +++ b/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/board.c b/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/board.c index ba228d7b12d6..c14708677906 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/board.c +++ b/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/mpconfigboard.h b/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/mpconfigboard.h index e089c5c25101..263e84fd397a 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/pins.c b/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/pins.c index cf4c915e7ff2..860e19292428 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/pins.c +++ b/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/board.c b/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/board.c index 0e0c35bcbf84..b649d0796047 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/board.c +++ b/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/mpconfigboard.h b/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/mpconfigboard.h index cb0237c3e5be..80e219c100b3 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/pins.c b/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/pins.c index 32718700b194..597b31639299 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/pins.c +++ b/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_tft/board.c b/ports/espressif/boards/adafruit_feather_esp32s3_tft/board.c index 0b6e4d8abec7..aa796e65f1a4 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_tft/board.c +++ b/ports/espressif/boards/adafruit_feather_esp32s3_tft/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_tft/mpconfigboard.h b/ports/espressif/boards/adafruit_feather_esp32s3_tft/mpconfigboard.h index 0bc80a884ef1..884eda67e985 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_tft/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_feather_esp32s3_tft/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_tft/pins.c b/ports/espressif/boards/adafruit_feather_esp32s3_tft/pins.c index fb2f898a1898..a6ee350588b9 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_tft/pins.c +++ b/ports/espressif/boards/adafruit_feather_esp32s3_tft/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/adafruit_feather_huzzah32/board.c b/ports/espressif/boards/adafruit_feather_huzzah32/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/adafruit_feather_huzzah32/board.c +++ b/ports/espressif/boards/adafruit_feather_huzzah32/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/adafruit_feather_huzzah32/mpconfigboard.h b/ports/espressif/boards/adafruit_feather_huzzah32/mpconfigboard.h index 0c481d6a4b76..80bc691e7e38 100644 --- a/ports/espressif/boards/adafruit_feather_huzzah32/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_feather_huzzah32/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/adafruit_feather_huzzah32/pins.c b/ports/espressif/boards/adafruit_feather_huzzah32/pins.c index 2d96457aad80..204d505550ac 100644 --- a/ports/espressif/boards/adafruit_feather_huzzah32/pins.c +++ b/ports/espressif/boards/adafruit_feather_huzzah32/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/adafruit_funhouse/board.c b/ports/espressif/boards/adafruit_funhouse/board.c index a19ceda83773..4537f80df36d 100644 --- a/ports/espressif/boards/adafruit_funhouse/board.c +++ b/ports/espressif/boards/adafruit_funhouse/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/adafruit_funhouse/mpconfigboard.h b/ports/espressif/boards/adafruit_funhouse/mpconfigboard.h index 2b2438432ed7..59b11e7f8bb5 100644 --- a/ports/espressif/boards/adafruit_funhouse/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_funhouse/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/adafruit_funhouse/pins.c b/ports/espressif/boards/adafruit_funhouse/pins.c index c94aeebf2052..03c1cde14591 100644 --- a/ports/espressif/boards/adafruit_funhouse/pins.c +++ b/ports/espressif/boards/adafruit_funhouse/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/adafruit_huzzah32_breakout/board.c b/ports/espressif/boards/adafruit_huzzah32_breakout/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/adafruit_huzzah32_breakout/board.c +++ b/ports/espressif/boards/adafruit_huzzah32_breakout/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/adafruit_huzzah32_breakout/mpconfigboard.h b/ports/espressif/boards/adafruit_huzzah32_breakout/mpconfigboard.h index c1d5790acb90..1e443e738a5d 100644 --- a/ports/espressif/boards/adafruit_huzzah32_breakout/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_huzzah32_breakout/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/adafruit_huzzah32_breakout/pins.c b/ports/espressif/boards/adafruit_huzzah32_breakout/pins.c index f0d6f3118a25..8c4b9a599945 100644 --- a/ports/espressif/boards/adafruit_huzzah32_breakout/pins.c +++ b/ports/espressif/boards/adafruit_huzzah32_breakout/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/adafruit_itsybitsy_esp32/board.c b/ports/espressif/boards/adafruit_itsybitsy_esp32/board.c index 02c3cb2ff423..7d2f6f9e6ec6 100644 --- a/ports/espressif/boards/adafruit_itsybitsy_esp32/board.c +++ b/ports/espressif/boards/adafruit_itsybitsy_esp32/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/adafruit_itsybitsy_esp32/mpconfigboard.h b/ports/espressif/boards/adafruit_itsybitsy_esp32/mpconfigboard.h index 7fbc1e2a30cf..1691290f1df6 100644 --- a/ports/espressif/boards/adafruit_itsybitsy_esp32/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_itsybitsy_esp32/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/adafruit_itsybitsy_esp32/pins.c b/ports/espressif/boards/adafruit_itsybitsy_esp32/pins.c index 63fca412f3cc..d1e48ff9d9e0 100644 --- a/ports/espressif/boards/adafruit_itsybitsy_esp32/pins.c +++ b/ports/espressif/boards/adafruit_itsybitsy_esp32/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/adafruit_magtag_2.9_grayscale/board.c b/ports/espressif/boards/adafruit_magtag_2.9_grayscale/board.c index 841c241b31c3..745b4bcf43a3 100644 --- a/ports/espressif/boards/adafruit_magtag_2.9_grayscale/board.c +++ b/ports/espressif/boards/adafruit_magtag_2.9_grayscale/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h b/ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h index 2892110f6e3d..1c32da49de05 100644 --- a/ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/adafruit_magtag_2.9_grayscale/pins.c b/ports/espressif/boards/adafruit_magtag_2.9_grayscale/pins.c index 1df28f8e0503..b154ba0df345 100644 --- a/ports/espressif/boards/adafruit_magtag_2.9_grayscale/pins.c +++ b/ports/espressif/boards/adafruit_magtag_2.9_grayscale/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/adafruit_matrixportal_s3/board.c b/ports/espressif/boards/adafruit_matrixportal_s3/board.c index a5067b98fd05..2bd8870fe1bb 100644 --- a/ports/espressif/boards/adafruit_matrixportal_s3/board.c +++ b/ports/espressif/boards/adafruit_matrixportal_s3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/adafruit_matrixportal_s3/mpconfigboard.h b/ports/espressif/boards/adafruit_matrixportal_s3/mpconfigboard.h index 8854729aae93..66ac03485f6f 100644 --- a/ports/espressif/boards/adafruit_matrixportal_s3/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_matrixportal_s3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/adafruit_matrixportal_s3/pins.c b/ports/espressif/boards/adafruit_matrixportal_s3/pins.c index b17d0ba3624c..2ab8d3755917 100644 --- a/ports/espressif/boards/adafruit_matrixportal_s3/pins.c +++ b/ports/espressif/boards/adafruit_matrixportal_s3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" diff --git a/ports/espressif/boards/adafruit_metro_esp32s2/board.c b/ports/espressif/boards/adafruit_metro_esp32s2/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/adafruit_metro_esp32s2/board.c +++ b/ports/espressif/boards/adafruit_metro_esp32s2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h b/ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h index 698dc207648f..a704e7b93e88 100644 --- a/ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/adafruit_metro_esp32s2/pins.c b/ports/espressif/boards/adafruit_metro_esp32s2/pins.c index 39b47466d068..6fcfeb51fa90 100644 --- a/ports/espressif/boards/adafruit_metro_esp32s2/pins.c +++ b/ports/espressif/boards/adafruit_metro_esp32s2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/adafruit_metro_esp32s3/board.c b/ports/espressif/boards/adafruit_metro_esp32s3/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/adafruit_metro_esp32s3/board.c +++ b/ports/espressif/boards/adafruit_metro_esp32s3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/adafruit_metro_esp32s3/mpconfigboard.h b/ports/espressif/boards/adafruit_metro_esp32s3/mpconfigboard.h index 7faa30b7e89b..68007def650e 100644 --- a/ports/espressif/boards/adafruit_metro_esp32s3/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_metro_esp32s3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/adafruit_metro_esp32s3/pins.c b/ports/espressif/boards/adafruit_metro_esp32s3/pins.c index c80f34eb6ba8..b6f860b45631 100644 --- a/ports/espressif/boards/adafruit_metro_esp32s3/pins.c +++ b/ports/espressif/boards/adafruit_metro_esp32s3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/adafruit_qtpy_esp32_pico/board.c b/ports/espressif/boards/adafruit_qtpy_esp32_pico/board.c index 0e4504e8b8e6..d974b77bacfc 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32_pico/board.c +++ b/ports/espressif/boards/adafruit_qtpy_esp32_pico/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/adafruit_qtpy_esp32_pico/mpconfigboard.h b/ports/espressif/boards/adafruit_qtpy_esp32_pico/mpconfigboard.h index 7f8288f17b66..7d7f4d4f1b51 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32_pico/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_qtpy_esp32_pico/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #define MICROPY_HW_BOARD_NAME "Adafruit QT Py ESP32 PICO" #define MICROPY_HW_MCU_NAME "ESP32" diff --git a/ports/espressif/boards/adafruit_qtpy_esp32_pico/pins.c b/ports/espressif/boards/adafruit_qtpy_esp32_pico/pins.c index 5d760603c166..c6da266296ee 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32_pico/pins.c +++ b/ports/espressif/boards/adafruit_qtpy_esp32_pico/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" CIRCUITPY_BOARD_BUS_SINGLETON(stemma_i2c, i2c, 1) diff --git a/ports/espressif/boards/adafruit_qtpy_esp32c3/board.c b/ports/espressif/boards/adafruit_qtpy_esp32c3/board.c index e29b6b93e7ef..9eb5439efc5a 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32c3/board.c +++ b/ports/espressif/boards/adafruit_qtpy_esp32c3/board.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * Copyright (c) 2021 skieast/Bruce Segal - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// SPDX-FileCopyrightText: Copyright (c) 2021 skieast/Bruce Segal +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h b/ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h index 9a9ccd8124c8..4a864396ca1c 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * Copyright (c) 2021 skieast/Bruce Segal - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// SPDX-FileCopyrightText: Copyright (c) 2021 skieast/Bruce Segal +// +// SPDX-License-Identifier: MIT // Board setup #define MICROPY_HW_BOARD_NAME "Adafruit QT Py ESP32C3" diff --git a/ports/espressif/boards/adafruit_qtpy_esp32c3/pins.c b/ports/espressif/boards/adafruit_qtpy_esp32c3/pins.c index e13275e1d255..87b818a4b1f7 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32c3/pins.c +++ b/ports/espressif/boards/adafruit_qtpy_esp32c3/pins.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * Copyright (c) 2021 skieast/Bruce Segal - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// SPDX-FileCopyrightText: Copyright (c) 2021 skieast/Bruce Segal +// +// SPDX-License-Identifier: MIT #include "shared-bindings/board/__init__.h" diff --git a/ports/espressif/boards/adafruit_qtpy_esp32s2/board.c b/ports/espressif/boards/adafruit_qtpy_esp32s2/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32s2/board.c +++ b/ports/espressif/boards/adafruit_qtpy_esp32s2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h b/ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h index b580cce450a6..d78e776fc229 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/adafruit_qtpy_esp32s2/pins.c b/ports/espressif/boards/adafruit_qtpy_esp32s2/pins.c index a1d1b7b50f65..e16bfb90aa51 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32s2/pins.c +++ b/ports/espressif/boards/adafruit_qtpy_esp32s2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" CIRCUITPY_BOARD_BUS_SINGLETON(stemma_i2c, i2c, 1) diff --git a/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/board.c b/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/board.c +++ b/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/mpconfigboard.h b/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/mpconfigboard.h index 36319ce1075d..c9e0bd0cd12c 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/pins.c b/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/pins.c index 5d0a3c0baa06..ed717c4ed99b 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/pins.c +++ b/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" CIRCUITPY_BOARD_BUS_SINGLETON(stemma_i2c, i2c, 1) diff --git a/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/board.c b/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/board.c +++ b/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/mpconfigboard.h b/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/mpconfigboard.h index f6e51ea5831c..26a710435764 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/pins.c b/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/pins.c index 5d0a3c0baa06..ed717c4ed99b 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/pins.c +++ b/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" CIRCUITPY_BOARD_BUS_SINGLETON(stemma_i2c, i2c, 1) diff --git a/ports/espressif/boards/adafruit_qualia_s3_rgb666/board.c b/ports/espressif/boards/adafruit_qualia_s3_rgb666/board.c index 0639737c3539..2ef34c8be856 100644 --- a/ports/espressif/boards/adafruit_qualia_s3_rgb666/board.c +++ b/ports/espressif/boards/adafruit_qualia_s3_rgb666/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/adafruit_qualia_s3_rgb666/mpconfigboard.h b/ports/espressif/boards/adafruit_qualia_s3_rgb666/mpconfigboard.h index 4b6ae9066f71..0664b3d19e17 100644 --- a/ports/espressif/boards/adafruit_qualia_s3_rgb666/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_qualia_s3_rgb666/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/adafruit_qualia_s3_rgb666/pins.c b/ports/espressif/boards/adafruit_qualia_s3_rgb666/pins.c index 5919f66b7e91..116e83376152 100644 --- a/ports/espressif/boards/adafruit_qualia_s3_rgb666/pins.c +++ b/ports/espressif/boards/adafruit_qualia_s3_rgb666/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" diff --git a/ports/espressif/boards/ai-thinker-esp32-cam/board.c b/ports/espressif/boards/ai-thinker-esp32-cam/board.c index 368352a9e80d..9bba8010f2e5 100755 --- a/ports/espressif/boards/ai-thinker-esp32-cam/board.c +++ b/ports/espressif/boards/ai-thinker-esp32-cam/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Chris Drake, independently providing these changes. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Chris Drake, independently providing these changes. +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.h b/ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.h index f6a23dfbbaf3..790718803f6e 100644 --- a/ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.h +++ b/ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Chris Drake, independently providing these changes. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Chris Drake, independently providing these changes. +// +// SPDX-License-Identifier: MIT #define MICROPY_HW_BOARD_NAME "Ai Thinker ESP32-CAM" #define MICROPY_HW_MCU_NAME "ESP32" diff --git a/ports/espressif/boards/ai-thinker-esp32-cam/pins.c b/ports/espressif/boards/ai-thinker-esp32-cam/pins.c index 3d13aab0fbf3..22126fa9fe45 100755 --- a/ports/espressif/boards/ai-thinker-esp32-cam/pins.c +++ b/ports/espressif/boards/ai-thinker-esp32-cam/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Chris Drake, independently providing these changes. +// +// SPDX-License-Identifier: MIT + #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" diff --git a/ports/espressif/boards/ai_thinker_esp32-c3s-2m/board.c b/ports/espressif/boards/ai_thinker_esp32-c3s-2m/board.c index 9e9b34a237e2..33d4eadb4dc0 100644 --- a/ports/espressif/boards/ai_thinker_esp32-c3s-2m/board.c +++ b/ports/espressif/boards/ai_thinker_esp32-c3s-2m/board.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * Copyright (c) 2021 skieast/Bruce Segal - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// SPDX-FileCopyrightText: Copyright (c) 2021 skieast/Bruce Segal +// +// SPDX-License-Identifier: MIT #include "shared-bindings/microcontroller/Pin.h" #include "supervisor/board.h" diff --git a/ports/espressif/boards/ai_thinker_esp32-c3s-2m/mpconfigboard.h b/ports/espressif/boards/ai_thinker_esp32-c3s-2m/mpconfigboard.h index a9f0075a41be..0009a3fc60cd 100644 --- a/ports/espressif/boards/ai_thinker_esp32-c3s-2m/mpconfigboard.h +++ b/ports/espressif/boards/ai_thinker_esp32-c3s-2m/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * Copyright (c) 2021 skieast/Bruce Segal - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// SPDX-FileCopyrightText: Copyright (c) 2021 skieast/Bruce Segal +// +// SPDX-License-Identifier: MIT // Board setup #define MICROPY_HW_BOARD_NAME "AITHinker ESP32-C3S_Kit_2M" diff --git a/ports/espressif/boards/ai_thinker_esp32-c3s-2m/pins.c b/ports/espressif/boards/ai_thinker_esp32-c3s-2m/pins.c index 37e93732029b..544498baf5f4 100644 --- a/ports/espressif/boards/ai_thinker_esp32-c3s-2m/pins.c +++ b/ports/espressif/boards/ai_thinker_esp32-c3s-2m/pins.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * Copyright (c) 2021 skieast/Bruce Segal - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// SPDX-FileCopyrightText: Copyright (c) 2021 skieast/Bruce Segal +// +// SPDX-License-Identifier: MIT #include "shared-bindings/board/__init__.h" diff --git a/ports/espressif/boards/ai_thinker_esp32-c3s/board.c b/ports/espressif/boards/ai_thinker_esp32-c3s/board.c index 9e9b34a237e2..33d4eadb4dc0 100644 --- a/ports/espressif/boards/ai_thinker_esp32-c3s/board.c +++ b/ports/espressif/boards/ai_thinker_esp32-c3s/board.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * Copyright (c) 2021 skieast/Bruce Segal - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// SPDX-FileCopyrightText: Copyright (c) 2021 skieast/Bruce Segal +// +// SPDX-License-Identifier: MIT #include "shared-bindings/microcontroller/Pin.h" #include "supervisor/board.h" diff --git a/ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h b/ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h index f3f89d500b72..2da84a10a3d0 100644 --- a/ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h +++ b/ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * Copyright (c) 2021 skieast/Bruce Segal - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// SPDX-FileCopyrightText: Copyright (c) 2021 skieast/Bruce Segal +// +// SPDX-License-Identifier: MIT // Board setup #define MICROPY_HW_BOARD_NAME "AITHinker ESP32-C3S_Kit" diff --git a/ports/espressif/boards/ai_thinker_esp32-c3s/pins.c b/ports/espressif/boards/ai_thinker_esp32-c3s/pins.c index 37e93732029b..544498baf5f4 100644 --- a/ports/espressif/boards/ai_thinker_esp32-c3s/pins.c +++ b/ports/espressif/boards/ai_thinker_esp32-c3s/pins.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * Copyright (c) 2021 skieast/Bruce Segal - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// SPDX-FileCopyrightText: Copyright (c) 2021 skieast/Bruce Segal +// +// SPDX-License-Identifier: MIT #include "shared-bindings/board/__init__.h" diff --git a/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/board.c b/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/board.c +++ b/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h b/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h index 04b2daf7cc8d..379981dff564 100644 --- a/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h +++ b/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/pins.c b/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/pins.c index ee43af23df4e..e0d12c035ad7 100644 --- a/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/pins.c +++ b/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/arduino_nano_esp32s3/board.c b/ports/espressif/boards/arduino_nano_esp32s3/board.c index 58432f9811c9..f0a178ccf04a 100644 --- a/ports/espressif/boards/arduino_nano_esp32s3/board.c +++ b/ports/espressif/boards/arduino_nano_esp32s3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/arduino_nano_esp32s3/mpconfigboard.h b/ports/espressif/boards/arduino_nano_esp32s3/mpconfigboard.h index 7c046d9b7294..29653d2f1a84 100644 --- a/ports/espressif/boards/arduino_nano_esp32s3/mpconfigboard.h +++ b/ports/espressif/boards/arduino_nano_esp32s3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/arduino_nano_esp32s3/pins.c b/ports/espressif/boards/arduino_nano_esp32s3/pins.c index ca56c8900cba..d2d77ed8249e 100644 --- a/ports/espressif/boards/arduino_nano_esp32s3/pins.c +++ b/ports/espressif/boards/arduino_nano_esp32s3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/board.c b/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/board.c index 58432f9811c9..f0a178ccf04a 100644 --- a/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/board.c +++ b/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/mpconfigboard.h b/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/mpconfigboard.h index 4d4adcf1cb6b..dbd72b048dd2 100644 --- a/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/mpconfigboard.h +++ b/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/pins.c b/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/pins.c index aa89a58ee464..d583818196ce 100644 --- a/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/pins.c +++ b/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/artisense_rd00/board.c b/ports/espressif/boards/artisense_rd00/board.c index a23fe0765bbb..779dfb861e03 100644 --- a/ports/espressif/boards/artisense_rd00/board.c +++ b/ports/espressif/boards/artisense_rd00/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Matthias Breithaupt for Artisense GmbH - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Matthias Breithaupt for Artisense GmbH +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/artisense_rd00/mpconfigboard.h b/ports/espressif/boards/artisense_rd00/mpconfigboard.h index afac8d9f92f2..aa525ba5f077 100644 --- a/ports/espressif/boards/artisense_rd00/mpconfigboard.h +++ b/ports/espressif/boards/artisense_rd00/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Matthias Breithaupt for Artisense GmbH - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Matthias Breithaupt for Artisense GmbH +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/artisense_rd00/pins.c b/ports/espressif/boards/artisense_rd00/pins.c index 5833513d35f6..e6d43d058058 100644 --- a/ports/espressif/boards/artisense_rd00/pins.c +++ b/ports/espressif/boards/artisense_rd00/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Matthias Breithaupt for Artisense GmbH +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/atmegazero_esp32s2/board.c b/ports/espressif/boards/atmegazero_esp32s2/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/atmegazero_esp32s2/board.c +++ b/ports/espressif/boards/atmegazero_esp32s2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h b/ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h index 8dae596d7c24..5608c51669f7 100644 --- a/ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h +++ b/ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/atmegazero_esp32s2/pins.c b/ports/espressif/boards/atmegazero_esp32s2/pins.c index 76dde3b58393..45c2cfcb687d 100644 --- a/ports/espressif/boards/atmegazero_esp32s2/pins.c +++ b/ports/espressif/boards/atmegazero_esp32s2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/beetle-esp32-c3/board.c b/ports/espressif/boards/beetle-esp32-c3/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/beetle-esp32-c3/board.c +++ b/ports/espressif/boards/beetle-esp32-c3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/beetle-esp32-c3/mpconfigboard.h b/ports/espressif/boards/beetle-esp32-c3/mpconfigboard.h index 7b93665ceebf..c35c6995daca 100644 --- a/ports/espressif/boards/beetle-esp32-c3/mpconfigboard.h +++ b/ports/espressif/boards/beetle-esp32-c3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Board setup diff --git a/ports/espressif/boards/beetle-esp32-c3/pins.c b/ports/espressif/boards/beetle-esp32-c3/pins.c index f9060cc30617..aa6579677f8a 100644 --- a/ports/espressif/boards/beetle-esp32-c3/pins.c +++ b/ports/espressif/boards/beetle-esp32-c3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/bpi_bit_s2/board.c b/ports/espressif/boards/bpi_bit_s2/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/bpi_bit_s2/board.c +++ b/ports/espressif/boards/bpi_bit_s2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/bpi_bit_s2/mpconfigboard.h b/ports/espressif/boards/bpi_bit_s2/mpconfigboard.h index ddb51cdb6d6d..52a0fcc60a11 100644 --- a/ports/espressif/boards/bpi_bit_s2/mpconfigboard.h +++ b/ports/espressif/boards/bpi_bit_s2/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/bpi_bit_s2/pins.c b/ports/espressif/boards/bpi_bit_s2/pins.c index 4b14bbd79e13..577287efbe84 100644 --- a/ports/espressif/boards/bpi_bit_s2/pins.c +++ b/ports/espressif/boards/bpi_bit_s2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/bpi_leaf_s3/board.c b/ports/espressif/boards/bpi_leaf_s3/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/bpi_leaf_s3/board.c +++ b/ports/espressif/boards/bpi_leaf_s3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/bpi_leaf_s3/mpconfigboard.h b/ports/espressif/boards/bpi_leaf_s3/mpconfigboard.h index 4deba7de0cd6..ef479def9ff3 100644 --- a/ports/espressif/boards/bpi_leaf_s3/mpconfigboard.h +++ b/ports/espressif/boards/bpi_leaf_s3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/bpi_leaf_s3/pins.c b/ports/espressif/boards/bpi_leaf_s3/pins.c index bf193e88aa7c..3327cddf964d 100644 --- a/ports/espressif/boards/bpi_leaf_s3/pins.c +++ b/ports/espressif/boards/bpi_leaf_s3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/bpi_picow_s3/board.c b/ports/espressif/boards/bpi_picow_s3/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/bpi_picow_s3/board.c +++ b/ports/espressif/boards/bpi_picow_s3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/bpi_picow_s3/mpconfigboard.h b/ports/espressif/boards/bpi_picow_s3/mpconfigboard.h index a261ed17fa8f..7ec1a381b4c2 100644 --- a/ports/espressif/boards/bpi_picow_s3/mpconfigboard.h +++ b/ports/espressif/boards/bpi_picow_s3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/bpi_picow_s3/pins.c b/ports/espressif/boards/bpi_picow_s3/pins.c index 5e88a96b4912..5e25d760a7b9 100644 --- a/ports/espressif/boards/bpi_picow_s3/pins.c +++ b/ports/espressif/boards/bpi_picow_s3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/brainboardz_neuron/board.c b/ports/espressif/boards/brainboardz_neuron/board.c index 164430c88c92..a3a9eec04714 100755 --- a/ports/espressif/boards/brainboardz_neuron/board.c +++ b/ports/espressif/boards/brainboardz_neuron/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/brainboardz_neuron/mpconfigboard.h b/ports/espressif/boards/brainboardz_neuron/mpconfigboard.h index 760041ddf4b8..65ebd53e718d 100755 --- a/ports/espressif/boards/brainboardz_neuron/mpconfigboard.h +++ b/ports/espressif/boards/brainboardz_neuron/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/brainboardz_neuron/pins.c b/ports/espressif/boards/brainboardz_neuron/pins.c index 62b95421f876..e7490397ee0f 100755 --- a/ports/espressif/boards/brainboardz_neuron/pins.c +++ b/ports/espressif/boards/brainboardz_neuron/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/columbia-dsl-sensor/board.c b/ports/espressif/boards/columbia-dsl-sensor/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/columbia-dsl-sensor/board.c +++ b/ports/espressif/boards/columbia-dsl-sensor/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/columbia-dsl-sensor/mpconfigboard.h b/ports/espressif/boards/columbia-dsl-sensor/mpconfigboard.h index 097f07af092a..c064ac6634dc 100644 --- a/ports/espressif/boards/columbia-dsl-sensor/mpconfigboard.h +++ b/ports/espressif/boards/columbia-dsl-sensor/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/columbia-dsl-sensor/pins.c b/ports/espressif/boards/columbia-dsl-sensor/pins.c index c6abfc35ce2e..4a9f3811ce66 100644 --- a/ports/espressif/boards/columbia-dsl-sensor/pins.c +++ b/ports/espressif/boards/columbia-dsl-sensor/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/crcibernetica-ideaboard/board.c b/ports/espressif/boards/crcibernetica-ideaboard/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/crcibernetica-ideaboard/board.c +++ b/ports/espressif/boards/crcibernetica-ideaboard/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/crcibernetica-ideaboard/mpconfigboard.h b/ports/espressif/boards/crcibernetica-ideaboard/mpconfigboard.h index 2d20fff211b7..ce7c73b20cfc 100644 --- a/ports/espressif/boards/crcibernetica-ideaboard/mpconfigboard.h +++ b/ports/espressif/boards/crcibernetica-ideaboard/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/crcibernetica-ideaboard/pins.c b/ports/espressif/boards/crcibernetica-ideaboard/pins.c index 8f90bc90a013..a07312181f47 100644 --- a/ports/espressif/boards/crcibernetica-ideaboard/pins.c +++ b/ports/espressif/boards/crcibernetica-ideaboard/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/crumpspace_crumps2/board.c b/ports/espressif/boards/crumpspace_crumps2/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/crumpspace_crumps2/board.c +++ b/ports/espressif/boards/crumpspace_crumps2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h b/ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h index ad0b899c1e2e..42e3101aef3a 100644 --- a/ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h +++ b/ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/crumpspace_crumps2/pins.c b/ports/espressif/boards/crumpspace_crumps2/pins.c index 157ff2b8fc33..8523d872546d 100644 --- a/ports/espressif/boards/crumpspace_crumps2/pins.c +++ b/ports/espressif/boards/crumpspace_crumps2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/cytron_maker_feather_aiot_s3/board.c b/ports/espressif/boards/cytron_maker_feather_aiot_s3/board.c index 8f1a584194c3..66454e4713c3 100644 --- a/ports/espressif/boards/cytron_maker_feather_aiot_s3/board.c +++ b/ports/espressif/boards/cytron_maker_feather_aiot_s3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Wai Weng for Cytron Technologies - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Wai Weng for Cytron Technologies +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/cytron_maker_feather_aiot_s3/mpconfigboard.h b/ports/espressif/boards/cytron_maker_feather_aiot_s3/mpconfigboard.h index 39c1edc5bdee..ef7d295d2848 100644 --- a/ports/espressif/boards/cytron_maker_feather_aiot_s3/mpconfigboard.h +++ b/ports/espressif/boards/cytron_maker_feather_aiot_s3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Wai Weng for Cytron Technologies - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Wai Weng for Cytron Technologies +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/cytron_maker_feather_aiot_s3/pins.c b/ports/espressif/boards/cytron_maker_feather_aiot_s3/pins.c index cca5f2617d00..e479cd73e53b 100644 --- a/ports/espressif/boards/cytron_maker_feather_aiot_s3/pins.c +++ b/ports/espressif/boards/cytron_maker_feather_aiot_s3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Wai Weng for Cytron Technologies +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/deneyap_kart/board.c b/ports/espressif/boards/deneyap_kart/board.c index 12d8928cd5ee..9b4c44e78b28 100644 --- a/ports/espressif/boards/deneyap_kart/board.c +++ b/ports/espressif/boards/deneyap_kart/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Radio Sound, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Radio Sound, Inc. +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/deneyap_kart/mpconfigboard.h b/ports/espressif/boards/deneyap_kart/mpconfigboard.h index 959e4e5c02bf..4ffccfd1a49b 100644 --- a/ports/espressif/boards/deneyap_kart/mpconfigboard.h +++ b/ports/espressif/boards/deneyap_kart/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/deneyap_kart/pins.c b/ports/espressif/boards/deneyap_kart/pins.c index 9408d4470cbf..77bb28819227 100644 --- a/ports/espressif/boards/deneyap_kart/pins.c +++ b/ports/espressif/boards/deneyap_kart/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Radio Sound, Inc. +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/deneyap_kart_1a/board.c b/ports/espressif/boards/deneyap_kart_1a/board.c index 12d8928cd5ee..9b4c44e78b28 100644 --- a/ports/espressif/boards/deneyap_kart_1a/board.c +++ b/ports/espressif/boards/deneyap_kart_1a/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Radio Sound, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Radio Sound, Inc. +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/deneyap_kart_1a/mpconfigboard.h b/ports/espressif/boards/deneyap_kart_1a/mpconfigboard.h index 403c62e9fd56..ee79699c05aa 100644 --- a/ports/espressif/boards/deneyap_kart_1a/mpconfigboard.h +++ b/ports/espressif/boards/deneyap_kart_1a/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/deneyap_kart_1a/pins.c b/ports/espressif/boards/deneyap_kart_1a/pins.c index c4b1d5184095..c01dcb9dde60 100644 --- a/ports/espressif/boards/deneyap_kart_1a/pins.c +++ b/ports/espressif/boards/deneyap_kart_1a/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Radio Sound, Inc. +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/deneyap_kart_1a_v2/board.c b/ports/espressif/boards/deneyap_kart_1a_v2/board.c index 2287dbaaa722..4e14df075ccf 100644 --- a/ports/espressif/boards/deneyap_kart_1a_v2/board.c +++ b/ports/espressif/boards/deneyap_kart_1a_v2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/deneyap_kart_1a_v2/mpconfigboard.h b/ports/espressif/boards/deneyap_kart_1a_v2/mpconfigboard.h index 088bfbfd412f..17cc69492118 100644 --- a/ports/espressif/boards/deneyap_kart_1a_v2/mpconfigboard.h +++ b/ports/espressif/boards/deneyap_kart_1a_v2/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/deneyap_kart_1a_v2/pins.c b/ports/espressif/boards/deneyap_kart_1a_v2/pins.c index cf4c915e7ff2..860e19292428 100644 --- a/ports/espressif/boards/deneyap_kart_1a_v2/pins.c +++ b/ports/espressif/boards/deneyap_kart_1a_v2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/deneyap_kart_g/board.c b/ports/espressif/boards/deneyap_kart_g/board.c index 9b26fe466d4f..6587fa1118c0 100644 --- a/ports/espressif/boards/deneyap_kart_g/board.c +++ b/ports/espressif/boards/deneyap_kart_g/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include "shared-bindings/microcontroller/Pin.h" #include "supervisor/board.h" diff --git a/ports/espressif/boards/deneyap_kart_g/mpconfigboard.h b/ports/espressif/boards/deneyap_kart_g/mpconfigboard.h index d882e10861a1..246375120eac 100644 --- a/ports/espressif/boards/deneyap_kart_g/mpconfigboard.h +++ b/ports/espressif/boards/deneyap_kart_g/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * Copyright (c) 2021 skieast/Bruce Segal - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// SPDX-FileCopyrightText: Copyright (c) 2021 skieast/Bruce Segal +// +// SPDX-License-Identifier: MIT // Board setup #define MICROPY_HW_BOARD_NAME "Deneyap Kart G" diff --git a/ports/espressif/boards/deneyap_kart_g/pins.c b/ports/espressif/boards/deneyap_kart_g/pins.c index c8b7ef499624..d3f8877c3e07 100644 --- a/ports/espressif/boards/deneyap_kart_g/pins.c +++ b/ports/espressif/boards/deneyap_kart_g/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/deneyap_mini/board.c b/ports/espressif/boards/deneyap_mini/board.c index ac27ce4970f0..58f6458d6e49 100644 --- a/ports/espressif/boards/deneyap_mini/board.c +++ b/ports/espressif/boards/deneyap_mini/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/deneyap_mini/mpconfigboard.h b/ports/espressif/boards/deneyap_mini/mpconfigboard.h index 0e47285238ae..730147c47de3 100644 --- a/ports/espressif/boards/deneyap_mini/mpconfigboard.h +++ b/ports/espressif/boards/deneyap_mini/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/deneyap_mini/pins.c b/ports/espressif/boards/deneyap_mini/pins.c index 6c0466146711..a05ccfdab20a 100644 --- a/ports/espressif/boards/deneyap_mini/pins.c +++ b/ports/espressif/boards/deneyap_mini/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/deneyap_mini_v2/board.c b/ports/espressif/boards/deneyap_mini_v2/board.c index 2287dbaaa722..4e14df075ccf 100644 --- a/ports/espressif/boards/deneyap_mini_v2/board.c +++ b/ports/espressif/boards/deneyap_mini_v2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/deneyap_mini_v2/mpconfigboard.h b/ports/espressif/boards/deneyap_mini_v2/mpconfigboard.h index be6cbd86b7e4..9fe706a6ee29 100644 --- a/ports/espressif/boards/deneyap_mini_v2/mpconfigboard.h +++ b/ports/espressif/boards/deneyap_mini_v2/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/deneyap_mini_v2/pins.c b/ports/espressif/boards/deneyap_mini_v2/pins.c index ab3250769d11..b2fd066f4461 100644 --- a/ports/espressif/boards/deneyap_mini_v2/pins.c +++ b/ports/espressif/boards/deneyap_mini_v2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/doit_esp32_devkit_v1/board.c b/ports/espressif/boards/doit_esp32_devkit_v1/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/doit_esp32_devkit_v1/board.c +++ b/ports/espressif/boards/doit_esp32_devkit_v1/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/doit_esp32_devkit_v1/mpconfigboard.h b/ports/espressif/boards/doit_esp32_devkit_v1/mpconfigboard.h index 2a0dcd01045c..5c3f14b3d35c 100644 --- a/ports/espressif/boards/doit_esp32_devkit_v1/mpconfigboard.h +++ b/ports/espressif/boards/doit_esp32_devkit_v1/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/doit_esp32_devkit_v1/pins.c b/ports/espressif/boards/doit_esp32_devkit_v1/pins.c index 8381fa064471..04fa5766450f 100644 --- a/ports/espressif/boards/doit_esp32_devkit_v1/pins.c +++ b/ports/espressif/boards/doit_esp32_devkit_v1/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/electroniccats_bastwifi/board.c b/ports/espressif/boards/electroniccats_bastwifi/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/electroniccats_bastwifi/board.c +++ b/ports/espressif/boards/electroniccats_bastwifi/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h b/ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h index bf8c1efa6076..a37d437e8683 100644 --- a/ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h +++ b/ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/electroniccats_bastwifi/pins.c b/ports/espressif/boards/electroniccats_bastwifi/pins.c index fdd4cd83c433..9ae589cf0c39 100644 --- a/ports/espressif/boards/electroniccats_bastwifi/pins.c +++ b/ports/espressif/boards/electroniccats_bastwifi/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/es3ink/board.c b/ports/espressif/boards/es3ink/board.c index b3c8cb41914e..1ecda1cd7f69 100644 --- a/ports/espressif/boards/es3ink/board.c +++ b/ports/espressif/boards/es3ink/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/es3ink/mpconfigboard.h b/ports/espressif/boards/es3ink/mpconfigboard.h index 5aa60a122a04..2ff1afd4cdea 100644 --- a/ports/espressif/boards/es3ink/mpconfigboard.h +++ b/ports/espressif/boards/es3ink/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/es3ink/pins.c b/ports/espressif/boards/es3ink/pins.c index 3706eb09a66b..1d3f279853af 100644 --- a/ports/espressif/boards/es3ink/pins.c +++ b/ports/espressif/boards/es3ink/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/board.c b/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/board.c +++ b/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/mpconfigboard.h b/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/mpconfigboard.h index 012897c1e76d..eb78d039cb02 100644 --- a/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/pins.c b/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/pins.c index ed49680660c0..4d6f45d4bedd 100644 --- a/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/pins.c +++ b/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/board.c b/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/board.c +++ b/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/mpconfigboard.h b/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/mpconfigboard.h index e95db6988fa4..ad09bffc1f94 100644 --- a/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/pins.c b/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/pins.c index 3d722fb35e08..c867e474800f 100644 --- a/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/pins.c +++ b/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/espressif_esp32_eye/board.c b/ports/espressif/boards/espressif_esp32_eye/board.c index b37123db0450..14d7b576dd2b 100644 --- a/ports/espressif/boards/espressif_esp32_eye/board.c +++ b/ports/espressif/boards/espressif_esp32_eye/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/espressif_esp32_eye/mpconfigboard.h b/ports/espressif/boards/espressif_esp32_eye/mpconfigboard.h index 58107752eb89..dcac55237c72 100644 --- a/ports/espressif/boards/espressif_esp32_eye/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32_eye/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/espressif_esp32_eye/pins.c b/ports/espressif/boards/espressif_esp32_eye/pins.c index 1824ba1cc0b6..5871f0a941f6 100644 --- a/ports/espressif/boards/espressif_esp32_eye/pins.c +++ b/ports/espressif/boards/espressif_esp32_eye/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" diff --git a/ports/espressif/boards/espressif_esp32_lyrat/board.c b/ports/espressif/boards/espressif_esp32_lyrat/board.c index 12d8928cd5ee..9b4c44e78b28 100644 --- a/ports/espressif/boards/espressif_esp32_lyrat/board.c +++ b/ports/espressif/boards/espressif_esp32_lyrat/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Radio Sound, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Radio Sound, Inc. +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/espressif_esp32_lyrat/mpconfigboard.h b/ports/espressif/boards/espressif_esp32_lyrat/mpconfigboard.h index 16ec81fdd079..209402c7db6a 100644 --- a/ports/espressif/boards/espressif_esp32_lyrat/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32_lyrat/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Radio Sound, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Radio Sound, Inc. +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/espressif_esp32_lyrat/pins.c b/ports/espressif/boards/espressif_esp32_lyrat/pins.c index afef90e48096..dccf1d99d324 100644 --- a/ports/espressif/boards/espressif_esp32_lyrat/pins.c +++ b/ports/espressif/boards/espressif_esp32_lyrat/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Radio Sound, Inc. +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/board.c b/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/board.c index f749ee60d2be..b3b20cfe2d3f 100644 --- a/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/board.c +++ b/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/mpconfigboard.h b/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/mpconfigboard.h index 2b8ab21ad649..02b4451f20f3 100644 --- a/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT // Board setup #define MICROPY_HW_BOARD_NAME "ESP32-C3-DevKitM-1" diff --git a/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/pins.c b/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/pins.c index 243b6040d09d..99446214074f 100644 --- a/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/pins.c +++ b/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include "shared-bindings/board/__init__.h" diff --git a/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/board.c b/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/board.c +++ b/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/mpconfigboard.h b/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/mpconfigboard.h index 68fa84c75c44..3bc9c2a95807 100644 --- a/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/pins.c b/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/pins.c index 441bf33909db..00b294ccc57c 100644 --- a/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/pins.c +++ b/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/board.c b/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/board.c index f749ee60d2be..b3b20cfe2d3f 100644 --- a/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/board.c +++ b/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/mpconfigboard.h b/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/mpconfigboard.h index dd6b260e5121..3d777794af9e 100644 --- a/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT // Board setup #define MICROPY_HW_BOARD_NAME "ESP32-C6-DevKitM-1" diff --git a/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/pins.c b/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/pins.c index 243b6040d09d..99446214074f 100644 --- a/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/pins.c +++ b/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include "shared-bindings/board/__init__.h" diff --git a/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/board.c b/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/board.c index f749ee60d2be..b3b20cfe2d3f 100644 --- a/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/board.c +++ b/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/mpconfigboard.h b/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/mpconfigboard.h index 1536f4296dae..ca5cd8746ce7 100644 --- a/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT // Board setup #define MICROPY_HW_BOARD_NAME "ESP32-H2-DevKitM-1" diff --git a/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/pins.c b/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/pins.c index 466962a34f42..933e0fa5e072 100644 --- a/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/pins.c +++ b/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include "shared-bindings/board/__init__.h" diff --git a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/board.c b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/board.c +++ b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/mpconfigboard.h index c4264f1a8465..182594284cbd 100644 --- a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/pins.c b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/pins.c index 435f251c804a..fef4e99ffc60 100644 --- a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/pins.c +++ b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/board.c b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/board.c +++ b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/mpconfigboard.h index 0efa168d5d27..0465ca3acca7 100644 --- a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/pins.c b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/pins.c index 435f251c804a..fef4e99ffc60 100644 --- a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/pins.c +++ b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/board.c b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/board.c +++ b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/mpconfigboard.h index 4875dcc74502..e2eb368439b6 100644 --- a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/pins.c b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/pins.c index 435f251c804a..fef4e99ffc60 100644 --- a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/pins.c +++ b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/espressif_esp32s3_box/board.c b/ports/espressif/boards/espressif_esp32s3_box/board.c index 3ab932c83ae0..54edb47bac33 100644 --- a/ports/espressif/boards/espressif_esp32s3_box/board.c +++ b/ports/espressif/boards/espressif_esp32s3_box/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h index b38a0305e4e0..04338b59274a 100644 --- a/ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/espressif_esp32s3_box/pins.c b/ports/espressif/boards/espressif_esp32s3_box/pins.c index 73ef15697c9c..477956c503e3 100644 --- a/ports/espressif/boards/espressif_esp32s3_box/pins.c +++ b/ports/espressif/boards/espressif_esp32s3_box/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/espressif_esp32s3_box_lite/board.c b/ports/espressif/boards/espressif_esp32s3_box_lite/board.c index fe9cc993e803..e675c0f915b6 100644 --- a/ports/espressif/boards/espressif_esp32s3_box_lite/board.c +++ b/ports/espressif/boards/espressif_esp32s3_box_lite/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/espressif_esp32s3_box_lite/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s3_box_lite/mpconfigboard.h index fddcddc7c3e6..f35ac643c6b3 100644 --- a/ports/espressif/boards/espressif_esp32s3_box_lite/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s3_box_lite/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/espressif_esp32s3_box_lite/pins.c b/ports/espressif/boards/espressif_esp32s3_box_lite/pins.c index 73ef15697c9c..477956c503e3 100644 --- a/ports/espressif/boards/espressif_esp32s3_box_lite/pins.c +++ b/ports/espressif/boards/espressif_esp32s3_box_lite/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/board.c b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/board.c +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/mpconfigboard.h index 26410bb210cd..e3e7d02c7576 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/pins.c b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/pins.c index 919deca8b48f..0ab3e57cbc57 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/pins.c +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/board.c b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/board.c +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/mpconfigboard.h index ecd705d282c9..2ee339af9795 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/pins.c b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/pins.c index 919deca8b48f..0ab3e57cbc57 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/pins.c +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/board.c b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/board.c +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/mpconfigboard.h index bb9bd07eef8d..b110d60a790a 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/pins.c b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/pins.c index 919deca8b48f..0ab3e57cbc57 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/pins.c +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/board.c b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/board.c +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/mpconfigboard.h index afbdf826c5a4..84b749f3d4e2 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/pins.c b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/pins.c index 919deca8b48f..0ab3e57cbc57 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/pins.c +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8_hacktablet/board.c b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8_hacktablet/board.c index e79c07678ab7..668c38d5fb7f 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8_hacktablet/board.c +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8_hacktablet/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8_hacktablet/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8_hacktablet/mpconfigboard.h index 4f0fb3311662..aa8286b5bc6f 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8_hacktablet/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8_hacktablet/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8_hacktablet/pins.c b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8_hacktablet/pins.c index 80ca78769d28..5ded13d1a098 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8_hacktablet/pins.c +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8_hacktablet/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/board.c b/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/board.c +++ b/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/mpconfigboard.h index 0058da1a4cd4..3fe14423613c 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/pins.c b/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/pins.c index 919deca8b48f..0ab3e57cbc57 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/pins.c +++ b/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/espressif_esp32s3_eye/board.c b/ports/espressif/boards/espressif_esp32s3_eye/board.c index 58bd9dcb4e00..7361c2939684 100644 --- a/ports/espressif/boards/espressif_esp32s3_eye/board.c +++ b/ports/espressif/boards/espressif_esp32s3_eye/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/espressif_esp32s3_eye/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s3_eye/mpconfigboard.h index 711df8040271..7fe7a53a162d 100644 --- a/ports/espressif/boards/espressif_esp32s3_eye/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s3_eye/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/espressif_esp32s3_eye/pins.c b/ports/espressif/boards/espressif_esp32s3_eye/pins.c index 4b4da0b19969..cff9827ef567 100644 --- a/ports/espressif/boards/espressif_esp32s3_eye/pins.c +++ b/ports/espressif/boards/espressif_esp32s3_eye/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/espressif_esp32s3_lcd_ev/board.c b/ports/espressif/boards/espressif_esp32s3_lcd_ev/board.c index 726012d1f73b..5d13e5226f0c 100644 --- a/ports/espressif/boards/espressif_esp32s3_lcd_ev/board.c +++ b/ports/espressif/boards/espressif_esp32s3_lcd_ev/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/espressif_esp32s3_lcd_ev/board.h b/ports/espressif/boards/espressif_esp32s3_lcd_ev/board.h index e8f528654252..d2fe572b61a6 100644 --- a/ports/espressif/boards/espressif_esp32s3_lcd_ev/board.h +++ b/ports/espressif/boards/espressif_esp32s3_lcd_ev/board.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/boards/espressif_esp32s3_lcd_ev/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s3_lcd_ev/mpconfigboard.h index 83b879e21cd8..d88b8b615cbf 100644 --- a/ports/espressif/boards/espressif_esp32s3_lcd_ev/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s3_lcd_ev/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/espressif_esp32s3_lcd_ev/pins.c b/ports/espressif/boards/espressif_esp32s3_lcd_ev/pins.c index da25b509a98c..a1469a291ad6 100644 --- a/ports/espressif/boards/espressif_esp32s3_lcd_ev/pins.c +++ b/ports/espressif/boards/espressif_esp32s3_lcd_ev/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "py/objtuple.h" #include "boards/espressif_esp32s3_lcd_ev/board.h" #include "shared-bindings/board/__init__.h" diff --git a/ports/espressif/boards/espressif_esp32s3_usb_otg_n8/board.c b/ports/espressif/boards/espressif_esp32s3_usb_otg_n8/board.c index 3dd272b622ad..94d08bb56c81 100644 --- a/ports/espressif/boards/espressif_esp32s3_usb_otg_n8/board.c +++ b/ports/espressif/boards/espressif_esp32s3_usb_otg_n8/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/espressif_esp32s3_usb_otg_n8/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s3_usb_otg_n8/mpconfigboard.h index abf17f9395bf..8eb2507319b0 100644 --- a/ports/espressif/boards/espressif_esp32s3_usb_otg_n8/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s3_usb_otg_n8/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/espressif_esp32s3_usb_otg_n8/pins.c b/ports/espressif/boards/espressif_esp32s3_usb_otg_n8/pins.c index 8bbb8a399289..9cbc3ee3abe3 100644 --- a/ports/espressif/boards/espressif_esp32s3_usb_otg_n8/pins.c +++ b/ports/espressif/boards/espressif_esp32s3_usb_otg_n8/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/espressif_hmi_devkit_1/board.c b/ports/espressif/boards/espressif_hmi_devkit_1/board.c index b44ba7fad222..ec73bf118fcf 100644 --- a/ports/espressif/boards/espressif_hmi_devkit_1/board.c +++ b/ports/espressif/boards/espressif_hmi_devkit_1/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h b/ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h index ea1317023995..55420507ca8b 100644 --- a/ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h +++ b/ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/espressif_hmi_devkit_1/pins.c b/ports/espressif/boards/espressif_hmi_devkit_1/pins.c index ad3b32e4e4a3..e29129bc74af 100644 --- a/ports/espressif/boards/espressif_hmi_devkit_1/pins.c +++ b/ports/espressif/boards/espressif_hmi_devkit_1/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" diff --git a/ports/espressif/boards/espressif_kaluga_1.3/board.c b/ports/espressif/boards/espressif_kaluga_1.3/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/espressif_kaluga_1.3/board.c +++ b/ports/espressif/boards/espressif_kaluga_1.3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h b/ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h index 459a5b3289d6..a0b080120374 100644 --- a/ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h +++ b/ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/espressif_kaluga_1.3/pins.c b/ports/espressif/boards/espressif_kaluga_1.3/pins.c index caa7ecd06417..a48f11402e85 100644 --- a/ports/espressif/boards/espressif_kaluga_1.3/pins.c +++ b/ports/espressif/boards/espressif_kaluga_1.3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" diff --git a/ports/espressif/boards/espressif_kaluga_1/board.c b/ports/espressif/boards/espressif_kaluga_1/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/espressif_kaluga_1/board.c +++ b/ports/espressif/boards/espressif_kaluga_1/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h b/ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h index 8f89bfcbc435..d0dd8242f0c5 100644 --- a/ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h +++ b/ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/espressif_kaluga_1/pins.c b/ports/espressif/boards/espressif_kaluga_1/pins.c index c31a9fe42e4b..98be2b4d291d 100644 --- a/ports/espressif/boards/espressif_kaluga_1/pins.c +++ b/ports/espressif/boards/espressif_kaluga_1/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" diff --git a/ports/espressif/boards/espressif_saola_1_wroom/board.c b/ports/espressif/boards/espressif_saola_1_wroom/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/espressif_saola_1_wroom/board.c +++ b/ports/espressif/boards/espressif_saola_1_wroom/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/espressif_saola_1_wroom/mpconfigboard.h b/ports/espressif/boards/espressif_saola_1_wroom/mpconfigboard.h index faa3a74bf6e7..4f4536694a1e 100644 --- a/ports/espressif/boards/espressif_saola_1_wroom/mpconfigboard.h +++ b/ports/espressif/boards/espressif_saola_1_wroom/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/espressif_saola_1_wroom/pins.c b/ports/espressif/boards/espressif_saola_1_wroom/pins.c index 08a9e08f32fd..272ad8b3c95f 100644 --- a/ports/espressif/boards/espressif_saola_1_wroom/pins.c +++ b/ports/espressif/boards/espressif_saola_1_wroom/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/espressif_saola_1_wrover/board.c b/ports/espressif/boards/espressif_saola_1_wrover/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/espressif_saola_1_wrover/board.c +++ b/ports/espressif/boards/espressif_saola_1_wrover/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/espressif_saola_1_wrover/mpconfigboard.h b/ports/espressif/boards/espressif_saola_1_wrover/mpconfigboard.h index e467387447af..c22eedbd537c 100644 --- a/ports/espressif/boards/espressif_saola_1_wrover/mpconfigboard.h +++ b/ports/espressif/boards/espressif_saola_1_wrover/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/espressif_saola_1_wrover/pins.c b/ports/espressif/boards/espressif_saola_1_wrover/pins.c index 08a9e08f32fd..272ad8b3c95f 100644 --- a/ports/espressif/boards/espressif_saola_1_wrover/pins.c +++ b/ports/espressif/boards/espressif_saola_1_wrover/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/firebeetle2_esp32s3/board.c b/ports/espressif/boards/firebeetle2_esp32s3/board.c index 70ff11b067d5..560b824be0f2 100644 --- a/ports/espressif/boards/firebeetle2_esp32s3/board.c +++ b/ports/espressif/boards/firebeetle2_esp32s3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Bill Sideris, independently providing these changes. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Bill Sideris, independently providing these changes. +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/firebeetle2_esp32s3/mpconfigboard.h b/ports/espressif/boards/firebeetle2_esp32s3/mpconfigboard.h index 9cf9fa5e3b06..f5f6a1ac01e4 100644 --- a/ports/espressif/boards/firebeetle2_esp32s3/mpconfigboard.h +++ b/ports/espressif/boards/firebeetle2_esp32s3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Bill Sideris, independently providing these changes. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Bill Sideris, independently providing these changes. +// +// SPDX-License-Identifier: MIT #define MICROPY_HW_BOARD_NAME "DFRobot FireBeetle 2 ESP32-S3" #define MICROPY_HW_MCU_NAME "ESP32S3" diff --git a/ports/espressif/boards/firebeetle2_esp32s3/pins.c b/ports/espressif/boards/firebeetle2_esp32s3/pins.c index 86061a440149..6ae7611d6160 100644 --- a/ports/espressif/boards/firebeetle2_esp32s3/pins.c +++ b/ports/espressif/boards/firebeetle2_esp32s3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Bill Sideris, independently providing these changes. +// +// SPDX-License-Identifier: MIT + #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/flipperzero_wifi_dev/board.c b/ports/espressif/boards/flipperzero_wifi_dev/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/flipperzero_wifi_dev/board.c +++ b/ports/espressif/boards/flipperzero_wifi_dev/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/flipperzero_wifi_dev/mpconfigboard.h b/ports/espressif/boards/flipperzero_wifi_dev/mpconfigboard.h index 275b34cb5f46..a5bcb17c0321 100644 --- a/ports/espressif/boards/flipperzero_wifi_dev/mpconfigboard.h +++ b/ports/espressif/boards/flipperzero_wifi_dev/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/flipperzero_wifi_dev/pins.c b/ports/espressif/boards/flipperzero_wifi_dev/pins.c index a16f3e2b95ce..edb43953e513 100644 --- a/ports/espressif/boards/flipperzero_wifi_dev/pins.c +++ b/ports/espressif/boards/flipperzero_wifi_dev/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/franzininho_wifi_wroom/board.c b/ports/espressif/boards/franzininho_wifi_wroom/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/franzininho_wifi_wroom/board.c +++ b/ports/espressif/boards/franzininho_wifi_wroom/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/franzininho_wifi_wroom/mpconfigboard.h b/ports/espressif/boards/franzininho_wifi_wroom/mpconfigboard.h index a3a3d42efd79..412dce4bd4a0 100644 --- a/ports/espressif/boards/franzininho_wifi_wroom/mpconfigboard.h +++ b/ports/espressif/boards/franzininho_wifi_wroom/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/franzininho_wifi_wroom/pins.c b/ports/espressif/boards/franzininho_wifi_wroom/pins.c index 08a9e08f32fd..272ad8b3c95f 100644 --- a/ports/espressif/boards/franzininho_wifi_wroom/pins.c +++ b/ports/espressif/boards/franzininho_wifi_wroom/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/franzininho_wifi_wrover/board.c b/ports/espressif/boards/franzininho_wifi_wrover/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/franzininho_wifi_wrover/board.c +++ b/ports/espressif/boards/franzininho_wifi_wrover/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/franzininho_wifi_wrover/mpconfigboard.h b/ports/espressif/boards/franzininho_wifi_wrover/mpconfigboard.h index 2950804c2b8d..f141085d5db8 100644 --- a/ports/espressif/boards/franzininho_wifi_wrover/mpconfigboard.h +++ b/ports/espressif/boards/franzininho_wifi_wrover/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/franzininho_wifi_wrover/pins.c b/ports/espressif/boards/franzininho_wifi_wrover/pins.c index 08a9e08f32fd..272ad8b3c95f 100644 --- a/ports/espressif/boards/franzininho_wifi_wrover/pins.c +++ b/ports/espressif/boards/franzininho_wifi_wrover/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/gravitech_cucumber_m/board.c b/ports/espressif/boards/gravitech_cucumber_m/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/gravitech_cucumber_m/board.c +++ b/ports/espressif/boards/gravitech_cucumber_m/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/gravitech_cucumber_m/mpconfigboard.h b/ports/espressif/boards/gravitech_cucumber_m/mpconfigboard.h index fba644553f7b..288cb35e2001 100644 --- a/ports/espressif/boards/gravitech_cucumber_m/mpconfigboard.h +++ b/ports/espressif/boards/gravitech_cucumber_m/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/gravitech_cucumber_m/pins.c b/ports/espressif/boards/gravitech_cucumber_m/pins.c index 8c8980801740..96d99fd3b808 100644 --- a/ports/espressif/boards/gravitech_cucumber_m/pins.c +++ b/ports/espressif/boards/gravitech_cucumber_m/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/gravitech_cucumber_ms/board.c b/ports/espressif/boards/gravitech_cucumber_ms/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/gravitech_cucumber_ms/board.c +++ b/ports/espressif/boards/gravitech_cucumber_ms/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/gravitech_cucumber_ms/mpconfigboard.h b/ports/espressif/boards/gravitech_cucumber_ms/mpconfigboard.h index 1fa96a84a69c..b6287b581982 100644 --- a/ports/espressif/boards/gravitech_cucumber_ms/mpconfigboard.h +++ b/ports/espressif/boards/gravitech_cucumber_ms/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/gravitech_cucumber_ms/pins.c b/ports/espressif/boards/gravitech_cucumber_ms/pins.c index 4aa4429a93a5..f1bfc0dc4ee4 100644 --- a/ports/espressif/boards/gravitech_cucumber_ms/pins.c +++ b/ports/espressif/boards/gravitech_cucumber_ms/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/gravitech_cucumber_r/board.c b/ports/espressif/boards/gravitech_cucumber_r/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/gravitech_cucumber_r/board.c +++ b/ports/espressif/boards/gravitech_cucumber_r/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/gravitech_cucumber_r/mpconfigboard.h b/ports/espressif/boards/gravitech_cucumber_r/mpconfigboard.h index 07d65735a62e..6769e0d4c571 100644 --- a/ports/espressif/boards/gravitech_cucumber_r/mpconfigboard.h +++ b/ports/espressif/boards/gravitech_cucumber_r/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/gravitech_cucumber_r/pins.c b/ports/espressif/boards/gravitech_cucumber_r/pins.c index 8c8980801740..96d99fd3b808 100644 --- a/ports/espressif/boards/gravitech_cucumber_r/pins.c +++ b/ports/espressif/boards/gravitech_cucumber_r/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/gravitech_cucumber_rs/board.c b/ports/espressif/boards/gravitech_cucumber_rs/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/gravitech_cucumber_rs/board.c +++ b/ports/espressif/boards/gravitech_cucumber_rs/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/gravitech_cucumber_rs/mpconfigboard.h b/ports/espressif/boards/gravitech_cucumber_rs/mpconfigboard.h index 1e914215741b..79b0f8642a20 100644 --- a/ports/espressif/boards/gravitech_cucumber_rs/mpconfigboard.h +++ b/ports/espressif/boards/gravitech_cucumber_rs/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/gravitech_cucumber_rs/pins.c b/ports/espressif/boards/gravitech_cucumber_rs/pins.c index 4aa4429a93a5..f1bfc0dc4ee4 100644 --- a/ports/espressif/boards/gravitech_cucumber_rs/pins.c +++ b/ports/espressif/boards/gravitech_cucumber_rs/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/hardkernel_odroid_go/board.c b/ports/espressif/boards/hardkernel_odroid_go/board.c index 141a891d5739..647fcd740eba 100644 --- a/ports/espressif/boards/hardkernel_odroid_go/board.c +++ b/ports/espressif/boards/hardkernel_odroid_go/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/hardkernel_odroid_go/mpconfigboard.h b/ports/espressif/boards/hardkernel_odroid_go/mpconfigboard.h index 90c4eafb9fd5..3cb5f7fe077c 100644 --- a/ports/espressif/boards/hardkernel_odroid_go/mpconfigboard.h +++ b/ports/espressif/boards/hardkernel_odroid_go/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #define MICROPY_HW_BOARD_NAME "Hardkernel Odroid Go" #define MICROPY_HW_MCU_NAME "ESP32" diff --git a/ports/espressif/boards/hardkernel_odroid_go/pins.c b/ports/espressif/boards/hardkernel_odroid_go/pins.c index 40f4fcdc3441..de80fe22f999 100644 --- a/ports/espressif/boards/hardkernel_odroid_go/pins.c +++ b/ports/espressif/boards/hardkernel_odroid_go/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/heltec_esp32s3_wifi_lora_v3/board.c b/ports/espressif/boards/heltec_esp32s3_wifi_lora_v3/board.c index 5adae1fd5665..317fb0d88a1f 100644 --- a/ports/espressif/boards/heltec_esp32s3_wifi_lora_v3/board.c +++ b/ports/espressif/boards/heltec_esp32s3_wifi_lora_v3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/heltec_esp32s3_wifi_lora_v3/mpconfigboard.h b/ports/espressif/boards/heltec_esp32s3_wifi_lora_v3/mpconfigboard.h index ea7d4e4ddea5..c322866eea25 100644 --- a/ports/espressif/boards/heltec_esp32s3_wifi_lora_v3/mpconfigboard.h +++ b/ports/espressif/boards/heltec_esp32s3_wifi_lora_v3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/heltec_esp32s3_wifi_lora_v3/pins.c b/ports/espressif/boards/heltec_esp32s3_wifi_lora_v3/pins.c index 69fe56f4bb49..2833ca06032a 100644 --- a/ports/espressif/boards/heltec_esp32s3_wifi_lora_v3/pins.c +++ b/ports/espressif/boards/heltec_esp32s3_wifi_lora_v3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/hexky_s2/board.c b/ports/espressif/boards/hexky_s2/board.c index ddcfe5f7f9f0..5b9c2125f39b 100644 --- a/ports/espressif/boards/hexky_s2/board.c +++ b/ports/espressif/boards/hexky_s2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/hexky_s2/mpconfigboard.h b/ports/espressif/boards/hexky_s2/mpconfigboard.h index f49901332f7d..7f15c42670eb 100644 --- a/ports/espressif/boards/hexky_s2/mpconfigboard.h +++ b/ports/espressif/boards/hexky_s2/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/hexky_s2/pins.c b/ports/espressif/boards/hexky_s2/pins.c index 3c8d677f0bbd..13c979e29298 100644 --- a/ports/espressif/boards/hexky_s2/pins.c +++ b/ports/espressif/boards/hexky_s2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/hiibot_iots2/board.c b/ports/espressif/boards/hiibot_iots2/board.c index 8720aa1b5c05..e9941cbc3685 100644 --- a/ports/espressif/boards/hiibot_iots2/board.c +++ b/ports/espressif/boards/hiibot_iots2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/hiibot_iots2/mpconfigboard.h b/ports/espressif/boards/hiibot_iots2/mpconfigboard.h index 269bea856685..144a68a7cdf3 100644 --- a/ports/espressif/boards/hiibot_iots2/mpconfigboard.h +++ b/ports/espressif/boards/hiibot_iots2/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/hiibot_iots2/pins.c b/ports/espressif/boards/hiibot_iots2/pins.c index a2277364f298..c011f056edd9 100644 --- a/ports/espressif/boards/hiibot_iots2/pins.c +++ b/ports/espressif/boards/hiibot_iots2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/lilygo_tdeck/board.c b/ports/espressif/boards/lilygo_tdeck/board.c index 6be289ab289b..f2b3ebb12c83 100644 --- a/ports/espressif/boards/lilygo_tdeck/board.c +++ b/ports/espressif/boards/lilygo_tdeck/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/lilygo_tdeck/mpconfigboard.h b/ports/espressif/boards/lilygo_tdeck/mpconfigboard.h index 7dfebebff34c..41d8c9cf7874 100644 --- a/ports/espressif/boards/lilygo_tdeck/mpconfigboard.h +++ b/ports/espressif/boards/lilygo_tdeck/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/lilygo_tdeck/pins.c b/ports/espressif/boards/lilygo_tdeck/pins.c index 411056575524..50c368dd6f23 100644 --- a/ports/espressif/boards/lilygo_tdeck/pins.c +++ b/ports/espressif/boards/lilygo_tdeck/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/lilygo_tdisplay_s3/board.c b/ports/espressif/boards/lilygo_tdisplay_s3/board.c index 96e447c1612a..74bdd4fa11e2 100644 --- a/ports/espressif/boards/lilygo_tdisplay_s3/board.c +++ b/ports/espressif/boards/lilygo_tdisplay_s3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/lilygo_tdisplay_s3/mpconfigboard.h b/ports/espressif/boards/lilygo_tdisplay_s3/mpconfigboard.h index 728679582e68..3b5dea2d6f55 100644 --- a/ports/espressif/boards/lilygo_tdisplay_s3/mpconfigboard.h +++ b/ports/espressif/boards/lilygo_tdisplay_s3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/lilygo_tdisplay_s3/pins.c b/ports/espressif/boards/lilygo_tdisplay_s3/pins.c index e43d19826527..04530b4c9a1f 100644 --- a/ports/espressif/boards/lilygo_tdisplay_s3/pins.c +++ b/ports/espressif/boards/lilygo_tdisplay_s3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/lilygo_tembed_esp32s3/board.c b/ports/espressif/boards/lilygo_tembed_esp32s3/board.c index 8039f618f0c2..b8dfc4d5b145 100644 --- a/ports/espressif/boards/lilygo_tembed_esp32s3/board.c +++ b/ports/espressif/boards/lilygo_tembed_esp32s3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/lilygo_tembed_esp32s3/mpconfigboard.h b/ports/espressif/boards/lilygo_tembed_esp32s3/mpconfigboard.h index 307c103e33a3..642e7275347b 100644 --- a/ports/espressif/boards/lilygo_tembed_esp32s3/mpconfigboard.h +++ b/ports/espressif/boards/lilygo_tembed_esp32s3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/lilygo_tembed_esp32s3/pins.c b/ports/espressif/boards/lilygo_tembed_esp32s3/pins.c index 94c57f162f54..414a42a358c0 100644 --- a/ports/espressif/boards/lilygo_tembed_esp32s3/pins.c +++ b/ports/espressif/boards/lilygo_tembed_esp32s3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/lilygo_ttgo_t-01c3/board.c b/ports/espressif/boards/lilygo_ttgo_t-01c3/board.c index e8fec80c7c6f..13ba10cef98e 100644 --- a/ports/espressif/boards/lilygo_ttgo_t-01c3/board.c +++ b/ports/espressif/boards/lilygo_ttgo_t-01c3/board.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + #include "supervisor/board.h" // Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/espressif/boards/lilygo_ttgo_t-01c3/mpconfigboard.h b/ports/espressif/boards/lilygo_ttgo_t-01c3/mpconfigboard.h index bbb8cff19519..a524f3946019 100644 --- a/ports/espressif/boards/lilygo_ttgo_t-01c3/mpconfigboard.h +++ b/ports/espressif/boards/lilygo_ttgo_t-01c3/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "LILYGO TTGO T-01C3" #define MICROPY_HW_MCU_NAME "ESP32-C3" diff --git a/ports/espressif/boards/lilygo_ttgo_t-01c3/pins.c b/ports/espressif/boards/lilygo_ttgo_t-01c3/pins.c index 887d85ef2f54..af37ae12ab58 100644 --- a/ports/espressif/boards/lilygo_ttgo_t-01c3/pins.c +++ b/ports/espressif/boards/lilygo_ttgo_t-01c3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/lilygo_ttgo_t-oi-plus/board.c b/ports/espressif/boards/lilygo_ttgo_t-oi-plus/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/lilygo_ttgo_t-oi-plus/board.c +++ b/ports/espressif/boards/lilygo_ttgo_t-oi-plus/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/lilygo_ttgo_t-oi-plus/mpconfigboard.h b/ports/espressif/boards/lilygo_ttgo_t-oi-plus/mpconfigboard.h index 26a30e07dd69..c4772c73be64 100644 --- a/ports/espressif/boards/lilygo_ttgo_t-oi-plus/mpconfigboard.h +++ b/ports/espressif/boards/lilygo_ttgo_t-oi-plus/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "LILYGO TTGO T-OI PLUS" #define MICROPY_HW_MCU_NAME "ESP32-C3" diff --git a/ports/espressif/boards/lilygo_ttgo_t-oi-plus/pins.c b/ports/espressif/boards/lilygo_ttgo_t-oi-plus/pins.c index c906b7a55564..6149a862bc94 100644 --- a/ports/espressif/boards/lilygo_ttgo_t-oi-plus/pins.c +++ b/ports/espressif/boards/lilygo_ttgo_t-oi-plus/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/lilygo_ttgo_t8_esp32_s2_wroom/board.c b/ports/espressif/boards/lilygo_ttgo_t8_esp32_s2_wroom/board.c index 76973aee30dc..162fbee869b7 100644 --- a/ports/espressif/boards/lilygo_ttgo_t8_esp32_s2_wroom/board.c +++ b/ports/espressif/boards/lilygo_ttgo_t8_esp32_s2_wroom/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Fabian Affolter - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Fabian Affolter +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/lilygo_ttgo_t8_esp32_s2_wroom/mpconfigboard.h b/ports/espressif/boards/lilygo_ttgo_t8_esp32_s2_wroom/mpconfigboard.h index 4ab6ddbda597..b607422a4bdf 100644 --- a/ports/espressif/boards/lilygo_ttgo_t8_esp32_s2_wroom/mpconfigboard.h +++ b/ports/espressif/boards/lilygo_ttgo_t8_esp32_s2_wroom/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Fabian Affolter - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Fabian Affolter +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/lilygo_ttgo_t8_esp32_s2_wroom/pins.c b/ports/espressif/boards/lilygo_ttgo_t8_esp32_s2_wroom/pins.c index ab080dc50e7b..3b48b4000252 100644 --- a/ports/espressif/boards/lilygo_ttgo_t8_esp32_s2_wroom/pins.c +++ b/ports/espressif/boards/lilygo_ttgo_t8_esp32_s2_wroom/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Fabian Affolter +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/lilygo_ttgo_t8_s2/board.c b/ports/espressif/boards/lilygo_ttgo_t8_s2/board.c index 76973aee30dc..162fbee869b7 100644 --- a/ports/espressif/boards/lilygo_ttgo_t8_s2/board.c +++ b/ports/espressif/boards/lilygo_ttgo_t8_s2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Fabian Affolter - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Fabian Affolter +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/lilygo_ttgo_t8_s2/mpconfigboard.h b/ports/espressif/boards/lilygo_ttgo_t8_s2/mpconfigboard.h index 91e68a1e2405..9ab674eefb92 100644 --- a/ports/espressif/boards/lilygo_ttgo_t8_s2/mpconfigboard.h +++ b/ports/espressif/boards/lilygo_ttgo_t8_s2/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Fabian Affolter - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Fabian Affolter +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/lilygo_ttgo_t8_s2/pins.c b/ports/espressif/boards/lilygo_ttgo_t8_s2/pins.c index f462fa25e3c0..f3daa6fa4ea2 100644 --- a/ports/espressif/boards/lilygo_ttgo_t8_s2/pins.c +++ b/ports/espressif/boards/lilygo_ttgo_t8_s2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Fabian Affolter +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/board.c b/ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/board.c index d303901db91d..2b77e24b91e7 100644 --- a/ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/board.c +++ b/ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h b/ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h index faa01ff3e1dd..dfc64d86c5da 100644 --- a/ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h +++ b/ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/pins.c b/ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/pins.c index 08e0fe017479..36ebf6325b0e 100644 --- a/ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/pins.c +++ b/ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_16m/board.c b/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_16m/board.c index 1821f7de49e7..97574398ca2c 100644 --- a/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_16m/board.c +++ b/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_16m/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_16m/mpconfigboard.h b/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_16m/mpconfigboard.h index 39febafb6a32..10b074bd9fcf 100644 --- a/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_16m/mpconfigboard.h +++ b/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_16m/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_16m/pins.c b/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_16m/pins.c index 5a72b0f416bd..cc9c7240f55c 100644 --- a/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_16m/pins.c +++ b/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_16m/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/board.c b/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/board.c index d1e2b556dbe5..2d3cb64d4559 100644 --- a/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/board.c +++ b/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/mpconfigboard.h b/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/mpconfigboard.h index f0b303be898b..b519954872f9 100644 --- a/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/mpconfigboard.h +++ b/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/pins.c b/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/pins.c index d29e6488b20d..1181147f9212 100644 --- a/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/pins.c +++ b/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/lilygo_twatch_2020_v3/board.c b/ports/espressif/boards/lilygo_twatch_2020_v3/board.c index 495209365268..3860ca61be66 100644 --- a/ports/espressif/boards/lilygo_twatch_2020_v3/board.c +++ b/ports/espressif/boards/lilygo_twatch_2020_v3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/lilygo_twatch_2020_v3/mpconfigboard.h b/ports/espressif/boards/lilygo_twatch_2020_v3/mpconfigboard.h index bf65b394f720..d499f3ec9da3 100644 --- a/ports/espressif/boards/lilygo_twatch_2020_v3/mpconfigboard.h +++ b/ports/espressif/boards/lilygo_twatch_2020_v3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/lilygo_twatch_2020_v3/pins.c b/ports/espressif/boards/lilygo_twatch_2020_v3/pins.c index 8dd20b1a6998..c3dc1e137af2 100644 --- a/ports/espressif/boards/lilygo_twatch_2020_v3/pins.c +++ b/ports/espressif/boards/lilygo_twatch_2020_v3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/lolin_c3_mini/board.c b/ports/espressif/boards/lolin_c3_mini/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/lolin_c3_mini/board.c +++ b/ports/espressif/boards/lolin_c3_mini/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/lolin_c3_mini/mpconfigboard.h b/ports/espressif/boards/lolin_c3_mini/mpconfigboard.h index 315384627b5f..da141ad7007f 100644 --- a/ports/espressif/boards/lolin_c3_mini/mpconfigboard.h +++ b/ports/espressif/boards/lolin_c3_mini/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Board setup diff --git a/ports/espressif/boards/lolin_c3_mini/pins.c b/ports/espressif/boards/lolin_c3_mini/pins.c index 6b160202051e..fa9acef968ed 100644 --- a/ports/espressif/boards/lolin_c3_mini/pins.c +++ b/ports/espressif/boards/lolin_c3_mini/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/lolin_c3_pico/board.c b/ports/espressif/boards/lolin_c3_pico/board.c index 00ae21ace820..5859571eefa0 100644 --- a/ports/espressif/boards/lolin_c3_pico/board.c +++ b/ports/espressif/boards/lolin_c3_pico/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 David Sullivan - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 David Sullivan +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/lolin_c3_pico/mpconfigboard.h b/ports/espressif/boards/lolin_c3_pico/mpconfigboard.h index ce0643e787db..767592c15a5a 100644 --- a/ports/espressif/boards/lolin_c3_pico/mpconfigboard.h +++ b/ports/espressif/boards/lolin_c3_pico/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Board setup diff --git a/ports/espressif/boards/lolin_c3_pico/pins.c b/ports/espressif/boards/lolin_c3_pico/pins.c index d36c9f9b14d0..687fa443cf77 100644 --- a/ports/espressif/boards/lolin_c3_pico/pins.c +++ b/ports/espressif/boards/lolin_c3_pico/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 David Sullivan +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/lolin_s2_mini/board.c b/ports/espressif/boards/lolin_s2_mini/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/lolin_s2_mini/board.c +++ b/ports/espressif/boards/lolin_s2_mini/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/lolin_s2_mini/mpconfigboard.h b/ports/espressif/boards/lolin_s2_mini/mpconfigboard.h index e943e701841c..d170aef6a59a 100644 --- a/ports/espressif/boards/lolin_s2_mini/mpconfigboard.h +++ b/ports/espressif/boards/lolin_s2_mini/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/lolin_s2_mini/pins.c b/ports/espressif/boards/lolin_s2_mini/pins.c index ee81e00d9e5a..066c906b55bc 100644 --- a/ports/espressif/boards/lolin_s2_mini/pins.c +++ b/ports/espressif/boards/lolin_s2_mini/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/lolin_s2_pico/board.c b/ports/espressif/boards/lolin_s2_pico/board.c index 541b9020d4b8..3094f41df1ef 100644 --- a/ports/espressif/boards/lolin_s2_pico/board.c +++ b/ports/espressif/boards/lolin_s2_pico/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/lolin_s2_pico/mpconfigboard.h b/ports/espressif/boards/lolin_s2_pico/mpconfigboard.h index a33e6ea4d0e0..146fb3efe15a 100644 --- a/ports/espressif/boards/lolin_s2_pico/mpconfigboard.h +++ b/ports/espressif/boards/lolin_s2_pico/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/lolin_s2_pico/pins.c b/ports/espressif/boards/lolin_s2_pico/pins.c index 1afd508f033e..61e8ac49e5f8 100644 --- a/ports/espressif/boards/lolin_s2_pico/pins.c +++ b/ports/espressif/boards/lolin_s2_pico/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/lolin_s3/board.c b/ports/espressif/boards/lolin_s3/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/lolin_s3/board.c +++ b/ports/espressif/boards/lolin_s3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/lolin_s3/mpconfigboard.h b/ports/espressif/boards/lolin_s3/mpconfigboard.h index 9dc1b8f6a9b8..2fe9197c4a00 100644 --- a/ports/espressif/boards/lolin_s3/mpconfigboard.h +++ b/ports/espressif/boards/lolin_s3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/lolin_s3/pins.c b/ports/espressif/boards/lolin_s3/pins.c index 4bde24788aef..155b1970118b 100644 --- a/ports/espressif/boards/lolin_s3/pins.c +++ b/ports/espressif/boards/lolin_s3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/lolin_s3_mini/board.c b/ports/espressif/boards/lolin_s3_mini/board.c index 00ae21ace820..5859571eefa0 100644 --- a/ports/espressif/boards/lolin_s3_mini/board.c +++ b/ports/espressif/boards/lolin_s3_mini/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 David Sullivan - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 David Sullivan +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/lolin_s3_mini/mpconfigboard.h b/ports/espressif/boards/lolin_s3_mini/mpconfigboard.h index d94cf9adf31e..3030473d4cb1 100644 --- a/ports/espressif/boards/lolin_s3_mini/mpconfigboard.h +++ b/ports/espressif/boards/lolin_s3_mini/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 David Sullivan - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 David Sullivan +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/lolin_s3_mini/pins.c b/ports/espressif/boards/lolin_s3_mini/pins.c index 18a822e6a01a..3d3cca2cc7a6 100644 --- a/ports/espressif/boards/lolin_s3_mini/pins.c +++ b/ports/espressif/boards/lolin_s3_mini/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 David Sullivan +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/lolin_s3_pro/board.c b/ports/espressif/boards/lolin_s3_pro/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/lolin_s3_pro/board.c +++ b/ports/espressif/boards/lolin_s3_pro/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/lolin_s3_pro/mpconfigboard.h b/ports/espressif/boards/lolin_s3_pro/mpconfigboard.h index 243ffa55cb12..b5964b18e5ea 100755 --- a/ports/espressif/boards/lolin_s3_pro/mpconfigboard.h +++ b/ports/espressif/boards/lolin_s3_pro/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/lolin_s3_pro/pins.c b/ports/espressif/boards/lolin_s3_pro/pins.c index 1cf80022fbfb..61546d5bf12a 100644 --- a/ports/espressif/boards/lolin_s3_pro/pins.c +++ b/ports/espressif/boards/lolin_s3_pro/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/luatos_core_esp32c3/board.c b/ports/espressif/boards/luatos_core_esp32c3/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/luatos_core_esp32c3/board.c +++ b/ports/espressif/boards/luatos_core_esp32c3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/luatos_core_esp32c3/mpconfigboard.h b/ports/espressif/boards/luatos_core_esp32c3/mpconfigboard.h index 6d33513e3c7c..5540b0feb326 100644 --- a/ports/espressif/boards/luatos_core_esp32c3/mpconfigboard.h +++ b/ports/espressif/boards/luatos_core_esp32c3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Board setup diff --git a/ports/espressif/boards/luatos_core_esp32c3/pins.c b/ports/espressif/boards/luatos_core_esp32c3/pins.c index f45205b5c380..d933e8f55c55 100644 --- a/ports/espressif/boards/luatos_core_esp32c3/pins.c +++ b/ports/espressif/boards/luatos_core_esp32c3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/luatos_core_esp32c3_ch343/board.c b/ports/espressif/boards/luatos_core_esp32c3_ch343/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/luatos_core_esp32c3_ch343/board.c +++ b/ports/espressif/boards/luatos_core_esp32c3_ch343/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/luatos_core_esp32c3_ch343/mpconfigboard.h b/ports/espressif/boards/luatos_core_esp32c3_ch343/mpconfigboard.h index 000056e5ee1e..1682f3b27f68 100644 --- a/ports/espressif/boards/luatos_core_esp32c3_ch343/mpconfigboard.h +++ b/ports/espressif/boards/luatos_core_esp32c3_ch343/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Board setup diff --git a/ports/espressif/boards/luatos_core_esp32c3_ch343/pins.c b/ports/espressif/boards/luatos_core_esp32c3_ch343/pins.c index f45205b5c380..d933e8f55c55 100644 --- a/ports/espressif/boards/luatos_core_esp32c3_ch343/pins.c +++ b/ports/espressif/boards/luatos_core_esp32c3_ch343/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/m5stack_atom_echo/board.c b/ports/espressif/boards/m5stack_atom_echo/board.c index c0d9676d86df..a8f0849bcb27 100644 --- a/ports/espressif/boards/m5stack_atom_echo/board.c +++ b/ports/espressif/boards/m5stack_atom_echo/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 CDarius - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 CDarius +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/m5stack_atom_echo/mpconfigboard.h b/ports/espressif/boards/m5stack_atom_echo/mpconfigboard.h index d5ec6d6bc680..feb04e3b21b9 100644 --- a/ports/espressif/boards/m5stack_atom_echo/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_atom_echo/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 CDarius - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 CDarius +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/m5stack_atom_echo/pins.c b/ports/espressif/boards/m5stack_atom_echo/pins.c index 68b638921599..54115bf17298 100644 --- a/ports/espressif/boards/m5stack_atom_echo/pins.c +++ b/ports/espressif/boards/m5stack_atom_echo/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 CDarius +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/m5stack_atom_lite/board.c b/ports/espressif/boards/m5stack_atom_lite/board.c index c0d9676d86df..a8f0849bcb27 100644 --- a/ports/espressif/boards/m5stack_atom_lite/board.c +++ b/ports/espressif/boards/m5stack_atom_lite/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 CDarius - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 CDarius +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/m5stack_atom_lite/mpconfigboard.h b/ports/espressif/boards/m5stack_atom_lite/mpconfigboard.h index dc256ab2f2c9..ddaafdfef216 100644 --- a/ports/espressif/boards/m5stack_atom_lite/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_atom_lite/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 CDarius - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 CDarius +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/m5stack_atom_lite/pins.c b/ports/espressif/boards/m5stack_atom_lite/pins.c index 4c2e103a5b01..e0b26d97e8ec 100644 --- a/ports/espressif/boards/m5stack_atom_lite/pins.c +++ b/ports/espressif/boards/m5stack_atom_lite/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 CDarius +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/m5stack_atom_matrix/board.c b/ports/espressif/boards/m5stack_atom_matrix/board.c index c0d9676d86df..a8f0849bcb27 100644 --- a/ports/espressif/boards/m5stack_atom_matrix/board.c +++ b/ports/espressif/boards/m5stack_atom_matrix/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 CDarius - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 CDarius +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/m5stack_atom_matrix/mpconfigboard.h b/ports/espressif/boards/m5stack_atom_matrix/mpconfigboard.h index 1af443091618..440eb44abe9e 100644 --- a/ports/espressif/boards/m5stack_atom_matrix/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_atom_matrix/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 CDarius - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 CDarius +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/m5stack_atom_matrix/pins.c b/ports/espressif/boards/m5stack_atom_matrix/pins.c index 9b18b954f0b8..4868976d4182 100644 --- a/ports/espressif/boards/m5stack_atom_matrix/pins.c +++ b/ports/espressif/boards/m5stack_atom_matrix/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 CDarius +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/m5stack_atom_u/board.c b/ports/espressif/boards/m5stack_atom_u/board.c index c0d9676d86df..a8f0849bcb27 100644 --- a/ports/espressif/boards/m5stack_atom_u/board.c +++ b/ports/espressif/boards/m5stack_atom_u/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 CDarius - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 CDarius +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/m5stack_atom_u/mpconfigboard.h b/ports/espressif/boards/m5stack_atom_u/mpconfigboard.h index 742531142001..8ab4234460e2 100644 --- a/ports/espressif/boards/m5stack_atom_u/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_atom_u/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 CDarius - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 CDarius +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/m5stack_atom_u/pins.c b/ports/espressif/boards/m5stack_atom_u/pins.c index 4ba62ae2b76a..9cc7e80e0c50 100644 --- a/ports/espressif/boards/m5stack_atom_u/pins.c +++ b/ports/espressif/boards/m5stack_atom_u/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 CDarius +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/m5stack_atoms3/board.c b/ports/espressif/boards/m5stack_atoms3/board.c index 1b46c9510756..bd3ba0f604e0 100644 --- a/ports/espressif/boards/m5stack_atoms3/board.c +++ b/ports/espressif/boards/m5stack_atoms3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/m5stack_atoms3/mpconfigboard.h b/ports/espressif/boards/m5stack_atoms3/mpconfigboard.h index e2e3e7f84fa8..4c0538977a57 100644 --- a/ports/espressif/boards/m5stack_atoms3/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_atoms3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/m5stack_atoms3/pins.c b/ports/espressif/boards/m5stack_atoms3/pins.c index 09369191318b..db5dec3e18d2 100644 --- a/ports/espressif/boards/m5stack_atoms3/pins.c +++ b/ports/espressif/boards/m5stack_atoms3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/m5stack_atoms3_lite/board.c b/ports/espressif/boards/m5stack_atoms3_lite/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/m5stack_atoms3_lite/board.c +++ b/ports/espressif/boards/m5stack_atoms3_lite/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/m5stack_atoms3_lite/mpconfigboard.h b/ports/espressif/boards/m5stack_atoms3_lite/mpconfigboard.h index 43dd43634552..3e31c4f97379 100644 --- a/ports/espressif/boards/m5stack_atoms3_lite/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_atoms3_lite/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/m5stack_atoms3_lite/pins.c b/ports/espressif/boards/m5stack_atoms3_lite/pins.c index 052c15e69fad..c533de59c730 100644 --- a/ports/espressif/boards/m5stack_atoms3_lite/pins.c +++ b/ports/espressif/boards/m5stack_atoms3_lite/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" CIRCUITPY_BOARD_BUS_SINGLETON(porta_i2c, i2c, 1) diff --git a/ports/espressif/boards/m5stack_atoms3u/board.c b/ports/espressif/boards/m5stack_atoms3u/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/m5stack_atoms3u/board.c +++ b/ports/espressif/boards/m5stack_atoms3u/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/m5stack_atoms3u/mpconfigboard.h b/ports/espressif/boards/m5stack_atoms3u/mpconfigboard.h index 1c3376cee42e..880e4896ca93 100644 --- a/ports/espressif/boards/m5stack_atoms3u/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_atoms3u/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/m5stack_atoms3u/pins.c b/ports/espressif/boards/m5stack_atoms3u/pins.c index fdbd4ee9a643..137b93b1d03e 100644 --- a/ports/espressif/boards/m5stack_atoms3u/pins.c +++ b/ports/espressif/boards/m5stack_atoms3u/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/m5stack_cardputer/board.c b/ports/espressif/boards/m5stack_cardputer/board.c index 9fcfc439c1e5..71d08ae2c8ca 100644 --- a/ports/espressif/boards/m5stack_cardputer/board.c +++ b/ports/espressif/boards/m5stack_cardputer/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "keymap.h" #include "supervisor/board.h" diff --git a/ports/espressif/boards/m5stack_cardputer/keymap.h b/ports/espressif/boards/m5stack_cardputer/keymap.h index 514db1de193e..63147beb79f3 100644 --- a/ports/espressif/boards/m5stack_cardputer/keymap.h +++ b/ports/espressif/boards/m5stack_cardputer/keymap.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define SHIFT_MOD 0x40 #define FN_MOD 0x80 diff --git a/ports/espressif/boards/m5stack_cardputer/mpconfigboard.h b/ports/espressif/boards/m5stack_cardputer/mpconfigboard.h index 7a726dfdc069..a24aa5bcf902 100644 --- a/ports/espressif/boards/m5stack_cardputer/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_cardputer/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/m5stack_cardputer/pins.c b/ports/espressif/boards/m5stack_cardputer/pins.c index 4ee10f8131f3..52079bfff922 100644 --- a/ports/espressif/boards/m5stack_cardputer/pins.c +++ b/ports/espressif/boards/m5stack_cardputer/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/m5stack_core2/board.c b/ports/espressif/boards/m5stack_core2/board.c index f8abd4df62d5..c7773560dcce 100644 --- a/ports/espressif/boards/m5stack_core2/board.c +++ b/ports/espressif/boards/m5stack_core2/board.c @@ -1,27 +1,8 @@ -/* - * - * The MIT License (MIT) - * - * Copyright (c) 2023 CDarius - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 CDarius +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/m5stack_core2/mpconfigboard.h b/ports/espressif/boards/m5stack_core2/mpconfigboard.h index f55f754fa7b4..2650e86f724a 100755 --- a/ports/espressif/boards/m5stack_core2/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_core2/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 CDarius - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 CDarius +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/m5stack_core2/pins.c b/ports/espressif/boards/m5stack_core2/pins.c index bc936655fe47..029e80fce997 100644 --- a/ports/espressif/boards/m5stack_core2/pins.c +++ b/ports/espressif/boards/m5stack_core2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 CDarius +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/m5stack_core_basic/board.c b/ports/espressif/boards/m5stack_core_basic/board.c index 6a125015f78a..4af3ad74328d 100644 --- a/ports/espressif/boards/m5stack_core_basic/board.c +++ b/ports/espressif/boards/m5stack_core_basic/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 CDarius - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 CDarius +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/m5stack_core_basic/mpconfigboard.h b/ports/espressif/boards/m5stack_core_basic/mpconfigboard.h index 4a806fd7f94d..79da2cdbb80e 100755 --- a/ports/espressif/boards/m5stack_core_basic/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_core_basic/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 CDarius - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 CDarius +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/m5stack_core_basic/pins.c b/ports/espressif/boards/m5stack_core_basic/pins.c index b03ab55dbfef..1ef887dfde66 100644 --- a/ports/espressif/boards/m5stack_core_basic/pins.c +++ b/ports/espressif/boards/m5stack_core_basic/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 CDarius +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/m5stack_core_fire/board.c b/ports/espressif/boards/m5stack_core_fire/board.c index 6a125015f78a..4af3ad74328d 100644 --- a/ports/espressif/boards/m5stack_core_fire/board.c +++ b/ports/espressif/boards/m5stack_core_fire/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 CDarius - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 CDarius +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/m5stack_core_fire/mpconfigboard.h b/ports/espressif/boards/m5stack_core_fire/mpconfigboard.h index f4bb2b56e1c6..05c788fba7ec 100755 --- a/ports/espressif/boards/m5stack_core_fire/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_core_fire/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 CDarius - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 CDarius +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/m5stack_core_fire/pins.c b/ports/espressif/boards/m5stack_core_fire/pins.c index 6694e284d173..e0ae325b516e 100644 --- a/ports/espressif/boards/m5stack_core_fire/pins.c +++ b/ports/espressif/boards/m5stack_core_fire/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 CDarius +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/m5stack_cores3/board.c b/ports/espressif/boards/m5stack_cores3/board.c index 03cb6d06b772..7f0660944a7f 100644 --- a/ports/espressif/boards/m5stack_cores3/board.c +++ b/ports/espressif/boards/m5stack_cores3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/m5stack_cores3/mpconfigboard.h b/ports/espressif/boards/m5stack_cores3/mpconfigboard.h index 7ac086411af0..9b1edc4ea794 100644 --- a/ports/espressif/boards/m5stack_cores3/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_cores3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/m5stack_cores3/pins.c b/ports/espressif/boards/m5stack_cores3/pins.c index f9a85269ac10..5735f54cf09f 100644 --- a/ports/espressif/boards/m5stack_cores3/pins.c +++ b/ports/espressif/boards/m5stack_cores3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/m5stack_dial/board.c b/ports/espressif/boards/m5stack_dial/board.c index 80559ad31a7c..0fdda95c5cf9 100644 --- a/ports/espressif/boards/m5stack_dial/board.c +++ b/ports/espressif/boards/m5stack_dial/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/m5stack_dial/mpconfigboard.h b/ports/espressif/boards/m5stack_dial/mpconfigboard.h index 3d3825a3f83d..c70c1c85dab5 100644 --- a/ports/espressif/boards/m5stack_dial/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_dial/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 CDarius - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 CDarius +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/m5stack_dial/pins.c b/ports/espressif/boards/m5stack_dial/pins.c index 59b71e376c09..b33486aa3349 100644 --- a/ports/espressif/boards/m5stack_dial/pins.c +++ b/ports/espressif/boards/m5stack_dial/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/m5stack_m5paper/board.c b/ports/espressif/boards/m5stack_m5paper/board.c index 747a3c6f6be5..fbf66fa5ccdf 100644 --- a/ports/espressif/boards/m5stack_m5paper/board.c +++ b/ports/espressif/boards/m5stack_m5paper/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 fonix232 - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 fonix232 +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/m5stack_m5paper/mpconfigboard.h b/ports/espressif/boards/m5stack_m5paper/mpconfigboard.h index 23c7cfdb8b71..af41e5e05a38 100644 --- a/ports/espressif/boards/m5stack_m5paper/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_m5paper/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 fonix232 - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 fonix232 +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/m5stack_m5paper/pins.c b/ports/espressif/boards/m5stack_m5paper/pins.c index 4a2b1148b3b5..8a0d1a6c5d7e 100644 --- a/ports/espressif/boards/m5stack_m5paper/pins.c +++ b/ports/espressif/boards/m5stack_m5paper/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 fonix232 +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/m5stack_stamp_c3/board.c b/ports/espressif/boards/m5stack_stamp_c3/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/m5stack_stamp_c3/board.c +++ b/ports/espressif/boards/m5stack_stamp_c3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/m5stack_stamp_c3/mpconfigboard.h b/ports/espressif/boards/m5stack_stamp_c3/mpconfigboard.h index 90174f60ff44..2a02b84a9254 100644 --- a/ports/espressif/boards/m5stack_stamp_c3/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_stamp_c3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Board setup diff --git a/ports/espressif/boards/m5stack_stamp_c3/pins.c b/ports/espressif/boards/m5stack_stamp_c3/pins.c index 96bc0c60ed2c..55d52488f361 100644 --- a/ports/espressif/boards/m5stack_stamp_c3/pins.c +++ b/ports/espressif/boards/m5stack_stamp_c3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/m5stack_stick_c/board.c b/ports/espressif/boards/m5stack_stick_c/board.c index 4d33b21c583b..58c40ee43b3c 100644 --- a/ports/espressif/boards/m5stack_stick_c/board.c +++ b/ports/espressif/boards/m5stack_stick_c/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 CDarius - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 CDarius +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/m5stack_stick_c/mpconfigboard.h b/ports/espressif/boards/m5stack_stick_c/mpconfigboard.h index 93df8fd2b818..12c56d5e0262 100644 --- a/ports/espressif/boards/m5stack_stick_c/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_stick_c/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 CDarius - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 CDarius +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/m5stack_stick_c/pins.c b/ports/espressif/boards/m5stack_stick_c/pins.c index 5c8b89761865..55c88fafe7c0 100644 --- a/ports/espressif/boards/m5stack_stick_c/pins.c +++ b/ports/espressif/boards/m5stack_stick_c/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 CDarius +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/m5stack_stick_c_plus/board.c b/ports/espressif/boards/m5stack_stick_c_plus/board.c index 6d58e3a0a427..5aa04d5d67ba 100644 --- a/ports/espressif/boards/m5stack_stick_c_plus/board.c +++ b/ports/espressif/boards/m5stack_stick_c_plus/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 n0xa - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 n0xa +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/m5stack_stick_c_plus/mpconfigboard.h b/ports/espressif/boards/m5stack_stick_c_plus/mpconfigboard.h index e63ec84cc43b..e4ebe53a8d3b 100644 --- a/ports/espressif/boards/m5stack_stick_c_plus/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_stick_c_plus/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 n0xa - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 n0xa +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/m5stack_stick_c_plus/pins.c b/ports/espressif/boards/m5stack_stick_c_plus/pins.c index 63e3f2d8d973..af3f2eb531c5 100644 --- a/ports/espressif/boards/m5stack_stick_c_plus/pins.c +++ b/ports/espressif/boards/m5stack_stick_c_plus/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 n0xa +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/m5stack_timer_camera_x/board.c b/ports/espressif/boards/m5stack_timer_camera_x/board.c index 162ad40a80cb..7995d828db1c 100755 --- a/ports/espressif/boards/m5stack_timer_camera_x/board.c +++ b/ports/espressif/boards/m5stack_timer_camera_x/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Bill Sideris, independently providing these changes. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Bill Sideris, independently providing these changes. +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/m5stack_timer_camera_x/mpconfigboard.h b/ports/espressif/boards/m5stack_timer_camera_x/mpconfigboard.h index e42e27bd57b7..c6f733ed6412 100644 --- a/ports/espressif/boards/m5stack_timer_camera_x/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_timer_camera_x/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Bill Sideris, independently providing these changes. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Bill Sideris, independently providing these changes. +// +// SPDX-License-Identifier: MIT #define MICROPY_HW_BOARD_NAME "M5Stack Timer Camera X" #define MICROPY_HW_MCU_NAME "ESP32" diff --git a/ports/espressif/boards/m5stack_timer_camera_x/pins.c b/ports/espressif/boards/m5stack_timer_camera_x/pins.c index 97b2099ae07e..ccba5c06abef 100644 --- a/ports/espressif/boards/m5stack_timer_camera_x/pins.c +++ b/ports/espressif/boards/m5stack_timer_camera_x/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Bill Sideris, independently providing these changes. +// +// SPDX-License-Identifier: MIT + #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/magiclick_s3_n4r2/board.c b/ports/espressif/boards/magiclick_s3_n4r2/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/magiclick_s3_n4r2/board.c +++ b/ports/espressif/boards/magiclick_s3_n4r2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/magiclick_s3_n4r2/mpconfigboard.h b/ports/espressif/boards/magiclick_s3_n4r2/mpconfigboard.h index 17e04657931c..6ad2df0b17bf 100644 --- a/ports/espressif/boards/magiclick_s3_n4r2/mpconfigboard.h +++ b/ports/espressif/boards/magiclick_s3_n4r2/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/magiclick_s3_n4r2/pins.c b/ports/espressif/boards/magiclick_s3_n4r2/pins.c index f88843e36587..3628dd949861 100644 --- a/ports/espressif/boards/magiclick_s3_n4r2/pins.c +++ b/ports/espressif/boards/magiclick_s3_n4r2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS diff --git a/ports/espressif/boards/maker_badge/board.c b/ports/espressif/boards/maker_badge/board.c index 69b742cad2a7..f07d1cab69ce 100644 --- a/ports/espressif/boards/maker_badge/board.c +++ b/ports/espressif/boards/maker_badge/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/maker_badge/mpconfigboard.h b/ports/espressif/boards/maker_badge/mpconfigboard.h index 18f98a693b7d..2b4f68c6df8d 100644 --- a/ports/espressif/boards/maker_badge/mpconfigboard.h +++ b/ports/espressif/boards/maker_badge/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/maker_badge/pins.c b/ports/espressif/boards/maker_badge/pins.c index f97eed60d508..d0dfd057baac 100644 --- a/ports/espressif/boards/maker_badge/pins.c +++ b/ports/espressif/boards/maker_badge/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/makerfabs_tft7/board.c b/ports/espressif/boards/makerfabs_tft7/board.c index 0639737c3539..2ef34c8be856 100644 --- a/ports/espressif/boards/makerfabs_tft7/board.c +++ b/ports/espressif/boards/makerfabs_tft7/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/makerfabs_tft7/mpconfigboard.h b/ports/espressif/boards/makerfabs_tft7/mpconfigboard.h index 6414a2f12aca..6b22da260dcb 100644 --- a/ports/espressif/boards/makerfabs_tft7/mpconfigboard.h +++ b/ports/espressif/boards/makerfabs_tft7/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/makerfabs_tft7/pins.c b/ports/espressif/boards/makerfabs_tft7/pins.c index d952d27d8bd2..0d4ade4aa78e 100644 --- a/ports/espressif/boards/makerfabs_tft7/pins.c +++ b/ports/espressif/boards/makerfabs_tft7/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" diff --git a/ports/espressif/boards/makergo_esp32c3_supermini/board.c b/ports/espressif/boards/makergo_esp32c3_supermini/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/makergo_esp32c3_supermini/board.c +++ b/ports/espressif/boards/makergo_esp32c3_supermini/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/makergo_esp32c3_supermini/mpconfigboard.h b/ports/espressif/boards/makergo_esp32c3_supermini/mpconfigboard.h index 6767e713f793..2306ce28f343 100644 --- a/ports/espressif/boards/makergo_esp32c3_supermini/mpconfigboard.h +++ b/ports/espressif/boards/makergo_esp32c3_supermini/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Board setup diff --git a/ports/espressif/boards/makergo_esp32c3_supermini/pins.c b/ports/espressif/boards/makergo_esp32c3_supermini/pins.c index 9138dc4f5411..e858c703ed9d 100644 --- a/ports/espressif/boards/makergo_esp32c3_supermini/pins.c +++ b/ports/espressif/boards/makergo_esp32c3_supermini/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/microdev_micro_c3/board.c b/ports/espressif/boards/microdev_micro_c3/board.c index f749ee60d2be..b3b20cfe2d3f 100644 --- a/ports/espressif/boards/microdev_micro_c3/board.c +++ b/ports/espressif/boards/microdev_micro_c3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/microdev_micro_c3/mpconfigboard.h b/ports/espressif/boards/microdev_micro_c3/mpconfigboard.h index 0ed8ea8925a7..6f8b1a04ddfa 100644 --- a/ports/espressif/boards/microdev_micro_c3/mpconfigboard.h +++ b/ports/espressif/boards/microdev_micro_c3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT // Board setup #define MICROPY_HW_BOARD_NAME "MicroDev microC3" diff --git a/ports/espressif/boards/microdev_micro_c3/pins.c b/ports/espressif/boards/microdev_micro_c3/pins.c index ab3abdb39ca4..80d691f875ec 100644 --- a/ports/espressif/boards/microdev_micro_c3/pins.c +++ b/ports/espressif/boards/microdev_micro_c3/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include "shared-bindings/board/__init__.h" diff --git a/ports/espressif/boards/microdev_micro_s2/board.c b/ports/espressif/boards/microdev_micro_s2/board.c index f749ee60d2be..b3b20cfe2d3f 100644 --- a/ports/espressif/boards/microdev_micro_s2/board.c +++ b/ports/espressif/boards/microdev_micro_s2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/microdev_micro_s2/mpconfigboard.h b/ports/espressif/boards/microdev_micro_s2/mpconfigboard.h index c692c5e664d9..4f4e0ea27c00 100644 --- a/ports/espressif/boards/microdev_micro_s2/mpconfigboard.h +++ b/ports/espressif/boards/microdev_micro_s2/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT // Board setup #define MICROPY_HW_BOARD_NAME "MicroDev microS2" diff --git a/ports/espressif/boards/microdev_micro_s2/pins.c b/ports/espressif/boards/microdev_micro_s2/pins.c index a382bf8fef06..b4c389ccb24a 100644 --- a/ports/espressif/boards/microdev_micro_s2/pins.c +++ b/ports/espressif/boards/microdev_micro_s2/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include "shared-bindings/board/__init__.h" diff --git a/ports/espressif/boards/mixgo_ce_serial/board.c b/ports/espressif/boards/mixgo_ce_serial/board.c index 330c949046b3..e83f3b696798 100644 --- a/ports/espressif/boards/mixgo_ce_serial/board.c +++ b/ports/espressif/boards/mixgo_ce_serial/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/mixgo_ce_serial/mpconfigboard.h b/ports/espressif/boards/mixgo_ce_serial/mpconfigboard.h index 187687c8f54b..fef88b284c42 100644 --- a/ports/espressif/boards/mixgo_ce_serial/mpconfigboard.h +++ b/ports/espressif/boards/mixgo_ce_serial/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/mixgo_ce_serial/pins.c b/ports/espressif/boards/mixgo_ce_serial/pins.c index ca4eb12bf707..76e77ec44dec 100644 --- a/ports/espressif/boards/mixgo_ce_serial/pins.c +++ b/ports/espressif/boards/mixgo_ce_serial/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/mixgo_ce_udisk/board.c b/ports/espressif/boards/mixgo_ce_udisk/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/mixgo_ce_udisk/board.c +++ b/ports/espressif/boards/mixgo_ce_udisk/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/mixgo_ce_udisk/mpconfigboard.h b/ports/espressif/boards/mixgo_ce_udisk/mpconfigboard.h index 187687c8f54b..fef88b284c42 100644 --- a/ports/espressif/boards/mixgo_ce_udisk/mpconfigboard.h +++ b/ports/espressif/boards/mixgo_ce_udisk/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/mixgo_ce_udisk/pins.c b/ports/espressif/boards/mixgo_ce_udisk/pins.c index ca4eb12bf707..76e77ec44dec 100644 --- a/ports/espressif/boards/mixgo_ce_udisk/pins.c +++ b/ports/espressif/boards/mixgo_ce_udisk/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/morpheans_morphesp-240/board.c b/ports/espressif/boards/morpheans_morphesp-240/board.c index cd3e0c610312..5b1c3f82bbbd 100644 --- a/ports/espressif/boards/morpheans_morphesp-240/board.c +++ b/ports/espressif/boards/morpheans_morphesp-240/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h b/ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h index 1c36e78ccfc4..5091afa5cf16 100644 --- a/ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h +++ b/ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/morpheans_morphesp-240/pins.c b/ports/espressif/boards/morpheans_morphesp-240/pins.c index 427950b09e99..2bfc33067456 100644 --- a/ports/espressif/boards/morpheans_morphesp-240/pins.c +++ b/ports/espressif/boards/morpheans_morphesp-240/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/muselab_nanoesp32_s2_wroom/board.c b/ports/espressif/boards/muselab_nanoesp32_s2_wroom/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/muselab_nanoesp32_s2_wroom/board.c +++ b/ports/espressif/boards/muselab_nanoesp32_s2_wroom/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/muselab_nanoesp32_s2_wroom/mpconfigboard.h b/ports/espressif/boards/muselab_nanoesp32_s2_wroom/mpconfigboard.h index 0fac8c199a78..d3607bd37d06 100644 --- a/ports/espressif/boards/muselab_nanoesp32_s2_wroom/mpconfigboard.h +++ b/ports/espressif/boards/muselab_nanoesp32_s2_wroom/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/muselab_nanoesp32_s2_wroom/pins.c b/ports/espressif/boards/muselab_nanoesp32_s2_wroom/pins.c index 08a9e08f32fd..272ad8b3c95f 100644 --- a/ports/espressif/boards/muselab_nanoesp32_s2_wroom/pins.c +++ b/ports/espressif/boards/muselab_nanoesp32_s2_wroom/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/muselab_nanoesp32_s2_wrover/board.c b/ports/espressif/boards/muselab_nanoesp32_s2_wrover/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/muselab_nanoesp32_s2_wrover/board.c +++ b/ports/espressif/boards/muselab_nanoesp32_s2_wrover/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/muselab_nanoesp32_s2_wrover/mpconfigboard.h b/ports/espressif/boards/muselab_nanoesp32_s2_wrover/mpconfigboard.h index 1badf7fabb81..69003da8b40a 100644 --- a/ports/espressif/boards/muselab_nanoesp32_s2_wrover/mpconfigboard.h +++ b/ports/espressif/boards/muselab_nanoesp32_s2_wrover/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/muselab_nanoesp32_s2_wrover/pins.c b/ports/espressif/boards/muselab_nanoesp32_s2_wrover/pins.c index 08a9e08f32fd..272ad8b3c95f 100644 --- a/ports/espressif/boards/muselab_nanoesp32_s2_wrover/pins.c +++ b/ports/espressif/boards/muselab_nanoesp32_s2_wrover/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/odt_pixelwing_esp32_s2/board.c b/ports/espressif/boards/odt_pixelwing_esp32_s2/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/odt_pixelwing_esp32_s2/board.c +++ b/ports/espressif/boards/odt_pixelwing_esp32_s2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/odt_pixelwing_esp32_s2/mpconfigboard.h b/ports/espressif/boards/odt_pixelwing_esp32_s2/mpconfigboard.h index 5d6ad95e1b99..5e256a1e1dca 100644 --- a/ports/espressif/boards/odt_pixelwing_esp32_s2/mpconfigboard.h +++ b/ports/espressif/boards/odt_pixelwing_esp32_s2/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/odt_pixelwing_esp32_s2/pins.c b/ports/espressif/boards/odt_pixelwing_esp32_s2/pins.c index 0fbc5fa26606..b4ccf3b067c5 100644 --- a/ports/espressif/boards/odt_pixelwing_esp32_s2/pins.c +++ b/ports/espressif/boards/odt_pixelwing_esp32_s2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/oxocard_artwork/board.c b/ports/espressif/boards/oxocard_artwork/board.c index ceddaddf95f5..600bc0c59436 100644 --- a/ports/espressif/boards/oxocard_artwork/board.c +++ b/ports/espressif/boards/oxocard_artwork/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/oxocard_artwork/mpconfigboard.h b/ports/espressif/boards/oxocard_artwork/mpconfigboard.h index c7f4dc4a2094..f92b6dad4c1e 100644 --- a/ports/espressif/boards/oxocard_artwork/mpconfigboard.h +++ b/ports/espressif/boards/oxocard_artwork/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/oxocard_artwork/pins.c b/ports/espressif/boards/oxocard_artwork/pins.c index a42aa6b1ebdf..f72c4722e451 100644 --- a/ports/espressif/boards/oxocard_artwork/pins.c +++ b/ports/espressif/boards/oxocard_artwork/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/oxocard_connect/board.c b/ports/espressif/boards/oxocard_connect/board.c index c19229e01c54..89be45c82262 100644 --- a/ports/espressif/boards/oxocard_connect/board.c +++ b/ports/espressif/boards/oxocard_connect/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/oxocard_connect/mpconfigboard.h b/ports/espressif/boards/oxocard_connect/mpconfigboard.h index 136eaad71c72..3512a5a12f2d 100644 --- a/ports/espressif/boards/oxocard_connect/mpconfigboard.h +++ b/ports/espressif/boards/oxocard_connect/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/oxocard_connect/pins.c b/ports/espressif/boards/oxocard_connect/pins.c index 4fbd00d45e3c..c589f3a2f4a6 100644 --- a/ports/espressif/boards/oxocard_connect/pins.c +++ b/ports/espressif/boards/oxocard_connect/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/oxocard_galaxy/board.c b/ports/espressif/boards/oxocard_galaxy/board.c index ceddaddf95f5..600bc0c59436 100644 --- a/ports/espressif/boards/oxocard_galaxy/board.c +++ b/ports/espressif/boards/oxocard_galaxy/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/oxocard_galaxy/mpconfigboard.h b/ports/espressif/boards/oxocard_galaxy/mpconfigboard.h index b41d0a662180..7f68815b17f8 100644 --- a/ports/espressif/boards/oxocard_galaxy/mpconfigboard.h +++ b/ports/espressif/boards/oxocard_galaxy/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/oxocard_galaxy/pins.c b/ports/espressif/boards/oxocard_galaxy/pins.c index 445d907adfbf..ed26a79a25f1 100644 --- a/ports/espressif/boards/oxocard_galaxy/pins.c +++ b/ports/espressif/boards/oxocard_galaxy/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/oxocard_science/board.c b/ports/espressif/boards/oxocard_science/board.c index ceddaddf95f5..600bc0c59436 100644 --- a/ports/espressif/boards/oxocard_science/board.c +++ b/ports/espressif/boards/oxocard_science/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/oxocard_science/mpconfigboard.h b/ports/espressif/boards/oxocard_science/mpconfigboard.h index e572a7f61f7b..78095ff4e24c 100644 --- a/ports/espressif/boards/oxocard_science/mpconfigboard.h +++ b/ports/espressif/boards/oxocard_science/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/oxocard_science/pins.c b/ports/espressif/boards/oxocard_science/pins.c index e7b44a5ece0d..43b5e4392655 100644 --- a/ports/espressif/boards/oxocard_science/pins.c +++ b/ports/espressif/boards/oxocard_science/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/seeed_xiao_esp32c3/board.c b/ports/espressif/boards/seeed_xiao_esp32c3/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/seeed_xiao_esp32c3/board.c +++ b/ports/espressif/boards/seeed_xiao_esp32c3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/seeed_xiao_esp32c3/mpconfigboard.h b/ports/espressif/boards/seeed_xiao_esp32c3/mpconfigboard.h index 26fa6b7f8344..d4d0007d2024 100644 --- a/ports/espressif/boards/seeed_xiao_esp32c3/mpconfigboard.h +++ b/ports/espressif/boards/seeed_xiao_esp32c3/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Seeed Studio XIAO ESP32C3" #define MICROPY_HW_MCU_NAME "ESP32-C3FN4" diff --git a/ports/espressif/boards/seeed_xiao_esp32c3/pins.c b/ports/espressif/boards/seeed_xiao_esp32c3/pins.c index 5fc475d5644f..11d4d536de00 100644 --- a/ports/espressif/boards/seeed_xiao_esp32c3/pins.c +++ b/ports/espressif/boards/seeed_xiao_esp32c3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/sensebox_mcu_esp32s2/board.c b/ports/espressif/boards/sensebox_mcu_esp32s2/board.c index 11d94738ef07..10bfda67dcf7 100644 --- a/ports/espressif/boards/sensebox_mcu_esp32s2/board.c +++ b/ports/espressif/boards/sensebox_mcu_esp32s2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/sensebox_mcu_esp32s2/mpconfigboard.h b/ports/espressif/boards/sensebox_mcu_esp32s2/mpconfigboard.h index ae1e2a14ef13..1835e5d5a597 100644 --- a/ports/espressif/boards/sensebox_mcu_esp32s2/mpconfigboard.h +++ b/ports/espressif/boards/sensebox_mcu_esp32s2/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/sensebox_mcu_esp32s2/pins.c b/ports/espressif/boards/sensebox_mcu_esp32s2/pins.c index 9065832bccf7..c2504df4ba8b 100644 --- a/ports/espressif/boards/sensebox_mcu_esp32s2/pins.c +++ b/ports/espressif/boards/sensebox_mcu_esp32s2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/smartbeedesigns_bee_data_logger/board.c b/ports/espressif/boards/smartbeedesigns_bee_data_logger/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/smartbeedesigns_bee_data_logger/board.c +++ b/ports/espressif/boards/smartbeedesigns_bee_data_logger/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/smartbeedesigns_bee_data_logger/mpconfigboard.h b/ports/espressif/boards/smartbeedesigns_bee_data_logger/mpconfigboard.h index 1506b34573ac..1923c84cf9bb 100644 --- a/ports/espressif/boards/smartbeedesigns_bee_data_logger/mpconfigboard.h +++ b/ports/espressif/boards/smartbeedesigns_bee_data_logger/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/smartbeedesigns_bee_data_logger/pins.c b/ports/espressif/boards/smartbeedesigns_bee_data_logger/pins.c index 2f2c1108aa36..adf5bc0c2f52 100644 --- a/ports/espressif/boards/smartbeedesigns_bee_data_logger/pins.c +++ b/ports/espressif/boards/smartbeedesigns_bee_data_logger/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/smartbeedesigns_bee_motion_s3/board.c b/ports/espressif/boards/smartbeedesigns_bee_motion_s3/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/smartbeedesigns_bee_motion_s3/board.c +++ b/ports/espressif/boards/smartbeedesigns_bee_motion_s3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/smartbeedesigns_bee_motion_s3/mpconfigboard.h b/ports/espressif/boards/smartbeedesigns_bee_motion_s3/mpconfigboard.h index 11e2449e9bd3..92b8aa09d4d4 100644 --- a/ports/espressif/boards/smartbeedesigns_bee_motion_s3/mpconfigboard.h +++ b/ports/espressif/boards/smartbeedesigns_bee_motion_s3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/smartbeedesigns_bee_motion_s3/pins.c b/ports/espressif/boards/smartbeedesigns_bee_motion_s3/pins.c index 769698647218..c4371a480a44 100644 --- a/ports/espressif/boards/smartbeedesigns_bee_motion_s3/pins.c +++ b/ports/espressif/boards/smartbeedesigns_bee_motion_s3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/smartbeedesigns_bee_s3/board.c b/ports/espressif/boards/smartbeedesigns_bee_s3/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/smartbeedesigns_bee_s3/board.c +++ b/ports/espressif/boards/smartbeedesigns_bee_s3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/smartbeedesigns_bee_s3/mpconfigboard.h b/ports/espressif/boards/smartbeedesigns_bee_s3/mpconfigboard.h index 1a17770fb75a..c1de8d155abc 100644 --- a/ports/espressif/boards/smartbeedesigns_bee_s3/mpconfigboard.h +++ b/ports/espressif/boards/smartbeedesigns_bee_s3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/smartbeedesigns_bee_s3/pins.c b/ports/espressif/boards/smartbeedesigns_bee_s3/pins.c index 189899fa4980..de714028c29c 100644 --- a/ports/espressif/boards/smartbeedesigns_bee_s3/pins.c +++ b/ports/espressif/boards/smartbeedesigns_bee_s3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/spotpear_esp32c3_lcd_1_44/board.c b/ports/espressif/boards/spotpear_esp32c3_lcd_1_44/board.c index bb8793e01513..89bcbf6b8dd7 100644 --- a/ports/espressif/boards/spotpear_esp32c3_lcd_1_44/board.c +++ b/ports/espressif/boards/spotpear_esp32c3_lcd_1_44/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 CDarius - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 CDarius +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/espressif/boards/spotpear_esp32c3_lcd_1_44/mpconfigboard.h b/ports/espressif/boards/spotpear_esp32c3_lcd_1_44/mpconfigboard.h index 827a1cfddde2..652eb7aaa2af 100644 --- a/ports/espressif/boards/spotpear_esp32c3_lcd_1_44/mpconfigboard.h +++ b/ports/espressif/boards/spotpear_esp32c3_lcd_1_44/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Neradoc - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Neradoc +// +// SPDX-License-Identifier: MIT // Board setup #define MICROPY_HW_BOARD_NAME "Spotpear ESP32C3 LCD 1.44" diff --git a/ports/espressif/boards/spotpear_esp32c3_lcd_1_44/pins.c b/ports/espressif/boards/spotpear_esp32c3_lcd_1_44/pins.c index f8758224cb59..ec65b6fe70e9 100644 --- a/ports/espressif/boards/spotpear_esp32c3_lcd_1_44/pins.c +++ b/ports/espressif/boards/spotpear_esp32c3_lcd_1_44/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 CDarius +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/sqfmi_watchy/board.c b/ports/espressif/boards/sqfmi_watchy/board.c index a2cc95bb3fc1..da2bca913255 100644 --- a/ports/espressif/boards/sqfmi_watchy/board.c +++ b/ports/espressif/boards/sqfmi_watchy/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/sqfmi_watchy/mpconfigboard.h b/ports/espressif/boards/sqfmi_watchy/mpconfigboard.h index 92a715ee2fe3..21a93b0b8f18 100644 --- a/ports/espressif/boards/sqfmi_watchy/mpconfigboard.h +++ b/ports/espressif/boards/sqfmi_watchy/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/sqfmi_watchy/pins.c b/ports/espressif/boards/sqfmi_watchy/pins.c index 6af741952ab0..86583d86cf48 100644 --- a/ports/espressif/boards/sqfmi_watchy/pins.c +++ b/ports/espressif/boards/sqfmi_watchy/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/sunton_esp32_2424S012/board.c b/ports/espressif/boards/sunton_esp32_2424S012/board.c index 11dc4ad37b11..c313ded86376 100644 --- a/ports/espressif/boards/sunton_esp32_2424S012/board.c +++ b/ports/espressif/boards/sunton_esp32_2424S012/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/sunton_esp32_2424S012/mpconfigboard.h b/ports/espressif/boards/sunton_esp32_2424S012/mpconfigboard.h index 6c28072dd8eb..1f0aac74c310 100644 --- a/ports/espressif/boards/sunton_esp32_2424S012/mpconfigboard.h +++ b/ports/espressif/boards/sunton_esp32_2424S012/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Board setup diff --git a/ports/espressif/boards/sunton_esp32_2424S012/pins.c b/ports/espressif/boards/sunton_esp32_2424S012/pins.c index d46896c4bd5b..049236512730 100644 --- a/ports/espressif/boards/sunton_esp32_2424S012/pins.c +++ b/ports/espressif/boards/sunton_esp32_2424S012/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/sunton_esp32_2432S028/board.c b/ports/espressif/boards/sunton_esp32_2432S028/board.c index 5d7d97330b62..17fc0d7d0143 100644 --- a/ports/espressif/boards/sunton_esp32_2432S028/board.c +++ b/ports/espressif/boards/sunton_esp32_2432S028/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/sunton_esp32_2432S028/mpconfigboard.h b/ports/espressif/boards/sunton_esp32_2432S028/mpconfigboard.h index eba915e8c44a..fc179c92fbc0 100644 --- a/ports/espressif/boards/sunton_esp32_2432S028/mpconfigboard.h +++ b/ports/espressif/boards/sunton_esp32_2432S028/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/sunton_esp32_2432S028/pins.c b/ports/espressif/boards/sunton_esp32_2432S028/pins.c index 4004cf0bb1ce..25c9b50f0066 100644 --- a/ports/espressif/boards/sunton_esp32_2432S028/pins.c +++ b/ports/espressif/boards/sunton_esp32_2432S028/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/sunton_esp32_8048S070/board.c b/ports/espressif/boards/sunton_esp32_8048S070/board.c index 916c1987896a..ecc9b7c1236a 100644 --- a/ports/espressif/boards/sunton_esp32_8048S070/board.c +++ b/ports/espressif/boards/sunton_esp32_8048S070/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/sunton_esp32_8048S070/mpconfigboard.h b/ports/espressif/boards/sunton_esp32_8048S070/mpconfigboard.h index 4618491b6808..9ebf463c5474 100644 --- a/ports/espressif/boards/sunton_esp32_8048S070/mpconfigboard.h +++ b/ports/espressif/boards/sunton_esp32_8048S070/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/sunton_esp32_8048S070/pins.c b/ports/espressif/boards/sunton_esp32_8048S070/pins.c index 52110c7690cd..1597b90e3bcd 100644 --- a/ports/espressif/boards/sunton_esp32_8048S070/pins.c +++ b/ports/espressif/boards/sunton_esp32_8048S070/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/targett_module_clip_wroom/board.c b/ports/espressif/boards/targett_module_clip_wroom/board.c index 3168e9a0aa95..a08886fda1d5 100644 --- a/ports/espressif/boards/targett_module_clip_wroom/board.c +++ b/ports/espressif/boards/targett_module_clip_wroom/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/targett_module_clip_wroom/mpconfigboard.h b/ports/espressif/boards/targett_module_clip_wroom/mpconfigboard.h index 37644ddaeda9..591d2b068d60 100644 --- a/ports/espressif/boards/targett_module_clip_wroom/mpconfigboard.h +++ b/ports/espressif/boards/targett_module_clip_wroom/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/targett_module_clip_wroom/pins.c b/ports/espressif/boards/targett_module_clip_wroom/pins.c index ee43af23df4e..e0d12c035ad7 100644 --- a/ports/espressif/boards/targett_module_clip_wroom/pins.c +++ b/ports/espressif/boards/targett_module_clip_wroom/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/targett_module_clip_wrover/board.c b/ports/espressif/boards/targett_module_clip_wrover/board.c index 3168e9a0aa95..a08886fda1d5 100644 --- a/ports/espressif/boards/targett_module_clip_wrover/board.c +++ b/ports/espressif/boards/targett_module_clip_wrover/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/targett_module_clip_wrover/mpconfigboard.h b/ports/espressif/boards/targett_module_clip_wrover/mpconfigboard.h index 1cbc5a23e06b..8e664607b0c3 100644 --- a/ports/espressif/boards/targett_module_clip_wrover/mpconfigboard.h +++ b/ports/espressif/boards/targett_module_clip_wrover/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/targett_module_clip_wrover/pins.c b/ports/espressif/boards/targett_module_clip_wrover/pins.c index ee43af23df4e..e0d12c035ad7 100644 --- a/ports/espressif/boards/targett_module_clip_wrover/pins.c +++ b/ports/espressif/boards/targett_module_clip_wrover/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/unexpectedmaker_bling/board.c b/ports/espressif/boards/unexpectedmaker_bling/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/unexpectedmaker_bling/board.c +++ b/ports/espressif/boards/unexpectedmaker_bling/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/unexpectedmaker_bling/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_bling/mpconfigboard.h index 1e39725de26b..4c3e6ba73197 100644 --- a/ports/espressif/boards/unexpectedmaker_bling/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_bling/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/unexpectedmaker_bling/pins.c b/ports/espressif/boards/unexpectedmaker_bling/pins.c index 93f47b16f000..7de9b5fb5778 100644 --- a/ports/espressif/boards/unexpectedmaker_bling/pins.c +++ b/ports/espressif/boards/unexpectedmaker_bling/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/unexpectedmaker_blizzard_s3/board.c b/ports/espressif/boards/unexpectedmaker_blizzard_s3/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/unexpectedmaker_blizzard_s3/board.c +++ b/ports/espressif/boards/unexpectedmaker_blizzard_s3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/unexpectedmaker_blizzard_s3/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_blizzard_s3/mpconfigboard.h index a902308eaac8..2b1a04f86521 100644 --- a/ports/espressif/boards/unexpectedmaker_blizzard_s3/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_blizzard_s3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/unexpectedmaker_blizzard_s3/pins.c b/ports/espressif/boards/unexpectedmaker_blizzard_s3/pins.c index 5e7c9165f03e..d451c77d2bb9 100644 --- a/ports/espressif/boards/unexpectedmaker_blizzard_s3/pins.c +++ b/ports/espressif/boards/unexpectedmaker_blizzard_s3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/unexpectedmaker_feathers2/board.c b/ports/espressif/boards/unexpectedmaker_feathers2/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/unexpectedmaker_feathers2/board.c +++ b/ports/espressif/boards/unexpectedmaker_feathers2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/unexpectedmaker_feathers2/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_feathers2/mpconfigboard.h index ebea0f447bd2..c5101e948da5 100644 --- a/ports/espressif/boards/unexpectedmaker_feathers2/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_feathers2/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/unexpectedmaker_feathers2/pins.c b/ports/espressif/boards/unexpectedmaker_feathers2/pins.c index f731b08688cd..66932c527e27 100644 --- a/ports/espressif/boards/unexpectedmaker_feathers2/pins.c +++ b/ports/espressif/boards/unexpectedmaker_feathers2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/unexpectedmaker_feathers2_neo/board.c b/ports/espressif/boards/unexpectedmaker_feathers2_neo/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/unexpectedmaker_feathers2_neo/board.c +++ b/ports/espressif/boards/unexpectedmaker_feathers2_neo/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/unexpectedmaker_feathers2_neo/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_feathers2_neo/mpconfigboard.h index aeaf23d24869..8b8c26c3f71f 100644 --- a/ports/espressif/boards/unexpectedmaker_feathers2_neo/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_feathers2_neo/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/unexpectedmaker_feathers2_neo/pins.c b/ports/espressif/boards/unexpectedmaker_feathers2_neo/pins.c index 43df5d506ac1..5d004a163eef 100644 --- a/ports/espressif/boards/unexpectedmaker_feathers2_neo/pins.c +++ b/ports/espressif/boards/unexpectedmaker_feathers2_neo/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/unexpectedmaker_feathers2_prerelease/board.c b/ports/espressif/boards/unexpectedmaker_feathers2_prerelease/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/unexpectedmaker_feathers2_prerelease/board.c +++ b/ports/espressif/boards/unexpectedmaker_feathers2_prerelease/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h index 1b11b37d66dc..c1793d67bc17 100644 --- a/ports/espressif/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/unexpectedmaker_feathers2_prerelease/pins.c b/ports/espressif/boards/unexpectedmaker_feathers2_prerelease/pins.c index 34485b3ea834..bafa643cde69 100644 --- a/ports/espressif/boards/unexpectedmaker_feathers2_prerelease/pins.c +++ b/ports/espressif/boards/unexpectedmaker_feathers2_prerelease/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/unexpectedmaker_feathers3/board.c b/ports/espressif/boards/unexpectedmaker_feathers3/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/unexpectedmaker_feathers3/board.c +++ b/ports/espressif/boards/unexpectedmaker_feathers3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/unexpectedmaker_feathers3/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_feathers3/mpconfigboard.h index 1d51cb77d9bd..642af0b999d5 100644 --- a/ports/espressif/boards/unexpectedmaker_feathers3/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_feathers3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/unexpectedmaker_feathers3/pins.c b/ports/espressif/boards/unexpectedmaker_feathers3/pins.c index 5cdfc69ed29a..17078c078cc2 100644 --- a/ports/espressif/boards/unexpectedmaker_feathers3/pins.c +++ b/ports/espressif/boards/unexpectedmaker_feathers3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" CIRCUITPY_BOARD_BUS_SINGLETON(stemma_i2c, i2c, 1) diff --git a/ports/espressif/boards/unexpectedmaker_nanos3/board.c b/ports/espressif/boards/unexpectedmaker_nanos3/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/unexpectedmaker_nanos3/board.c +++ b/ports/espressif/boards/unexpectedmaker_nanos3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/unexpectedmaker_nanos3/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_nanos3/mpconfigboard.h index ed7a9ebf744f..64350cbef9c6 100644 --- a/ports/espressif/boards/unexpectedmaker_nanos3/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_nanos3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/unexpectedmaker_nanos3/pins.c b/ports/espressif/boards/unexpectedmaker_nanos3/pins.c index 58cf58568c73..9f7212806163 100644 --- a/ports/espressif/boards/unexpectedmaker_nanos3/pins.c +++ b/ports/espressif/boards/unexpectedmaker_nanos3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/unexpectedmaker_pros3/board.c b/ports/espressif/boards/unexpectedmaker_pros3/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/unexpectedmaker_pros3/board.c +++ b/ports/espressif/boards/unexpectedmaker_pros3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/unexpectedmaker_pros3/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_pros3/mpconfigboard.h index b1a2ea1c9650..2320624a8155 100644 --- a/ports/espressif/boards/unexpectedmaker_pros3/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_pros3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/unexpectedmaker_pros3/pins.c b/ports/espressif/boards/unexpectedmaker_pros3/pins.c index 8c7e050ded5a..861e73b28890 100644 --- a/ports/espressif/boards/unexpectedmaker_pros3/pins.c +++ b/ports/espressif/boards/unexpectedmaker_pros3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/unexpectedmaker_tinyc6/board.c b/ports/espressif/boards/unexpectedmaker_tinyc6/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/unexpectedmaker_tinyc6/board.c +++ b/ports/espressif/boards/unexpectedmaker_tinyc6/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/unexpectedmaker_tinyc6/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_tinyc6/mpconfigboard.h index e4b2d1192d93..e77a2234ab78 100644 --- a/ports/espressif/boards/unexpectedmaker_tinyc6/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_tinyc6/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/unexpectedmaker_tinyc6/pins.c b/ports/espressif/boards/unexpectedmaker_tinyc6/pins.c index b45d2bedb7b8..252cea123ac9 100644 --- a/ports/espressif/boards/unexpectedmaker_tinyc6/pins.c +++ b/ports/espressif/boards/unexpectedmaker_tinyc6/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/unexpectedmaker_tinypico/board.c b/ports/espressif/boards/unexpectedmaker_tinypico/board.c index 530c27f776de..5608c923e598 100644 --- a/ports/espressif/boards/unexpectedmaker_tinypico/board.c +++ b/ports/espressif/boards/unexpectedmaker_tinypico/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/unexpectedmaker_tinypico/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_tinypico/mpconfigboard.h index 2db308f623e8..593e05dc3e76 100644 --- a/ports/espressif/boards/unexpectedmaker_tinypico/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_tinypico/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #define MICROPY_HW_BOARD_NAME "TinyPICO" #define MICROPY_HW_MCU_NAME "ESP32-PICO-D4" diff --git a/ports/espressif/boards/unexpectedmaker_tinypico/pins.c b/ports/espressif/boards/unexpectedmaker_tinypico/pins.c index b4843960ae35..5292f2c28ebf 100644 --- a/ports/espressif/boards/unexpectedmaker_tinypico/pins.c +++ b/ports/espressif/boards/unexpectedmaker_tinypico/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/unexpectedmaker_tinypico_nano/board.c b/ports/espressif/boards/unexpectedmaker_tinypico_nano/board.c index 551058611ea1..75458471855b 100644 --- a/ports/espressif/boards/unexpectedmaker_tinypico_nano/board.c +++ b/ports/espressif/boards/unexpectedmaker_tinypico_nano/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/unexpectedmaker_tinypico_nano/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_tinypico_nano/mpconfigboard.h index 87c582b3bf58..e764601e734f 100644 --- a/ports/espressif/boards/unexpectedmaker_tinypico_nano/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_tinypico_nano/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #define MICROPY_HW_BOARD_NAME "TinyPICO Nano" #define MICROPY_HW_MCU_NAME "ESP32-PICO-D4" diff --git a/ports/espressif/boards/unexpectedmaker_tinypico_nano/pins.c b/ports/espressif/boards/unexpectedmaker_tinypico_nano/pins.c index 61f65a089b99..aeaa285ba478 100644 --- a/ports/espressif/boards/unexpectedmaker_tinypico_nano/pins.c +++ b/ports/espressif/boards/unexpectedmaker_tinypico_nano/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/unexpectedmaker_tinys2/board.c b/ports/espressif/boards/unexpectedmaker_tinys2/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/unexpectedmaker_tinys2/board.c +++ b/ports/espressif/boards/unexpectedmaker_tinys2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/unexpectedmaker_tinys2/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_tinys2/mpconfigboard.h index 0637109c15c5..215cadcd0692 100644 --- a/ports/espressif/boards/unexpectedmaker_tinys2/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_tinys2/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/unexpectedmaker_tinys2/pins.c b/ports/espressif/boards/unexpectedmaker_tinys2/pins.c index d428e7c3c580..12e7c371b3d9 100644 --- a/ports/espressif/boards/unexpectedmaker_tinys2/pins.c +++ b/ports/espressif/boards/unexpectedmaker_tinys2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/unexpectedmaker_tinys3/board.c b/ports/espressif/boards/unexpectedmaker_tinys3/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/unexpectedmaker_tinys3/board.c +++ b/ports/espressif/boards/unexpectedmaker_tinys3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/unexpectedmaker_tinys3/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_tinys3/mpconfigboard.h index e1ac3b27913c..d3f83c928a80 100644 --- a/ports/espressif/boards/unexpectedmaker_tinys3/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_tinys3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/unexpectedmaker_tinys3/pins.c b/ports/espressif/boards/unexpectedmaker_tinys3/pins.c index fcce90494beb..0cc756de6933 100644 --- a/ports/espressif/boards/unexpectedmaker_tinys3/pins.c +++ b/ports/espressif/boards/unexpectedmaker_tinys3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/unexpectedmaker_tinywatch_s3/board.c b/ports/espressif/boards/unexpectedmaker_tinywatch_s3/board.c index d52e0fad7ab2..9614a43cf978 100644 --- a/ports/espressif/boards/unexpectedmaker_tinywatch_s3/board.c +++ b/ports/espressif/boards/unexpectedmaker_tinywatch_s3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/espressif/boards/unexpectedmaker_tinywatch_s3/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_tinywatch_s3/mpconfigboard.h index b74942933822..a46c653e046a 100644 --- a/ports/espressif/boards/unexpectedmaker_tinywatch_s3/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_tinywatch_s3/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/unexpectedmaker_tinywatch_s3/pins.c b/ports/espressif/boards/unexpectedmaker_tinywatch_s3/pins.c index 9f8554f7b3ae..2345fbfb5c02 100644 --- a/ports/espressif/boards/unexpectedmaker_tinywatch_s3/pins.c +++ b/ports/espressif/boards/unexpectedmaker_tinywatch_s3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" CIRCUITPY_BOARD_BUS_SINGLETON(touch_i2c, i2c, 1) diff --git a/ports/espressif/boards/waveshare_esp32_s2_pico_lcd/board.c b/ports/espressif/boards/waveshare_esp32_s2_pico_lcd/board.c index 97d3bcabbefb..cb6fb3103382 100644 --- a/ports/espressif/boards/waveshare_esp32_s2_pico_lcd/board.c +++ b/ports/espressif/boards/waveshare_esp32_s2_pico_lcd/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/waveshare_esp32_s2_pico_lcd/mpconfigboard.h b/ports/espressif/boards/waveshare_esp32_s2_pico_lcd/mpconfigboard.h index f9cf2aa384b8..ab9e7ee37580 100644 --- a/ports/espressif/boards/waveshare_esp32_s2_pico_lcd/mpconfigboard.h +++ b/ports/espressif/boards/waveshare_esp32_s2_pico_lcd/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/waveshare_esp32_s2_pico_lcd/pins.c b/ports/espressif/boards/waveshare_esp32_s2_pico_lcd/pins.c index ac1e9832027b..e9b743c45830 100644 --- a/ports/espressif/boards/waveshare_esp32_s2_pico_lcd/pins.c +++ b/ports/espressif/boards/waveshare_esp32_s2_pico_lcd/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/waveshare_esp32_s3_geek/board.c b/ports/espressif/boards/waveshare_esp32_s3_geek/board.c index 2f26716d0167..06044e80f98d 100644 --- a/ports/espressif/boards/waveshare_esp32_s3_geek/board.c +++ b/ports/espressif/boards/waveshare_esp32_s3_geek/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/waveshare_esp32_s3_geek/mpconfigboard.h b/ports/espressif/boards/waveshare_esp32_s3_geek/mpconfigboard.h index 06d22bd39765..8ce2bc349058 100644 --- a/ports/espressif/boards/waveshare_esp32_s3_geek/mpconfigboard.h +++ b/ports/espressif/boards/waveshare_esp32_s3_geek/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/waveshare_esp32_s3_geek/pins.c b/ports/espressif/boards/waveshare_esp32_s3_geek/pins.c index cd12b16366e5..83ad1905853d 100644 --- a/ports/espressif/boards/waveshare_esp32_s3_geek/pins.c +++ b/ports/espressif/boards/waveshare_esp32_s3_geek/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/waveshare_esp32_s3_lcd_1_28/board.c b/ports/espressif/boards/waveshare_esp32_s3_lcd_1_28/board.c index 5aee2208eb40..36990c855669 100644 --- a/ports/espressif/boards/waveshare_esp32_s3_lcd_1_28/board.c +++ b/ports/espressif/boards/waveshare_esp32_s3_lcd_1_28/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/espressif/boards/waveshare_esp32_s3_lcd_1_28/mpconfigboard.h b/ports/espressif/boards/waveshare_esp32_s3_lcd_1_28/mpconfigboard.h index cc80f88366ac..e5eb9605ef90 100644 --- a/ports/espressif/boards/waveshare_esp32_s3_lcd_1_28/mpconfigboard.h +++ b/ports/espressif/boards/waveshare_esp32_s3_lcd_1_28/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/waveshare_esp32_s3_lcd_1_28/pins.c b/ports/espressif/boards/waveshare_esp32_s3_lcd_1_28/pins.c index 1bb48df92bdf..eb59636dedad 100644 --- a/ports/espressif/boards/waveshare_esp32_s3_lcd_1_28/pins.c +++ b/ports/espressif/boards/waveshare_esp32_s3_lcd_1_28/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/waveshare_esp32_s3_pico/board.c b/ports/espressif/boards/waveshare_esp32_s3_pico/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/waveshare_esp32_s3_pico/board.c +++ b/ports/espressif/boards/waveshare_esp32_s3_pico/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/waveshare_esp32_s3_pico/mpconfigboard.h b/ports/espressif/boards/waveshare_esp32_s3_pico/mpconfigboard.h index 070f091442b5..6893b0e1dea0 100644 --- a/ports/espressif/boards/waveshare_esp32_s3_pico/mpconfigboard.h +++ b/ports/espressif/boards/waveshare_esp32_s3_pico/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/waveshare_esp32_s3_pico/pins.c b/ports/espressif/boards/waveshare_esp32_s3_pico/pins.c index a1de1382aaee..bc563ae3c957 100644 --- a/ports/espressif/boards/waveshare_esp32_s3_pico/pins.c +++ b/ports/espressif/boards/waveshare_esp32_s3_pico/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/waveshare_esp32_s3_zero/board.c b/ports/espressif/boards/waveshare_esp32_s3_zero/board.c index 00ae21ace820..5859571eefa0 100644 --- a/ports/espressif/boards/waveshare_esp32_s3_zero/board.c +++ b/ports/espressif/boards/waveshare_esp32_s3_zero/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 David Sullivan - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 David Sullivan +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/waveshare_esp32_s3_zero/mpconfigboard.h b/ports/espressif/boards/waveshare_esp32_s3_zero/mpconfigboard.h index f6964f899bd2..4d36d6f06120 100644 --- a/ports/espressif/boards/waveshare_esp32_s3_zero/mpconfigboard.h +++ b/ports/espressif/boards/waveshare_esp32_s3_zero/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 David Sullivan - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 David Sullivan +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/waveshare_esp32_s3_zero/pins.c b/ports/espressif/boards/waveshare_esp32_s3_zero/pins.c index 6b010be2831d..00159363b868 100644 --- a/ports/espressif/boards/waveshare_esp32_s3_zero/pins.c +++ b/ports/espressif/boards/waveshare_esp32_s3_zero/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 David Sullivan +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/waveshare_esp32s2_pico/board.c b/ports/espressif/boards/waveshare_esp32s2_pico/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/waveshare_esp32s2_pico/board.c +++ b/ports/espressif/boards/waveshare_esp32s2_pico/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/waveshare_esp32s2_pico/mpconfigboard.h b/ports/espressif/boards/waveshare_esp32s2_pico/mpconfigboard.h index bb8b00f327aa..cdef90545fee 100644 --- a/ports/espressif/boards/waveshare_esp32s2_pico/mpconfigboard.h +++ b/ports/espressif/boards/waveshare_esp32s2_pico/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/waveshare_esp32s2_pico/pins.c b/ports/espressif/boards/waveshare_esp32s2_pico/pins.c index 04054344ae3a..5542ff468ba9 100644 --- a/ports/espressif/boards/waveshare_esp32s2_pico/pins.c +++ b/ports/espressif/boards/waveshare_esp32s2_pico/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/weact_esp32c6_n4/board.c b/ports/espressif/boards/weact_esp32c6_n4/board.c index 0c3b2685d3fd..1055de509cfa 100644 --- a/ports/espressif/boards/weact_esp32c6_n4/board.c +++ b/ports/espressif/boards/weact_esp32c6_n4/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 bill88t - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 bill88t +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/weact_esp32c6_n4/mpconfigboard.h b/ports/espressif/boards/weact_esp32c6_n4/mpconfigboard.h index 510c6347a542..60c38a4106a7 100644 --- a/ports/espressif/boards/weact_esp32c6_n4/mpconfigboard.h +++ b/ports/espressif/boards/weact_esp32c6_n4/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 bill88t - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 bill88t +// +// SPDX-License-Identifier: MIT // Board setup #define MICROPY_HW_BOARD_NAME "WeAct ESP32-C6 (4MB)" diff --git a/ports/espressif/boards/weact_esp32c6_n4/pins.c b/ports/espressif/boards/weact_esp32c6_n4/pins.c index 18e6d7c86318..7c996e457111 100644 --- a/ports/espressif/boards/weact_esp32c6_n4/pins.c +++ b/ports/espressif/boards/weact_esp32c6_n4/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 bill88t - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 bill88t +// +// SPDX-License-Identifier: MIT #include "shared-bindings/board/__init__.h" diff --git a/ports/espressif/boards/weact_esp32c6_n8/board.c b/ports/espressif/boards/weact_esp32c6_n8/board.c index 0c3b2685d3fd..1055de509cfa 100644 --- a/ports/espressif/boards/weact_esp32c6_n8/board.c +++ b/ports/espressif/boards/weact_esp32c6_n8/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 bill88t - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 bill88t +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/weact_esp32c6_n8/mpconfigboard.h b/ports/espressif/boards/weact_esp32c6_n8/mpconfigboard.h index ddf3aa510076..0ebdc2b8b553 100644 --- a/ports/espressif/boards/weact_esp32c6_n8/mpconfigboard.h +++ b/ports/espressif/boards/weact_esp32c6_n8/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 bill88t - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 bill88t +// +// SPDX-License-Identifier: MIT // Board setup #define MICROPY_HW_BOARD_NAME "WeAct ESP32-C6 (8MB)" diff --git a/ports/espressif/boards/weact_esp32c6_n8/pins.c b/ports/espressif/boards/weact_esp32c6_n8/pins.c index e096c3125108..51161d9aba88 100644 --- a/ports/espressif/boards/weact_esp32c6_n8/pins.c +++ b/ports/espressif/boards/weact_esp32c6_n8/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 bill88t - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 bill88t +// +// SPDX-License-Identifier: MIT #include "shared-bindings/board/__init__.h" diff --git a/ports/espressif/boards/wemos_lolin32_lite/board.c b/ports/espressif/boards/wemos_lolin32_lite/board.c index d6e20133fc42..3dc0ea2def1d 100644 --- a/ports/espressif/boards/wemos_lolin32_lite/board.c +++ b/ports/espressif/boards/wemos_lolin32_lite/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Bill Sideris, independently providing these changes. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Bill Sideris, independently providing these changes. +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/wemos_lolin32_lite/mpconfigboard.h b/ports/espressif/boards/wemos_lolin32_lite/mpconfigboard.h index 9da22e5d3164..13b73696e9b1 100644 --- a/ports/espressif/boards/wemos_lolin32_lite/mpconfigboard.h +++ b/ports/espressif/boards/wemos_lolin32_lite/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Bill Sideris, independently providing these changes. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Bill Sideris, independently providing these changes. +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/wemos_lolin32_lite/pins.c b/ports/espressif/boards/wemos_lolin32_lite/pins.c index 9a28cda4ffae..d3ebafffec65 100644 --- a/ports/espressif/boards/wemos_lolin32_lite/pins.c +++ b/ports/espressif/boards/wemos_lolin32_lite/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Bill Sideris, independently providing these changes. +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/espressif/boards/yd_esp32_s3_n16r8/board.c b/ports/espressif/boards/yd_esp32_s3_n16r8/board.c index 70ff11b067d5..560b824be0f2 100644 --- a/ports/espressif/boards/yd_esp32_s3_n16r8/board.c +++ b/ports/espressif/boards/yd_esp32_s3_n16r8/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Bill Sideris, independently providing these changes. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Bill Sideris, independently providing these changes. +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/yd_esp32_s3_n16r8/mpconfigboard.h b/ports/espressif/boards/yd_esp32_s3_n16r8/mpconfigboard.h index 4a0ea02809dd..cacd7149c20f 100644 --- a/ports/espressif/boards/yd_esp32_s3_n16r8/mpconfigboard.h +++ b/ports/espressif/boards/yd_esp32_s3_n16r8/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Bill Sideris, independently providing these changes. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Bill Sideris, independently providing these changes. +// +// SPDX-License-Identifier: MIT #define MICROPY_HW_BOARD_NAME "VCC-GND YD-ESP32-S3 (N16R8)" #define MICROPY_HW_MCU_NAME "ESP32S3" diff --git a/ports/espressif/boards/yd_esp32_s3_n16r8/pins.c b/ports/espressif/boards/yd_esp32_s3_n16r8/pins.c index 46a579fc2058..71df308ecd89 100644 --- a/ports/espressif/boards/yd_esp32_s3_n16r8/pins.c +++ b/ports/espressif/boards/yd_esp32_s3_n16r8/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Bill Sideris, independently providing these changes. +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/boards/yd_esp32_s3_n8r8/board.c b/ports/espressif/boards/yd_esp32_s3_n8r8/board.c index 70ff11b067d5..560b824be0f2 100644 --- a/ports/espressif/boards/yd_esp32_s3_n8r8/board.c +++ b/ports/espressif/boards/yd_esp32_s3_n8r8/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Bill Sideris, independently providing these changes. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Bill Sideris, independently providing these changes. +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/yd_esp32_s3_n8r8/mpconfigboard.h b/ports/espressif/boards/yd_esp32_s3_n8r8/mpconfigboard.h index 349931740dd7..d3578cf1e948 100644 --- a/ports/espressif/boards/yd_esp32_s3_n8r8/mpconfigboard.h +++ b/ports/espressif/boards/yd_esp32_s3_n8r8/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Bill Sideris, independently providing these changes. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Bill Sideris, independently providing these changes. +// +// SPDX-License-Identifier: MIT #define MICROPY_HW_BOARD_NAME "VCC-GND YD-ESP32-S3 (N8R8)" #define MICROPY_HW_MCU_NAME "ESP32S3" diff --git a/ports/espressif/boards/yd_esp32_s3_n8r8/pins.c b/ports/espressif/boards/yd_esp32_s3_n8r8/pins.c index 46a579fc2058..71df308ecd89 100644 --- a/ports/espressif/boards/yd_esp32_s3_n8r8/pins.c +++ b/ports/espressif/boards/yd_esp32_s3_n8r8/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Bill Sideris, independently providing these changes. +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/espressif/common-hal/_bleio/Adapter.c b/ports/espressif/common-hal/_bleio/Adapter.c index 36bc618be7d1..cd4452756dfa 100644 --- a/ports/espressif/common-hal/_bleio/Adapter.c +++ b/ports/espressif/common-hal/_bleio/Adapter.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/espressif/common-hal/_bleio/Adapter.h b/ports/espressif/common-hal/_bleio/Adapter.h index 3534c79809c6..1f4ac61d1f47 100644 --- a/ports/espressif/common-hal/_bleio/Adapter.h +++ b/ports/espressif/common-hal/_bleio/Adapter.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_ADAPTER_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_ADAPTER_H diff --git a/ports/espressif/common-hal/_bleio/Attribute.c b/ports/espressif/common-hal/_bleio/Attribute.c index 179a3b58aac4..d4971c3e6674 100644 --- a/ports/espressif/common-hal/_bleio/Attribute.c +++ b/ports/espressif/common-hal/_bleio/Attribute.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/_bleio/Attribute.h" diff --git a/ports/espressif/common-hal/_bleio/Attribute.h b/ports/espressif/common-hal/_bleio/Attribute.h index 4612b6c6ddf0..e975fbe0614e 100644 --- a/ports/espressif/common-hal/_bleio/Attribute.h +++ b/ports/espressif/common-hal/_bleio/Attribute.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_ATTRIBUTE_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_ATTRIBUTE_H diff --git a/ports/espressif/common-hal/_bleio/Characteristic.c b/ports/espressif/common-hal/_bleio/Characteristic.c index 0a787c017dcc..28f0250577eb 100644 --- a/ports/espressif/common-hal/_bleio/Characteristic.c +++ b/ports/espressif/common-hal/_bleio/Characteristic.c @@ -1,29 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/espressif/common-hal/_bleio/Characteristic.h b/ports/espressif/common-hal/_bleio/Characteristic.h index ed812a9805fb..f46c1199fb70 100644 --- a/ports/espressif/common-hal/_bleio/Characteristic.h +++ b/ports/espressif/common-hal/_bleio/Characteristic.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_CHARACTERISTIC_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_CHARACTERISTIC_H diff --git a/ports/espressif/common-hal/_bleio/CharacteristicBuffer.c b/ports/espressif/common-hal/_bleio/CharacteristicBuffer.c index 6838f1a8ff58..25a591a3a981 100644 --- a/ports/espressif/common-hal/_bleio/CharacteristicBuffer.c +++ b/ports/espressif/common-hal/_bleio/CharacteristicBuffer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/espressif/common-hal/_bleio/CharacteristicBuffer.h b/ports/espressif/common-hal/_bleio/CharacteristicBuffer.h index 30c3c426e61a..6c792578fbf1 100644 --- a/ports/espressif/common-hal/_bleio/CharacteristicBuffer.h +++ b/ports/espressif/common-hal/_bleio/CharacteristicBuffer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_CHARACTERISTICBUFFER_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_CHARACTERISTICBUFFER_H diff --git a/ports/espressif/common-hal/_bleio/Connection.c b/ports/espressif/common-hal/_bleio/Connection.c index 2d10300bacb5..3704ce88b378 100644 --- a/ports/espressif/common-hal/_bleio/Connection.c +++ b/ports/espressif/common-hal/_bleio/Connection.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "shared-bindings/_bleio/Connection.h" diff --git a/ports/espressif/common-hal/_bleio/Connection.h b/ports/espressif/common-hal/_bleio/Connection.h index 73bfeff19ca2..203a6cafb174 100644 --- a/ports/espressif/common-hal/_bleio/Connection.h +++ b/ports/espressif/common-hal/_bleio/Connection.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_CONNECTION_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_CONNECTION_H diff --git a/ports/espressif/common-hal/_bleio/Descriptor.c b/ports/espressif/common-hal/_bleio/Descriptor.c index e72ec7d9e2a1..deb9c2abd443 100644 --- a/ports/espressif/common-hal/_bleio/Descriptor.c +++ b/ports/espressif/common-hal/_bleio/Descriptor.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" diff --git a/ports/espressif/common-hal/_bleio/Descriptor.h b/ports/espressif/common-hal/_bleio/Descriptor.h index e52251ce8248..29f8bd0f007f 100644 --- a/ports/espressif/common-hal/_bleio/Descriptor.h +++ b/ports/espressif/common-hal/_bleio/Descriptor.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_DESCRIPTOR_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_DESCRIPTOR_H diff --git a/ports/espressif/common-hal/_bleio/PacketBuffer.c b/ports/espressif/common-hal/_bleio/PacketBuffer.c index f6ef4128552b..a859902d0497 100644 --- a/ports/espressif/common-hal/_bleio/PacketBuffer.c +++ b/ports/espressif/common-hal/_bleio/PacketBuffer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019-2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019-2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/espressif/common-hal/_bleio/PacketBuffer.h b/ports/espressif/common-hal/_bleio/PacketBuffer.h index 6ecc1a69b22c..4199624be1a4 100644 --- a/ports/espressif/common-hal/_bleio/PacketBuffer.h +++ b/ports/espressif/common-hal/_bleio/PacketBuffer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019-2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019-2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_PACKETBUFFER_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_PACKETBUFFER_H diff --git a/ports/espressif/common-hal/_bleio/Service.c b/ports/espressif/common-hal/_bleio/Service.c index 7aff2905e3fe..275962087127 100644 --- a/ports/espressif/common-hal/_bleio/Service.c +++ b/ports/espressif/common-hal/_bleio/Service.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" #include "common-hal/_bleio/__init__.h" diff --git a/ports/espressif/common-hal/_bleio/Service.h b/ports/espressif/common-hal/_bleio/Service.h index 6c1688df307e..da0ca0fef51c 100644 --- a/ports/espressif/common-hal/_bleio/Service.h +++ b/ports/espressif/common-hal/_bleio/Service.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_SERVICE_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_SERVICE_H diff --git a/ports/espressif/common-hal/_bleio/UUID.c b/ports/espressif/common-hal/_bleio/UUID.c index 8f0866412c45..a31c60ce3656 100644 --- a/ports/espressif/common-hal/_bleio/UUID.c +++ b/ports/espressif/common-hal/_bleio/UUID.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/espressif/common-hal/_bleio/UUID.h b/ports/espressif/common-hal/_bleio/UUID.h index 166088ed96b1..be7ed435ca5c 100644 --- a/ports/espressif/common-hal/_bleio/UUID.h +++ b/ports/espressif/common-hal/_bleio/UUID.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_UUID_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_UUID_H diff --git a/ports/espressif/common-hal/_bleio/__init__.c b/ports/espressif/common-hal/_bleio/__init__.c index 338f576f6953..361120c84867 100644 --- a/ports/espressif/common-hal/_bleio/__init__.c +++ b/ports/espressif/common-hal/_bleio/__init__.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/espressif/common-hal/_bleio/__init__.h b/ports/espressif/common-hal/_bleio/__init__.h index 41e9792603cc..a726664167f3 100644 --- a/ports/espressif/common-hal/_bleio/__init__.h +++ b/ports/espressif/common-hal/_bleio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_INIT_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_INIT_H diff --git a/ports/espressif/common-hal/_bleio/ble_events.c b/ports/espressif/common-hal/_bleio/ble_events.c index cafeeb4cfae4..cc93cfc53947 100644 --- a/ports/espressif/common-hal/_bleio/ble_events.c +++ b/ports/espressif/common-hal/_bleio/ble_events.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include "common-hal/_bleio/ble_events.h" diff --git a/ports/espressif/common-hal/_bleio/ble_events.h b/ports/espressif/common-hal/_bleio/ble_events.h index cc6c9e92f789..1ed4f3215d56 100644 --- a/ports/espressif/common-hal/_bleio/ble_events.h +++ b/ports/espressif/common-hal/_bleio/ble_events.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL__BLEIO_BLE_EVENTS_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL__BLEIO_BLE_EVENTS_H diff --git a/ports/espressif/common-hal/_bleio/bonding.c b/ports/espressif/common-hal/_bleio/bonding.c index e7dac3cb33a4..29ada04cceac 100644 --- a/ports/espressif/common-hal/_bleio/bonding.c +++ b/ports/espressif/common-hal/_bleio/bonding.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/espressif/common-hal/_bleio/bonding.h b/ports/espressif/common-hal/_bleio/bonding.h index 9f04f10d4fc3..586e9662d1be 100644 --- a/ports/espressif/common-hal/_bleio/bonding.h +++ b/ports/espressif/common-hal/_bleio/bonding.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_BONDING_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_BONDING_H diff --git a/ports/espressif/common-hal/alarm/SleepMemory.c b/ports/espressif/common-hal/alarm/SleepMemory.c index d375fdc778af..938772e53ca9 100644 --- a/ports/espressif/common-hal/alarm/SleepMemory.c +++ b/ports/espressif/common-hal/alarm/SleepMemory.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * Copyright (c) 2020 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/espressif/common-hal/alarm/SleepMemory.h b/ports/espressif/common-hal/alarm/SleepMemory.h index 68e9a7d1a68f..67a1b4659f69 100644 --- a/ports/espressif/common-hal/alarm/SleepMemory.h +++ b/ports/espressif/common-hal/alarm/SleepMemory.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/alarm/__init__.c b/ports/espressif/common-hal/alarm/__init__.c index 6590bcc8e427..b0037e961125 100644 --- a/ports/espressif/common-hal/alarm/__init__.c +++ b/ports/espressif/common-hal/alarm/__init__.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2020 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/gc.h" #include "py/obj.h" diff --git a/ports/espressif/common-hal/alarm/__init__.h b/ports/espressif/common-hal/alarm/__init__.h index 02e27e9806f4..82cdf70a4f15 100644 --- a/ports/espressif/common-hal/alarm/__init__.h +++ b/ports/espressif/common-hal/alarm/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Dan Halbert for Adafruit Industries. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries. +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/alarm/pin/PinAlarm.c b/ports/espressif/common-hal/alarm/pin/PinAlarm.c index 28ba2fa87a4b..bb38edf75d82 100644 --- a/ports/espressif/common-hal/alarm/pin/PinAlarm.c +++ b/ports/espressif/common-hal/alarm/pin/PinAlarm.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Dan Halbert for Adafruit Industries - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" #include "supervisor/port.h" diff --git a/ports/espressif/common-hal/alarm/pin/PinAlarm.h b/ports/espressif/common-hal/alarm/pin/PinAlarm.h index 309b27c2e904..bd43fb5a6e02 100644 --- a/ports/espressif/common-hal/alarm/pin/PinAlarm.h +++ b/ports/espressif/common-hal/alarm/pin/PinAlarm.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/alarm/time/TimeAlarm.c b/ports/espressif/common-hal/alarm/time/TimeAlarm.c index 13811ae3a920..8e25b42fd268 100644 --- a/ports/espressif/common-hal/alarm/time/TimeAlarm.c +++ b/ports/espressif/common-hal/alarm/time/TimeAlarm.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "esp_sleep.h" diff --git a/ports/espressif/common-hal/alarm/time/TimeAlarm.h b/ports/espressif/common-hal/alarm/time/TimeAlarm.h index c679c3cd9f4a..89fd9dd5d448 100644 --- a/ports/espressif/common-hal/alarm/time/TimeAlarm.h +++ b/ports/espressif/common-hal/alarm/time/TimeAlarm.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/alarm/touch/TouchAlarm.c b/ports/espressif/common-hal/alarm/touch/TouchAlarm.c index 1432f7cd4cff..545041a19cc7 100644 --- a/ports/espressif/common-hal/alarm/touch/TouchAlarm.c +++ b/ports/espressif/common-hal/alarm/touch/TouchAlarm.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #include "shared-bindings/alarm/__init__.h" #include "shared-bindings/alarm/touch/TouchAlarm.h" diff --git a/ports/espressif/common-hal/alarm/touch/TouchAlarm.h b/ports/espressif/common-hal/alarm/touch/TouchAlarm.h index 0f35063ee41b..0cef1ccf8dcd 100644 --- a/ports/espressif/common-hal/alarm/touch/TouchAlarm.h +++ b/ports/espressif/common-hal/alarm/touch/TouchAlarm.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/analogbufio/BufferedIn.c b/ports/espressif/common-hal/analogbufio/BufferedIn.c index 5c3a0c097712..486b9f57fcc0 100644 --- a/ports/espressif/common-hal/analogbufio/BufferedIn.c +++ b/ports/espressif/common-hal/analogbufio/BufferedIn.c @@ -1,31 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2023 Milind Movasha - * - * SPDX-License-Identifier: BSD-3-Clause - * - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Milind Movasha +// +// SPDX-License-Identifier: MIT #include #include "bindings/espidf/__init__.h" diff --git a/ports/espressif/common-hal/analogbufio/BufferedIn.h b/ports/espressif/common-hal/analogbufio/BufferedIn.h index 8e0695c57d2a..4ad09d417cf8 100644 --- a/ports/espressif/common-hal/analogbufio/BufferedIn.h +++ b/ports/espressif/common-hal/analogbufio/BufferedIn.h @@ -1,30 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2023 Milind Movasha - * - * SPDX-License-Identifier: BSD-3-Clause - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Milind Movasha +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESP32_COMMON_HAL_ANALOGBUFIO_BUFFEREDIN_H #define MICROPY_INCLUDED_ESP32_COMMON_HAL_ANALOGBUFIO_BUFFEREDIN_H diff --git a/ports/espressif/common-hal/analogbufio/__init__.c b/ports/espressif/common-hal/analogbufio/__init__.c index b6c74b985b21..c88e51e16400 100644 --- a/ports/espressif/common-hal/analogbufio/__init__.c +++ b/ports/espressif/common-hal/analogbufio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No analogbufio module functions. diff --git a/ports/espressif/common-hal/analogio/AnalogIn.c b/ports/espressif/common-hal/analogio/AnalogIn.c index 51ee5a9cb27b..3440347040c1 100644 --- a/ports/espressif/common-hal/analogio/AnalogIn.c +++ b/ports/espressif/common-hal/analogio/AnalogIn.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "common-hal/analogio/AnalogIn.h" diff --git a/ports/espressif/common-hal/analogio/AnalogIn.h b/ports/espressif/common-hal/analogio/AnalogIn.h index 5ac9c63f4dbe..241fc41f56f5 100644 --- a/ports/espressif/common-hal/analogio/AnalogIn.h +++ b/ports/espressif/common-hal/analogio/AnalogIn.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_ANALOGIO_ANALOGIN_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_ANALOGIO_ANALOGIN_H diff --git a/ports/espressif/common-hal/analogio/AnalogOut.c b/ports/espressif/common-hal/analogio/AnalogOut.c index d6154392bde5..0a8ad6eaa2f4 100644 --- a/ports/espressif/common-hal/analogio/AnalogOut.c +++ b/ports/espressif/common-hal/analogio/AnalogOut.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * Copyright (c) 2019, Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// SPDX-FileCopyrightText: Copyright (c) 2019, Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/espressif/common-hal/analogio/AnalogOut.h b/ports/espressif/common-hal/analogio/AnalogOut.h index 26cdd0867594..57dec09e1c0f 100644 --- a/ports/espressif/common-hal/analogio/AnalogOut.h +++ b/ports/espressif/common-hal/analogio/AnalogOut.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_ANALOGIO_ANALOGOUT_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_ANALOGIO_ANALOGOUT_H diff --git a/ports/espressif/common-hal/analogio/__init__.c b/ports/espressif/common-hal/analogio/__init__.c index eea58c77d631..d9027d63ec8b 100644 --- a/ports/espressif/common-hal/analogio/__init__.c +++ b/ports/espressif/common-hal/analogio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No analogio module functions. diff --git a/ports/espressif/common-hal/audiobusio/I2SOut.c b/ports/espressif/common-hal/audiobusio/I2SOut.c index 54a4d243fd9a..adfc081389a1 100644 --- a/ports/espressif/common-hal/audiobusio/I2SOut.c +++ b/ports/espressif/common-hal/audiobusio/I2SOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/espressif/common-hal/audiobusio/I2SOut.h b/ports/espressif/common-hal/audiobusio/I2SOut.h index c638ced227c1..b601fd549512 100644 --- a/ports/espressif/common-hal/audiobusio/I2SOut.h +++ b/ports/espressif/common-hal/audiobusio/I2SOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/audiobusio/PDMIn.c b/ports/espressif/common-hal/audiobusio/PDMIn.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/espressif/common-hal/audiobusio/PDMIn.c +++ b/ports/espressif/common-hal/audiobusio/PDMIn.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/espressif/common-hal/audiobusio/PDMIn.h b/ports/espressif/common-hal/audiobusio/PDMIn.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/espressif/common-hal/audiobusio/PDMIn.h +++ b/ports/espressif/common-hal/audiobusio/PDMIn.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/espressif/common-hal/audiobusio/__init__.c b/ports/espressif/common-hal/audiobusio/__init__.c index cc7768758735..0841ab1d2ead 100644 --- a/ports/espressif/common-hal/audiobusio/__init__.c +++ b/ports/espressif/common-hal/audiobusio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/espressif/common-hal/audiobusio/__init__.h b/ports/espressif/common-hal/audiobusio/__init__.h index 7e6277ed35e7..0088cb87d5f9 100644 --- a/ports/espressif/common-hal/audiobusio/__init__.h +++ b/ports/espressif/common-hal/audiobusio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/audiomp3/__init__.c b/ports/espressif/common-hal/audiomp3/__init__.c index 994da3d21ad0..2b9b351f37dc 100644 --- a/ports/espressif/common-hal/audiomp3/__init__.c +++ b/ports/espressif/common-hal/audiomp3/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/espressif/common-hal/board/__init__.c b/ports/espressif/common-hal/board/__init__.c index 7a409d503edc..3cb457d1ce24 100644 --- a/ports/espressif/common-hal/board/__init__.c +++ b/ports/espressif/common-hal/board/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No board module functions. diff --git a/ports/espressif/common-hal/busio/I2C.c b/ports/espressif/common-hal/busio/I2C.c index 56b4aecf6b76..d9ad880d22de 100644 --- a/ports/espressif/common-hal/busio/I2C.c +++ b/ports/espressif/common-hal/busio/I2C.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries LLC - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT #include "shared-bindings/busio/I2C.h" #include "py/mperrno.h" diff --git a/ports/espressif/common-hal/busio/I2C.h b/ports/espressif/common-hal/busio/I2C.h index e3e60c07be7e..5542a1bdffa2 100644 --- a/ports/espressif/common-hal/busio/I2C.h +++ b/ports/espressif/common-hal/busio/I2C.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BUSIO_I2C_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BUSIO_I2C_H diff --git a/ports/espressif/common-hal/busio/SPI.c b/ports/espressif/common-hal/busio/SPI.c index 190e8757ff88..19446bb3d054 100644 --- a/ports/espressif/common-hal/busio/SPI.c +++ b/ports/espressif/common-hal/busio/SPI.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/espressif/common-hal/busio/SPI.h b/ports/espressif/common-hal/busio/SPI.h index 9548d0c992cc..820f29333c75 100644 --- a/ports/espressif/common-hal/busio/SPI.h +++ b/ports/espressif/common-hal/busio/SPI.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/busio/UART.c b/ports/espressif/common-hal/busio/UART.c index 0ac4cf99361a..3967af44dbd1 100644 --- a/ports/espressif/common-hal/busio/UART.c +++ b/ports/espressif/common-hal/busio/UART.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries LLC - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT #include "shared-bindings/microcontroller/__init__.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/espressif/common-hal/busio/UART.h b/ports/espressif/common-hal/busio/UART.h index 4880346015d3..c2ecc1a61ea3 100644 --- a/ports/espressif/common-hal/busio/UART.h +++ b/ports/espressif/common-hal/busio/UART.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BUSIO_UART_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BUSIO_UART_H diff --git a/ports/espressif/common-hal/busio/__init__.c b/ports/espressif/common-hal/busio/__init__.c index 41761b6743ae..b726684324a3 100644 --- a/ports/espressif/common-hal/busio/__init__.c +++ b/ports/espressif/common-hal/busio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No busio module functions. diff --git a/ports/espressif/common-hal/canio/CAN.c b/ports/espressif/common-hal/canio/CAN.c index c1c7f418cf2a..72cac7801567 100644 --- a/ports/espressif/common-hal/canio/CAN.c +++ b/ports/espressif/common-hal/canio/CAN.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/espressif/common-hal/canio/CAN.h b/ports/espressif/common-hal/canio/CAN.h index 82f30bc6f12c..aa0bf662e906 100644 --- a/ports/espressif/common-hal/canio/CAN.h +++ b/ports/espressif/common-hal/canio/CAN.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/canio/Listener.c b/ports/espressif/common-hal/canio/Listener.c index 498cee45b06a..1b9c4711e64d 100644 --- a/ports/espressif/common-hal/canio/Listener.c +++ b/ports/espressif/common-hal/canio/Listener.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/espressif/common-hal/canio/Listener.h b/ports/espressif/common-hal/canio/Listener.h index cc8545e3751f..f723447aef14 100644 --- a/ports/espressif/common-hal/canio/Listener.h +++ b/ports/espressif/common-hal/canio/Listener.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/canio/__init__.c b/ports/espressif/common-hal/canio/__init__.c index 7932bfc2da82..13a70a52c499 100644 --- a/ports/espressif/common-hal/canio/__init__.c +++ b/ports/espressif/common-hal/canio/__init__.c @@ -1,25 +1,5 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT diff --git a/ports/espressif/common-hal/canio/__init__.h b/ports/espressif/common-hal/canio/__init__.h index 20b6638cd8ff..8942728bcc72 100644 --- a/ports/espressif/common-hal/canio/__init__.h +++ b/ports/espressif/common-hal/canio/__init__.h @@ -1,27 +1,7 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/countio/Counter.c b/ports/espressif/common-hal/countio/Counter.c index f325a0edc7c8..3297296e6a45 100644 --- a/ports/espressif/common-hal/countio/Counter.c +++ b/ports/espressif/common-hal/countio/Counter.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #include "common-hal/countio/Counter.h" #include "shared-bindings/countio/Counter.h" diff --git a/ports/espressif/common-hal/countio/Counter.h b/ports/espressif/common-hal/countio/Counter.h index 492330e11d1b..76fc5465febb 100644 --- a/ports/espressif/common-hal/countio/Counter.h +++ b/ports/espressif/common-hal/countio/Counter.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/countio/__init__.c b/ports/espressif/common-hal/countio/__init__.c index d47de33e53c3..86d03caa9b87 100644 --- a/ports/espressif/common-hal/countio/__init__.c +++ b/ports/espressif/common-hal/countio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No countio module functions diff --git a/ports/espressif/common-hal/digitalio/DigitalInOut.c b/ports/espressif/common-hal/digitalio/DigitalInOut.c index 6ff3aa41f6a1..8d700251a776 100644 --- a/ports/espressif/common-hal/digitalio/DigitalInOut.c +++ b/ports/espressif/common-hal/digitalio/DigitalInOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017-2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017-2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/digitalio/DigitalInOut.h" #include "py/runtime.h" diff --git a/ports/espressif/common-hal/digitalio/DigitalInOut.h b/ports/espressif/common-hal/digitalio/DigitalInOut.h index 793d2a09865a..ec4ec0ab4c6b 100644 --- a/ports/espressif/common-hal/digitalio/DigitalInOut.h +++ b/ports/espressif/common-hal/digitalio/DigitalInOut.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_DIGITALIO_DIGITALINOUT_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_DIGITALIO_DIGITALINOUT_H diff --git a/ports/espressif/common-hal/digitalio/__init__.c b/ports/espressif/common-hal/digitalio/__init__.c index 20fad459593a..fa222ed01f03 100644 --- a/ports/espressif/common-hal/digitalio/__init__.c +++ b/ports/espressif/common-hal/digitalio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No digitalio module functions. diff --git a/ports/espressif/common-hal/dotclockframebuffer/DotClockFramebuffer.c b/ports/espressif/common-hal/dotclockframebuffer/DotClockFramebuffer.c index bc6390111f09..592ef8061d4e 100644 --- a/ports/espressif/common-hal/dotclockframebuffer/DotClockFramebuffer.c +++ b/ports/espressif/common-hal/dotclockframebuffer/DotClockFramebuffer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/espressif/common-hal/dotclockframebuffer/DotClockFramebuffer.h b/ports/espressif/common-hal/dotclockframebuffer/DotClockFramebuffer.h index 29d6af14e8e6..bf806acde039 100644 --- a/ports/espressif/common-hal/dotclockframebuffer/DotClockFramebuffer.h +++ b/ports/espressif/common-hal/dotclockframebuffer/DotClockFramebuffer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/dotclockframebuffer/__init__.c b/ports/espressif/common-hal/dotclockframebuffer/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/espressif/common-hal/dotclockframebuffer/__init__.c +++ b/ports/espressif/common-hal/dotclockframebuffer/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/espressif/common-hal/dotclockframebuffer/__init__.h b/ports/espressif/common-hal/dotclockframebuffer/__init__.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/espressif/common-hal/dotclockframebuffer/__init__.h +++ b/ports/espressif/common-hal/dotclockframebuffer/__init__.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/espressif/common-hal/dualbank/__init__.c b/ports/espressif/common-hal/dualbank/__init__.c index 303dc7d7cf10..6252b1c99fd6 100644 --- a/ports/espressif/common-hal/dualbank/__init__.c +++ b/ports/espressif/common-hal/dualbank/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #include "common-hal/dualbank/__init__.h" #include "shared-bindings/dualbank/__init__.h" diff --git a/ports/espressif/common-hal/dualbank/__init__.h b/ports/espressif/common-hal/dualbank/__init__.h index 33f2be344a62..69bac4bd1bb1 100644 --- a/ports/espressif/common-hal/dualbank/__init__.h +++ b/ports/espressif/common-hal/dualbank/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_DUALBANK___INIT___H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_DUALBANK___INIT___H diff --git a/ports/espressif/common-hal/espcamera/Camera.c b/ports/espressif/common-hal/espcamera/Camera.c index 0381d3bd8fcd..bcf4732fcd8b 100644 --- a/ports/espressif/common-hal/espcamera/Camera.c +++ b/ports/espressif/common-hal/espcamera/Camera.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/mperrno.h" #include "py/runtime.h" diff --git a/ports/espressif/common-hal/espcamera/Camera.h b/ports/espressif/common-hal/espcamera/Camera.h index 007686a5231c..718fe9a69c48 100644 --- a/ports/espressif/common-hal/espcamera/Camera.h +++ b/ports/espressif/common-hal/espcamera/Camera.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/espidf/__init__.c b/ports/espressif/common-hal/espidf/__init__.c index d96c608c0969..8af0318fed01 100644 --- a/ports/espressif/common-hal/espidf/__init__.c +++ b/ports/espressif/common-hal/espidf/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "bindings/espidf/__init__.h" #include "py/runtime.h" diff --git a/ports/espressif/common-hal/espidf/__init__.h b/ports/espressif/common-hal/espidf/__init__.h index 337ad7ef99b9..8ee505ea0579 100644 --- a/ports/espressif/common-hal/espidf/__init__.h +++ b/ports/espressif/common-hal/espidf/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/espnow/ESPNow.c b/ports/espressif/common-hal/espnow/ESPNow.c index 814499b1c08c..4c75192b2972 100644 --- a/ports/espressif/common-hal/espnow/ESPNow.c +++ b/ports/espressif/common-hal/espnow/ESPNow.c @@ -1,31 +1,11 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017-2020 Nick Moore - * Copyright (c) 2018 shawwwn - * Copyright (c) 2020-2021 Glenn Moloney @glenn20 - * Copyright (c) 2023 MicroDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017-2020 Nick Moore +// SPDX-FileCopyrightText: Copyright (c) 2018 shawwwn +// SPDX-FileCopyrightText: Copyright (c) 2020-2021 Glenn Moloney @glenn20 +// SPDX-FileCopyrightText: Copyright (c) 2023 MicroDev +// +// SPDX-License-Identifier: MIT #include "py/mperrno.h" #include "py/runtime.h" diff --git a/ports/espressif/common-hal/espnow/ESPNow.h b/ports/espressif/common-hal/espnow/ESPNow.h index 624078860361..b68e1544fb8c 100644 --- a/ports/espressif/common-hal/espnow/ESPNow.h +++ b/ports/espressif/common-hal/espnow/ESPNow.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 MicroDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 MicroDev +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/espnow/__init__.c b/ports/espressif/common-hal/espnow/__init__.c index effc752f79f3..ebbf01acc28d 100644 --- a/ports/espressif/common-hal/espnow/__init__.c +++ b/ports/espressif/common-hal/espnow/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 MicroDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 MicroDev +// +// SPDX-License-Identifier: MIT #include "common-hal/espnow/__init__.h" diff --git a/ports/espressif/common-hal/espnow/__init__.h b/ports/espressif/common-hal/espnow/__init__.h index bb1950d98c7a..a703631fe6d8 100644 --- a/ports/espressif/common-hal/espnow/__init__.h +++ b/ports/espressif/common-hal/espnow/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 MicroDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 MicroDev +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/espulp/ULP.c b/ports/espressif/common-hal/espulp/ULP.c index ef050c6e030c..435506bec7fa 100644 --- a/ports/espressif/common-hal/espulp/ULP.c +++ b/ports/espressif/common-hal/espulp/ULP.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 microDev +// +// SPDX-License-Identifier: MIT #include "bindings/espulp/__init__.h" #include "bindings/espulp/ULP.h" diff --git a/ports/espressif/common-hal/espulp/ULP.h b/ports/espressif/common-hal/espulp/ULP.h index 360dd0c9fdf6..366a41cc9d5c 100644 --- a/ports/espressif/common-hal/espulp/ULP.h +++ b/ports/espressif/common-hal/espulp/ULP.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 microDev +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/espulp/ULPAlarm.c b/ports/espressif/common-hal/espulp/ULPAlarm.c index 1a1a5d33b50e..4bbd6dfcad28 100644 --- a/ports/espressif/common-hal/espulp/ULPAlarm.c +++ b/ports/espressif/common-hal/espulp/ULPAlarm.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 microDev +// +// SPDX-License-Identifier: MIT #include "bindings/espulp/ULPAlarm.h" diff --git a/ports/espressif/common-hal/espulp/ULPAlarm.h b/ports/espressif/common-hal/espulp/ULPAlarm.h index 99d21180fd12..23ba68400dce 100644 --- a/ports/espressif/common-hal/espulp/ULPAlarm.h +++ b/ports/espressif/common-hal/espulp/ULPAlarm.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 microDev +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/espulp/__init__.c b/ports/espressif/common-hal/espulp/__init__.c index 5d403129a63b..9b06e71813d0 100644 --- a/ports/espressif/common-hal/espulp/__init__.c +++ b/ports/espressif/common-hal/espulp/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries LLC - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT #include "bindings/espulp/__init__.h" diff --git a/ports/espressif/common-hal/frequencyio/FrequencyIn.c b/ports/espressif/common-hal/frequencyio/FrequencyIn.c index 2658cfb7eb9e..f65bfeee1daf 100644 --- a/ports/espressif/common-hal/frequencyio/FrequencyIn.c +++ b/ports/espressif/common-hal/frequencyio/FrequencyIn.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #include "shared-bindings/frequencyio/FrequencyIn.h" diff --git a/ports/espressif/common-hal/frequencyio/FrequencyIn.h b/ports/espressif/common-hal/frequencyio/FrequencyIn.h index c1433ec4ae1d..d50840296c55 100644 --- a/ports/espressif/common-hal/frequencyio/FrequencyIn.h +++ b/ports/espressif/common-hal/frequencyio/FrequencyIn.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/frequencyio/__init__.c b/ports/espressif/common-hal/frequencyio/__init__.c index 487814bd076b..2da497811858 100644 --- a/ports/espressif/common-hal/frequencyio/__init__.c +++ b/ports/espressif/common-hal/frequencyio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No ferquencyio module functions. diff --git a/ports/espressif/common-hal/i2ctarget/I2CTarget.c b/ports/espressif/common-hal/i2ctarget/I2CTarget.c index a4cce8df7b86..003e7731faa5 100644 --- a/ports/espressif/common-hal/i2ctarget/I2CTarget.c +++ b/ports/espressif/common-hal/i2ctarget/I2CTarget.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #include "shared-bindings/i2ctarget/I2CTarget.h" diff --git a/ports/espressif/common-hal/i2ctarget/I2CTarget.h b/ports/espressif/common-hal/i2ctarget/I2CTarget.h index 422bd720ebb9..84f507b505fe 100644 --- a/ports/espressif/common-hal/i2ctarget/I2CTarget.h +++ b/ports/espressif/common-hal/i2ctarget/I2CTarget.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BUSIO_I2C_TARGET_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BUSIO_I2C_TARGET_H diff --git a/ports/espressif/common-hal/i2ctarget/__init__.c b/ports/espressif/common-hal/i2ctarget/__init__.c index 4ec26465adf0..ed0f642bfd30 100644 --- a/ports/espressif/common-hal/i2ctarget/__init__.c +++ b/ports/espressif/common-hal/i2ctarget/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No i2ctarget module functions. diff --git a/ports/espressif/common-hal/max3421e/Max3421E.c b/ports/espressif/common-hal/max3421e/Max3421E.c index f96eed7d56f1..ba707749f4a9 100644 --- a/ports/espressif/common-hal/max3421e/Max3421E.c +++ b/ports/espressif/common-hal/max3421e/Max3421E.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-module/max3421e/Max3421E.h" diff --git a/ports/espressif/common-hal/max3421e/Max3421E.h b/ports/espressif/common-hal/max3421e/Max3421E.h index e52561a6ceff..709b73828497 100644 --- a/ports/espressif/common-hal/max3421e/Max3421E.h +++ b/ports/espressif/common-hal/max3421e/Max3421E.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/mdns/RemoteService.c b/ports/espressif/common-hal/mdns/RemoteService.c index 5a84c4a79b59..515a3f7bf029 100644 --- a/ports/espressif/common-hal/mdns/RemoteService.c +++ b/ports/espressif/common-hal/mdns/RemoteService.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/mdns/RemoteService.h" diff --git a/ports/espressif/common-hal/mdns/RemoteService.h b/ports/espressif/common-hal/mdns/RemoteService.h index b57793802443..6fb3000c7d17 100644 --- a/ports/espressif/common-hal/mdns/RemoteService.h +++ b/ports/espressif/common-hal/mdns/RemoteService.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/mdns/Server.c b/ports/espressif/common-hal/mdns/Server.c index 72d33edbc820..2525db8720cf 100644 --- a/ports/espressif/common-hal/mdns/Server.c +++ b/ports/espressif/common-hal/mdns/Server.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/mdns/Server.h" diff --git a/ports/espressif/common-hal/mdns/Server.h b/ports/espressif/common-hal/mdns/Server.h index cbdde0292928..42ffd878d13a 100644 --- a/ports/espressif/common-hal/mdns/Server.h +++ b/ports/espressif/common-hal/mdns/Server.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/mdns/__init__.c b/ports/espressif/common-hal/mdns/__init__.c index 57740777c8d1..8d878b9d52a6 100644 --- a/ports/espressif/common-hal/mdns/__init__.c +++ b/ports/espressif/common-hal/mdns/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No mdns module functions. diff --git a/ports/espressif/common-hal/memorymap/AddressRange.c b/ports/espressif/common-hal/memorymap/AddressRange.c index 121221df770c..a901215edbde 100644 --- a/ports/espressif/common-hal/memorymap/AddressRange.c +++ b/ports/espressif/common-hal/memorymap/AddressRange.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/espressif/common-hal/memorymap/AddressRange.h b/ports/espressif/common-hal/memorymap/AddressRange.h index e67cf32f5f28..06a50fa92695 100644 --- a/ports/espressif/common-hal/memorymap/AddressRange.h +++ b/ports/espressif/common-hal/memorymap/AddressRange.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_MEMORYMAP_ADDRESSRANGE_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_MEMORYMAP_ADDRESSRANGE_H diff --git a/ports/espressif/common-hal/memorymap/__init__.c b/ports/espressif/common-hal/memorymap/__init__.c index c15b17f451a6..3919535a70a4 100644 --- a/ports/espressif/common-hal/memorymap/__init__.c +++ b/ports/espressif/common-hal/memorymap/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No memorymap module functions. diff --git a/ports/espressif/common-hal/microcontroller/Pin.c b/ports/espressif/common-hal/microcontroller/Pin.c index fd6ec720601b..bdf7272d2dd1 100644 --- a/ports/espressif/common-hal/microcontroller/Pin.c +++ b/ports/espressif/common-hal/microcontroller/Pin.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/microcontroller/Pin.h" #include "shared-bindings/digitalio/DigitalInOut.h" diff --git a/ports/espressif/common-hal/microcontroller/Pin.h b/ports/espressif/common-hal/microcontroller/Pin.h index 8551a29a952d..ff935650bd07 100644 --- a/ports/espressif/common-hal/microcontroller/Pin.h +++ b/ports/espressif/common-hal/microcontroller/Pin.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_MICROCONTROLLER_PIN_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_MICROCONTROLLER_PIN_H diff --git a/ports/espressif/common-hal/microcontroller/Processor.c b/ports/espressif/common-hal/microcontroller/Processor.c index 7c25608f89d0..7b9ba9b7454e 100644 --- a/ports/espressif/common-hal/microcontroller/Processor.c +++ b/ports/espressif/common-hal/microcontroller/Processor.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Dan Halbert for Adafruit Industries - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/espressif/common-hal/microcontroller/Processor.h b/ports/espressif/common-hal/microcontroller/Processor.h index e36d26ceb3eb..8eff97cf5eb4 100644 --- a/ports/espressif/common-hal/microcontroller/Processor.h +++ b/ports/espressif/common-hal/microcontroller/Processor.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H diff --git a/ports/espressif/common-hal/microcontroller/__init__.c b/ports/espressif/common-hal/microcontroller/__init__.c index 470bebae5851..d8f36504f49b 100644 --- a/ports/espressif/common-hal/microcontroller/__init__.c +++ b/ports/espressif/common-hal/microcontroller/__init__.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/ports/espressif/common-hal/neopixel_write/__init__.c b/ports/espressif/common-hal/neopixel_write/__init__.c index 7a8609288da9..d0d46a317978 100644 --- a/ports/espressif/common-hal/neopixel_write/__init__.c +++ b/ports/espressif/common-hal/neopixel_write/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* Uses code from Espressif RGB LED Strip demo and drivers * Copyright 2015-2020 Espressif Systems (Shanghai) PTE LTD diff --git a/ports/espressif/common-hal/nvm/ByteArray.c b/ports/espressif/common-hal/nvm/ByteArray.c index 4c6c370d43be..adea91411b6f 100644 --- a/ports/espressif/common-hal/nvm/ByteArray.c +++ b/ports/espressif/common-hal/nvm/ByteArray.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/espressif/common-hal/nvm/ByteArray.h b/ports/espressif/common-hal/nvm/ByteArray.h index 4888521463b2..d3c684b2f49c 100644 --- a/ports/espressif/common-hal/nvm/ByteArray.h +++ b/ports/espressif/common-hal/nvm/ByteArray.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_NVM_BYTEARRAY_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_NVM_BYTEARRAY_H diff --git a/ports/espressif/common-hal/nvm/__init__.c b/ports/espressif/common-hal/nvm/__init__.c index 1b702a1584d2..64b15a2bfc89 100644 --- a/ports/espressif/common-hal/nvm/__init__.c +++ b/ports/espressif/common-hal/nvm/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No nvm module functions. diff --git a/ports/espressif/common-hal/os/__init__.c b/ports/espressif/common-hal/os/__init__.c index bc18c838ae17..862176ff3b22 100644 --- a/ports/espressif/common-hal/os/__init__.c +++ b/ports/espressif/common-hal/os/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Sean Cross - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Sean Cross +// +// SPDX-License-Identifier: MIT #include "genhdr/mpversion.h" #include "py/mpconfig.h" diff --git a/ports/espressif/common-hal/paralleldisplaybus/ParallelBus.c b/ports/espressif/common-hal/paralleldisplaybus/ParallelBus.c index 4b9a565c14e2..000a01865bec 100644 --- a/ports/espressif/common-hal/paralleldisplaybus/ParallelBus.c +++ b/ports/espressif/common-hal/paralleldisplaybus/ParallelBus.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/espressif/common-hal/paralleldisplaybus/ParallelBus.h b/ports/espressif/common-hal/paralleldisplaybus/ParallelBus.h index 3c9fe3a0dcf5..4724ba7231a4 100644 --- a/ports/espressif/common-hal/paralleldisplaybus/ParallelBus.h +++ b/ports/espressif/common-hal/paralleldisplaybus/ParallelBus.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/ps2io/Ps2.c b/ports/espressif/common-hal/ps2io/Ps2.c index e065012a0caf..0ef4da4aa6d5 100644 --- a/ports/espressif/common-hal/ps2io/Ps2.c +++ b/ports/espressif/common-hal/ps2io/Ps2.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #include "common-hal/ps2io/Ps2.h" #include "shared-bindings/ps2io/Ps2.h" diff --git a/ports/espressif/common-hal/ps2io/Ps2.h b/ports/espressif/common-hal/ps2io/Ps2.h index 156689e0f081..6483d02bb950 100644 --- a/ports/espressif/common-hal/ps2io/Ps2.h +++ b/ports/espressif/common-hal/ps2io/Ps2.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_PS2IO_PS2_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_PS2IO_PS2_H diff --git a/ports/espressif/common-hal/ps2io/__init__.c b/ports/espressif/common-hal/ps2io/__init__.c index ba4b4249f733..d3f92aa17f5c 100644 --- a/ports/espressif/common-hal/ps2io/__init__.c +++ b/ports/espressif/common-hal/ps2io/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No ps2io module functions. diff --git a/ports/espressif/common-hal/pulseio/PulseIn.c b/ports/espressif/common-hal/pulseio/PulseIn.c index d8f048e9128f..cf24b42a052f 100644 --- a/ports/espressif/common-hal/pulseio/PulseIn.c +++ b/ports/espressif/common-hal/pulseio/PulseIn.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "common-hal/pulseio/PulseIn.h" #include "bindings/espidf/__init__.h" diff --git a/ports/espressif/common-hal/pulseio/PulseIn.h b/ports/espressif/common-hal/pulseio/PulseIn.h index 846886aded69..75cbc90856af 100644 --- a/ports/espressif/common-hal/pulseio/PulseIn.h +++ b/ports/espressif/common-hal/pulseio/PulseIn.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/pulseio/PulseOut.c b/ports/espressif/common-hal/pulseio/PulseOut.c index 7f5dbfc38c7e..b76c84385596 100644 --- a/ports/espressif/common-hal/pulseio/PulseOut.c +++ b/ports/espressif/common-hal/pulseio/PulseOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "common-hal/pulseio/PulseOut.h" #include "shared-bindings/pulseio/PulseOut.h" diff --git a/ports/espressif/common-hal/pulseio/PulseOut.h b/ports/espressif/common-hal/pulseio/PulseOut.h index f4b39da5b492..5dc470b67e0b 100644 --- a/ports/espressif/common-hal/pulseio/PulseOut.h +++ b/ports/espressif/common-hal/pulseio/PulseOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/pulseio/__init__.c b/ports/espressif/common-hal/pulseio/__init__.c index 2bee925bc77f..50db4c40454e 100644 --- a/ports/espressif/common-hal/pulseio/__init__.c +++ b/ports/espressif/common-hal/pulseio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No pulseio module functions. diff --git a/ports/espressif/common-hal/pwmio/PWMOut.c b/ports/espressif/common-hal/pwmio/PWMOut.c index ea9e5dd0c0f7..81040aa22abb 100644 --- a/ports/espressif/common-hal/pwmio/PWMOut.c +++ b/ports/espressif/common-hal/pwmio/PWMOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include "common-hal/pwmio/PWMOut.h" diff --git a/ports/espressif/common-hal/pwmio/PWMOut.h b/ports/espressif/common-hal/pwmio/PWMOut.h index 8967d8492f16..630f14b6af73 100644 --- a/ports/espressif/common-hal/pwmio/PWMOut.h +++ b/ports/espressif/common-hal/pwmio/PWMOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/pwmio/__init__.c b/ports/espressif/common-hal/pwmio/__init__.c index 9e551a1072b3..b43cd8b1b396 100644 --- a/ports/espressif/common-hal/pwmio/__init__.c +++ b/ports/espressif/common-hal/pwmio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No pwmio module functions. diff --git a/ports/espressif/common-hal/rgbmatrix/RGBMatrix.c b/ports/espressif/common-hal/rgbmatrix/RGBMatrix.c index 4021ee961ab7..b5a9f62c4e20 100644 --- a/ports/espressif/common-hal/rgbmatrix/RGBMatrix.c +++ b/ports/espressif/common-hal/rgbmatrix/RGBMatrix.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/espressif/common-hal/rgbmatrix/RGBMatrix.h b/ports/espressif/common-hal/rgbmatrix/RGBMatrix.h index d14cd9b0836d..002169291322 100644 --- a/ports/espressif/common-hal/rgbmatrix/RGBMatrix.h +++ b/ports/espressif/common-hal/rgbmatrix/RGBMatrix.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_RGBMATRIX_RGBMATRIX_H #define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_RGBMATRIX_RGBMATRIX_H diff --git a/ports/espressif/common-hal/rgbmatrix/__init__.c b/ports/espressif/common-hal/rgbmatrix/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/espressif/common-hal/rgbmatrix/__init__.c +++ b/ports/espressif/common-hal/rgbmatrix/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/espressif/common-hal/rgbmatrix/__init__.h b/ports/espressif/common-hal/rgbmatrix/__init__.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/espressif/common-hal/rgbmatrix/__init__.h +++ b/ports/espressif/common-hal/rgbmatrix/__init__.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/espressif/common-hal/rotaryio/IncrementalEncoder.c b/ports/espressif/common-hal/rotaryio/IncrementalEncoder.c index 15286c5c4aa2..c8d1556fc68b 100644 --- a/ports/espressif/common-hal/rotaryio/IncrementalEncoder.c +++ b/ports/espressif/common-hal/rotaryio/IncrementalEncoder.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #include "shared-bindings/rotaryio/IncrementalEncoder.h" diff --git a/ports/espressif/common-hal/rotaryio/IncrementalEncoder.h b/ports/espressif/common-hal/rotaryio/IncrementalEncoder.h index c02b48d677e8..4eeea3c4b264 100644 --- a/ports/espressif/common-hal/rotaryio/IncrementalEncoder.h +++ b/ports/espressif/common-hal/rotaryio/IncrementalEncoder.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/rotaryio/__init__.c b/ports/espressif/common-hal/rotaryio/__init__.c index 0aae79c26a1c..67cae26a8b7f 100644 --- a/ports/espressif/common-hal/rotaryio/__init__.c +++ b/ports/espressif/common-hal/rotaryio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No rotaryio module functions. diff --git a/ports/espressif/common-hal/rtc/RTC.c b/ports/espressif/common-hal/rtc/RTC.c index 82a85d5c28df..aa5a26bbf8a2 100644 --- a/ports/espressif/common-hal/rtc/RTC.c +++ b/ports/espressif/common-hal/rtc/RTC.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2019 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2019 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/espressif/common-hal/rtc/RTC.h b/ports/espressif/common-hal/rtc/RTC.h index efe45e66b4a7..7e594f5194d0 100644 --- a/ports/espressif/common-hal/rtc/RTC.h +++ b/ports/espressif/common-hal/rtc/RTC.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Noralf Trønnes - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Noralf Trønnes +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_RTC_RTC_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_RTC_RTC_H diff --git a/ports/espressif/common-hal/rtc/__init__.c b/ports/espressif/common-hal/rtc/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/espressif/common-hal/rtc/__init__.c +++ b/ports/espressif/common-hal/rtc/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/espressif/common-hal/socketpool/Socket.c b/ports/espressif/common-hal/socketpool/Socket.c index e45f2aa6290f..56a350833c47 100644 --- a/ports/espressif/common-hal/socketpool/Socket.c +++ b/ports/espressif/common-hal/socketpool/Socket.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/socketpool/Socket.h" diff --git a/ports/espressif/common-hal/socketpool/Socket.h b/ports/espressif/common-hal/socketpool/Socket.h index 956551e456d4..16f82d704647 100644 --- a/ports/espressif/common-hal/socketpool/Socket.h +++ b/ports/espressif/common-hal/socketpool/Socket.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/espressif/common-hal/socketpool/SocketPool.c b/ports/espressif/common-hal/socketpool/SocketPool.c index 6d58126c31ea..1c5adf81aad4 100644 --- a/ports/espressif/common-hal/socketpool/SocketPool.c +++ b/ports/espressif/common-hal/socketpool/SocketPool.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/socketpool/SocketPool.h" #include "common-hal/socketpool/Socket.h" diff --git a/ports/espressif/common-hal/socketpool/SocketPool.h b/ports/espressif/common-hal/socketpool/SocketPool.h index 4051ed4255ee..c682a32ae14a 100644 --- a/ports/espressif/common-hal/socketpool/SocketPool.h +++ b/ports/espressif/common-hal/socketpool/SocketPool.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_SOCKETPOOL_SOCKETPOOL_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_SOCKETPOOL_SOCKETPOOL_H diff --git a/ports/espressif/common-hal/socketpool/__init__.c b/ports/espressif/common-hal/socketpool/__init__.c index 595977d24feb..c8558f9b80a3 100644 --- a/ports/espressif/common-hal/socketpool/__init__.c +++ b/ports/espressif/common-hal/socketpool/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/socketpool/__init__.h" diff --git a/ports/espressif/common-hal/socketpool/__init__.h b/ports/espressif/common-hal/socketpool/__init__.h index 58d2eb9d8596..c72cd4ada506 100644 --- a/ports/espressif/common-hal/socketpool/__init__.h +++ b/ports/espressif/common-hal/socketpool/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_SOCKETPOOL___INIT___H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_SOCKETPOOL___INIT___H diff --git a/ports/espressif/common-hal/time/__init__.c b/ports/espressif/common-hal/time/__init__.c index 398df0c1b9f8..96283d792591 100644 --- a/ports/espressif/common-hal/time/__init__.c +++ b/ports/espressif/common-hal/time/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/mphal.h" diff --git a/ports/espressif/common-hal/touchio/TouchIn.c b/ports/espressif/common-hal/touchio/TouchIn.c index c2ef0d6e187b..2a37e6e526fb 100644 --- a/ports/espressif/common-hal/touchio/TouchIn.c +++ b/ports/espressif/common-hal/touchio/TouchIn.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #include "shared-bindings/touchio/TouchIn.h" diff --git a/ports/espressif/common-hal/touchio/TouchIn.h b/ports/espressif/common-hal/touchio/TouchIn.h index 9e21c87fd1f1..8d78332d2cdc 100644 --- a/ports/espressif/common-hal/touchio/TouchIn.h +++ b/ports/espressif/common-hal/touchio/TouchIn.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_TOUCHIO_TOUCHIN_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_TOUCHIO_TOUCHIN_H diff --git a/ports/espressif/common-hal/touchio/__init__.c b/ports/espressif/common-hal/touchio/__init__.c index d2290447c95e..19c63ab0f5c8 100644 --- a/ports/espressif/common-hal/touchio/__init__.c +++ b/ports/espressif/common-hal/touchio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No touchio module functions. diff --git a/ports/espressif/common-hal/watchdog/WatchDogMode.c b/ports/espressif/common-hal/watchdog/WatchDogMode.c index fc4e0e008cd5..97c3b251a4ec 100644 --- a/ports/espressif/common-hal/watchdog/WatchDogMode.c +++ b/ports/espressif/common-hal/watchdog/WatchDogMode.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No watchdog module functions. diff --git a/ports/espressif/common-hal/watchdog/WatchDogTimer.c b/ports/espressif/common-hal/watchdog/WatchDogTimer.c index b536531c22cd..d3f66c15b6d4 100644 --- a/ports/espressif/common-hal/watchdog/WatchDogTimer.c +++ b/ports/espressif/common-hal/watchdog/WatchDogTimer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" diff --git a/ports/espressif/common-hal/watchdog/WatchDogTimer.h b/ports/espressif/common-hal/watchdog/WatchDogTimer.h index 461d11f18cfc..8a4dd94eb66a 100644 --- a/ports/espressif/common-hal/watchdog/WatchDogTimer.h +++ b/ports/espressif/common-hal/watchdog/WatchDogTimer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WATCHDOG_WATCHDOGTIMER_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WATCHDOG_WATCHDOGTIMER_H diff --git a/ports/espressif/common-hal/watchdog/__init__.c b/ports/espressif/common-hal/watchdog/__init__.c index fc4e0e008cd5..97c3b251a4ec 100644 --- a/ports/espressif/common-hal/watchdog/__init__.c +++ b/ports/espressif/common-hal/watchdog/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No watchdog module functions. diff --git a/ports/espressif/common-hal/wifi/Monitor.c b/ports/espressif/common-hal/wifi/Monitor.c index 1fe99f955b41..635ba7a5a673 100644 --- a/ports/espressif/common-hal/wifi/Monitor.c +++ b/ports/espressif/common-hal/wifi/Monitor.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/espressif/common-hal/wifi/Monitor.h b/ports/espressif/common-hal/wifi/Monitor.h index e4e50dddc1a2..906a7a3f4016 100644 --- a/ports/espressif/common-hal/wifi/Monitor.h +++ b/ports/espressif/common-hal/wifi/Monitor.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI_MONITOR_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI_MONITOR_H diff --git a/ports/espressif/common-hal/wifi/Network.c b/ports/espressif/common-hal/wifi/Network.c index 9a20decd4aa9..5e29cad31939 100644 --- a/ports/espressif/common-hal/wifi/Network.c +++ b/ports/espressif/common-hal/wifi/Network.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/espressif/common-hal/wifi/Network.h b/ports/espressif/common-hal/wifi/Network.h index 05a6c3436646..20c4310bdfd4 100644 --- a/ports/espressif/common-hal/wifi/Network.h +++ b/ports/espressif/common-hal/wifi/Network.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI_NETWORK_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI_NETWORK_H diff --git a/ports/espressif/common-hal/wifi/Radio.c b/ports/espressif/common-hal/wifi/Radio.c index 0ebf3c35a128..71ac1469758f 100644 --- a/ports/espressif/common-hal/wifi/Radio.c +++ b/ports/espressif/common-hal/wifi/Radio.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/wifi/Radio.h" #include "shared-bindings/wifi/Network.h" diff --git a/ports/espressif/common-hal/wifi/Radio.h b/ports/espressif/common-hal/wifi/Radio.h index ddab4b2a5bb8..62a624cbc0ec 100644 --- a/ports/espressif/common-hal/wifi/Radio.h +++ b/ports/espressif/common-hal/wifi/Radio.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI_RADIO_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI_RADIO_H diff --git a/ports/espressif/common-hal/wifi/ScannedNetworks.c b/ports/espressif/common-hal/wifi/ScannedNetworks.c index d6527969da17..02edb9bd0363 100644 --- a/ports/espressif/common-hal/wifi/ScannedNetworks.c +++ b/ports/espressif/common-hal/wifi/ScannedNetworks.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2017 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2017 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/espressif/common-hal/wifi/ScannedNetworks.h b/ports/espressif/common-hal/wifi/ScannedNetworks.h index 0ad4b5e3dc88..e289e3a80fd6 100644 --- a/ports/espressif/common-hal/wifi/ScannedNetworks.h +++ b/ports/espressif/common-hal/wifi/ScannedNetworks.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI_SCANNEDNETWORKS_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI_SCANNEDNETWORKS_H diff --git a/ports/espressif/common-hal/wifi/__init__.c b/ports/espressif/common-hal/wifi/__init__.c index 1d226ea6fdc5..9ed7f12a6c6e 100644 --- a/ports/espressif/common-hal/wifi/__init__.c +++ b/ports/espressif/common-hal/wifi/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "bindings/espidf/__init__.h" #include "common-hal/wifi/__init__.h" diff --git a/ports/espressif/common-hal/wifi/__init__.h b/ports/espressif/common-hal/wifi/__init__.h index 4258f1643f34..ec7f4d12b57b 100644 --- a/ports/espressif/common-hal/wifi/__init__.h +++ b/ports/espressif/common-hal/wifi/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI___INIT___H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI___INIT___H diff --git a/ports/espressif/mpconfigport.h b/ports/espressif/mpconfigport.h index e85242dfd290..289626c0e091 100644 --- a/ports/espressif/mpconfigport.h +++ b/ports/espressif/mpconfigport.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2015 Glenn Ruben Bakke - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2015 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_MPCONFIGPORT_H #define MICROPY_INCLUDED_ESPRESSIF_MPCONFIGPORT_H diff --git a/ports/espressif/mphalport.c b/ports/espressif/mphalport.c index 511d92b22886..81b0b7274d43 100644 --- a/ports/espressif/mphalport.c +++ b/ports/espressif/mphalport.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2015 Glenn Ruben Bakke - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2015 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "py/mphal.h" #include "supervisor/cpu.h" diff --git a/ports/espressif/mphalport.h b/ports/espressif/mphalport.h index 7ff8129903d6..b630eecc898b 100644 --- a/ports/espressif/mphalport.h +++ b/ports/espressif/mphalport.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2015 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2015 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_MPHAL_H #define MICROPY_INCLUDED_ESPRESSIF_MPHAL_H diff --git a/ports/espressif/peripherals/esp32/pins.c b/ports/espressif/peripherals/esp32/pins.c index 2c30ab080da1..e2c45bd06fc3 100644 --- a/ports/espressif/peripherals/esp32/pins.c +++ b/ports/espressif/peripherals/esp32/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "peripherals/pins.h" diff --git a/ports/espressif/peripherals/esp32/pins.h b/ports/espressif/peripherals/esp32/pins.h index 6ec7c624a001..71a777a27b75 100644 --- a/ports/espressif/peripherals/esp32/pins.h +++ b/ports/espressif/peripherals/esp32/pins.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // DO NOT include this file directly. // Use shared-bindings/microcontroller/Pin.h instead. diff --git a/ports/espressif/peripherals/esp32c3/pins.c b/ports/espressif/peripherals/esp32c3/pins.c index 61c7c56cc1d6..077db4f710f0 100644 --- a/ports/espressif/peripherals/esp32c3/pins.c +++ b/ports/espressif/peripherals/esp32c3/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include "peripherals/pins.h" diff --git a/ports/espressif/peripherals/esp32c3/pins.h b/ports/espressif/peripherals/esp32c3/pins.h index 9f55768825bd..e1ce88dd9ec9 100644 --- a/ports/espressif/peripherals/esp32c3/pins.h +++ b/ports/espressif/peripherals/esp32c3/pins.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT // DO NOT include this file directly. // Use shared-bindings/microcontroller/Pin.h instead. diff --git a/ports/espressif/peripherals/esp32c6/pins.c b/ports/espressif/peripherals/esp32c6/pins.c index 51f68777c6ae..c3ef498a5e26 100644 --- a/ports/espressif/peripherals/esp32c6/pins.c +++ b/ports/espressif/peripherals/esp32c6/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include "peripherals/pins.h" diff --git a/ports/espressif/peripherals/esp32c6/pins.h b/ports/espressif/peripherals/esp32c6/pins.h index 4c2b4390e719..ca9e3c7bfe62 100644 --- a/ports/espressif/peripherals/esp32c6/pins.h +++ b/ports/espressif/peripherals/esp32c6/pins.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries LLC - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT // DO NOT include this file directly. // Use shared-bindings/microcontroller/Pin.h instead. diff --git a/ports/espressif/peripherals/esp32h2/pins.c b/ports/espressif/peripherals/esp32h2/pins.c index a085ca09ae23..b7e3028b6d7e 100644 --- a/ports/espressif/peripherals/esp32h2/pins.c +++ b/ports/espressif/peripherals/esp32h2/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include "peripherals/pins.h" diff --git a/ports/espressif/peripherals/esp32h2/pins.h b/ports/espressif/peripherals/esp32h2/pins.h index 7d781ff733ee..6690c3756336 100644 --- a/ports/espressif/peripherals/esp32h2/pins.h +++ b/ports/espressif/peripherals/esp32h2/pins.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries LLC - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT // DO NOT include this file directly. // Use shared-bindings/microcontroller/Pin.h instead. diff --git a/ports/espressif/peripherals/esp32s2/pins.c b/ports/espressif/peripherals/esp32s2/pins.c index ad206cf022e1..b5e8d483175c 100644 --- a/ports/espressif/peripherals/esp32s2/pins.c +++ b/ports/espressif/peripherals/esp32s2/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "peripherals/pins.h" diff --git a/ports/espressif/peripherals/esp32s2/pins.h b/ports/espressif/peripherals/esp32s2/pins.h index cff6fea7cb0f..07a04d98fb4a 100644 --- a/ports/espressif/peripherals/esp32s2/pins.h +++ b/ports/espressif/peripherals/esp32s2/pins.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // DO NOT include this file directly. // Use shared-bindings/microcontroller/Pin.h instead. diff --git a/ports/espressif/peripherals/esp32s3/pins.c b/ports/espressif/peripherals/esp32s3/pins.c index ef5b2462c6f3..c51c4b935759 100644 --- a/ports/espressif/peripherals/esp32s3/pins.c +++ b/ports/espressif/peripherals/esp32s3/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include "peripherals/pins.h" diff --git a/ports/espressif/peripherals/esp32s3/pins.h b/ports/espressif/peripherals/esp32s3/pins.h index 7c0b8edd642b..46b9dcf39462 100644 --- a/ports/espressif/peripherals/esp32s3/pins.h +++ b/ports/espressif/peripherals/esp32s3/pins.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT // DO NOT include this file directly. // Use shared-bindings/microcontroller/Pin.h instead. diff --git a/ports/espressif/peripherals/i2c.c b/ports/espressif/peripherals/i2c.c index d16f165d3838..add1ac081682 100644 --- a/ports/espressif/peripherals/i2c.c +++ b/ports/espressif/peripherals/i2c.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #include "peripherals/i2c.h" diff --git a/ports/espressif/peripherals/i2c.h b/ports/espressif/peripherals/i2c.h index 4e7946d17711..d9eea304a82a 100644 --- a/ports/espressif/peripherals/i2c.h +++ b/ports/espressif/peripherals/i2c.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_I2C_HANDLER_H #define MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_I2C_HANDLER_H diff --git a/ports/espressif/peripherals/pins.h b/ports/espressif/peripherals/pins.h index 5d759c661296..25e9926d2aa1 100644 --- a/ports/espressif/peripherals/pins.h +++ b/ports/espressif/peripherals/pins.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // DO NOT include this file directly. // Use shared-bindings/microcontroller/Pin.h instead. diff --git a/ports/espressif/peripherals/touch.c b/ports/espressif/peripherals/touch.c index 98ecf10dfd6c..71340d943719 100644 --- a/ports/espressif/peripherals/touch.c +++ b/ports/espressif/peripherals/touch.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #include "py/gc.h" #include "peripherals/touch.h" diff --git a/ports/espressif/peripherals/touch.h b/ports/espressif/peripherals/touch.h index 5feba4410a0d..494a44627878 100644 --- a/ports/espressif/peripherals/touch.h +++ b/ports/espressif/peripherals/touch.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_TOUCH_HANDLER_H #define MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_TOUCH_HANDLER_H diff --git a/ports/espressif/pmic/axp192/axp192.c b/ports/espressif/pmic/axp192/axp192.c index fe698a04169c..f6a80c3ff612 100644 --- a/ports/espressif/pmic/axp192/axp192.c +++ b/ports/espressif/pmic/axp192/axp192.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + #include "axp192.h" bool pmic_common_init(busio_i2c_obj_t *i2c) { diff --git a/ports/espressif/pmic/axp192/axp192.h b/ports/espressif/pmic/axp192/axp192.h index 587ce04b0c32..3fcc05e6f706 100755 --- a/ports/espressif/pmic/axp192/axp192.h +++ b/ports/espressif/pmic/axp192/axp192.h @@ -1,28 +1,9 @@ -/* - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Stephen Oliver - * Copyright (c) 2023 CDarius - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Stephen Oliver +// SPDX-FileCopyrightText: Copyright (c) 2023 CDarius +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_AXP192_H diff --git a/ports/espressif/qstrdefsport.h b/ports/espressif/qstrdefsport.h index 00d3e2ae3c55..b0f5566fabf2 100644 --- a/ports/espressif/qstrdefsport.h +++ b/ports/espressif/qstrdefsport.h @@ -1,2 +1,8 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // qstrs specific to this port // *FORMAT-OFF* diff --git a/ports/espressif/supervisor/internal_flash.c b/ports/espressif/supervisor/internal_flash.c index a9e6526bf55f..68fdb76393af 100644 --- a/ports/espressif/supervisor/internal_flash.c +++ b/ports/espressif/supervisor/internal_flash.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/internal_flash.h" diff --git a/ports/espressif/supervisor/internal_flash.h b/ports/espressif/supervisor/internal_flash.h index 17a686972534..a530fd299d80 100644 --- a/ports/espressif/supervisor/internal_flash.h +++ b/ports/espressif/supervisor/internal_flash.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_INTERNAL_FLASH_H #define MICROPY_INCLUDED_ESPRESSIF_INTERNAL_FLASH_H diff --git a/ports/espressif/supervisor/port.c b/ports/espressif/supervisor/port.c index da8d10afc147..e35f293db974 100644 --- a/ports/espressif/supervisor/port.c +++ b/ports/espressif/supervisor/port.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/espressif/supervisor/serial.c b/ports/espressif/supervisor/serial.c index 3e5e6196c6c0..1d2fc58683a6 100644 --- a/ports/espressif/supervisor/serial.c +++ b/ports/espressif/supervisor/serial.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/mpconfig.h" #include "supervisor/shared/serial.h" diff --git a/ports/espressif/supervisor/usb.c b/ports/espressif/supervisor/usb.c index a7eb0e454178..52ee510ee64d 100644 --- a/ports/espressif/supervisor/usb.c +++ b/ports/espressif/supervisor/usb.c @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 hathach for Adafruit Industries - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 hathach for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" #include "supervisor/usb.h" diff --git a/ports/espressif/supervisor/usb_serial_jtag.c b/ports/espressif/supervisor/usb_serial_jtag.c index a626b1ee5c31..741d587d578a 100644 --- a/ports/espressif/supervisor/usb_serial_jtag.c +++ b/ports/espressif/supervisor/usb_serial_jtag.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Patrick Van Oosterwijck - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Patrick Van Oosterwijck +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/ringbuf.h" #include "py/runtime.h" diff --git a/ports/espressif/supervisor/usb_serial_jtag.h b/ports/espressif/supervisor/usb_serial_jtag.h index 020deab5eddd..43727f56cbff 100644 --- a/ports/espressif/supervisor/usb_serial_jtag.h +++ b/ports/espressif/supervisor/usb_serial_jtag.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/litex/Makefile b/ports/litex/Makefile index d05e66a9f24e..4e20b3c4ca19 100644 --- a/ports/litex/Makefile +++ b/ports/litex/Makefile @@ -1,26 +1,8 @@ -# This file is part of the MicroPython project, http://micropython.org/ -# -# The MIT License (MIT) +# This file is part of the CircuitPython project: https://circuitpython.org # # SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries # -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. +# SPDX-License-Identifier: MIT include ../../py/circuitpy_mkenv.mk diff --git a/ports/litex/background.c b/ports/litex/background.c index e641daf53be4..a09607bdef18 100644 --- a/ports/litex/background.c +++ b/ports/litex/background.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" #include "supervisor/filesystem.h" diff --git a/ports/litex/background.h b/ports/litex/background.h index c80fbbe5cbad..c9899b50e30f 100644 --- a/ports/litex/background.h +++ b/ports/litex/background.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_LITEX_BACKGROUND_H #define MICROPY_INCLUDED_LITEX_BACKGROUND_H diff --git a/ports/litex/boards/fomu/board.c b/ports/litex/boards/fomu/board.c index 43fc74fd42dd..c54e877e6332 100644 --- a/ports/litex/boards/fomu/board.c +++ b/ports/litex/boards/fomu/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/litex/boards/fomu/csr.h b/ports/litex/boards/fomu/csr.h index 7405d431251b..6c0e280d18ae 100644 --- a/ports/litex/boards/fomu/csr.h +++ b/ports/litex/boards/fomu/csr.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // -------------------------------------------------------------------------------- // Auto-generated by Migen (f4fcd10) & LiteX (de205d4a) on 2019-11-25 14:57:34 // -------------------------------------------------------------------------------- diff --git a/ports/litex/boards/fomu/generated/soc.h b/ports/litex/boards/fomu/generated/soc.h index 1d73bbf0ff26..53b057837ec4 100644 --- a/ports/litex/boards/fomu/generated/soc.h +++ b/ports/litex/boards/fomu/generated/soc.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // -------------------------------------------------------------------------------- // Auto-generated by Migen (f4fcd10) & LiteX (de205d4a) on 2019-11-25 15:17:59 // -------------------------------------------------------------------------------- diff --git a/ports/litex/boards/fomu/mpconfigboard.h b/ports/litex/boards/fomu/mpconfigboard.h index 17f77f999302..c39bdf90e625 100644 --- a/ports/litex/boards/fomu/mpconfigboard.h +++ b/ports/litex/boards/fomu/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/litex/boards/fomu/pins.c b/ports/litex/boards/fomu/pins.c index 9744f5c73efe..0b4d8aa3e7e8 100644 --- a/ports/litex/boards/fomu/pins.c +++ b/ports/litex/boards/fomu/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/litex/common-hal/digitalio/DigitalInOut.c b/ports/litex/common-hal/digitalio/DigitalInOut.c index 3a14d8e625ff..30dd3f4addf5 100644 --- a/ports/litex/common-hal/digitalio/DigitalInOut.c +++ b/ports/litex/common-hal/digitalio/DigitalInOut.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/digitalio/DigitalInOut.h" #include "py/runtime.h" diff --git a/ports/litex/common-hal/digitalio/DigitalInOut.h b/ports/litex/common-hal/digitalio/DigitalInOut.h index 3c5bdafaf2c4..1508bff3658e 100644 --- a/ports/litex/common-hal/digitalio/DigitalInOut.h +++ b/ports/litex/common-hal/digitalio/DigitalInOut.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_FOMU_COMMON_HAL_DIGITALIO_DIGITALINOUT_H #define MICROPY_INCLUDED_FOMU_COMMON_HAL_DIGITALIO_DIGITALINOUT_H diff --git a/ports/litex/common-hal/digitalio/__init__.c b/ports/litex/common-hal/digitalio/__init__.c index 20fad459593a..fa222ed01f03 100644 --- a/ports/litex/common-hal/digitalio/__init__.c +++ b/ports/litex/common-hal/digitalio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No digitalio module functions. diff --git a/ports/litex/common-hal/microcontroller/Pin.c b/ports/litex/common-hal/microcontroller/Pin.c index 1cc4c41d58a7..d3ba437b586c 100644 --- a/ports/litex/common-hal/microcontroller/Pin.c +++ b/ports/litex/common-hal/microcontroller/Pin.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/litex/common-hal/microcontroller/Pin.h b/ports/litex/common-hal/microcontroller/Pin.h index 522191f3cc1a..aa38abf2d88e 100644 --- a/ports/litex/common-hal/microcontroller/Pin.h +++ b/ports/litex/common-hal/microcontroller/Pin.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_FOMU_COMMON_HAL_MICROCONTROLLER_PIN_H #define MICROPY_INCLUDED_FOMU_COMMON_HAL_MICROCONTROLLER_PIN_H diff --git a/ports/litex/common-hal/microcontroller/Processor.c b/ports/litex/common-hal/microcontroller/Processor.c index 5e4a57dfeb95..cf80a01d4e6d 100644 --- a/ports/litex/common-hal/microcontroller/Processor.c +++ b/ports/litex/common-hal/microcontroller/Processor.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Dan Halbert for Adafruit Industries - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include "py/runtime.h" diff --git a/ports/litex/common-hal/microcontroller/Processor.h b/ports/litex/common-hal/microcontroller/Processor.h index a2ea261c8f89..7a6ffad45902 100644 --- a/ports/litex/common-hal/microcontroller/Processor.h +++ b/ports/litex/common-hal/microcontroller/Processor.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_LITEX_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H #define MICROPY_INCLUDED_LITEX_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H diff --git a/ports/litex/common-hal/microcontroller/__init__.c b/ports/litex/common-hal/microcontroller/__init__.c index 1de55653fbe2..9d125b90e502 100644 --- a/ports/litex/common-hal/microcontroller/__init__.c +++ b/ports/litex/common-hal/microcontroller/__init__.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/mphal.h" #include "py/obj.h" diff --git a/ports/litex/common-hal/neopixel_write/__init__.c b/ports/litex/common-hal/neopixel_write/__init__.c index b26bbac69507..72750872b56a 100644 --- a/ports/litex/common-hal/neopixel_write/__init__.c +++ b/ports/litex/common-hal/neopixel_write/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 hathach for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 hathach for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/mphal.h" #include "shared-bindings/neopixel_write/__init__.h" diff --git a/ports/litex/common-hal/os/__init__.c b/ports/litex/common-hal/os/__init__.c index 717c81933533..247ec0010a11 100644 --- a/ports/litex/common-hal/os/__init__.c +++ b/ports/litex/common-hal/os/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Sean Cross - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Sean Cross +// +// SPDX-License-Identifier: MIT #include "genhdr/mpversion.h" #include "py/mpconfig.h" diff --git a/ports/litex/common-hal/time/__init__.c b/ports/litex/common-hal/time/__init__.c index 398df0c1b9f8..96283d792591 100644 --- a/ports/litex/common-hal/time/__init__.c +++ b/ports/litex/common-hal/time/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/mphal.h" diff --git a/ports/litex/hw/common.h b/ports/litex/hw/common.h index 8b3a0304ee67..aba6b2439492 100644 --- a/ports/litex/hw/common.h +++ b/ports/litex/hw/common.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + #ifndef _HW_COMMON_H_ #define _HW_COMMON_H_ #include diff --git a/ports/litex/irq.h b/ports/litex/irq.h index a9814ac7f9c1..e1f0cae4d4d8 100644 --- a/ports/litex/irq.h +++ b/ports/litex/irq.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + #ifndef __IRQ_H #define __IRQ_H diff --git a/ports/litex/mpconfigport.h b/ports/litex/mpconfigport.h index 9b214c5799a4..17b6f6aa74c7 100644 --- a/ports/litex/mpconfigport.h +++ b/ports/litex/mpconfigport.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2015 Glenn Ruben Bakke - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2015 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef FPGA_MPCONFIGPORT_H__ #define FPGA_MPCONFIGPORT_H__ diff --git a/ports/litex/mphalport.c b/ports/litex/mphalport.c index a2f5786040fd..cc74762a14f1 100644 --- a/ports/litex/mphalport.c +++ b/ports/litex/mphalport.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2015 Glenn Ruben Bakke - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2015 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/litex/mphalport.h b/ports/litex/mphalport.h index 780bd25f9a62..ef5705832c4b 100644 --- a/ports/litex/mphalport.h +++ b/ports/litex/mphalport.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2015 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2015 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #ifndef __FOMU_HAL #define __FOMU_HAL diff --git a/ports/litex/qstrdefsport.h b/ports/litex/qstrdefsport.h index 00d3e2ae3c55..b0f5566fabf2 100644 --- a/ports/litex/qstrdefsport.h +++ b/ports/litex/qstrdefsport.h @@ -1,2 +1,8 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // qstrs specific to this port // *FORMAT-OFF* diff --git a/ports/litex/supervisor/internal_flash.c b/ports/litex/supervisor/internal_flash.c index c90b615d4d23..ba21b91b8726 100644 --- a/ports/litex/supervisor/internal_flash.c +++ b/ports/litex/supervisor/internal_flash.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/internal_flash.h" #include diff --git a/ports/litex/supervisor/internal_flash.h b/ports/litex/supervisor/internal_flash.h index 1498207d3e85..9167036d42ec 100644 --- a/ports/litex/supervisor/internal_flash.h +++ b/ports/litex/supervisor/internal_flash.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_LITEX_INTERNAL_FLASH_H #define MICROPY_INCLUDED_LITEX_INTERNAL_FLASH_H diff --git a/ports/litex/supervisor/port.c b/ports/litex/supervisor/port.c index 1dd83e0eebac..7009956c317a 100644 --- a/ports/litex/supervisor/port.c +++ b/ports/litex/supervisor/port.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include "supervisor/board.h" diff --git a/ports/litex/supervisor/usb.c b/ports/litex/supervisor/usb.c index 87c9f6dee42c..f2324a57a6e5 100644 --- a/ports/litex/supervisor/usb.c +++ b/ports/litex/supervisor/usb.c @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 hathach for Adafruit Industries - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 hathach for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/usb.h" #include "shared/runtime/interrupt_char.h" diff --git a/ports/mimxrt10xx/Makefile b/ports/mimxrt10xx/Makefile index 946ca64509fe..f13207451e6c 100644 --- a/ports/mimxrt10xx/Makefile +++ b/ports/mimxrt10xx/Makefile @@ -1,27 +1,9 @@ -# This file is part of the MicroPython project, http://micropython.org/ -# -# The MIT License (MIT) +# This file is part of the CircuitPython project: https://circuitpython.org # # SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries # SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec # -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. +# SPDX-License-Identifier: MIT include ../../py/circuitpy_mkenv.mk diff --git a/ports/mimxrt10xx/background.c b/ports/mimxrt10xx/background.c index 04de4c1c1c07..75e4f081230a 100644 --- a/ports/mimxrt10xx/background.c +++ b/ports/mimxrt10xx/background.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "supervisor/port.h" diff --git a/ports/mimxrt10xx/background.h b/ports/mimxrt10xx/background.h index a3fe102accb8..138a5fc61855 100644 --- a/ports/mimxrt10xx/background.h +++ b/ports/mimxrt10xx/background.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_MIMXRT10XX_BACKGROUND_H #define MICROPY_INCLUDED_MIMXRT10XX_BACKGROUND_H diff --git a/ports/mimxrt10xx/boards/adafruit_metro_m7_1011_sd/board.c b/ports/mimxrt10xx/boards/adafruit_metro_m7_1011_sd/board.c index 62be2303a5f6..db4fd1d502ab 100644 --- a/ports/mimxrt10xx/boards/adafruit_metro_m7_1011_sd/board.c +++ b/ports/mimxrt10xx/boards/adafruit_metro_m7_1011_sd/board.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/mimxrt10xx/boards/adafruit_metro_m7_1011_sd/mpconfigboard.h b/ports/mimxrt10xx/boards/adafruit_metro_m7_1011_sd/mpconfigboard.h index 589b2a2b6528..dd18b11f35d6 100644 --- a/ports/mimxrt10xx/boards/adafruit_metro_m7_1011_sd/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/adafruit_metro_m7_1011_sd/mpconfigboard.h @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Metro MIMXRT1011" #define MICROPY_HW_MCU_NAME "IMXRT1011DAE5A" diff --git a/ports/mimxrt10xx/boards/adafruit_metro_m7_1011_sd/pins.c b/ports/mimxrt10xx/boards/adafruit_metro_m7_1011_sd/pins.c index a7256552e5bc..c7db231eb022 100644 --- a/ports/mimxrt10xx/boards/adafruit_metro_m7_1011_sd/pins.c +++ b/ports/mimxrt10xx/boards/adafruit_metro_m7_1011_sd/pins.c @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/mimxrt10xx/boards/board.h b/ports/mimxrt10xx/boards/board.h index f00fea6be9eb..7f79085c9157 100644 --- a/ports/mimxrt10xx/boards/board.h +++ b/ports/mimxrt10xx/boards/board.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "mpconfigboard.h" diff --git a/ports/mimxrt10xx/boards/feather_m7_1011/board.c b/ports/mimxrt10xx/boards/feather_m7_1011/board.c index 9587ea71e818..f060b0e20c74 100644 --- a/ports/mimxrt10xx/boards/feather_m7_1011/board.c +++ b/ports/mimxrt10xx/boards/feather_m7_1011/board.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/mimxrt10xx/boards/feather_m7_1011/mpconfigboard.h b/ports/mimxrt10xx/boards/feather_m7_1011/mpconfigboard.h index e027e2b5eea8..c582072c38f6 100644 --- a/ports/mimxrt10xx/boards/feather_m7_1011/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/feather_m7_1011/mpconfigboard.h @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Feather MIMXRT1011" #define MICROPY_HW_MCU_NAME "IMXRT1011DAE5A" diff --git a/ports/mimxrt10xx/boards/feather_m7_1011/pins.c b/ports/mimxrt10xx/boards/feather_m7_1011/pins.c index 93c9d6430db1..0757bd2df210 100644 --- a/ports/mimxrt10xx/boards/feather_m7_1011/pins.c +++ b/ports/mimxrt10xx/boards/feather_m7_1011/pins.c @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/mimxrt10xx/boards/feather_mimxrt1011/board.c b/ports/mimxrt10xx/boards/feather_mimxrt1011/board.c index 9587ea71e818..f060b0e20c74 100644 --- a/ports/mimxrt10xx/boards/feather_mimxrt1011/board.c +++ b/ports/mimxrt10xx/boards/feather_mimxrt1011/board.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/mimxrt10xx/boards/feather_mimxrt1011/mpconfigboard.h b/ports/mimxrt10xx/boards/feather_mimxrt1011/mpconfigboard.h index a715a2c5634d..31885d2bae4d 100644 --- a/ports/mimxrt10xx/boards/feather_mimxrt1011/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/feather_mimxrt1011/mpconfigboard.h @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Feather MIMXRT1011" #define MICROPY_HW_MCU_NAME "IMXRT1011DAE5A" diff --git a/ports/mimxrt10xx/boards/feather_mimxrt1011/pins.c b/ports/mimxrt10xx/boards/feather_mimxrt1011/pins.c index 0014c4a145c7..3698f6bdb253 100644 --- a/ports/mimxrt10xx/boards/feather_mimxrt1011/pins.c +++ b/ports/mimxrt10xx/boards/feather_mimxrt1011/pins.c @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/mimxrt10xx/boards/feather_mimxrt1062/board.c b/ports/mimxrt10xx/boards/feather_mimxrt1062/board.c index 5a8de5a5228c..16f92964e10a 100644 --- a/ports/mimxrt10xx/boards/feather_mimxrt1062/board.c +++ b/ports/mimxrt10xx/boards/feather_mimxrt1062/board.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/mimxrt10xx/boards/feather_mimxrt1062/mpconfigboard.h b/ports/mimxrt10xx/boards/feather_mimxrt1062/mpconfigboard.h index 7b335d896cfb..82d10dc8f092 100644 --- a/ports/mimxrt10xx/boards/feather_mimxrt1062/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/feather_mimxrt1062/mpconfigboard.h @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Feather MIMXRT1062" #define MICROPY_HW_MCU_NAME "IMXRT1062DVJ6A" diff --git a/ports/mimxrt10xx/boards/feather_mimxrt1062/pins.c b/ports/mimxrt10xx/boards/feather_mimxrt1062/pins.c index 2a333f7f46fb..2f666289d5b5 100644 --- a/ports/mimxrt10xx/boards/feather_mimxrt1062/pins.c +++ b/ports/mimxrt10xx/boards/feather_mimxrt1062/pins.c @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/mimxrt10xx/boards/flash_config.h b/ports/mimxrt10xx/boards/flash_config.h index b0be0a93c08b..a0dc3e22590b 100644 --- a/ports/mimxrt10xx/boards/flash_config.h +++ b/ports/mimxrt10xx/boards/flash_config.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // This file defines board specific functions. diff --git a/ports/mimxrt10xx/boards/imxrt1010_evk/board.c b/ports/mimxrt10xx/boards/imxrt1010_evk/board.c index 9c7f4a256f17..70346c2ee64f 100644 --- a/ports/mimxrt10xx/boards/imxrt1010_evk/board.c +++ b/ports/mimxrt10xx/boards/imxrt1010_evk/board.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/mimxrt10xx/boards/imxrt1010_evk/mpconfigboard.h b/ports/mimxrt10xx/boards/imxrt1010_evk/mpconfigboard.h index 2ae3a8b6f1c4..9e9e4756e1f9 100644 --- a/ports/mimxrt10xx/boards/imxrt1010_evk/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/imxrt1010_evk/mpconfigboard.h @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "IMXRT1010-EVK" #define MICROPY_HW_MCU_NAME "IMXRT1011DAE5A" diff --git a/ports/mimxrt10xx/boards/imxrt1010_evk/pins.c b/ports/mimxrt10xx/boards/imxrt1010_evk/pins.c index a78004d143b0..42122b88e0ad 100644 --- a/ports/mimxrt10xx/boards/imxrt1010_evk/pins.c +++ b/ports/mimxrt10xx/boards/imxrt1010_evk/pins.c @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/mimxrt10xx/boards/imxrt1015_evk/board.c b/ports/mimxrt10xx/boards/imxrt1015_evk/board.c index 06b3dd22d540..9fc034ed2284 100644 --- a/ports/mimxrt10xx/boards/imxrt1015_evk/board.c +++ b/ports/mimxrt10xx/boards/imxrt1015_evk/board.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/mimxrt10xx/boards/imxrt1015_evk/mpconfigboard.h b/ports/mimxrt10xx/boards/imxrt1015_evk/mpconfigboard.h index ff2fe5531903..fe731dec0a4f 100644 --- a/ports/mimxrt10xx/boards/imxrt1015_evk/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/imxrt1015_evk/mpconfigboard.h @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "IMXRT1015-EVK" #define MICROPY_HW_MCU_NAME "IMXRT1015DAF5A" diff --git a/ports/mimxrt10xx/boards/imxrt1015_evk/pins.c b/ports/mimxrt10xx/boards/imxrt1015_evk/pins.c index abe2e8e74610..6ae8c1e5092b 100644 --- a/ports/mimxrt10xx/boards/imxrt1015_evk/pins.c +++ b/ports/mimxrt10xx/boards/imxrt1015_evk/pins.c @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/mimxrt10xx/boards/imxrt1020_evk/board.c b/ports/mimxrt10xx/boards/imxrt1020_evk/board.c index 540e416525eb..b418516f72f2 100644 --- a/ports/mimxrt10xx/boards/imxrt1020_evk/board.c +++ b/ports/mimxrt10xx/boards/imxrt1020_evk/board.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/mimxrt10xx/boards/imxrt1020_evk/mpconfigboard.h b/ports/mimxrt10xx/boards/imxrt1020_evk/mpconfigboard.h index a40df100e3eb..cebe7ef0ac22 100644 --- a/ports/mimxrt10xx/boards/imxrt1020_evk/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/imxrt1020_evk/mpconfigboard.h @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "iMX RT 1020 EVK" #define MICROPY_HW_MCU_NAME "IMXRT1021DAG5A" diff --git a/ports/mimxrt10xx/boards/imxrt1020_evk/pins.c b/ports/mimxrt10xx/boards/imxrt1020_evk/pins.c index d93a7de9f2dd..e69540c254cd 100644 --- a/ports/mimxrt10xx/boards/imxrt1020_evk/pins.c +++ b/ports/mimxrt10xx/boards/imxrt1020_evk/pins.c @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/mimxrt10xx/boards/imxrt1040_evk/board.c b/ports/mimxrt10xx/boards/imxrt1040_evk/board.c index 6ab54be8a6c3..8e71e81975ce 100644 --- a/ports/mimxrt10xx/boards/imxrt1040_evk/board.c +++ b/ports/mimxrt10xx/boards/imxrt1040_evk/board.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/mimxrt10xx/boards/imxrt1040_evk/mpconfigboard.h b/ports/mimxrt10xx/boards/imxrt1040_evk/mpconfigboard.h index dd1cf9f75940..cd1a83ea8399 100644 --- a/ports/mimxrt10xx/boards/imxrt1040_evk/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/imxrt1040_evk/mpconfigboard.h @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "iMX RT 1040 EVK" #define MICROPY_HW_MCU_NAME "IMXRT1042XJM5B" diff --git a/ports/mimxrt10xx/boards/imxrt1040_evk/pins.c b/ports/mimxrt10xx/boards/imxrt1040_evk/pins.c index 4cabdddc551f..3c5a3549c9df 100644 --- a/ports/mimxrt10xx/boards/imxrt1040_evk/pins.c +++ b/ports/mimxrt10xx/boards/imxrt1040_evk/pins.c @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/mimxrt10xx/boards/imxrt1050_evkb/board.c b/ports/mimxrt10xx/boards/imxrt1050_evkb/board.c index 6e31888c5371..4059aa4a926f 100644 --- a/ports/mimxrt10xx/boards/imxrt1050_evkb/board.c +++ b/ports/mimxrt10xx/boards/imxrt1050_evkb/board.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/mimxrt10xx/boards/imxrt1050_evkb/mpconfigboard.h b/ports/mimxrt10xx/boards/imxrt1050_evkb/mpconfigboard.h index 44e1dfaf12e2..c8669e74fa3c 100644 --- a/ports/mimxrt10xx/boards/imxrt1050_evkb/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/imxrt1050_evkb/mpconfigboard.h @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "iMX RT 1050 EVKB" #define MICROPY_HW_MCU_NAME "IMXRT1052DVL6B" diff --git a/ports/mimxrt10xx/boards/imxrt1050_evkb/pins.c b/ports/mimxrt10xx/boards/imxrt1050_evkb/pins.c index a162463b28ad..16c5fbc0c3e1 100644 --- a/ports/mimxrt10xx/boards/imxrt1050_evkb/pins.c +++ b/ports/mimxrt10xx/boards/imxrt1050_evkb/pins.c @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/mimxrt10xx/boards/imxrt1060_evk/board.c b/ports/mimxrt10xx/boards/imxrt1060_evk/board.c index 12278acabb6a..053133d700ff 100644 --- a/ports/mimxrt10xx/boards/imxrt1060_evk/board.c +++ b/ports/mimxrt10xx/boards/imxrt1060_evk/board.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/mimxrt10xx/boards/imxrt1060_evk/mpconfigboard.h b/ports/mimxrt10xx/boards/imxrt1060_evk/mpconfigboard.h index 23058e695219..70434e12c764 100644 --- a/ports/mimxrt10xx/boards/imxrt1060_evk/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/imxrt1060_evk/mpconfigboard.h @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "iMX RT 1060 EVK" #define MICROPY_HW_MCU_NAME "IMXRT1062DVJ6A" diff --git a/ports/mimxrt10xx/boards/imxrt1060_evk/pins.c b/ports/mimxrt10xx/boards/imxrt1060_evk/pins.c index 2f38931573a1..73e743733721 100644 --- a/ports/mimxrt10xx/boards/imxrt1060_evk/pins.c +++ b/ports/mimxrt10xx/boards/imxrt1060_evk/pins.c @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/mimxrt10xx/boards/imxrt1060_evkb/board.c b/ports/mimxrt10xx/boards/imxrt1060_evkb/board.c index 26dd28cbb40f..c41bddf58a86 100644 --- a/ports/mimxrt10xx/boards/imxrt1060_evkb/board.c +++ b/ports/mimxrt10xx/boards/imxrt1060_evkb/board.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/mimxrt10xx/boards/imxrt1060_evkb/mpconfigboard.h b/ports/mimxrt10xx/boards/imxrt1060_evkb/mpconfigboard.h index 8f439080cba6..d73dd243491c 100644 --- a/ports/mimxrt10xx/boards/imxrt1060_evkb/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/imxrt1060_evkb/mpconfigboard.h @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "iMX RT 1060 EVKB" #define MICROPY_HW_MCU_NAME "IMXRT1062DVJ6A" diff --git a/ports/mimxrt10xx/boards/imxrt1060_evkb/pins.c b/ports/mimxrt10xx/boards/imxrt1060_evkb/pins.c index f19b24db3700..4ac2ea98e983 100644 --- a/ports/mimxrt10xx/boards/imxrt1060_evkb/pins.c +++ b/ports/mimxrt10xx/boards/imxrt1060_evkb/pins.c @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/mimxrt10xx/boards/metro_m7_1011/board.c b/ports/mimxrt10xx/boards/metro_m7_1011/board.c index 62be2303a5f6..db4fd1d502ab 100644 --- a/ports/mimxrt10xx/boards/metro_m7_1011/board.c +++ b/ports/mimxrt10xx/boards/metro_m7_1011/board.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/mimxrt10xx/boards/metro_m7_1011/mpconfigboard.h b/ports/mimxrt10xx/boards/metro_m7_1011/mpconfigboard.h index 589b2a2b6528..dd18b11f35d6 100644 --- a/ports/mimxrt10xx/boards/metro_m7_1011/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/metro_m7_1011/mpconfigboard.h @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Metro MIMXRT1011" #define MICROPY_HW_MCU_NAME "IMXRT1011DAE5A" diff --git a/ports/mimxrt10xx/boards/metro_m7_1011/pins.c b/ports/mimxrt10xx/boards/metro_m7_1011/pins.c index d3b29089cbfc..b14c23f37f1f 100644 --- a/ports/mimxrt10xx/boards/metro_m7_1011/pins.c +++ b/ports/mimxrt10xx/boards/metro_m7_1011/pins.c @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/mimxrt10xx/boards/sparkfun_teensy_micromod/board.c b/ports/mimxrt10xx/boards/sparkfun_teensy_micromod/board.c index 61da1e3f7a7c..6c930736deff 100644 --- a/ports/mimxrt10xx/boards/sparkfun_teensy_micromod/board.c +++ b/ports/mimxrt10xx/boards/sparkfun_teensy_micromod/board.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/mimxrt10xx/boards/sparkfun_teensy_micromod/mpconfigboard.h b/ports/mimxrt10xx/boards/sparkfun_teensy_micromod/mpconfigboard.h index e768578b036a..5fc2889a066f 100644 --- a/ports/mimxrt10xx/boards/sparkfun_teensy_micromod/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/sparkfun_teensy_micromod/mpconfigboard.h @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "SparkFun Teensy MicroMod Processor" #define MICROPY_HW_MCU_NAME "IMXRT1062DVL6A" diff --git a/ports/mimxrt10xx/boards/sparkfun_teensy_micromod/pins.c b/ports/mimxrt10xx/boards/sparkfun_teensy_micromod/pins.c index a81414aed222..c70501b35de4 100644 --- a/ports/mimxrt10xx/boards/sparkfun_teensy_micromod/pins.c +++ b/ports/mimxrt10xx/boards/sparkfun_teensy_micromod/pins.c @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/mimxrt10xx/boards/teensy40/board.c b/ports/mimxrt10xx/boards/teensy40/board.c index 8ece1546d7e8..c4b587d53add 100644 --- a/ports/mimxrt10xx/boards/teensy40/board.c +++ b/ports/mimxrt10xx/boards/teensy40/board.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/mimxrt10xx/boards/teensy40/mpconfigboard.h b/ports/mimxrt10xx/boards/teensy40/mpconfigboard.h index 718d9b967391..4d89446dfd0c 100644 --- a/ports/mimxrt10xx/boards/teensy40/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/teensy40/mpconfigboard.h @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Teensy 4.0" #define MICROPY_HW_MCU_NAME "IMXRT1062DVJ6A" diff --git a/ports/mimxrt10xx/boards/teensy40/pins.c b/ports/mimxrt10xx/boards/teensy40/pins.c index 263603dcf3e5..820eee5d2781 100644 --- a/ports/mimxrt10xx/boards/teensy40/pins.c +++ b/ports/mimxrt10xx/boards/teensy40/pins.c @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/mimxrt10xx/boards/teensy41/board.c b/ports/mimxrt10xx/boards/teensy41/board.c index f5a27b74021f..9a8a814c3d0d 100644 --- a/ports/mimxrt10xx/boards/teensy41/board.c +++ b/ports/mimxrt10xx/boards/teensy41/board.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/mimxrt10xx/boards/teensy41/mpconfigboard.h b/ports/mimxrt10xx/boards/teensy41/mpconfigboard.h index 4ba34692c650..c0b807321d9e 100644 --- a/ports/mimxrt10xx/boards/teensy41/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/teensy41/mpconfigboard.h @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Teensy 4.1" #define MICROPY_HW_MCU_NAME "IMXRT1062DVJ6A" diff --git a/ports/mimxrt10xx/boards/teensy41/pins.c b/ports/mimxrt10xx/boards/teensy41/pins.c index 716772e27c34..b42e44d6e537 100644 --- a/ports/mimxrt10xx/boards/teensy41/pins.c +++ b/ports/mimxrt10xx/boards/teensy41/pins.c @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/mimxrt10xx/common-hal/analogio/AnalogIn.c b/ports/mimxrt10xx/common-hal/analogio/AnalogIn.c index 237566b1f017..3bd2b52dc980 100644 --- a/ports/mimxrt10xx/common-hal/analogio/AnalogIn.c +++ b/ports/mimxrt10xx/common-hal/analogio/AnalogIn.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "common-hal/analogio/AnalogIn.h" #include "shared-bindings/analogio/AnalogIn.h" diff --git a/ports/mimxrt10xx/common-hal/analogio/AnalogIn.h b/ports/mimxrt10xx/common-hal/analogio/AnalogIn.h index c252ab553554..0fef51e20d3c 100644 --- a/ports/mimxrt10xx/common-hal/analogio/AnalogIn.h +++ b/ports/mimxrt10xx/common-hal/analogio/AnalogIn.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_MIMXRT10XX_COMMON_HAL_ANALOGIO_ANALOGIN_H #define MICROPY_INCLUDED_MIMXRT10XX_COMMON_HAL_ANALOGIO_ANALOGIN_H diff --git a/ports/mimxrt10xx/common-hal/analogio/AnalogOut.c b/ports/mimxrt10xx/common-hal/analogio/AnalogOut.c index 616ca187b9e0..98c8a20dd7a4 100644 --- a/ports/mimxrt10xx/common-hal/analogio/AnalogOut.c +++ b/ports/mimxrt10xx/common-hal/analogio/AnalogOut.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" diff --git a/ports/mimxrt10xx/common-hal/analogio/AnalogOut.h b/ports/mimxrt10xx/common-hal/analogio/AnalogOut.h index 133cce8fb5b3..a57467bc2275 100644 --- a/ports/mimxrt10xx/common-hal/analogio/AnalogOut.h +++ b/ports/mimxrt10xx/common-hal/analogio/AnalogOut.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_MIMXRT10XX_COMMON_HAL_ANALOGIO_ANALOGOUT_H #define MICROPY_INCLUDED_MIMXRT10XX_COMMON_HAL_ANALOGIO_ANALOGOUT_H diff --git a/ports/mimxrt10xx/common-hal/analogio/__init__.c b/ports/mimxrt10xx/common-hal/analogio/__init__.c index eea58c77d631..d9027d63ec8b 100644 --- a/ports/mimxrt10xx/common-hal/analogio/__init__.c +++ b/ports/mimxrt10xx/common-hal/analogio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No analogio module functions. diff --git a/ports/mimxrt10xx/common-hal/audiobusio/I2SOut.c b/ports/mimxrt10xx/common-hal/audiobusio/I2SOut.c index 8c59922cc9ba..fdd66f03ef66 100644 --- a/ports/mimxrt10xx/common-hal/audiobusio/I2SOut.c +++ b/ports/mimxrt10xx/common-hal/audiobusio/I2SOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/mimxrt10xx/common-hal/audiobusio/I2SOut.h b/ports/mimxrt10xx/common-hal/audiobusio/I2SOut.h index 3a2ed49b9adf..39f1d9aed589 100644 --- a/ports/mimxrt10xx/common-hal/audiobusio/I2SOut.h +++ b/ports/mimxrt10xx/common-hal/audiobusio/I2SOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/mimxrt10xx/common-hal/audiobusio/PDMIn.c b/ports/mimxrt10xx/common-hal/audiobusio/PDMIn.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/mimxrt10xx/common-hal/audiobusio/PDMIn.c +++ b/ports/mimxrt10xx/common-hal/audiobusio/PDMIn.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/mimxrt10xx/common-hal/audiobusio/PDMIn.h b/ports/mimxrt10xx/common-hal/audiobusio/PDMIn.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/mimxrt10xx/common-hal/audiobusio/PDMIn.h +++ b/ports/mimxrt10xx/common-hal/audiobusio/PDMIn.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/mimxrt10xx/common-hal/audiobusio/__init__.c b/ports/mimxrt10xx/common-hal/audiobusio/__init__.c index 7bf54778abc7..fcedf34ef72e 100644 --- a/ports/mimxrt10xx/common-hal/audiobusio/__init__.c +++ b/ports/mimxrt10xx/common-hal/audiobusio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/mimxrt10xx/common-hal/audiobusio/__init__.h b/ports/mimxrt10xx/common-hal/audiobusio/__init__.h index f0663e289740..00d016b77b43 100644 --- a/ports/mimxrt10xx/common-hal/audiobusio/__init__.h +++ b/ports/mimxrt10xx/common-hal/audiobusio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/mimxrt10xx/common-hal/audiopwmio/PWMAudioOut.c b/ports/mimxrt10xx/common-hal/audiopwmio/PWMAudioOut.c index 11c2b8e87ed2..ca2188132d6e 100644 --- a/ports/mimxrt10xx/common-hal/audiopwmio/PWMAudioOut.c +++ b/ports/mimxrt10xx/common-hal/audiopwmio/PWMAudioOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/mimxrt10xx/common-hal/audiopwmio/PWMAudioOut.h b/ports/mimxrt10xx/common-hal/audiopwmio/PWMAudioOut.h index 462aa832a0b4..b7b8c7fc9fff 100644 --- a/ports/mimxrt10xx/common-hal/audiopwmio/PWMAudioOut.h +++ b/ports/mimxrt10xx/common-hal/audiopwmio/PWMAudioOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/mimxrt10xx/common-hal/audiopwmio/__init__.c b/ports/mimxrt10xx/common-hal/audiopwmio/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/mimxrt10xx/common-hal/audiopwmio/__init__.c +++ b/ports/mimxrt10xx/common-hal/audiopwmio/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/mimxrt10xx/common-hal/audiopwmio/__init__.h b/ports/mimxrt10xx/common-hal/audiopwmio/__init__.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/mimxrt10xx/common-hal/audiopwmio/__init__.h +++ b/ports/mimxrt10xx/common-hal/audiopwmio/__init__.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/mimxrt10xx/common-hal/board/__init__.c b/ports/mimxrt10xx/common-hal/board/__init__.c index 4967e1a76ab6..499f8cb6aacd 100644 --- a/ports/mimxrt10xx/common-hal/board/__init__.c +++ b/ports/mimxrt10xx/common-hal/board/__init__.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/mimxrt10xx/common-hal/busio/I2C.c b/ports/mimxrt10xx/common-hal/busio/I2C.c index 3c7b4f6b2837..b95002b785c3 100644 --- a/ports/mimxrt10xx/common-hal/busio/I2C.c +++ b/ports/mimxrt10xx/common-hal/busio/I2C.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/mimxrt10xx/common-hal/busio/I2C.h b/ports/mimxrt10xx/common-hal/busio/I2C.h index 63946dd130e7..06b86cd2d340 100644 --- a/ports/mimxrt10xx/common-hal/busio/I2C.h +++ b/ports/mimxrt10xx/common-hal/busio/I2C.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/mimxrt10xx/common-hal/busio/SPI.c b/ports/mimxrt10xx/common-hal/busio/SPI.c index b858f05c6fcb..6318a14cb1a9 100644 --- a/ports/mimxrt10xx/common-hal/busio/SPI.c +++ b/ports/mimxrt10xx/common-hal/busio/SPI.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "shared-bindings/microcontroller/Pin.h" #include "shared-bindings/microcontroller/__init__.h" diff --git a/ports/mimxrt10xx/common-hal/busio/SPI.h b/ports/mimxrt10xx/common-hal/busio/SPI.h index a5f82734b6d4..67801078261c 100644 --- a/ports/mimxrt10xx/common-hal/busio/SPI.h +++ b/ports/mimxrt10xx/common-hal/busio/SPI.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/mimxrt10xx/common-hal/busio/UART.c b/ports/mimxrt10xx/common-hal/busio/UART.c index 1a78b0ad47f7..752b7a4ffc06 100644 --- a/ports/mimxrt10xx/common-hal/busio/UART.c +++ b/ports/mimxrt10xx/common-hal/busio/UART.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2016 Damien P. George - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Damien P. George +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "shared-bindings/microcontroller/Pin.h" #include "shared-bindings/microcontroller/__init__.h" diff --git a/ports/mimxrt10xx/common-hal/busio/UART.h b/ports/mimxrt10xx/common-hal/busio/UART.h index c923ec4c3f0f..24da7899f496 100644 --- a/ports/mimxrt10xx/common-hal/busio/UART.h +++ b/ports/mimxrt10xx/common-hal/busio/UART.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/mimxrt10xx/common-hal/busio/__init__.c b/ports/mimxrt10xx/common-hal/busio/__init__.c index 41761b6743ae..b726684324a3 100644 --- a/ports/mimxrt10xx/common-hal/busio/__init__.c +++ b/ports/mimxrt10xx/common-hal/busio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No busio module functions. diff --git a/ports/mimxrt10xx/common-hal/digitalio/DigitalInOut.c b/ports/mimxrt10xx/common-hal/digitalio/DigitalInOut.c index b15846205d88..48671f3fea92 100644 --- a/ports/mimxrt10xx/common-hal/digitalio/DigitalInOut.c +++ b/ports/mimxrt10xx/common-hal/digitalio/DigitalInOut.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/mimxrt10xx/common-hal/digitalio/DigitalInOut.h b/ports/mimxrt10xx/common-hal/digitalio/DigitalInOut.h index efdda9637fbc..9911a9a776c6 100644 --- a/ports/mimxrt10xx/common-hal/digitalio/DigitalInOut.h +++ b/ports/mimxrt10xx/common-hal/digitalio/DigitalInOut.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/mimxrt10xx/common-hal/digitalio/__init__.c b/ports/mimxrt10xx/common-hal/digitalio/__init__.c index 20fad459593a..fa222ed01f03 100644 --- a/ports/mimxrt10xx/common-hal/digitalio/__init__.c +++ b/ports/mimxrt10xx/common-hal/digitalio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No digitalio module functions. diff --git a/ports/mimxrt10xx/common-hal/microcontroller/Pin.c b/ports/mimxrt10xx/common-hal/microcontroller/Pin.c index 1318dd521ece..9474258f06e4 100644 --- a/ports/mimxrt10xx/common-hal/microcontroller/Pin.c +++ b/ports/mimxrt10xx/common-hal/microcontroller/Pin.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" #include "shared-bindings/microcontroller/Pin.h" #include "shared-bindings/microcontroller/__init__.h" diff --git a/ports/mimxrt10xx/common-hal/microcontroller/Pin.h b/ports/mimxrt10xx/common-hal/microcontroller/Pin.h index 4c66dd4ea50d..c40a4dc2a68f 100644 --- a/ports/mimxrt10xx/common-hal/microcontroller/Pin.h +++ b/ports/mimxrt10xx/common-hal/microcontroller/Pin.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/mimxrt10xx/common-hal/microcontroller/Processor.c b/ports/mimxrt10xx/common-hal/microcontroller/Processor.c index e7e9f2d42bab..23e854953d6e 100644 --- a/ports/mimxrt10xx/common-hal/microcontroller/Processor.c +++ b/ports/mimxrt10xx/common-hal/microcontroller/Processor.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Dan Halbert for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/mimxrt10xx/common-hal/microcontroller/Processor.h b/ports/mimxrt10xx/common-hal/microcontroller/Processor.h index 2f7ff88697fc..843dfec3508b 100644 --- a/ports/mimxrt10xx/common-hal/microcontroller/Processor.h +++ b/ports/mimxrt10xx/common-hal/microcontroller/Processor.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Dan Halbert for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_MIMXRT10XX_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H #define MICROPY_INCLUDED_MIMXRT10XX_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H diff --git a/ports/mimxrt10xx/common-hal/microcontroller/__init__.c b/ports/mimxrt10xx/common-hal/microcontroller/__init__.c index 98fda797e9d9..3ab7e61265ae 100644 --- a/ports/mimxrt10xx/common-hal/microcontroller/__init__.c +++ b/ports/mimxrt10xx/common-hal/microcontroller/__init__.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT // TODO #include "py/mphal.h" #include "py/obj.h" diff --git a/ports/mimxrt10xx/common-hal/neopixel_write/__init__.c b/ports/mimxrt10xx/common-hal/neopixel_write/__init__.c index a26c34ce3247..e2299bd92d77 100644 --- a/ports/mimxrt10xx/common-hal/neopixel_write/__init__.c +++ b/ports/mimxrt10xx/common-hal/neopixel_write/__init__.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2020 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2020 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "shared-bindings/neopixel_write/__init__.h" diff --git a/ports/mimxrt10xx/common-hal/os/__init__.c b/ports/mimxrt10xx/common-hal/os/__init__.c index 899541bb2184..36c8c15024f5 100644 --- a/ports/mimxrt10xx/common-hal/os/__init__.c +++ b/ports/mimxrt10xx/common-hal/os/__init__.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "genhdr/mpversion.h" #include "py/mpconfig.h" diff --git a/ports/mimxrt10xx/common-hal/pwmio/PWMOut.c b/ports/mimxrt10xx/common-hal/pwmio/PWMOut.c index c72e4fe7c7c9..1bcd6da4dccf 100644 --- a/ports/mimxrt10xx/common-hal/pwmio/PWMOut.c +++ b/ports/mimxrt10xx/common-hal/pwmio/PWMOut.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * SPDX-FileCopyrightText: Copyright (c) 2016 Damien P. George - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2016 Damien P. George +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/mimxrt10xx/common-hal/pwmio/PWMOut.h b/ports/mimxrt10xx/common-hal/pwmio/PWMOut.h index ec7cda52ad56..b55f1b5d20da 100644 --- a/ports/mimxrt10xx/common-hal/pwmio/PWMOut.h +++ b/ports/mimxrt10xx/common-hal/pwmio/PWMOut.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/mimxrt10xx/common-hal/pwmio/__init__.c b/ports/mimxrt10xx/common-hal/pwmio/__init__.c index 9e551a1072b3..b43cd8b1b396 100644 --- a/ports/mimxrt10xx/common-hal/pwmio/__init__.c +++ b/ports/mimxrt10xx/common-hal/pwmio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No pwmio module functions. diff --git a/ports/mimxrt10xx/common-hal/rotaryio/IncrementalEncoder.c b/ports/mimxrt10xx/common-hal/rotaryio/IncrementalEncoder.c index 043b791b4d9a..c71f8b212e18 100644 --- a/ports/mimxrt10xx/common-hal/rotaryio/IncrementalEncoder.c +++ b/ports/mimxrt10xx/common-hal/rotaryio/IncrementalEncoder.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Nick Moore for Adafruit Industries - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Nick Moore for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "common-hal/digitalio/DigitalInOut.h" #include "common-hal/rotaryio/IncrementalEncoder.h" diff --git a/ports/mimxrt10xx/common-hal/rotaryio/IncrementalEncoder.h b/ports/mimxrt10xx/common-hal/rotaryio/IncrementalEncoder.h index 920b32cba96c..e59ca039390d 100644 --- a/ports/mimxrt10xx/common-hal/rotaryio/IncrementalEncoder.h +++ b/ports/mimxrt10xx/common-hal/rotaryio/IncrementalEncoder.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/mimxrt10xx/common-hal/rotaryio/__init__.c b/ports/mimxrt10xx/common-hal/rotaryio/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/mimxrt10xx/common-hal/rotaryio/__init__.c +++ b/ports/mimxrt10xx/common-hal/rotaryio/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/mimxrt10xx/common-hal/rotaryio/__init__.h b/ports/mimxrt10xx/common-hal/rotaryio/__init__.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/mimxrt10xx/common-hal/rotaryio/__init__.h +++ b/ports/mimxrt10xx/common-hal/rotaryio/__init__.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/mimxrt10xx/common-hal/rtc/RTC.c b/ports/mimxrt10xx/common-hal/rtc/RTC.c index 4d523c564db0..5564c0d5ecc4 100644 --- a/ports/mimxrt10xx/common-hal/rtc/RTC.c +++ b/ports/mimxrt10xx/common-hal/rtc/RTC.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Nick Moore for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Nick Moore for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/mimxrt10xx/common-hal/rtc/RTC.h b/ports/mimxrt10xx/common-hal/rtc/RTC.h index 4965356c5017..9dcf86ab66e8 100644 --- a/ports/mimxrt10xx/common-hal/rtc/RTC.h +++ b/ports/mimxrt10xx/common-hal/rtc/RTC.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Noralf Trønnes - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Noralf Trønnes +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_MIMXRT10XX_COMMON_HAL_RTC_RTC_H #define MICROPY_INCLUDED_MIMXRT10XX_COMMON_HAL_RTC_RTC_H diff --git a/ports/mimxrt10xx/common-hal/rtc/__init__.c b/ports/mimxrt10xx/common-hal/rtc/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/mimxrt10xx/common-hal/rtc/__init__.c +++ b/ports/mimxrt10xx/common-hal/rtc/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/mimxrt10xx/common-hal/usb_host/Port.c b/ports/mimxrt10xx/common-hal/usb_host/Port.c index c1307928f017..31af4ed58233 100644 --- a/ports/mimxrt10xx/common-hal/usb_host/Port.c +++ b/ports/mimxrt10xx/common-hal/usb_host/Port.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/microcontroller/Pin.h" #include "shared-bindings/usb_host/Port.h" diff --git a/ports/mimxrt10xx/common-hal/usb_host/Port.h b/ports/mimxrt10xx/common-hal/usb_host/Port.h index 59f7735439a6..d40b99c0b867 100644 --- a/ports/mimxrt10xx/common-hal/usb_host/Port.h +++ b/ports/mimxrt10xx/common-hal/usb_host/Port.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_MIMXRT10XX_COMMON_HAL_USB_HOST_PORT_H #define MICROPY_INCLUDED_MIMXRT10XX_COMMON_HAL_USB_HOST_PORT_H diff --git a/ports/mimxrt10xx/common-hal/usb_host/__init__.c b/ports/mimxrt10xx/common-hal/usb_host/__init__.c index 3b54bd6a5d7e..c3cdbae38c48 100644 --- a/ports/mimxrt10xx/common-hal/usb_host/__init__.c +++ b/ports/mimxrt10xx/common-hal/usb_host/__init__.c @@ -1,27 +1,7 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Nothing diff --git a/ports/mimxrt10xx/imx_usb.h b/ports/mimxrt10xx/imx_usb.h index 7ae7df846148..97c41deb5e8f 100644 --- a/ports/mimxrt10xx/imx_usb.h +++ b/ports/mimxrt10xx/imx_usb.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/mimxrt10xx/mpconfigport.h b/ports/mimxrt10xx/mpconfigport.h index eedfaaec15ef..9770042ea4f5 100644 --- a/ports/mimxrt10xx/mpconfigport.h +++ b/ports/mimxrt10xx/mpconfigport.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef __INCLUDED_MPCONFIGPORT_H #define __INCLUDED_MPCONFIGPORT_H diff --git a/ports/mimxrt10xx/mphalport.c b/ports/mimxrt10xx/mphalport.c index f160cf1365f7..f7d43a808246 100644 --- a/ports/mimxrt10xx/mphalport.c +++ b/ports/mimxrt10xx/mphalport.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "py/mphal.h" #include "py/mpstate.h" diff --git a/ports/mimxrt10xx/mphalport.h b/ports/mimxrt10xx/mphalport.h index a67e58e3369c..9d6a9df38526 100644 --- a/ports/mimxrt10xx/mphalport.h +++ b/ports/mimxrt10xx/mphalport.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_MIMXRT10XX_MPHALPORT_H #define MICROPY_INCLUDED_MIMXRT10XX_MPHALPORT_H diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/clocks.c b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/clocks.c index 9d54839e284b..2b1e2736b206 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/clocks.c +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/clocks.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT /* * Copyright 2019 NXP * All rights reserved. diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/periph.c b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/periph.c index 8a2e95b1949d..df25ca6aa623 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/periph.c +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/periph.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/periph.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/periph.h index b854ebe585c3..c5405c7128f0 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/periph.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/periph.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/pin_names.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/pin_names.h index b197256a365f..9a635af1f58d 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/pin_names.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/pin_names.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // define FORMAT_PIN(pin_name) and then include this file. diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/pins.c b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/pins.c index ac45fbb83305..ccafe3cdfbff 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/pins.c +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/pins.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/pins.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/pins.h index 2b63b84ecbd8..1f894b56d3ac 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/pins.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/pins.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/clocks.c b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/clocks.c index e5aef56552e9..67e530291538 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/clocks.c +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/clocks.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT /* * Copyright 2019 NXP * All rights reserved. diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/periph.c b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/periph.c index 669109a858a1..ce4cb8838a69 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/periph.c +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/periph.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/periph.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/periph.h index 51295b896594..1ef2c3dce25e 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/periph.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/periph.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/pin_names.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/pin_names.h index 0416e2ee651c..aeb46d38a329 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/pin_names.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/pin_names.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // define FORMAT_PIN(pin_name) and then include this file. diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/pins.c b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/pins.c index ab9d9765b162..eae995163533 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/pins.c +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/pins.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/pins.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/pins.h index 9c66fc82f339..7938efc77d8f 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/pins.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/pins.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/clocks.c b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/clocks.c index 6ee8d0c157e1..5f46c37d8b0e 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/clocks.c +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/clocks.c @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2020 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft +// +// SPDX-License-Identifier: MIT /* * Copyright 2019 NXP * All rights reserved. diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/periph.c b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/periph.c index 13a1ab41b2c0..6f3cc498e806 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/periph.c +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/periph.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/periph.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/periph.h index bb90c2425016..05dff4a552db 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/periph.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/periph.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/pin_names.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/pin_names.h index 1f159afe53a8..81f7208f8707 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/pin_names.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/pin_names.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // define FORMAT_PIN(pin_name) and then include this file. diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/pins.c b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/pins.c index f76da7a29e1a..ebc1efdeed7a 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/pins.c +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/pins.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/pins.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/pins.h index 5d4f992e8949..32be786cd3f9 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/pins.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/pins.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/clocks.c b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/clocks.c index d4a73248ac8e..dc9fc8416a76 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/clocks.c +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/clocks.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT /* * Copyright 2019 NXP * All rights reserved. diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/periph.c b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/periph.c index 506e9b6fe653..f406e35406f7 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/periph.c +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/periph.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/periph.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/periph.h index ef65ad582a89..32982ea40517 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/periph.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/periph.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/pin_names.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/pin_names.h index 05b3110bf374..330d302f87a7 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/pin_names.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/pin_names.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // define FORMAT_PIN(pin_name) and then include this file. diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/pins.c b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/pins.c index 6033d199e4ab..162ca0e8a7d5 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/pins.c +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/pins.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/pins.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/pins.h index c62c0ecaa01d..6dae894a2e86 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/pins.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/pins.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/clocks.c b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/clocks.c index 31639a57031d..cce3fec885d9 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/clocks.c +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/clocks.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT /* * Copyright 2019 NXP * All rights reserved. diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/periph.c b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/periph.c index de0bf6612912..7a44dfd20e99 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/periph.c +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/periph.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/periph.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/periph.h index 31c8c7b7f7a3..b8e0dd353869 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/periph.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/periph.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/pin_names.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/pin_names.h index 4b9df709cf44..139c03040965 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/pin_names.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/pin_names.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // define FORMAT_PIN(pin_name) and then include this file. diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/pins.c b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/pins.c index 48d8a2a3d60e..ab95c4caa25f 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/pins.c +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/pins.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/pins.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/pins.h index e02f1208bdd7..fd81528cb1ed 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/pins.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/pins.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/clocks.c b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/clocks.c index 2f121240831d..9385c9cc4c71 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/clocks.c +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/clocks.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT /* * Copyright 2019 NXP * All rights reserved. diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/periph.c b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/periph.c index b995910dc121..4d5e909bede0 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/periph.c +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/periph.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/periph.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/periph.h index b6372646f680..ab1355ae55a5 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/periph.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/periph.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/pin_names.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/pin_names.h index 4b9df709cf44..139c03040965 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/pin_names.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/pin_names.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // define FORMAT_PIN(pin_name) and then include this file. diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/pins.c b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/pins.c index 7208ac418e1b..96a065cb8665 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/pins.c +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/pins.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/pins.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/pins.h index 135d9f9565a4..4bc4aba577ea 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/pins.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/pins.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/clocks.c b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/clocks.c index 33ea37c2bdbb..66f0c769a37d 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/clocks.c +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/clocks.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT /* * Copyright 2019 NXP * All rights reserved. diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/periph.c b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/periph.c index f5172a252a9a..5530e2558678 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/periph.c +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/periph.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/periph.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/periph.h index 63e6da95f60e..0fa8c346a0a5 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/periph.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/periph.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/pin_names.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/pin_names.h index 6dcd77a6a2a4..f184c36348a6 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/pin_names.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/pin_names.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // define FORMAT_PIN(pin_name) and then include this file. diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/pins.c b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/pins.c index e9241c07c7ee..16825bd8f6b9 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/pins.c +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/pins.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/pins.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/pins.h index 786b0a248ce1..07dfde2341d3 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/pins.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/pins.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT /* * This file is autogenerated! Do NOT hand edit it. Instead, edit tools/gen_peripherals_data.py and diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/clocks.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/clocks.h index 54f0e37b8fe6..0d012cc9035a 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/clocks.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/clocks.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT extern uint32_t SystemCoreClock; diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/periph.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/periph.h index ffbd72339ef4..b249bcd018e2 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/periph.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/periph.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_MIMXRT10XX_PERIPHERALS_PERIPH_H #define MICROPY_INCLUDED_MIMXRT10XX_PERIPHERALS_PERIPH_H diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/pin_names.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/pin_names.h index 37db5c2261b9..ffaa74edc388 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/pin_names.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/pin_names.h @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT // OK to include more than once because FORMAT_PIN may be different. diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/pins.c b/ports/mimxrt10xx/peripherals/mimxrt10xx/pins.c index d052711033c9..e4e9cc1ae3f0 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/pins.c +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + #include "peripherals/mimxrt10xx/pins.h" typedef struct { diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/pins.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/pins.h index 8ffc17ba074d..235d337cb54d 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/pins.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/pins.h @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT // DO NOT include this file directly. Use shared-bindings/microcontroller/Pin.h instead to ensure // that all necessary includes are already included. diff --git a/ports/mimxrt10xx/qstrdefsport.h b/ports/mimxrt10xx/qstrdefsport.h index 00d3e2ae3c55..b0f5566fabf2 100644 --- a/ports/mimxrt10xx/qstrdefsport.h +++ b/ports/mimxrt10xx/qstrdefsport.h @@ -1,2 +1,8 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // qstrs specific to this port // *FORMAT-OFF* diff --git a/ports/mimxrt10xx/reset.c b/ports/mimxrt10xx/reset.c index 3d9a0b071b92..906b1952c18f 100644 --- a/ports/mimxrt10xx/reset.c +++ b/ports/mimxrt10xx/reset.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "reset.h" #include "supervisor/filesystem.h" diff --git a/ports/mimxrt10xx/reset.h b/ports/mimxrt10xx/reset.h index 0d458a907d66..bfa02c324011 100644 --- a/ports/mimxrt10xx/reset.h +++ b/ports/mimxrt10xx/reset.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_MIMXRT10XX_RESET_H #define MICROPY_INCLUDED_MIMXRT10XX_RESET_H diff --git a/ports/mimxrt10xx/supervisor/internal_flash.c b/ports/mimxrt10xx/supervisor/internal_flash.c index cd4dd33ba022..824c6d646df8 100644 --- a/ports/mimxrt10xx/supervisor/internal_flash.c +++ b/ports/mimxrt10xx/supervisor/internal_flash.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "supervisor/flash.h" #include diff --git a/ports/mimxrt10xx/supervisor/internal_flash.h b/ports/mimxrt10xx/supervisor/internal_flash.h index c38e2bc4161b..aa05bb2765cd 100644 --- a/ports/mimxrt10xx/supervisor/internal_flash.h +++ b/ports/mimxrt10xx/supervisor/internal_flash.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_MIMXRT10XX_INTERNAL_FLASH_H #define MICROPY_INCLUDED_MIMXRT10XX_INTERNAL_FLASH_H diff --git a/ports/mimxrt10xx/supervisor/port.c b/ports/mimxrt10xx/supervisor/port.c index 7c7fec3a0013..fe7ee14a3b7a 100644 --- a/ports/mimxrt10xx/supervisor/port.c +++ b/ports/mimxrt10xx/supervisor/port.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2020 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2020 Artur Pacholec +// +// SPDX-License-Identifier: MIT /* * Copyright 2018 NXP * All rights reserved. diff --git a/ports/mimxrt10xx/supervisor/usb.c b/ports/mimxrt10xx/supervisor/usb.c index ab0bd15b5196..37139c800e06 100644 --- a/ports/mimxrt10xx/supervisor/usb.c +++ b/ports/mimxrt10xx/supervisor/usb.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017, 2018 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017, 2018 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "fsl_clock.h" #include "tusb.h" diff --git a/ports/mimxrt10xx/tools/gen_peripherals_data.py b/ports/mimxrt10xx/tools/gen_peripherals_data.py index 1062bfe91ccd..e255ed844a5e 100644 --- a/ports/mimxrt10xx/tools/gen_peripherals_data.py +++ b/ports/mimxrt10xx/tools/gen_peripherals_data.py @@ -31,33 +31,14 @@ peripherals_dir = pathlib.Path("peripherals/mimxrt10xx") -copyright = """/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Copyright (c) 2019 Artur Pacholec - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +copyright = """\ +// This file is part of the CircuitPython project, https://circuitpython.org/ +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT """ autogen_warning_template = """/* diff --git a/ports/nordic/Makefile b/ports/nordic/Makefile index ff7743796645..85acb9d8b4e0 100755 --- a/ports/nordic/Makefile +++ b/ports/nordic/Makefile @@ -1,26 +1,8 @@ -# This file is part of the MicroPython project, http://micropython.org/ -# -# The MIT License (MIT) +# This file is part of the CircuitPython project: https://circuitpython.org # # SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries # -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. +# SPDX-License-Identifier: MIT include ../../py/circuitpy_mkenv.mk diff --git a/ports/nordic/background.c b/ports/nordic/background.c index 40a349935d3b..9afade891369 100644 --- a/ports/nordic/background.c +++ b/ports/nordic/background.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "background.h" diff --git a/ports/nordic/background.h b/ports/nordic/background.h index 4fba46d03102..8cf6418f6e15 100644 --- a/ports/nordic/background.h +++ b/ports/nordic/background.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_BACKGROUND_H #define MICROPY_INCLUDED_NRF_BACKGROUND_H diff --git a/ports/nordic/bluetooth/ble_drv.c b/ports/nordic/bluetooth/ble_drv.c index ae8711ce8917..9c70c28d3169 100644 --- a/ports/nordic/bluetooth/ble_drv.c +++ b/ports/nordic/bluetooth/ble_drv.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/nordic/bluetooth/ble_drv.h b/ports/nordic/bluetooth/ble_drv.h index 798e70e1fb86..9c07cde1ac62 100644 --- a/ports/nordic/bluetooth/ble_drv.h +++ b/ports/nordic/bluetooth/ble_drv.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_BLUETOOTH_BLE_DRV_H #define MICROPY_INCLUDED_NRF_BLUETOOTH_BLE_DRV_H diff --git a/ports/nordic/boards/ADM_B_NRF52840_1/board.c b/ports/nordic/boards/ADM_B_NRF52840_1/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/ADM_B_NRF52840_1/board.c +++ b/ports/nordic/boards/ADM_B_NRF52840_1/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/ADM_B_NRF52840_1/mpconfigboard.h b/ports/nordic/boards/ADM_B_NRF52840_1/mpconfigboard.h index 575d09feb5a6..4e4f8a4ba9a2 100644 --- a/ports/nordic/boards/ADM_B_NRF52840_1/mpconfigboard.h +++ b/ports/nordic/boards/ADM_B_NRF52840_1/mpconfigboard.h @@ -1,29 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/ADM_B_NRF52840_1/pins.c b/ports/nordic/boards/ADM_B_NRF52840_1/pins.c index 6829bb9b59f3..5eeebc5fca20 100644 --- a/ports/nordic/boards/ADM_B_NRF52840_1/pins.c +++ b/ports/nordic/boards/ADM_B_NRF52840_1/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/Seeed_XIAO_nRF52840_Sense/board.c b/ports/nordic/boards/Seeed_XIAO_nRF52840_Sense/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/Seeed_XIAO_nRF52840_Sense/board.c +++ b/ports/nordic/boards/Seeed_XIAO_nRF52840_Sense/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/Seeed_XIAO_nRF52840_Sense/mpconfigboard.h b/ports/nordic/boards/Seeed_XIAO_nRF52840_Sense/mpconfigboard.h index dd6305e73cc6..27857a3b8f16 100644 --- a/ports/nordic/boards/Seeed_XIAO_nRF52840_Sense/mpconfigboard.h +++ b/ports/nordic/boards/Seeed_XIAO_nRF52840_Sense/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/Seeed_XIAO_nRF52840_Sense/pins.c b/ports/nordic/boards/Seeed_XIAO_nRF52840_Sense/pins.c index 3d41fda40e8f..2e54074179c4 100644 --- a/ports/nordic/boards/Seeed_XIAO_nRF52840_Sense/pins.c +++ b/ports/nordic/boards/Seeed_XIAO_nRF52840_Sense/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/TG-Watch/board.c b/ports/nordic/boards/TG-Watch/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/TG-Watch/board.c +++ b/ports/nordic/boards/TG-Watch/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/TG-Watch/mpconfigboard.h b/ports/nordic/boards/TG-Watch/mpconfigboard.h index 1377c921ee5a..7bd35c8413b0 100644 --- a/ports/nordic/boards/TG-Watch/mpconfigboard.h +++ b/ports/nordic/boards/TG-Watch/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/TG-Watch/pins.c b/ports/nordic/boards/TG-Watch/pins.c index 0b2fe07aaa9a..674abbfa02b8 100644 --- a/ports/nordic/boards/TG-Watch/pins.c +++ b/ports/nordic/boards/TG-Watch/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/adafruit_led_glasses_nrf52840/board.c b/ports/nordic/boards/adafruit_led_glasses_nrf52840/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/adafruit_led_glasses_nrf52840/board.c +++ b/ports/nordic/boards/adafruit_led_glasses_nrf52840/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/adafruit_led_glasses_nrf52840/mpconfigboard.h b/ports/nordic/boards/adafruit_led_glasses_nrf52840/mpconfigboard.h index e82d6ceed936..6a2f3fa16f75 100644 --- a/ports/nordic/boards/adafruit_led_glasses_nrf52840/mpconfigboard.h +++ b/ports/nordic/boards/adafruit_led_glasses_nrf52840/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "Adafruit LED Glasses Driver nRF52840" diff --git a/ports/nordic/boards/adafruit_led_glasses_nrf52840/pins.c b/ports/nordic/boards/adafruit_led_glasses_nrf52840/pins.c index a53b1359c1a0..a88eafe2042e 100644 --- a/ports/nordic/boards/adafruit_led_glasses_nrf52840/pins.c +++ b/ports/nordic/boards/adafruit_led_glasses_nrf52840/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/aramcon2_badge/board.c b/ports/nordic/boards/aramcon2_badge/board.c index f8424734fbfb..7030ea91375f 100644 --- a/ports/nordic/boards/aramcon2_badge/board.c +++ b/ports/nordic/boards/aramcon2_badge/board.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Uri Shaked - * Copyright (c) 2021 Benjamin Meisels - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Uri Shaked +// SPDX-FileCopyrightText: Copyright (c) 2021 Benjamin Meisels +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/aramcon2_badge/mpconfigboard.h b/ports/nordic/boards/aramcon2_badge/mpconfigboard.h index c1fa1e74df96..93576900c89e 100644 --- a/ports/nordic/boards/aramcon2_badge/mpconfigboard.h +++ b/ports/nordic/boards/aramcon2_badge/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Uri Shaked - * Copyright (c) 2021 Benjamin Meisels - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Uri Shaked +// SPDX-FileCopyrightText: Copyright (c) 2021 Benjamin Meisels +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "ARAMCON2 Badge" diff --git a/ports/nordic/boards/aramcon2_badge/pins.c b/ports/nordic/boards/aramcon2_badge/pins.c index 43d2f7f1c61e..7013d7587916 100644 --- a/ports/nordic/boards/aramcon2_badge/pins.c +++ b/ports/nordic/boards/aramcon2_badge/pins.c @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Uri Shaked +// SPDX-FileCopyrightText: Copyright (c) 2021 Benjamin Meisels +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/aramcon_badge_2019/board.c b/ports/nordic/boards/aramcon_badge_2019/board.c index 32d1ca948366..689a0c135275 100644 --- a/ports/nordic/boards/aramcon_badge_2019/board.c +++ b/ports/nordic/boards/aramcon_badge_2019/board.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Uri Shaked - * Copyright (c) 2019 Benjamin Meisels - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Uri Shaked +// SPDX-FileCopyrightText: Copyright (c) 2019 Benjamin Meisels +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/aramcon_badge_2019/mpconfigboard.h b/ports/nordic/boards/aramcon_badge_2019/mpconfigboard.h index 51d14721cfeb..f9eb2fdbb483 100644 --- a/ports/nordic/boards/aramcon_badge_2019/mpconfigboard.h +++ b/ports/nordic/boards/aramcon_badge_2019/mpconfigboard.h @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Uri Shaked +// SPDX-FileCopyrightText: Copyright (c) 2019 Benjamin Meisels +// +// SPDX-License-Identifier: MIT + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "ARAMCON Badge 2019" diff --git a/ports/nordic/boards/aramcon_badge_2019/pins.c b/ports/nordic/boards/aramcon_badge_2019/pins.c index 789fd0dfeefb..fc359f93edc9 100644 --- a/ports/nordic/boards/aramcon_badge_2019/pins.c +++ b/ports/nordic/boards/aramcon_badge_2019/pins.c @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Uri Shaked +// SPDX-FileCopyrightText: Copyright (c) 2019 Benjamin Meisels +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/arduino_nano_33_ble/board.c b/ports/nordic/boards/arduino_nano_33_ble/board.c index 0b6aa8f0db62..d5274998d1b1 100644 --- a/ports/nordic/boards/arduino_nano_33_ble/board.c +++ b/ports/nordic/boards/arduino_nano_33_ble/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "nrf.h" diff --git a/ports/nordic/boards/arduino_nano_33_ble/mpconfigboard.h b/ports/nordic/boards/arduino_nano_33_ble/mpconfigboard.h index 851632f8605e..16001c5419c1 100644 --- a/ports/nordic/boards/arduino_nano_33_ble/mpconfigboard.h +++ b/ports/nordic/boards/arduino_nano_33_ble/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "Arduino Nano 33 BLE" diff --git a/ports/nordic/boards/arduino_nano_33_ble/pins.c b/ports/nordic/boards/arduino_nano_33_ble/pins.c index ca420dedf978..6b25feb2ba4d 100644 --- a/ports/nordic/boards/arduino_nano_33_ble/pins.c +++ b/ports/nordic/boards/arduino_nano_33_ble/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/bastble/board.c b/ports/nordic/boards/bastble/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/bastble/board.c +++ b/ports/nordic/boards/bastble/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/bastble/mpconfigboard.h b/ports/nordic/boards/bastble/mpconfigboard.h index e97fa429ee1c..3cd817092c68 100644 --- a/ports/nordic/boards/bastble/mpconfigboard.h +++ b/ports/nordic/boards/bastble/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "BastBLE" diff --git a/ports/nordic/boards/bastble/pins.c b/ports/nordic/boards/bastble/pins.c index d6df28aebe3a..76ce1022128c 100644 --- a/ports/nordic/boards/bastble/pins.c +++ b/ports/nordic/boards/bastble/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/bless_dev_board_multi_sensor/board.c b/ports/nordic/boards/bless_dev_board_multi_sensor/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/bless_dev_board_multi_sensor/board.c +++ b/ports/nordic/boards/bless_dev_board_multi_sensor/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/bless_dev_board_multi_sensor/mpconfigboard.h b/ports/nordic/boards/bless_dev_board_multi_sensor/mpconfigboard.h index 7fffd86ccd65..5d9a4a901c8e 100644 --- a/ports/nordic/boards/bless_dev_board_multi_sensor/mpconfigboard.h +++ b/ports/nordic/boards/bless_dev_board_multi_sensor/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "BLE-SS dev board Multi Sensor" diff --git a/ports/nordic/boards/bless_dev_board_multi_sensor/pins.c b/ports/nordic/boards/bless_dev_board_multi_sensor/pins.c index 87ab3c4f9806..65c35882959e 100644 --- a/ports/nordic/boards/bless_dev_board_multi_sensor/pins.c +++ b/ports/nordic/boards/bless_dev_board_multi_sensor/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/bluemicro833/board.c b/ports/nordic/boards/bluemicro833/board.c index c96bc6a99690..1abc6f4e79cf 100644 --- a/ports/nordic/boards/bluemicro833/board.c +++ b/ports/nordic/boards/bluemicro833/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/nordic/boards/bluemicro833/mpconfigboard.h b/ports/nordic/boards/bluemicro833/mpconfigboard.h index 8bfeb7cb98ce..02116360ca84 100644 --- a/ports/nordic/boards/bluemicro833/mpconfigboard.h +++ b/ports/nordic/boards/bluemicro833/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/bluemicro833/pins.c b/ports/nordic/boards/bluemicro833/pins.c index e8c8cdcec52c..a39c92fd2c5f 100644 --- a/ports/nordic/boards/bluemicro833/pins.c +++ b/ports/nordic/boards/bluemicro833/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/bluemicro840/board.c b/ports/nordic/boards/bluemicro840/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/bluemicro840/board.c +++ b/ports/nordic/boards/bluemicro840/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/bluemicro840/mpconfigboard.h b/ports/nordic/boards/bluemicro840/mpconfigboard.h index 99a1e0bfbec0..60ef1e0fc675 100644 --- a/ports/nordic/boards/bluemicro840/mpconfigboard.h +++ b/ports/nordic/boards/bluemicro840/mpconfigboard.h @@ -1,30 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2021 Pierre Constantineau - * - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2021 Pierre Constantineau +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/bluemicro840/pins.c b/ports/nordic/boards/bluemicro840/pins.c index 368af9ea9c72..2679c1e2e2f1 100644 --- a/ports/nordic/boards/bluemicro840/pins.c +++ b/ports/nordic/boards/bluemicro840/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/challenger_840/board.c b/ports/nordic/boards/challenger_840/board.c index 14a52fc4de1f..fee449015598 100644 --- a/ports/nordic/boards/challenger_840/board.c +++ b/ports/nordic/boards/challenger_840/board.c @@ -1,25 +1,5 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT diff --git a/ports/nordic/boards/challenger_840/mpconfigboard.h b/ports/nordic/boards/challenger_840/mpconfigboard.h index 5226c818d4f2..4f1843c75087 100644 --- a/ports/nordic/boards/challenger_840/mpconfigboard.h +++ b/ports/nordic/boards/challenger_840/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "iLabs Challenger 840" diff --git a/ports/nordic/boards/challenger_840/pins.c b/ports/nordic/boards/challenger_840/pins.c index e059c17a15e1..4dee03208aa8 100644 --- a/ports/nordic/boards/challenger_840/pins.c +++ b/ports/nordic/boards/challenger_840/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/circuitplayground_bluefruit/board.c b/ports/nordic/boards/circuitplayground_bluefruit/board.c index 412b249844db..17a86c6fe9b7 100644 --- a/ports/nordic/boards/circuitplayground_bluefruit/board.c +++ b/ports/nordic/boards/circuitplayground_bluefruit/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/nordic/boards/circuitplayground_bluefruit/mpconfigboard.h b/ports/nordic/boards/circuitplayground_bluefruit/mpconfigboard.h index 69bff087612e..c30f6598115e 100644 --- a/ports/nordic/boards/circuitplayground_bluefruit/mpconfigboard.h +++ b/ports/nordic/boards/circuitplayground_bluefruit/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/circuitplayground_bluefruit/pins.c b/ports/nordic/boards/circuitplayground_bluefruit/pins.c index 9c0b815a5bab..965fbbbf6890 100644 --- a/ports/nordic/boards/circuitplayground_bluefruit/pins.c +++ b/ports/nordic/boards/circuitplayground_bluefruit/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/clue_nrf52840_express/board.c b/ports/nordic/boards/clue_nrf52840_express/board.c index 4478e0f3ba29..5841113e97fc 100644 --- a/ports/nordic/boards/clue_nrf52840_express/board.c +++ b/ports/nordic/boards/clue_nrf52840_express/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/nordic/boards/clue_nrf52840_express/mpconfigboard.h b/ports/nordic/boards/clue_nrf52840_express/mpconfigboard.h index 9cb05de09241..71ae82c7627a 100644 --- a/ports/nordic/boards/clue_nrf52840_express/mpconfigboard.h +++ b/ports/nordic/boards/clue_nrf52840_express/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/clue_nrf52840_express/pins.c b/ports/nordic/boards/clue_nrf52840_express/pins.c index 344e344f5b06..fc6c63ac1f0f 100644 --- a/ports/nordic/boards/clue_nrf52840_express/pins.c +++ b/ports/nordic/boards/clue_nrf52840_express/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/nordic/boards/electronut_labs_blip/board.c b/ports/nordic/boards/electronut_labs_blip/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/electronut_labs_blip/board.c +++ b/ports/nordic/boards/electronut_labs_blip/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/electronut_labs_blip/mpconfigboard.h b/ports/nordic/boards/electronut_labs_blip/mpconfigboard.h index ed1c32bd3cad..336ab0d39328 100644 --- a/ports/nordic/boards/electronut_labs_blip/mpconfigboard.h +++ b/ports/nordic/boards/electronut_labs_blip/mpconfigboard.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * Copyright (c) 2019 tavish@electronut.in - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 tavish@electronut.in +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/electronut_labs_blip/pins.c b/ports/nordic/boards/electronut_labs_blip/pins.c index 6018ca5d55e7..db68e7e365bc 100644 --- a/ports/nordic/boards/electronut_labs_blip/pins.c +++ b/ports/nordic/boards/electronut_labs_blip/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/electronut_labs_papyr/board.c b/ports/nordic/boards/electronut_labs_papyr/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/electronut_labs_papyr/board.c +++ b/ports/nordic/boards/electronut_labs_papyr/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/electronut_labs_papyr/mpconfigboard.h b/ports/nordic/boards/electronut_labs_papyr/mpconfigboard.h index 4c2e7a92c190..f77513987980 100644 --- a/ports/nordic/boards/electronut_labs_papyr/mpconfigboard.h +++ b/ports/nordic/boards/electronut_labs_papyr/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/electronut_labs_papyr/pins.c b/ports/nordic/boards/electronut_labs_papyr/pins.c index 6bfaf2f92d60..a6bdf5e68150 100644 --- a/ports/nordic/boards/electronut_labs_papyr/pins.c +++ b/ports/nordic/boards/electronut_labs_papyr/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/espruino_banglejs2/board.c b/ports/nordic/boards/espruino_banglejs2/board.c index dc741744c853..16af02691684 100644 --- a/ports/nordic/boards/espruino_banglejs2/board.c +++ b/ports/nordic/boards/espruino_banglejs2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "background.h" diff --git a/ports/nordic/boards/espruino_banglejs2/mpconfigboard.h b/ports/nordic/boards/espruino_banglejs2/mpconfigboard.h index 6057cd56e72b..9d73e765823e 100644 --- a/ports/nordic/boards/espruino_banglejs2/mpconfigboard.h +++ b/ports/nordic/boards/espruino_banglejs2/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/espruino_banglejs2/pins.c b/ports/nordic/boards/espruino_banglejs2/pins.c index b114c2f13022..d739f178c6eb 100644 --- a/ports/nordic/boards/espruino_banglejs2/pins.c +++ b/ports/nordic/boards/espruino_banglejs2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/nordic/boards/feather_bluefruit_sense/board.c b/ports/nordic/boards/feather_bluefruit_sense/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/feather_bluefruit_sense/board.c +++ b/ports/nordic/boards/feather_bluefruit_sense/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/feather_bluefruit_sense/mpconfigboard.h b/ports/nordic/boards/feather_bluefruit_sense/mpconfigboard.h index 558f66bf7ba7..fec41463da1a 100644 --- a/ports/nordic/boards/feather_bluefruit_sense/mpconfigboard.h +++ b/ports/nordic/boards/feather_bluefruit_sense/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/feather_bluefruit_sense/pins.c b/ports/nordic/boards/feather_bluefruit_sense/pins.c index d0414c6b738a..3c4c1fe6b940 100644 --- a/ports/nordic/boards/feather_bluefruit_sense/pins.c +++ b/ports/nordic/boards/feather_bluefruit_sense/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/feather_nrf52840_express/board.c b/ports/nordic/boards/feather_nrf52840_express/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/feather_nrf52840_express/board.c +++ b/ports/nordic/boards/feather_nrf52840_express/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/feather_nrf52840_express/mpconfigboard.h b/ports/nordic/boards/feather_nrf52840_express/mpconfigboard.h index 850ac406efca..80a4bdcad8b4 100644 --- a/ports/nordic/boards/feather_nrf52840_express/mpconfigboard.h +++ b/ports/nordic/boards/feather_nrf52840_express/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/feather_nrf52840_express/pins.c b/ports/nordic/boards/feather_nrf52840_express/pins.c index d8c4c6a40ccc..4eb371dc19ed 100644 --- a/ports/nordic/boards/feather_nrf52840_express/pins.c +++ b/ports/nordic/boards/feather_nrf52840_express/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/hiibot_bluefi/board.c b/ports/nordic/boards/hiibot_bluefi/board.c index d07b31673339..86076c1aa0e2 100644 --- a/ports/nordic/boards/hiibot_bluefi/board.c +++ b/ports/nordic/boards/hiibot_bluefi/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/nordic/boards/hiibot_bluefi/mpconfigboard.h b/ports/nordic/boards/hiibot_bluefi/mpconfigboard.h index 3c0af124e100..778ca0cb4378 100644 --- a/ports/nordic/boards/hiibot_bluefi/mpconfigboard.h +++ b/ports/nordic/boards/hiibot_bluefi/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/hiibot_bluefi/pins.c b/ports/nordic/boards/hiibot_bluefi/pins.c index 7e0e0a94f4b1..1114d18a2d3d 100644 --- a/ports/nordic/boards/hiibot_bluefi/pins.c +++ b/ports/nordic/boards/hiibot_bluefi/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/nordic/boards/ikigaisense_vita/board.c b/ports/nordic/boards/ikigaisense_vita/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/ikigaisense_vita/board.c +++ b/ports/nordic/boards/ikigaisense_vita/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/ikigaisense_vita/mpconfigboard.h b/ports/nordic/boards/ikigaisense_vita/mpconfigboard.h index 49ef2b93be3c..dfbdf7ef0960 100644 --- a/ports/nordic/boards/ikigaisense_vita/mpconfigboard.h +++ b/ports/nordic/boards/ikigaisense_vita/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "IkigaiSense Vita nRF52840" diff --git a/ports/nordic/boards/ikigaisense_vita/pins.c b/ports/nordic/boards/ikigaisense_vita/pins.c index 4c8a45b9c9f5..010fc8ec901a 100644 --- a/ports/nordic/boards/ikigaisense_vita/pins.c +++ b/ports/nordic/boards/ikigaisense_vita/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/itsybitsy_nrf52840_express/board.c b/ports/nordic/boards/itsybitsy_nrf52840_express/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/itsybitsy_nrf52840_express/board.c +++ b/ports/nordic/boards/itsybitsy_nrf52840_express/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/itsybitsy_nrf52840_express/mpconfigboard.h b/ports/nordic/boards/itsybitsy_nrf52840_express/mpconfigboard.h index 47220bb47480..d435b8f58717 100644 --- a/ports/nordic/boards/itsybitsy_nrf52840_express/mpconfigboard.h +++ b/ports/nordic/boards/itsybitsy_nrf52840_express/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "Adafruit ItsyBitsy nRF52840 Express" diff --git a/ports/nordic/boards/itsybitsy_nrf52840_express/pins.c b/ports/nordic/boards/itsybitsy_nrf52840_express/pins.c index 2895fc468498..ef5018bce9f5 100644 --- a/ports/nordic/boards/itsybitsy_nrf52840_express/pins.c +++ b/ports/nordic/boards/itsybitsy_nrf52840_express/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/makerdiary_m60_keyboard/board.c b/ports/nordic/boards/makerdiary_m60_keyboard/board.c index 83f42558cbdb..65595a6bca5d 100644 --- a/ports/nordic/boards/makerdiary_m60_keyboard/board.c +++ b/ports/nordic/boards/makerdiary_m60_keyboard/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "supervisor/shared/board.h" diff --git a/ports/nordic/boards/makerdiary_m60_keyboard/mpconfigboard.h b/ports/nordic/boards/makerdiary_m60_keyboard/mpconfigboard.h index eb2bf93e7622..a1b8d9273a17 100644 --- a/ports/nordic/boards/makerdiary_m60_keyboard/mpconfigboard.h +++ b/ports/nordic/boards/makerdiary_m60_keyboard/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/makerdiary_m60_keyboard/pins.c b/ports/nordic/boards/makerdiary_m60_keyboard/pins.c index 9a889bdd48b2..b92c81e11ab6 100644 --- a/ports/nordic/boards/makerdiary_m60_keyboard/pins.c +++ b/ports/nordic/boards/makerdiary_m60_keyboard/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/nordic/boards/makerdiary_nrf52840_connectkit/board.c b/ports/nordic/boards/makerdiary_nrf52840_connectkit/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/makerdiary_nrf52840_connectkit/board.c +++ b/ports/nordic/boards/makerdiary_nrf52840_connectkit/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/makerdiary_nrf52840_connectkit/mpconfigboard.h b/ports/nordic/boards/makerdiary_nrf52840_connectkit/mpconfigboard.h index 3cb15ca66bfa..e5deb9d9e9a5 100644 --- a/ports/nordic/boards/makerdiary_nrf52840_connectkit/mpconfigboard.h +++ b/ports/nordic/boards/makerdiary_nrf52840_connectkit/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "Makerdiary nRF52840 Connect Kit" diff --git a/ports/nordic/boards/makerdiary_nrf52840_connectkit/pins.c b/ports/nordic/boards/makerdiary_nrf52840_connectkit/pins.c index 80478ca03f8a..57030c5a25ef 100644 --- a/ports/nordic/boards/makerdiary_nrf52840_connectkit/pins.c +++ b/ports/nordic/boards/makerdiary_nrf52840_connectkit/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/makerdiary_nrf52840_m2_devkit/board.c b/ports/nordic/boards/makerdiary_nrf52840_m2_devkit/board.c index a22d96e95980..6803a8f01fc4 100644 --- a/ports/nordic/boards/makerdiary_nrf52840_m2_devkit/board.c +++ b/ports/nordic/boards/makerdiary_nrf52840_m2_devkit/board.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2020 Yihui Xiong for Makerdiary - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2020 Yihui Xiong for Makerdiary +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/nordic/boards/makerdiary_nrf52840_m2_devkit/mpconfigboard.h b/ports/nordic/boards/makerdiary_nrf52840_m2_devkit/mpconfigboard.h index c398ce83dc21..03d48ac18e24 100644 --- a/ports/nordic/boards/makerdiary_nrf52840_m2_devkit/mpconfigboard.h +++ b/ports/nordic/boards/makerdiary_nrf52840_m2_devkit/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/makerdiary_nrf52840_m2_devkit/pins.c b/ports/nordic/boards/makerdiary_nrf52840_m2_devkit/pins.c index b5b88001b4ff..9321be129b3b 100644 --- a/ports/nordic/boards/makerdiary_nrf52840_m2_devkit/pins.c +++ b/ports/nordic/boards/makerdiary_nrf52840_m2_devkit/pins.c @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2020 Yihui Xiong for Makerdiary +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/nordic/boards/makerdiary_nrf52840_mdk/board.c b/ports/nordic/boards/makerdiary_nrf52840_mdk/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/makerdiary_nrf52840_mdk/board.c +++ b/ports/nordic/boards/makerdiary_nrf52840_mdk/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/makerdiary_nrf52840_mdk/mpconfigboard.h b/ports/nordic/boards/makerdiary_nrf52840_mdk/mpconfigboard.h index 79ba0f29ed1d..8e2a19638510 100644 --- a/ports/nordic/boards/makerdiary_nrf52840_mdk/mpconfigboard.h +++ b/ports/nordic/boards/makerdiary_nrf52840_mdk/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/makerdiary_nrf52840_mdk/pins.c b/ports/nordic/boards/makerdiary_nrf52840_mdk/pins.c index 00d2b394ace1..4a8e6be919f5 100644 --- a/ports/nordic/boards/makerdiary_nrf52840_mdk/pins.c +++ b/ports/nordic/boards/makerdiary_nrf52840_mdk/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/makerdiary_nrf52840_mdk_usb_dongle/board.c b/ports/nordic/boards/makerdiary_nrf52840_mdk_usb_dongle/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/makerdiary_nrf52840_mdk_usb_dongle/board.c +++ b/ports/nordic/boards/makerdiary_nrf52840_mdk_usb_dongle/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/makerdiary_nrf52840_mdk_usb_dongle/mpconfigboard.h b/ports/nordic/boards/makerdiary_nrf52840_mdk_usb_dongle/mpconfigboard.h index c7a7e522d47b..9e40b6591d8a 100644 --- a/ports/nordic/boards/makerdiary_nrf52840_mdk_usb_dongle/mpconfigboard.h +++ b/ports/nordic/boards/makerdiary_nrf52840_mdk_usb_dongle/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/makerdiary_nrf52840_mdk_usb_dongle/pins.c b/ports/nordic/boards/makerdiary_nrf52840_mdk_usb_dongle/pins.c index 4068689377e3..783b3aac927c 100644 --- a/ports/nordic/boards/makerdiary_nrf52840_mdk_usb_dongle/pins.c +++ b/ports/nordic/boards/makerdiary_nrf52840_mdk_usb_dongle/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/metro_nrf52840_express/board.c b/ports/nordic/boards/metro_nrf52840_express/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/metro_nrf52840_express/board.c +++ b/ports/nordic/boards/metro_nrf52840_express/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/metro_nrf52840_express/mpconfigboard.h b/ports/nordic/boards/metro_nrf52840_express/mpconfigboard.h index 8373551545f1..430626be9ce9 100644 --- a/ports/nordic/boards/metro_nrf52840_express/mpconfigboard.h +++ b/ports/nordic/boards/metro_nrf52840_express/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/metro_nrf52840_express/pins.c b/ports/nordic/boards/metro_nrf52840_express/pins.c index 3ff4e1756ca0..0576656111e5 100644 --- a/ports/nordic/boards/metro_nrf52840_express/pins.c +++ b/ports/nordic/boards/metro_nrf52840_express/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/microbit_v2/board.c b/ports/nordic/boards/microbit_v2/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/nordic/boards/microbit_v2/board.c +++ b/ports/nordic/boards/microbit_v2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/microbit_v2/mpconfigboard.h b/ports/nordic/boards/microbit_v2/mpconfigboard.h index eba5af6c2244..4e60a39567b5 100644 --- a/ports/nordic/boards/microbit_v2/mpconfigboard.h +++ b/ports/nordic/boards/microbit_v2/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/microbit_v2/pins.c b/ports/nordic/boards/microbit_v2/pins.c index f7de5c33e489..647221a62e27 100644 --- a/ports/nordic/boards/microbit_v2/pins.c +++ b/ports/nordic/boards/microbit_v2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/nice_nano/board.c b/ports/nordic/boards/nice_nano/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/nice_nano/board.c +++ b/ports/nordic/boards/nice_nano/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/nice_nano/mpconfigboard.h b/ports/nordic/boards/nice_nano/mpconfigboard.h index fd605e12f024..f8cf85e13827 100644 --- a/ports/nordic/boards/nice_nano/mpconfigboard.h +++ b/ports/nordic/boards/nice_nano/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/nice_nano/pins.c b/ports/nordic/boards/nice_nano/pins.c index 1a8dcc101fb6..831c142b3ad5 100644 --- a/ports/nordic/boards/nice_nano/pins.c +++ b/ports/nordic/boards/nice_nano/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/nrf52_prefix.c b/ports/nordic/boards/nrf52_prefix.c index 92fb165b50f6..59ea28512713 100644 --- a/ports/nordic/boards/nrf52_prefix.c +++ b/ports/nordic/boards/nrf52_prefix.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // nrf52_prefix.c becomes the initial portion of the generated pins file. #include diff --git a/ports/nordic/boards/ohs2020_badge/board.c b/ports/nordic/boards/ohs2020_badge/board.c index 7b48e1985dd7..217fab935894 100644 --- a/ports/nordic/boards/ohs2020_badge/board.c +++ b/ports/nordic/boards/ohs2020_badge/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/nordic/boards/ohs2020_badge/mpconfigboard.h b/ports/nordic/boards/ohs2020_badge/mpconfigboard.h index 8edc40423ee3..4118b0db6761 100644 --- a/ports/nordic/boards/ohs2020_badge/mpconfigboard.h +++ b/ports/nordic/boards/ohs2020_badge/mpconfigboard.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * Copyright (c) 2020 Michael Welling - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2020 Michael Welling +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/ohs2020_badge/pins.c b/ports/nordic/boards/ohs2020_badge/pins.c index ab895289d073..bbc6530600cc 100644 --- a/ports/nordic/boards/ohs2020_badge/pins.c +++ b/ports/nordic/boards/ohs2020_badge/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/nordic/boards/particle_argon/board.c b/ports/nordic/boards/particle_argon/board.c index 7180deb2783c..4ffc5795151a 100644 --- a/ports/nordic/boards/particle_argon/board.c +++ b/ports/nordic/boards/particle_argon/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/particle_argon/mpconfigboard.h b/ports/nordic/boards/particle_argon/mpconfigboard.h index a858a20b059f..7456505cbf9d 100644 --- a/ports/nordic/boards/particle_argon/mpconfigboard.h +++ b/ports/nordic/boards/particle_argon/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/particle_argon/pins.c b/ports/nordic/boards/particle_argon/pins.c index 6619266914d0..d65b34a7112c 100644 --- a/ports/nordic/boards/particle_argon/pins.c +++ b/ports/nordic/boards/particle_argon/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/particle_boron/board.c b/ports/nordic/boards/particle_boron/board.c index 7180deb2783c..4ffc5795151a 100644 --- a/ports/nordic/boards/particle_boron/board.c +++ b/ports/nordic/boards/particle_boron/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/particle_boron/mpconfigboard.h b/ports/nordic/boards/particle_boron/mpconfigboard.h index fd000d73762b..2f012010a025 100644 --- a/ports/nordic/boards/particle_boron/mpconfigboard.h +++ b/ports/nordic/boards/particle_boron/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/particle_boron/pins.c b/ports/nordic/boards/particle_boron/pins.c index c16a1e876306..adeca976e141 100644 --- a/ports/nordic/boards/particle_boron/pins.c +++ b/ports/nordic/boards/particle_boron/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/particle_xenon/board.c b/ports/nordic/boards/particle_xenon/board.c index 7180deb2783c..4ffc5795151a 100644 --- a/ports/nordic/boards/particle_xenon/board.c +++ b/ports/nordic/boards/particle_xenon/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/particle_xenon/mpconfigboard.h b/ports/nordic/boards/particle_xenon/mpconfigboard.h index b2221e163a49..8ac32c3aae36 100644 --- a/ports/nordic/boards/particle_xenon/mpconfigboard.h +++ b/ports/nordic/boards/particle_xenon/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/particle_xenon/pins.c b/ports/nordic/boards/particle_xenon/pins.c index 4b0529be2432..e57056e1ea78 100644 --- a/ports/nordic/boards/particle_xenon/pins.c +++ b/ports/nordic/boards/particle_xenon/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/pca10056/board.c b/ports/nordic/boards/pca10056/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/pca10056/board.c +++ b/ports/nordic/boards/pca10056/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/pca10056/mpconfigboard.h b/ports/nordic/boards/pca10056/mpconfigboard.h index 4856a957001e..bd5c66758929 100644 --- a/ports/nordic/boards/pca10056/mpconfigboard.h +++ b/ports/nordic/boards/pca10056/mpconfigboard.h @@ -1,29 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/pca10056/pins.c b/ports/nordic/boards/pca10056/pins.c index 75b1c3ea6c87..00c91699513d 100644 --- a/ports/nordic/boards/pca10056/pins.c +++ b/ports/nordic/boards/pca10056/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/pca10059/board.c b/ports/nordic/boards/pca10059/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/pca10059/board.c +++ b/ports/nordic/boards/pca10059/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/pca10059/mpconfigboard.h b/ports/nordic/boards/pca10059/mpconfigboard.h index 20bed466b531..5c60cab8bc27 100644 --- a/ports/nordic/boards/pca10059/mpconfigboard.h +++ b/ports/nordic/boards/pca10059/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #define MICROPY_HW_BOARD_NAME "PCA10059 nRF52840 Dongle" #define MICROPY_HW_MCU_NAME "nRF52840" diff --git a/ports/nordic/boards/pca10059/pins.c b/ports/nordic/boards/pca10059/pins.c index f49a290ddf6a..a8dee4a40d98 100644 --- a/ports/nordic/boards/pca10059/pins.c +++ b/ports/nordic/boards/pca10059/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/pca10100/board.c b/ports/nordic/boards/pca10100/board.c index 7180deb2783c..4ffc5795151a 100644 --- a/ports/nordic/boards/pca10100/board.c +++ b/ports/nordic/boards/pca10100/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/pca10100/mpconfigboard.h b/ports/nordic/boards/pca10100/mpconfigboard.h index dca629b422f0..b62cd56bc990 100644 --- a/ports/nordic/boards/pca10100/mpconfigboard.h +++ b/ports/nordic/boards/pca10100/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/pca10100/pins.c b/ports/nordic/boards/pca10100/pins.c index e6ca54eb2e12..e31bfdd1e565 100644 --- a/ports/nordic/boards/pca10100/pins.c +++ b/ports/nordic/boards/pca10100/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/pctel_wsc_1450/board.c b/ports/nordic/boards/pctel_wsc_1450/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/pctel_wsc_1450/board.c +++ b/ports/nordic/boards/pctel_wsc_1450/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/pctel_wsc_1450/mpconfigboard.h b/ports/nordic/boards/pctel_wsc_1450/mpconfigboard.h index e1c30c5b06ad..94beb7b3503d 100644 --- a/ports/nordic/boards/pctel_wsc_1450/mpconfigboard.h +++ b/ports/nordic/boards/pctel_wsc_1450/mpconfigboard.h @@ -1,29 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/pctel_wsc_1450/pins.c b/ports/nordic/boards/pctel_wsc_1450/pins.c index 3f2323cb7222..809c0ba42973 100644 --- a/ports/nordic/boards/pctel_wsc_1450/pins.c +++ b/ports/nordic/boards/pctel_wsc_1450/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/pillbug/board.c b/ports/nordic/boards/pillbug/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/pillbug/board.c +++ b/ports/nordic/boards/pillbug/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/pillbug/mpconfigboard.h b/ports/nordic/boards/pillbug/mpconfigboard.h index d760b165d677..d952b6160aa7 100644 --- a/ports/nordic/boards/pillbug/mpconfigboard.h +++ b/ports/nordic/boards/pillbug/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/pillbug/pins.c b/ports/nordic/boards/pillbug/pins.c index 503d6b0f1bc9..89d0007dc0dc 100644 --- a/ports/nordic/boards/pillbug/pins.c +++ b/ports/nordic/boards/pillbug/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/pitaya_go/board.c b/ports/nordic/boards/pitaya_go/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/pitaya_go/board.c +++ b/ports/nordic/boards/pitaya_go/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/pitaya_go/mpconfigboard.h b/ports/nordic/boards/pitaya_go/mpconfigboard.h index 7f9eff716423..a41be6f089ec 100644 --- a/ports/nordic/boards/pitaya_go/mpconfigboard.h +++ b/ports/nordic/boards/pitaya_go/mpconfigboard.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * Copyright (c) 2020 Yihui Xiong - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2020 Yihui Xiong +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/pitaya_go/pins.c b/ports/nordic/boards/pitaya_go/pins.c index 40ab42271464..6fef0b37e75c 100644 --- a/ports/nordic/boards/pitaya_go/pins.c +++ b/ports/nordic/boards/pitaya_go/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/raytac_mdbt50q-db-40/board.c b/ports/nordic/boards/raytac_mdbt50q-db-40/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/raytac_mdbt50q-db-40/board.c +++ b/ports/nordic/boards/raytac_mdbt50q-db-40/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/raytac_mdbt50q-db-40/mpconfigboard.h b/ports/nordic/boards/raytac_mdbt50q-db-40/mpconfigboard.h index 28bfbd17033b..4eac8645294b 100644 --- a/ports/nordic/boards/raytac_mdbt50q-db-40/mpconfigboard.h +++ b/ports/nordic/boards/raytac_mdbt50q-db-40/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #define MICROPY_HW_BOARD_NAME "MDBT50Q-DB-40" #define MICROPY_HW_MCU_NAME "nRF52840" diff --git a/ports/nordic/boards/raytac_mdbt50q-db-40/pins.c b/ports/nordic/boards/raytac_mdbt50q-db-40/pins.c index 0af7e6c6c162..c299d0f68616 100644 --- a/ports/nordic/boards/raytac_mdbt50q-db-40/pins.c +++ b/ports/nordic/boards/raytac_mdbt50q-db-40/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/raytac_mdbt50q-rx/board.c b/ports/nordic/boards/raytac_mdbt50q-rx/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/raytac_mdbt50q-rx/board.c +++ b/ports/nordic/boards/raytac_mdbt50q-rx/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/raytac_mdbt50q-rx/mpconfigboard.h b/ports/nordic/boards/raytac_mdbt50q-rx/mpconfigboard.h index 92629a9e47d8..589f1918e6ec 100644 --- a/ports/nordic/boards/raytac_mdbt50q-rx/mpconfigboard.h +++ b/ports/nordic/boards/raytac_mdbt50q-rx/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #define MICROPY_HW_BOARD_NAME "MDBT50Q-RX Dongle" #define MICROPY_HW_MCU_NAME "nRF52840" diff --git a/ports/nordic/boards/raytac_mdbt50q-rx/pins.c b/ports/nordic/boards/raytac_mdbt50q-rx/pins.c index 04ee337543a3..abb34a2b180e 100644 --- a/ports/nordic/boards/raytac_mdbt50q-rx/pins.c +++ b/ports/nordic/boards/raytac_mdbt50q-rx/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/simmel/board.c b/ports/nordic/boards/simmel/board.c index 7180deb2783c..4ffc5795151a 100644 --- a/ports/nordic/boards/simmel/board.c +++ b/ports/nordic/boards/simmel/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/simmel/mpconfigboard.h b/ports/nordic/boards/simmel/mpconfigboard.h index 984d3df03ca4..88abeca62d14 100644 --- a/ports/nordic/boards/simmel/mpconfigboard.h +++ b/ports/nordic/boards/simmel/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/simmel/pins.c b/ports/nordic/boards/simmel/pins.c index 6ff455b628ad..554c6d8a8b3e 100644 --- a/ports/nordic/boards/simmel/pins.c +++ b/ports/nordic/boards/simmel/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/sparkfun_nrf52840_micromod/board.c b/ports/nordic/boards/sparkfun_nrf52840_micromod/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/sparkfun_nrf52840_micromod/board.c +++ b/ports/nordic/boards/sparkfun_nrf52840_micromod/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/sparkfun_nrf52840_micromod/mpconfigboard.h b/ports/nordic/boards/sparkfun_nrf52840_micromod/mpconfigboard.h index fec1d5ae0209..1ebc7d30c860 100644 --- a/ports/nordic/boards/sparkfun_nrf52840_micromod/mpconfigboard.h +++ b/ports/nordic/boards/sparkfun_nrf52840_micromod/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2021 Chris Marc Dailey - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2021 Chris Marc Dailey +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/sparkfun_nrf52840_micromod/pins.c b/ports/nordic/boards/sparkfun_nrf52840_micromod/pins.c index 13a63831e8c0..0e073dbc14d2 100644 --- a/ports/nordic/boards/sparkfun_nrf52840_micromod/pins.c +++ b/ports/nordic/boards/sparkfun_nrf52840_micromod/pins.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2021 Chris Wilson - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2021 Chris Wilson +// +// SPDX-License-Identifier: MIT #include "shared-bindings/board/__init__.h" diff --git a/ports/nordic/boards/sparkfun_nrf52840_mini/board.c b/ports/nordic/boards/sparkfun_nrf52840_mini/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/sparkfun_nrf52840_mini/board.c +++ b/ports/nordic/boards/sparkfun_nrf52840_mini/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/sparkfun_nrf52840_mini/mpconfigboard.h b/ports/nordic/boards/sparkfun_nrf52840_mini/mpconfigboard.h index 23cce7f8a497..9d2238014351 100644 --- a/ports/nordic/boards/sparkfun_nrf52840_mini/mpconfigboard.h +++ b/ports/nordic/boards/sparkfun_nrf52840_mini/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/sparkfun_nrf52840_mini/pins.c b/ports/nordic/boards/sparkfun_nrf52840_mini/pins.c index e3188f9bdbaf..278cdfd67166 100644 --- a/ports/nordic/boards/sparkfun_nrf52840_mini/pins.c +++ b/ports/nordic/boards/sparkfun_nrf52840_mini/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/ssci_isp1807_dev_board/board.c b/ports/nordic/boards/ssci_isp1807_dev_board/board.c index c8bd7e0b354a..6d40de1b2af2 100644 --- a/ports/nordic/boards/ssci_isp1807_dev_board/board.c +++ b/ports/nordic/boards/ssci_isp1807_dev_board/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "nrf.h" diff --git a/ports/nordic/boards/ssci_isp1807_dev_board/mpconfigboard.h b/ports/nordic/boards/ssci_isp1807_dev_board/mpconfigboard.h index bfa6abf4811c..82f323c78713 100644 --- a/ports/nordic/boards/ssci_isp1807_dev_board/mpconfigboard.h +++ b/ports/nordic/boards/ssci_isp1807_dev_board/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "SSCI ISP1807 Dev Board" diff --git a/ports/nordic/boards/ssci_isp1807_dev_board/pins.c b/ports/nordic/boards/ssci_isp1807_dev_board/pins.c index 3ae7dad70739..3beaec955193 100644 --- a/ports/nordic/boards/ssci_isp1807_dev_board/pins.c +++ b/ports/nordic/boards/ssci_isp1807_dev_board/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/ssci_isp1807_micro_board/board.c b/ports/nordic/boards/ssci_isp1807_micro_board/board.c index c8bd7e0b354a..6d40de1b2af2 100644 --- a/ports/nordic/boards/ssci_isp1807_micro_board/board.c +++ b/ports/nordic/boards/ssci_isp1807_micro_board/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "nrf.h" diff --git a/ports/nordic/boards/ssci_isp1807_micro_board/mpconfigboard.h b/ports/nordic/boards/ssci_isp1807_micro_board/mpconfigboard.h index 7ff5d4163039..0bcf30389430 100644 --- a/ports/nordic/boards/ssci_isp1807_micro_board/mpconfigboard.h +++ b/ports/nordic/boards/ssci_isp1807_micro_board/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "SSCI ISP1807 Micro Board" diff --git a/ports/nordic/boards/ssci_isp1807_micro_board/pins.c b/ports/nordic/boards/ssci_isp1807_micro_board/pins.c index 9c5358a6a88e..8e80199b72bf 100644 --- a/ports/nordic/boards/ssci_isp1807_micro_board/pins.c +++ b/ports/nordic/boards/ssci_isp1807_micro_board/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/supermini_nrf52840/board.c b/ports/nordic/boards/supermini_nrf52840/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/supermini_nrf52840/board.c +++ b/ports/nordic/boards/supermini_nrf52840/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/supermini_nrf52840/mpconfigboard.h b/ports/nordic/boards/supermini_nrf52840/mpconfigboard.h index abeb5e2e1335..77c5e8576ee6 100644 --- a/ports/nordic/boards/supermini_nrf52840/mpconfigboard.h +++ b/ports/nordic/boards/supermini_nrf52840/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/supermini_nrf52840/pins.c b/ports/nordic/boards/supermini_nrf52840/pins.c index 1a8dcc101fb6..831c142b3ad5 100644 --- a/ports/nordic/boards/supermini_nrf52840/pins.c +++ b/ports/nordic/boards/supermini_nrf52840/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/teknikio_bluebird/board.c b/ports/nordic/boards/teknikio_bluebird/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/teknikio_bluebird/board.c +++ b/ports/nordic/boards/teknikio_bluebird/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/teknikio_bluebird/mpconfigboard.h b/ports/nordic/boards/teknikio_bluebird/mpconfigboard.h index 8ddeeb72aa45..b011b03fc3b5 100644 --- a/ports/nordic/boards/teknikio_bluebird/mpconfigboard.h +++ b/ports/nordic/boards/teknikio_bluebird/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT // https://github.com/Teknikio/TKInventionBuilderFramework diff --git a/ports/nordic/boards/teknikio_bluebird/pins.c b/ports/nordic/boards/teknikio_bluebird/pins.c index 3e05773b1200..880174db3dfa 100644 --- a/ports/nordic/boards/teknikio_bluebird/pins.c +++ b/ports/nordic/boards/teknikio_bluebird/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/tinkeringtech_scoutmakes_azul/board.c b/ports/nordic/boards/tinkeringtech_scoutmakes_azul/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/tinkeringtech_scoutmakes_azul/board.c +++ b/ports/nordic/boards/tinkeringtech_scoutmakes_azul/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/tinkeringtech_scoutmakes_azul/mpconfigboard.h b/ports/nordic/boards/tinkeringtech_scoutmakes_azul/mpconfigboard.h index 2d6663394219..c2d00d864328 100644 --- a/ports/nordic/boards/tinkeringtech_scoutmakes_azul/mpconfigboard.h +++ b/ports/nordic/boards/tinkeringtech_scoutmakes_azul/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx/hal/nrf_gpio.h" diff --git a/ports/nordic/boards/tinkeringtech_scoutmakes_azul/pins.c b/ports/nordic/boards/tinkeringtech_scoutmakes_azul/pins.c index af26f8e71e80..2d35a27ebf99 100644 --- a/ports/nordic/boards/tinkeringtech_scoutmakes_azul/pins.c +++ b/ports/nordic/boards/tinkeringtech_scoutmakes_azul/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/boards/warmbit_bluepixel/board.c b/ports/nordic/boards/warmbit_bluepixel/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/nordic/boards/warmbit_bluepixel/board.c +++ b/ports/nordic/boards/warmbit_bluepixel/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/nordic/boards/warmbit_bluepixel/mpconfigboard.h b/ports/nordic/boards/warmbit_bluepixel/mpconfigboard.h index 484032f9c387..d7b02d1ab6df 100644 --- a/ports/nordic/boards/warmbit_bluepixel/mpconfigboard.h +++ b/ports/nordic/boards/warmbit_bluepixel/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "WarmBit BluePixel nRF52840" diff --git a/ports/nordic/boards/warmbit_bluepixel/pins.c b/ports/nordic/boards/warmbit_bluepixel/pins.c index 667eb31b72d2..b96da73c39f5 100644 --- a/ports/nordic/boards/warmbit_bluepixel/pins.c +++ b/ports/nordic/boards/warmbit_bluepixel/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/nordic/common-hal/_bleio/Adapter.c b/ports/nordic/common-hal/_bleio/Adapter.c index b2f67648b3d3..35e6fca2449a 100644 --- a/ports/nordic/common-hal/_bleio/Adapter.c +++ b/ports/nordic/common-hal/_bleio/Adapter.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * Copyright (c) 2016 Glenn Ruben Bakke - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/nordic/common-hal/_bleio/Adapter.h b/ports/nordic/common-hal/_bleio/Adapter.h index 8f5b1e892df3..f8ade79b0040 100644 --- a/ports/nordic/common-hal/_bleio/Adapter.h +++ b/ports/nordic/common-hal/_bleio/Adapter.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_ADAPTER_H #define MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_ADAPTER_H diff --git a/ports/nordic/common-hal/_bleio/Attribute.c b/ports/nordic/common-hal/_bleio/Attribute.c index c55914b10d6d..47ca62d1501a 100644 --- a/ports/nordic/common-hal/_bleio/Attribute.c +++ b/ports/nordic/common-hal/_bleio/Attribute.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/_bleio/Attribute.h" diff --git a/ports/nordic/common-hal/_bleio/Attribute.h b/ports/nordic/common-hal/_bleio/Attribute.h index 8cc361046ed6..385166639c24 100644 --- a/ports/nordic/common-hal/_bleio/Attribute.h +++ b/ports/nordic/common-hal/_bleio/Attribute.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_ATTRIBUTE_H #define MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_ATTRIBUTE_H diff --git a/ports/nordic/common-hal/_bleio/Characteristic.c b/ports/nordic/common-hal/_bleio/Characteristic.c index 5771b1db8dbf..23c861e1f19c 100644 --- a/ports/nordic/common-hal/_bleio/Characteristic.c +++ b/ports/nordic/common-hal/_bleio/Characteristic.c @@ -1,29 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" diff --git a/ports/nordic/common-hal/_bleio/Characteristic.h b/ports/nordic/common-hal/_bleio/Characteristic.h index f7a3ec3e1a29..fd9dd0680dc1 100644 --- a/ports/nordic/common-hal/_bleio/Characteristic.h +++ b/ports/nordic/common-hal/_bleio/Characteristic.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_CHARACTERISTIC_H #define MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_CHARACTERISTIC_H diff --git a/ports/nordic/common-hal/_bleio/CharacteristicBuffer.c b/ports/nordic/common-hal/_bleio/CharacteristicBuffer.c index 0c89a6f2a93e..66987aac12b6 100644 --- a/ports/nordic/common-hal/_bleio/CharacteristicBuffer.c +++ b/ports/nordic/common-hal/_bleio/CharacteristicBuffer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/nordic/common-hal/_bleio/CharacteristicBuffer.h b/ports/nordic/common-hal/_bleio/CharacteristicBuffer.h index ba3d7ba3fcee..6e2dc0874ed8 100644 --- a/ports/nordic/common-hal/_bleio/CharacteristicBuffer.h +++ b/ports/nordic/common-hal/_bleio/CharacteristicBuffer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_CHARACTERISTICBUFFER_H #define MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_CHARACTERISTICBUFFER_H diff --git a/ports/nordic/common-hal/_bleio/Connection.c b/ports/nordic/common-hal/_bleio/Connection.c index 136b94c79574..227f2e2afbb4 100644 --- a/ports/nordic/common-hal/_bleio/Connection.c +++ b/ports/nordic/common-hal/_bleio/Connection.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "shared-bindings/_bleio/Connection.h" diff --git a/ports/nordic/common-hal/_bleio/Connection.h b/ports/nordic/common-hal/_bleio/Connection.h index eb095c993a68..a8729ad72747 100644 --- a/ports/nordic/common-hal/_bleio/Connection.h +++ b/ports/nordic/common-hal/_bleio/Connection.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_CONNECTION_H #define MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_CONNECTION_H diff --git a/ports/nordic/common-hal/_bleio/Descriptor.c b/ports/nordic/common-hal/_bleio/Descriptor.c index 10a6a5c29971..959c8e5c9c0c 100644 --- a/ports/nordic/common-hal/_bleio/Descriptor.c +++ b/ports/nordic/common-hal/_bleio/Descriptor.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" diff --git a/ports/nordic/common-hal/_bleio/Descriptor.h b/ports/nordic/common-hal/_bleio/Descriptor.h index 4d6ac2543f49..674a2aa5027c 100644 --- a/ports/nordic/common-hal/_bleio/Descriptor.h +++ b/ports/nordic/common-hal/_bleio/Descriptor.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_DESCRIPTOR_H #define MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_DESCRIPTOR_H diff --git a/ports/nordic/common-hal/_bleio/PacketBuffer.c b/ports/nordic/common-hal/_bleio/PacketBuffer.c index 45544c90ed03..c12a5268676e 100644 --- a/ports/nordic/common-hal/_bleio/PacketBuffer.c +++ b/ports/nordic/common-hal/_bleio/PacketBuffer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019-2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019-2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/nordic/common-hal/_bleio/PacketBuffer.h b/ports/nordic/common-hal/_bleio/PacketBuffer.h index 9e679fc5ca70..38fea8bda0d3 100644 --- a/ports/nordic/common-hal/_bleio/PacketBuffer.h +++ b/ports/nordic/common-hal/_bleio/PacketBuffer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019-2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019-2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_PACKETBUFFER_H #define MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_PACKETBUFFER_H diff --git a/ports/nordic/common-hal/_bleio/Service.c b/ports/nordic/common-hal/_bleio/Service.c index b0a6eeb83b71..83d477dbc310 100644 --- a/ports/nordic/common-hal/_bleio/Service.c +++ b/ports/nordic/common-hal/_bleio/Service.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "ble_drv.h" #include "ble.h" diff --git a/ports/nordic/common-hal/_bleio/Service.h b/ports/nordic/common-hal/_bleio/Service.h index 00f611dd9deb..b2892b3320ac 100644 --- a/ports/nordic/common-hal/_bleio/Service.h +++ b/ports/nordic/common-hal/_bleio/Service.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_SERVICE_H #define MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_SERVICE_H diff --git a/ports/nordic/common-hal/_bleio/UUID.c b/ports/nordic/common-hal/_bleio/UUID.c index 71096b9fdf5f..e3fdae6d5d3d 100644 --- a/ports/nordic/common-hal/_bleio/UUID.c +++ b/ports/nordic/common-hal/_bleio/UUID.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/nordic/common-hal/_bleio/UUID.h b/ports/nordic/common-hal/_bleio/UUID.h index 7d3a6204ecd2..588f09c2ee85 100644 --- a/ports/nordic/common-hal/_bleio/UUID.h +++ b/ports/nordic/common-hal/_bleio/UUID.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_UUID_H #define MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_UUID_H diff --git a/ports/nordic/common-hal/_bleio/__init__.c b/ports/nordic/common-hal/_bleio/__init__.c index f3edbc97d9bb..563da0a97200 100644 --- a/ports/nordic/common-hal/_bleio/__init__.c +++ b/ports/nordic/common-hal/_bleio/__init__.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/nordic/common-hal/_bleio/__init__.h b/ports/nordic/common-hal/_bleio/__init__.h index f10001f66260..d3f4688b403d 100644 --- a/ports/nordic/common-hal/_bleio/__init__.h +++ b/ports/nordic/common-hal/_bleio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_INIT_H #define MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_INIT_H diff --git a/ports/nordic/common-hal/_bleio/bonding.c b/ports/nordic/common-hal/_bleio/bonding.c index 42df817c7183..a4a9a8b87f0c 100644 --- a/ports/nordic/common-hal/_bleio/bonding.c +++ b/ports/nordic/common-hal/_bleio/bonding.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/nordic/common-hal/_bleio/bonding.h b/ports/nordic/common-hal/_bleio/bonding.h index 0884fe8c1343..dc89e2932635 100644 --- a/ports/nordic/common-hal/_bleio/bonding.h +++ b/ports/nordic/common-hal/_bleio/bonding.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_BONDING_H #define MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_BONDING_H diff --git a/ports/nordic/common-hal/alarm/SleepMemory.c b/ports/nordic/common-hal/alarm/SleepMemory.c index c63cbb7af5ea..039b9ededd4f 100644 --- a/ports/nordic/common-hal/alarm/SleepMemory.c +++ b/ports/nordic/common-hal/alarm/SleepMemory.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Junji Sakai - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Junji Sakai +// +// SPDX-License-Identifier: MIT #include #include "py/runtime.h" diff --git a/ports/nordic/common-hal/alarm/SleepMemory.h b/ports/nordic/common-hal/alarm/SleepMemory.h index bb50c36e89a3..49cfc2f44aec 100644 --- a/ports/nordic/common-hal/alarm/SleepMemory.h +++ b/ports/nordic/common-hal/alarm/SleepMemory.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Junji Sakai - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Junji Sakai +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/nordic/common-hal/alarm/__init__.c b/ports/nordic/common-hal/alarm/__init__.c index d8435a59a27e..34e4d27f544f 100644 --- a/ports/nordic/common-hal/alarm/__init__.c +++ b/ports/nordic/common-hal/alarm/__init__.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2020 Dan Halbert for Adafruit Industries - * Copyright (c) 2021 Junji Sakai - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2021 Junji Sakai +// +// SPDX-License-Identifier: MIT #include "py/gc.h" #include "py/obj.h" diff --git a/ports/nordic/common-hal/alarm/__init__.h b/ports/nordic/common-hal/alarm/__init__.h index 7c4634610d81..91d717ccce27 100644 --- a/ports/nordic/common-hal/alarm/__init__.h +++ b/ports/nordic/common-hal/alarm/__init__.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Dan Halbert for Adafruit Industries. - * Copyright (c) 2021 Junji Sakai - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries. +// SPDX-FileCopyrightText: Copyright (c) 2021 Junji Sakai +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/nordic/common-hal/alarm/coproc/CoprocAlarm.c b/ports/nordic/common-hal/alarm/coproc/CoprocAlarm.c index 4bd8276f3492..a7f2dfca2b67 100644 --- a/ports/nordic/common-hal/alarm/coproc/CoprocAlarm.c +++ b/ports/nordic/common-hal/alarm/coproc/CoprocAlarm.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // empty file diff --git a/ports/nordic/common-hal/alarm/coproc/CoprocAlarm.h b/ports/nordic/common-hal/alarm/coproc/CoprocAlarm.h index 4bd8276f3492..a7f2dfca2b67 100644 --- a/ports/nordic/common-hal/alarm/coproc/CoprocAlarm.h +++ b/ports/nordic/common-hal/alarm/coproc/CoprocAlarm.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // empty file diff --git a/ports/nordic/common-hal/alarm/pin/PinAlarm.c b/ports/nordic/common-hal/alarm/pin/PinAlarm.c index a1d72d07c83b..2d0cbb23e7e2 100644 --- a/ports/nordic/common-hal/alarm/pin/PinAlarm.c +++ b/ports/nordic/common-hal/alarm/pin/PinAlarm.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Dan Halbert for Adafruit Industries - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2021 Junji Sakai - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2021 Junji Sakai +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" #include diff --git a/ports/nordic/common-hal/alarm/pin/PinAlarm.h b/ports/nordic/common-hal/alarm/pin/PinAlarm.h index 9181cb60944d..a380f2e6b9bc 100644 --- a/ports/nordic/common-hal/alarm/pin/PinAlarm.h +++ b/ports/nordic/common-hal/alarm/pin/PinAlarm.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Junji Sakai - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Junji Sakai +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/nordic/common-hal/alarm/time/TimeAlarm.c b/ports/nordic/common-hal/alarm/time/TimeAlarm.c index ce09926fc654..4b462f870c29 100644 --- a/ports/nordic/common-hal/alarm/time/TimeAlarm.c +++ b/ports/nordic/common-hal/alarm/time/TimeAlarm.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Dan Halbert for Adafruit Industries - * Copyright (c) 2021 Junji Sakai - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2021 Junji Sakai +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" #include diff --git a/ports/nordic/common-hal/alarm/time/TimeAlarm.h b/ports/nordic/common-hal/alarm/time/TimeAlarm.h index c5f76c800344..74acffdf4880 100644 --- a/ports/nordic/common-hal/alarm/time/TimeAlarm.h +++ b/ports/nordic/common-hal/alarm/time/TimeAlarm.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Junji Sakai - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Junji Sakai +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/nordic/common-hal/alarm/touch/TouchAlarm.c b/ports/nordic/common-hal/alarm/touch/TouchAlarm.c index 5c1d48926255..46d9768f8706 100644 --- a/ports/nordic/common-hal/alarm/touch/TouchAlarm.c +++ b/ports/nordic/common-hal/alarm/touch/TouchAlarm.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" diff --git a/ports/nordic/common-hal/alarm/touch/TouchAlarm.h b/ports/nordic/common-hal/alarm/touch/TouchAlarm.h index 31aa30117a5a..083146c05d80 100644 --- a/ports/nordic/common-hal/alarm/touch/TouchAlarm.h +++ b/ports/nordic/common-hal/alarm/touch/TouchAlarm.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/nordic/common-hal/analogio/AnalogIn.c b/ports/nordic/common-hal/analogio/AnalogIn.c index 5cea0ce1cd8b..e48c9dd2e28a 100644 --- a/ports/nordic/common-hal/analogio/AnalogIn.c +++ b/ports/nordic/common-hal/analogio/AnalogIn.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "common-hal/analogio/AnalogIn.h" #include "shared-bindings/analogio/AnalogIn.h" diff --git a/ports/nordic/common-hal/analogio/AnalogIn.h b/ports/nordic/common-hal/analogio/AnalogIn.h index 0f5fe3208fe3..c3cd94e53004 100644 --- a/ports/nordic/common-hal/analogio/AnalogIn.h +++ b/ports/nordic/common-hal/analogio/AnalogIn.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_ANALOGIO_ANALOGIN_H #define MICROPY_INCLUDED_NRF_COMMON_HAL_ANALOGIO_ANALOGIN_H diff --git a/ports/nordic/common-hal/analogio/AnalogOut.c b/ports/nordic/common-hal/analogio/AnalogOut.c index 4ae258fd0234..baf538ffce90 100644 --- a/ports/nordic/common-hal/analogio/AnalogOut.c +++ b/ports/nordic/common-hal/analogio/AnalogOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/analogio/AnalogOut.h" diff --git a/ports/nordic/common-hal/analogio/AnalogOut.h b/ports/nordic/common-hal/analogio/AnalogOut.h index 3244ee33b828..c07260aeb683 100644 --- a/ports/nordic/common-hal/analogio/AnalogOut.h +++ b/ports/nordic/common-hal/analogio/AnalogOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_ANALOGIO_ANALOGOUT_H #define MICROPY_INCLUDED_NRF_COMMON_HAL_ANALOGIO_ANALOGOUT_H diff --git a/ports/nordic/common-hal/analogio/__init__.c b/ports/nordic/common-hal/analogio/__init__.c index eea58c77d631..d9027d63ec8b 100644 --- a/ports/nordic/common-hal/analogio/__init__.c +++ b/ports/nordic/common-hal/analogio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No analogio module functions. diff --git a/ports/nordic/common-hal/audiobusio/I2SOut.c b/ports/nordic/common-hal/audiobusio/I2SOut.c index 34270a8f5b3a..fc84927909b5 100644 --- a/ports/nordic/common-hal/audiobusio/I2SOut.c +++ b/ports/nordic/common-hal/audiobusio/I2SOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/nordic/common-hal/audiobusio/I2SOut.h b/ports/nordic/common-hal/audiobusio/I2SOut.h index 16047e0ab8ee..6a877af722e6 100644 --- a/ports/nordic/common-hal/audiobusio/I2SOut.h +++ b/ports/nordic/common-hal/audiobusio/I2SOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_AUDIOBUSIO_I2SOUT_H #define MICROPY_INCLUDED_NRF_COMMON_HAL_AUDIOBUSIO_I2SOUT_H diff --git a/ports/nordic/common-hal/audiobusio/PDMIn.c b/ports/nordic/common-hal/audiobusio/PDMIn.c index a92a42796d2f..c0cba8d08f6d 100644 --- a/ports/nordic/common-hal/audiobusio/PDMIn.c +++ b/ports/nordic/common-hal/audiobusio/PDMIn.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "common-hal/audiobusio/PDMIn.h" #include "shared-bindings/audiobusio/PDMIn.h" diff --git a/ports/nordic/common-hal/audiobusio/PDMIn.h b/ports/nordic/common-hal/audiobusio/PDMIn.h index d921e42ff38a..cafa8d0ef0ac 100644 --- a/ports/nordic/common-hal/audiobusio/PDMIn.h +++ b/ports/nordic/common-hal/audiobusio/PDMIn.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_AUDIOBUSIO_AUDIOOUT_H #define MICROPY_INCLUDED_NRF_COMMON_HAL_AUDIOBUSIO_AUDIOOUT_H diff --git a/ports/nordic/common-hal/audiobusio/__init__.c b/ports/nordic/common-hal/audiobusio/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/nordic/common-hal/audiobusio/__init__.c +++ b/ports/nordic/common-hal/audiobusio/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/nordic/common-hal/audiopwmio/PWMAudioOut.c b/ports/nordic/common-hal/audiopwmio/PWMAudioOut.c index 0730768df9d8..6476bcbc8c17 100644 --- a/ports/nordic/common-hal/audiopwmio/PWMAudioOut.c +++ b/ports/nordic/common-hal/audiopwmio/PWMAudioOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/nordic/common-hal/audiopwmio/PWMAudioOut.h b/ports/nordic/common-hal/audiopwmio/PWMAudioOut.h index 7af8f23ea0e5..9569811ccd9f 100644 --- a/ports/nordic/common-hal/audiopwmio/PWMAudioOut.h +++ b/ports/nordic/common-hal/audiopwmio/PWMAudioOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/nordic/common-hal/audiopwmio/__init__.c b/ports/nordic/common-hal/audiopwmio/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/nordic/common-hal/audiopwmio/__init__.c +++ b/ports/nordic/common-hal/audiopwmio/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/nordic/common-hal/board/__init__.c b/ports/nordic/common-hal/board/__init__.c index 880033ed6796..bcae8371c18c 100644 --- a/ports/nordic/common-hal/board/__init__.c +++ b/ports/nordic/common-hal/board/__init__.c @@ -1,25 +1,5 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT diff --git a/ports/nordic/common-hal/busio/I2C.c b/ports/nordic/common-hal/busio/I2C.c index 0e1878a1ded9..a71e320377c2 100644 --- a/ports/nordic/common-hal/busio/I2C.c +++ b/ports/nordic/common-hal/busio/I2C.c @@ -1,31 +1,11 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2017 hathach - * Copyright (c) 2016 Sandeep Mistry All right reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2017 hathach +// SPDX-FileCopyrightText: Copyright (c) 2016 Sandeep Mistry All right reserved. +// +// SPDX-License-Identifier: MIT #include "shared-bindings/busio/I2C.h" #include "shared-bindings/microcontroller/__init__.h" diff --git a/ports/nordic/common-hal/busio/I2C.h b/ports/nordic/common-hal/busio/I2C.h index 126c93d8487a..08566182f0cc 100644 --- a/ports/nordic/common-hal/busio/I2C.h +++ b/ports/nordic/common-hal/busio/I2C.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BUSIO_I2C_H #define MICROPY_INCLUDED_NRF_COMMON_HAL_BUSIO_I2C_H diff --git a/ports/nordic/common-hal/busio/SPI.c b/ports/nordic/common-hal/busio/SPI.c index 48fae8adc3eb..f2613b677610 100644 --- a/ports/nordic/common-hal/busio/SPI.c +++ b/ports/nordic/common-hal/busio/SPI.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/nordic/common-hal/busio/SPI.h b/ports/nordic/common-hal/busio/SPI.h index 91c65ee0df07..f3e878a0d082 100644 --- a/ports/nordic/common-hal/busio/SPI.h +++ b/ports/nordic/common-hal/busio/SPI.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BUSIO_SPI_H #define MICROPY_INCLUDED_NRF_COMMON_HAL_BUSIO_SPI_H diff --git a/ports/nordic/common-hal/busio/UART.c b/ports/nordic/common-hal/busio/UART.c index 5c843705fd66..c9b0024db921 100644 --- a/ports/nordic/common-hal/busio/UART.c +++ b/ports/nordic/common-hal/busio/UART.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Ha Thach for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Ha Thach for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/microcontroller/__init__.h" #include "shared-bindings/busio/UART.h" diff --git a/ports/nordic/common-hal/busio/UART.h b/ports/nordic/common-hal/busio/UART.h index 2eaf58440313..d1abc82e5e72 100644 --- a/ports/nordic/common-hal/busio/UART.h +++ b/ports/nordic/common-hal/busio/UART.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BUSIO_UART_H #define MICROPY_INCLUDED_NRF_COMMON_HAL_BUSIO_UART_H diff --git a/ports/nordic/common-hal/busio/__init__.c b/ports/nordic/common-hal/busio/__init__.c index 41761b6743ae..b726684324a3 100644 --- a/ports/nordic/common-hal/busio/__init__.c +++ b/ports/nordic/common-hal/busio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No busio module functions. diff --git a/ports/nordic/common-hal/countio/Counter.c b/ports/nordic/common-hal/countio/Counter.c index 825fcd0a2812..fdb86fc50465 100644 --- a/ports/nordic/common-hal/countio/Counter.c +++ b/ports/nordic/common-hal/countio/Counter.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + #include "common-hal/countio/Counter.h" #include "shared-bindings/countio/Counter.h" diff --git a/ports/nordic/common-hal/countio/Counter.h b/ports/nordic/common-hal/countio/Counter.h index a90bea70d644..b800a448a54f 100644 --- a/ports/nordic/common-hal/countio/Counter.h +++ b/ports/nordic/common-hal/countio/Counter.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + #ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_COUNTIO_COUNTER_H #define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_COUNTIO_COUNTER_H diff --git a/ports/nordic/common-hal/countio/__init__.c b/ports/nordic/common-hal/countio/__init__.c index d47de33e53c3..86d03caa9b87 100644 --- a/ports/nordic/common-hal/countio/__init__.c +++ b/ports/nordic/common-hal/countio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No countio module functions diff --git a/ports/nordic/common-hal/digitalio/DigitalInOut.c b/ports/nordic/common-hal/digitalio/DigitalInOut.c index 041730a66017..58205c9b9920 100644 --- a/ports/nordic/common-hal/digitalio/DigitalInOut.c +++ b/ports/nordic/common-hal/digitalio/DigitalInOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/digitalio/DigitalInOut.h" #include "py/runtime.h" diff --git a/ports/nordic/common-hal/digitalio/DigitalInOut.h b/ports/nordic/common-hal/digitalio/DigitalInOut.h index 9122ba4a13f3..d4121968ed98 100644 --- a/ports/nordic/common-hal/digitalio/DigitalInOut.h +++ b/ports/nordic/common-hal/digitalio/DigitalInOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_DIGITALIO_DIGITALINOUT_H #define MICROPY_INCLUDED_NRF_COMMON_HAL_DIGITALIO_DIGITALINOUT_H diff --git a/ports/nordic/common-hal/digitalio/__init__.c b/ports/nordic/common-hal/digitalio/__init__.c index 20fad459593a..fa222ed01f03 100644 --- a/ports/nordic/common-hal/digitalio/__init__.c +++ b/ports/nordic/common-hal/digitalio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No digitalio module functions. diff --git a/ports/nordic/common-hal/max3421e/Max3421E.c b/ports/nordic/common-hal/max3421e/Max3421E.c index adc18b5bd487..f2eb423fa8db 100644 --- a/ports/nordic/common-hal/max3421e/Max3421E.c +++ b/ports/nordic/common-hal/max3421e/Max3421E.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-module/max3421e/Max3421E.h" diff --git a/ports/nordic/common-hal/memorymap/AddressRange.c b/ports/nordic/common-hal/memorymap/AddressRange.c index 0cc90abe5e5b..e801b921d5e5 100644 --- a/ports/nordic/common-hal/memorymap/AddressRange.c +++ b/ports/nordic/common-hal/memorymap/AddressRange.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #include #include "nrf.h" diff --git a/ports/nordic/common-hal/memorymap/AddressRange.h b/ports/nordic/common-hal/memorymap/AddressRange.h index 20f59f3c736e..9018855881b2 100644 --- a/ports/nordic/common-hal/memorymap/AddressRange.h +++ b/ports/nordic/common-hal/memorymap/AddressRange.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_MEMORYMAP_ADDRESSRANGE_H #define MICROPY_INCLUDED_NRF_COMMON_HAL_MEMORYMAP_ADDRESSRANGE_H diff --git a/ports/nordic/common-hal/memorymap/__init__.c b/ports/nordic/common-hal/memorymap/__init__.c index c15b17f451a6..3919535a70a4 100644 --- a/ports/nordic/common-hal/memorymap/__init__.c +++ b/ports/nordic/common-hal/memorymap/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No memorymap module functions. diff --git a/ports/nordic/common-hal/microcontroller/Pin.c b/ports/nordic/common-hal/microcontroller/Pin.c index 39ee601428cd..c5b687d80a36 100644 --- a/ports/nordic/common-hal/microcontroller/Pin.c +++ b/ports/nordic/common-hal/microcontroller/Pin.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/microcontroller/Pin.h" #include "shared-bindings/digitalio/DigitalInOut.h" diff --git a/ports/nordic/common-hal/microcontroller/Pin.h b/ports/nordic/common-hal/microcontroller/Pin.h index f4623aa2dc06..4f7e414cb006 100644 --- a/ports/nordic/common-hal/microcontroller/Pin.h +++ b/ports/nordic/common-hal/microcontroller/Pin.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_MICROCONTROLLER_PIN_H #define MICROPY_INCLUDED_NRF_COMMON_HAL_MICROCONTROLLER_PIN_H diff --git a/ports/nordic/common-hal/microcontroller/Processor.c b/ports/nordic/common-hal/microcontroller/Processor.c index 12aee38caad1..c80da2223079 100644 --- a/ports/nordic/common-hal/microcontroller/Processor.c +++ b/ports/nordic/common-hal/microcontroller/Processor.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" diff --git a/ports/nordic/common-hal/microcontroller/Processor.h b/ports/nordic/common-hal/microcontroller/Processor.h index 1abbe1e4ebab..744bb2238f27 100644 --- a/ports/nordic/common-hal/microcontroller/Processor.h +++ b/ports/nordic/common-hal/microcontroller/Processor.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H #define MICROPY_INCLUDED_NRF_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H diff --git a/ports/nordic/common-hal/microcontroller/__init__.c b/ports/nordic/common-hal/microcontroller/__init__.c index 40f60f90def4..ca5b82ff6bb8 100644 --- a/ports/nordic/common-hal/microcontroller/__init__.c +++ b/ports/nordic/common-hal/microcontroller/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/mphal.h" #include "py/obj.h" diff --git a/ports/nordic/common-hal/neopixel_write/__init__.c b/ports/nordic/common-hal/neopixel_write/__init__.c index 6e38dca8c1e0..66a1d70e8691 100644 --- a/ports/nordic/common-hal/neopixel_write/__init__.c +++ b/ports/nordic/common-hal/neopixel_write/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 hathach for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 hathach for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/mphal.h" #include "py/mpstate.h" diff --git a/ports/nordic/common-hal/neopixel_write/__init__.h b/ports/nordic/common-hal/neopixel_write/__init__.h index 9366235af7e7..5a6e7a79fb34 100644 --- a/ports/nordic/common-hal/neopixel_write/__init__.h +++ b/ports/nordic/common-hal/neopixel_write/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32F4_COMMON_HAL_NEOPIXEL_WRITE_INIT_H #define MICROPY_INCLUDED_STM32F4_COMMON_HAL_NEOPIXEL_WRITE_INIT_H diff --git a/ports/nordic/common-hal/nvm/ByteArray.c b/ports/nordic/common-hal/nvm/ByteArray.c index 539f66a5b170..c846a61f7514 100644 --- a/ports/nordic/common-hal/nvm/ByteArray.c +++ b/ports/nordic/common-hal/nvm/ByteArray.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Nick Moore for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Nick Moore for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" #include "common-hal/nvm/ByteArray.h" diff --git a/ports/nordic/common-hal/nvm/ByteArray.h b/ports/nordic/common-hal/nvm/ByteArray.h index b3609a59257c..461a9af5bb64 100644 --- a/ports/nordic/common-hal/nvm/ByteArray.h +++ b/ports/nordic/common-hal/nvm/ByteArray.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Nick Moore for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Nick Moore for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_NVM_BYTEARRAY_H #define MICROPY_INCLUDED_NRF_COMMON_HAL_NVM_BYTEARRAY_H diff --git a/ports/nordic/common-hal/nvm/__init__.c b/ports/nordic/common-hal/nvm/__init__.c index 3cdc9d3a4c09..a125e68d5f42 100644 --- a/ports/nordic/common-hal/nvm/__init__.c +++ b/ports/nordic/common-hal/nvm/__init__.c @@ -1,27 +1,7 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Nick Moore for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Nick Moore for Adafruit Industries +// +// SPDX-License-Identifier: MIT // No nvm module functions. diff --git a/ports/nordic/common-hal/os/__init__.c b/ports/nordic/common-hal/os/__init__.c index caddcdc2e24f..d3b589521307 100644 --- a/ports/nordic/common-hal/os/__init__.c +++ b/ports/nordic/common-hal/os/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "genhdr/mpversion.h" #include "py/mpconfig.h" diff --git a/ports/nordic/common-hal/paralleldisplaybus/ParallelBus.c b/ports/nordic/common-hal/paralleldisplaybus/ParallelBus.c index 1c9e46da5ec1..5377d020f6bc 100644 --- a/ports/nordic/common-hal/paralleldisplaybus/ParallelBus.c +++ b/ports/nordic/common-hal/paralleldisplaybus/ParallelBus.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/paralleldisplaybus/ParallelBus.h" diff --git a/ports/nordic/common-hal/paralleldisplaybus/ParallelBus.h b/ports/nordic/common-hal/paralleldisplaybus/ParallelBus.h index 759bf88f377e..6d673c409897 100644 --- a/ports/nordic/common-hal/paralleldisplaybus/ParallelBus.h +++ b/ports/nordic/common-hal/paralleldisplaybus/ParallelBus.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/nordic/common-hal/pulseio/PulseIn.c b/ports/nordic/common-hal/pulseio/PulseIn.c index 97f887061df7..0a2286090e0e 100644 --- a/ports/nordic/common-hal/pulseio/PulseIn.c +++ b/ports/nordic/common-hal/pulseio/PulseIn.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "common-hal/pulseio/PulseIn.h" diff --git a/ports/nordic/common-hal/pulseio/PulseIn.h b/ports/nordic/common-hal/pulseio/PulseIn.h index dc6677b0b4c0..0463df3fcf87 100644 --- a/ports/nordic/common-hal/pulseio/PulseIn.h +++ b/ports/nordic/common-hal/pulseio/PulseIn.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/nordic/common-hal/pulseio/PulseOut.c b/ports/nordic/common-hal/pulseio/PulseOut.c index 13432c1bb561..87f358845d3c 100644 --- a/ports/nordic/common-hal/pulseio/PulseOut.c +++ b/ports/nordic/common-hal/pulseio/PulseOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "common-hal/pulseio/PulseOut.h" diff --git a/ports/nordic/common-hal/pulseio/PulseOut.h b/ports/nordic/common-hal/pulseio/PulseOut.h index 46fd1fd1aab2..9245747b2071 100644 --- a/ports/nordic/common-hal/pulseio/PulseOut.h +++ b/ports/nordic/common-hal/pulseio/PulseOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/nordic/common-hal/pulseio/__init__.c b/ports/nordic/common-hal/pulseio/__init__.c index 2bee925bc77f..50db4c40454e 100644 --- a/ports/nordic/common-hal/pulseio/__init__.c +++ b/ports/nordic/common-hal/pulseio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No pulseio module functions. diff --git a/ports/nordic/common-hal/pwmio/PWMOut.c b/ports/nordic/common-hal/pwmio/PWMOut.c index 921bb68e5511..2deb946aec00 100644 --- a/ports/nordic/common-hal/pwmio/PWMOut.c +++ b/ports/nordic/common-hal/pwmio/PWMOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include "nrf.h" diff --git a/ports/nordic/common-hal/pwmio/PWMOut.h b/ports/nordic/common-hal/pwmio/PWMOut.h index efc4a02b905d..771aaf8e7160 100644 --- a/ports/nordic/common-hal/pwmio/PWMOut.h +++ b/ports/nordic/common-hal/pwmio/PWMOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/nordic/common-hal/pwmio/__init__.c b/ports/nordic/common-hal/pwmio/__init__.c index 9e551a1072b3..b43cd8b1b396 100644 --- a/ports/nordic/common-hal/pwmio/__init__.c +++ b/ports/nordic/common-hal/pwmio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No pwmio module functions. diff --git a/ports/nordic/common-hal/rgbmatrix/RGBMatrix.c b/ports/nordic/common-hal/rgbmatrix/RGBMatrix.c index 238fee9764a6..01f2cbc737eb 100644 --- a/ports/nordic/common-hal/rgbmatrix/RGBMatrix.c +++ b/ports/nordic/common-hal/rgbmatrix/RGBMatrix.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/nordic/common-hal/rgbmatrix/RGBMatrix.h b/ports/nordic/common-hal/rgbmatrix/RGBMatrix.h index 8101b9c6bc3d..de4757383368 100644 --- a/ports/nordic/common-hal/rgbmatrix/RGBMatrix.h +++ b/ports/nordic/common-hal/rgbmatrix/RGBMatrix.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_RGBMATRIX_RGBMATRIX_H #define MICROPY_INCLUDED_NRF_COMMON_HAL_RGBMATRIX_RGBMATRIX_H diff --git a/ports/nordic/common-hal/rgbmatrix/__init__.c b/ports/nordic/common-hal/rgbmatrix/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/nordic/common-hal/rgbmatrix/__init__.c +++ b/ports/nordic/common-hal/rgbmatrix/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/nordic/common-hal/rotaryio/IncrementalEncoder.c b/ports/nordic/common-hal/rotaryio/IncrementalEncoder.c index 899296a8bace..b0617fae7e56 100644 --- a/ports/nordic/common-hal/rotaryio/IncrementalEncoder.c +++ b/ports/nordic/common-hal/rotaryio/IncrementalEncoder.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Nick Moore for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Nick Moore for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "common-hal/rotaryio/IncrementalEncoder.h" #include "shared-module/rotaryio/IncrementalEncoder.h" diff --git a/ports/nordic/common-hal/rotaryio/IncrementalEncoder.h b/ports/nordic/common-hal/rotaryio/IncrementalEncoder.h index 86fbe5475f67..299703e51135 100644 --- a/ports/nordic/common-hal/rotaryio/IncrementalEncoder.h +++ b/ports/nordic/common-hal/rotaryio/IncrementalEncoder.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_ROTARYIO_INCREMENTALENCODER_H #define MICROPY_INCLUDED_NRF_COMMON_HAL_ROTARYIO_INCREMENTALENCODER_H diff --git a/ports/nordic/common-hal/rotaryio/__init__.c b/ports/nordic/common-hal/rotaryio/__init__.c index 0aae79c26a1c..67cae26a8b7f 100644 --- a/ports/nordic/common-hal/rotaryio/__init__.c +++ b/ports/nordic/common-hal/rotaryio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No rotaryio module functions. diff --git a/ports/nordic/common-hal/rtc/RTC.c b/ports/nordic/common-hal/rtc/RTC.c index a6d2981175d5..f2d6bc06f2c1 100644 --- a/ports/nordic/common-hal/rtc/RTC.c +++ b/ports/nordic/common-hal/rtc/RTC.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Nick Moore for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Nick Moore for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/nordic/common-hal/rtc/RTC.h b/ports/nordic/common-hal/rtc/RTC.h index e51f1f7848ff..f05c924db80c 100644 --- a/ports/nordic/common-hal/rtc/RTC.h +++ b/ports/nordic/common-hal/rtc/RTC.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Noralf Trønnes - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Noralf Trønnes +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_RTC_RTC_H #define MICROPY_INCLUDED_NRF_COMMON_HAL_RTC_RTC_H diff --git a/ports/nordic/common-hal/rtc/__init__.c b/ports/nordic/common-hal/rtc/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/nordic/common-hal/rtc/__init__.c +++ b/ports/nordic/common-hal/rtc/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/nordic/common-hal/watchdog/WatchDogMode.c b/ports/nordic/common-hal/watchdog/WatchDogMode.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/nordic/common-hal/watchdog/WatchDogMode.c +++ b/ports/nordic/common-hal/watchdog/WatchDogMode.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/nordic/common-hal/watchdog/WatchDogTimer.c b/ports/nordic/common-hal/watchdog/WatchDogTimer.c index 074a916be81c..86d844c38fcb 100644 --- a/ports/nordic/common-hal/watchdog/WatchDogTimer.c +++ b/ports/nordic/common-hal/watchdog/WatchDogTimer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Nick Moore for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Nick Moore for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/nordic/common-hal/watchdog/WatchDogTimer.h b/ports/nordic/common-hal/watchdog/WatchDogTimer.h index e298a71ba7cf..f7faeee599d5 100644 --- a/ports/nordic/common-hal/watchdog/WatchDogTimer.h +++ b/ports/nordic/common-hal/watchdog/WatchDogTimer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Noralf Trønnes - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Noralf Trønnes +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_WATCHDOG_WATCHDOGTIMER_H #define MICROPY_INCLUDED_NRF_COMMON_HAL_WATCHDOG_WATCHDOGTIMER_H diff --git a/ports/nordic/common-hal/watchdog/__init__.c b/ports/nordic/common-hal/watchdog/__init__.c index 79875d127929..14186ab88a93 100644 --- a/ports/nordic/common-hal/watchdog/__init__.c +++ b/ports/nordic/common-hal/watchdog/__init__.c @@ -1,25 +1,5 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Nick Moore for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Nick Moore for Adafruit Industries +// +// SPDX-License-Identifier: MIT diff --git a/ports/nordic/common-hal/watchdog/__init__.h b/ports/nordic/common-hal/watchdog/__init__.h index de19bdae4463..331e7344620d 100644 --- a/ports/nordic/common-hal/watchdog/__init__.h +++ b/ports/nordic/common-hal/watchdog/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Noralf Trønnes - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Noralf Trønnes +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_WATCHDOG___INIT___H #define MICROPY_INCLUDED_NRF_COMMON_HAL_WATCHDOG___INIT___H diff --git a/ports/nordic/device/nrf52/startup_nrf52.c b/ports/nordic/device/nrf52/startup_nrf52.c index 81eaa4e329f1..1f14b1e1a631 100644 --- a/ports/nordic/device/nrf52/startup_nrf52.c +++ b/ports/nordic/device/nrf52/startup_nrf52.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/nordic/device/nrf52/startup_nrf52833.c b/ports/nordic/device/nrf52/startup_nrf52833.c index 67abf71ce4ed..0bf6f43055c9 100644 --- a/ports/nordic/device/nrf52/startup_nrf52833.c +++ b/ports/nordic/device/nrf52/startup_nrf52833.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/nordic/device/nrf52/startup_nrf52840.c b/ports/nordic/device/nrf52/startup_nrf52840.c index b6ef3c54ab4f..6b81fac2a9cb 100644 --- a/ports/nordic/device/nrf52/startup_nrf52840.c +++ b/ports/nordic/device/nrf52/startup_nrf52840.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/nordic/freeze/test.py b/ports/nordic/freeze/test.py deleted file mode 100644 index ba05ae102096..000000000000 --- a/ports/nordic/freeze/test.py +++ /dev/null @@ -1,5 +0,0 @@ -import sys - - -def hello(): - print("Hello %s!" % sys.platform) diff --git a/ports/nordic/gccollect.c b/ports/nordic/gccollect.c index 453bc61f2b14..10955af279f8 100644 --- a/ports/nordic/gccollect.c +++ b/ports/nordic/gccollect.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/nordic/ld_defines.c b/ports/nordic/ld_defines.c index 7a59531b0e94..0663405f1acd 100644 --- a/ports/nordic/ld_defines.c +++ b/ports/nordic/ld_defines.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // Fake source file used only to capture #define values for use in ld template files. #include "mpconfigport.h" diff --git a/ports/nordic/mpconfigport.h b/ports/nordic/mpconfigport.h index d97d9277d023..ddaff7276529 100644 --- a/ports/nordic/mpconfigport.h +++ b/ports/nordic/mpconfigport.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2015 Glenn Ruben Bakke - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2015 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef NRF5_MPCONFIGPORT_H__ #define NRF5_MPCONFIGPORT_H__ diff --git a/ports/nordic/mphalport.h b/ports/nordic/mphalport.h index a93d998855f3..c534f73d0afa 100644 --- a/ports/nordic/mphalport.h +++ b/ports/nordic/mphalport.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2015 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2015 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #ifndef __NRF52_HAL #define __NRF52_HAL diff --git a/ports/nordic/nrfx_config.h b/ports/nordic/nrfx_config.h index 927b8ff697ca..0cfe834023c0 100644 --- a/ports/nordic/nrfx_config.h +++ b/ports/nordic/nrfx_config.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + #ifndef NRFX_CONFIG_H__ #define NRFX_CONFIG_H__ diff --git a/ports/nordic/nrfx_glue.h b/ports/nordic/nrfx_glue.h index c54f8e2c13db..cdd6c7e758e9 100644 --- a/ports/nordic/nrfx_glue.h +++ b/ports/nordic/nrfx_glue.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /** * Copyright (c) 2017 - 2018, Nordic Semiconductor ASA * diff --git a/ports/nordic/nrfx_log.h b/ports/nordic/nrfx_log.h index 886eb75f8662..f6ef36ee185c 100644 --- a/ports/nordic/nrfx_log.h +++ b/ports/nordic/nrfx_log.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /** * Copyright (c) 2017 - 2018, Nordic Semiconductor ASA * diff --git a/ports/nordic/peripherals/nrf/cache.c b/ports/nordic/peripherals/nrf/cache.c index 54bb77980b28..13757991d183 100644 --- a/ports/nordic/peripherals/nrf/cache.c +++ b/ports/nordic/peripherals/nrf/cache.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx.h" #include "peripherals/nrf/cache.h" diff --git a/ports/nordic/peripherals/nrf/cache.h b/ports/nordic/peripherals/nrf/cache.h index d9ba63f3db6c..5c9bd35b7076 100644 --- a/ports/nordic/peripherals/nrf/cache.h +++ b/ports/nordic/peripherals/nrf/cache.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT void nrf_peripherals_disable_and_clear_cache(void); void nrf_peripherals_enable_cache(void); diff --git a/ports/nordic/peripherals/nrf/clocks.c b/ports/nordic/peripherals/nrf/clocks.c index aef956f2da82..0eb4c4404eee 100644 --- a/ports/nordic/peripherals/nrf/clocks.c +++ b/ports/nordic/peripherals/nrf/clocks.c @@ -1,29 +1,8 @@ - -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx.h" #include "mpconfigport.h" diff --git a/ports/nordic/peripherals/nrf/clocks.h b/ports/nordic/peripherals/nrf/clocks.h index e815d849ff5b..986c35561cc4 100644 --- a/ports/nordic/peripherals/nrf/clocks.h +++ b/ports/nordic/peripherals/nrf/clocks.h @@ -1,27 +1,7 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT void nrf_peripherals_clocks_init(void); diff --git a/ports/nordic/peripherals/nrf/nrf52833/pins.c b/ports/nordic/peripherals/nrf/nrf52833/pins.c index cdd4959cb2dd..6fce4b0f0929 100644 --- a/ports/nordic/peripherals/nrf/nrf52833/pins.c +++ b/ports/nordic/peripherals/nrf/nrf52833/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/ports/nordic/peripherals/nrf/nrf52833/pins.h b/ports/nordic/peripherals/nrf/nrf52833/pins.h index 44baa315b20f..e3ae4874d782 100644 --- a/ports/nordic/peripherals/nrf/nrf52833/pins.h +++ b/ports/nordic/peripherals/nrf/nrf52833/pins.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 by Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 by Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_PERIPHERALS_NRF52833_PINS_H #define MICROPY_INCLUDED_NRF_PERIPHERALS_NRF52833_PINS_H diff --git a/ports/nordic/peripherals/nrf/nrf52833/power.c b/ports/nordic/peripherals/nrf/nrf52833/power.c index 192a49acca35..4f084e716495 100644 --- a/ports/nordic/peripherals/nrf/nrf52833/power.c +++ b/ports/nordic/peripherals/nrf/nrf52833/power.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx.h" #include "hal/nrf_nvmc.h" diff --git a/ports/nordic/peripherals/nrf/nrf52840/pins.c b/ports/nordic/peripherals/nrf/nrf52840/pins.c index b7dc8e65e059..7bc160aa136f 100644 --- a/ports/nordic/peripherals/nrf/nrf52840/pins.c +++ b/ports/nordic/peripherals/nrf/nrf52840/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/ports/nordic/peripherals/nrf/nrf52840/pins.h b/ports/nordic/peripherals/nrf/nrf52840/pins.h index 3ad72ff6327a..d71ff03209bc 100644 --- a/ports/nordic/peripherals/nrf/nrf52840/pins.h +++ b/ports/nordic/peripherals/nrf/nrf52840/pins.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 by Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 by Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_PERIPHERALS_NRF52840_PINS_H #define MICROPY_INCLUDED_NRF_PERIPHERALS_NRF52840_PINS_H diff --git a/ports/nordic/peripherals/nrf/nrf52840/power.c b/ports/nordic/peripherals/nrf/nrf52840/power.c index e1573bd60234..e3a7e4135cfe 100644 --- a/ports/nordic/peripherals/nrf/nrf52840/power.c +++ b/ports/nordic/peripherals/nrf/nrf52840/power.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx.h" #include "hal/nrf_nvmc.h" diff --git a/ports/nordic/peripherals/nrf/nvm.c b/ports/nordic/peripherals/nrf/nvm.c index 06a6429227d5..408c6a26c6b0 100644 --- a/ports/nordic/peripherals/nrf/nvm.c +++ b/ports/nordic/peripherals/nrf/nvm.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * Copyright (c) 2019 Nick Moore for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// SPDX-FileCopyrightText: Copyright (c) 2019 Nick Moore for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" diff --git a/ports/nordic/peripherals/nrf/nvm.h b/ports/nordic/peripherals/nrf/nvm.h index da8080f0afb4..3137c5f3ee15 100644 --- a/ports/nordic/peripherals/nrf/nvm.h +++ b/ports/nordic/peripherals/nrf/nvm.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * Copyright (c) 2019 Nick Moore for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// SPDX-FileCopyrightText: Copyright (c) 2019 Nick Moore for Adafruit Industries +// +// SPDX-License-Identifier: MIT #define FLASH_PAGE_SIZE (4096) diff --git a/ports/nordic/peripherals/nrf/pins.h b/ports/nordic/peripherals/nrf/pins.h index e3f947ca276d..db8f0d15cb70 100644 --- a/ports/nordic/peripherals/nrf/pins.h +++ b/ports/nordic/peripherals/nrf/pins.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT // DO NOT include this file directly. Use shared-bindings/microcontroller/Pin.h instead to ensure // that all necessary includes are already included. diff --git a/ports/nordic/peripherals/nrf/power.h b/ports/nordic/peripherals/nrf/power.h index c3744618cac1..ba6bb8a56134 100644 --- a/ports/nordic/peripherals/nrf/power.h +++ b/ports/nordic/peripherals/nrf/power.h @@ -1,27 +1,7 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT void nrf_peripherals_power_init(void); diff --git a/ports/nordic/peripherals/nrf/timers.c b/ports/nordic/peripherals/nrf/timers.c index 1a63bbc17929..bec70b6cb778 100644 --- a/ports/nordic/peripherals/nrf/timers.c +++ b/ports/nordic/peripherals/nrf/timers.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "common-hal/pulseio/PulseOut.h" #include "peripherals/nrf/timers.h" diff --git a/ports/nordic/peripherals/nrf/timers.h b/ports/nordic/peripherals/nrf/timers.h index 0fb529d73b88..f8ae59ac9625 100644 --- a/ports/nordic/peripherals/nrf/timers.h +++ b/ports/nordic/peripherals/nrf/timers.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx.h" #include "nrfx_timer.h" diff --git a/ports/nordic/qstrdefsport.h b/ports/nordic/qstrdefsport.h index 3ba897069bf7..57b5815583d4 100644 --- a/ports/nordic/qstrdefsport.h +++ b/ports/nordic/qstrdefsport.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // qstrs specific to this port diff --git a/ports/nordic/sd_mutex.c b/ports/nordic/sd_mutex.c index 14e1986cd675..e06e83d2463d 100644 --- a/ports/nordic/sd_mutex.c +++ b/ports/nordic/sd_mutex.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/mpconfig.h" #include "py/runtime.h" diff --git a/ports/nordic/sd_mutex.h b/ports/nordic/sd_mutex.h index 2999dc774a81..9f2eb9764208 100644 --- a/ports/nordic/sd_mutex.h +++ b/ports/nordic/sd_mutex.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_SD_MUTEX_H #define MICROPY_INCLUDED_NRF_SD_MUTEX_H diff --git a/ports/nordic/supervisor/internal_flash.c b/ports/nordic/supervisor/internal_flash.c index 4229ec771b6b..88b6a274d069 100644 --- a/ports/nordic/supervisor/internal_flash.c +++ b/ports/nordic/supervisor/internal_flash.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// +// SPDX-License-Identifier: MIT #include "supervisor/flash.h" #include diff --git a/ports/nordic/supervisor/internal_flash.h b/ports/nordic/supervisor/internal_flash.h index 81da690217b3..05632f1d755f 100644 --- a/ports/nordic/supervisor/internal_flash.h +++ b/ports/nordic/supervisor/internal_flash.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_NRF_INTERNAL_FLASH_H #define MICROPY_INCLUDED_NRF_INTERNAL_FLASH_H diff --git a/ports/nordic/supervisor/port.c b/ports/nordic/supervisor/port.c index b628806a8a75..5722a9863f97 100644 --- a/ports/nordic/supervisor/port.c +++ b/ports/nordic/supervisor/port.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2021 Junji Sakai - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2021 Junji Sakai +// +// SPDX-License-Identifier: MIT #include "supervisor/port.h" diff --git a/ports/nordic/supervisor/qspi_flash.c b/ports/nordic/supervisor/qspi_flash.c index 2ae166d3ad29..83c8fd30a91a 100644 --- a/ports/nordic/supervisor/qspi_flash.c +++ b/ports/nordic/supervisor/qspi_flash.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 hathach for Adafruit Industries - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 hathach for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/spi_flash_api.h" #include "supervisor/qspi_flash.h" diff --git a/ports/nordic/supervisor/qspi_flash.h b/ports/nordic/supervisor/qspi_flash.h index 185a155be060..556f03799670 100644 --- a/ports/nordic/supervisor/qspi_flash.h +++ b/ports/nordic/supervisor/qspi_flash.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + extern void qspi_flash_enter_sleep(void); extern void qspi_flash_exit_sleep(void); extern void qspi_disable(void); diff --git a/ports/nordic/supervisor/usb.c b/ports/nordic/supervisor/usb.c index d2d05ee312ab..7f48104f2303 100644 --- a/ports/nordic/supervisor/usb.c +++ b/ports/nordic/supervisor/usb.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 hathach for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 hathach for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "nrfx.h" #include "nrfx_power.h" diff --git a/ports/raspberrypi/Makefile b/ports/raspberrypi/Makefile index 54e6cf35f575..4d4f6695c4c7 100644 --- a/ports/raspberrypi/Makefile +++ b/ports/raspberrypi/Makefile @@ -1,26 +1,8 @@ -# This file is part of the MicroPython project, http://micropython.org/ -# -# The MIT License (MIT) +# This file is part of the CircuitPython project: https://circuitpython.org # # SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries # -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. +# SPDX-License-Identifier: MIT include ../../py/circuitpy_mkenv.mk diff --git a/ports/raspberrypi/audio_dma.c b/ports/raspberrypi/audio_dma.c index 6313d8935d0a..8ea45ae8409a 100644 --- a/ports/raspberrypi/audio_dma.c +++ b/ports/raspberrypi/audio_dma.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "audio_dma.h" diff --git a/ports/raspberrypi/audio_dma.h b/ports/raspberrypi/audio_dma.h index 440cfbfcf6d6..eeb34e78466f 100644 --- a/ports/raspberrypi/audio_dma.h +++ b/ports/raspberrypi/audio_dma.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_RASPBERRYPI_AUDIO_DMA_OUT_H #define MICROPY_INCLUDED_RASPBERRYPI_AUDIO_DMA_OUT_H diff --git a/ports/raspberrypi/background.c b/ports/raspberrypi/background.c index 1024ff7b38e7..8e34da0742ea 100644 --- a/ports/raspberrypi/background.c +++ b/ports/raspberrypi/background.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "background.h" #include "py/runtime.h" diff --git a/ports/raspberrypi/background.h b/ports/raspberrypi/background.h index c8e23e2a578f..a538a24734d5 100644 --- a/ports/raspberrypi/background.h +++ b/ports/raspberrypi/background.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_RASPBERRYPI_BACKGROUND_H #define MICROPY_INCLUDED_RASPBERRYPI_BACKGROUND_H diff --git a/ports/raspberrypi/bindings/cyw43/__init__.c b/ports/raspberrypi/bindings/cyw43/__init__.c index 372bb5748765..6f3d8163d27b 100644 --- a/ports/raspberrypi/bindings/cyw43/__init__.c +++ b/ports/raspberrypi/bindings/cyw43/__init__.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" diff --git a/ports/raspberrypi/bindings/cyw43/__init__.h b/ports/raspberrypi/bindings/cyw43/__init__.h index 995c8f134524..51657b075d26 100644 --- a/ports/raspberrypi/bindings/cyw43/__init__.h +++ b/ports/raspberrypi/bindings/cyw43/__init__.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/raspberrypi/bindings/picodvi/Framebuffer.c b/ports/raspberrypi/bindings/picodvi/Framebuffer.c index a652b0c93d77..e13dccb013c4 100644 --- a/ports/raspberrypi/bindings/picodvi/Framebuffer.c +++ b/ports/raspberrypi/bindings/picodvi/Framebuffer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/objproperty.h" diff --git a/ports/raspberrypi/bindings/picodvi/Framebuffer.h b/ports/raspberrypi/bindings/picodvi/Framebuffer.h index cfcab4af50cb..7c23fd0eaa60 100644 --- a/ports/raspberrypi/bindings/picodvi/Framebuffer.h +++ b/ports/raspberrypi/bindings/picodvi/Framebuffer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/raspberrypi/bindings/picodvi/__init__.c b/ports/raspberrypi/bindings/picodvi/__init__.c index 878da11d0c0f..0db3d29044d5 100644 --- a/ports/raspberrypi/bindings/picodvi/__init__.c +++ b/ports/raspberrypi/bindings/picodvi/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/raspberrypi/bindings/rp2pio/StateMachine.c b/ports/raspberrypi/bindings/rp2pio/StateMachine.c index a47f8f438b41..14d79f1507f0 100644 --- a/ports/raspberrypi/bindings/rp2pio/StateMachine.c +++ b/ports/raspberrypi/bindings/rp2pio/StateMachine.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // This file contains all of the Python API definitions for the // rp2pio.StateMachine class. diff --git a/ports/raspberrypi/bindings/rp2pio/StateMachine.h b/ports/raspberrypi/bindings/rp2pio/StateMachine.h index c1c7d6cd2755..8076031a35b5 100644 --- a/ports/raspberrypi/bindings/rp2pio/StateMachine.h +++ b/ports/raspberrypi/bindings/rp2pio/StateMachine.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_RASPBERRYPI_BINDINGS_RP2PIO_STATEMACHINE_H #define MICROPY_INCLUDED_RASPBERRYPI_BINDINGS_RP2PIO_STATEMACHINE_H diff --git a/ports/raspberrypi/bindings/rp2pio/__init__.c b/ports/raspberrypi/bindings/rp2pio/__init__.c index ed2eced8ea96..e9702cd8a7ea 100644 --- a/ports/raspberrypi/bindings/rp2pio/__init__.c +++ b/ports/raspberrypi/bindings/rp2pio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/runtime.h" diff --git a/ports/raspberrypi/bindings/rp2pio/__init__.h b/ports/raspberrypi/bindings/rp2pio/__init__.h index 5cf73cbde3fb..0294f690527a 100644 --- a/ports/raspberrypi/bindings/rp2pio/__init__.h +++ b/ports/raspberrypi/bindings/rp2pio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/raspberrypi/boards/0xcb_helios/board.c b/ports/raspberrypi/boards/0xcb_helios/board.c index 7d8b03d5f494..8566b79e27ec 100644 --- a/ports/raspberrypi/boards/0xcb_helios/board.c +++ b/ports/raspberrypi/boards/0xcb_helios/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Conor Burns for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Conor Burns for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/0xcb_helios/mpconfigboard.h b/ports/raspberrypi/boards/0xcb_helios/mpconfigboard.h index fcc3f7d27705..91f7e3747237 100644 --- a/ports/raspberrypi/boards/0xcb_helios/mpconfigboard.h +++ b/ports/raspberrypi/boards/0xcb_helios/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Conor Burns for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "0xCB Helios" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/0xcb_helios/pico-sdk-configboard.h b/ports/raspberrypi/boards/0xcb_helios/pico-sdk-configboard.h index 36da55d45719..1d095f07d985 100644 --- a/ports/raspberrypi/boards/0xcb_helios/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/0xcb_helios/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Conor Burns for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/0xcb_helios/pins.c b/ports/raspberrypi/boards/0xcb_helios/pins.c index 3d1b22b0a41f..2c3f663a6d00 100644 --- a/ports/raspberrypi/boards/0xcb_helios/pins.c +++ b/ports/raspberrypi/boards/0xcb_helios/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Conor Burns for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/42keebs_frood/board.c b/ports/raspberrypi/boards/42keebs_frood/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/42keebs_frood/board.c +++ b/ports/raspberrypi/boards/42keebs_frood/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/42keebs_frood/mpconfigboard.h b/ports/raspberrypi/boards/42keebs_frood/mpconfigboard.h index 7f8bcda93103..554786f33ff8 100644 --- a/ports/raspberrypi/boards/42keebs_frood/mpconfigboard.h +++ b/ports/raspberrypi/boards/42keebs_frood/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "42. Keebs Frood" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/42keebs_frood/pico-sdk-configboard.h b/ports/raspberrypi/boards/42keebs_frood/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/42keebs_frood/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/42keebs_frood/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/42keebs_frood/pins.c b/ports/raspberrypi/boards/42keebs_frood/pins.c index 972d5354b6d5..9b774c63d805 100644 --- a/ports/raspberrypi/boards/42keebs_frood/pins.c +++ b/ports/raspberrypi/boards/42keebs_frood/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040/board.c b/ports/raspberrypi/boards/adafruit_feather_rp2040/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040/board.c +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040/mpconfigboard.h index fba7dc3b19f8..831a9513cc13 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Feather RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040/pins.c b/ports/raspberrypi/boards/adafruit_feather_rp2040/pins.c index d965768fa40e..9ec97cb38dc8 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040/pins.c +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_can/board.c b/ports/raspberrypi/boards/adafruit_feather_rp2040_can/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_can/board.c +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_can/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_can/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_can/mpconfigboard.h index a012abec22af..85c83e3bcf1b 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_can/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_can/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Feather RP2040 CAN" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_can/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_can/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_can/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_can/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_can/pins.c b/ports/raspberrypi/boards/adafruit_feather_rp2040_can/pins.c index b64d007a0d2a..17eeb3d5bd32 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_can/pins.c +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_can/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/board.c b/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/board.c index c6112a555502..25267230a70f 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/board.c +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/mpconfigboard.h index 55b69b4ad897..fcb5aede24b5 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Feather RP2040 DVI" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/pins.c b/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/pins.c index 3dd0fe86bba9..6e8dd5f0d106 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/pins.c +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/board.c b/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/board.c +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/mpconfigboard.h index c9e83756e30c..6b43929194f9 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Feather RP2040 Prop-Maker" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/pins.c b/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/pins.c index 20368dd6fdd1..91d3129d07a3 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/pins.c +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/board.c b/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/board.c +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/mpconfigboard.h index fff88cc1fa56..5a58b5ed49a4 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Feather RP2040 RFM" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/pins.c b/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/pins.c index 71679fb53ba9..fef18b262d5b 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/pins.c +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/board.c b/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/board.c +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/mpconfigboard.h index d9cec8d50abb..6eed2fa78e6f 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Feather RP2040 Scorpio" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/pins.c b/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/pins.c index 9bf3a71e2560..0b7bf005b60a 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/pins.c +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/board.c b/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/board.c +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/mpconfigboard.h index e76281e893e1..2d90e4859e4a 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Feather RP2040 ThinkInk" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/pins.c b/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/pins.c index 919b495abcf0..798f9e161922 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/pins.c +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/board.c b/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/board.c index 25be5b6a249a..68ed648f46b4 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/board.c +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/mpconfigboard.h index 769f14397116..677d84ca7971 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Feather RP2040 USB Host" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/pins.c b/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/pins.c index ab07688f4ca6..b342597c9c54 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/pins.c +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/adafruit_floppsy_rp2040/board.c b/ports/raspberrypi/boards/adafruit_floppsy_rp2040/board.c index 322a1a1d634a..82cc107f0f7e 100644 --- a/ports/raspberrypi/boards/adafruit_floppsy_rp2040/board.c +++ b/ports/raspberrypi/boards/adafruit_floppsy_rp2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/raspberrypi/boards/adafruit_floppsy_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_floppsy_rp2040/mpconfigboard.h index f365ac45cff0..2305c8bcc3ef 100644 --- a/ports/raspberrypi/boards/adafruit_floppsy_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_floppsy_rp2040/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Floppsy RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_floppsy_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_floppsy_rp2040/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/adafruit_floppsy_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_floppsy_rp2040/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_floppsy_rp2040/pins.c b/ports/raspberrypi/boards/adafruit_floppsy_rp2040/pins.c index 4921be9d35c6..546a9a869ae8 100644 --- a/ports/raspberrypi/boards/adafruit_floppsy_rp2040/pins.c +++ b/ports/raspberrypi/boards/adafruit_floppsy_rp2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/board.c b/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/board.c +++ b/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/mpconfigboard.h index 131ddc8cee87..689c9ba96bfc 100644 --- a/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit ItsyBitsy RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/pins.c b/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/pins.c index 37ae364dc744..1be725d6f77f 100644 --- a/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/pins.c +++ b/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/adafruit_kb2040/board.c b/ports/raspberrypi/boards/adafruit_kb2040/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/adafruit_kb2040/board.c +++ b/ports/raspberrypi/boards/adafruit_kb2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/adafruit_kb2040/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_kb2040/mpconfigboard.h index e1bfbb01e7aa..963bbb27c05a 100644 --- a/ports/raspberrypi/boards/adafruit_kb2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_kb2040/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit KB2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_kb2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_kb2040/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/adafruit_kb2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_kb2040/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_kb2040/pins.c b/ports/raspberrypi/boards/adafruit_kb2040/pins.c index fcf305d67b9c..ebdcff884b29 100644 --- a/ports/raspberrypi/boards/adafruit_kb2040/pins.c +++ b/ports/raspberrypi/boards/adafruit_kb2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/adafruit_macropad_rp2040/board.c b/ports/raspberrypi/boards/adafruit_macropad_rp2040/board.c index 0006b80260a9..4386f4ffd4ee 100644 --- a/ports/raspberrypi/boards/adafruit_macropad_rp2040/board.c +++ b/ports/raspberrypi/boards/adafruit_macropad_rp2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/board/__init__.h" #include "shared-bindings/fourwire/FourWire.h" diff --git a/ports/raspberrypi/boards/adafruit_macropad_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_macropad_rp2040/mpconfigboard.h index 00a97d088d13..7f410ebb4d1e 100644 --- a/ports/raspberrypi/boards/adafruit_macropad_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_macropad_rp2040/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Macropad RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_macropad_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_macropad_rp2040/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/adafruit_macropad_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_macropad_rp2040/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_macropad_rp2040/pins.c b/ports/raspberrypi/boards/adafruit_macropad_rp2040/pins.c index 1abb8469f09a..8b1698c5ad66 100644 --- a/ports/raspberrypi/boards/adafruit_macropad_rp2040/pins.c +++ b/ports/raspberrypi/boards/adafruit_macropad_rp2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/raspberrypi/boards/adafruit_metro_rp2040/board.c b/ports/raspberrypi/boards/adafruit_metro_rp2040/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/adafruit_metro_rp2040/board.c +++ b/ports/raspberrypi/boards/adafruit_metro_rp2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/adafruit_metro_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_metro_rp2040/mpconfigboard.h index 62eabc67f81e..42901d23836f 100644 --- a/ports/raspberrypi/boards/adafruit_metro_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_metro_rp2040/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit Metro RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_metro_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_metro_rp2040/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/adafruit_metro_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_metro_rp2040/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_metro_rp2040/pins.c b/ports/raspberrypi/boards/adafruit_metro_rp2040/pins.c index 04ae94c80f81..9e8e0b869ce0 100644 --- a/ports/raspberrypi/boards/adafruit_metro_rp2040/pins.c +++ b/ports/raspberrypi/boards/adafruit_metro_rp2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/adafruit_qt2040_trinkey/board.c b/ports/raspberrypi/boards/adafruit_qt2040_trinkey/board.c index c94078ae60a5..5a44f1167f0d 100644 --- a/ports/raspberrypi/boards/adafruit_qt2040_trinkey/board.c +++ b/ports/raspberrypi/boards/adafruit_qt2040_trinkey/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/adafruit_qt2040_trinkey/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_qt2040_trinkey/mpconfigboard.h index 1ee27b2e7aef..27ebadda23f9 100644 --- a/ports/raspberrypi/boards/adafruit_qt2040_trinkey/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_qt2040_trinkey/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit QT2040 Trinkey" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_qt2040_trinkey/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_qt2040_trinkey/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/adafruit_qt2040_trinkey/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_qt2040_trinkey/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_qt2040_trinkey/pins.c b/ports/raspberrypi/boards/adafruit_qt2040_trinkey/pins.c index 1bdf2b35dfb3..7de4a94529fa 100644 --- a/ports/raspberrypi/boards/adafruit_qt2040_trinkey/pins.c +++ b/ports/raspberrypi/boards/adafruit_qt2040_trinkey/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/adafruit_qtpy_rp2040/board.c b/ports/raspberrypi/boards/adafruit_qtpy_rp2040/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/adafruit_qtpy_rp2040/board.c +++ b/ports/raspberrypi/boards/adafruit_qtpy_rp2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/adafruit_qtpy_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_qtpy_rp2040/mpconfigboard.h index f606ab22c4e9..972bfd34debc 100644 --- a/ports/raspberrypi/boards/adafruit_qtpy_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_qtpy_rp2040/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Adafruit QT Py RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_qtpy_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_qtpy_rp2040/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/adafruit_qtpy_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_qtpy_rp2040/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_qtpy_rp2040/pins.c b/ports/raspberrypi/boards/adafruit_qtpy_rp2040/pins.c index 082807f5772a..a7f5351502c3 100644 --- a/ports/raspberrypi/boards/adafruit_qtpy_rp2040/pins.c +++ b/ports/raspberrypi/boards/adafruit_qtpy_rp2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" CIRCUITPY_BOARD_BUS_SINGLETON(stemma_i2c, i2c, 1) diff --git a/ports/raspberrypi/boards/arduino_nano_rp2040_connect/board.c b/ports/raspberrypi/boards/arduino_nano_rp2040_connect/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/arduino_nano_rp2040_connect/board.c +++ b/ports/raspberrypi/boards/arduino_nano_rp2040_connect/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/arduino_nano_rp2040_connect/mpconfigboard.h b/ports/raspberrypi/boards/arduino_nano_rp2040_connect/mpconfigboard.h index 6ed0bac64188..aec4591c9abb 100644 --- a/ports/raspberrypi/boards/arduino_nano_rp2040_connect/mpconfigboard.h +++ b/ports/raspberrypi/boards/arduino_nano_rp2040_connect/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Arduino Nano RP2040 Connect" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/arduino_nano_rp2040_connect/pico-sdk-configboard.h b/ports/raspberrypi/boards/arduino_nano_rp2040_connect/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/arduino_nano_rp2040_connect/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/arduino_nano_rp2040_connect/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/arduino_nano_rp2040_connect/pins.c b/ports/raspberrypi/boards/arduino_nano_rp2040_connect/pins.c index dd77b185b0a6..b691015b7dec 100644 --- a/ports/raspberrypi/boards/arduino_nano_rp2040_connect/pins.c +++ b/ports/raspberrypi/boards/arduino_nano_rp2040_connect/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/boardsource_blok/board.c b/ports/raspberrypi/boards/boardsource_blok/board.c index 55540c965ac1..0c7574ea8a89 100644 --- a/ports/raspberrypi/boards/boardsource_blok/board.c +++ b/ports/raspberrypi/boards/boardsource_blok/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/raspberrypi/boards/boardsource_blok/mpconfigboard.h b/ports/raspberrypi/boards/boardsource_blok/mpconfigboard.h index 0ac77bf54e0a..eb75d69b3dc6 100644 --- a/ports/raspberrypi/boards/boardsource_blok/mpconfigboard.h +++ b/ports/raspberrypi/boards/boardsource_blok/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "BLOK" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/boardsource_blok/pico-sdk-configboard.h b/ports/raspberrypi/boards/boardsource_blok/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/boardsource_blok/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/boardsource_blok/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/boardsource_blok/pins.c b/ports/raspberrypi/boards/boardsource_blok/pins.c index e3b0ba01692e..8f62ad898715 100644 --- a/ports/raspberrypi/boards/boardsource_blok/pins.c +++ b/ports/raspberrypi/boards/boardsource_blok/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/breadstick_raspberry/board.c b/ports/raspberrypi/boards/breadstick_raspberry/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/breadstick_raspberry/board.c +++ b/ports/raspberrypi/boards/breadstick_raspberry/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/breadstick_raspberry/mpconfigboard.h b/ports/raspberrypi/boards/breadstick_raspberry/mpconfigboard.h index e0ea38048537..2b3ec7378026 100644 --- a/ports/raspberrypi/boards/breadstick_raspberry/mpconfigboard.h +++ b/ports/raspberrypi/boards/breadstick_raspberry/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Raspberry Breadstick" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/breadstick_raspberry/pico-sdk-configboard.h b/ports/raspberrypi/boards/breadstick_raspberry/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/breadstick_raspberry/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/breadstick_raspberry/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/breadstick_raspberry/pins.c b/ports/raspberrypi/boards/breadstick_raspberry/pins.c index 1e152ac0816f..b067375b511c 100644 --- a/ports/raspberrypi/boards/breadstick_raspberry/pins.c +++ b/ports/raspberrypi/boards/breadstick_raspberry/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/bwshockley_figpi/board.c b/ports/raspberrypi/boards/bwshockley_figpi/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/bwshockley_figpi/board.c +++ b/ports/raspberrypi/boards/bwshockley_figpi/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/bwshockley_figpi/mpconfigboard.h b/ports/raspberrypi/boards/bwshockley_figpi/mpconfigboard.h index 88847a21bc6a..9abfdc9a723f 100644 --- a/ports/raspberrypi/boards/bwshockley_figpi/mpconfigboard.h +++ b/ports/raspberrypi/boards/bwshockley_figpi/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Fig Pi" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/bwshockley_figpi/pico-sdk-configboard.h b/ports/raspberrypi/boards/bwshockley_figpi/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/bwshockley_figpi/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/bwshockley_figpi/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/bwshockley_figpi/pins.c b/ports/raspberrypi/boards/bwshockley_figpi/pins.c index f178e533fb47..885b34085c75 100644 --- a/ports/raspberrypi/boards/bwshockley_figpi/pins.c +++ b/ports/raspberrypi/boards/bwshockley_figpi/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" CIRCUITPY_BOARD_BUS_SINGLETON(stemma_i2c, i2c, 1) diff --git a/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/board.c b/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/board.c +++ b/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/mpconfigboard.h b/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/mpconfigboard.h index a3f79af481b8..809748ca5565 100644 --- a/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/mpconfigboard.h +++ b/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Challenger NB RP2040 WiFi" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/pico-sdk-configboard.h b/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/pins.c b/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/pins.c index 5c03fe37ff49..8f06debeff4d 100644 --- a/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/pins.c +++ b/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/challenger_rp2040_lora/board.c b/ports/raspberrypi/boards/challenger_rp2040_lora/board.c index b66ea0e27fd4..daadad4e4eb8 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_lora/board.c +++ b/ports/raspberrypi/boards/challenger_rp2040_lora/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Pontus Oldberg, Invector Labs - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Pontus Oldberg, Invector Labs +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/challenger_rp2040_lora/mpconfigboard.h b/ports/raspberrypi/boards/challenger_rp2040_lora/mpconfigboard.h index a5245b98feb6..241131bc3375 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_lora/mpconfigboard.h +++ b/ports/raspberrypi/boards/challenger_rp2040_lora/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Pontus Oldberg, Invector Labs +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Challenger RP2040 LoRa" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/challenger_rp2040_lora/pico-sdk-configboard.h b/ports/raspberrypi/boards/challenger_rp2040_lora/pico-sdk-configboard.h index 36da55d45719..8cdca16a13e7 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_lora/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/challenger_rp2040_lora/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Pontus Oldberg, Invector Labs +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/challenger_rp2040_lora/pins.c b/ports/raspberrypi/boards/challenger_rp2040_lora/pins.c index 0eff192f9f5c..efe76e48b013 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_lora/pins.c +++ b/ports/raspberrypi/boards/challenger_rp2040_lora/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Pontus Oldberg, Invector Labs +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/challenger_rp2040_lte/board.c b/ports/raspberrypi/boards/challenger_rp2040_lte/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_lte/board.c +++ b/ports/raspberrypi/boards/challenger_rp2040_lte/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/challenger_rp2040_lte/mpconfigboard.h b/ports/raspberrypi/boards/challenger_rp2040_lte/mpconfigboard.h index fe31bb1f5f8f..fb2f0966a9f3 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_lte/mpconfigboard.h +++ b/ports/raspberrypi/boards/challenger_rp2040_lte/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Challenger RP2040 LTE" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/challenger_rp2040_lte/pico-sdk-configboard.h b/ports/raspberrypi/boards/challenger_rp2040_lte/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_lte/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/challenger_rp2040_lte/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/challenger_rp2040_lte/pins.c b/ports/raspberrypi/boards/challenger_rp2040_lte/pins.c index f6694922fb40..3214d430f917 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_lte/pins.c +++ b/ports/raspberrypi/boards/challenger_rp2040_lte/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/challenger_rp2040_sdrtc/board.c b/ports/raspberrypi/boards/challenger_rp2040_sdrtc/board.c index b66ea0e27fd4..daadad4e4eb8 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_sdrtc/board.c +++ b/ports/raspberrypi/boards/challenger_rp2040_sdrtc/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Pontus Oldberg, Invector Labs - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Pontus Oldberg, Invector Labs +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/challenger_rp2040_sdrtc/mpconfigboard.h b/ports/raspberrypi/boards/challenger_rp2040_sdrtc/mpconfigboard.h index b8f08b9956e1..cee09737b312 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_sdrtc/mpconfigboard.h +++ b/ports/raspberrypi/boards/challenger_rp2040_sdrtc/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Pontus Oldberg, Invector Labs +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Challenger RP2040 SD/RTC" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/challenger_rp2040_sdrtc/pico-sdk-configboard.h b/ports/raspberrypi/boards/challenger_rp2040_sdrtc/pico-sdk-configboard.h index 36da55d45719..8cdca16a13e7 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_sdrtc/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/challenger_rp2040_sdrtc/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Pontus Oldberg, Invector Labs +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/challenger_rp2040_sdrtc/pins.c b/ports/raspberrypi/boards/challenger_rp2040_sdrtc/pins.c index 7f4f620b59ee..2bc6669c1661 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_sdrtc/pins.c +++ b/ports/raspberrypi/boards/challenger_rp2040_sdrtc/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Pontus Oldberg, Invector Labs +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/challenger_rp2040_subghz/board.c b/ports/raspberrypi/boards/challenger_rp2040_subghz/board.c index b66ea0e27fd4..daadad4e4eb8 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_subghz/board.c +++ b/ports/raspberrypi/boards/challenger_rp2040_subghz/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Pontus Oldberg, Invector Labs - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Pontus Oldberg, Invector Labs +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/challenger_rp2040_subghz/mpconfigboard.h b/ports/raspberrypi/boards/challenger_rp2040_subghz/mpconfigboard.h index 0e41e9f3a5a7..3f6f8bc49e15 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_subghz/mpconfigboard.h +++ b/ports/raspberrypi/boards/challenger_rp2040_subghz/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Pontus Oldberg, Invector Labs +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Challenger RP2040 SubGHz" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/challenger_rp2040_subghz/pico-sdk-configboard.h b/ports/raspberrypi/boards/challenger_rp2040_subghz/pico-sdk-configboard.h index 36da55d45719..8cdca16a13e7 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_subghz/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/challenger_rp2040_subghz/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Pontus Oldberg, Invector Labs +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/challenger_rp2040_subghz/pins.c b/ports/raspberrypi/boards/challenger_rp2040_subghz/pins.c index f5275e84dc2d..e520deb45537 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_subghz/pins.c +++ b/ports/raspberrypi/boards/challenger_rp2040_subghz/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Pontus Oldberg, Invector Labs +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/challenger_rp2040_wifi/board.c b/ports/raspberrypi/boards/challenger_rp2040_wifi/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_wifi/board.c +++ b/ports/raspberrypi/boards/challenger_rp2040_wifi/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/challenger_rp2040_wifi/mpconfigboard.h b/ports/raspberrypi/boards/challenger_rp2040_wifi/mpconfigboard.h index a8df6a123330..efba5fc0d593 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_wifi/mpconfigboard.h +++ b/ports/raspberrypi/boards/challenger_rp2040_wifi/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Challenger RP2040 WiFi" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/challenger_rp2040_wifi/pico-sdk-configboard.h b/ports/raspberrypi/boards/challenger_rp2040_wifi/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_wifi/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/challenger_rp2040_wifi/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/challenger_rp2040_wifi/pins.c b/ports/raspberrypi/boards/challenger_rp2040_wifi/pins.c index bae1951830e1..a8aeabeb1473 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_wifi/pins.c +++ b/ports/raspberrypi/boards/challenger_rp2040_wifi/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/board.c b/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/board.c index de6e424ed92b..835af44e4c9a 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/board.c +++ b/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/mpconfigboard.h b/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/mpconfigboard.h index 76c074807999..42bed2502038 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/mpconfigboard.h +++ b/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Challenger RP2040 WiFi/BLE" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/pico-sdk-configboard.h b/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/pins.c b/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/pins.c index 57d7ecc69878..1a69bfd395fd 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/pins.c +++ b/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/cosmo_pico/board.c b/ports/raspberrypi/boards/cosmo_pico/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/cosmo_pico/board.c +++ b/ports/raspberrypi/boards/cosmo_pico/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/cosmo_pico/mpconfigboard.h b/ports/raspberrypi/boards/cosmo_pico/mpconfigboard.h index d313e6097fc1..194af6d2a5f0 100644 --- a/ports/raspberrypi/boards/cosmo_pico/mpconfigboard.h +++ b/ports/raspberrypi/boards/cosmo_pico/mpconfigboard.h @@ -1,2 +1,8 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "COSMO-Pico" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/cosmo_pico/pico-sdk-configboard.h b/ports/raspberrypi/boards/cosmo_pico/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/cosmo_pico/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/cosmo_pico/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/cosmo_pico/pins.c b/ports/raspberrypi/boards/cosmo_pico/pins.c index f2c094cb4d99..246949c652cf 100644 --- a/ports/raspberrypi/boards/cosmo_pico/pins.c +++ b/ports/raspberrypi/boards/cosmo_pico/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/cytron_edu_pico_w/board.c b/ports/raspberrypi/boards/cytron_edu_pico_w/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/cytron_edu_pico_w/board.c +++ b/ports/raspberrypi/boards/cytron_edu_pico_w/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/cytron_edu_pico_w/mpconfigboard.h b/ports/raspberrypi/boards/cytron_edu_pico_w/mpconfigboard.h index 89d2c56212ea..5ebfc3a66973 100644 --- a/ports/raspberrypi/boards/cytron_edu_pico_w/mpconfigboard.h +++ b/ports/raspberrypi/boards/cytron_edu_pico_w/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Cytron EDU PICO W" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/cytron_edu_pico_w/pico-sdk-configboard.h b/ports/raspberrypi/boards/cytron_edu_pico_w/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/cytron_edu_pico_w/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/cytron_edu_pico_w/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/cytron_edu_pico_w/pins.c b/ports/raspberrypi/boards/cytron_edu_pico_w/pins.c index 1821fc389516..5d044a9a2d28 100644 --- a/ports/raspberrypi/boards/cytron_edu_pico_w/pins.c +++ b/ports/raspberrypi/boards/cytron_edu_pico_w/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/cytron_maker_nano_rp2040/board.c b/ports/raspberrypi/boards/cytron_maker_nano_rp2040/board.c index 22f2970c9e80..92de172b9b3e 100644 --- a/ports/raspberrypi/boards/cytron_maker_nano_rp2040/board.c +++ b/ports/raspberrypi/boards/cytron_maker_nano_rp2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Wai Weng for Cytron Technologies - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Wai Weng for Cytron Technologies +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/cytron_maker_nano_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/cytron_maker_nano_rp2040/mpconfigboard.h index 2d182e78c98a..fc1fed9e4304 100644 --- a/ports/raspberrypi/boards/cytron_maker_nano_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/cytron_maker_nano_rp2040/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Wai Weng for Cytron Technologies +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Cytron Maker Nano RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/cytron_maker_nano_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/cytron_maker_nano_rp2040/pico-sdk-configboard.h index a41131dd22b7..5cb0e226e721 100644 --- a/ports/raspberrypi/boards/cytron_maker_nano_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/cytron_maker_nano_rp2040/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Wai Weng for Cytron Technologies +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/cytron_maker_nano_rp2040/pins.c b/ports/raspberrypi/boards/cytron_maker_nano_rp2040/pins.c index 19b4ffc6fae2..bfbb72ab805c 100644 --- a/ports/raspberrypi/boards/cytron_maker_nano_rp2040/pins.c +++ b/ports/raspberrypi/boards/cytron_maker_nano_rp2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Wai Weng for Cytron Technologies +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/cytron_maker_pi_rp2040/board.c b/ports/raspberrypi/boards/cytron_maker_pi_rp2040/board.c index 22f2970c9e80..92de172b9b3e 100644 --- a/ports/raspberrypi/boards/cytron_maker_pi_rp2040/board.c +++ b/ports/raspberrypi/boards/cytron_maker_pi_rp2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Wai Weng for Cytron Technologies - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Wai Weng for Cytron Technologies +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/cytron_maker_pi_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/cytron_maker_pi_rp2040/mpconfigboard.h index 9c035c7d1350..923f79c652f1 100644 --- a/ports/raspberrypi/boards/cytron_maker_pi_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/cytron_maker_pi_rp2040/mpconfigboard.h @@ -1,2 +1,8 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Wai Weng for Cytron Technologies +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Cytron Maker Pi RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/cytron_maker_pi_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/cytron_maker_pi_rp2040/pico-sdk-configboard.h index 36da55d45719..36894c8103df 100644 --- a/ports/raspberrypi/boards/cytron_maker_pi_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/cytron_maker_pi_rp2040/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Wai Weng for Cytron Technologies +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/cytron_maker_pi_rp2040/pins.c b/ports/raspberrypi/boards/cytron_maker_pi_rp2040/pins.c index d4d776f04fd1..7d4e42bf0254 100644 --- a/ports/raspberrypi/boards/cytron_maker_pi_rp2040/pins.c +++ b/ports/raspberrypi/boards/cytron_maker_pi_rp2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Wai Weng for Cytron Technologies +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/cytron_maker_uno_rp2040/board.c b/ports/raspberrypi/boards/cytron_maker_uno_rp2040/board.c index 198c069da14a..219a99b27d62 100644 --- a/ports/raspberrypi/boards/cytron_maker_uno_rp2040/board.c +++ b/ports/raspberrypi/boards/cytron_maker_uno_rp2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Noqman for Cytron Technologies - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Noqman for Cytron Technologies +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/cytron_maker_uno_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/cytron_maker_uno_rp2040/mpconfigboard.h index fc4567440c1c..4a97257b761e 100644 --- a/ports/raspberrypi/boards/cytron_maker_uno_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/cytron_maker_uno_rp2040/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Noqman for Cytron Technologies +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Cytron Maker Uno RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/cytron_maker_uno_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/cytron_maker_uno_rp2040/pico-sdk-configboard.h index a41131dd22b7..1eca38d1a764 100644 --- a/ports/raspberrypi/boards/cytron_maker_uno_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/cytron_maker_uno_rp2040/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Noqman for Cytron Technologies +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/cytron_maker_uno_rp2040/pins.c b/ports/raspberrypi/boards/cytron_maker_uno_rp2040/pins.c index 72312689bf83..9f42d20c72e7 100644 --- a/ports/raspberrypi/boards/cytron_maker_uno_rp2040/pins.c +++ b/ports/raspberrypi/boards/cytron_maker_uno_rp2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Noqman for Cytron Technologies +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/datanoise_picoadk/board.c b/ports/raspberrypi/boards/datanoise_picoadk/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/datanoise_picoadk/board.c +++ b/ports/raspberrypi/boards/datanoise_picoadk/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/datanoise_picoadk/mpconfigboard.h b/ports/raspberrypi/boards/datanoise_picoadk/mpconfigboard.h index f287893eeb0a..1f2b2d690315 100644 --- a/ports/raspberrypi/boards/datanoise_picoadk/mpconfigboard.h +++ b/ports/raspberrypi/boards/datanoise_picoadk/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Datanoise PicoADK" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/datanoise_picoadk/pico-sdk-configboard.h b/ports/raspberrypi/boards/datanoise_picoadk/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/datanoise_picoadk/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/datanoise_picoadk/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/datanoise_picoadk/pins.c b/ports/raspberrypi/boards/datanoise_picoadk/pins.c index 9f1cc85b5693..8ca28c4df0fb 100644 --- a/ports/raspberrypi/boards/datanoise_picoadk/pins.c +++ b/ports/raspberrypi/boards/datanoise_picoadk/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/e_fidget/board.c b/ports/raspberrypi/boards/e_fidget/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/e_fidget/board.c +++ b/ports/raspberrypi/boards/e_fidget/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/e_fidget/mpconfigboard.h b/ports/raspberrypi/boards/e_fidget/mpconfigboard.h index 5c34c77f9479..1aac87bb8823 100644 --- a/ports/raspberrypi/boards/e_fidget/mpconfigboard.h +++ b/ports/raspberrypi/boards/e_fidget/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "E-Fidget" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/e_fidget/pico-sdk-configboard.h b/ports/raspberrypi/boards/e_fidget/pico-sdk-configboard.h index 5f7eb47ae315..01d99bc142fc 100644 --- a/ports/raspberrypi/boards/e_fidget/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/e_fidget/pico-sdk-configboard.h @@ -1,2 +1,8 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. #define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64 diff --git a/ports/raspberrypi/boards/e_fidget/pins.c b/ports/raspberrypi/boards/e_fidget/pins.c index dbb27b782d22..ffbd5765a412 100644 --- a/ports/raspberrypi/boards/e_fidget/pins.c +++ b/ports/raspberrypi/boards/e_fidget/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/elecfreaks_picoed/board.c b/ports/raspberrypi/boards/elecfreaks_picoed/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/elecfreaks_picoed/board.c +++ b/ports/raspberrypi/boards/elecfreaks_picoed/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/elecfreaks_picoed/mpconfigboard.h b/ports/raspberrypi/boards/elecfreaks_picoed/mpconfigboard.h index 03d892091e9a..94a759a649d9 100644 --- a/ports/raspberrypi/boards/elecfreaks_picoed/mpconfigboard.h +++ b/ports/raspberrypi/boards/elecfreaks_picoed/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "ELECFREAKS PICO:ED" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/elecfreaks_picoed/pico-sdk-configboard.h b/ports/raspberrypi/boards/elecfreaks_picoed/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/elecfreaks_picoed/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/elecfreaks_picoed/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/elecfreaks_picoed/pins.c b/ports/raspberrypi/boards/elecfreaks_picoed/pins.c index 4542b586722a..85869e85eafb 100644 --- a/ports/raspberrypi/boards/elecfreaks_picoed/pins.c +++ b/ports/raspberrypi/boards/elecfreaks_picoed/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/electrolama_minik/board.c b/ports/raspberrypi/boards/electrolama_minik/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/electrolama_minik/board.c +++ b/ports/raspberrypi/boards/electrolama_minik/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/electrolama_minik/mpconfigboard.h b/ports/raspberrypi/boards/electrolama_minik/mpconfigboard.h index f2261ac8b7be..664ccf55c6db 100644 --- a/ports/raspberrypi/boards/electrolama_minik/mpconfigboard.h +++ b/ports/raspberrypi/boards/electrolama_minik/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Electrolama minik" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/electrolama_minik/pico-sdk-configboard.h b/ports/raspberrypi/boards/electrolama_minik/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/electrolama_minik/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/electrolama_minik/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/electrolama_minik/pins.c b/ports/raspberrypi/boards/electrolama_minik/pins.c index 21331ffda51e..f762d0010f76 100644 --- a/ports/raspberrypi/boards/electrolama_minik/pins.c +++ b/ports/raspberrypi/boards/electrolama_minik/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/hack_club_sprig/board.c b/ports/raspberrypi/boards/hack_club_sprig/board.c index e101e26d3dce..769105ce9db9 100644 --- a/ports/raspberrypi/boards/hack_club_sprig/board.c +++ b/ports/raspberrypi/boards/hack_club_sprig/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 ajs256 - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 ajs256 +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/raspberrypi/boards/hack_club_sprig/mpconfigboard.h b/ports/raspberrypi/boards/hack_club_sprig/mpconfigboard.h index 442e455c5ea2..837f67574214 100644 --- a/ports/raspberrypi/boards/hack_club_sprig/mpconfigboard.h +++ b/ports/raspberrypi/boards/hack_club_sprig/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 ajs256 +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Hack Club Sprig" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/hack_club_sprig/pico-sdk-configboard.h b/ports/raspberrypi/boards/hack_club_sprig/pico-sdk-configboard.h index 36da55d45719..9e4a8bfbda79 100644 --- a/ports/raspberrypi/boards/hack_club_sprig/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/hack_club_sprig/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 ajs256 +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/hack_club_sprig/pins.c b/ports/raspberrypi/boards/hack_club_sprig/pins.c index f0a38cbc070d..592d7f0ae540 100644 --- a/ports/raspberrypi/boards/hack_club_sprig/pins.c +++ b/ports/raspberrypi/boards/hack_club_sprig/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 ajs256 +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/heiafr_picomo_v2/board.c b/ports/raspberrypi/boards/heiafr_picomo_v2/board.c index 8d00dd2cc903..9a316673447f 100644 --- a/ports/raspberrypi/boards/heiafr_picomo_v2/board.c +++ b/ports/raspberrypi/boards/heiafr_picomo_v2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/raspberrypi/boards/heiafr_picomo_v2/mpconfigboard.h b/ports/raspberrypi/boards/heiafr_picomo_v2/mpconfigboard.h index 836b68b3ad32..72e3210d59d6 100644 --- a/ports/raspberrypi/boards/heiafr_picomo_v2/mpconfigboard.h +++ b/ports/raspberrypi/boards/heiafr_picomo_v2/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "HEIA-FR Picomo V2" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/heiafr_picomo_v2/pico-sdk-configboard.h b/ports/raspberrypi/boards/heiafr_picomo_v2/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/heiafr_picomo_v2/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/heiafr_picomo_v2/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/heiafr_picomo_v2/pins.c b/ports/raspberrypi/boards/heiafr_picomo_v2/pins.c index 568bfab2a280..082494d65874 100644 --- a/ports/raspberrypi/boards/heiafr_picomo_v2/pins.c +++ b/ports/raspberrypi/boards/heiafr_picomo_v2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/board.c b/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/board.c index 1c16e2fc4fe4..559800e34d96 100644 --- a/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/board.c +++ b/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/board/__init__.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/mpconfigboard.h index 317aec7f9977..583d699f2e3a 100644 --- a/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "EncoderPad RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/pins.c b/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/pins.c index 36f33df44305..e53f8a063e82 100644 --- a/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/pins.c +++ b/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey18/board.c b/ports/raspberrypi/boards/jpconstantineau_pykey18/board.c index 5b1190727f92..c123fd785c94 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey18/board.c +++ b/ports/raspberrypi/boards/jpconstantineau_pykey18/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey18/mpconfigboard.h b/ports/raspberrypi/boards/jpconstantineau_pykey18/mpconfigboard.h index 3394a34a231a..b593e8ba9081 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey18/mpconfigboard.h +++ b/ports/raspberrypi/boards/jpconstantineau_pykey18/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "PyKey 18 Numpad" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey18/pico-sdk-configboard.h b/ports/raspberrypi/boards/jpconstantineau_pykey18/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey18/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/jpconstantineau_pykey18/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey18/pins.c b/ports/raspberrypi/boards/jpconstantineau_pykey18/pins.c index dfa1ae9545db..3656f1c378c1 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey18/pins.c +++ b/ports/raspberrypi/boards/jpconstantineau_pykey18/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey44/board.c b/ports/raspberrypi/boards/jpconstantineau_pykey44/board.c index 4e0aa7445032..f0a395333555 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey44/board.c +++ b/ports/raspberrypi/boards/jpconstantineau_pykey44/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey44/mpconfigboard.h b/ports/raspberrypi/boards/jpconstantineau_pykey44/mpconfigboard.h index 15f70ae58a75..c43653c7846f 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey44/mpconfigboard.h +++ b/ports/raspberrypi/boards/jpconstantineau_pykey44/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "PyKey 44 Ergo" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey44/pico-sdk-configboard.h b/ports/raspberrypi/boards/jpconstantineau_pykey44/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey44/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/jpconstantineau_pykey44/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey44/pins.c b/ports/raspberrypi/boards/jpconstantineau_pykey44/pins.c index b735aad9f70a..454f942048eb 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey44/pins.c +++ b/ports/raspberrypi/boards/jpconstantineau_pykey44/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey60/board.c b/ports/raspberrypi/boards/jpconstantineau_pykey60/board.c index 4785f742ec0e..360f18e382ed 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey60/board.c +++ b/ports/raspberrypi/boards/jpconstantineau_pykey60/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey60/mpconfigboard.h b/ports/raspberrypi/boards/jpconstantineau_pykey60/mpconfigboard.h index 4fc2d4bc14b9..cfa67ec84c8e 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey60/mpconfigboard.h +++ b/ports/raspberrypi/boards/jpconstantineau_pykey60/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "PyKey 60" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey60/pico-sdk-configboard.h b/ports/raspberrypi/boards/jpconstantineau_pykey60/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey60/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/jpconstantineau_pykey60/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey60/pins.c b/ports/raspberrypi/boards/jpconstantineau_pykey60/pins.c index 033c68034dc3..01ef5ce6ee81 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey60/pins.c +++ b/ports/raspberrypi/boards/jpconstantineau_pykey60/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey87/board.c b/ports/raspberrypi/boards/jpconstantineau_pykey87/board.c index a77563c66307..751726a065da 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey87/board.c +++ b/ports/raspberrypi/boards/jpconstantineau_pykey87/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey87/mpconfigboard.h b/ports/raspberrypi/boards/jpconstantineau_pykey87/mpconfigboard.h index aee9ed27e32f..14aaf2686e60 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey87/mpconfigboard.h +++ b/ports/raspberrypi/boards/jpconstantineau_pykey87/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "PyKey 87 TKL" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey87/pico-sdk-configboard.h b/ports/raspberrypi/boards/jpconstantineau_pykey87/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey87/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/jpconstantineau_pykey87/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey87/pins.c b/ports/raspberrypi/boards/jpconstantineau_pykey87/pins.c index 63a7826f1db5..7ad659cf94a5 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey87/pins.c +++ b/ports/raspberrypi/boards/jpconstantineau_pykey87/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/lilygo_t_display_rp2040/board.c b/ports/raspberrypi/boards/lilygo_t_display_rp2040/board.c index 7d7a17aa7047..78cc912130e7 100644 --- a/ports/raspberrypi/boards/lilygo_t_display_rp2040/board.c +++ b/ports/raspberrypi/boards/lilygo_t_display_rp2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/raspberrypi/boards/lilygo_t_display_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/lilygo_t_display_rp2040/mpconfigboard.h index 757d1c08fc3a..decfca58fce0 100644 --- a/ports/raspberrypi/boards/lilygo_t_display_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/lilygo_t_display_rp2040/mpconfigboard.h @@ -1,2 +1,8 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "LILYGO T-DISPLAY" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/lilygo_t_display_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/lilygo_t_display_rp2040/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/lilygo_t_display_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/lilygo_t_display_rp2040/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/lilygo_t_display_rp2040/pins.c b/ports/raspberrypi/boards/lilygo_t_display_rp2040/pins.c index 9749a72949bb..2dcca5c656dd 100644 --- a/ports/raspberrypi/boards/lilygo_t_display_rp2040/pins.c +++ b/ports/raspberrypi/boards/lilygo_t_display_rp2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/raspberrypi/boards/maple_elite_pi/board.c b/ports/raspberrypi/boards/maple_elite_pi/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/maple_elite_pi/board.c +++ b/ports/raspberrypi/boards/maple_elite_pi/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/maple_elite_pi/mpconfigboard.h b/ports/raspberrypi/boards/maple_elite_pi/mpconfigboard.h index eab9431cd980..ce2643d44334 100644 --- a/ports/raspberrypi/boards/maple_elite_pi/mpconfigboard.h +++ b/ports/raspberrypi/boards/maple_elite_pi/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Maple Computing Elite-Pi" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/maple_elite_pi/pico-sdk-configboard.h b/ports/raspberrypi/boards/maple_elite_pi/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/maple_elite_pi/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/maple_elite_pi/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/maple_elite_pi/pins.c b/ports/raspberrypi/boards/maple_elite_pi/pins.c index 4743b6cb4734..2354cac54111 100644 --- a/ports/raspberrypi/boards/maple_elite_pi/pins.c +++ b/ports/raspberrypi/boards/maple_elite_pi/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/melopero_shake_rp2040/board.c b/ports/raspberrypi/boards/melopero_shake_rp2040/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/melopero_shake_rp2040/board.c +++ b/ports/raspberrypi/boards/melopero_shake_rp2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/melopero_shake_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/melopero_shake_rp2040/mpconfigboard.h index b9996d94d116..4fb2fc2ac735 100644 --- a/ports/raspberrypi/boards/melopero_shake_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/melopero_shake_rp2040/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Melopero Shake RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/melopero_shake_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/melopero_shake_rp2040/pico-sdk-configboard.h index 5f7eb47ae315..01d99bc142fc 100644 --- a/ports/raspberrypi/boards/melopero_shake_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/melopero_shake_rp2040/pico-sdk-configboard.h @@ -1,2 +1,8 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. #define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64 diff --git a/ports/raspberrypi/boards/melopero_shake_rp2040/pins.c b/ports/raspberrypi/boards/melopero_shake_rp2040/pins.c index ca28c1078bdd..a51856624445 100644 --- a/ports/raspberrypi/boards/melopero_shake_rp2040/pins.c +++ b/ports/raspberrypi/boards/melopero_shake_rp2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_global_dict_table[] = { diff --git a/ports/raspberrypi/boards/nullbits_bit_c_pro/board.c b/ports/raspberrypi/boards/nullbits_bit_c_pro/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/nullbits_bit_c_pro/board.c +++ b/ports/raspberrypi/boards/nullbits_bit_c_pro/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/nullbits_bit_c_pro/mpconfigboard.h b/ports/raspberrypi/boards/nullbits_bit_c_pro/mpconfigboard.h index d2a514006a98..fe658628cf23 100644 --- a/ports/raspberrypi/boards/nullbits_bit_c_pro/mpconfigboard.h +++ b/ports/raspberrypi/boards/nullbits_bit_c_pro/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "nullbits Bit-C PRO" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/nullbits_bit_c_pro/pico-sdk-configboard.h b/ports/raspberrypi/boards/nullbits_bit_c_pro/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/nullbits_bit_c_pro/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/nullbits_bit_c_pro/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/nullbits_bit_c_pro/pins.c b/ports/raspberrypi/boards/nullbits_bit_c_pro/pins.c index ac1b1a80650b..12c170eed2e1 100644 --- a/ports/raspberrypi/boards/nullbits_bit_c_pro/pins.c +++ b/ports/raspberrypi/boards/nullbits_bit_c_pro/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/odt_bread_2040/board.c b/ports/raspberrypi/boards/odt_bread_2040/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/odt_bread_2040/board.c +++ b/ports/raspberrypi/boards/odt_bread_2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/odt_bread_2040/mpconfigboard.h b/ports/raspberrypi/boards/odt_bread_2040/mpconfigboard.h index c4a0b740628f..dc9390730213 100644 --- a/ports/raspberrypi/boards/odt_bread_2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/odt_bread_2040/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Oak Dev Tech BREAD2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/odt_bread_2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/odt_bread_2040/pico-sdk-configboard.h index 7d1b96b85aa3..91d72853f757 100644 --- a/ports/raspberrypi/boards/odt_bread_2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/odt_bread_2040/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. #define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64 diff --git a/ports/raspberrypi/boards/odt_bread_2040/pins.c b/ports/raspberrypi/boards/odt_bread_2040/pins.c index 19194ceb435d..7041a217491a 100644 --- a/ports/raspberrypi/boards/odt_bread_2040/pins.c +++ b/ports/raspberrypi/boards/odt_bread_2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_global_dict_table[] = { diff --git a/ports/raspberrypi/boards/odt_cast_away_rp2040/board.c b/ports/raspberrypi/boards/odt_cast_away_rp2040/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/odt_cast_away_rp2040/board.c +++ b/ports/raspberrypi/boards/odt_cast_away_rp2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/odt_cast_away_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/odt_cast_away_rp2040/mpconfigboard.h index db2b871bb044..e91a05ec6557 100644 --- a/ports/raspberrypi/boards/odt_cast_away_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/odt_cast_away_rp2040/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Oak Dev Tech Cast-Away RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/odt_cast_away_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/odt_cast_away_rp2040/pico-sdk-configboard.h index 7d1b96b85aa3..91d72853f757 100644 --- a/ports/raspberrypi/boards/odt_cast_away_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/odt_cast_away_rp2040/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. #define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64 diff --git a/ports/raspberrypi/boards/odt_cast_away_rp2040/pins.c b/ports/raspberrypi/boards/odt_cast_away_rp2040/pins.c index 8686f7ae0b6f..63db93c15297 100644 --- a/ports/raspberrypi/boards/odt_cast_away_rp2040/pins.c +++ b/ports/raspberrypi/boards/odt_cast_away_rp2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_global_dict_table[] = { diff --git a/ports/raspberrypi/boards/pajenicko_picopad/board.c b/ports/raspberrypi/boards/pajenicko_picopad/board.c index c02c65d160e3..b52039171e72 100644 --- a/ports/raspberrypi/boards/pajenicko_picopad/board.c +++ b/ports/raspberrypi/boards/pajenicko_picopad/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/raspberrypi/boards/pajenicko_picopad/mpconfigboard.h b/ports/raspberrypi/boards/pajenicko_picopad/mpconfigboard.h index 26b84478604b..23b963d4358c 100644 --- a/ports/raspberrypi/boards/pajenicko_picopad/mpconfigboard.h +++ b/ports/raspberrypi/boards/pajenicko_picopad/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Pajenicko PicoPad" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pajenicko_picopad/pico-sdk-configboard.h b/ports/raspberrypi/boards/pajenicko_picopad/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/pajenicko_picopad/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pajenicko_picopad/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pajenicko_picopad/pins.c b/ports/raspberrypi/boards/pajenicko_picopad/pins.c index da1fe3b9dcc1..ca9c8580501c 100644 --- a/ports/raspberrypi/boards/pajenicko_picopad/pins.c +++ b/ports/raspberrypi/boards/pajenicko_picopad/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/raspberrypi/boards/pimoroni_badger2040/badger-shared.h b/ports/raspberrypi/boards/pimoroni_badger2040/badger-shared.h index c832616e7d13..66db7063d80d 100644 --- a/ports/raspberrypi/boards/pimoroni_badger2040/badger-shared.h +++ b/ports/raspberrypi/boards/pimoroni_badger2040/badger-shared.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #ifndef PIMORONI_BADGER2040_SHARED #define PIMORONI_BADGER2040_SHARED diff --git a/ports/raspberrypi/boards/pimoroni_badger2040/board.c b/ports/raspberrypi/boards/pimoroni_badger2040/board.c index b602f8cb65ac..457bff33b443 100644 --- a/ports/raspberrypi/boards/pimoroni_badger2040/board.c +++ b/ports/raspberrypi/boards/pimoroni_badger2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/pimoroni_badger2040/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_badger2040/mpconfigboard.h index f73acd1dd6d7..8affd4d4fa6d 100644 --- a/ports/raspberrypi/boards/pimoroni_badger2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_badger2040/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Pimoroni Badger 2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_badger2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_badger2040/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/pimoroni_badger2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_badger2040/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_badger2040/pins.c b/ports/raspberrypi/boards/pimoroni_badger2040/pins.c index 9cfc951d33a6..3ea0cc2bff06 100644 --- a/ports/raspberrypi/boards/pimoroni_badger2040/pins.c +++ b/ports/raspberrypi/boards/pimoroni_badger2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/raspberrypi/boards/pimoroni_badger2040w/badger-shared.h b/ports/raspberrypi/boards/pimoroni_badger2040w/badger-shared.h index 5a64e9e00ba5..d6a7388bdbb4 100644 --- a/ports/raspberrypi/boards/pimoroni_badger2040w/badger-shared.h +++ b/ports/raspberrypi/boards/pimoroni_badger2040w/badger-shared.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #ifndef PIMORONI_BADGER2040W_SHARED #define PIMORONI_BADGER2040W_SHARED diff --git a/ports/raspberrypi/boards/pimoroni_badger2040w/board.c b/ports/raspberrypi/boards/pimoroni_badger2040w/board.c index 770191e8ac17..30c05273b947 100644 --- a/ports/raspberrypi/boards/pimoroni_badger2040w/board.c +++ b/ports/raspberrypi/boards/pimoroni_badger2040w/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/pimoroni_badger2040w/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_badger2040w/mpconfigboard.h index 674f07b538f2..680317116d91 100644 --- a/ports/raspberrypi/boards/pimoroni_badger2040w/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_badger2040w/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Pimoroni Badger 2040 W" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_badger2040w/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_badger2040w/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/pimoroni_badger2040w/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_badger2040w/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_badger2040w/pins.c b/ports/raspberrypi/boards/pimoroni_badger2040w/pins.c index 49a821000ca7..7708222838ce 100644 --- a/ports/raspberrypi/boards/pimoroni_badger2040w/pins.c +++ b/ports/raspberrypi/boards/pimoroni_badger2040w/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/board.c b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/board.c index 30b010a4f4e1..650d307711e8 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/board.c +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/inky-shared.h b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/inky-shared.h index 6f85d6800285..24201751fc19 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/inky-shared.h +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/inky-shared.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #ifndef PIMORONI_INKY_SHARED #define PIMORONI_INKY_SHARED diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/mpconfigboard.h index 0817a6c594ee..59d2c93cd98b 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Pimoroni Inky Frame 5.7" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c index 6ba266e7f3d3..49ee7d2dc3a0 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/board.c b/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/board.c index e967b5cf87a1..a24c91e546da 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/board.c +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/inky-shared.h b/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/inky-shared.h index 6f85d6800285..24201751fc19 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/inky-shared.h +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/inky-shared.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #ifndef PIMORONI_INKY_SHARED #define PIMORONI_INKY_SHARED diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/mpconfigboard.h index 1e9343101e6c..5f9c4edb892d 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Pimoroni Inky Frame 7.3" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/pins.c b/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/pins.c index dbe11acc1669..e696429540ad 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/pins.c +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/pimoroni_interstate75/board.c b/ports/raspberrypi/boards/pimoroni_interstate75/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/pimoroni_interstate75/board.c +++ b/ports/raspberrypi/boards/pimoroni_interstate75/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/pimoroni_interstate75/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_interstate75/mpconfigboard.h index 052c47fa68e2..30975b0ce75e 100644 --- a/ports/raspberrypi/boards/pimoroni_interstate75/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_interstate75/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Pimoroni Interstate 75" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_interstate75/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_interstate75/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/pimoroni_interstate75/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_interstate75/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_interstate75/pins.c b/ports/raspberrypi/boards/pimoroni_interstate75/pins.c index 801a418015c4..75135427df7d 100644 --- a/ports/raspberrypi/boards/pimoroni_interstate75/pins.c +++ b/ports/raspberrypi/boards/pimoroni_interstate75/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/pimoroni_keybow2040/board.c b/ports/raspberrypi/boards/pimoroni_keybow2040/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/pimoroni_keybow2040/board.c +++ b/ports/raspberrypi/boards/pimoroni_keybow2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/pimoroni_keybow2040/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_keybow2040/mpconfigboard.h index 0641aed52d19..c34e830b1ccf 100644 --- a/ports/raspberrypi/boards/pimoroni_keybow2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_keybow2040/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Pimoroni Keybow 2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_keybow2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_keybow2040/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/pimoroni_keybow2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_keybow2040/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_keybow2040/pins.c b/ports/raspberrypi/boards/pimoroni_keybow2040/pins.c index c150de30442a..6a0bb8cecb4b 100644 --- a/ports/raspberrypi/boards/pimoroni_keybow2040/pins.c +++ b/ports/raspberrypi/boards/pimoroni_keybow2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/pimoroni_motor2040/board.c b/ports/raspberrypi/boards/pimoroni_motor2040/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/pimoroni_motor2040/board.c +++ b/ports/raspberrypi/boards/pimoroni_motor2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/pimoroni_motor2040/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_motor2040/mpconfigboard.h index b53e54ba908b..f8c432605097 100644 --- a/ports/raspberrypi/boards/pimoroni_motor2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_motor2040/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Pimoroni Motor 2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_motor2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_motor2040/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/pimoroni_motor2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_motor2040/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_motor2040/pins.c b/ports/raspberrypi/boards/pimoroni_motor2040/pins.c index caafe16ad178..ea1b8e0de4c0 100644 --- a/ports/raspberrypi/boards/pimoroni_motor2040/pins.c +++ b/ports/raspberrypi/boards/pimoroni_motor2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/pimoroni_pga2040/board.c b/ports/raspberrypi/boards/pimoroni_pga2040/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/pimoroni_pga2040/board.c +++ b/ports/raspberrypi/boards/pimoroni_pga2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/pimoroni_pga2040/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_pga2040/mpconfigboard.h index a5a041414629..51aaedc88a44 100644 --- a/ports/raspberrypi/boards/pimoroni_pga2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_pga2040/mpconfigboard.h @@ -1,2 +1,8 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Pimoroni PGA2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_pga2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_pga2040/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/pimoroni_pga2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_pga2040/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_pga2040/pins.c b/ports/raspberrypi/boards/pimoroni_pga2040/pins.c index 40975c5ad2ee..b99ba2421ea6 100644 --- a/ports/raspberrypi/boards/pimoroni_pga2040/pins.c +++ b/ports/raspberrypi/boards/pimoroni_pga2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/pimoroni_pico_dv_base/board.c b/ports/raspberrypi/boards/pimoroni_pico_dv_base/board.c index ee86bb365163..31179b7e8d16 100644 --- a/ports/raspberrypi/boards/pimoroni_pico_dv_base/board.c +++ b/ports/raspberrypi/boards/pimoroni_pico_dv_base/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/pimoroni_pico_dv_base/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_pico_dv_base/mpconfigboard.h index 969ccf74d838..378e6ba81938 100644 --- a/ports/raspberrypi/boards/pimoroni_pico_dv_base/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_pico_dv_base/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Pimoroni Pico dv Base" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_pico_dv_base/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_pico_dv_base/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/pimoroni_pico_dv_base/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_pico_dv_base/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/pimoroni_pico_dv_base/pins.c b/ports/raspberrypi/boards/pimoroni_pico_dv_base/pins.c index 15820028ec83..a952f7f680cc 100644 --- a/ports/raspberrypi/boards/pimoroni_pico_dv_base/pins.c +++ b/ports/raspberrypi/boards/pimoroni_pico_dv_base/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/board.c b/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/board.c +++ b/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/mpconfigboard.h index 648b3529f57d..9ce2a07f9e54 100644 --- a/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Pimoroni Pico DV Base W" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/pins.c b/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/pins.c index c15484427455..776f09ead8d4 100644 --- a/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/pins.c +++ b/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/raspberrypi/boards/pimoroni_picolipo_16mb/board.c b/ports/raspberrypi/boards/pimoroni_picolipo_16mb/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/pimoroni_picolipo_16mb/board.c +++ b/ports/raspberrypi/boards/pimoroni_picolipo_16mb/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/pimoroni_picolipo_16mb/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_picolipo_16mb/mpconfigboard.h index a8e5d4bb153d..ae7dd4729d94 100644 --- a/ports/raspberrypi/boards/pimoroni_picolipo_16mb/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_picolipo_16mb/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Pimoroni Pico LiPo (16MB)" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_picolipo_16mb/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_picolipo_16mb/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/pimoroni_picolipo_16mb/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_picolipo_16mb/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_picolipo_16mb/pins.c b/ports/raspberrypi/boards/pimoroni_picolipo_16mb/pins.c index a89950cca73a..5e149c10d551 100644 --- a/ports/raspberrypi/boards/pimoroni_picolipo_16mb/pins.c +++ b/ports/raspberrypi/boards/pimoroni_picolipo_16mb/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/pimoroni_picolipo_4mb/board.c b/ports/raspberrypi/boards/pimoroni_picolipo_4mb/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/pimoroni_picolipo_4mb/board.c +++ b/ports/raspberrypi/boards/pimoroni_picolipo_4mb/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/pimoroni_picolipo_4mb/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_picolipo_4mb/mpconfigboard.h index 7241b3bd5695..79c30a9e7d4a 100644 --- a/ports/raspberrypi/boards/pimoroni_picolipo_4mb/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_picolipo_4mb/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Pimoroni Pico LiPo (4MB)" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_picolipo_4mb/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_picolipo_4mb/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/pimoroni_picolipo_4mb/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_picolipo_4mb/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_picolipo_4mb/pins.c b/ports/raspberrypi/boards/pimoroni_picolipo_4mb/pins.c index a89950cca73a..5e149c10d551 100644 --- a/ports/raspberrypi/boards/pimoroni_picolipo_4mb/pins.c +++ b/ports/raspberrypi/boards/pimoroni_picolipo_4mb/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/pimoroni_picosystem/board.c b/ports/raspberrypi/boards/pimoroni_picosystem/board.c index 5ee79715930c..00952fd2f5ae 100644 --- a/ports/raspberrypi/boards/pimoroni_picosystem/board.c +++ b/ports/raspberrypi/boards/pimoroni_picosystem/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/raspberrypi/boards/pimoroni_picosystem/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_picosystem/mpconfigboard.h index 7c39848256ba..2b201a4651a5 100644 --- a/ports/raspberrypi/boards/pimoroni_picosystem/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_picosystem/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Pimoroni PicoSystem" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_picosystem/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_picosystem/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/pimoroni_picosystem/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_picosystem/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_picosystem/pins.c b/ports/raspberrypi/boards/pimoroni_picosystem/pins.c index 5aa96d62371d..71c045a6e89c 100644 --- a/ports/raspberrypi/boards/pimoroni_picosystem/pins.c +++ b/ports/raspberrypi/boards/pimoroni_picosystem/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/raspberrypi/boards/pimoroni_plasma2040/board.c b/ports/raspberrypi/boards/pimoroni_plasma2040/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/pimoroni_plasma2040/board.c +++ b/ports/raspberrypi/boards/pimoroni_plasma2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/pimoroni_plasma2040/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_plasma2040/mpconfigboard.h index b8e48a26a29f..4ac0d0412542 100644 --- a/ports/raspberrypi/boards/pimoroni_plasma2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_plasma2040/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Pimoroni Plasma 2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_plasma2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_plasma2040/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/pimoroni_plasma2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_plasma2040/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_plasma2040/pins.c b/ports/raspberrypi/boards/pimoroni_plasma2040/pins.c index 5ecc44619a55..1131180d53a7 100644 --- a/ports/raspberrypi/boards/pimoroni_plasma2040/pins.c +++ b/ports/raspberrypi/boards/pimoroni_plasma2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/pimoroni_plasma2040w/board.c b/ports/raspberrypi/boards/pimoroni_plasma2040w/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/pimoroni_plasma2040w/board.c +++ b/ports/raspberrypi/boards/pimoroni_plasma2040w/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/pimoroni_plasma2040w/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_plasma2040w/mpconfigboard.h index d36f7a8baf61..0e0d0e32638f 100644 --- a/ports/raspberrypi/boards/pimoroni_plasma2040w/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_plasma2040w/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Pimoroni Plasma 2040W" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_plasma2040w/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_plasma2040w/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/pimoroni_plasma2040w/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_plasma2040w/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_plasma2040w/pins.c b/ports/raspberrypi/boards/pimoroni_plasma2040w/pins.c index 691e2c9355ca..5c505862c3d6 100644 --- a/ports/raspberrypi/boards/pimoroni_plasma2040w/pins.c +++ b/ports/raspberrypi/boards/pimoroni_plasma2040w/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/pimoroni_servo2040/board.c b/ports/raspberrypi/boards/pimoroni_servo2040/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/pimoroni_servo2040/board.c +++ b/ports/raspberrypi/boards/pimoroni_servo2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/pimoroni_servo2040/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_servo2040/mpconfigboard.h index 412efc461a25..cb734dfe3296 100644 --- a/ports/raspberrypi/boards/pimoroni_servo2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_servo2040/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Pimoroni Servo 2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_servo2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_servo2040/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/pimoroni_servo2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_servo2040/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_servo2040/pins.c b/ports/raspberrypi/boards/pimoroni_servo2040/pins.c index 5868f06b6373..d8f1102d2459 100644 --- a/ports/raspberrypi/boards/pimoroni_servo2040/pins.c +++ b/ports/raspberrypi/boards/pimoroni_servo2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/pimoroni_tiny2040/board.c b/ports/raspberrypi/boards/pimoroni_tiny2040/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/pimoroni_tiny2040/board.c +++ b/ports/raspberrypi/boards/pimoroni_tiny2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/pimoroni_tiny2040/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_tiny2040/mpconfigboard.h index 8059472780ae..d69bdaf09592 100644 --- a/ports/raspberrypi/boards/pimoroni_tiny2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_tiny2040/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Pimoroni Tiny 2040 (8MB)" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_tiny2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_tiny2040/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/pimoroni_tiny2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_tiny2040/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_tiny2040/pins.c b/ports/raspberrypi/boards/pimoroni_tiny2040/pins.c index 6dd90a90bb72..4bffe100c1c0 100644 --- a/ports/raspberrypi/boards/pimoroni_tiny2040/pins.c +++ b/ports/raspberrypi/boards/pimoroni_tiny2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/board.c b/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/board.c +++ b/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/mpconfigboard.h index 9f9219fc6030..a2cd7b5d3c83 100644 --- a/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Pimoroni Tiny 2040 (2MB)" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/pins.c b/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/pins.c index 6dd90a90bb72..4bffe100c1c0 100644 --- a/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/pins.c +++ b/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/raspberry_pi_pico/board.c b/ports/raspberrypi/boards/raspberry_pi_pico/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/raspberry_pi_pico/board.c +++ b/ports/raspberrypi/boards/raspberry_pi_pico/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/raspberry_pi_pico/mpconfigboard.h b/ports/raspberrypi/boards/raspberry_pi_pico/mpconfigboard.h index 548af930badf..bb996237af9d 100644 --- a/ports/raspberrypi/boards/raspberry_pi_pico/mpconfigboard.h +++ b/ports/raspberrypi/boards/raspberry_pi_pico/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Raspberry Pi Pico" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/raspberry_pi_pico/pico-sdk-configboard.h b/ports/raspberrypi/boards/raspberry_pi_pico/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/raspberry_pi_pico/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/raspberry_pi_pico/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/raspberry_pi_pico/pins.c b/ports/raspberrypi/boards/raspberry_pi_pico/pins.c index 2d56b9375752..6582c11da838 100644 --- a/ports/raspberrypi/boards/raspberry_pi_pico/pins.c +++ b/ports/raspberrypi/boards/raspberry_pi_pico/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/raspberry_pi_pico_w/board.c b/ports/raspberrypi/boards/raspberry_pi_pico_w/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/raspberry_pi_pico_w/board.c +++ b/ports/raspberrypi/boards/raspberry_pi_pico_w/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/raspberry_pi_pico_w/mpconfigboard.h b/ports/raspberrypi/boards/raspberry_pi_pico_w/mpconfigboard.h index a31ee7327c0a..869204e7eece 100644 --- a/ports/raspberrypi/boards/raspberry_pi_pico_w/mpconfigboard.h +++ b/ports/raspberrypi/boards/raspberry_pi_pico_w/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Raspberry Pi Pico W" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/raspberry_pi_pico_w/pico-sdk-configboard.h b/ports/raspberrypi/boards/raspberry_pi_pico_w/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/raspberry_pi_pico_w/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/raspberry_pi_pico_w/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/raspberry_pi_pico_w/pins.c b/ports/raspberrypi/boards/raspberry_pi_pico_w/pins.c index 8c856425971f..b1d6a0fd07e8 100644 --- a/ports/raspberrypi/boards/raspberry_pi_pico_w/pins.c +++ b/ports/raspberrypi/boards/raspberry_pi_pico_w/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/rfguru_rp2040/board.c b/ports/raspberrypi/boards/rfguru_rp2040/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/rfguru_rp2040/board.c +++ b/ports/raspberrypi/boards/rfguru_rp2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/rfguru_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/rfguru_rp2040/mpconfigboard.h index 3543c2490732..dcfdc1c685fd 100644 --- a/ports/raspberrypi/boards/rfguru_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/rfguru_rp2040/mpconfigboard.h @@ -1,2 +1,8 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "RF.Guru RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/rfguru_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/rfguru_rp2040/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/rfguru_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/rfguru_rp2040/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/rfguru_rp2040/pins.c b/ports/raspberrypi/boards/rfguru_rp2040/pins.c index 1c67d863762f..ae6ba7526429 100644 --- a/ports/raspberrypi/boards/rfguru_rp2040/pins.c +++ b/ports/raspberrypi/boards/rfguru_rp2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/seeeduino_xiao_rp2040/board.c b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/seeeduino_xiao_rp2040/board.c +++ b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/seeeduino_xiao_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/mpconfigboard.h index a0ea3c51a030..8b13f2827e65 100644 --- a/ports/raspberrypi/boards/seeeduino_xiao_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Seeeduino XIAO RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/seeeduino_xiao_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/seeeduino_xiao_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/seeeduino_xiao_rp2040/pins.c b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/pins.c index a53cb3f11a50..597b4ec70447 100644 --- a/ports/raspberrypi/boards/seeeduino_xiao_rp2040/pins.c +++ b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/silicognition_rp2040_shim/board.c b/ports/raspberrypi/boards/silicognition_rp2040_shim/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/silicognition_rp2040_shim/board.c +++ b/ports/raspberrypi/boards/silicognition_rp2040_shim/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/silicognition_rp2040_shim/mpconfigboard.h b/ports/raspberrypi/boards/silicognition_rp2040_shim/mpconfigboard.h index ebfdf8bd9e71..3d243ea23a7b 100644 --- a/ports/raspberrypi/boards/silicognition_rp2040_shim/mpconfigboard.h +++ b/ports/raspberrypi/boards/silicognition_rp2040_shim/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Silicognition LLC RP2040-Shim" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/silicognition_rp2040_shim/pico-sdk-configboard.h b/ports/raspberrypi/boards/silicognition_rp2040_shim/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/silicognition_rp2040_shim/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/silicognition_rp2040_shim/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/silicognition_rp2040_shim/pins.c b/ports/raspberrypi/boards/silicognition_rp2040_shim/pins.c index fcde354c2d14..dff7d51c875a 100644 --- a/ports/raspberrypi/boards/silicognition_rp2040_shim/pins.c +++ b/ports/raspberrypi/boards/silicognition_rp2040_shim/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/solderparty_bbq20kbd/board.c b/ports/raspberrypi/boards/solderparty_bbq20kbd/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/solderparty_bbq20kbd/board.c +++ b/ports/raspberrypi/boards/solderparty_bbq20kbd/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/solderparty_bbq20kbd/mpconfigboard.h b/ports/raspberrypi/boards/solderparty_bbq20kbd/mpconfigboard.h index 4f5f2c1106fa..9f84a28ba7dd 100644 --- a/ports/raspberrypi/boards/solderparty_bbq20kbd/mpconfigboard.h +++ b/ports/raspberrypi/boards/solderparty_bbq20kbd/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "BBQ20KBD" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/solderparty_bbq20kbd/pico-sdk-configboard.h b/ports/raspberrypi/boards/solderparty_bbq20kbd/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/solderparty_bbq20kbd/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/solderparty_bbq20kbd/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/solderparty_bbq20kbd/pins.c b/ports/raspberrypi/boards/solderparty_bbq20kbd/pins.c index c5eab180a042..c055b3ab7512 100644 --- a/ports/raspberrypi/boards/solderparty_bbq20kbd/pins.c +++ b/ports/raspberrypi/boards/solderparty_bbq20kbd/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/solderparty_rp2040_stamp/board.c b/ports/raspberrypi/boards/solderparty_rp2040_stamp/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/solderparty_rp2040_stamp/board.c +++ b/ports/raspberrypi/boards/solderparty_rp2040_stamp/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/solderparty_rp2040_stamp/mpconfigboard.h b/ports/raspberrypi/boards/solderparty_rp2040_stamp/mpconfigboard.h index 7229e398a205..bee8a4948593 100644 --- a/ports/raspberrypi/boards/solderparty_rp2040_stamp/mpconfigboard.h +++ b/ports/raspberrypi/boards/solderparty_rp2040_stamp/mpconfigboard.h @@ -1,2 +1,8 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "RP2040 Stamp" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/solderparty_rp2040_stamp/pico-sdk-configboard.h b/ports/raspberrypi/boards/solderparty_rp2040_stamp/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/solderparty_rp2040_stamp/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/solderparty_rp2040_stamp/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/solderparty_rp2040_stamp/pins.c b/ports/raspberrypi/boards/solderparty_rp2040_stamp/pins.c index 98f88a6831d1..73be3662d4dc 100644 --- a/ports/raspberrypi/boards/solderparty_rp2040_stamp/pins.c +++ b/ports/raspberrypi/boards/solderparty_rp2040_stamp/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/sparkfun_micromod_rp2040/board.c b/ports/raspberrypi/boards/sparkfun_micromod_rp2040/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/sparkfun_micromod_rp2040/board.c +++ b/ports/raspberrypi/boards/sparkfun_micromod_rp2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/sparkfun_micromod_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/sparkfun_micromod_rp2040/mpconfigboard.h index edeaf2e03972..47d8c796fddd 100644 --- a/ports/raspberrypi/boards/sparkfun_micromod_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/sparkfun_micromod_rp2040/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "SparkFun MicroMod RP2040 Processor" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/sparkfun_micromod_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/sparkfun_micromod_rp2040/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/sparkfun_micromod_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/sparkfun_micromod_rp2040/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/sparkfun_micromod_rp2040/pins.c b/ports/raspberrypi/boards/sparkfun_micromod_rp2040/pins.c index 2c8a217a2563..f45682a55dbe 100644 --- a/ports/raspberrypi/boards/sparkfun_micromod_rp2040/pins.c +++ b/ports/raspberrypi/boards/sparkfun_micromod_rp2040/pins.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2021 Chris Wilson - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2021 Chris Wilson +// +// SPDX-License-Identifier: MIT #include "shared-bindings/board/__init__.h" diff --git a/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/board.c b/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/board.c +++ b/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/mpconfigboard.h index eb807097b522..2a0b3bb3d3b6 100644 --- a/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "SparkFun Pro Micro RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/pins.c b/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/pins.c index f4ebe33e8b64..bf079e01999e 100644 --- a/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/pins.c +++ b/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/board.c b/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/board.c +++ b/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/mpconfigboard.h index a4a162062a70..acbe82934731 100644 --- a/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "SparkFun Thing Plus - RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/pins.c b/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/pins.c index 86adaa926deb..77b753982012 100644 --- a/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/pins.c +++ b/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/splitkb_liatris/board.c b/ports/raspberrypi/boards/splitkb_liatris/board.c index 7d8b03d5f494..8566b79e27ec 100644 --- a/ports/raspberrypi/boards/splitkb_liatris/board.c +++ b/ports/raspberrypi/boards/splitkb_liatris/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Conor Burns for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Conor Burns for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/splitkb_liatris/mpconfigboard.h b/ports/raspberrypi/boards/splitkb_liatris/mpconfigboard.h index a38b4a5550c1..3b027d592324 100644 --- a/ports/raspberrypi/boards/splitkb_liatris/mpconfigboard.h +++ b/ports/raspberrypi/boards/splitkb_liatris/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Conor Burns for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "splitkb.com Liatris" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/splitkb_liatris/pico-sdk-configboard.h b/ports/raspberrypi/boards/splitkb_liatris/pico-sdk-configboard.h index 36da55d45719..1d095f07d985 100644 --- a/ports/raspberrypi/boards/splitkb_liatris/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/splitkb_liatris/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Conor Burns for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/splitkb_liatris/pins.c b/ports/raspberrypi/boards/splitkb_liatris/pins.c index 8086ee7fb969..23770fa309ed 100644 --- a/ports/raspberrypi/boards/splitkb_liatris/pins.c +++ b/ports/raspberrypi/boards/splitkb_liatris/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Conor Burns for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/board.c b/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/board.c +++ b/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/mpconfigboard.h index 901ae068ddc0..77d40671f2e5 100644 --- a/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "takayoshiotake Octave RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/pins.c b/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/pins.c index 4218f9cdea6b..b68d5632ce3a 100644 --- a/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/pins.c +++ b/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/ugame22/board.c b/ports/raspberrypi/boards/ugame22/board.c index 48a26f9da04d..a208326a0943 100644 --- a/ports/raspberrypi/boards/ugame22/board.c +++ b/ports/raspberrypi/boards/ugame22/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/ugame22/mpconfigboard.h b/ports/raspberrypi/boards/ugame22/mpconfigboard.h index 8f52b7f46104..d7ef1ba07148 100644 --- a/ports/raspberrypi/boards/ugame22/mpconfigboard.h +++ b/ports/raspberrypi/boards/ugame22/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "uGame22" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/ugame22/pico-sdk-configboard.h b/ports/raspberrypi/boards/ugame22/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/ugame22/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/ugame22/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/ugame22/pins.c b/ports/raspberrypi/boards/ugame22/pins.c index 19385b97bc48..d2270a937cfe 100644 --- a/ports/raspberrypi/boards/ugame22/pins.c +++ b/ports/raspberrypi/boards/ugame22/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/board.c b/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/board.c index 76973aee30dc..162fbee869b7 100644 --- a/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/board.c +++ b/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Fabian Affolter - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Fabian Affolter +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/mpconfigboard.h index 83875289d5a1..e4c0d0bc4e27 100644 --- a/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Fabian Affolter +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "VCC-GND Studio YD RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/pico-sdk-configboard.h index 36da55d45719..c1efbb299eef 100644 --- a/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Fabian Affolter +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/pins.c b/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/pins.c index c2b39dd74046..64b497915746 100644 --- a/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/pins.c +++ b/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Fabian Affolter +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/waveshare_rp2040_geek/board.c b/ports/raspberrypi/boards/waveshare_rp2040_geek/board.c index 1d572d15c18e..29202d9e4b9d 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_geek/board.c +++ b/ports/raspberrypi/boards/waveshare_rp2040_geek/board.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/waveshare_rp2040_geek/mpconfigboard.h b/ports/raspberrypi/boards/waveshare_rp2040_geek/mpconfigboard.h index f477d861eb85..5c7f292c67cc 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_geek/mpconfigboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_geek/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup #define MICROPY_HW_BOARD_NAME "Waveshare RP2040-GEEK" diff --git a/ports/raspberrypi/boards/waveshare_rp2040_geek/pico-sdk-configboard.h b/ports/raspberrypi/boards/waveshare_rp2040_geek/pico-sdk-configboard.h index 36da55d45719..aded40e07d88 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_geek/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_geek/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/waveshare_rp2040_geek/pins.c b/ports/raspberrypi/boards/waveshare_rp2040_geek/pins.c index c790befa974a..33d813a1f68a 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_geek/pins.c +++ b/ports/raspberrypi/boards/waveshare_rp2040_geek/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/board.c b/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/board.c index 31750619da45..f17ca53d7246 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/board.c +++ b/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/mpconfigboard.h b/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/mpconfigboard.h index 1602656f907c..0d39b8d50e06 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/mpconfigboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Waveshare RP2040-LCD-0.96" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/pico-sdk-configboard.h b/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/pins.c b/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/pins.c index 32fa4c407301..916988beb07d 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/pins.c +++ b/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" diff --git a/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/board.c b/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/board.c +++ b/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/mpconfigboard.h b/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/mpconfigboard.h index db90970b7f59..aa7e5c17d316 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/mpconfigboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/mpconfigboard.h @@ -1,2 +1,8 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Waveshare RP2040-LCD-1.28" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/pico-sdk-configboard.h b/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/pins.c b/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/pins.c index 9153e8f78a69..315cdce888df 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/pins.c +++ b/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/board.c b/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/board.c +++ b/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/mpconfigboard.h b/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/mpconfigboard.h index 1dd18e30ebd5..6a6c7362417e 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/mpconfigboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/mpconfigboard.h @@ -1,2 +1,8 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Waveshare RP2040-Plus (16MB)" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/pico-sdk-configboard.h b/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/pins.c b/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/pins.c index 87ff27fa4632..3cfbf76ebfe5 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/pins.c +++ b/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/board.c b/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/board.c +++ b/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/mpconfigboard.h b/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/mpconfigboard.h index 3cf1f16066b9..068a2ef4f191 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/mpconfigboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/mpconfigboard.h @@ -1,2 +1,8 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Waveshare RP2040-Plus (4MB)" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/pico-sdk-configboard.h b/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/pins.c b/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/pins.c index 87ff27fa4632..3cfbf76ebfe5 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/pins.c +++ b/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/waveshare_rp2040_tiny/board.c b/ports/raspberrypi/boards/waveshare_rp2040_tiny/board.c index eae1f7321b4b..a019bac42556 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_tiny/board.c +++ b/ports/raspberrypi/boards/waveshare_rp2040_tiny/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Bill Sideris - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Bill Sideris +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/waveshare_rp2040_tiny/mpconfigboard.h b/ports/raspberrypi/boards/waveshare_rp2040_tiny/mpconfigboard.h index cf375fd52775..e3a925d42d8f 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_tiny/mpconfigboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_tiny/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Bill Sideris +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Waveshare RP2040-Tiny" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/waveshare_rp2040_tiny/pico-sdk-configboard.h b/ports/raspberrypi/boards/waveshare_rp2040_tiny/pico-sdk-configboard.h index 36da55d45719..26ed98c336bc 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_tiny/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_tiny/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Bill Sideris +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/waveshare_rp2040_tiny/pins.c b/ports/raspberrypi/boards/waveshare_rp2040_tiny/pins.c index 13d38ccc3bb5..2540f0325f9b 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_tiny/pins.c +++ b/ports/raspberrypi/boards/waveshare_rp2040_tiny/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Bill Sideris +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/board.c b/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/board.c +++ b/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/mpconfigboard.h b/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/mpconfigboard.h index e58c87c4abbb..962f921293ed 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/mpconfigboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/mpconfigboard.h @@ -1,2 +1,8 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Waveshare RP2040-TOUCH-LCD-1.28" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/pico-sdk-configboard.h b/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/pins.c b/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/pins.c index 7a918babdf8a..bae058c4cc14 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/pins.c +++ b/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/waveshare_rp2040_zero/board.c b/ports/raspberrypi/boards/waveshare_rp2040_zero/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_zero/board.c +++ b/ports/raspberrypi/boards/waveshare_rp2040_zero/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/waveshare_rp2040_zero/mpconfigboard.h b/ports/raspberrypi/boards/waveshare_rp2040_zero/mpconfigboard.h index 9979e6dcb66a..afd8b591af5b 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_zero/mpconfigboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_zero/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Waveshare RP2040-Zero" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/waveshare_rp2040_zero/pico-sdk-configboard.h b/ports/raspberrypi/boards/waveshare_rp2040_zero/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_zero/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_zero/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/waveshare_rp2040_zero/pins.c b/ports/raspberrypi/boards/waveshare_rp2040_zero/pins.c index 6de9ad478f8f..a431564c20b8 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_zero/pins.c +++ b/ports/raspberrypi/boards/waveshare_rp2040_zero/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/weact_studio_pico/board.c b/ports/raspberrypi/boards/weact_studio_pico/board.c index 76973aee30dc..162fbee869b7 100644 --- a/ports/raspberrypi/boards/weact_studio_pico/board.c +++ b/ports/raspberrypi/boards/weact_studio_pico/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Fabian Affolter - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Fabian Affolter +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/weact_studio_pico/mpconfigboard.h b/ports/raspberrypi/boards/weact_studio_pico/mpconfigboard.h index e3276bbd742f..a235595ee8af 100644 --- a/ports/raspberrypi/boards/weact_studio_pico/mpconfigboard.h +++ b/ports/raspberrypi/boards/weact_studio_pico/mpconfigboard.h @@ -1,2 +1,8 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Fabian Affolter +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "WeAct Studio Pico" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/weact_studio_pico/pico-sdk-configboard.h b/ports/raspberrypi/boards/weact_studio_pico/pico-sdk-configboard.h index 36da55d45719..c1efbb299eef 100644 --- a/ports/raspberrypi/boards/weact_studio_pico/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/weact_studio_pico/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Fabian Affolter +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/weact_studio_pico/pins.c b/ports/raspberrypi/boards/weact_studio_pico/pins.c index 8632d9c322f4..a82e31c90330 100644 --- a/ports/raspberrypi/boards/weact_studio_pico/pins.c +++ b/ports/raspberrypi/boards/weact_studio_pico/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Fabian Affolter +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/weact_studio_pico_16mb/board.c b/ports/raspberrypi/boards/weact_studio_pico_16mb/board.c index 76973aee30dc..162fbee869b7 100644 --- a/ports/raspberrypi/boards/weact_studio_pico_16mb/board.c +++ b/ports/raspberrypi/boards/weact_studio_pico_16mb/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Fabian Affolter - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Fabian Affolter +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/weact_studio_pico_16mb/mpconfigboard.h b/ports/raspberrypi/boards/weact_studio_pico_16mb/mpconfigboard.h index 2dabc3eb1b38..4049c0a3bd2b 100644 --- a/ports/raspberrypi/boards/weact_studio_pico_16mb/mpconfigboard.h +++ b/ports/raspberrypi/boards/weact_studio_pico_16mb/mpconfigboard.h @@ -1,2 +1,8 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Fabian Affolter +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "WeAct Studio Pico 16MB" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/weact_studio_pico_16mb/pico-sdk-configboard.h b/ports/raspberrypi/boards/weact_studio_pico_16mb/pico-sdk-configboard.h index 36da55d45719..c1efbb299eef 100644 --- a/ports/raspberrypi/boards/weact_studio_pico_16mb/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/weact_studio_pico_16mb/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Fabian Affolter +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/weact_studio_pico_16mb/pins.c b/ports/raspberrypi/boards/weact_studio_pico_16mb/pins.c index 8632d9c322f4..a82e31c90330 100644 --- a/ports/raspberrypi/boards/weact_studio_pico_16mb/pins.c +++ b/ports/raspberrypi/boards/weact_studio_pico_16mb/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Fabian Affolter +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/wisdpi_ardu2040m/board.c b/ports/raspberrypi/boards/wisdpi_ardu2040m/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/wisdpi_ardu2040m/board.c +++ b/ports/raspberrypi/boards/wisdpi_ardu2040m/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/wisdpi_ardu2040m/mpconfigboard.h b/ports/raspberrypi/boards/wisdpi_ardu2040m/mpconfigboard.h index e47d62ae16b1..9b07a36e863f 100644 --- a/ports/raspberrypi/boards/wisdpi_ardu2040m/mpconfigboard.h +++ b/ports/raspberrypi/boards/wisdpi_ardu2040m/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "WisdPi Ardu2040M" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/wisdpi_ardu2040m/pico-sdk-configboard.h b/ports/raspberrypi/boards/wisdpi_ardu2040m/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/wisdpi_ardu2040m/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/wisdpi_ardu2040m/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/wisdpi_ardu2040m/pins.c b/ports/raspberrypi/boards/wisdpi_ardu2040m/pins.c index 5e6cb0aeef88..9128b67c56ed 100644 --- a/ports/raspberrypi/boards/wisdpi_ardu2040m/pins.c +++ b/ports/raspberrypi/boards/wisdpi_ardu2040m/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/wisdpi_tiny_rp2040/board.c b/ports/raspberrypi/boards/wisdpi_tiny_rp2040/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/wisdpi_tiny_rp2040/board.c +++ b/ports/raspberrypi/boards/wisdpi_tiny_rp2040/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/wisdpi_tiny_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/wisdpi_tiny_rp2040/mpconfigboard.h index d6d7f4a873b8..5df25f12cb7c 100644 --- a/ports/raspberrypi/boards/wisdpi_tiny_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/wisdpi_tiny_rp2040/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "WisdPi Tiny RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/wisdpi_tiny_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/wisdpi_tiny_rp2040/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/wisdpi_tiny_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/wisdpi_tiny_rp2040/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/wisdpi_tiny_rp2040/pins.c b/ports/raspberrypi/boards/wisdpi_tiny_rp2040/pins.c index 980cd321232d..224a4fd9f394 100644 --- a/ports/raspberrypi/boards/wisdpi_tiny_rp2040/pins.c +++ b/ports/raspberrypi/boards/wisdpi_tiny_rp2040/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/board.c b/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/board.c +++ b/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/mpconfigboard.h b/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/mpconfigboard.h index 1dae266fc840..35e5a471c2dd 100644 --- a/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/mpconfigboard.h +++ b/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "W5100S-EVB-Pico" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/pico-sdk-configboard.h b/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/pins.c b/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/pins.c index 87ff27fa4632..3cfbf76ebfe5 100644 --- a/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/pins.c +++ b/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/wiznet_w5500_evb_pico/board.c b/ports/raspberrypi/boards/wiznet_w5500_evb_pico/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/raspberrypi/boards/wiznet_w5500_evb_pico/board.c +++ b/ports/raspberrypi/boards/wiznet_w5500_evb_pico/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/raspberrypi/boards/wiznet_w5500_evb_pico/mpconfigboard.h b/ports/raspberrypi/boards/wiznet_w5500_evb_pico/mpconfigboard.h index 00faa83742d1..ec26fa8e6d13 100644 --- a/ports/raspberrypi/boards/wiznet_w5500_evb_pico/mpconfigboard.h +++ b/ports/raspberrypi/boards/wiznet_w5500_evb_pico/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "W5500-EVB-Pico" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/wiznet_w5500_evb_pico/pico-sdk-configboard.h b/ports/raspberrypi/boards/wiznet_w5500_evb_pico/pico-sdk-configboard.h index 36da55d45719..66b57dfd13dc 100644 --- a/ports/raspberrypi/boards/wiznet_w5500_evb_pico/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/wiznet_w5500_evb_pico/pico-sdk-configboard.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/wiznet_w5500_evb_pico/pins.c b/ports/raspberrypi/boards/wiznet_w5500_evb_pico/pins.c index ca9f7969d627..aee673a312d9 100644 --- a/ports/raspberrypi/boards/wiznet_w5500_evb_pico/pins.c +++ b/ports/raspberrypi/boards/wiznet_w5500_evb_pico/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/boards/zrichard_rp2.65-f/board.c b/ports/raspberrypi/boards/zrichard_rp2.65-f/board.c index aa189002ba45..415a7b3b3e8f 100644 --- a/ports/raspberrypi/boards/zrichard_rp2.65-f/board.c +++ b/ports/raspberrypi/boards/zrichard_rp2.65-f/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/raspberrypi/boards/zrichard_rp2.65-f/mpconfigboard.h b/ports/raspberrypi/boards/zrichard_rp2.65-f/mpconfigboard.h index 5acfceba9df1..0bdfca7b84cf 100644 --- a/ports/raspberrypi/boards/zrichard_rp2.65-f/mpconfigboard.h +++ b/ports/raspberrypi/boards/zrichard_rp2.65-f/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "RP2.65-F" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/zrichard_rp2.65-f/pico-sdk-configboard.h b/ports/raspberrypi/boards/zrichard_rp2.65-f/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/zrichard_rp2.65-f/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/zrichard_rp2.65-f/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/zrichard_rp2.65-f/pins.c b/ports/raspberrypi/boards/zrichard_rp2.65-f/pins.c index 02c69c014f56..7b1ff92f2931 100644 --- a/ports/raspberrypi/boards/zrichard_rp2.65-f/pins.c +++ b/ports/raspberrypi/boards/zrichard_rp2.65-f/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/raspberrypi/common-hal/alarm/SleepMemory.c b/ports/raspberrypi/common-hal/alarm/SleepMemory.c index 8cb684faa31b..3328f3c5ec6b 100644 --- a/ports/raspberrypi/common-hal/alarm/SleepMemory.c +++ b/ports/raspberrypi/common-hal/alarm/SleepMemory.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/raspberrypi/common-hal/alarm/SleepMemory.h b/ports/raspberrypi/common-hal/alarm/SleepMemory.h index 591801dfdbad..4453ca0b31a6 100644 --- a/ports/raspberrypi/common-hal/alarm/SleepMemory.h +++ b/ports/raspberrypi/common-hal/alarm/SleepMemory.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/raspberrypi/common-hal/alarm/__init__.c b/ports/raspberrypi/common-hal/alarm/__init__.c index e1281613a23e..54bbfdce2beb 100644 --- a/ports/raspberrypi/common-hal/alarm/__init__.c +++ b/ports/raspberrypi/common-hal/alarm/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/gc.h" #include "py/obj.h" diff --git a/ports/raspberrypi/common-hal/alarm/__init__.h b/ports/raspberrypi/common-hal/alarm/__init__.h index 284e3ddb4ef2..49e06a4c323d 100644 --- a/ports/raspberrypi/common-hal/alarm/__init__.h +++ b/ports/raspberrypi/common-hal/alarm/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/raspberrypi/common-hal/alarm/coproc/CoprocAlarm.c b/ports/raspberrypi/common-hal/alarm/coproc/CoprocAlarm.c index 4bd8276f3492..a7f2dfca2b67 100644 --- a/ports/raspberrypi/common-hal/alarm/coproc/CoprocAlarm.c +++ b/ports/raspberrypi/common-hal/alarm/coproc/CoprocAlarm.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // empty file diff --git a/ports/raspberrypi/common-hal/alarm/coproc/CoprocAlarm.h b/ports/raspberrypi/common-hal/alarm/coproc/CoprocAlarm.h index 4bd8276f3492..a7f2dfca2b67 100644 --- a/ports/raspberrypi/common-hal/alarm/coproc/CoprocAlarm.h +++ b/ports/raspberrypi/common-hal/alarm/coproc/CoprocAlarm.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // empty file diff --git a/ports/raspberrypi/common-hal/alarm/pin/PinAlarm.c b/ports/raspberrypi/common-hal/alarm/pin/PinAlarm.c index 93b8ff316514..203def52b226 100644 --- a/ports/raspberrypi/common-hal/alarm/pin/PinAlarm.c +++ b/ports/raspberrypi/common-hal/alarm/pin/PinAlarm.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" diff --git a/ports/raspberrypi/common-hal/alarm/pin/PinAlarm.h b/ports/raspberrypi/common-hal/alarm/pin/PinAlarm.h index 26c6c49a5e5d..b9f81da847f1 100644 --- a/ports/raspberrypi/common-hal/alarm/pin/PinAlarm.h +++ b/ports/raspberrypi/common-hal/alarm/pin/PinAlarm.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/raspberrypi/common-hal/alarm/time/TimeAlarm.c b/ports/raspberrypi/common-hal/alarm/time/TimeAlarm.c index 302f5ed7169e..ae4ad9f2aa06 100644 --- a/ports/raspberrypi/common-hal/alarm/time/TimeAlarm.c +++ b/ports/raspberrypi/common-hal/alarm/time/TimeAlarm.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" diff --git a/ports/raspberrypi/common-hal/alarm/time/TimeAlarm.h b/ports/raspberrypi/common-hal/alarm/time/TimeAlarm.h index 0b4c8bce06f0..824bf5ef9e07 100644 --- a/ports/raspberrypi/common-hal/alarm/time/TimeAlarm.h +++ b/ports/raspberrypi/common-hal/alarm/time/TimeAlarm.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/raspberrypi/common-hal/alarm/touch/TouchAlarm.c b/ports/raspberrypi/common-hal/alarm/touch/TouchAlarm.c index ea3437ec893e..ce192f47d292 100644 --- a/ports/raspberrypi/common-hal/alarm/touch/TouchAlarm.c +++ b/ports/raspberrypi/common-hal/alarm/touch/TouchAlarm.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/alarm/touch/TouchAlarm.h" #include "shared-bindings/microcontroller/__init__.h" diff --git a/ports/raspberrypi/common-hal/alarm/touch/TouchAlarm.h b/ports/raspberrypi/common-hal/alarm/touch/TouchAlarm.h index 6badde145f80..e6e34ce80f7f 100644 --- a/ports/raspberrypi/common-hal/alarm/touch/TouchAlarm.h +++ b/ports/raspberrypi/common-hal/alarm/touch/TouchAlarm.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/raspberrypi/common-hal/analogbufio/BufferedIn.c b/ports/raspberrypi/common-hal/analogbufio/BufferedIn.c index 7dfc0fa11ae0..880e88f1c5b1 100644 --- a/ports/raspberrypi/common-hal/analogbufio/BufferedIn.c +++ b/ports/raspberrypi/common-hal/analogbufio/BufferedIn.c @@ -1,33 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2022 Lee Atkinson, MeanStride Technology, Inc. - * - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. - * https://github.com/raspberrypi/pico-examples/blob/master/adc/dma_capture/dma_capture.c - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Lee Atkinson, MeanStride Technology, Inc. +// SPDX-FileCopyrightText: Copyright (c) 2021 Raspberry Pi (Trading) Ltd. +// +// SPDX-License-Identifier: MIT #include #include "common-hal/analogbufio/BufferedIn.h" diff --git a/ports/raspberrypi/common-hal/analogbufio/BufferedIn.h b/ports/raspberrypi/common-hal/analogbufio/BufferedIn.h index 8ed4cf3a2c07..2b6786c0887b 100644 --- a/ports/raspberrypi/common-hal/analogbufio/BufferedIn.h +++ b/ports/raspberrypi/common-hal/analogbufio/BufferedIn.h @@ -1,33 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2022 Lee Atkinson, MeanStride Technology, Inc. - * - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. - * https://github.com/raspberrypi/pico-examples/blob/master/adc/dma_capture/dma_capture.c - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Lee Atkinson, MeanStride Technology, Inc. +// SPDX-FileCopyrightText: Copyright (c) 2021 Raspberry Pi (Trading) Ltd. +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_ANALOGBUFIO_BUFFEREDIN_H #define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_ANALOGBUFIO_BUFFEREDIN_H diff --git a/ports/raspberrypi/common-hal/analogbufio/__init__.c b/ports/raspberrypi/common-hal/analogbufio/__init__.c index b6c74b985b21..c88e51e16400 100644 --- a/ports/raspberrypi/common-hal/analogbufio/__init__.c +++ b/ports/raspberrypi/common-hal/analogbufio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No analogbufio module functions. diff --git a/ports/raspberrypi/common-hal/analogio/AnalogIn.c b/ports/raspberrypi/common-hal/analogio/AnalogIn.c index 37f1000d0ef4..9af1fd9cedd3 100644 --- a/ports/raspberrypi/common-hal/analogio/AnalogIn.c +++ b/ports/raspberrypi/common-hal/analogio/AnalogIn.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "common-hal/analogio/AnalogIn.h" #include "shared-bindings/analogio/AnalogIn.h" diff --git a/ports/raspberrypi/common-hal/analogio/AnalogIn.h b/ports/raspberrypi/common-hal/analogio/AnalogIn.h index c322a6776f36..c8e6f7958c4f 100644 --- a/ports/raspberrypi/common-hal/analogio/AnalogIn.h +++ b/ports/raspberrypi/common-hal/analogio/AnalogIn.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_ANALOGIO_ANALOGIN_H #define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_ANALOGIO_ANALOGIN_H diff --git a/ports/raspberrypi/common-hal/analogio/AnalogOut.c b/ports/raspberrypi/common-hal/analogio/AnalogOut.c index 4ae258fd0234..baf538ffce90 100644 --- a/ports/raspberrypi/common-hal/analogio/AnalogOut.c +++ b/ports/raspberrypi/common-hal/analogio/AnalogOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/analogio/AnalogOut.h" diff --git a/ports/raspberrypi/common-hal/analogio/AnalogOut.h b/ports/raspberrypi/common-hal/analogio/AnalogOut.h index 7c7a61aa2d6d..4903f67047c0 100644 --- a/ports/raspberrypi/common-hal/analogio/AnalogOut.h +++ b/ports/raspberrypi/common-hal/analogio/AnalogOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_ANALOGIO_ANALOGOUT_H #define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_ANALOGIO_ANALOGOUT_H diff --git a/ports/raspberrypi/common-hal/analogio/__init__.c b/ports/raspberrypi/common-hal/analogio/__init__.c index eea58c77d631..d9027d63ec8b 100644 --- a/ports/raspberrypi/common-hal/analogio/__init__.c +++ b/ports/raspberrypi/common-hal/analogio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No analogio module functions. diff --git a/ports/raspberrypi/common-hal/audiobusio/I2SOut.c b/ports/raspberrypi/common-hal/audiobusio/I2SOut.c index 179717144532..f3c23400db28 100644 --- a/ports/raspberrypi/common-hal/audiobusio/I2SOut.c +++ b/ports/raspberrypi/common-hal/audiobusio/I2SOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/raspberrypi/common-hal/audiobusio/I2SOut.h b/ports/raspberrypi/common-hal/audiobusio/I2SOut.h index 52226ae49d69..80b021f4120a 100644 --- a/ports/raspberrypi/common-hal/audiobusio/I2SOut.h +++ b/ports/raspberrypi/common-hal/audiobusio/I2SOut.h @@ -1,29 +1,8 @@ - -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_AUDIOBUSIO_I2SOUT_H #define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_AUDIOBUSIO_I2SOUT_H diff --git a/ports/raspberrypi/common-hal/audiobusio/PDMIn.c b/ports/raspberrypi/common-hal/audiobusio/PDMIn.c index 1c0f3b700239..11f239e4009a 100644 --- a/ports/raspberrypi/common-hal/audiobusio/PDMIn.c +++ b/ports/raspberrypi/common-hal/audiobusio/PDMIn.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/raspberrypi/common-hal/audiobusio/PDMIn.h b/ports/raspberrypi/common-hal/audiobusio/PDMIn.h index 995ffb5d78a0..7cc92f92b932 100644 --- a/ports/raspberrypi/common-hal/audiobusio/PDMIn.h +++ b/ports/raspberrypi/common-hal/audiobusio/PDMIn.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_AUDIOBUSIO_AUDIOOUT_H #define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_AUDIOBUSIO_AUDIOOUT_H diff --git a/ports/raspberrypi/common-hal/audiobusio/__init__.c b/ports/raspberrypi/common-hal/audiobusio/__init__.c index 87db404966ab..0ba97b96d16b 100644 --- a/ports/raspberrypi/common-hal/audiobusio/__init__.c +++ b/ports/raspberrypi/common-hal/audiobusio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No audiobusio module functions. diff --git a/ports/raspberrypi/common-hal/audiopwmio/PWMAudioOut.c b/ports/raspberrypi/common-hal/audiopwmio/PWMAudioOut.c index 8cbed4605162..d4cf161e6197 100644 --- a/ports/raspberrypi/common-hal/audiopwmio/PWMAudioOut.c +++ b/ports/raspberrypi/common-hal/audiopwmio/PWMAudioOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "common-hal/audiopwmio/PWMAudioOut.h" diff --git a/ports/raspberrypi/common-hal/audiopwmio/PWMAudioOut.h b/ports/raspberrypi/common-hal/audiopwmio/PWMAudioOut.h index d86b20705bf9..f955f62ede50 100644 --- a/ports/raspberrypi/common-hal/audiopwmio/PWMAudioOut.h +++ b/ports/raspberrypi/common-hal/audiopwmio/PWMAudioOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/raspberrypi/common-hal/audiopwmio/__init__.c b/ports/raspberrypi/common-hal/audiopwmio/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/raspberrypi/common-hal/audiopwmio/__init__.c +++ b/ports/raspberrypi/common-hal/audiopwmio/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/raspberrypi/common-hal/board/__init__.c b/ports/raspberrypi/common-hal/board/__init__.c index 3c7f30df2240..bbb34aa3454a 100644 --- a/ports/raspberrypi/common-hal/board/__init__.c +++ b/ports/raspberrypi/common-hal/board/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/raspberrypi/common-hal/busio/I2C.c b/ports/raspberrypi/common-hal/busio/I2C.c index 9b45d26bc77a..8d0a52b68ff3 100644 --- a/ports/raspberrypi/common-hal/busio/I2C.c +++ b/ports/raspberrypi/common-hal/busio/I2C.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/mperrno.h" #include "py/mphal.h" diff --git a/ports/raspberrypi/common-hal/busio/I2C.h b/ports/raspberrypi/common-hal/busio/I2C.h index dbaede1f562d..11731e5bfb02 100644 --- a/ports/raspberrypi/common-hal/busio/I2C.h +++ b/ports/raspberrypi/common-hal/busio/I2C.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_BUSIO_I2C_H #define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_BUSIO_I2C_H diff --git a/ports/raspberrypi/common-hal/busio/SPI.c b/ports/raspberrypi/common-hal/busio/SPI.c index d2c658f862fc..51de1f1abb46 100644 --- a/ports/raspberrypi/common-hal/busio/SPI.c +++ b/ports/raspberrypi/common-hal/busio/SPI.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/busio/SPI.h" diff --git a/ports/raspberrypi/common-hal/busio/SPI.h b/ports/raspberrypi/common-hal/busio/SPI.h index b76dbbf9dbd7..489974c7cb33 100644 --- a/ports/raspberrypi/common-hal/busio/SPI.h +++ b/ports/raspberrypi/common-hal/busio/SPI.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_BUSIO_SPI_H #define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_BUSIO_SPI_H diff --git a/ports/raspberrypi/common-hal/busio/UART.c b/ports/raspberrypi/common-hal/busio/UART.c index bc3f341b05b4..d9cab3838e40 100644 --- a/ports/raspberrypi/common-hal/busio/UART.c +++ b/ports/raspberrypi/common-hal/busio/UART.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include "shared-bindings/busio/UART.h" diff --git a/ports/raspberrypi/common-hal/busio/UART.h b/ports/raspberrypi/common-hal/busio/UART.h index db416b70622e..375928d9ff5d 100644 --- a/ports/raspberrypi/common-hal/busio/UART.h +++ b/ports/raspberrypi/common-hal/busio/UART.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_BUSIO_UART_H #define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_BUSIO_UART_H diff --git a/ports/raspberrypi/common-hal/busio/__init__.c b/ports/raspberrypi/common-hal/busio/__init__.c index 41761b6743ae..b726684324a3 100644 --- a/ports/raspberrypi/common-hal/busio/__init__.c +++ b/ports/raspberrypi/common-hal/busio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No busio module functions. diff --git a/ports/raspberrypi/common-hal/countio/Counter.c b/ports/raspberrypi/common-hal/countio/Counter.c index 239fc4b752d7..1a270bf88207 100644 --- a/ports/raspberrypi/common-hal/countio/Counter.c +++ b/ports/raspberrypi/common-hal/countio/Counter.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/countio/Counter.h" #include "py/runtime.h" diff --git a/ports/raspberrypi/common-hal/countio/Counter.h b/ports/raspberrypi/common-hal/countio/Counter.h index 3355036eed2a..49feee6a77a4 100644 --- a/ports/raspberrypi/common-hal/countio/Counter.h +++ b/ports/raspberrypi/common-hal/countio/Counter.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + #ifndef MICROPY_INCLUDED_RASPBERRRYPI_COMMON_HAL_COUNTIO_COUNTER_H #define MICROPY_INCLUDED_RASPBERRRYPI_COMMON_HAL_COUNTIO_COUNTER_H diff --git a/ports/raspberrypi/common-hal/countio/__init__.c b/ports/raspberrypi/common-hal/countio/__init__.c index d47de33e53c3..86d03caa9b87 100644 --- a/ports/raspberrypi/common-hal/countio/__init__.c +++ b/ports/raspberrypi/common-hal/countio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No countio module functions diff --git a/ports/raspberrypi/common-hal/digitalio/DigitalInOut.c b/ports/raspberrypi/common-hal/digitalio/DigitalInOut.c index a21feec106fa..099e060997dd 100644 --- a/ports/raspberrypi/common-hal/digitalio/DigitalInOut.c +++ b/ports/raspberrypi/common-hal/digitalio/DigitalInOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/raspberrypi/common-hal/digitalio/DigitalInOut.h b/ports/raspberrypi/common-hal/digitalio/DigitalInOut.h index d656f607f60e..e600b77ff147 100644 --- a/ports/raspberrypi/common-hal/digitalio/DigitalInOut.h +++ b/ports/raspberrypi/common-hal/digitalio/DigitalInOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_DIGITALIO_DIGITALINOUT_H #define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_DIGITALIO_DIGITALINOUT_H diff --git a/ports/raspberrypi/common-hal/digitalio/__init__.c b/ports/raspberrypi/common-hal/digitalio/__init__.c index 20fad459593a..fa222ed01f03 100644 --- a/ports/raspberrypi/common-hal/digitalio/__init__.c +++ b/ports/raspberrypi/common-hal/digitalio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No digitalio module functions. diff --git a/ports/raspberrypi/common-hal/floppyio/__init__.c b/ports/raspberrypi/common-hal/floppyio/__init__.c index 9a117d932967..570e5c7a98c1 100644 --- a/ports/raspberrypi/common-hal/floppyio/__init__.c +++ b/ports/raspberrypi/common-hal/floppyio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "bindings/rp2pio/StateMachine.h" #include "py/runtime.h" diff --git a/ports/raspberrypi/common-hal/floppyio/__init__.h b/ports/raspberrypi/common-hal/floppyio/__init__.h index 7dbf8a7af7b2..ed40058b5dd1 100644 --- a/ports/raspberrypi/common-hal/floppyio/__init__.h +++ b/ports/raspberrypi/common-hal/floppyio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/raspberrypi/common-hal/i2ctarget/I2CTarget.c b/ports/raspberrypi/common-hal/i2ctarget/I2CTarget.c index f729924c9d0c..a3c6662683ff 100644 --- a/ports/raspberrypi/common-hal/i2ctarget/I2CTarget.c +++ b/ports/raspberrypi/common-hal/i2ctarget/I2CTarget.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Mark Komus, Ken Stillson, im-redactd - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Mark Komus, Ken Stillson, im-redactd +// +// SPDX-License-Identifier: MIT #include "shared-bindings/i2ctarget/I2CTarget.h" diff --git a/ports/raspberrypi/common-hal/i2ctarget/I2CTarget.h b/ports/raspberrypi/common-hal/i2ctarget/I2CTarget.h index b47c51fbbb37..bd602544561f 100644 --- a/ports/raspberrypi/common-hal/i2ctarget/I2CTarget.h +++ b/ports/raspberrypi/common-hal/i2ctarget/I2CTarget.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Mark Komus, Ken Stillson, im-redactd - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Mark Komus, Ken Stillson, im-redactd +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_RPI_COMMON_HAL_I2C_TARGET_H #define MICROPY_INCLUDED_RPI_COMMON_HAL_I2C_TARGET_H diff --git a/ports/raspberrypi/common-hal/i2ctarget/__init__.c b/ports/raspberrypi/common-hal/i2ctarget/__init__.c index 4ec26465adf0..ed0f642bfd30 100644 --- a/ports/raspberrypi/common-hal/i2ctarget/__init__.c +++ b/ports/raspberrypi/common-hal/i2ctarget/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No i2ctarget module functions. diff --git a/ports/raspberrypi/common-hal/imagecapture/ParallelImageCapture.c b/ports/raspberrypi/common-hal/imagecapture/ParallelImageCapture.c index 1670b5b5b0c0..f04f76209121 100644 --- a/ports/raspberrypi/common-hal/imagecapture/ParallelImageCapture.c +++ b/ports/raspberrypi/common-hal/imagecapture/ParallelImageCapture.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/runtime.h" diff --git a/ports/raspberrypi/common-hal/imagecapture/ParallelImageCapture.h b/ports/raspberrypi/common-hal/imagecapture/ParallelImageCapture.h index 9f5d1ab32f3e..d6d026424398 100644 --- a/ports/raspberrypi/common-hal/imagecapture/ParallelImageCapture.h +++ b/ports/raspberrypi/common-hal/imagecapture/ParallelImageCapture.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/raspberrypi/common-hal/imagecapture/__init__.c b/ports/raspberrypi/common-hal/imagecapture/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/raspberrypi/common-hal/imagecapture/__init__.c +++ b/ports/raspberrypi/common-hal/imagecapture/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/raspberrypi/common-hal/imagecapture/__init__.h b/ports/raspberrypi/common-hal/imagecapture/__init__.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/raspberrypi/common-hal/imagecapture/__init__.h +++ b/ports/raspberrypi/common-hal/imagecapture/__init__.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/raspberrypi/common-hal/max3421e/Max3421E.c b/ports/raspberrypi/common-hal/max3421e/Max3421E.c index 7233d149321d..20ce701b9f3c 100644 --- a/ports/raspberrypi/common-hal/max3421e/Max3421E.c +++ b/ports/raspberrypi/common-hal/max3421e/Max3421E.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-module/max3421e/Max3421E.h" diff --git a/ports/raspberrypi/common-hal/mdns/RemoteService.c b/ports/raspberrypi/common-hal/mdns/RemoteService.c index 071a9c1648c5..650e86da9d99 100644 --- a/ports/raspberrypi/common-hal/mdns/RemoteService.c +++ b/ports/raspberrypi/common-hal/mdns/RemoteService.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/mdns/RemoteService.h" diff --git a/ports/raspberrypi/common-hal/mdns/RemoteService.h b/ports/raspberrypi/common-hal/mdns/RemoteService.h index 06814f0fbbea..571510cd9f71 100644 --- a/ports/raspberrypi/common-hal/mdns/RemoteService.h +++ b/ports/raspberrypi/common-hal/mdns/RemoteService.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/raspberrypi/common-hal/mdns/Server.c b/ports/raspberrypi/common-hal/mdns/Server.c index a85638be2c23..be23f8ea9aad 100644 --- a/ports/raspberrypi/common-hal/mdns/Server.c +++ b/ports/raspberrypi/common-hal/mdns/Server.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/mdns/Server.h" diff --git a/ports/raspberrypi/common-hal/mdns/Server.h b/ports/raspberrypi/common-hal/mdns/Server.h index d49abccb60af..620e201c897c 100644 --- a/ports/raspberrypi/common-hal/mdns/Server.h +++ b/ports/raspberrypi/common-hal/mdns/Server.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/raspberrypi/common-hal/mdns/__init__.c b/ports/raspberrypi/common-hal/mdns/__init__.c index 57740777c8d1..8d878b9d52a6 100644 --- a/ports/raspberrypi/common-hal/mdns/__init__.c +++ b/ports/raspberrypi/common-hal/mdns/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No mdns module functions. diff --git a/ports/raspberrypi/common-hal/memorymap/AddressRange.c b/ports/raspberrypi/common-hal/memorymap/AddressRange.c index c2cccf374775..1959ec41a35a 100644 --- a/ports/raspberrypi/common-hal/memorymap/AddressRange.c +++ b/ports/raspberrypi/common-hal/memorymap/AddressRange.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * Copyright (c) 2023 Bob Abeles - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// SPDX-FileCopyrightText: Copyright (c) 2023 Bob Abeles +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/raspberrypi/common-hal/memorymap/AddressRange.h b/ports/raspberrypi/common-hal/memorymap/AddressRange.h index 0e929c430590..9807d26623ee 100644 --- a/ports/raspberrypi/common-hal/memorymap/AddressRange.h +++ b/ports/raspberrypi/common-hal/memorymap/AddressRange.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * Copyright (c) 2023 Bob Abeles - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// SPDX-FileCopyrightText: Copyright (c) 2023 Bob Abeles +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_MEMORYMAP_ADDRESSRANGE_H #define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_MEMORYMAP_ADDRESSRANGE_H diff --git a/ports/raspberrypi/common-hal/memorymap/__init__.c b/ports/raspberrypi/common-hal/memorymap/__init__.c index c15b17f451a6..3919535a70a4 100644 --- a/ports/raspberrypi/common-hal/memorymap/__init__.c +++ b/ports/raspberrypi/common-hal/memorymap/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No memorymap module functions. diff --git a/ports/raspberrypi/common-hal/microcontroller/Pin.c b/ports/raspberrypi/common-hal/microcontroller/Pin.c index 284291fc2960..6e881ab8e390 100644 --- a/ports/raspberrypi/common-hal/microcontroller/Pin.c +++ b/ports/raspberrypi/common-hal/microcontroller/Pin.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" diff --git a/ports/raspberrypi/common-hal/microcontroller/Pin.h b/ports/raspberrypi/common-hal/microcontroller/Pin.h index 5da06753192a..c2a856d498a3 100644 --- a/ports/raspberrypi/common-hal/microcontroller/Pin.h +++ b/ports/raspberrypi/common-hal/microcontroller/Pin.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_MICROCONTROLLER_PIN_H #define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_MICROCONTROLLER_PIN_H diff --git a/ports/raspberrypi/common-hal/microcontroller/Processor.c b/ports/raspberrypi/common-hal/microcontroller/Processor.c index e71cb75507b5..8e3636fcc3aa 100644 --- a/ports/raspberrypi/common-hal/microcontroller/Processor.c +++ b/ports/raspberrypi/common-hal/microcontroller/Processor.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/raspberrypi/common-hal/microcontroller/Processor.h b/ports/raspberrypi/common-hal/microcontroller/Processor.h index afb43f9bdf8c..34a9cfc9e676 100644 --- a/ports/raspberrypi/common-hal/microcontroller/Processor.h +++ b/ports/raspberrypi/common-hal/microcontroller/Processor.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H #define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H diff --git a/ports/raspberrypi/common-hal/microcontroller/__init__.c b/ports/raspberrypi/common-hal/microcontroller/__init__.c index 45d46f451964..c0daf6037de2 100644 --- a/ports/raspberrypi/common-hal/microcontroller/__init__.c +++ b/ports/raspberrypi/common-hal/microcontroller/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/mphal.h" #include "py/obj.h" diff --git a/ports/raspberrypi/common-hal/microcontroller/__init__.h b/ports/raspberrypi/common-hal/microcontroller/__init__.h index 1154bf5e3517..253c43e10a89 100644 --- a/ports/raspberrypi/common-hal/microcontroller/__init__.h +++ b/ports/raspberrypi/common-hal/microcontroller/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_MICROCONTROLLER___INIT___H #define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_MICROCONTROLLER___INIT___H diff --git a/ports/raspberrypi/common-hal/neopixel_write/__init__.c b/ports/raspberrypi/common-hal/neopixel_write/__init__.c index 6a179270435e..4753c17e5fe6 100644 --- a/ports/raspberrypi/common-hal/neopixel_write/__init__.c +++ b/ports/raspberrypi/common-hal/neopixel_write/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/neopixel_write/__init__.h" diff --git a/ports/raspberrypi/common-hal/nvm/ByteArray.c b/ports/raspberrypi/common-hal/nvm/ByteArray.c index cc52c88f3828..541f1a34bd7c 100644 --- a/ports/raspberrypi/common-hal/nvm/ByteArray.c +++ b/ports/raspberrypi/common-hal/nvm/ByteArray.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #include "common-hal/nvm/ByteArray.h" #include "shared-bindings/nvm/ByteArray.h" diff --git a/ports/raspberrypi/common-hal/nvm/ByteArray.h b/ports/raspberrypi/common-hal/nvm/ByteArray.h index 4667e6b23122..f61dae99ab74 100644 --- a/ports/raspberrypi/common-hal/nvm/ByteArray.h +++ b/ports/raspberrypi/common-hal/nvm/ByteArray.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_NVM_BYTEARRAY_H #define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_NVM_BYTEARRAY_H diff --git a/ports/raspberrypi/common-hal/nvm/__init__.c b/ports/raspberrypi/common-hal/nvm/__init__.c index 1b702a1584d2..64b15a2bfc89 100644 --- a/ports/raspberrypi/common-hal/nvm/__init__.c +++ b/ports/raspberrypi/common-hal/nvm/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No nvm module functions. diff --git a/ports/raspberrypi/common-hal/os/__init__.c b/ports/raspberrypi/common-hal/os/__init__.c index 805418288a8c..f9005288c18d 100644 --- a/ports/raspberrypi/common-hal/os/__init__.c +++ b/ports/raspberrypi/common-hal/os/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "genhdr/mpversion.h" #include "py/mpconfig.h" diff --git a/ports/raspberrypi/common-hal/paralleldisplaybus/ParallelBus.c b/ports/raspberrypi/common-hal/paralleldisplaybus/ParallelBus.c index 51acd0f6e736..7efa2740a0cf 100644 --- a/ports/raspberrypi/common-hal/paralleldisplaybus/ParallelBus.c +++ b/ports/raspberrypi/common-hal/paralleldisplaybus/ParallelBus.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/paralleldisplaybus/ParallelBus.h" diff --git a/ports/raspberrypi/common-hal/paralleldisplaybus/ParallelBus.h b/ports/raspberrypi/common-hal/paralleldisplaybus/ParallelBus.h index 55a70b0e0e99..58daa07f8722 100644 --- a/ports/raspberrypi/common-hal/paralleldisplaybus/ParallelBus.h +++ b/ports/raspberrypi/common-hal/paralleldisplaybus/ParallelBus.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/raspberrypi/common-hal/picodvi/Framebuffer.c b/ports/raspberrypi/common-hal/picodvi/Framebuffer.c index 81f312b0e4de..156f350f3f82 100644 --- a/ports/raspberrypi/common-hal/picodvi/Framebuffer.c +++ b/ports/raspberrypi/common-hal/picodvi/Framebuffer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "bindings/picodvi/Framebuffer.h" diff --git a/ports/raspberrypi/common-hal/picodvi/Framebuffer.h b/ports/raspberrypi/common-hal/picodvi/Framebuffer.h index aad9146c9f89..343a178a7b40 100644 --- a/ports/raspberrypi/common-hal/picodvi/Framebuffer.h +++ b/ports/raspberrypi/common-hal/picodvi/Framebuffer.h @@ -1,30 +1,10 @@ -#pragma once +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +#pragma once #include "py/obj.h" diff --git a/ports/raspberrypi/common-hal/pulseio/PulseIn.c b/ports/raspberrypi/common-hal/pulseio/PulseIn.c index e4b95f608eed..ee4aa79af0ce 100644 --- a/ports/raspberrypi/common-hal/pulseio/PulseIn.c +++ b/ports/raspberrypi/common-hal/pulseio/PulseIn.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dave Putz for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dave Putz for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "src/rp2_common/hardware_gpio/include/hardware/gpio.h" diff --git a/ports/raspberrypi/common-hal/pulseio/PulseIn.h b/ports/raspberrypi/common-hal/pulseio/PulseIn.h index 9ad6a5d917aa..cca1dedfabca 100644 --- a/ports/raspberrypi/common-hal/pulseio/PulseIn.h +++ b/ports/raspberrypi/common-hal/pulseio/PulseIn.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dave Putz for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dave Putz for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/raspberrypi/common-hal/pulseio/PulseOut.c b/ports/raspberrypi/common-hal/pulseio/PulseOut.c index 758c814d242e..89a09600396d 100644 --- a/ports/raspberrypi/common-hal/pulseio/PulseOut.c +++ b/ports/raspberrypi/common-hal/pulseio/PulseOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dave Putz for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dave Putz for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "common-hal/pulseio/PulseOut.h" diff --git a/ports/raspberrypi/common-hal/pulseio/PulseOut.h b/ports/raspberrypi/common-hal/pulseio/PulseOut.h index 329deb61e0c7..fa264c36b7f6 100644 --- a/ports/raspberrypi/common-hal/pulseio/PulseOut.h +++ b/ports/raspberrypi/common-hal/pulseio/PulseOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dave Putz for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dave Putz for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/raspberrypi/common-hal/pulseio/__init__.c b/ports/raspberrypi/common-hal/pulseio/__init__.c index 2bee925bc77f..50db4c40454e 100644 --- a/ports/raspberrypi/common-hal/pulseio/__init__.c +++ b/ports/raspberrypi/common-hal/pulseio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No pulseio module functions. diff --git a/ports/raspberrypi/common-hal/pwmio/PWMOut.c b/ports/raspberrypi/common-hal/pwmio/PWMOut.c index 9d593ffe57f9..07591012c587 100644 --- a/ports/raspberrypi/common-hal/pwmio/PWMOut.c +++ b/ports/raspberrypi/common-hal/pwmio/PWMOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/raspberrypi/common-hal/pwmio/PWMOut.h b/ports/raspberrypi/common-hal/pwmio/PWMOut.h index 6203dca11228..9109c4812ff4 100644 --- a/ports/raspberrypi/common-hal/pwmio/PWMOut.h +++ b/ports/raspberrypi/common-hal/pwmio/PWMOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/raspberrypi/common-hal/pwmio/__init__.c b/ports/raspberrypi/common-hal/pwmio/__init__.c index 9e551a1072b3..b43cd8b1b396 100644 --- a/ports/raspberrypi/common-hal/pwmio/__init__.c +++ b/ports/raspberrypi/common-hal/pwmio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No pwmio module functions. diff --git a/ports/raspberrypi/common-hal/rgbmatrix/RGBMatrix.c b/ports/raspberrypi/common-hal/rgbmatrix/RGBMatrix.c index f717849058bf..029e2b2755ea 100644 --- a/ports/raspberrypi/common-hal/rgbmatrix/RGBMatrix.c +++ b/ports/raspberrypi/common-hal/rgbmatrix/RGBMatrix.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/raspberrypi/common-hal/rgbmatrix/RGBMatrix.h b/ports/raspberrypi/common-hal/rgbmatrix/RGBMatrix.h index d14cd9b0836d..002169291322 100644 --- a/ports/raspberrypi/common-hal/rgbmatrix/RGBMatrix.h +++ b/ports/raspberrypi/common-hal/rgbmatrix/RGBMatrix.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_RGBMATRIX_RGBMATRIX_H #define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_RGBMATRIX_RGBMATRIX_H diff --git a/ports/raspberrypi/common-hal/rgbmatrix/__init__.c b/ports/raspberrypi/common-hal/rgbmatrix/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/raspberrypi/common-hal/rgbmatrix/__init__.c +++ b/ports/raspberrypi/common-hal/rgbmatrix/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/raspberrypi/common-hal/rotaryio/IncrementalEncoder.c b/ports/raspberrypi/common-hal/rotaryio/IncrementalEncoder.c index 4023b021914d..6e0b3815dfdb 100644 --- a/ports/raspberrypi/common-hal/rotaryio/IncrementalEncoder.c +++ b/ports/raspberrypi/common-hal/rotaryio/IncrementalEncoder.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" diff --git a/ports/raspberrypi/common-hal/rotaryio/IncrementalEncoder.h b/ports/raspberrypi/common-hal/rotaryio/IncrementalEncoder.h index 812ba09821ec..e529da6713ce 100644 --- a/ports/raspberrypi/common-hal/rotaryio/IncrementalEncoder.h +++ b/ports/raspberrypi/common-hal/rotaryio/IncrementalEncoder.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/raspberrypi/common-hal/rotaryio/__init__.c b/ports/raspberrypi/common-hal/rotaryio/__init__.c index 0aae79c26a1c..67cae26a8b7f 100644 --- a/ports/raspberrypi/common-hal/rotaryio/__init__.c +++ b/ports/raspberrypi/common-hal/rotaryio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No rotaryio module functions. diff --git a/ports/raspberrypi/common-hal/rotaryio/__init__.h b/ports/raspberrypi/common-hal/rotaryio/__init__.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/raspberrypi/common-hal/rotaryio/__init__.h +++ b/ports/raspberrypi/common-hal/rotaryio/__init__.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/raspberrypi/common-hal/rp2pio/StateMachine.c b/ports/raspberrypi/common-hal/rp2pio/StateMachine.c index f95b7fb064a6..88e13ddf2f4d 100644 --- a/ports/raspberrypi/common-hal/rp2pio/StateMachine.c +++ b/ports/raspberrypi/common-hal/rp2pio/StateMachine.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/raspberrypi/common-hal/rp2pio/StateMachine.h b/ports/raspberrypi/common-hal/rp2pio/StateMachine.h index 4d5edc5c7469..feea321a4e92 100644 --- a/ports/raspberrypi/common-hal/rp2pio/StateMachine.h +++ b/ports/raspberrypi/common-hal/rp2pio/StateMachine.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_RP2PIO_STATEMACHINE_H #define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_RP2PIO_STATEMACHINE_H diff --git a/ports/raspberrypi/common-hal/rp2pio/__init__.c b/ports/raspberrypi/common-hal/rp2pio/__init__.c index 7634001c9874..013819f06d5c 100644 --- a/ports/raspberrypi/common-hal/rp2pio/__init__.c +++ b/ports/raspberrypi/common-hal/rp2pio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/raspberrypi/common-hal/rtc/RTC.c b/ports/raspberrypi/common-hal/rtc/RTC.c index 20a5a18fa7af..79712c3a5337 100644 --- a/ports/raspberrypi/common-hal/rtc/RTC.c +++ b/ports/raspberrypi/common-hal/rtc/RTC.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2020 microDev +// +// SPDX-License-Identifier: MIT #include "shared-bindings/rtc/RTC.h" #include "common-hal/rtc/RTC.h" diff --git a/ports/raspberrypi/common-hal/rtc/RTC.h b/ports/raspberrypi/common-hal/rtc/RTC.h index 426a4ec7a9db..8aba151a3297 100644 --- a/ports/raspberrypi/common-hal/rtc/RTC.h +++ b/ports/raspberrypi/common-hal/rtc/RTC.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_RTC_RTC_H #define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_RTC_RTC_H diff --git a/ports/raspberrypi/common-hal/rtc/__init__.c b/ports/raspberrypi/common-hal/rtc/__init__.c index f5e6b6bdd462..d243e0aef0bb 100644 --- a/ports/raspberrypi/common-hal/rtc/__init__.c +++ b/ports/raspberrypi/common-hal/rtc/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No RTC module functions diff --git a/ports/raspberrypi/common-hal/socketpool/Socket.c b/ports/raspberrypi/common-hal/socketpool/Socket.c index d305f63c7882..af16dab1d580 100644 --- a/ports/raspberrypi/common-hal/socketpool/Socket.c +++ b/ports/raspberrypi/common-hal/socketpool/Socket.c @@ -1,32 +1,12 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2013-2019 Damien P. George - * Copyright (c) 2015 Galen Hazelwood - * Copyright (c) 2015-2017 Paul Sokolovsky - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013-2019 Damien P. George +// SPDX-FileCopyrightText: Copyright (c) 2015 Galen Hazelwood +// SPDX-FileCopyrightText: Copyright (c) 2015-2017 Paul Sokolovsky +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/socketpool/Socket.h" diff --git a/ports/raspberrypi/common-hal/socketpool/Socket.h b/ports/raspberrypi/common-hal/socketpool/Socket.h index c2306d201a1a..62754a012115 100644 --- a/ports/raspberrypi/common-hal/socketpool/Socket.h +++ b/ports/raspberrypi/common-hal/socketpool/Socket.h @@ -1,31 +1,11 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2013-2019 Damien P. George - * Copyright (c) 2015 Galen Hazelwood - * Copyright (c) 2015-2017 Paul Sokolovsky - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013-2019 Damien P. George +// SPDX-FileCopyrightText: Copyright (c) 2015 Galen Hazelwood +// SPDX-FileCopyrightText: Copyright (c) 2015-2017 Paul Sokolovsky +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/raspberrypi/common-hal/socketpool/SocketPool.c b/ports/raspberrypi/common-hal/socketpool/SocketPool.c index e27a56a42311..a98bc2313dc1 100644 --- a/ports/raspberrypi/common-hal/socketpool/SocketPool.c +++ b/ports/raspberrypi/common-hal/socketpool/SocketPool.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/socketpool/SocketPool.h" #include "common-hal/socketpool/Socket.h" diff --git a/ports/raspberrypi/common-hal/socketpool/SocketPool.h b/ports/raspberrypi/common-hal/socketpool/SocketPool.h index e2f12c471795..1c60d5109635 100644 --- a/ports/raspberrypi/common-hal/socketpool/SocketPool.h +++ b/ports/raspberrypi/common-hal/socketpool/SocketPool.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/raspberrypi/common-hal/socketpool/__init__.c b/ports/raspberrypi/common-hal/socketpool/__init__.c index 595977d24feb..c8558f9b80a3 100644 --- a/ports/raspberrypi/common-hal/socketpool/__init__.c +++ b/ports/raspberrypi/common-hal/socketpool/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/socketpool/__init__.h" diff --git a/ports/raspberrypi/common-hal/socketpool/__init__.h b/ports/raspberrypi/common-hal/socketpool/__init__.h index 32f1fe1dcb83..f7ccde7f3678 100644 --- a/ports/raspberrypi/common-hal/socketpool/__init__.h +++ b/ports/raspberrypi/common-hal/socketpool/__init__.h @@ -1,27 +1,7 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/raspberrypi/common-hal/usb_host/Port.c b/ports/raspberrypi/common-hal/usb_host/Port.c index 4aebaff34f3f..9f8fb016b343 100644 --- a/ports/raspberrypi/common-hal/usb_host/Port.c +++ b/ports/raspberrypi/common-hal/usb_host/Port.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "bindings/rp2pio/StateMachine.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/raspberrypi/common-hal/usb_host/Port.h b/ports/raspberrypi/common-hal/usb_host/Port.h index 69a7f8deafc3..cfd82251d75e 100644 --- a/ports/raspberrypi/common-hal/usb_host/Port.h +++ b/ports/raspberrypi/common-hal/usb_host/Port.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/raspberrypi/common-hal/usb_host/__init__.c b/ports/raspberrypi/common-hal/usb_host/__init__.c index 3b54bd6a5d7e..c3cdbae38c48 100644 --- a/ports/raspberrypi/common-hal/usb_host/__init__.c +++ b/ports/raspberrypi/common-hal/usb_host/__init__.c @@ -1,27 +1,7 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Nothing diff --git a/ports/raspberrypi/common-hal/watchdog/WatchDogMode.c b/ports/raspberrypi/common-hal/watchdog/WatchDogMode.c index fc4e0e008cd5..97c3b251a4ec 100644 --- a/ports/raspberrypi/common-hal/watchdog/WatchDogMode.c +++ b/ports/raspberrypi/common-hal/watchdog/WatchDogMode.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No watchdog module functions. diff --git a/ports/raspberrypi/common-hal/watchdog/WatchDogTimer.c b/ports/raspberrypi/common-hal/watchdog/WatchDogTimer.c index 282358267d65..bd8d0b2501b2 100644 --- a/ports/raspberrypi/common-hal/watchdog/WatchDogTimer.c +++ b/ports/raspberrypi/common-hal/watchdog/WatchDogTimer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" diff --git a/ports/raspberrypi/common-hal/watchdog/WatchDogTimer.h b/ports/raspberrypi/common-hal/watchdog/WatchDogTimer.h index ae214a95e6b0..5999836e6e82 100644 --- a/ports/raspberrypi/common-hal/watchdog/WatchDogTimer.h +++ b/ports/raspberrypi/common-hal/watchdog/WatchDogTimer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_WATCHDOG_WATCHDOGTIMER_H #define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_WATCHDOG_WATCHDOGTIMER_H diff --git a/ports/raspberrypi/common-hal/watchdog/__init__.c b/ports/raspberrypi/common-hal/watchdog/__init__.c index fc4e0e008cd5..97c3b251a4ec 100644 --- a/ports/raspberrypi/common-hal/watchdog/__init__.c +++ b/ports/raspberrypi/common-hal/watchdog/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No watchdog module functions. diff --git a/ports/raspberrypi/common-hal/wifi/Monitor.c b/ports/raspberrypi/common-hal/wifi/Monitor.c index e4bb58d6d108..8469c60ad567 100644 --- a/ports/raspberrypi/common-hal/wifi/Monitor.c +++ b/ports/raspberrypi/common-hal/wifi/Monitor.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/raspberrypi/common-hal/wifi/Monitor.h b/ports/raspberrypi/common-hal/wifi/Monitor.h index 14ee685bbd59..6e30ffcc2357 100644 --- a/ports/raspberrypi/common-hal/wifi/Monitor.h +++ b/ports/raspberrypi/common-hal/wifi/Monitor.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI_MONITOR_H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI_MONITOR_H diff --git a/ports/raspberrypi/common-hal/wifi/Network.c b/ports/raspberrypi/common-hal/wifi/Network.c index ef8124771268..1cd3effbd0f7 100644 --- a/ports/raspberrypi/common-hal/wifi/Network.c +++ b/ports/raspberrypi/common-hal/wifi/Network.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/raspberrypi/common-hal/wifi/Network.h b/ports/raspberrypi/common-hal/wifi/Network.h index 8e4e7bd310e8..708ad3d5151d 100644 --- a/ports/raspberrypi/common-hal/wifi/Network.h +++ b/ports/raspberrypi/common-hal/wifi/Network.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/raspberrypi/common-hal/wifi/Radio.c b/ports/raspberrypi/common-hal/wifi/Radio.c index cac434119c1c..41eec00357db 100644 --- a/ports/raspberrypi/common-hal/wifi/Radio.c +++ b/ports/raspberrypi/common-hal/wifi/Radio.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/port.h" #include "shared-bindings/wifi/Radio.h" diff --git a/ports/raspberrypi/common-hal/wifi/Radio.h b/ports/raspberrypi/common-hal/wifi/Radio.h index a4125fe7ba3a..53b6cd8f92f7 100644 --- a/ports/raspberrypi/common-hal/wifi/Radio.h +++ b/ports/raspberrypi/common-hal/wifi/Radio.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/raspberrypi/common-hal/wifi/ScannedNetworks.c b/ports/raspberrypi/common-hal/wifi/ScannedNetworks.c index e2de56a6d62e..62788aff8334 100644 --- a/ports/raspberrypi/common-hal/wifi/ScannedNetworks.c +++ b/ports/raspberrypi/common-hal/wifi/ScannedNetworks.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2017 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2017 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/raspberrypi/common-hal/wifi/ScannedNetworks.h b/ports/raspberrypi/common-hal/wifi/ScannedNetworks.h index eae783ca4e56..9d15ffff5fcf 100644 --- a/ports/raspberrypi/common-hal/wifi/ScannedNetworks.h +++ b/ports/raspberrypi/common-hal/wifi/ScannedNetworks.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/raspberrypi/common-hal/wifi/__init__.c b/ports/raspberrypi/common-hal/wifi/__init__.c index 7c8352399ade..5fbe3fe58d11 100644 --- a/ports/raspberrypi/common-hal/wifi/__init__.c +++ b/ports/raspberrypi/common-hal/wifi/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "common-hal/wifi/__init__.h" #include "shared-bindings/wifi/__init__.h" diff --git a/ports/raspberrypi/common-hal/wifi/__init__.h b/ports/raspberrypi/common-hal/wifi/__init__.h index d34d6310893d..73988e843798 100644 --- a/ports/raspberrypi/common-hal/wifi/__init__.h +++ b/ports/raspberrypi/common-hal/wifi/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/raspberrypi/cyw43_configport.h b/ports/raspberrypi/cyw43_configport.h index f6f6626fec0c..d0b05c590e01 100644 --- a/ports/raspberrypi/cyw43_configport.h +++ b/ports/raspberrypi/cyw43_configport.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Damien P. George +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_RP2_CYW43_CONFIGPORT_H #define MICROPY_INCLUDED_RP2_CYW43_CONFIGPORT_H diff --git a/ports/raspberrypi/mpconfigport.h b/ports/raspberrypi/mpconfigport.h index bc61d2deda8a..0ee15fa0ab0f 100644 --- a/ports/raspberrypi/mpconfigport.h +++ b/ports/raspberrypi/mpconfigport.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef __INCLUDED_MPCONFIGPORT_H #define __INCLUDED_MPCONFIGPORT_H diff --git a/ports/raspberrypi/mphalport.c b/ports/raspberrypi/mphalport.c index b4ecbca49d14..3258c4de4f3b 100644 --- a/ports/raspberrypi/mphalport.c +++ b/ports/raspberrypi/mphalport.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/raspberrypi/mphalport.h b/ports/raspberrypi/mphalport.h index 6d4753438867..2461318330c1 100644 --- a/ports/raspberrypi/mphalport.h +++ b/ports/raspberrypi/mphalport.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_RASPBERRYPI_MPHALPORT_H #define MICROPY_INCLUDED_RASPBERRYPI_MPHALPORT_H diff --git a/ports/raspberrypi/peripherals/pins.c b/ports/raspberrypi/peripherals/pins.c index 647f571cb50c..e2c6b9ee7062 100644 --- a/ports/raspberrypi/peripherals/pins.c +++ b/ports/raspberrypi/peripherals/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "pins.h" diff --git a/ports/raspberrypi/peripherals/pins.h b/ports/raspberrypi/peripherals/pins.h index 9ec74ed262bb..be7788712e2b 100644 --- a/ports/raspberrypi/peripherals/pins.h +++ b/ports/raspberrypi/peripherals/pins.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // DO NOT include this file directly. Use shared-bindings/microcontroller/Pin.h instead to ensure // that all necessary includes are already included. diff --git a/ports/raspberrypi/qstrdefsport.h b/ports/raspberrypi/qstrdefsport.h index 3ba897069bf7..57b5815583d4 100644 --- a/ports/raspberrypi/qstrdefsport.h +++ b/ports/raspberrypi/qstrdefsport.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // qstrs specific to this port diff --git a/ports/raspberrypi/supervisor/internal_flash.c b/ports/raspberrypi/supervisor/internal_flash.c index 00dbc61a5360..76dde31b9902 100644 --- a/ports/raspberrypi/supervisor/internal_flash.c +++ b/ports/raspberrypi/supervisor/internal_flash.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/internal_flash.h" diff --git a/ports/raspberrypi/supervisor/internal_flash.h b/ports/raspberrypi/supervisor/internal_flash.h index 0dc9f154585c..1c1a48936042 100644 --- a/ports/raspberrypi/supervisor/internal_flash.h +++ b/ports/raspberrypi/supervisor/internal_flash.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_RASPBERRYPI_INTERNAL_FLASH_H #define MICROPY_INCLUDED_RASPBERRYPI_INTERNAL_FLASH_H diff --git a/ports/raspberrypi/supervisor/port.c b/ports/raspberrypi/supervisor/port.c index 01776f833fb0..6eb43d70eb45 100644 --- a/ports/raspberrypi/supervisor/port.c +++ b/ports/raspberrypi/supervisor/port.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/raspberrypi/supervisor/usb.c b/ports/raspberrypi/supervisor/usb.c index fb4f72134d4f..05ee6d4aef15 100644 --- a/ports/raspberrypi/supervisor/usb.c +++ b/ports/raspberrypi/supervisor/usb.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "lib/tinyusb/src/device/usbd.h" #include "supervisor/background_callback.h" diff --git a/ports/renode/Makefile b/ports/renode/Makefile index 6687ef2fcbc8..98fe04f4713c 100644 --- a/ports/renode/Makefile +++ b/ports/renode/Makefile @@ -1,26 +1,8 @@ -# This file is part of the MicroPython project, http://micropython.org/ +# This file is part of the CircuitPython project: https://circuitpython.org # -# The MIT License (MIT) +# SPDX-FileCopyrightText: Copyright (c) 2024 Scott Shawcroft for Adafruit Industries # -# SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. +# SPDX-License-Identifier: MIT include ../../py/circuitpy_mkenv.mk diff --git a/ports/renode/background.c b/ports/renode/background.c index e2a3a10e3e5d..9493d3cb827e 100644 --- a/ports/renode/background.c +++ b/ports/renode/background.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/port.h" diff --git a/ports/renode/background.h b/ports/renode/background.h index 27752bd4adb9..3ff2509eb4a3 100644 --- a/ports/renode/background.h +++ b/ports/renode/background.h @@ -1,27 +1,7 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/renode/boards/renode_cortex_m0plus/board.c b/ports/renode/boards/renode_cortex_m0plus/board.c index 331653173ecd..e6a868ab2122 100644 --- a/ports/renode/boards/renode_cortex_m0plus/board.c +++ b/ports/renode/boards/renode_cortex_m0plus/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/renode/boards/renode_cortex_m0plus/mpconfigboard.h b/ports/renode/boards/renode_cortex_m0plus/mpconfigboard.h index 3d9d38ffac39..3874d96e4d1e 100644 --- a/ports/renode/boards/renode_cortex_m0plus/mpconfigboard.h +++ b/ports/renode/boards/renode_cortex_m0plus/mpconfigboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #define MICROPY_HW_BOARD_NAME "Renode Cortex-M0+" #define MICROPY_HW_MCU_NAME "cortex-m0+" diff --git a/ports/renode/boards/renode_cortex_m0plus/pins.c b/ports/renode/boards/renode_cortex_m0plus/pins.c index 5ecb12fdacc3..efa6d2d729e2 100644 --- a/ports/renode/boards/renode_cortex_m0plus/pins.c +++ b/ports/renode/boards/renode_cortex_m0plus/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/renode/common-hal/board/__init__.c b/ports/renode/common-hal/board/__init__.c index b429ab358d5a..1ff7f0b489f4 100644 --- a/ports/renode/common-hal/board/__init__.c +++ b/ports/renode/common-hal/board/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/renode/common-hal/busio/I2C.c b/ports/renode/common-hal/busio/I2C.c index 4dbf4c2b4a6e..def78d632cd6 100644 --- a/ports/renode/common-hal/busio/I2C.c +++ b/ports/renode/common-hal/busio/I2C.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/busio/I2C.h" diff --git a/ports/renode/common-hal/busio/I2C.h b/ports/renode/common-hal/busio/I2C.h index 2d16b69e4f88..690486555603 100644 --- a/ports/renode/common-hal/busio/I2C.h +++ b/ports/renode/common-hal/busio/I2C.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/renode/common-hal/busio/SPI.c b/ports/renode/common-hal/busio/SPI.c index d505cb9ac905..42b12d1fb29c 100644 --- a/ports/renode/common-hal/busio/SPI.c +++ b/ports/renode/common-hal/busio/SPI.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/busio/SPI.h" diff --git a/ports/renode/common-hal/busio/SPI.h b/ports/renode/common-hal/busio/SPI.h index 8a5bda837843..32e5b0c3866d 100644 --- a/ports/renode/common-hal/busio/SPI.h +++ b/ports/renode/common-hal/busio/SPI.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/renode/common-hal/busio/UART.c b/ports/renode/common-hal/busio/UART.c index 6c6ffda0fa37..dc71a982e4b1 100644 --- a/ports/renode/common-hal/busio/UART.c +++ b/ports/renode/common-hal/busio/UART.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include "shared-bindings/busio/UART.h" #include "py/runtime.h" diff --git a/ports/renode/common-hal/busio/UART.h b/ports/renode/common-hal/busio/UART.h index a0d9ec47be6c..6f2619954c68 100644 --- a/ports/renode/common-hal/busio/UART.h +++ b/ports/renode/common-hal/busio/UART.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/renode/common-hal/busio/__init__.c b/ports/renode/common-hal/busio/__init__.c index 41761b6743ae..b726684324a3 100644 --- a/ports/renode/common-hal/busio/__init__.c +++ b/ports/renode/common-hal/busio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No busio module functions. diff --git a/ports/renode/common-hal/microcontroller/Pin.c b/ports/renode/common-hal/microcontroller/Pin.c index 16730d23635c..039033435568 100644 --- a/ports/renode/common-hal/microcontroller/Pin.c +++ b/ports/renode/common-hal/microcontroller/Pin.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" diff --git a/ports/renode/common-hal/microcontroller/Pin.h b/ports/renode/common-hal/microcontroller/Pin.h index b4f526983b1f..5e42c5920ac5 100644 --- a/ports/renode/common-hal/microcontroller/Pin.h +++ b/ports/renode/common-hal/microcontroller/Pin.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/renode/common-hal/microcontroller/Processor.c b/ports/renode/common-hal/microcontroller/Processor.c index 372e4525af0d..3532aa6907a4 100644 --- a/ports/renode/common-hal/microcontroller/Processor.c +++ b/ports/renode/common-hal/microcontroller/Processor.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/renode/common-hal/microcontroller/Processor.h b/ports/renode/common-hal/microcontroller/Processor.h index ca96a9804d64..685a452535a1 100644 --- a/ports/renode/common-hal/microcontroller/Processor.h +++ b/ports/renode/common-hal/microcontroller/Processor.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/renode/common-hal/microcontroller/__init__.c b/ports/renode/common-hal/microcontroller/__init__.c index 96729539b738..47d7f15b8256 100644 --- a/ports/renode/common-hal/microcontroller/__init__.c +++ b/ports/renode/common-hal/microcontroller/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/mphal.h" #include "py/obj.h" diff --git a/ports/renode/common-hal/microcontroller/__init__.h b/ports/renode/common-hal/microcontroller/__init__.h index d40d4d190c59..82f9558de0a2 100644 --- a/ports/renode/common-hal/microcontroller/__init__.h +++ b/ports/renode/common-hal/microcontroller/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/renode/common-hal/os/__init__.c b/ports/renode/common-hal/os/__init__.c index bace29c3c3c2..cf0f0fc67028 100644 --- a/ports/renode/common-hal/os/__init__.c +++ b/ports/renode/common-hal/os/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "genhdr/mpversion.h" #include "py/mpconfig.h" diff --git a/ports/renode/mpconfigport.h b/ports/renode/mpconfigport.h index c3a4de927c33..185a884ed313 100644 --- a/ports/renode/mpconfigport.h +++ b/ports/renode/mpconfigport.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/renode/mphalport.c b/ports/renode/mphalport.c index 84e9a4685a3c..b201420d9bb9 100644 --- a/ports/renode/mphalport.c +++ b/ports/renode/mphalport.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/mphal.h" #include "shared-bindings/microcontroller/__init__.h" diff --git a/ports/renode/mphalport.h b/ports/renode/mphalport.h index 30e5aaf76203..802442dbaaf3 100644 --- a/ports/renode/mphalport.h +++ b/ports/renode/mphalport.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/renode/qstrdefsport.h b/ports/renode/qstrdefsport.h index 3ba897069bf7..57b5815583d4 100644 --- a/ports/renode/qstrdefsport.h +++ b/ports/renode/qstrdefsport.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // qstrs specific to this port diff --git a/ports/renode/supervisor/internal_flash.c b/ports/renode/supervisor/internal_flash.c index 0d75cb9cc979..028258aee35b 100644 --- a/ports/renode/supervisor/internal_flash.c +++ b/ports/renode/supervisor/internal_flash.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/internal_flash.h" diff --git a/ports/renode/supervisor/internal_flash.h b/ports/renode/supervisor/internal_flash.h index 3706b719460a..f85b4f7a24b6 100644 --- a/ports/renode/supervisor/internal_flash.h +++ b/ports/renode/supervisor/internal_flash.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once #include diff --git a/ports/renode/supervisor/port.c b/ports/renode/supervisor/port.c index bf2f71953ee4..dae32b7bb8f2 100644 --- a/ports/renode/supervisor/port.c +++ b/ports/renode/supervisor/port.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/stm/Makefile b/ports/stm/Makefile index 44d8b96d7cd3..d42ebdc72761 100755 --- a/ports/stm/Makefile +++ b/ports/stm/Makefile @@ -1,27 +1,9 @@ -# This file is part of the MicroPython project, http://micropython.org/ -# -# The MIT License (MIT) +# This file is part of the CircuitPython project: https://circuitpython.org # # SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries # SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries # -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. +# SPDX-License-Identifier: MIT include ../../py/circuitpy_mkenv.mk diff --git a/ports/stm/background.c b/ports/stm/background.c index 7dc617f49fd4..6351241d6896 100644 --- a/ports/stm/background.c +++ b/ports/stm/background.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" #include "supervisor/filesystem.h" diff --git a/ports/stm/background.h b/ports/stm/background.h index e57aa40dd7d8..1fbee93a801c 100644 --- a/ports/stm/background.h +++ b/ports/stm/background.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_BACKGROUND_H #define MICROPY_INCLUDED_STM32_BACKGROUND_H diff --git a/ports/stm/boards/STM32F746xG_fs.ld b/ports/stm/boards/STM32F746xG_fs.ld index 7419c43d2ec1..ab3bcff97a97 100644 --- a/ports/stm/boards/STM32F746xG_fs.ld +++ b/ports/stm/boards/STM32F746xG_fs.ld @@ -1,30 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * GNU linker script for STM32F746 with filesystem - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Mark Olsson - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Mark Olsson +// +// SPDX-License-Identifier: MIT /* Entry Point */ ENTRY(Reset_Handler) diff --git a/ports/stm/boards/espruino_pico/board.c b/ports/stm/boards/espruino_pico/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/stm/boards/espruino_pico/board.c +++ b/ports/stm/boards/espruino_pico/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/stm/boards/espruino_pico/mpconfigboard.h b/ports/stm/boards/espruino_pico/mpconfigboard.h index 9d695abef9bd..2433cffdcee1 100644 --- a/ports/stm/boards/espruino_pico/mpconfigboard.h +++ b/ports/stm/boards/espruino_pico/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/stm/boards/espruino_pico/pins.c b/ports/stm/boards/espruino_pico/pins.c index fbd288e17910..714ac1c7e699 100644 --- a/ports/stm/boards/espruino_pico/pins.c +++ b/ports/stm/boards/espruino_pico/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/stm/boards/espruino_wifi/board.c b/ports/stm/boards/espruino_wifi/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/stm/boards/espruino_wifi/board.c +++ b/ports/stm/boards/espruino_wifi/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/stm/boards/espruino_wifi/mpconfigboard.h b/ports/stm/boards/espruino_wifi/mpconfigboard.h index b857650d6ba0..a0ae336d7623 100644 --- a/ports/stm/boards/espruino_wifi/mpconfigboard.h +++ b/ports/stm/boards/espruino_wifi/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/stm/boards/espruino_wifi/pins.c b/ports/stm/boards/espruino_wifi/pins.c index 216d5b421305..125204dc7607 100644 --- a/ports/stm/boards/espruino_wifi/pins.c +++ b/ports/stm/boards/espruino_wifi/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/stm/boards/feather_stm32f405_express/board.c b/ports/stm/boards/feather_stm32f405_express/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/stm/boards/feather_stm32f405_express/board.c +++ b/ports/stm/boards/feather_stm32f405_express/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/stm/boards/feather_stm32f405_express/mpconfigboard.h b/ports/stm/boards/feather_stm32f405_express/mpconfigboard.h index 8558edd8cd20..c0f18fcd135a 100644 --- a/ports/stm/boards/feather_stm32f405_express/mpconfigboard.h +++ b/ports/stm/boards/feather_stm32f405_express/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/stm/boards/feather_stm32f405_express/pins.c b/ports/stm/boards/feather_stm32f405_express/pins.c index ade7036d5c95..0d4131f878b1 100644 --- a/ports/stm/boards/feather_stm32f405_express/pins.c +++ b/ports/stm/boards/feather_stm32f405_express/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" diff --git a/ports/stm/boards/meowbit_v121/board.c b/ports/stm/boards/meowbit_v121/board.c index 8c6047954053..181f433a372b 100644 --- a/ports/stm/boards/meowbit_v121/board.c +++ b/ports/stm/boards/meowbit_v121/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/stm/boards/meowbit_v121/mpconfigboard.h b/ports/stm/boards/meowbit_v121/mpconfigboard.h index f0e087e8b0f4..dbc1a994baba 100644 --- a/ports/stm/boards/meowbit_v121/mpconfigboard.h +++ b/ports/stm/boards/meowbit_v121/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/stm/boards/meowbit_v121/pins.c b/ports/stm/boards/meowbit_v121/pins.c index 3de558d07ed6..dd5404f823e6 100644 --- a/ports/stm/boards/meowbit_v121/pins.c +++ b/ports/stm/boards/meowbit_v121/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" #include "supervisor/spi_flash_api.h" diff --git a/ports/stm/boards/nucleo_f446re/board.c b/ports/stm/boards/nucleo_f446re/board.c index b75dda30614e..2ea053107d1b 100644 --- a/ports/stm/boards/nucleo_f446re/board.c +++ b/ports/stm/boards/nucleo_f446re/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 flom84 - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 flom84 +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/stm/boards/nucleo_f446re/mpconfigboard.h b/ports/stm/boards/nucleo_f446re/mpconfigboard.h index f0155f462433..f4ccc4e27c9a 100644 --- a/ports/stm/boards/nucleo_f446re/mpconfigboard.h +++ b/ports/stm/boards/nucleo_f446re/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 flom84 - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 flom84 +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/stm/boards/nucleo_f446re/pins.c b/ports/stm/boards/nucleo_f446re/pins.c index ac5a457d0757..82e059253e76 100644 --- a/ports/stm/boards/nucleo_f446re/pins.c +++ b/ports/stm/boards/nucleo_f446re/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 flom84 +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/stm/boards/nucleo_f746zg/board.c b/ports/stm/boards/nucleo_f746zg/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/stm/boards/nucleo_f746zg/board.c +++ b/ports/stm/boards/nucleo_f746zg/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/stm/boards/nucleo_f746zg/mpconfigboard.h b/ports/stm/boards/nucleo_f746zg/mpconfigboard.h index bde2c3ec73bf..9037b61cb521 100644 --- a/ports/stm/boards/nucleo_f746zg/mpconfigboard.h +++ b/ports/stm/boards/nucleo_f746zg/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * Copyright (c) 2020 Mark Olsson - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2020 Mark Olsson +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/stm/boards/nucleo_f746zg/pins.c b/ports/stm/boards/nucleo_f746zg/pins.c index fdb9575b577e..e267556ae00d 100644 --- a/ports/stm/boards/nucleo_f746zg/pins.c +++ b/ports/stm/boards/nucleo_f746zg/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/stm/boards/nucleo_f767zi/board.c b/ports/stm/boards/nucleo_f767zi/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/stm/boards/nucleo_f767zi/board.c +++ b/ports/stm/boards/nucleo_f767zi/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/stm/boards/nucleo_f767zi/mpconfigboard.h b/ports/stm/boards/nucleo_f767zi/mpconfigboard.h index 8db104e871ef..80bbeef0ac4d 100644 --- a/ports/stm/boards/nucleo_f767zi/mpconfigboard.h +++ b/ports/stm/boards/nucleo_f767zi/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/stm/boards/nucleo_f767zi/pins.c b/ports/stm/boards/nucleo_f767zi/pins.c index 79de1f87a74f..2f6d6cf99365 100644 --- a/ports/stm/boards/nucleo_f767zi/pins.c +++ b/ports/stm/boards/nucleo_f767zi/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/stm/boards/nucleo_h743zi_2/board.c b/ports/stm/boards/nucleo_h743zi_2/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/stm/boards/nucleo_h743zi_2/board.c +++ b/ports/stm/boards/nucleo_h743zi_2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/stm/boards/nucleo_h743zi_2/mpconfigboard.h b/ports/stm/boards/nucleo_h743zi_2/mpconfigboard.h index 36c55a26aa7c..7233d14ef80a 100644 --- a/ports/stm/boards/nucleo_h743zi_2/mpconfigboard.h +++ b/ports/stm/boards/nucleo_h743zi_2/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/stm/boards/nucleo_h743zi_2/pins.c b/ports/stm/boards/nucleo_h743zi_2/pins.c index e36b2dba86b2..84406e009377 100644 --- a/ports/stm/boards/nucleo_h743zi_2/pins.c +++ b/ports/stm/boards/nucleo_h743zi_2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/stm/boards/openmv_h7/board.c b/ports/stm/boards/openmv_h7/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/stm/boards/openmv_h7/board.c +++ b/ports/stm/boards/openmv_h7/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/stm/boards/openmv_h7/mpconfigboard.h b/ports/stm/boards/openmv_h7/mpconfigboard.h index ffeba28f6230..0fa1abae8761 100644 --- a/ports/stm/boards/openmv_h7/mpconfigboard.h +++ b/ports/stm/boards/openmv_h7/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/stm/boards/openmv_h7/pins.c b/ports/stm/boards/openmv_h7/pins.c index c7f435cef58f..27e82e44a663 100644 --- a/ports/stm/boards/openmv_h7/pins.c +++ b/ports/stm/boards/openmv_h7/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/stm/boards/pyb_nano_v2/board.c b/ports/stm/boards/pyb_nano_v2/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/stm/boards/pyb_nano_v2/board.c +++ b/ports/stm/boards/pyb_nano_v2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/stm/boards/pyb_nano_v2/mpconfigboard.h b/ports/stm/boards/pyb_nano_v2/mpconfigboard.h index 4425d1eeecb9..c11d23a7203f 100644 --- a/ports/stm/boards/pyb_nano_v2/mpconfigboard.h +++ b/ports/stm/boards/pyb_nano_v2/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/stm/boards/pyb_nano_v2/pins.c b/ports/stm/boards/pyb_nano_v2/pins.c index 28742378de8e..74f3eb1eb16e 100644 --- a/ports/stm/boards/pyb_nano_v2/pins.c +++ b/ports/stm/boards/pyb_nano_v2/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/stm/boards/pyboard_v11/board.c b/ports/stm/boards/pyboard_v11/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/stm/boards/pyboard_v11/board.c +++ b/ports/stm/boards/pyboard_v11/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/stm/boards/pyboard_v11/mpconfigboard.h b/ports/stm/boards/pyboard_v11/mpconfigboard.h index 1ce89a59fc17..64ba57853168 100644 --- a/ports/stm/boards/pyboard_v11/mpconfigboard.h +++ b/ports/stm/boards/pyboard_v11/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/stm/boards/pyboard_v11/pins.c b/ports/stm/boards/pyboard_v11/pins.c index 9c4505d03777..cf33c4637adc 100644 --- a/ports/stm/boards/pyboard_v11/pins.c +++ b/ports/stm/boards/pyboard_v11/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/stm/boards/sparkfun_stm32_thing_plus/board.c b/ports/stm/boards/sparkfun_stm32_thing_plus/board.c index 5fca974e9eda..bf0895c13e4e 100644 --- a/ports/stm/boards/sparkfun_stm32_thing_plus/board.c +++ b/ports/stm/boards/sparkfun_stm32_thing_plus/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/stm/boards/sparkfun_stm32_thing_plus/mpconfigboard.h b/ports/stm/boards/sparkfun_stm32_thing_plus/mpconfigboard.h index b1412d9186ae..662dd2f96772 100644 --- a/ports/stm/boards/sparkfun_stm32_thing_plus/mpconfigboard.h +++ b/ports/stm/boards/sparkfun_stm32_thing_plus/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/stm/boards/sparkfun_stm32_thing_plus/pins.c b/ports/stm/boards/sparkfun_stm32_thing_plus/pins.c index df7040ce0a1b..a08f7120f228 100644 --- a/ports/stm/boards/sparkfun_stm32_thing_plus/pins.c +++ b/ports/stm/boards/sparkfun_stm32_thing_plus/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" diff --git a/ports/stm/boards/sparkfun_stm32f405_micromod/board.c b/ports/stm/boards/sparkfun_stm32f405_micromod/board.c index f081e7fa9013..b0b21a53d90a 100644 --- a/ports/stm/boards/sparkfun_stm32f405_micromod/board.c +++ b/ports/stm/boards/sparkfun_stm32f405_micromod/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/stm/boards/sparkfun_stm32f405_micromod/mpconfigboard.h b/ports/stm/boards/sparkfun_stm32f405_micromod/mpconfigboard.h index ed3a6433227c..6e9c56237ffe 100644 --- a/ports/stm/boards/sparkfun_stm32f405_micromod/mpconfigboard.h +++ b/ports/stm/boards/sparkfun_stm32f405_micromod/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Chris Wilson - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Chris Wilson +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/stm/boards/sparkfun_stm32f405_micromod/pins.c b/ports/stm/boards/sparkfun_stm32f405_micromod/pins.c index c864ad4dd59e..baeda8bfff01 100644 --- a/ports/stm/boards/sparkfun_stm32f405_micromod/pins.c +++ b/ports/stm/boards/sparkfun_stm32f405_micromod/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Chris Wilson - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Chris Wilson +// +// SPDX-License-Identifier: MIT #include "shared-bindings/board/__init__.h" diff --git a/ports/stm/boards/stm32f411ce_blackpill/board.c b/ports/stm/boards/stm32f411ce_blackpill/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/stm/boards/stm32f411ce_blackpill/board.c +++ b/ports/stm/boards/stm32f411ce_blackpill/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/stm/boards/stm32f411ce_blackpill/mpconfigboard.h b/ports/stm/boards/stm32f411ce_blackpill/mpconfigboard.h index 4e72668693e0..9a871e659195 100644 --- a/ports/stm/boards/stm32f411ce_blackpill/mpconfigboard.h +++ b/ports/stm/boards/stm32f411ce_blackpill/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/stm/boards/stm32f411ce_blackpill/pins.c b/ports/stm/boards/stm32f411ce_blackpill/pins.c index b21ae0da5ed0..2b299930fdb3 100644 --- a/ports/stm/boards/stm32f411ce_blackpill/pins.c +++ b/ports/stm/boards/stm32f411ce_blackpill/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/stm/boards/stm32f411ce_blackpill_with_flash/board.c b/ports/stm/boards/stm32f411ce_blackpill_with_flash/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/stm/boards/stm32f411ce_blackpill_with_flash/board.c +++ b/ports/stm/boards/stm32f411ce_blackpill_with_flash/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/stm/boards/stm32f411ce_blackpill_with_flash/mpconfigboard.h b/ports/stm/boards/stm32f411ce_blackpill_with_flash/mpconfigboard.h index ef00f95e0e8d..9ea278d8382d 100644 --- a/ports/stm/boards/stm32f411ce_blackpill_with_flash/mpconfigboard.h +++ b/ports/stm/boards/stm32f411ce_blackpill_with_flash/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/stm/boards/stm32f411ce_blackpill_with_flash/pins.c b/ports/stm/boards/stm32f411ce_blackpill_with_flash/pins.c index b21ae0da5ed0..2b299930fdb3 100644 --- a/ports/stm/boards/stm32f411ce_blackpill_with_flash/pins.c +++ b/ports/stm/boards/stm32f411ce_blackpill_with_flash/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/stm/boards/stm32f411ve_discovery/board.c b/ports/stm/boards/stm32f411ve_discovery/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/stm/boards/stm32f411ve_discovery/board.c +++ b/ports/stm/boards/stm32f411ve_discovery/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/stm/boards/stm32f411ve_discovery/mpconfigboard.h b/ports/stm/boards/stm32f411ve_discovery/mpconfigboard.h index 3b2485b3ecdc..aa8023cbde8e 100644 --- a/ports/stm/boards/stm32f411ve_discovery/mpconfigboard.h +++ b/ports/stm/boards/stm32f411ve_discovery/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/stm/boards/stm32f411ve_discovery/pins.c b/ports/stm/boards/stm32f411ve_discovery/pins.c index 680985856b46..904e8477a530 100644 --- a/ports/stm/boards/stm32f411ve_discovery/pins.c +++ b/ports/stm/boards/stm32f411ve_discovery/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/stm/boards/stm32f412zg_discovery/board.c b/ports/stm/boards/stm32f412zg_discovery/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/stm/boards/stm32f412zg_discovery/board.c +++ b/ports/stm/boards/stm32f412zg_discovery/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/stm/boards/stm32f412zg_discovery/mpconfigboard.h b/ports/stm/boards/stm32f412zg_discovery/mpconfigboard.h index 3ae0761c7a01..1a425a3729ee 100644 --- a/ports/stm/boards/stm32f412zg_discovery/mpconfigboard.h +++ b/ports/stm/boards/stm32f412zg_discovery/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/stm/boards/stm32f412zg_discovery/pins.c b/ports/stm/boards/stm32f412zg_discovery/pins.c index 8fc2fc0ce045..c523e8e5212c 100644 --- a/ports/stm/boards/stm32f412zg_discovery/pins.c +++ b/ports/stm/boards/stm32f412zg_discovery/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/stm/boards/stm32f4_discovery/board.c b/ports/stm/boards/stm32f4_discovery/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/stm/boards/stm32f4_discovery/board.c +++ b/ports/stm/boards/stm32f4_discovery/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/stm/boards/stm32f4_discovery/mpconfigboard.h b/ports/stm/boards/stm32f4_discovery/mpconfigboard.h index 410c21ec9af6..9cf7c5af7526 100644 --- a/ports/stm/boards/stm32f4_discovery/mpconfigboard.h +++ b/ports/stm/boards/stm32f4_discovery/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/stm/boards/stm32f4_discovery/pins.c b/ports/stm/boards/stm32f4_discovery/pins.c index a3301b305778..d1513031fec8 100644 --- a/ports/stm/boards/stm32f4_discovery/pins.c +++ b/ports/stm/boards/stm32f4_discovery/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/stm/boards/stm32f746g_discovery/board.c b/ports/stm/boards/stm32f746g_discovery/board.c index 56c90bd8c673..5b4f34707696 100644 --- a/ports/stm/boards/stm32f746g_discovery/board.c +++ b/ports/stm/boards/stm32f746g_discovery/board.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2020 Mark Olsson - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2020 Mark Olsson +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "stm32f7xx_hal.h" diff --git a/ports/stm/boards/stm32f746g_discovery/mpconfigboard.h b/ports/stm/boards/stm32f746g_discovery/mpconfigboard.h index afcefe0ce31d..567bbad77ae3 100644 --- a/ports/stm/boards/stm32f746g_discovery/mpconfigboard.h +++ b/ports/stm/boards/stm32f746g_discovery/mpconfigboard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * Copyright (c) 2020 Mark Olsson - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2020 Mark Olsson +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/stm/boards/stm32f746g_discovery/pins.c b/ports/stm/boards/stm32f746g_discovery/pins.c index 8c0a41569b2b..55c97cb39a36 100644 --- a/ports/stm/boards/stm32f746g_discovery/pins.c +++ b/ports/stm/boards/stm32f746g_discovery/pins.c @@ -1,3 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2020 Mark Olsson +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/stm/boards/swan_r5/board.c b/ports/stm/boards/swan_r5/board.c index 602fd8753725..690120bf5ac2 100644 --- a/ports/stm/boards/swan_r5/board.c +++ b/ports/stm/boards/swan_r5/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "mpconfigboard.h" diff --git a/ports/stm/boards/swan_r5/board.h b/ports/stm/boards/swan_r5/board.h index 56c62c34a0fe..92ab61ba361a 100644 --- a/ports/stm/boards/swan_r5/board.h +++ b/ports/stm/boards/swan_r5/board.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #ifndef _BOARDS_SWAN_R5_BOARD_H_ #define _BOARDS_SWAN_R5_BOARD_H_ diff --git a/ports/stm/boards/swan_r5/mpconfigboard.h b/ports/stm/boards/swan_r5/mpconfigboard.h index 8c6949201ea7..44bd071a3130 100644 --- a/ports/stm/boards/swan_r5/mpconfigboard.h +++ b/ports/stm/boards/swan_r5/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Blues Wireless Contributors. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Blues Wireless Contributors. +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/stm/boards/swan_r5/pins.c b/ports/stm/boards/swan_r5/pins.c index 28fda5e65332..0e827e11d899 100644 --- a/ports/stm/boards/swan_r5/pins.c +++ b/ports/stm/boards/swan_r5/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" #include "board.h" diff --git a/ports/stm/boards/system_stm32f7xx.c b/ports/stm/boards/system_stm32f7xx.c index 450283ae55e1..5000c696299b 100644 --- a/ports/stm/boards/system_stm32f7xx.c +++ b/ports/stm/boards/system_stm32f7xx.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /** ****************************************************************************** * @file system_stm32f7xx.c diff --git a/ports/stm/boards/thunderpack_v11/board.c b/ports/stm/boards/thunderpack_v11/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/stm/boards/thunderpack_v11/board.c +++ b/ports/stm/boards/thunderpack_v11/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/stm/boards/thunderpack_v11/mpconfigboard.h b/ports/stm/boards/thunderpack_v11/mpconfigboard.h index 9afbd3d03353..f4f147d865fb 100644 --- a/ports/stm/boards/thunderpack_v11/mpconfigboard.h +++ b/ports/stm/boards/thunderpack_v11/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #define MICROPY_HW_BOARD_NAME "THUNDERPACK_v11" #define MICROPY_HW_MCU_NAME "STM32F411CE" diff --git a/ports/stm/boards/thunderpack_v11/pins.c b/ports/stm/boards/thunderpack_v11/pins.c index b37e37825ad0..fcb04e54e4d0 100644 --- a/ports/stm/boards/thunderpack_v11/pins.c +++ b/ports/stm/boards/thunderpack_v11/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/stm/boards/thunderpack_v12/board.c b/ports/stm/boards/thunderpack_v12/board.c index fb1ce4fb834f..b44a1ae51e04 100644 --- a/ports/stm/boards/thunderpack_v12/board.c +++ b/ports/stm/boards/thunderpack_v12/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/stm/boards/thunderpack_v12/mpconfigboard.h b/ports/stm/boards/thunderpack_v12/mpconfigboard.h index 34a5795ff172..670d4987f724 100644 --- a/ports/stm/boards/thunderpack_v12/mpconfigboard.h +++ b/ports/stm/boards/thunderpack_v12/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #define MICROPY_HW_BOARD_NAME "THUNDERPACK_v12" #define MICROPY_HW_MCU_NAME "STM32F411CE" diff --git a/ports/stm/boards/thunderpack_v12/pins.c b/ports/stm/boards/thunderpack_v12/pins.c index f106c8a26bea..92a07ac0e8ef 100644 --- a/ports/stm/boards/thunderpack_v12/pins.c +++ b/ports/stm/boards/thunderpack_v12/pins.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + #include "shared-bindings/board/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { diff --git a/ports/stm/common-hal/alarm/SleepMemory.c b/ports/stm/common-hal/alarm/SleepMemory.c index d8fa88785ea2..74a5b418203a 100644 --- a/ports/stm/common-hal/alarm/SleepMemory.c +++ b/ports/stm/common-hal/alarm/SleepMemory.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/stm/common-hal/alarm/SleepMemory.h b/ports/stm/common-hal/alarm/SleepMemory.h index 14848cd5a011..59e612747692 100644 --- a/ports/stm/common-hal/alarm/SleepMemory.h +++ b/ports/stm/common-hal/alarm/SleepMemory.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/stm/common-hal/alarm/__init__.c b/ports/stm/common-hal/alarm/__init__.c index 68999e9dea8f..0526f510c083 100644 --- a/ports/stm/common-hal/alarm/__init__.c +++ b/ports/stm/common-hal/alarm/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/gc.h" #include "py/obj.h" diff --git a/ports/stm/common-hal/alarm/__init__.h b/ports/stm/common-hal/alarm/__init__.h index c87cb3b1eb82..e530efc58daa 100644 --- a/ports/stm/common-hal/alarm/__init__.h +++ b/ports/stm/common-hal/alarm/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/stm/common-hal/alarm/coproc/CoprocAlarm.c b/ports/stm/common-hal/alarm/coproc/CoprocAlarm.c index 4bd8276f3492..a7f2dfca2b67 100644 --- a/ports/stm/common-hal/alarm/coproc/CoprocAlarm.c +++ b/ports/stm/common-hal/alarm/coproc/CoprocAlarm.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // empty file diff --git a/ports/stm/common-hal/alarm/coproc/CoprocAlarm.h b/ports/stm/common-hal/alarm/coproc/CoprocAlarm.h index 4bd8276f3492..a7f2dfca2b67 100644 --- a/ports/stm/common-hal/alarm/coproc/CoprocAlarm.h +++ b/ports/stm/common-hal/alarm/coproc/CoprocAlarm.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // empty file diff --git a/ports/stm/common-hal/alarm/pin/PinAlarm.c b/ports/stm/common-hal/alarm/pin/PinAlarm.c index 63ee2d459876..45c4afa4c5cf 100644 --- a/ports/stm/common-hal/alarm/pin/PinAlarm.c +++ b/ports/stm/common-hal/alarm/pin/PinAlarm.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" diff --git a/ports/stm/common-hal/alarm/pin/PinAlarm.h b/ports/stm/common-hal/alarm/pin/PinAlarm.h index 77e0c6143ea0..235ad96f5945 100644 --- a/ports/stm/common-hal/alarm/pin/PinAlarm.h +++ b/ports/stm/common-hal/alarm/pin/PinAlarm.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/stm/common-hal/alarm/time/TimeAlarm.c b/ports/stm/common-hal/alarm/time/TimeAlarm.c index 012debedf927..545587a65f50 100644 --- a/ports/stm/common-hal/alarm/time/TimeAlarm.c +++ b/ports/stm/common-hal/alarm/time/TimeAlarm.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" diff --git a/ports/stm/common-hal/alarm/time/TimeAlarm.h b/ports/stm/common-hal/alarm/time/TimeAlarm.h index e3b9caadcdc0..ba2873bcf793 100644 --- a/ports/stm/common-hal/alarm/time/TimeAlarm.h +++ b/ports/stm/common-hal/alarm/time/TimeAlarm.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/stm/common-hal/alarm/touch/TouchAlarm.c b/ports/stm/common-hal/alarm/touch/TouchAlarm.c index ea3437ec893e..ce192f47d292 100644 --- a/ports/stm/common-hal/alarm/touch/TouchAlarm.c +++ b/ports/stm/common-hal/alarm/touch/TouchAlarm.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/alarm/touch/TouchAlarm.h" #include "shared-bindings/microcontroller/__init__.h" diff --git a/ports/stm/common-hal/alarm/touch/TouchAlarm.h b/ports/stm/common-hal/alarm/touch/TouchAlarm.h index 59f202c69ded..0762c5616f9c 100644 --- a/ports/stm/common-hal/alarm/touch/TouchAlarm.h +++ b/ports/stm/common-hal/alarm/touch/TouchAlarm.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/stm/common-hal/analogio/AnalogIn.c b/ports/stm/common-hal/analogio/AnalogIn.c index 494fe2997584..cf2b441b4d49 100644 --- a/ports/stm/common-hal/analogio/AnalogIn.c +++ b/ports/stm/common-hal/analogio/AnalogIn.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "common-hal/analogio/AnalogIn.h" #include "py/runtime.h" diff --git a/ports/stm/common-hal/analogio/AnalogIn.h b/ports/stm/common-hal/analogio/AnalogIn.h index c8e3e0868d32..f01399c17a40 100644 --- a/ports/stm/common-hal/analogio/AnalogIn.h +++ b/ports/stm/common-hal/analogio/AnalogIn.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32F4_COMMON_HAL_ANALOGIO_ANALOGIN_H #define MICROPY_INCLUDED_STM32F4_COMMON_HAL_ANALOGIO_ANALOGIN_H diff --git a/ports/stm/common-hal/analogio/AnalogOut.c b/ports/stm/common-hal/analogio/AnalogOut.c index 58f572aa8aa3..fcf814f2287b 100644 --- a/ports/stm/common-hal/analogio/AnalogOut.c +++ b/ports/stm/common-hal/analogio/AnalogOut.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * Copyright (c) 2019, Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// SPDX-FileCopyrightText: Copyright (c) 2019, Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/stm/common-hal/analogio/AnalogOut.h b/ports/stm/common-hal/analogio/AnalogOut.h index d0b08c95e913..3c81e34c541b 100644 --- a/ports/stm/common-hal/analogio/AnalogOut.h +++ b/ports/stm/common-hal/analogio/AnalogOut.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32F4_COMMON_HAL_ANALOGIO_ANALOGOUT_H #define MICROPY_INCLUDED_STM32F4_COMMON_HAL_ANALOGIO_ANALOGOUT_H diff --git a/ports/stm/common-hal/analogio/__init__.c b/ports/stm/common-hal/analogio/__init__.c index eea58c77d631..d9027d63ec8b 100644 --- a/ports/stm/common-hal/analogio/__init__.c +++ b/ports/stm/common-hal/analogio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No analogio module functions. diff --git a/ports/stm/common-hal/audiobusio/I2SOut.c b/ports/stm/common-hal/audiobusio/I2SOut.c index b63c3e7b22b8..c14901730fc8 100644 --- a/ports/stm/common-hal/audiobusio/I2SOut.c +++ b/ports/stm/common-hal/audiobusio/I2SOut.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // Although IS2Out is not enabled on the STM32L4 family, this file is still required for the build to pass diff --git a/ports/stm/common-hal/audiobusio/I2SOut.h b/ports/stm/common-hal/audiobusio/I2SOut.h index b63c3e7b22b8..c14901730fc8 100644 --- a/ports/stm/common-hal/audiobusio/I2SOut.h +++ b/ports/stm/common-hal/audiobusio/I2SOut.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // Although IS2Out is not enabled on the STM32L4 family, this file is still required for the build to pass diff --git a/ports/stm/common-hal/audiobusio/MEMS_Audio.c b/ports/stm/common-hal/audiobusio/MEMS_Audio.c index 624ffc92b048..81d6c30421e3 100644 --- a/ports/stm/common-hal/audiobusio/MEMS_Audio.c +++ b/ports/stm/common-hal/audiobusio/MEMS_Audio.c @@ -1,26 +1,8 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2022 Matthew McGowan for Blues Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Matthew McGowan for Blues Inc. +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/stm/common-hal/audiobusio/MEMS_Audio.h b/ports/stm/common-hal/audiobusio/MEMS_Audio.h index 77f11dc82f9c..075b9c87298e 100644 --- a/ports/stm/common-hal/audiobusio/MEMS_Audio.h +++ b/ports/stm/common-hal/audiobusio/MEMS_Audio.h @@ -1,26 +1,8 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2022 Matthew McGowan for Blues Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Matthew McGowan for Blues Inc. +// +// SPDX-License-Identifier: MIT #ifndef _MEMS_AUDIO_H_ #define _MEMS_AUDIO_H_ @@ -61,7 +43,7 @@ typedef int32_t mems_audio_err_t; * @brief The datatype that holds an output PCM sample. */ typedef int16_t pcm_sample_t; -_Static_assert(PCM_OUT_RESOLUTION==16, "Output PCM resolution must be 16-bits"); +_Static_assert(PCM_OUT_RESOLUTION == 16, "Output PCM resolution must be 16-bits"); typedef enum { @@ -79,7 +61,7 @@ typedef struct MemsAudio_t MemsAudio; /** * @brief Callback informing that PCM samples are available for processing. */ -typedef void (*pcm_data_available_t)(MemsAudio* audio, pcm_sample_t* pcmSamples, size_t pcmLength); +typedef void (*pcm_data_available_t)(MemsAudio *audio, pcm_sample_t *pcmSamples, size_t pcmLength); /** * @brief MemsAudio manages the filter, buffers and callbacks used to capture PDM audio samples and convert to PCM. @@ -90,7 +72,7 @@ typedef struct MemsAudio_t { /** * @brief The buffer to store PCM audio samples */ - volatile pcm_sample_t* volatile pcmOutputBuffer; + volatile pcm_sample_t *volatile pcmOutputBuffer; /** * @brief The length of the PCM buffer. SHould be at least MEMS_AUDIO_PCM_BUFFER_LENGTH @@ -102,12 +84,12 @@ typedef struct MemsAudio_t { */ pcm_data_available_t pcm_data_available; - void* audioImpl; - void* userData; + void *audioImpl; + void *userData; } MemsAudio; -mems_audio_err_t mems_audio_init(MemsAudio* audio); +mems_audio_err_t mems_audio_init(MemsAudio *audio); /** * @brief Uninitializes the MemsAudio instance. @@ -115,7 +97,7 @@ mems_audio_err_t mems_audio_init(MemsAudio* audio); * @param audio * @return mems_audio_err_t */ -mems_audio_err_t mems_audio_uninit(MemsAudio* audio); +mems_audio_err_t mems_audio_uninit(MemsAudio *audio); /** * @brief Asynchronously records audio. @@ -125,12 +107,12 @@ mems_audio_err_t mems_audio_uninit(MemsAudio* audio); * @param pdmBufferLength * @return mems_audio_err_t */ -mems_audio_err_t mems_audio_record(MemsAudio* audio); +mems_audio_err_t mems_audio_record(MemsAudio *audio); /** * @brief Pause recording audio. */ -mems_audio_err_t mems_audio_pause(MemsAudio* audio); +mems_audio_err_t mems_audio_pause(MemsAudio *audio); /** * @brief Resume recording audio. @@ -138,7 +120,7 @@ mems_audio_err_t mems_audio_pause(MemsAudio* audio); * @param audio * @return mems_audio_err_t */ -mems_audio_err_t mems_audio_resume(MemsAudio* audio); +mems_audio_err_t mems_audio_resume(MemsAudio *audio); /** * @brief Stop recording audio and @@ -146,7 +128,7 @@ mems_audio_err_t mems_audio_resume(MemsAudio* audio); * @param audio * @return mems_audio_err_t */ -mems_audio_err_t mems_audio_stop(MemsAudio* audio); +mems_audio_err_t mems_audio_stop(MemsAudio *audio); #ifdef __cplusplus } diff --git a/ports/stm/common-hal/audiobusio/MEMS_Audio_ll.h b/ports/stm/common-hal/audiobusio/MEMS_Audio_ll.h index 13d218fd5de9..a11e579407f6 100644 --- a/ports/stm/common-hal/audiobusio/MEMS_Audio_ll.h +++ b/ports/stm/common-hal/audiobusio/MEMS_Audio_ll.h @@ -1,26 +1,8 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2022 Matthew McGowan for Blues Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Matthew McGowan for Blues Inc. +// +// SPDX-License-Identifier: MIT #ifndef _MEMS_AUDIO_LL_H_ diff --git a/ports/stm/common-hal/audiobusio/MEMS_Audio_ll_stm32l4.c b/ports/stm/common-hal/audiobusio/MEMS_Audio_ll_stm32l4.c index d10cdcd23e56..7022ec09f0f5 100644 --- a/ports/stm/common-hal/audiobusio/MEMS_Audio_ll_stm32l4.c +++ b/ports/stm/common-hal/audiobusio/MEMS_Audio_ll_stm32l4.c @@ -1,26 +1,8 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2022 Matthew McGowan for Blues Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Matthew McGowan for Blues Inc. +// +// SPDX-License-Identifier: MIT #include @@ -31,7 +13,7 @@ * @brief The implementation is a singleton. * */ -MemsAudio_STM32L4SAIPDM* volatile audioImpl; +MemsAudio_STM32L4SAIPDM *volatile audioImpl; static mems_audio_err_t MX_DMA_Init(void); static mems_audio_err_t MX_DMA_Uninit(void); @@ -40,7 +22,7 @@ static mems_audio_err_t MX_SAI1_Init(void); #define CHECK_HAL_ERROR(x, e) \ { \ if ((x) != HAL_OK) \ - return e; \ + return e; \ } /** @@ -58,28 +40,24 @@ static mems_audio_err_t MX_SAI1_Init(void); #define CHECK_MEMS_AUDIO_ERROR_LAST() \ { \ if (audioImpl->lastError != MEMS_AUDIO_OK) \ - return audioImpl->lastError; \ + return audioImpl->lastError; \ } -static bool default_pdm_data_available(MemsAudio_STM32L4SAIPDM* audio, pdm_sample_t* pdmSamples, size_t count) -{ +static bool default_pdm_data_available(MemsAudio_STM32L4SAIPDM *audio, pdm_sample_t *pdmSamples, size_t count) { return true; } -int filter_pdm(MemsAudio_STM32L4SAIPDM* impl, pdm_sample_t* input, pcm_sample_t* output) -{ - if (impl->filter.Decimation==64) { +int filter_pdm(MemsAudio_STM32L4SAIPDM *impl, pdm_sample_t *input, pcm_sample_t *output) { + if (impl->filter.Decimation == 64) { Open_PDM_Filter_64(input, output, 1, &impl->filter); - } - else { + } else { Open_PDM_Filter_128(input, output, 1, &impl->filter); } return impl->filter.nSamples; } -static void mems_audio_init_filter(MemsAudio_STM32L4SAIPDM *impl) -{ - TPDMFilter_InitStruct* filter = &impl->filter; +static void mems_audio_init_filter(MemsAudio_STM32L4SAIPDM *impl) { + TPDMFilter_InitStruct *filter = &impl->filter; filter->Fs = PCM_OUT_SAMPLING_FREQUENCY; filter->nSamples = MEMS_AUDIO_PCM_BUFFER_LENGTH; filter->LP_HZ = PCM_OUT_SAMPLING_FREQUENCY / 2; // The Nyquist frequency @@ -97,20 +75,18 @@ volatile unsigned ignore_dma_count; * @param pdmBuffer The buffer holding the PDM samples * @param pdmBufferLength The number of samples available */ -void pdm2pcm(uint8_t *pdmBuffer, size_t pdmBufferLength) -{ +void pdm2pcm(uint8_t *pdmBuffer, size_t pdmBufferLength) { MemsAudio_STM32L4SAIPDM *impl = audioImpl; - if (impl) - { + if (impl) { bool convert = impl->discard_dma || impl->pdm_data_available(impl, pdmBuffer, pdmBufferLength); - if (convert) - { - MemsAudio* audio = impl->audio; - filter_pdm(impl, pdmBuffer, (pcm_sample_t*)audio->pcmOutputBuffer); - if (!impl->discard_dma) - audio->pcm_data_available(audio, (pcm_sample_t*)audio->pcmOutputBuffer, impl->filter.nSamples); - else + if (convert) { + MemsAudio *audio = impl->audio; + filter_pdm(impl, pdmBuffer, (pcm_sample_t *)audio->pcmOutputBuffer); + if (!impl->discard_dma) { + audio->pcm_data_available(audio, (pcm_sample_t *)audio->pcmOutputBuffer, impl->filter.nSamples); + } else { impl->discard_dma--; + } } } } @@ -119,8 +95,7 @@ void pdm2pcm(uint8_t *pdmBuffer, size_t pdmBufferLength) * @brief Initialize the PDM interface ready to begin capture. * @retval */ -mems_audio_err_t mems_audio_ll_init(MemsAudio *audio) -{ +mems_audio_err_t mems_audio_ll_init(MemsAudio *audio) { mems_audio_init_filter(audioImpl); if (!audioImpl->pdm_data_available) { audioImpl->pdm_data_available = &default_pdm_data_available; @@ -133,7 +108,7 @@ mems_audio_err_t mems_audio_ll_init(MemsAudio *audio) mems_audio_err_t uninit(void) { if (audioImpl) { - MemsAudio_STM32L4SAIPDM* impl = audioImpl; + MemsAudio_STM32L4SAIPDM *impl = audioImpl; audioImpl = NULL; mems_audio_ll_stop(impl->audio); CHECK_HAL_ERROR(HAL_SAI_DeInit(&impl->hSAI_BlockA1), MEMS_AUDIO_ERROR_SAI_DEINIT); @@ -145,36 +120,31 @@ mems_audio_err_t uninit(void) { /** * @brief Uninitialize low level PDM capture */ -mems_audio_err_t mems_audio_ll_uninit(MemsAudio *audio) -{ +mems_audio_err_t mems_audio_ll_uninit(MemsAudio *audio) { if (audioImpl->audio == audio) { uninit(); } return MEMS_AUDIO_OK; } -mems_audio_err_t mems_audio_ll_record(MemsAudio *audio) -{ - audioImpl->discard_dma = (100/MEMS_AUDIO_MS_BUFFER)+1; +mems_audio_err_t mems_audio_ll_record(MemsAudio *audio) { + audioImpl->discard_dma = (100 / MEMS_AUDIO_MS_BUFFER) + 1; CHECK_HAL_ERROR(HAL_SAI_Receive_DMA(&audioImpl->hSAI_BlockA1, audioImpl->pdmBuffer, audioImpl->pdmBufferLength), - MEMS_AUDIO_ERROR_DMA_START); + MEMS_AUDIO_ERROR_DMA_START); return MEMS_AUDIO_OK; } -mems_audio_err_t mems_audio_ll_stop(MemsAudio *audio) -{ +mems_audio_err_t mems_audio_ll_stop(MemsAudio *audio) { CHECK_HAL_ERROR(HAL_SAI_DMAStop(&audioImpl->hSAI_BlockA1), MEMS_AUDIO_ERROR_DMA_STOP); return MEMS_AUDIO_OK; } -mems_audio_err_t mems_audio_ll_pause(MemsAudio *audio) -{ +mems_audio_err_t mems_audio_ll_pause(MemsAudio *audio) { CHECK_HAL_ERROR(HAL_SAI_DMAPause(&audioImpl->hSAI_BlockA1), MEMS_AUDIO_ERROR_DMA_PAUSE); return MEMS_AUDIO_OK; } -mems_audio_err_t mems_audio_ll_resume(MemsAudio *audio) -{ +mems_audio_err_t mems_audio_ll_resume(MemsAudio *audio) { CHECK_HAL_ERROR(HAL_SAI_DMAResume(&audioImpl->hSAI_BlockA1), MEMS_AUDIO_ERROR_DMA_RESUME); return MEMS_AUDIO_OK; } @@ -184,13 +154,12 @@ mems_audio_err_t mems_audio_ll_resume(MemsAudio *audio) * @param None * @retval None */ -static mems_audio_err_t MX_SAI1_Init(void) -{ +static mems_audio_err_t MX_SAI1_Init(void) { __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE(); SAI_HandleTypeDef hSAI_BlockA1 = {0}; - MemsAudio_STM32L4SAIPDM* impl = audioImpl; + MemsAudio_STM32L4SAIPDM *impl = audioImpl; CHECK_MEMS_AUDIO_INITIALIZED(impl); hSAI_BlockA1.Instance = SAI1_Block_A; hSAI_BlockA1.Init.Protocol = SAI_FREE_PROTOCOL; @@ -230,80 +199,74 @@ static mems_audio_err_t MX_SAI1_Init(void) #define MEMS_AUDIO_DMA_PRIORITY 6 #define DMA_HANDLER DMA1_Channel6_IRQHandler -void HAL_SAI_MspInit(SAI_HandleTypeDef *hsai) -{ - GPIO_InitTypeDef GPIO_InitStruct = {0}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - /* SAI1 */ - MemsAudio_STM32L4SAIPDM* impl = audioImpl; - if (hsai->Instance == SAI1_Block_A && impl) - { - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_SAI1; - PeriphClkInit.Sai1ClockSelection = RCC_SAI1CLKSOURCE_PLLSAI1; - PeriphClkInit.PLLSAI1.PLLSAI1Source = RCC_PLLSOURCE_MSI; - PeriphClkInit.PLLSAI1.PLLSAI1M = MEMS_AUDIO_CLOCK_PLLM; - PeriphClkInit.PLLSAI1.PLLSAI1N = MEMS_AUDIO_CLOCK_PLLN; - PeriphClkInit.PLLSAI1.PLLSAI1P = MEMS_AUDIO_CLOCK_PLLP; - PeriphClkInit.PLLSAI1.PLLSAI1Q = RCC_PLLQ_DIV2; - PeriphClkInit.PLLSAI1.PLLSAI1R = RCC_PLLR_DIV2; - PeriphClkInit.PLLSAI1.PLLSAI1ClockOut = RCC_PLLSAI1_SAI1CLK; - CHECK_HAL_ERROR_VOID(HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit), MEMS_AUDIO_ERROR_SAI_CLOCK); - - if (impl->SAI1_client == 0) - { - __HAL_RCC_SAI1_CLK_ENABLE(); - } - impl->SAI1_client++; - - /**SAI1_A_Block_A GPIO Configuration - PC3 ------> SAI1_D1 - PA3 ------> SAI1_CK1 - */ - GPIO_InitStruct.Pin = GPIO_PIN_3; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - GPIO_InitStruct.Alternate = GPIO_AF3_SAI1; - HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - - GPIO_InitStruct.Pin = GPIO_PIN_3; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - GPIO_InitStruct.Alternate = GPIO_AF3_SAI1; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - - /* Peripheral DMA init*/ - DMA_HandleTypeDef hdma_sai1_a = {0}; - hdma_sai1_a.Instance = MEMS_AUDIO_DMA_CHANNEL; - hdma_sai1_a.Init.Request = DMA_REQUEST_SAI1_A; - hdma_sai1_a.Init.Direction = DMA_PERIPH_TO_MEMORY; - hdma_sai1_a.Init.PeriphInc = DMA_PINC_DISABLE; - hdma_sai1_a.Init.MemInc = DMA_MINC_ENABLE; - hdma_sai1_a.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; - hdma_sai1_a.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; - hdma_sai1_a.Init.Mode = DMA_CIRCULAR; - hdma_sai1_a.Init.Priority = DMA_PRIORITY_HIGH; - impl->hdma_sai1_a = hdma_sai1_a; - CHECK_HAL_ERROR_VOID(HAL_DMA_Init(&impl->hdma_sai1_a), MEMS_AUDIO_ERROR_SAI_DMA_INIT); - - /* Several peripheral DMA handle pointers point to the same DMA handle. - Be aware that there is only one channel to perform all the requested DMAs. */ - __HAL_LINKDMA(hsai, hdmarx, impl->hdma_sai1_a); - - __HAL_LINKDMA(hsai, hdmatx, impl->hdma_sai1_a); - } +void HAL_SAI_MspInit(SAI_HandleTypeDef *hsai) { + GPIO_InitTypeDef GPIO_InitStruct = {0}; + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; + /* SAI1 */ + MemsAudio_STM32L4SAIPDM *impl = audioImpl; + if (hsai->Instance == SAI1_Block_A && impl) { + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_SAI1; + PeriphClkInit.Sai1ClockSelection = RCC_SAI1CLKSOURCE_PLLSAI1; + PeriphClkInit.PLLSAI1.PLLSAI1Source = RCC_PLLSOURCE_MSI; + PeriphClkInit.PLLSAI1.PLLSAI1M = MEMS_AUDIO_CLOCK_PLLM; + PeriphClkInit.PLLSAI1.PLLSAI1N = MEMS_AUDIO_CLOCK_PLLN; + PeriphClkInit.PLLSAI1.PLLSAI1P = MEMS_AUDIO_CLOCK_PLLP; + PeriphClkInit.PLLSAI1.PLLSAI1Q = RCC_PLLQ_DIV2; + PeriphClkInit.PLLSAI1.PLLSAI1R = RCC_PLLR_DIV2; + PeriphClkInit.PLLSAI1.PLLSAI1ClockOut = RCC_PLLSAI1_SAI1CLK; + CHECK_HAL_ERROR_VOID(HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit), MEMS_AUDIO_ERROR_SAI_CLOCK); + + if (impl->SAI1_client == 0) { + __HAL_RCC_SAI1_CLK_ENABLE(); + } + impl->SAI1_client++; + + /**SAI1_A_Block_A GPIO Configuration + PC3 ------> SAI1_D1 + PA3 ------> SAI1_CK1 + */ + GPIO_InitStruct.Pin = GPIO_PIN_3; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF3_SAI1; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = GPIO_PIN_3; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF3_SAI1; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* Peripheral DMA init*/ + DMA_HandleTypeDef hdma_sai1_a = {0}; + hdma_sai1_a.Instance = MEMS_AUDIO_DMA_CHANNEL; + hdma_sai1_a.Init.Request = DMA_REQUEST_SAI1_A; + hdma_sai1_a.Init.Direction = DMA_PERIPH_TO_MEMORY; + hdma_sai1_a.Init.PeriphInc = DMA_PINC_DISABLE; + hdma_sai1_a.Init.MemInc = DMA_MINC_ENABLE; + hdma_sai1_a.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; + hdma_sai1_a.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; + hdma_sai1_a.Init.Mode = DMA_CIRCULAR; + hdma_sai1_a.Init.Priority = DMA_PRIORITY_HIGH; + impl->hdma_sai1_a = hdma_sai1_a; + CHECK_HAL_ERROR_VOID(HAL_DMA_Init(&impl->hdma_sai1_a), MEMS_AUDIO_ERROR_SAI_DMA_INIT); + + /* Several peripheral DMA handle pointers point to the same DMA handle. + Be aware that there is only one channel to perform all the requested DMAs. */ + __HAL_LINKDMA(hsai, hdmarx, impl->hdma_sai1_a); + + __HAL_LINKDMA(hsai, hdmatx, impl->hdma_sai1_a); + } } -void HAL_SAI_MspDeInit(SAI_HandleTypeDef *hsai) -{ +void HAL_SAI_MspDeInit(SAI_HandleTypeDef *hsai) { /* SAI1 */ - MemsAudio_STM32L4SAIPDM* impl = audioImpl; - if (hsai->Instance == SAI1_Block_A && impl) - { + MemsAudio_STM32L4SAIPDM *impl = audioImpl; + if (hsai->Instance == SAI1_Block_A && impl) { impl->SAI1_client--; - if (impl->SAI1_client == 0) - { + if (impl->SAI1_client == 0) { /* Peripheral clock disable */ __HAL_RCC_SAI1_CLK_DISABLE(); } @@ -326,8 +289,7 @@ void HAL_SAI_MspDeInit(SAI_HandleTypeDef *hsai) * @brief Initialize the DMA peripheral * */ -static mems_audio_err_t MX_DMA_Init(void) -{ +static mems_audio_err_t MX_DMA_Init(void) { /* DMA controller clock enable */ __HAL_RCC_DMAMUX1_CLK_ENABLE(); @@ -340,8 +302,7 @@ static mems_audio_err_t MX_DMA_Init(void) return MEMS_AUDIO_OK; } -static mems_audio_err_t MX_DMA_Uninit(void) -{ +static mems_audio_err_t MX_DMA_Uninit(void) { HAL_NVIC_DisableIRQ(MEMS_AUDIO_DMA_IRQn); return MEMS_AUDIO_OK; } @@ -350,8 +311,7 @@ static mems_audio_err_t MX_DMA_Uninit(void) * @brief Global handler for the DMA interrupt. Forwards to the HAL for further processing. * */ -void DMA_HANDLER(void) -{ +void DMA_HANDLER(void) { HAL_DMA_IRQHandler(&audioImpl->hdma_sai1_a); } @@ -360,10 +320,9 @@ void DMA_HANDLER(void) * * @param hSai */ -void HAL_SAI_RxHalfCpltCallback(SAI_HandleTypeDef *hSai) -{ +void HAL_SAI_RxHalfCpltCallback(SAI_HandleTypeDef *hSai) { (void)hSai; - pdm2pcm(audioImpl->pdmBuffer, audioImpl->pdmBufferLength>>1); + pdm2pcm(audioImpl->pdmBuffer, audioImpl->pdmBufferLength >> 1); } /** @@ -371,14 +330,12 @@ void HAL_SAI_RxHalfCpltCallback(SAI_HandleTypeDef *hSai) * * @param hSai */ -void HAL_SAI_RxCpltCallback(SAI_HandleTypeDef *hSai) -{ +void HAL_SAI_RxCpltCallback(SAI_HandleTypeDef *hSai) { (void)hSai; - pdm2pcm(audioImpl->pdmBuffer+(audioImpl->pdmBufferLength>>1), audioImpl->pdmBufferLength>>1); + pdm2pcm(audioImpl->pdmBuffer + (audioImpl->pdmBufferLength >> 1), audioImpl->pdmBufferLength >> 1); } -mems_audio_err_t mems_audio_init_stm32l4_sai_pdm(MemsAudio* audio, MemsAudio_STM32L4SAIPDM* impl) -{ +mems_audio_err_t mems_audio_init_stm32l4_sai_pdm(MemsAudio *audio, MemsAudio_STM32L4SAIPDM *impl) { uninit(); audioImpl = impl; impl->audio = audio; diff --git a/ports/stm/common-hal/audiobusio/MEMS_Audio_ll_stm32l4.h b/ports/stm/common-hal/audiobusio/MEMS_Audio_ll_stm32l4.h index 31a8133b63d3..37478675e74f 100644 --- a/ports/stm/common-hal/audiobusio/MEMS_Audio_ll_stm32l4.h +++ b/ports/stm/common-hal/audiobusio/MEMS_Audio_ll_stm32l4.h @@ -1,26 +1,8 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2022 Matthew McGowan for Blues Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Matthew McGowan for Blues Inc. +// +// SPDX-License-Identifier: MIT #ifndef _MEMS_AUDIO_LL_STM32L4_H_ diff --git a/ports/stm/common-hal/audiobusio/OpenPDMFilter.c b/ports/stm/common-hal/audiobusio/OpenPDMFilter.c index c65353b146af..437abb49de32 100644 --- a/ports/stm/common-hal/audiobusio/OpenPDMFilter.c +++ b/ports/stm/common-hal/audiobusio/OpenPDMFilter.c @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /** ******************************************************************************* * @file OpenPDMFilter.c diff --git a/ports/stm/common-hal/audiobusio/OpenPDMFilter.h b/ports/stm/common-hal/audiobusio/OpenPDMFilter.h index a6e4a8c06316..3d8046796231 100644 --- a/ports/stm/common-hal/audiobusio/OpenPDMFilter.h +++ b/ports/stm/common-hal/audiobusio/OpenPDMFilter.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + /** ******************************************************************************* * @file OpenPDMFilter.h diff --git a/ports/stm/common-hal/audiobusio/PDMIn.c b/ports/stm/common-hal/audiobusio/PDMIn.c index f57f5b9114c4..d52b330c5a4f 100644 --- a/ports/stm/common-hal/audiobusio/PDMIn.c +++ b/ports/stm/common-hal/audiobusio/PDMIn.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Matthew McGowan for Blues Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Matthew McGowan for Blues Inc. +// +// SPDX-License-Identifier: MIT #include #include "common-hal/audiobusio/PDMIn.h" diff --git a/ports/stm/common-hal/audiobusio/PDMIn.h b/ports/stm/common-hal/audiobusio/PDMIn.h index 809176cabb41..0d7eadbfeb65 100644 --- a/ports/stm/common-hal/audiobusio/PDMIn.h +++ b/ports/stm/common-hal/audiobusio/PDMIn.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Matthew McGowan for Blues Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Matthew McGowan for Blues Inc. +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM_COMMON_HAL_AUDIOBUSIO_AUDIOOUT_H #define MICROPY_INCLUDED_STM_COMMON_HAL_AUDIOBUSIO_AUDIOOUT_H diff --git a/ports/stm/common-hal/audiobusio/__init__.c b/ports/stm/common-hal/audiobusio/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/stm/common-hal/audiobusio/__init__.c +++ b/ports/stm/common-hal/audiobusio/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/stm/common-hal/audiopwmio/PWMAudioOut.c b/ports/stm/common-hal/audiopwmio/PWMAudioOut.c index 4fc4781c776f..e22681a793b8 100644 --- a/ports/stm/common-hal/audiopwmio/PWMAudioOut.c +++ b/ports/stm/common-hal/audiopwmio/PWMAudioOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Artyom Skrobov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Artyom Skrobov +// +// SPDX-License-Identifier: MIT #include #include "py/runtime.h" diff --git a/ports/stm/common-hal/audiopwmio/PWMAudioOut.h b/ports/stm/common-hal/audiopwmio/PWMAudioOut.h index 2b0498f975d7..be31e87d177d 100644 --- a/ports/stm/common-hal/audiopwmio/PWMAudioOut.h +++ b/ports/stm/common-hal/audiopwmio/PWMAudioOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Artyom Skrobov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Artyom Skrobov +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/stm/common-hal/audiopwmio/__init__.c b/ports/stm/common-hal/audiopwmio/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/stm/common-hal/audiopwmio/__init__.c +++ b/ports/stm/common-hal/audiopwmio/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/stm/common-hal/board/__init__.c b/ports/stm/common-hal/board/__init__.c index 880033ed6796..bcae8371c18c 100644 --- a/ports/stm/common-hal/board/__init__.c +++ b/ports/stm/common-hal/board/__init__.c @@ -1,25 +1,5 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT diff --git a/ports/stm/common-hal/busio/I2C.c b/ports/stm/common-hal/busio/I2C.c index 1bfad8700dd0..92d0b8e1a928 100644 --- a/ports/stm/common-hal/busio/I2C.c +++ b/ports/stm/common-hal/busio/I2C.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include "shared-bindings/busio/I2C.h" diff --git a/ports/stm/common-hal/busio/I2C.h b/ports/stm/common-hal/busio/I2C.h index 687e6a8c4d72..1eee336bceda 100644 --- a/ports/stm/common-hal/busio/I2C.h +++ b/ports/stm/common-hal/busio/I2C.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_COMMON_HAL_BUSIO_I2C_H #define MICROPY_INCLUDED_STM32_COMMON_HAL_BUSIO_I2C_H diff --git a/ports/stm/common-hal/busio/SPI.c b/ports/stm/common-hal/busio/SPI.c index aef04c15ad79..57300d85fd59 100644 --- a/ports/stm/common-hal/busio/SPI.c +++ b/ports/stm/common-hal/busio/SPI.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/stm/common-hal/busio/SPI.h b/ports/stm/common-hal/busio/SPI.h index 17026bff77c4..2b215e97f294 100644 --- a/ports/stm/common-hal/busio/SPI.h +++ b/ports/stm/common-hal/busio/SPI.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_COMMON_HAL_BUSIO_SPI_H #define MICROPY_INCLUDED_STM32_COMMON_HAL_BUSIO_SPI_H diff --git a/ports/stm/common-hal/busio/UART.c b/ports/stm/common-hal/busio/UART.c index 3075d9550f18..b39453ea6184 100644 --- a/ports/stm/common-hal/busio/UART.c +++ b/ports/stm/common-hal/busio/UART.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/microcontroller/__init__.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/stm/common-hal/busio/UART.h b/ports/stm/common-hal/busio/UART.h index a6a69a59227e..d26edadfe603 100644 --- a/ports/stm/common-hal/busio/UART.h +++ b/ports/stm/common-hal/busio/UART.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_COMMON_HAL_BUSIO_UART_H #define MICROPY_INCLUDED_STM32_COMMON_HAL_BUSIO_UART_H diff --git a/ports/stm/common-hal/busio/__init__.c b/ports/stm/common-hal/busio/__init__.c index 41761b6743ae..b726684324a3 100644 --- a/ports/stm/common-hal/busio/__init__.c +++ b/ports/stm/common-hal/busio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No busio module functions. diff --git a/ports/stm/common-hal/canio/CAN.c b/ports/stm/common-hal/canio/CAN.c index db0d1ef14170..3e126322fd4d 100644 --- a/ports/stm/common-hal/canio/CAN.c +++ b/ports/stm/common-hal/canio/CAN.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/stm/common-hal/canio/CAN.h b/ports/stm/common-hal/canio/CAN.h index 3592e9b3db2a..90d6081b6aec 100644 --- a/ports/stm/common-hal/canio/CAN.h +++ b/ports/stm/common-hal/canio/CAN.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/stm/common-hal/canio/Listener.c b/ports/stm/common-hal/canio/Listener.c index bf31c5aca502..ec7c95a21219 100644 --- a/ports/stm/common-hal/canio/Listener.c +++ b/ports/stm/common-hal/canio/Listener.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/ports/stm/common-hal/canio/Listener.h b/ports/stm/common-hal/canio/Listener.h index 2d0e302e9f5d..9128a5f940d5 100644 --- a/ports/stm/common-hal/canio/Listener.h +++ b/ports/stm/common-hal/canio/Listener.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/stm/common-hal/canio/__init__.c b/ports/stm/common-hal/canio/__init__.c index 7932bfc2da82..13a70a52c499 100644 --- a/ports/stm/common-hal/canio/__init__.c +++ b/ports/stm/common-hal/canio/__init__.c @@ -1,25 +1,5 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT diff --git a/ports/stm/common-hal/canio/__init__.h b/ports/stm/common-hal/canio/__init__.h index 20b6638cd8ff..8942728bcc72 100644 --- a/ports/stm/common-hal/canio/__init__.h +++ b/ports/stm/common-hal/canio/__init__.h @@ -1,27 +1,7 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/stm/common-hal/digitalio/DigitalInOut.c b/ports/stm/common-hal/digitalio/DigitalInOut.c index a57790cd1bec..359e278cb020 100644 --- a/ports/stm/common-hal/digitalio/DigitalInOut.c +++ b/ports/stm/common-hal/digitalio/DigitalInOut.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/digitalio/DigitalInOut.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/stm/common-hal/digitalio/DigitalInOut.h b/ports/stm/common-hal/digitalio/DigitalInOut.h index e810ca3c15da..3856a5fb8748 100644 --- a/ports/stm/common-hal/digitalio/DigitalInOut.h +++ b/ports/stm/common-hal/digitalio/DigitalInOut.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_COMMON_HAL_DIGITALIO_DIGITALINOUT_H #define MICROPY_INCLUDED_STM32_COMMON_HAL_DIGITALIO_DIGITALINOUT_H diff --git a/ports/stm/common-hal/digitalio/__init__.c b/ports/stm/common-hal/digitalio/__init__.c index 20fad459593a..fa222ed01f03 100644 --- a/ports/stm/common-hal/digitalio/__init__.c +++ b/ports/stm/common-hal/digitalio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No digitalio module functions. diff --git a/ports/stm/common-hal/microcontroller/Pin.c b/ports/stm/common-hal/microcontroller/Pin.c index 7c4f4511e742..788274b9ddf2 100644 --- a/ports/stm/common-hal/microcontroller/Pin.c +++ b/ports/stm/common-hal/microcontroller/Pin.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/microcontroller/Pin.h" diff --git a/ports/stm/common-hal/microcontroller/Pin.h b/ports/stm/common-hal/microcontroller/Pin.h index 52c6efd7126a..ba090631b020 100644 --- a/ports/stm/common-hal/microcontroller/Pin.h +++ b/ports/stm/common-hal/microcontroller/Pin.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_COMMON_HAL_MICROCONTROLLER_PIN_H #define MICROPY_INCLUDED_STM32_COMMON_HAL_MICROCONTROLLER_PIN_H diff --git a/ports/stm/common-hal/microcontroller/Processor.c b/ports/stm/common-hal/microcontroller/Processor.c index f803d3e9ef6b..7196d289de2d 100644 --- a/ports/stm/common-hal/microcontroller/Processor.c +++ b/ports/stm/common-hal/microcontroller/Processor.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include "py/runtime.h" diff --git a/ports/stm/common-hal/microcontroller/Processor.h b/ports/stm/common-hal/microcontroller/Processor.h index 1d22aa965000..3f973b5151e4 100644 --- a/ports/stm/common-hal/microcontroller/Processor.h +++ b/ports/stm/common-hal/microcontroller/Processor.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H #define MICROPY_INCLUDED_STM32_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H diff --git a/ports/stm/common-hal/microcontroller/__init__.c b/ports/stm/common-hal/microcontroller/__init__.c index dc2e125a68ec..5a0f0ed92945 100644 --- a/ports/stm/common-hal/microcontroller/__init__.c +++ b/ports/stm/common-hal/microcontroller/__init__.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/mphal.h" #include "py/obj.h" diff --git a/ports/stm/common-hal/neopixel_write/__init__.c b/ports/stm/common-hal/neopixel_write/__init__.c index 9eb30a45097c..b6b2b8fe33ca 100644 --- a/ports/stm/common-hal/neopixel_write/__init__.c +++ b/ports/stm/common-hal/neopixel_write/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/neopixel_write/__init__.h" diff --git a/ports/stm/common-hal/nvm/ByteArray.c b/ports/stm/common-hal/nvm/ByteArray.c index 1a24b09eb4ab..823ebb095c4a 100644 --- a/ports/stm/common-hal/nvm/ByteArray.c +++ b/ports/stm/common-hal/nvm/ByteArray.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "common-hal/nvm/ByteArray.h" diff --git a/ports/stm/common-hal/nvm/ByteArray.h b/ports/stm/common-hal/nvm/ByteArray.h index b88d9197646d..4566d1de8cb0 100644 --- a/ports/stm/common-hal/nvm/ByteArray.h +++ b/ports/stm/common-hal/nvm/ByteArray.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_COMMON_HAL_NVM_BYTEARRAY_H #define MICROPY_INCLUDED_STM32_COMMON_HAL_NVM_BYTEARRAY_H diff --git a/ports/stm/common-hal/nvm/__init__.c b/ports/stm/common-hal/nvm/__init__.c index f0792430f01c..defabf7acbc9 100644 --- a/ports/stm/common-hal/nvm/__init__.c +++ b/ports/stm/common-hal/nvm/__init__.c @@ -1,27 +1,7 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // No nvm module functions. diff --git a/ports/stm/common-hal/os/__init__.c b/ports/stm/common-hal/os/__init__.c index c7dc5038b457..5179d9ecdfef 100644 --- a/ports/stm/common-hal/os/__init__.c +++ b/ports/stm/common-hal/os/__init__.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "genhdr/mpversion.h" #include "py/mpconfig.h" diff --git a/ports/stm/common-hal/pulseio/PulseIn.c b/ports/stm/common-hal/pulseio/PulseIn.c index 3f582fa25245..b06ed8b6e104 100644 --- a/ports/stm/common-hal/pulseio/PulseIn.c +++ b/ports/stm/common-hal/pulseio/PulseIn.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "common-hal/pulseio/PulseIn.h" #include diff --git a/ports/stm/common-hal/pulseio/PulseIn.h b/ports/stm/common-hal/pulseio/PulseIn.h index 5c6933947fb4..7b41452018b5 100644 --- a/ports/stm/common-hal/pulseio/PulseIn.h +++ b/ports/stm/common-hal/pulseio/PulseIn.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/stm/common-hal/pulseio/PulseOut.c b/ports/stm/common-hal/pulseio/PulseOut.c index fbf58c3ad24c..49679c195c61 100644 --- a/ports/stm/common-hal/pulseio/PulseOut.c +++ b/ports/stm/common-hal/pulseio/PulseOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "common-hal/pulseio/PulseOut.h" diff --git a/ports/stm/common-hal/pulseio/PulseOut.h b/ports/stm/common-hal/pulseio/PulseOut.h index ce5f62ceb4dd..c7dea91e7e43 100644 --- a/ports/stm/common-hal/pulseio/PulseOut.h +++ b/ports/stm/common-hal/pulseio/PulseOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/stm/common-hal/pulseio/__init__.c b/ports/stm/common-hal/pulseio/__init__.c index 2bee925bc77f..50db4c40454e 100644 --- a/ports/stm/common-hal/pulseio/__init__.c +++ b/ports/stm/common-hal/pulseio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No pulseio module functions. diff --git a/ports/stm/common-hal/pwmio/PWMOut.c b/ports/stm/common-hal/pwmio/PWMOut.c index 28ea61722b96..c3baac783240 100644 --- a/ports/stm/common-hal/pwmio/PWMOut.c +++ b/ports/stm/common-hal/pwmio/PWMOut.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * Uses code from Micropython, Copyright (c) 2013-2016 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Uses code from Micropython, Copyright (c) 2013-2016 Damien P. George +// +// SPDX-License-Identifier: MIT #include #include "py/runtime.h" diff --git a/ports/stm/common-hal/pwmio/PWMOut.h b/ports/stm/common-hal/pwmio/PWMOut.h index 881fd4005003..99d16e59a1bd 100644 --- a/ports/stm/common-hal/pwmio/PWMOut.h +++ b/ports/stm/common-hal/pwmio/PWMOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/stm/common-hal/pwmio/__init__.c b/ports/stm/common-hal/pwmio/__init__.c index 9e551a1072b3..b43cd8b1b396 100644 --- a/ports/stm/common-hal/pwmio/__init__.c +++ b/ports/stm/common-hal/pwmio/__init__.c @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // No pwmio module functions. diff --git a/ports/stm/common-hal/rgbmatrix/RGBMatrix.c b/ports/stm/common-hal/rgbmatrix/RGBMatrix.c index 4c0ad94b0794..a8014222d7dc 100644 --- a/ports/stm/common-hal/rgbmatrix/RGBMatrix.c +++ b/ports/stm/common-hal/rgbmatrix/RGBMatrix.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/stm/common-hal/rgbmatrix/RGBMatrix.h b/ports/stm/common-hal/rgbmatrix/RGBMatrix.h index cc4b82da0a99..8c38dece7142 100644 --- a/ports/stm/common-hal/rgbmatrix/RGBMatrix.h +++ b/ports/stm/common-hal/rgbmatrix/RGBMatrix.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM_COMMON_HAL_RGBMATRIX_RGBMATRIX_H #define MICROPY_INCLUDED_STM_COMMON_HAL_RGBMATRIX_RGBMATRIX_H diff --git a/ports/stm/common-hal/rgbmatrix/__init__.c b/ports/stm/common-hal/rgbmatrix/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/stm/common-hal/rgbmatrix/__init__.c +++ b/ports/stm/common-hal/rgbmatrix/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/stm/common-hal/rgbmatrix/__init__.h b/ports/stm/common-hal/rgbmatrix/__init__.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/stm/common-hal/rgbmatrix/__init__.h +++ b/ports/stm/common-hal/rgbmatrix/__init__.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/stm/common-hal/rtc/RTC.c b/ports/stm/common-hal/rtc/RTC.c index bff574c09954..322c85e10d6d 100644 --- a/ports/stm/common-hal/rtc/RTC.c +++ b/ports/stm/common-hal/rtc/RTC.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 20212 Matthew McGowan for Blues Wireless Inc - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 20212 Matthew McGowan for Blues Wireless Inc +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/stm/common-hal/rtc/RTC.h b/ports/stm/common-hal/rtc/RTC.h index d0ba720bfc2f..b864ef46672c 100644 --- a/ports/stm/common-hal/rtc/RTC.h +++ b/ports/stm/common-hal/rtc/RTC.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Matthew McGowan for Blues Wireless Inc - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Matthew McGowan for Blues Wireless Inc +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM_COMMON_HAL_RTC_RTC_H #define MICROPY_INCLUDED_STM_COMMON_HAL_RTC_RTC_H diff --git a/ports/stm/common-hal/rtc/__init__.c b/ports/stm/common-hal/rtc/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/stm/common-hal/rtc/__init__.c +++ b/ports/stm/common-hal/rtc/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/stm/common-hal/rtc/__init__.h b/ports/stm/common-hal/rtc/__init__.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/stm/common-hal/rtc/__init__.h +++ b/ports/stm/common-hal/rtc/__init__.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/stm/common-hal/sdioio/SDCard.c b/ports/stm/common-hal/sdioio/SDCard.c index 1fac96097831..6e1086e048ab 100644 --- a/ports/stm/common-hal/sdioio/SDCard.c +++ b/ports/stm/common-hal/sdioio/SDCard.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include "shared-bindings/sdioio/SDCard.h" diff --git a/ports/stm/common-hal/sdioio/SDCard.h b/ports/stm/common-hal/sdioio/SDCard.h index 845a5aa5f0e2..3afd77a48368 100644 --- a/ports/stm/common-hal/sdioio/SDCard.h +++ b/ports/stm/common-hal/sdioio/SDCard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_COMMON_HAL_BUSIO_SDIO_H #define MICROPY_INCLUDED_STM32_COMMON_HAL_BUSIO_SDIO_H diff --git a/ports/stm/common-hal/sdioio/__init__.c b/ports/stm/common-hal/sdioio/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/stm/common-hal/sdioio/__init__.c +++ b/ports/stm/common-hal/sdioio/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/stm/common-hal/sdioio/__init__.h b/ports/stm/common-hal/sdioio/__init__.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/ports/stm/common-hal/sdioio/__init__.h +++ b/ports/stm/common-hal/sdioio/__init__.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/ports/stm/mpconfigport.h b/ports/stm/mpconfigport.h index fc1f4ae3363a..fda32328405b 100644 --- a/ports/stm/mpconfigport.h +++ b/ports/stm/mpconfigport.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2015 Glenn Ruben Bakke - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2015 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef STM32_MPCONFIGPORT_H__ #define STM32_MPCONFIGPORT_H__ diff --git a/ports/stm/mpconfigport_nanbox.h b/ports/stm/mpconfigport_nanbox.h index fa41407cfbee..560b52133bad 100644 --- a/ports/stm/mpconfigport_nanbox.h +++ b/ports/stm/mpconfigport_nanbox.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2016 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Damien P. George +// +// SPDX-License-Identifier: MIT // select nan-boxing object model #define MICROPY_OBJ_REPR (MICROPY_OBJ_REPR_D) diff --git a/ports/stm/mphalport.c b/ports/stm/mphalport.c index 647798f6d5f9..641746065095 100644 --- a/ports/stm/mphalport.c +++ b/ports/stm/mphalport.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2015 Glenn Ruben Bakke - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2015 Glenn Ruben Bakke +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include diff --git a/ports/stm/mphalport.h b/ports/stm/mphalport.h index cf175b526796..619155dacc44 100644 --- a/ports/stm/mphalport.h +++ b/ports/stm/mphalport.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2015 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2015 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_MPHALPORT_H #define MICROPY_INCLUDED_STM32_MPHALPORT_H diff --git a/ports/stm/packages/TFBGA216.c b/ports/stm/packages/TFBGA216.c index ebcae5f2d240..8171b6d436c2 100644 --- a/ports/stm/packages/TFBGA216.c +++ b/ports/stm/packages/TFBGA216.c @@ -1,29 +1,8 @@ - -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Mark Olsson - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Mark Olsson +// +// SPDX-License-Identifier: MIT #include "shared-bindings/microcontroller/__init__.h" #include "common-hal/microcontroller/Pin.h" diff --git a/ports/stm/peripherals/clocks.h b/ports/stm/peripherals/clocks.h index 1f837c79ee98..0da7e9fe1a63 100644 --- a/ports/stm/peripherals/clocks.h +++ b/ports/stm/peripherals/clocks.h @@ -1,27 +1,7 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT void stm32_peripherals_clocks_init(void); diff --git a/ports/stm/peripherals/exti.c b/ports/stm/peripherals/exti.c index 861e5de0a6b9..f5203a9cd7c7 100644 --- a/ports/stm/peripherals/exti.c +++ b/ports/stm/peripherals/exti.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include "py/mpconfig.h" diff --git a/ports/stm/peripherals/exti.h b/ports/stm/peripherals/exti.h index 09936fb283aa..47583bb35520 100644 --- a/ports/stm/peripherals/exti.h +++ b/ports/stm/peripherals/exti.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef __MICROPY_INCLUDED_STM32_PERIPHERALS_EXTI_H__ #define __MICROPY_INCLUDED_STM32_PERIPHERALS_EXTI_H__ diff --git a/ports/stm/peripherals/gpio.h b/ports/stm/peripherals/gpio.h index a5dbe444cbd5..c7d926702623 100644 --- a/ports/stm/peripherals/gpio.h +++ b/ports/stm/peripherals/gpio.h @@ -1,27 +1,7 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT void stm32_peripherals_gpio_init(void); diff --git a/ports/stm/peripherals/periph.h b/ports/stm/peripherals/periph.h index 1049aeb084ed..fbe6ec97c645 100644 --- a/ports/stm/peripherals/periph.h +++ b/ports/stm/peripherals/periph.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef __MICROPY_INCLUDED_STM32_PERIPHERALS_PERIPH_H__ #define __MICROPY_INCLUDED_STM32_PERIPHERALS_PERIPH_H__ diff --git a/ports/stm/peripherals/pins.h b/ports/stm/peripherals/pins.h index a53b05aa1dfe..5119a6fc51f3 100644 --- a/ports/stm/peripherals/pins.h +++ b/ports/stm/peripherals/pins.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT // DO NOT include this file directly. Use shared-bindings/microcontroller/Pin.h instead to ensure // that all necessary includes are already included. diff --git a/ports/stm/peripherals/rtc.c b/ports/stm/peripherals/rtc.c index 7c8cb65e17cd..f570ad350ad8 100644 --- a/ports/stm/peripherals/rtc.c +++ b/ports/stm/peripherals/rtc.c @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * Copyright (c) 2022 Matthew McGowan for Blues Wireless Inc - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2022 Matthew McGowan for Blues Wireless Inc +// +// SPDX-License-Identifier: MIT #include "peripherals/rtc.h" #include STM32_HAL_H diff --git a/ports/stm/peripherals/rtc.h b/ports/stm/peripherals/rtc.h index 93febbb5ccd1..05410cabfbcf 100644 --- a/ports/stm/peripherals/rtc.h +++ b/ports/stm/peripherals/rtc.h @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * Copyright (c) 2022 Matthew McGowan for Blues Wireless Inc - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2022 Matthew McGowan for Blues Wireless Inc +// +// SPDX-License-Identifier: MIT #ifndef __MICROPY_INCLUDED_STM32_PERIPHERALS_RTC_H__ #define __MICROPY_INCLUDED_STM32_PERIPHERALS_RTC_H__ diff --git a/ports/stm/peripherals/stm32f4/clocks.c b/ports/stm/peripherals/stm32f4/clocks.c index a2f83449011a..0730d8ebacc0 100644 --- a/ports/stm/peripherals/stm32f4/clocks.c +++ b/ports/stm/peripherals/stm32f4/clocks.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "stm32f4xx_hal.h" #include "supervisor/shared/safe_mode.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f401xe/clocks.h b/ports/stm/peripherals/stm32f4/stm32f401xe/clocks.h index 72efe82eb3a7..4fa9182b306a 100644 --- a/ports/stm/peripherals/stm32f4/stm32f401xe/clocks.h +++ b/ports/stm/peripherals/stm32f4/stm32f401xe/clocks.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "stm32f4xx_hal.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f401xe/gpio.c b/ports/stm/peripherals/stm32f4/stm32f401xe/gpio.c index a7e01b70e9a2..7e1809175f58 100644 --- a/ports/stm/peripherals/stm32f4/stm32f401xe/gpio.c +++ b/ports/stm/peripherals/stm32f4/stm32f401xe/gpio.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "gpio.h" #include "common-hal/microcontroller/Pin.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f401xe/periph.c b/ports/stm/peripherals/stm32f4/stm32f401xe/periph.c index 582a3f27ca30..a5589c51f4d9 100644 --- a/ports/stm/peripherals/stm32f4/stm32f401xe/periph.c +++ b/ports/stm/peripherals/stm32f4/stm32f401xe/periph.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f401xe/periph.h b/ports/stm/peripherals/stm32f4/stm32f401xe/periph.h index 9bc47b8bf175..7ef46999c8c9 100644 --- a/ports/stm/peripherals/stm32f4/stm32f401xe/periph.h +++ b/ports/stm/peripherals/stm32f4/stm32f401xe/periph.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F401XE_PERIPH_H #define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F401XE_PERIPH_H diff --git a/ports/stm/peripherals/stm32f4/stm32f401xe/pins.c b/ports/stm/peripherals/stm32f4/stm32f401xe/pins.c index 8593fc151746..43e3f83c2094 100644 --- a/ports/stm/peripherals/stm32f4/stm32f401xe/pins.c +++ b/ports/stm/peripherals/stm32f4/stm32f401xe/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f401xe/pins.h b/ports/stm/peripherals/stm32f4/stm32f401xe/pins.h index ef804ba09851..d2f24124b9d6 100644 --- a/ports/stm/peripherals/stm32f4/stm32f401xe/pins.h +++ b/ports/stm/peripherals/stm32f4/stm32f401xe/pins.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F401XE_PINS_H #define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F401XE_PINS_H diff --git a/ports/stm/peripherals/stm32f4/stm32f405xx/clocks.h b/ports/stm/peripherals/stm32f4/stm32f405xx/clocks.h index 4239e33183ec..e2de28fda9d2 100644 --- a/ports/stm/peripherals/stm32f4/stm32f405xx/clocks.h +++ b/ports/stm/peripherals/stm32f4/stm32f405xx/clocks.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "stm32f4xx_hal.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f405xx/gpio.c b/ports/stm/peripherals/stm32f4/stm32f405xx/gpio.c index dda96d57dabd..9a1e8eac52cb 100644 --- a/ports/stm/peripherals/stm32f4/stm32f405xx/gpio.c +++ b/ports/stm/peripherals/stm32f4/stm32f405xx/gpio.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "peripherals/gpio.h" #include "common-hal/microcontroller/Pin.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f405xx/periph.c b/ports/stm/peripherals/stm32f4/stm32f405xx/periph.c index cc1aaa6875f2..7d1b1d29b3ca 100644 --- a/ports/stm/peripherals/stm32f4/stm32f405xx/periph.c +++ b/ports/stm/peripherals/stm32f4/stm32f405xx/periph.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f405xx/periph.h b/ports/stm/peripherals/stm32f4/stm32f405xx/periph.h index d5433f9953e1..c2cfb23b9730 100644 --- a/ports/stm/peripherals/stm32f4/stm32f405xx/periph.h +++ b/ports/stm/peripherals/stm32f4/stm32f405xx/periph.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F405XX_PERIPH_H #define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F405XX_PERIPH_H diff --git a/ports/stm/peripherals/stm32f4/stm32f405xx/pins.c b/ports/stm/peripherals/stm32f4/stm32f405xx/pins.c index 0f519a9b8246..103fccb0dab5 100644 --- a/ports/stm/peripherals/stm32f4/stm32f405xx/pins.c +++ b/ports/stm/peripherals/stm32f4/stm32f405xx/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f405xx/pins.h b/ports/stm/peripherals/stm32f4/stm32f405xx/pins.h index fe0eb9e53e82..5ec131b5ea2e 100644 --- a/ports/stm/peripherals/stm32f4/stm32f405xx/pins.h +++ b/ports/stm/peripherals/stm32f4/stm32f405xx/pins.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F405XX_PINS_H #define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F405XX_PINS_H diff --git a/ports/stm/peripherals/stm32f4/stm32f407xx/clocks.h b/ports/stm/peripherals/stm32f4/stm32f407xx/clocks.h index 28d48e5c16c9..cb25b194357f 100644 --- a/ports/stm/peripherals/stm32f4/stm32f407xx/clocks.h +++ b/ports/stm/peripherals/stm32f4/stm32f407xx/clocks.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "stm32f4xx_hal.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f407xx/gpio.c b/ports/stm/peripherals/stm32f4/stm32f407xx/gpio.c index dda96d57dabd..9a1e8eac52cb 100644 --- a/ports/stm/peripherals/stm32f4/stm32f407xx/gpio.c +++ b/ports/stm/peripherals/stm32f4/stm32f407xx/gpio.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "peripherals/gpio.h" #include "common-hal/microcontroller/Pin.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f407xx/periph.c b/ports/stm/peripherals/stm32f4/stm32f407xx/periph.c index 451e4220c418..35f49585b27a 100644 --- a/ports/stm/peripherals/stm32f4/stm32f407xx/periph.c +++ b/ports/stm/peripherals/stm32f4/stm32f407xx/periph.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f407xx/periph.h b/ports/stm/peripherals/stm32f4/stm32f407xx/periph.h index 481a8376da38..7259cdeb695a 100644 --- a/ports/stm/peripherals/stm32f4/stm32f407xx/periph.h +++ b/ports/stm/peripherals/stm32f4/stm32f407xx/periph.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F407XX_PERIPH_H #define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F407XX_PERIPH_H diff --git a/ports/stm/peripherals/stm32f4/stm32f407xx/pins.c b/ports/stm/peripherals/stm32f4/stm32f407xx/pins.c index 0f519a9b8246..103fccb0dab5 100644 --- a/ports/stm/peripherals/stm32f4/stm32f407xx/pins.c +++ b/ports/stm/peripherals/stm32f4/stm32f407xx/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f407xx/pins.h b/ports/stm/peripherals/stm32f4/stm32f407xx/pins.h index 74ba8da2acdf..56915accd388 100644 --- a/ports/stm/peripherals/stm32f4/stm32f407xx/pins.h +++ b/ports/stm/peripherals/stm32f4/stm32f407xx/pins.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F407XX_PINS_H #define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F407XX_PINS_H diff --git a/ports/stm/peripherals/stm32f4/stm32f411xe/clocks.h b/ports/stm/peripherals/stm32f4/stm32f411xe/clocks.h index 0b38d610cb57..d9c88a4b465f 100644 --- a/ports/stm/peripherals/stm32f4/stm32f411xe/clocks.h +++ b/ports/stm/peripherals/stm32f4/stm32f411xe/clocks.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "stm32f4xx_hal.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f411xe/gpio.c b/ports/stm/peripherals/stm32f4/stm32f411xe/gpio.c index e63e46d3189a..db53087fd240 100644 --- a/ports/stm/peripherals/stm32f4/stm32f411xe/gpio.c +++ b/ports/stm/peripherals/stm32f4/stm32f411xe/gpio.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "peripherals/gpio.h" #include "stm32f4xx_hal.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f411xe/periph.c b/ports/stm/peripherals/stm32f4/stm32f411xe/periph.c index c47ecff271c6..0b53ae52758e 100644 --- a/ports/stm/peripherals/stm32f4/stm32f411xe/periph.c +++ b/ports/stm/peripherals/stm32f4/stm32f411xe/periph.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f411xe/periph.h b/ports/stm/peripherals/stm32f4/stm32f411xe/periph.h index 52fc1961a9a2..81e833fc07a2 100644 --- a/ports/stm/peripherals/stm32f4/stm32f411xe/periph.h +++ b/ports/stm/peripherals/stm32f4/stm32f411xe/periph.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F411XE_PERIPH_H #define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F411XE_PERIPH_H diff --git a/ports/stm/peripherals/stm32f4/stm32f411xe/pins.c b/ports/stm/peripherals/stm32f4/stm32f411xe/pins.c index 8593fc151746..43e3f83c2094 100644 --- a/ports/stm/peripherals/stm32f4/stm32f411xe/pins.c +++ b/ports/stm/peripherals/stm32f4/stm32f411xe/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f411xe/pins.h b/ports/stm/peripherals/stm32f4/stm32f411xe/pins.h index 00e7cf1b46f0..74cb6c93ca0c 100644 --- a/ports/stm/peripherals/stm32f4/stm32f411xe/pins.h +++ b/ports/stm/peripherals/stm32f4/stm32f411xe/pins.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F411XE_PINS_H #define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F411XE_PINS_H diff --git a/ports/stm/peripherals/stm32f4/stm32f412cx/clocks.h b/ports/stm/peripherals/stm32f4/stm32f412cx/clocks.h index 20a7b41ba3c2..f58986c2ee08 100644 --- a/ports/stm/peripherals/stm32f4/stm32f412cx/clocks.h +++ b/ports/stm/peripherals/stm32f4/stm32f412cx/clocks.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "stm32f4xx_hal.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f412cx/gpio.c b/ports/stm/peripherals/stm32f4/stm32f412cx/gpio.c index f686dc3b463e..4cca79bf9e78 100644 --- a/ports/stm/peripherals/stm32f4/stm32f412cx/gpio.c +++ b/ports/stm/peripherals/stm32f4/stm32f412cx/gpio.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "peripherals/gpio.h" #include "common-hal/microcontroller/Pin.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f412cx/periph.c b/ports/stm/peripherals/stm32f4/stm32f412cx/periph.c index 44c795dd916d..3e8f8e445759 100644 --- a/ports/stm/peripherals/stm32f4/stm32f412cx/periph.c +++ b/ports/stm/peripherals/stm32f4/stm32f412cx/periph.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f412cx/periph.h b/ports/stm/peripherals/stm32f4/stm32f412cx/periph.h index 0f90f330b681..8c860ea80950 100644 --- a/ports/stm/peripherals/stm32f4/stm32f412cx/periph.h +++ b/ports/stm/peripherals/stm32f4/stm32f412cx/periph.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F412CX_PERIPH_H #define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F412CX_PERIPH_H diff --git a/ports/stm/peripherals/stm32f4/stm32f412cx/pins.c b/ports/stm/peripherals/stm32f4/stm32f412cx/pins.c index 45c196ac6b28..e3372213a8f2 100644 --- a/ports/stm/peripherals/stm32f4/stm32f412cx/pins.c +++ b/ports/stm/peripherals/stm32f4/stm32f412cx/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f412cx/pins.h b/ports/stm/peripherals/stm32f4/stm32f412cx/pins.h index f0b958b60d98..ef65b0e1094c 100644 --- a/ports/stm/peripherals/stm32f4/stm32f412cx/pins.h +++ b/ports/stm/peripherals/stm32f4/stm32f412cx/pins.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F412CX_PINS_H #define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F412CX_PINS_H diff --git a/ports/stm/peripherals/stm32f4/stm32f412zx/clocks.h b/ports/stm/peripherals/stm32f4/stm32f412zx/clocks.h index acd353793ee9..8e7497be4885 100644 --- a/ports/stm/peripherals/stm32f4/stm32f412zx/clocks.h +++ b/ports/stm/peripherals/stm32f4/stm32f412zx/clocks.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "stm32f4xx_hal.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f412zx/gpio.c b/ports/stm/peripherals/stm32f4/stm32f412zx/gpio.c index 13a7aca4af5e..94c2faf68bf7 100644 --- a/ports/stm/peripherals/stm32f4/stm32f412zx/gpio.c +++ b/ports/stm/peripherals/stm32f4/stm32f412zx/gpio.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "peripherals/gpio.h" #include "common-hal/microcontroller/Pin.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f412zx/periph.c b/ports/stm/peripherals/stm32f4/stm32f412zx/periph.c index 2e1c3114ef61..caf8247e1a1e 100644 --- a/ports/stm/peripherals/stm32f4/stm32f412zx/periph.c +++ b/ports/stm/peripherals/stm32f4/stm32f412zx/periph.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f412zx/periph.h b/ports/stm/peripherals/stm32f4/stm32f412zx/periph.h index 4e861da5dadf..66209db5fa97 100644 --- a/ports/stm/peripherals/stm32f4/stm32f412zx/periph.h +++ b/ports/stm/peripherals/stm32f4/stm32f412zx/periph.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F412ZX_PERIPH_H #define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F412ZX_PERIPH_H diff --git a/ports/stm/peripherals/stm32f4/stm32f412zx/pins.c b/ports/stm/peripherals/stm32f4/stm32f412zx/pins.c index c0ee9e99e47e..52203263c2f5 100644 --- a/ports/stm/peripherals/stm32f4/stm32f412zx/pins.c +++ b/ports/stm/peripherals/stm32f4/stm32f412zx/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f412zx/pins.h b/ports/stm/peripherals/stm32f4/stm32f412zx/pins.h index 18e25f3f56ad..40224c9000a2 100644 --- a/ports/stm/peripherals/stm32f4/stm32f412zx/pins.h +++ b/ports/stm/peripherals/stm32f4/stm32f412zx/pins.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F412ZX_PINS_H #define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F412ZX_PINS_H diff --git a/ports/stm/peripherals/stm32f4/stm32f446xx/clocks.h b/ports/stm/peripherals/stm32f4/stm32f446xx/clocks.h index 2cd4b59c7524..7262da2ad9c5 100644 --- a/ports/stm/peripherals/stm32f4/stm32f446xx/clocks.h +++ b/ports/stm/peripherals/stm32f4/stm32f446xx/clocks.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 flom84 - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 flom84 +// +// SPDX-License-Identifier: MIT #include "stm32f4xx_hal.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f446xx/gpio.c b/ports/stm/peripherals/stm32f4/stm32f446xx/gpio.c index 624eb319f471..25a7ea5a6b80 100644 --- a/ports/stm/peripherals/stm32f4/stm32f446xx/gpio.c +++ b/ports/stm/peripherals/stm32f4/stm32f446xx/gpio.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 flom84 - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 flom84 +// +// SPDX-License-Identifier: MIT #include "peripherals/gpio.h" #include "stm32f4xx_hal.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f446xx/periph.c b/ports/stm/peripherals/stm32f4/stm32f446xx/periph.c index 5287a8bdf020..509b302c182c 100644 --- a/ports/stm/peripherals/stm32f4/stm32f446xx/periph.c +++ b/ports/stm/peripherals/stm32f4/stm32f446xx/periph.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 flom84 - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 flom84 +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f446xx/periph.h b/ports/stm/peripherals/stm32f4/stm32f446xx/periph.h index d34be9d15696..81f7a7cad9d6 100644 --- a/ports/stm/peripherals/stm32f4/stm32f446xx/periph.h +++ b/ports/stm/peripherals/stm32f4/stm32f446xx/periph.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 flom84 - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 flom84 +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F446RE_PERIPH_H #define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F446RE_PERIPH_H diff --git a/ports/stm/peripherals/stm32f4/stm32f446xx/pins.c b/ports/stm/peripherals/stm32f4/stm32f446xx/pins.c index 17176ea72f03..1fb512d570dd 100644 --- a/ports/stm/peripherals/stm32f4/stm32f446xx/pins.c +++ b/ports/stm/peripherals/stm32f4/stm32f446xx/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 flom84 - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 flom84 +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/ports/stm/peripherals/stm32f4/stm32f446xx/pins.h b/ports/stm/peripherals/stm32f4/stm32f446xx/pins.h index c56412a258e4..8930f5f832c9 100644 --- a/ports/stm/peripherals/stm32f4/stm32f446xx/pins.h +++ b/ports/stm/peripherals/stm32f4/stm32f446xx/pins.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 flom84 - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 flom84 +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F446RE_PINS_H #define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F446RE_PINS_H diff --git a/ports/stm/peripherals/stm32f7/clocks.c b/ports/stm/peripherals/stm32f7/clocks.c index 3767d223ce0a..4b7677fe901d 100644 --- a/ports/stm/peripherals/stm32f7/clocks.c +++ b/ports/stm/peripherals/stm32f7/clocks.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "stm32f7xx_hal.h" #include "supervisor/shared/safe_mode.h" diff --git a/ports/stm/peripherals/stm32f7/stm32f746xx/clocks.h b/ports/stm/peripherals/stm32f7/stm32f746xx/clocks.h index eb4462514375..c59918212888 100644 --- a/ports/stm/peripherals/stm32f7/stm32f746xx/clocks.h +++ b/ports/stm/peripherals/stm32f7/stm32f746xx/clocks.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "stm32f7xx_hal.h" diff --git a/ports/stm/peripherals/stm32f7/stm32f746xx/gpio.c b/ports/stm/peripherals/stm32f7/stm32f746xx/gpio.c index 7a6059eebc4e..96cfd8eaf852 100644 --- a/ports/stm/peripherals/stm32f7/stm32f746xx/gpio.c +++ b/ports/stm/peripherals/stm32f7/stm32f746xx/gpio.c @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * Copyright (c) 2020 Mark Olsson - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2020 Mark Olsson +// +// SPDX-License-Identifier: MIT #include "gpio.h" #include "common-hal/microcontroller/Pin.h" diff --git a/ports/stm/peripherals/stm32f7/stm32f746xx/periph.c b/ports/stm/peripherals/stm32f7/stm32f746xx/periph.c index 89cd7e27e4dd..cd73183cdf27 100644 --- a/ports/stm/peripherals/stm32f7/stm32f746xx/periph.c +++ b/ports/stm/peripherals/stm32f7/stm32f746xx/periph.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * Copyright (c) 2020 Mark Olsson - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2020 Mark Olsson +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/ports/stm/peripherals/stm32f7/stm32f746xx/periph.h b/ports/stm/peripherals/stm32f7/stm32f746xx/periph.h index 425221f64eaa..4578ee7b555b 100644 --- a/ports/stm/peripherals/stm32f7/stm32f746xx/periph.h +++ b/ports/stm/peripherals/stm32f7/stm32f746xx/periph.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * Copyright (c) 2020 Mark Olsson - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2020 Mark Olsson +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F746XX_PERIPH_H #define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F746XX_PERIPH_H diff --git a/ports/stm/peripherals/stm32f7/stm32f746xx/pins.c b/ports/stm/peripherals/stm32f7/stm32f746xx/pins.c index 0a2682528ef8..eb4238639078 100644 --- a/ports/stm/peripherals/stm32f7/stm32f746xx/pins.c +++ b/ports/stm/peripherals/stm32f7/stm32f746xx/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/ports/stm/peripherals/stm32f7/stm32f746xx/pins.h b/ports/stm/peripherals/stm32f7/stm32f746xx/pins.h index 3b6f9a15a4f8..8f02e607950b 100644 --- a/ports/stm/peripherals/stm32f7/stm32f746xx/pins.h +++ b/ports/stm/peripherals/stm32f7/stm32f746xx/pins.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F746XX_PINS_H #define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F746XX_PINS_H diff --git a/ports/stm/peripherals/stm32f7/stm32f767xx/clocks.h b/ports/stm/peripherals/stm32f7/stm32f767xx/clocks.h index 187a024ad0cc..d220ed8208b1 100644 --- a/ports/stm/peripherals/stm32f7/stm32f767xx/clocks.h +++ b/ports/stm/peripherals/stm32f7/stm32f767xx/clocks.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "stm32f7xx_hal.h" diff --git a/ports/stm/peripherals/stm32f7/stm32f767xx/gpio.c b/ports/stm/peripherals/stm32f7/stm32f767xx/gpio.c index 8b5fa5f3e1c6..a9fecc33540f 100644 --- a/ports/stm/peripherals/stm32f7/stm32f767xx/gpio.c +++ b/ports/stm/peripherals/stm32f7/stm32f767xx/gpio.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "gpio.h" #include "common-hal/microcontroller/Pin.h" diff --git a/ports/stm/peripherals/stm32f7/stm32f767xx/periph.c b/ports/stm/peripherals/stm32f7/stm32f767xx/periph.c index b1ac712488f0..85b7deec00ff 100644 --- a/ports/stm/peripherals/stm32f7/stm32f767xx/periph.c +++ b/ports/stm/peripherals/stm32f7/stm32f767xx/periph.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/ports/stm/peripherals/stm32f7/stm32f767xx/periph.h b/ports/stm/peripherals/stm32f7/stm32f767xx/periph.h index ea4797634f14..96f3c458e2f2 100644 --- a/ports/stm/peripherals/stm32f7/stm32f767xx/periph.h +++ b/ports/stm/peripherals/stm32f7/stm32f767xx/periph.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F767XX_PERIPH_H #define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F767XX_PERIPH_H diff --git a/ports/stm/peripherals/stm32f7/stm32f767xx/pins.c b/ports/stm/peripherals/stm32f7/stm32f767xx/pins.c index 67814c6b791c..1efeeaf9aadd 100644 --- a/ports/stm/peripherals/stm32f7/stm32f767xx/pins.c +++ b/ports/stm/peripherals/stm32f7/stm32f767xx/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/ports/stm/peripherals/stm32f7/stm32f767xx/pins.h b/ports/stm/peripherals/stm32f7/stm32f767xx/pins.h index e0f2bb0566cb..68f9e265011d 100644 --- a/ports/stm/peripherals/stm32f7/stm32f767xx/pins.h +++ b/ports/stm/peripherals/stm32f7/stm32f767xx/pins.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F767XX_PINS_H #define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F767XX_PINS_H diff --git a/ports/stm/peripherals/stm32h7/clocks.c b/ports/stm/peripherals/stm32h7/clocks.c index 5fde5af6c2dd..8c63031859c4 100644 --- a/ports/stm/peripherals/stm32h7/clocks.c +++ b/ports/stm/peripherals/stm32h7/clocks.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "stm32h7xx_hal.h" #include "supervisor/shared/safe_mode.h" diff --git a/ports/stm/peripherals/stm32h7/stm32h743xx/clocks.h b/ports/stm/peripherals/stm32h7/stm32h743xx/clocks.h index ad241b7ef6db..97c3c4ef4630 100644 --- a/ports/stm/peripherals/stm32h7/stm32h743xx/clocks.h +++ b/ports/stm/peripherals/stm32h7/stm32h743xx/clocks.h @@ -1,29 +1,8 @@ - -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "stm32h7xx_hal.h" diff --git a/ports/stm/peripherals/stm32h7/stm32h743xx/gpio.c b/ports/stm/peripherals/stm32h7/stm32h743xx/gpio.c index 8b5fa5f3e1c6..a9fecc33540f 100644 --- a/ports/stm/peripherals/stm32h7/stm32h743xx/gpio.c +++ b/ports/stm/peripherals/stm32h7/stm32h743xx/gpio.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "gpio.h" #include "common-hal/microcontroller/Pin.h" diff --git a/ports/stm/peripherals/stm32h7/stm32h743xx/periph.c b/ports/stm/peripherals/stm32h7/stm32h743xx/periph.c index bf8248f760aa..afea41445481 100644 --- a/ports/stm/peripherals/stm32h7/stm32h743xx/periph.c +++ b/ports/stm/peripherals/stm32h7/stm32h743xx/periph.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/ports/stm/peripherals/stm32h7/stm32h743xx/periph.h b/ports/stm/peripherals/stm32h7/stm32h743xx/periph.h index 3716a0f82f3e..a913a46b1169 100644 --- a/ports/stm/peripherals/stm32h7/stm32h743xx/periph.h +++ b/ports/stm/peripherals/stm32h7/stm32h743xx/periph.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32H743XX_PERIPH_H #define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32H743XX_PERIPH_H diff --git a/ports/stm/peripherals/stm32h7/stm32h743xx/pins.c b/ports/stm/peripherals/stm32h7/stm32h743xx/pins.c index baad622746d2..8eb47ded66a7 100644 --- a/ports/stm/peripherals/stm32h7/stm32h743xx/pins.c +++ b/ports/stm/peripherals/stm32h7/stm32h743xx/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/ports/stm/peripherals/stm32h7/stm32h743xx/pins.h b/ports/stm/peripherals/stm32h7/stm32h743xx/pins.h index 7c4650dca3e1..ea9d506c0bd9 100644 --- a/ports/stm/peripherals/stm32h7/stm32h743xx/pins.h +++ b/ports/stm/peripherals/stm32h7/stm32h743xx/pins.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32H743XX_PINS_H #define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32H743XX_PINS_H diff --git a/ports/stm/peripherals/stm32l4/clocks.c b/ports/stm/peripherals/stm32l4/clocks.c index 5724a74ae2da..a005c2bf7908 100644 --- a/ports/stm/peripherals/stm32l4/clocks.c +++ b/ports/stm/peripherals/stm32l4/clocks.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Blues Wireless Contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Blues Wireless Contributors +// +// SPDX-License-Identifier: MIT #include "stm32l4xx_hal.h" #include "supervisor/shared/safe_mode.h" diff --git a/ports/stm/peripherals/stm32l4/stm32l4r5xx/clocks.h b/ports/stm/peripherals/stm32l4/stm32l4r5xx/clocks.h index ef4a866c6844..57f49c83c438 100644 --- a/ports/stm/peripherals/stm32l4/stm32l4r5xx/clocks.h +++ b/ports/stm/peripherals/stm32l4/stm32l4r5xx/clocks.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Blues Wireless Contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Blues Wireless Contributors +// +// SPDX-License-Identifier: MIT #include "stm32l4xx_hal.h" diff --git a/ports/stm/peripherals/stm32l4/stm32l4r5xx/gpio.c b/ports/stm/peripherals/stm32l4/stm32l4r5xx/gpio.c index a3f23ad0091c..18fe8b760a26 100644 --- a/ports/stm/peripherals/stm32l4/stm32l4r5xx/gpio.c +++ b/ports/stm/peripherals/stm32l4/stm32l4r5xx/gpio.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Blues Wireless Contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Blues Wireless Contributors +// +// SPDX-License-Identifier: MIT #include "peripherals/gpio.h" #include "common-hal/microcontroller/Pin.h" diff --git a/ports/stm/peripherals/stm32l4/stm32l4r5xx/periph.c b/ports/stm/peripherals/stm32l4/stm32l4r5xx/periph.c index 32da56f2226e..7a5d52e0c830 100644 --- a/ports/stm/peripherals/stm32l4/stm32l4r5xx/periph.c +++ b/ports/stm/peripherals/stm32l4/stm32l4r5xx/periph.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Blues Wireless Contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Blues Wireless Contributors +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/ports/stm/peripherals/stm32l4/stm32l4r5xx/periph.h b/ports/stm/peripherals/stm32l4/stm32l4r5xx/periph.h index d28b6c8ea320..4c00d9009d44 100644 --- a/ports/stm/peripherals/stm32l4/stm32l4r5xx/periph.h +++ b/ports/stm/peripherals/stm32l4/stm32l4r5xx/periph.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Blues Wireless Contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Blues Wireless Contributors +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32L4R5XX_PERIPH_H #define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32L4R5XX_PERIPH_H diff --git a/ports/stm/peripherals/stm32l4/stm32l4r5xx/pins.c b/ports/stm/peripherals/stm32l4/stm32l4r5xx/pins.c index 82fdb45554ba..c3c8f3f28fda 100644 --- a/ports/stm/peripherals/stm32l4/stm32l4r5xx/pins.c +++ b/ports/stm/peripherals/stm32l4/stm32l4r5xx/pins.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Blues Wireless Contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Blues Wireless Contributors +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/ports/stm/peripherals/stm32l4/stm32l4r5xx/pins.h b/ports/stm/peripherals/stm32l4/stm32l4r5xx/pins.h index 86416cab3199..89c510731914 100644 --- a/ports/stm/peripherals/stm32l4/stm32l4r5xx/pins.h +++ b/ports/stm/peripherals/stm32l4/stm32l4r5xx/pins.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Blues Wireless Contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Blues Wireless Contributors +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32L4R5XX_PINS_H #define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32L4R5XX_PINS_H diff --git a/ports/stm/peripherals/timers.c b/ports/stm/peripherals/timers.c index b931f1b5a488..77a4772e542f 100644 --- a/ports/stm/peripherals/timers.c +++ b/ports/stm/peripherals/timers.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "timers.h" #include "py/mpconfig.h" diff --git a/ports/stm/peripherals/timers.h b/ports/stm/peripherals/timers.h index 26cba88a03c4..3af6958cb027 100644 --- a/ports/stm/peripherals/timers.h +++ b/ports/stm/peripherals/timers.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include "py/mphal.h" diff --git a/ports/stm/qstrdefsport.h b/ports/stm/qstrdefsport.h index 3ba897069bf7..57b5815583d4 100644 --- a/ports/stm/qstrdefsport.h +++ b/ports/stm/qstrdefsport.h @@ -1 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + // qstrs specific to this port diff --git a/ports/stm/supervisor/internal_flash.c b/ports/stm/supervisor/internal_flash.c index 3bbc50ae7449..24abbbca64e8 100644 --- a/ports/stm/supervisor/internal_flash.c +++ b/ports/stm/supervisor/internal_flash.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/internal_flash.h" #include diff --git a/ports/stm/supervisor/internal_flash.h b/ports/stm/supervisor/internal_flash.h index 809c2636662a..e75c9339825e 100644 --- a/ports/stm/supervisor/internal_flash.h +++ b/ports/stm/supervisor/internal_flash.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * Copyright (c) 2020 Mark Olsson - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2020 Mark Olsson +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_STM32_INTERNAL_FLASH_H #define MICROPY_INCLUDED_STM32_INTERNAL_FLASH_H diff --git a/ports/stm/supervisor/port.c b/ports/stm/supervisor/port.c index fde75577397d..5b903044b61c 100644 --- a/ports/stm/supervisor/port.c +++ b/ports/stm/supervisor/port.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include "supervisor/background_callback.h" diff --git a/ports/stm/supervisor/qspi_flash.c b/ports/stm/supervisor/qspi_flash.c index 330e27dbd237..131479b76f41 100644 --- a/ports/stm/supervisor/qspi_flash.c +++ b/ports/stm/supervisor/qspi_flash.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 hathach for Adafruit Industries - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 hathach for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/spi_flash_api.h" diff --git a/ports/stm/supervisor/serial.c b/ports/stm/supervisor/serial.c index b0ed7e193add..2f3dd66b2660 100644 --- a/ports/stm/supervisor/serial.c +++ b/ports/stm/supervisor/serial.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017, 2018 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017, 2018 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/mphal.h" #include diff --git a/ports/stm/supervisor/usb.c b/ports/stm/supervisor/usb.c index cafa401bd46d..5ed415d60de0 100644 --- a/ports/stm/supervisor/usb.c +++ b/ports/stm/supervisor/usb.c @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 hathach for Adafruit Industries - * Copyright (c) 2019 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 hathach for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/usb.h" diff --git a/ports/stm/tools/parse_af_csv.py b/ports/stm/tools/parse_af_csv.py index e3188e2e24b5..e86bf4e74893 100644 --- a/ports/stm/tools/parse_af_csv.py +++ b/ports/stm/tools/parse_af_csv.py @@ -1,26 +1,8 @@ -# This file is part of the MicroPython project, http://micropython.org/ -# -# The MIT License (MIT) +# This file is part of the CircuitPython project: https://circuitpython.org # # SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries # -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. +# SPDX-License-Identifier: MIT import csv import sys diff --git a/ports/stm/tools/parse_pins_csv.py b/ports/stm/tools/parse_pins_csv.py index 07fe3dce630b..91903bd7e465 100644 --- a/ports/stm/tools/parse_pins_csv.py +++ b/ports/stm/tools/parse_pins_csv.py @@ -1,26 +1,8 @@ -# This file is part of the MicroPython project, http://micropython.org/ -# -# The MIT License (MIT) +# This file is part of the CircuitPython project: https://circuitpython.org # # SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries # -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. +# SPDX-License-Identifier: MIT import csv import sys diff --git a/ports/unix/displayio_min.c b/ports/unix/displayio_min.c index 3dfcdb41416c..809ed52cacb5 100644 --- a/ports/unix/displayio_min.c +++ b/ports/unix/displayio_min.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/enum.h" #include "py/obj.h" diff --git a/py/circuitpy_mpconfig.h b/py/circuitpy_mpconfig.h index dc9b201f6349..9f2e3eaa7ee3 100644 --- a/py/circuitpy_mpconfig.h +++ b/py/circuitpy_mpconfig.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT // This file contains settings that are common across CircuitPython ports, to make // sure that the same feature set and settings are used, such as in atmel-samd diff --git a/py/enum.c b/py/enum.c index 5a50a93ff33a..7a261b505bab 100644 --- a/py/enum.c +++ b/py/enum.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/enum.h" #include "py/runtime.h" diff --git a/py/enum.h b/py/enum.h index 689c52a3d8b1..d786fc591977 100644 --- a/py/enum.h +++ b/py/enum.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/py/proto.c b/py/proto.c index 14fbaeee8d43..ea64e024a485 100644 --- a/py/proto.c +++ b/py/proto.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/proto.h" diff --git a/py/proto.h b/py/proto.h index e5bfcc5f4f95..0c20d8645ac6 100644 --- a/py/proto.h +++ b/py/proto.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_PY_PROTO_H #define MICROPY_INCLUDED_PY_PROTO_H diff --git a/py/ringbuf.c b/py/ringbuf.c index 2edced9cf925..4f90c9e317a1 100644 --- a/py/ringbuf.c +++ b/py/ringbuf.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Paul Sokolovsky - * Copyright (c) 2019 Jim Mussared - * Copyright (c) 2020 Dan Halbert for Adafruit Industries LLC - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Paul Sokolovsky +// SPDX-FileCopyrightText: Copyright (c) 2019 Jim Mussared +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT // CIRCUITPY-CHANGE: thoroughly reworked diff --git a/py/ringbuf.h b/py/ringbuf.h index e6ba800c59a4..25345da99d78 100644 --- a/py/ringbuf.h +++ b/py/ringbuf.h @@ -1,28 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Paul Sokolovsky - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Paul Sokolovsky +// SPDX-FileCopyrightText: Copyright (c) 2019 Jim Mussared +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_PY_RINGBUF_H #define MICROPY_INCLUDED_PY_RINGBUF_H diff --git a/shared-bindings/__future__/__init__.c b/shared-bindings/__future__/__init__.c index 24574f75cfa9..0ead475f8916 100644 --- a/shared-bindings/__future__/__init__.c +++ b/shared-bindings/__future__/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "extmod/vfs.h" #include "py/mpstate.h" diff --git a/shared-bindings/__future__/__init__.h b/shared-bindings/__future__/__init__.h index c1dd0e192e6c..47f1eb21dc7c 100644 --- a/shared-bindings/__future__/__init__.h +++ b/shared-bindings/__future__/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS___FUTURE_____INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS___FUTURE_____INIT___H diff --git a/shared-bindings/_bleio/Adapter.c b/shared-bindings/_bleio/Adapter.c index ddd1a8678c0c..bc73768b7ac1 100644 --- a/shared-bindings/_bleio/Adapter.c +++ b/shared-bindings/_bleio/Adapter.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/_bleio/Adapter.h b/shared-bindings/_bleio/Adapter.h index 49bb4421e743..6a2647f5d0b1 100644 --- a/shared-bindings/_bleio/Adapter.h +++ b/shared-bindings/_bleio/Adapter.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_ADAPTER_H #define MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_ADAPTER_H diff --git a/shared-bindings/_bleio/Address.c b/shared-bindings/_bleio/Address.c index f8c4efbbcade..ca5a27a5b3d4 100644 --- a/shared-bindings/_bleio/Address.c +++ b/shared-bindings/_bleio/Address.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include #include diff --git a/shared-bindings/_bleio/Address.h b/shared-bindings/_bleio/Address.h index 98b6f80e0e18..d3df03ef6148 100644 --- a/shared-bindings/_bleio/Address.h +++ b/shared-bindings/_bleio/Address.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_ADDRESS_H #define MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_ADDRESS_H diff --git a/shared-bindings/_bleio/Attribute.c b/shared-bindings/_bleio/Attribute.c index b060757951f0..63ab7e2dea97 100644 --- a/shared-bindings/_bleio/Attribute.c +++ b/shared-bindings/_bleio/Attribute.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/objproperty.h" #include "py/runtime.h" diff --git a/shared-bindings/_bleio/Attribute.h b/shared-bindings/_bleio/Attribute.h index a0ce045003ac..bbaab213f79b 100644 --- a/shared-bindings/_bleio/Attribute.h +++ b/shared-bindings/_bleio/Attribute.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_ATTRIBUTE_H #define MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_ATTRIBUTE_H diff --git a/shared-bindings/_bleio/Characteristic.c b/shared-bindings/_bleio/Characteristic.c index a0e2e3dc2a4f..e248cb8fefd8 100644 --- a/shared-bindings/_bleio/Characteristic.c +++ b/shared-bindings/_bleio/Characteristic.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2017 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2017 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include "py/objproperty.h" #include "py/runtime.h" diff --git a/shared-bindings/_bleio/Characteristic.h b/shared-bindings/_bleio/Characteristic.h index 349dd5fdcfef..314456222279 100644 --- a/shared-bindings/_bleio/Characteristic.h +++ b/shared-bindings/_bleio/Characteristic.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_CHARACTERISTIC_H #define MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_CHARACTERISTIC_H diff --git a/shared-bindings/_bleio/CharacteristicBuffer.c b/shared-bindings/_bleio/CharacteristicBuffer.c index d8f94b79e18f..a562641061b7 100644 --- a/shared-bindings/_bleio/CharacteristicBuffer.c +++ b/shared-bindings/_bleio/CharacteristicBuffer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/mperrno.h" #include "py/stream.h" diff --git a/shared-bindings/_bleio/CharacteristicBuffer.h b/shared-bindings/_bleio/CharacteristicBuffer.h index 9dc3252d5a46..da0bf7bb70fd 100644 --- a/shared-bindings/_bleio/CharacteristicBuffer.h +++ b/shared-bindings/_bleio/CharacteristicBuffer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_CHARACTERISTICBUFFER_H #define MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_CHARACTERISTICBUFFER_H diff --git a/shared-bindings/_bleio/Connection.c b/shared-bindings/_bleio/Connection.c index 8185ed041dc9..dfdcfa98f160 100644 --- a/shared-bindings/_bleio/Connection.c +++ b/shared-bindings/_bleio/Connection.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include "shared-bindings/_bleio/Connection.h" diff --git a/shared-bindings/_bleio/Connection.h b/shared-bindings/_bleio/Connection.h index a5313a937559..c3cb2259d311 100644 --- a/shared-bindings/_bleio/Connection.h +++ b/shared-bindings/_bleio/Connection.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_CONNECTION_H #define MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_CONNECTION_H diff --git a/shared-bindings/_bleio/Descriptor.c b/shared-bindings/_bleio/Descriptor.c index a0bec461a39f..d942b5d764c2 100644 --- a/shared-bindings/_bleio/Descriptor.c +++ b/shared-bindings/_bleio/Descriptor.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2017 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2017 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include "py/objproperty.h" #include "py/runtime.h" diff --git a/shared-bindings/_bleio/Descriptor.h b/shared-bindings/_bleio/Descriptor.h index bda381e3d41a..cf5c4bebd781 100644 --- a/shared-bindings/_bleio/Descriptor.h +++ b/shared-bindings/_bleio/Descriptor.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_DESCRIPTOR_H #define MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_DESCRIPTOR_H diff --git a/shared-bindings/_bleio/PacketBuffer.c b/shared-bindings/_bleio/PacketBuffer.c index 9cd2c37379dc..11e0b4d53558 100644 --- a/shared-bindings/_bleio/PacketBuffer.c +++ b/shared-bindings/_bleio/PacketBuffer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/mperrno.h" #include "py/stream.h" diff --git a/shared-bindings/_bleio/PacketBuffer.h b/shared-bindings/_bleio/PacketBuffer.h index adead29b46af..bffc9b53e76d 100644 --- a/shared-bindings/_bleio/PacketBuffer.h +++ b/shared-bindings/_bleio/PacketBuffer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_PACKETBUFFER_H #define MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_PACKETBUFFER_H diff --git a/shared-bindings/_bleio/ScanEntry.c b/shared-bindings/_bleio/ScanEntry.c index cabf43493bd5..e3f0f43fe8bc 100644 --- a/shared-bindings/_bleio/ScanEntry.c +++ b/shared-bindings/_bleio/ScanEntry.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2017 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2017 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/_bleio/ScanEntry.h b/shared-bindings/_bleio/ScanEntry.h index b3764330274f..fce4020c81fb 100644 --- a/shared-bindings/_bleio/ScanEntry.h +++ b/shared-bindings/_bleio/ScanEntry.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2017 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2017 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_SCANENTRY_H #define MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_SCANENTRY_H diff --git a/shared-bindings/_bleio/ScanResults.c b/shared-bindings/_bleio/ScanResults.c index 41f582c7e061..6e249394736b 100644 --- a/shared-bindings/_bleio/ScanResults.c +++ b/shared-bindings/_bleio/ScanResults.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2017 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2017 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/_bleio/ScanResults.h b/shared-bindings/_bleio/ScanResults.h index a8c88c215dc9..fcf4e9d05870 100644 --- a/shared-bindings/_bleio/ScanResults.h +++ b/shared-bindings/_bleio/ScanResults.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2017 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2017 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_SCANRESULTS_H #define MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_SCANRESULTS_H diff --git a/shared-bindings/_bleio/Service.c b/shared-bindings/_bleio/Service.c index 22475f35f6bd..facb22ee4641 100644 --- a/shared-bindings/_bleio/Service.c +++ b/shared-bindings/_bleio/Service.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2017 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2017 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include "py/objproperty.h" #include "py/runtime.h" diff --git a/shared-bindings/_bleio/Service.h b/shared-bindings/_bleio/Service.h index eb1d29b57e44..7b8d41fb57e6 100644 --- a/shared-bindings/_bleio/Service.h +++ b/shared-bindings/_bleio/Service.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_SERVICE_H #define MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_SERVICE_H diff --git a/shared-bindings/_bleio/UUID.c b/shared-bindings/_bleio/UUID.c index 9025c57aa85e..a5935b83236b 100644 --- a/shared-bindings/_bleio/UUID.c +++ b/shared-bindings/_bleio/UUID.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2017 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2017 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/_bleio/UUID.h b/shared-bindings/_bleio/UUID.h index d07e90380340..84cb759c3bf5 100644 --- a/shared-bindings/_bleio/UUID.h +++ b/shared-bindings/_bleio/UUID.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_UUID_H #define MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_UUID_H diff --git a/shared-bindings/_bleio/__init__.c b/shared-bindings/_bleio/__init__.c index 157a633a5182..34b01f60d81e 100644 --- a/shared-bindings/_bleio/__init__.c +++ b/shared-bindings/_bleio/__init__.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/_bleio/__init__.h b/shared-bindings/_bleio/__init__.h index e7d923fbe9f4..d55b85e5440e 100644 --- a/shared-bindings/_bleio/__init__.h +++ b/shared-bindings/_bleio/__init__.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2016 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2016 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO___INIT___H diff --git a/shared-bindings/_eve/__init__.c b/shared-bindings/_eve/__init__.c index ed1ddd961a80..654e6728b3ef 100644 --- a/shared-bindings/_eve/__init__.c +++ b/shared-bindings/_eve/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 James Bowman for Excamera Labs - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 James Bowman for Excamera Labs +// +// SPDX-License-Identifier: MIT #include #include diff --git a/shared-bindings/_eve/__init__.h b/shared-bindings/_eve/__init__.h index 96a10f010bf3..6c635b423962 100644 --- a/shared-bindings/_eve/__init__.h +++ b/shared-bindings/_eve/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 James Bowman for Excamera Labs - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 James Bowman for Excamera Labs +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS__EVE___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS__EVE___INIT___H diff --git a/shared-bindings/_pew/PewPew.c b/shared-bindings/_pew/PewPew.c index 94142aa13246..fcaf1a526dba 100644 --- a/shared-bindings/_pew/PewPew.c +++ b/shared-bindings/_pew/PewPew.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Radomir Dopieralski - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Radomir Dopieralski +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/runtime.h" #include "py/mphal.h" diff --git a/shared-bindings/_pew/PewPew.h b/shared-bindings/_pew/PewPew.h index f763847577fd..f8b7ef81e49c 100644 --- a/shared-bindings/_pew/PewPew.h +++ b/shared-bindings/_pew/PewPew.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Radomir Dopieralski - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Radomir Dopieralski +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_PEW_PEWPEW_H diff --git a/shared-bindings/_pew/__init__.c b/shared-bindings/_pew/__init__.c index 9a0620ebabf4..8003a8409e45 100644 --- a/shared-bindings/_pew/__init__.c +++ b/shared-bindings/_pew/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Radomir Dopieralski - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Radomir Dopieralski +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/runtime.h" #include "py/mphal.h" diff --git a/shared-bindings/_pixelmap/PixelMap.c b/shared-bindings/_pixelmap/PixelMap.c index a4a16860d502..7ffa40e43bc4 100644 --- a/shared-bindings/_pixelmap/PixelMap.c +++ b/shared-bindings/_pixelmap/PixelMap.c @@ -1,29 +1,9 @@ -/* - * This file is part of the CircuitPython project, https://github.com/adafruit/circuitpython - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Rose Hooper - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Rose Hooper +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/objproperty.h" #include "py/objtype.h" diff --git a/shared-bindings/_pixelmap/PixelMap.h b/shared-bindings/_pixelmap/PixelMap.h index fef0db44d010..6bd73e741ced 100644 --- a/shared-bindings/_pixelmap/PixelMap.h +++ b/shared-bindings/_pixelmap/PixelMap.h @@ -1,29 +1,9 @@ -/* - * This file is part of the CircuitPython project, https://github.com/adafruit/circuitpython - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Rose Hooper - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Rose Hooper +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once #include "py/obj.h" diff --git a/shared-bindings/_pixelmap/__init__.c b/shared-bindings/_pixelmap/__init__.c index 9c71c5498ab3..6ce5e60903f4 100644 --- a/shared-bindings/_pixelmap/__init__.c +++ b/shared-bindings/_pixelmap/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the CircuitPython project, https://github.com/adafruit/circuitpython - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Rose Hooper - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Rose Hooper +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/shared-bindings/_pixelmap/__init__.h b/shared-bindings/_pixelmap/__init__.h index 9a84bc68a7df..20d47e25e0ee 100644 --- a/shared-bindings/_pixelmap/__init__.h +++ b/shared-bindings/_pixelmap/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the CircuitPython project, https://github.com/adafruit/circuitpython - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Rose Hooper - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Rose Hooper +// +// SPDX-License-Identifier: MIT #ifndef CP_SHARED_BINDINGS_PIXELBUF_INIT_H #define CP_SHARED_BINDINGS_PIXELBUF_INIT_H diff --git a/shared-bindings/_stage/Layer.c b/shared-bindings/_stage/Layer.c index b1493230ebdd..a2ac6a5c93dd 100644 --- a/shared-bindings/_stage/Layer.c +++ b/shared-bindings/_stage/Layer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Radomir Dopieralski - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Radomir Dopieralski +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" diff --git a/shared-bindings/_stage/Layer.h b/shared-bindings/_stage/Layer.h index 6d15dfb288d6..6b33fe095c92 100644 --- a/shared-bindings/_stage/Layer.h +++ b/shared-bindings/_stage/Layer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Radomir Dopieralski - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Radomir Dopieralski +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED__STAGE_LAYER_H #define MICROPY_INCLUDED__STAGE_LAYER_H diff --git a/shared-bindings/_stage/Text.c b/shared-bindings/_stage/Text.c index f94902e6cc47..2f24e951077b 100644 --- a/shared-bindings/_stage/Text.c +++ b/shared-bindings/_stage/Text.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Radomir Dopieralski - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Radomir Dopieralski +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/_stage/Text.h b/shared-bindings/_stage/Text.h index 77de62a110da..14e2ee2b25c2 100644 --- a/shared-bindings/_stage/Text.h +++ b/shared-bindings/_stage/Text.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Radomir Dopieralski - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Radomir Dopieralski +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED__STAGE_TEXT_H #define MICROPY_INCLUDED__STAGE_TEXT_H diff --git a/shared-bindings/_stage/__init__.c b/shared-bindings/_stage/__init__.c index 82f8e1180872..0ab1b89b2ee2 100644 --- a/shared-bindings/_stage/__init__.c +++ b/shared-bindings/_stage/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Radomir Dopieralski - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Radomir Dopieralski +// +// SPDX-License-Identifier: MIT #include "__init__.h" #include "py/mperrno.h" diff --git a/shared-bindings/_stage/__init__.h b/shared-bindings/_stage/__init__.h index 2df81cb3b2da..60e2f0e0039c 100644 --- a/shared-bindings/_stage/__init__.h +++ b/shared-bindings/_stage/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Radomir Dopieralski - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Radomir Dopieralski +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED__STAGE_H #define MICROPY_INCLUDED__STAGE_H diff --git a/shared-bindings/adafruit_bus_device/__init__.c b/shared-bindings/adafruit_bus_device/__init__.c index 13993b18fff8..f21f29901829 100644 --- a/shared-bindings/adafruit_bus_device/__init__.c +++ b/shared-bindings/adafruit_bus_device/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Mark Komus - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Mark Komus +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/adafruit_bus_device/__init__.h b/shared-bindings/adafruit_bus_device/__init__.h index 4a669807be38..ac61851bdb7b 100644 --- a/shared-bindings/adafruit_bus_device/__init__.h +++ b/shared-bindings/adafruit_bus_device/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Mark Komus - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Mark Komus +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BUSDEVICE___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_BUSDEVICE___INIT___H diff --git a/shared-bindings/adafruit_bus_device/i2c_device/I2CDevice.c b/shared-bindings/adafruit_bus_device/i2c_device/I2CDevice.c index 0da8c48fcfbf..00988704e4fb 100644 --- a/shared-bindings/adafruit_bus_device/i2c_device/I2CDevice.c +++ b/shared-bindings/adafruit_bus_device/i2c_device/I2CDevice.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Mark Komus - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Mark Komus +// +// SPDX-License-Identifier: MIT // This file contains all of the Python API definitions for the // busio.I2C class. diff --git a/shared-bindings/adafruit_bus_device/i2c_device/I2CDevice.h b/shared-bindings/adafruit_bus_device/i2c_device/I2CDevice.h index 71c169a868e2..25468e7a3c97 100644 --- a/shared-bindings/adafruit_bus_device/i2c_device/I2CDevice.h +++ b/shared-bindings/adafruit_bus_device/i2c_device/I2CDevice.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Mark Komus - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Mark Komus +// +// SPDX-License-Identifier: MIT // Machine is the HAL for low-level, hardware accelerated functions. It is not // meant to simplify APIs, its only meant to unify them so that other modules diff --git a/shared-bindings/adafruit_bus_device/spi_device/SPIDevice.c b/shared-bindings/adafruit_bus_device/spi_device/SPIDevice.c index 07cc6c60a473..6306085272ff 100644 --- a/shared-bindings/adafruit_bus_device/spi_device/SPIDevice.c +++ b/shared-bindings/adafruit_bus_device/spi_device/SPIDevice.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Mark Komus - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Mark Komus +// +// SPDX-License-Identifier: MIT #include "shared-bindings/microcontroller/Pin.h" #include "shared-bindings/adafruit_bus_device/spi_device/SPIDevice.h" diff --git a/shared-bindings/adafruit_bus_device/spi_device/SPIDevice.h b/shared-bindings/adafruit_bus_device/spi_device/SPIDevice.h index b92a5ebfaed6..b0c65ecdc32e 100644 --- a/shared-bindings/adafruit_bus_device/spi_device/SPIDevice.h +++ b/shared-bindings/adafruit_bus_device/spi_device/SPIDevice.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Mark Komus - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Mark Komus +// +// SPDX-License-Identifier: MIT // Machine is the HAL for low-level, hardware accelerated functions. It is not // meant to simplify APIs, its only meant to unify them so that other modules diff --git a/shared-bindings/adafruit_pixelbuf/PixelBuf.c b/shared-bindings/adafruit_pixelbuf/PixelBuf.c index 9f2c59ed4050..dd6588087534 100644 --- a/shared-bindings/adafruit_pixelbuf/PixelBuf.c +++ b/shared-bindings/adafruit_pixelbuf/PixelBuf.c @@ -1,28 +1,8 @@ -/* - * This file is part of the CircuitPython project, https://github.com/adafruit/circuitpython - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Rose Hooper - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Rose Hooper +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/objarray.h" diff --git a/shared-bindings/adafruit_pixelbuf/PixelBuf.h b/shared-bindings/adafruit_pixelbuf/PixelBuf.h index e77153322d8d..cedf74cdea55 100644 --- a/shared-bindings/adafruit_pixelbuf/PixelBuf.h +++ b/shared-bindings/adafruit_pixelbuf/PixelBuf.h @@ -1,28 +1,8 @@ -/* - * This file is part of the CircuitPython project, https://github.com/adafruit/circuitpython - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Rose Hooper - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Rose Hooper +// +// SPDX-License-Identifier: MIT #ifndef CP_SHARED_BINDINGS_PIXELBUF_PIXELBUF_H #define CP_SHARED_BINDINGS_PIXELBUF_PIXELBUF_H diff --git a/shared-bindings/adafruit_pixelbuf/__init__.c b/shared-bindings/adafruit_pixelbuf/__init__.c index bb741e3da608..34d6919a5de7 100644 --- a/shared-bindings/adafruit_pixelbuf/__init__.c +++ b/shared-bindings/adafruit_pixelbuf/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the CircuitPython project, https://github.com/adafruit/circuitpython - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Rose Hooper - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Rose Hooper +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/shared-bindings/adafruit_pixelbuf/__init__.h b/shared-bindings/adafruit_pixelbuf/__init__.h index 9a84bc68a7df..20d47e25e0ee 100644 --- a/shared-bindings/adafruit_pixelbuf/__init__.h +++ b/shared-bindings/adafruit_pixelbuf/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the CircuitPython project, https://github.com/adafruit/circuitpython - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Rose Hooper - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Rose Hooper +// +// SPDX-License-Identifier: MIT #ifndef CP_SHARED_BINDINGS_PIXELBUF_INIT_H #define CP_SHARED_BINDINGS_PIXELBUF_INIT_H diff --git a/shared-bindings/aesio/__init__.c b/shared-bindings/aesio/__init__.c index 314ac847b6e7..345948b6bd7e 100644 --- a/shared-bindings/aesio/__init__.c +++ b/shared-bindings/aesio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/aesio/__init__.h b/shared-bindings/aesio/__init__.h index 60f6b8361168..9e722f112a37 100644 --- a/shared-bindings/aesio/__init__.h +++ b/shared-bindings/aesio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AESIO_H #define MICROPY_INCLUDED_SHARED_BINDINGS_AESIO_H diff --git a/shared-bindings/aesio/aes.c b/shared-bindings/aesio/aes.c index d9b91029a0fc..6316c4643e92 100644 --- a/shared-bindings/aesio/aes.c +++ b/shared-bindings/aesio/aes.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/shared-bindings/alarm/SleepMemory.c b/shared-bindings/alarm/SleepMemory.c index acef77e6b7cd..9a003420215a 100644 --- a/shared-bindings/alarm/SleepMemory.c +++ b/shared-bindings/alarm/SleepMemory.c @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2020 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/binary.h" #include "py/runtime.h" diff --git a/shared-bindings/alarm/SleepMemory.h b/shared-bindings/alarm/SleepMemory.h index c1667ec88367..32eb51c61ef6 100644 --- a/shared-bindings/alarm/SleepMemory.h +++ b/shared-bindings/alarm/SleepMemory.h @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_SLEEPMEMORY_H #define MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_SLEEPMEMORY_H diff --git a/shared-bindings/alarm/__init__.c b/shared-bindings/alarm/__init__.c index 211aee78ea28..f617395f08e0 100644 --- a/shared-bindings/alarm/__init__.c +++ b/shared-bindings/alarm/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/runtime.h" diff --git a/shared-bindings/alarm/__init__.h b/shared-bindings/alarm/__init__.h index c47f482e7467..096897ab8931 100644 --- a/shared-bindings/alarm/__init__.h +++ b/shared-bindings/alarm/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ALARM___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_ALARM___INIT___H diff --git a/shared-bindings/alarm/pin/PinAlarm.c b/shared-bindings/alarm/pin/PinAlarm.c index 4d7e9ed4952c..4574a8798ecd 100644 --- a/shared-bindings/alarm/pin/PinAlarm.c +++ b/shared-bindings/alarm/pin/PinAlarm.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/board/__init__.h" #include "shared-bindings/microcontroller/__init__.h" diff --git a/shared-bindings/alarm/pin/PinAlarm.h b/shared-bindings/alarm/pin/PinAlarm.h index ba74bab5f3d7..528ea891263e 100644 --- a/shared-bindings/alarm/pin/PinAlarm.h +++ b/shared-bindings/alarm/pin/PinAlarm.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_PIN_PINALARM_H #define MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_PIN_PINALARM_H diff --git a/shared-bindings/alarm/time/TimeAlarm.c b/shared-bindings/alarm/time/TimeAlarm.c index 24eb0b91153f..4eae17f6cd93 100644 --- a/shared-bindings/alarm/time/TimeAlarm.c +++ b/shared-bindings/alarm/time/TimeAlarm.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/nlr.h" #include "py/obj.h" diff --git a/shared-bindings/alarm/time/TimeAlarm.h b/shared-bindings/alarm/time/TimeAlarm.h index 0a4b9caf4a29..d8cf3ff133f2 100644 --- a/shared-bindings/alarm/time/TimeAlarm.h +++ b/shared-bindings/alarm/time/TimeAlarm.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_TIME_TIMEALARM_H #define MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_TIME_TIMEALARM_H diff --git a/shared-bindings/alarm/touch/TouchAlarm.c b/shared-bindings/alarm/touch/TouchAlarm.c index 0dafcf9bbf0c..69caaeb57485 100644 --- a/shared-bindings/alarm/touch/TouchAlarm.c +++ b/shared-bindings/alarm/touch/TouchAlarm.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #include "shared-bindings/alarm/touch/TouchAlarm.h" #include "shared-bindings/board/__init__.h" diff --git a/shared-bindings/alarm/touch/TouchAlarm.h b/shared-bindings/alarm/touch/TouchAlarm.h index 1b70d4dae508..e6ca2fda6754 100644 --- a/shared-bindings/alarm/touch/TouchAlarm.h +++ b/shared-bindings/alarm/touch/TouchAlarm.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_TOUCH_TOUCHALARM_H #define MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_TOUCH_TOUCHALARM_H diff --git a/shared-bindings/analogbufio/BufferedIn.c b/shared-bindings/analogbufio/BufferedIn.c index 091a255b4ff2..8e3d0546d94c 100644 --- a/shared-bindings/analogbufio/BufferedIn.c +++ b/shared-bindings/analogbufio/BufferedIn.c @@ -1,30 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2022 Lee Atkinson, MeanStride Technology, Inc. - * - * TODO: Based on analogio/AnalogIn.c from Scott Shaw - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Lee Atkinson, MeanStride Technology, Inc. +// +// SPDX-License-Identifier: MIT #include #include "shared/runtime/context_manager_helpers.h" diff --git a/shared-bindings/analogbufio/BufferedIn.h b/shared-bindings/analogbufio/BufferedIn.h index cfd8050bc52b..014192ee6921 100644 --- a/shared-bindings/analogbufio/BufferedIn.h +++ b/shared-bindings/analogbufio/BufferedIn.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2022 Lee Atkinson, MeanStride Technology, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Lee Atkinson, MeanStride Technology, Inc. +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ANALOGBUFIO_BUFFEREDIN_H #define MICROPY_INCLUDED_SHARED_BINDINGS_ANALOGBUFIO_BUFFEREDIN_H diff --git a/shared-bindings/analogbufio/__init__.c b/shared-bindings/analogbufio/__init__.c index 552fc56b2575..d1f925d362b7 100644 --- a/shared-bindings/analogbufio/__init__.c +++ b/shared-bindings/analogbufio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2022 Lee Atkinson, MeanStride Technology, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Lee Atkinson, MeanStride Technology, Inc. +// +// SPDX-License-Identifier: MIT #include #include "py/obj.h" #include "py/runtime.h" diff --git a/shared-bindings/analogbufio/__init__.h b/shared-bindings/analogbufio/__init__.h index d66dd4e8d650..122035f4f6ab 100644 --- a/shared-bindings/analogbufio/__init__.h +++ b/shared-bindings/analogbufio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2022 Lee Atkinson, MeanStride Technology, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Lee Atkinson, MeanStride Technology, Inc. +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ANALOGBUFIO___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_ANALOGBUFIO___INIT___H diff --git a/shared-bindings/analogio/AnalogIn.c b/shared-bindings/analogio/AnalogIn.c index 93ebe7e0b848..3d2806421544 100644 --- a/shared-bindings/analogio/AnalogIn.c +++ b/shared-bindings/analogio/AnalogIn.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/analogio/AnalogIn.h b/shared-bindings/analogio/AnalogIn.h index 7d667ed3f468..60b1f2d322a6 100644 --- a/shared-bindings/analogio/AnalogIn.h +++ b/shared-bindings/analogio/AnalogIn.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ANALOGIO_ANALOGIN_H #define MICROPY_INCLUDED_SHARED_BINDINGS_ANALOGIO_ANALOGIN_H diff --git a/shared-bindings/analogio/AnalogOut.c b/shared-bindings/analogio/AnalogOut.c index 19c4340e2dc0..d7d21a0f368a 100644 --- a/shared-bindings/analogio/AnalogOut.c +++ b/shared-bindings/analogio/AnalogOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// +// SPDX-License-Identifier: MIT #include #include diff --git a/shared-bindings/analogio/AnalogOut.h b/shared-bindings/analogio/AnalogOut.h index 736afd00192b..4ce5ddf554c5 100644 --- a/shared-bindings/analogio/AnalogOut.h +++ b/shared-bindings/analogio/AnalogOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ANALOGIO_ANALOGOUT_H #define MICROPY_INCLUDED_SHARED_BINDINGS_ANALOGIO_ANALOGOUT_H diff --git a/shared-bindings/analogio/__init__.c b/shared-bindings/analogio/__init__.c index e6bd2f1f4d82..2ce976e6200f 100644 --- a/shared-bindings/analogio/__init__.c +++ b/shared-bindings/analogio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/analogio/__init__.h b/shared-bindings/analogio/__init__.h index 284a95b6de8c..05ae726a8845 100644 --- a/shared-bindings/analogio/__init__.h +++ b/shared-bindings/analogio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ANALOGIO___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_ANALOGIO___INIT___H diff --git a/shared-bindings/atexit/__init__.c b/shared-bindings/atexit/__init__.c index b3fe1b6c014b..296fcf3148a7 100644 --- a/shared-bindings/atexit/__init__.c +++ b/shared-bindings/atexit/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include "shared-module/atexit/__init__.h" diff --git a/shared-bindings/audiobusio/I2SOut.c b/shared-bindings/audiobusio/I2SOut.c index e85cb098ee01..e97520521c57 100644 --- a/shared-bindings/audiobusio/I2SOut.c +++ b/shared-bindings/audiobusio/I2SOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/audiobusio/I2SOut.h b/shared-bindings/audiobusio/I2SOut.h index 4fa56b54728b..d76bf34f4bb5 100644 --- a/shared-bindings/audiobusio/I2SOut.h +++ b/shared-bindings/audiobusio/I2SOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017, 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017, 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOBUSIO_I2SOUT_H #define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOBUSIO_I2SOUT_H diff --git a/shared-bindings/audiobusio/PDMIn.c b/shared-bindings/audiobusio/PDMIn.c index 6051197a9b7b..cbf4ed2438f7 100644 --- a/shared-bindings/audiobusio/PDMIn.c +++ b/shared-bindings/audiobusio/PDMIn.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/audiobusio/PDMIn.h b/shared-bindings/audiobusio/PDMIn.h index 0516bce61975..6052608c2905 100644 --- a/shared-bindings/audiobusio/PDMIn.h +++ b/shared-bindings/audiobusio/PDMIn.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOBUSIO_AUDIOOUT_H #define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOBUSIO_AUDIOOUT_H diff --git a/shared-bindings/audiobusio/__init__.c b/shared-bindings/audiobusio/__init__.c index a7ae705170b4..ddfe641b4cf3 100644 --- a/shared-bindings/audiobusio/__init__.c +++ b/shared-bindings/audiobusio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/audiobusio/__init__.h b/shared-bindings/audiobusio/__init__.h index f7a0c3cf9da3..7bd805b65f55 100644 --- a/shared-bindings/audiobusio/__init__.h +++ b/shared-bindings/audiobusio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOBUSIO___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOBUSIO___INIT___H diff --git a/shared-bindings/audiocore/RawSample.c b/shared-bindings/audiocore/RawSample.c index 2e49f840939d..33390431b386 100644 --- a/shared-bindings/audiocore/RawSample.c +++ b/shared-bindings/audiocore/RawSample.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/audiocore/RawSample.h b/shared-bindings/audiocore/RawSample.h index 71056f30c377..301f7f4691d9 100644 --- a/shared-bindings/audiocore/RawSample.h +++ b/shared-bindings/audiocore/RawSample.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_RAWSAMPLE_H #define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_RAWSAMPLE_H diff --git a/shared-bindings/audiocore/WaveFile.c b/shared-bindings/audiocore/WaveFile.c index 88ded90cfa06..925b895d70b2 100644 --- a/shared-bindings/audiocore/WaveFile.c +++ b/shared-bindings/audiocore/WaveFile.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/audiocore/WaveFile.h b/shared-bindings/audiocore/WaveFile.h index 29140b4a2b6d..3910f0a0cbdd 100644 --- a/shared-bindings/audiocore/WaveFile.h +++ b/shared-bindings/audiocore/WaveFile.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_WAVEFILE_H #define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_WAVEFILE_H diff --git a/shared-bindings/audiocore/__init__.c b/shared-bindings/audiocore/__init__.c index 7a39a55366a0..2753fb24a229 100644 --- a/shared-bindings/audiocore/__init__.c +++ b/shared-bindings/audiocore/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/audiocore/__init__.h b/shared-bindings/audiocore/__init__.h index 02437cd1356c..7160d629b0e4 100644 --- a/shared-bindings/audiocore/__init__.h +++ b/shared-bindings/audiocore/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOCORE___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOCORE___INIT___H diff --git a/shared-bindings/audioio/AudioOut.c b/shared-bindings/audioio/AudioOut.c index a9676859c4ee..da49fd72324f 100644 --- a/shared-bindings/audioio/AudioOut.c +++ b/shared-bindings/audioio/AudioOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/audioio/AudioOut.h b/shared-bindings/audioio/AudioOut.h index 163d7848b47e..bca55dd0502f 100644 --- a/shared-bindings/audioio/AudioOut.h +++ b/shared-bindings/audioio/AudioOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_AUDIOOUT_H #define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_AUDIOOUT_H diff --git a/shared-bindings/audioio/__init__.c b/shared-bindings/audioio/__init__.c index 89778d8f82e4..286e505792be 100644 --- a/shared-bindings/audioio/__init__.c +++ b/shared-bindings/audioio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/audioio/__init__.h b/shared-bindings/audioio/__init__.h index e4b7067d118e..ab70b2fdc67d 100644 --- a/shared-bindings/audioio/__init__.h +++ b/shared-bindings/audioio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO___INIT___H diff --git a/shared-bindings/audiomixer/Mixer.c b/shared-bindings/audiomixer/Mixer.c index c891e70722a3..fbd60ec90c56 100644 --- a/shared-bindings/audiomixer/Mixer.c +++ b/shared-bindings/audiomixer/Mixer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/audiomixer/Mixer.h" #include "shared-bindings/audiomixer/MixerVoice.h" #include "shared-module/audiomixer/MixerVoice.h" diff --git a/shared-bindings/audiomixer/Mixer.h b/shared-bindings/audiomixer/Mixer.h index d04f793ddec7..220ccdc29c9a 100644 --- a/shared-bindings/audiomixer/Mixer.h +++ b/shared-bindings/audiomixer/Mixer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOMIXER_MIXER_H #define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOMIXER_MIXER_H diff --git a/shared-bindings/audiomixer/MixerVoice.c b/shared-bindings/audiomixer/MixerVoice.c index f4285b2f43bf..2aad6584b657 100644 --- a/shared-bindings/audiomixer/MixerVoice.c +++ b/shared-bindings/audiomixer/MixerVoice.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 DeanM for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 DeanM for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/audiomixer/Mixer.h" #include "shared-bindings/audiomixer/MixerVoice.h" diff --git a/shared-bindings/audiomixer/MixerVoice.h b/shared-bindings/audiomixer/MixerVoice.h index 0ff8accee442..7143884caaee 100644 --- a/shared-bindings/audiomixer/MixerVoice.h +++ b/shared-bindings/audiomixer/MixerVoice.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 DeanM for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 DeanM for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef SHARED_BINDINGS_AUDIOMIXER_MIXERVOICE_H_ #define SHARED_BINDINGS_AUDIOMIXER_MIXERVOICE_H_ diff --git a/shared-bindings/audiomixer/__init__.c b/shared-bindings/audiomixer/__init__.c index 552cc55e0c12..bd9cf608b9f2 100644 --- a/shared-bindings/audiomixer/__init__.c +++ b/shared-bindings/audiomixer/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Michael Schroeder - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Michael Schroeder +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/audiomixer/__init__.h b/shared-bindings/audiomixer/__init__.h index 35a90441c467..acd371501702 100644 --- a/shared-bindings/audiomixer/__init__.h +++ b/shared-bindings/audiomixer/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Michael Schroeder - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Michael Schroeder +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOMIXER___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOMIXER___INIT___H diff --git a/shared-bindings/audiomp3/MP3Decoder.c b/shared-bindings/audiomp3/MP3Decoder.c index 18d17e1d2eed..88e7ed0cc44e 100644 --- a/shared-bindings/audiomp3/MP3Decoder.c +++ b/shared-bindings/audiomp3/MP3Decoder.c @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/audiomp3/MP3Decoder.h b/shared-bindings/audiomp3/MP3Decoder.h index e1f4fcff4ace..68166b54ae9e 100644 --- a/shared-bindings/audiomp3/MP3Decoder.h +++ b/shared-bindings/audiomp3/MP3Decoder.h @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_MP3FILE_H #define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_MP3FILE_H diff --git a/shared-bindings/audiomp3/__init__.c b/shared-bindings/audiomp3/__init__.c index 09a3d4f88606..58fa9dfa10a5 100644 --- a/shared-bindings/audiomp3/__init__.c +++ b/shared-bindings/audiomp3/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/audiomp3/__init__.h b/shared-bindings/audiomp3/__init__.h index 9026af636892..c0cac5028b4d 100644 --- a/shared-bindings/audiomp3/__init__.h +++ b/shared-bindings/audiomp3/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOMP3___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOMP3___INIT___H diff --git a/shared-bindings/audiopwmio/PWMAudioOut.c b/shared-bindings/audiopwmio/PWMAudioOut.c index 1901794cdbbc..0314ab41aacb 100644 --- a/shared-bindings/audiopwmio/PWMAudioOut.c +++ b/shared-bindings/audiopwmio/PWMAudioOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/audiopwmio/PWMAudioOut.h b/shared-bindings/audiopwmio/PWMAudioOut.h index 15d1fa940cd7..4ed2f05d1354 100644 --- a/shared-bindings/audiopwmio/PWMAudioOut.h +++ b/shared-bindings/audiopwmio/PWMAudioOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOPWMIO_AUDIOOUT_H #define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOPWMIO_AUDIOOUT_H diff --git a/shared-bindings/audiopwmio/__init__.c b/shared-bindings/audiopwmio/__init__.c index f8d7c0e5cb5d..2f84aaae4028 100644 --- a/shared-bindings/audiopwmio/__init__.c +++ b/shared-bindings/audiopwmio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/audiopwmio/__init__.h b/shared-bindings/audiopwmio/__init__.h index d7956d31e6b4..73caa67437f8 100644 --- a/shared-bindings/audiopwmio/__init__.h +++ b/shared-bindings/audiopwmio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOPWMIO___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOPWMIO___INIT___H diff --git a/shared-bindings/bitbangio/I2C.c b/shared-bindings/bitbangio/I2C.c index 3ad15c3c8d53..5c03dcb40f61 100644 --- a/shared-bindings/bitbangio/I2C.c +++ b/shared-bindings/bitbangio/I2C.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT // This file contains all of the Python API definitions for the // bitbangio.I2C class. diff --git a/shared-bindings/bitbangio/I2C.h b/shared-bindings/bitbangio/I2C.h index d950180a2327..ba8d3747d9a1 100644 --- a/shared-bindings/bitbangio/I2C.h +++ b/shared-bindings/bitbangio/I2C.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BITBANGIO_I2C_H #define MICROPY_INCLUDED_SHARED_BINDINGS_BITBANGIO_I2C_H diff --git a/shared-bindings/bitbangio/SPI.c b/shared-bindings/bitbangio/SPI.c index 0310f06fc8d4..9682c8c6d915 100644 --- a/shared-bindings/bitbangio/SPI.c +++ b/shared-bindings/bitbangio/SPI.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT // This file contains all of the Python API definitions for the // bitbangio.SPI class. diff --git a/shared-bindings/bitbangio/SPI.h b/shared-bindings/bitbangio/SPI.h index 2d0d75e4075c..3385303d5b86 100644 --- a/shared-bindings/bitbangio/SPI.h +++ b/shared-bindings/bitbangio/SPI.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BITBANGIO_SPI_H #define MICROPY_INCLUDED_SHARED_BINDINGS_BITBANGIO_SPI_H diff --git a/shared-bindings/bitbangio/__init__.c b/shared-bindings/bitbangio/__init__.c index 99bf6d26a77c..89f75a085835 100644 --- a/shared-bindings/bitbangio/__init__.c +++ b/shared-bindings/bitbangio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT // bitbangio implements some standard protocols in the processor. Its only // dependency is digitalio. diff --git a/shared-bindings/bitbangio/__init__.h b/shared-bindings/bitbangio/__init__.h index 0e9206a441c0..e902cd3d559b 100644 --- a/shared-bindings/bitbangio/__init__.h +++ b/shared-bindings/bitbangio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BITBANGIO___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_BITBANGIO___INIT___H diff --git a/shared-bindings/bitmapfilter/__init__.c b/shared-bindings/bitmapfilter/__init__.c index e086c10a2916..d46852c15497 100644 --- a/shared-bindings/bitmapfilter/__init__.c +++ b/shared-bindings/bitmapfilter/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/bitmapfilter/__init__.h b/shared-bindings/bitmapfilter/__init__.h index bf4fc3a114b7..d1eb142a8b0e 100644 --- a/shared-bindings/bitmapfilter/__init__.h +++ b/shared-bindings/bitmapfilter/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/bitmaptools/__init__.c b/shared-bindings/bitmaptools/__init__.c index 710ff161a889..16735179c64d 100644 --- a/shared-bindings/bitmaptools/__init__.c +++ b/shared-bindings/bitmaptools/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Kevin Matocha - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Kevin Matocha +// +// SPDX-License-Identifier: MIT #include "shared-bindings/displayio/Bitmap.h" #include "shared-bindings/displayio/Palette.h" diff --git a/shared-bindings/bitmaptools/__init__.h b/shared-bindings/bitmaptools/__init__.h index bab95e8531d2..133ba97458d7 100644 --- a/shared-bindings/bitmaptools/__init__.h +++ b/shared-bindings/bitmaptools/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Kevin Matocha - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Kevin Matocha +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BITMAPTOOLS__INIT__H #define MICROPY_INCLUDED_SHARED_BINDINGS_BITMAPTOOLS__INIT__H diff --git a/shared-bindings/bitops/__init__.c b/shared-bindings/bitops/__init__.c index 3c21a10a190a..9aabfb5f4f59 100644 --- a/shared-bindings/bitops/__init__.c +++ b/shared-bindings/bitops/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the CircuitPython project, https://github.com/adafruit/circuitpython - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/runtime.h" diff --git a/shared-bindings/bitops/__init__.h b/shared-bindings/bitops/__init__.h index 4d61d5285a2c..f25b330bf9da 100644 --- a/shared-bindings/bitops/__init__.h +++ b/shared-bindings/bitops/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the CircuitPython project, https://github.com/adafruit/circuitpython - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/board/__init__.c b/shared-bindings/board/__init__.c index c7d2a399cf1f..ba257032ad67 100644 --- a/shared-bindings/board/__init__.c +++ b/shared-bindings/board/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/runtime.h" diff --git a/shared-bindings/board/__init__.h b/shared-bindings/board/__init__.h index b668e0a04b9f..be7544411432 100644 --- a/shared-bindings/board/__init__.h +++ b/shared-bindings/board/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BOARD___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_BOARD___INIT___H diff --git a/shared-bindings/busdisplay/BusDisplay.c b/shared-bindings/busdisplay/BusDisplay.c index d70dd03b8297..0247010f4f29 100644 --- a/shared-bindings/busdisplay/BusDisplay.c +++ b/shared-bindings/busdisplay/BusDisplay.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/busdisplay/BusDisplay.h" diff --git a/shared-bindings/busdisplay/BusDisplay.h b/shared-bindings/busdisplay/BusDisplay.h index 2b2b53767236..7bab9ab3762d 100644 --- a/shared-bindings/busdisplay/BusDisplay.h +++ b/shared-bindings/busdisplay/BusDisplay.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017, 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017, 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/busdisplay/__init__.c b/shared-bindings/busdisplay/__init__.c index 3b93e07c2654..2751f70bb2ab 100644 --- a/shared-bindings/busdisplay/__init__.c +++ b/shared-bindings/busdisplay/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/busdisplay/__init__.h b/shared-bindings/busdisplay/__init__.h index f7b42875a18f..70cc2d4786f3 100644 --- a/shared-bindings/busdisplay/__init__.h +++ b/shared-bindings/busdisplay/__init__.h @@ -1,27 +1,7 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/busio/I2C.c b/shared-bindings/busio/I2C.c index 050e72099d2e..ca22f048faaf 100644 --- a/shared-bindings/busio/I2C.c +++ b/shared-bindings/busio/I2C.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT // This file contains all of the Python API definitions for the // busio.I2C class. diff --git a/shared-bindings/busio/I2C.h b/shared-bindings/busio/I2C.h index 434303bbb089..da505436b086 100644 --- a/shared-bindings/busio/I2C.h +++ b/shared-bindings/busio/I2C.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/busio/SPI.c b/shared-bindings/busio/SPI.c index bf2af123c9a3..42dc9389c8c4 100644 --- a/shared-bindings/busio/SPI.c +++ b/shared-bindings/busio/SPI.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT // This file contains all of the Python API definitions for the // busio.SPI class. diff --git a/shared-bindings/busio/SPI.h b/shared-bindings/busio/SPI.h index 3b8f831219e9..0d6210ab79a7 100644 --- a/shared-bindings/busio/SPI.h +++ b/shared-bindings/busio/SPI.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO_SPI_H #define MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO_SPI_H diff --git a/shared-bindings/busio/UART.c b/shared-bindings/busio/UART.c index d764ea8f2ec6..9e4f09d9cbc1 100644 --- a/shared-bindings/busio/UART.c +++ b/shared-bindings/busio/UART.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/busio/UART.h b/shared-bindings/busio/UART.h index 31b062aee557..c14511cac33d 100644 --- a/shared-bindings/busio/UART.h +++ b/shared-bindings/busio/UART.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO_UART_H #define MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO_UART_H diff --git a/shared-bindings/busio/__init__.c b/shared-bindings/busio/__init__.c index 7976d1ed9e04..a491ae080219 100644 --- a/shared-bindings/busio/__init__.c +++ b/shared-bindings/busio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/busio/__init__.h b/shared-bindings/busio/__init__.h index bcea30504ba7..64db62571ecd 100644 --- a/shared-bindings/busio/__init__.h +++ b/shared-bindings/busio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO___INIT___H diff --git a/shared-bindings/camera/Camera.c b/shared-bindings/camera/Camera.c index 39a415721798..449d0aec7e90 100644 --- a/shared-bindings/camera/Camera.c +++ b/shared-bindings/camera/Camera.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2020 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2020 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" diff --git a/shared-bindings/camera/Camera.h b/shared-bindings/camera/Camera.h index 8102672e49ff..95372804f4e0 100644 --- a/shared-bindings/camera/Camera.h +++ b/shared-bindings/camera/Camera.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2020 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2020 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_CAMERA_CAMERA_H #define MICROPY_INCLUDED_SHARED_BINDINGS_CAMERA_CAMERA_H diff --git a/shared-bindings/camera/ImageFormat.c b/shared-bindings/camera/ImageFormat.c index 0bf29bb18487..9fc290cd2e8e 100644 --- a/shared-bindings/camera/ImageFormat.c +++ b/shared-bindings/camera/ImageFormat.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2020 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2020 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #include "shared-bindings/camera/ImageFormat.h" diff --git a/shared-bindings/camera/ImageFormat.h b/shared-bindings/camera/ImageFormat.h index 32a36354fc5b..b733449e93b6 100644 --- a/shared-bindings/camera/ImageFormat.h +++ b/shared-bindings/camera/ImageFormat.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2020 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2020 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_CAMERA_IMAGEFORMAT_H #define MICROPY_INCLUDED_SHARED_BINDINGS_CAMERA_IMAGEFORMAT_H diff --git a/shared-bindings/camera/__init__.c b/shared-bindings/camera/__init__.c index a2b15933c448..96a97710f0f3 100644 --- a/shared-bindings/camera/__init__.c +++ b/shared-bindings/camera/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright 2020 Sony Semiconductor Solutions Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright 2020 Sony Semiconductor Solutions Corporation +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/runtime.h" diff --git a/shared-bindings/canio/CAN.c b/shared-bindings/canio/CAN.c index 2d0af0dc3899..a9c8de064141 100644 --- a/shared-bindings/canio/CAN.c +++ b/shared-bindings/canio/CAN.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/enum.h" #include "common-hal/canio/CAN.h" diff --git a/shared-bindings/canio/CAN.h b/shared-bindings/canio/CAN.h index b25d2fd68b86..cb795315346b 100644 --- a/shared-bindings/canio/CAN.h +++ b/shared-bindings/canio/CAN.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/canio/Listener.c b/shared-bindings/canio/Listener.c index 1a806d083c0e..9c0840e6293a 100644 --- a/shared-bindings/canio/Listener.c +++ b/shared-bindings/canio/Listener.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/canio/Listener.h" #include "shared-bindings/canio/Message.h" diff --git a/shared-bindings/canio/Listener.h b/shared-bindings/canio/Listener.h index 527ffe4cbb40..7396ee652582 100644 --- a/shared-bindings/canio/Listener.h +++ b/shared-bindings/canio/Listener.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/canio/Match.c b/shared-bindings/canio/Match.c index 537121e47ff2..376da69d5ca8 100644 --- a/shared-bindings/canio/Match.c +++ b/shared-bindings/canio/Match.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/canio/Match.h" diff --git a/shared-bindings/canio/Match.h b/shared-bindings/canio/Match.h index 01a75fd1c666..edfb5aac2538 100644 --- a/shared-bindings/canio/Match.h +++ b/shared-bindings/canio/Match.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/canio/Message.c b/shared-bindings/canio/Message.c index 7f52e9934635..6f4acd4adbd4 100644 --- a/shared-bindings/canio/Message.c +++ b/shared-bindings/canio/Message.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/canio/Message.h" diff --git a/shared-bindings/canio/Message.h b/shared-bindings/canio/Message.h index b76535939bdf..0d9b9dcfdffb 100644 --- a/shared-bindings/canio/Message.h +++ b/shared-bindings/canio/Message.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/canio/RemoteTransmissionRequest.c b/shared-bindings/canio/RemoteTransmissionRequest.c index a60463b66529..cb7ad2c5d264 100644 --- a/shared-bindings/canio/RemoteTransmissionRequest.c +++ b/shared-bindings/canio/RemoteTransmissionRequest.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/canio/RemoteTransmissionRequest.h" diff --git a/shared-bindings/canio/RemoteTransmissionRequest.h b/shared-bindings/canio/RemoteTransmissionRequest.h index 8956587b3ae7..c03f986b94a7 100644 --- a/shared-bindings/canio/RemoteTransmissionRequest.h +++ b/shared-bindings/canio/RemoteTransmissionRequest.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/canio/__init__.c b/shared-bindings/canio/__init__.c index 66cdbeb3e522..5f3685580af2 100644 --- a/shared-bindings/canio/__init__.c +++ b/shared-bindings/canio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT //| """CAN bus access //| diff --git a/shared-bindings/canio/__init__.h b/shared-bindings/canio/__init__.h index e24eba92c11a..966a8a459204 100644 --- a/shared-bindings/canio/__init__.h +++ b/shared-bindings/canio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/codeop/__init__.c b/shared-bindings/codeop/__init__.c index b1f1604e676b..df215d3bc1a4 100644 --- a/shared-bindings/codeop/__init__.c +++ b/shared-bindings/codeop/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include "py/builtin.h" diff --git a/shared-bindings/countio/Counter.c b/shared-bindings/countio/Counter.c index 62387464ac2d..a25ae2d9e6b6 100644 --- a/shared-bindings/countio/Counter.c +++ b/shared-bindings/countio/Counter.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 by Daniel Pollard - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 by Daniel Pollard +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/countio/Counter.h b/shared-bindings/countio/Counter.h index 75b797b804c1..d9b3c9f0e043 100644 --- a/shared-bindings/countio/Counter.h +++ b/shared-bindings/countio/Counter.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 by Daniel Pollard - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 by Daniel Pollard +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_COUNTIO_COUNTER_H #define MICROPY_INCLUDED_SHARED_BINDINGS_COUNTIO_COUNTER_H diff --git a/shared-bindings/countio/Edge.c b/shared-bindings/countio/Edge.c index 9b8e74304b5e..b2379e42edd7 100644 --- a/shared-bindings/countio/Edge.c +++ b/shared-bindings/countio/Edge.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/enum.h" diff --git a/shared-bindings/countio/Edge.h b/shared-bindings/countio/Edge.h index 86112fb4a3ee..7a34bea6a193 100644 --- a/shared-bindings/countio/Edge.h +++ b/shared-bindings/countio/Edge.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_COUNTIO_EDGE_H #define MICROPY_INCLUDED_SHARED_BINDINGS_COUNTIO_EDGE_H diff --git a/shared-bindings/countio/__init__.c b/shared-bindings/countio/__init__.c index 022dcb44383b..a7ded118f850 100644 --- a/shared-bindings/countio/__init__.c +++ b/shared-bindings/countio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 by Daniel Pollard - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 by Daniel Pollard +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/countio/__init__.h b/shared-bindings/countio/__init__.h index 0853232726c4..b8d553d62fec 100644 --- a/shared-bindings/countio/__init__.h +++ b/shared-bindings/countio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 by Daniel Pollard - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 by Daniel Pollard +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_COUNTIO___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_COUNTIO___INIT___H diff --git a/shared-bindings/digitalio/DigitalInOut.c b/shared-bindings/digitalio/DigitalInOut.c index af996e538b91..50360fdd12d3 100644 --- a/shared-bindings/digitalio/DigitalInOut.c +++ b/shared-bindings/digitalio/DigitalInOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// +// SPDX-License-Identifier: MIT #include #include diff --git a/shared-bindings/digitalio/DigitalInOut.h b/shared-bindings/digitalio/DigitalInOut.h index 79a700c9059c..d1d8efbfa6d8 100644 --- a/shared-bindings/digitalio/DigitalInOut.h +++ b/shared-bindings/digitalio/DigitalInOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DIGITALIO_DIGITALINOUT_H #define MICROPY_INCLUDED_SHARED_BINDINGS_DIGITALIO_DIGITALINOUT_H diff --git a/shared-bindings/digitalio/Direction.c b/shared-bindings/digitalio/Direction.c index a9cca3441ffa..242b10115dea 100644 --- a/shared-bindings/digitalio/Direction.c +++ b/shared-bindings/digitalio/Direction.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/shared-bindings/digitalio/Direction.h b/shared-bindings/digitalio/Direction.h index 17e1eda8db5c..8f2c884942d8 100644 --- a/shared-bindings/digitalio/Direction.h +++ b/shared-bindings/digitalio/Direction.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DIGITALIO_DIRECTION_H #define MICROPY_INCLUDED_SHARED_BINDINGS_DIGITALIO_DIRECTION_H diff --git a/shared-bindings/digitalio/DriveMode.c b/shared-bindings/digitalio/DriveMode.c index c7cde494c860..56410f03461d 100644 --- a/shared-bindings/digitalio/DriveMode.c +++ b/shared-bindings/digitalio/DriveMode.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/digitalio/DriveMode.h" diff --git a/shared-bindings/digitalio/DriveMode.h b/shared-bindings/digitalio/DriveMode.h index 01ecaa4ae9de..7ff8f9f673ee 100644 --- a/shared-bindings/digitalio/DriveMode.h +++ b/shared-bindings/digitalio/DriveMode.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DIGITALIO_DRIVEMODE_H #define MICROPY_INCLUDED_SHARED_BINDINGS_DIGITALIO_DRIVEMODE_H diff --git a/shared-bindings/digitalio/Pull.c b/shared-bindings/digitalio/Pull.c index a8cce81a33b1..e4d74afe2749 100644 --- a/shared-bindings/digitalio/Pull.c +++ b/shared-bindings/digitalio/Pull.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" #include "shared-bindings/digitalio/Pull.h" diff --git a/shared-bindings/digitalio/Pull.h b/shared-bindings/digitalio/Pull.h index f4f6c4269061..f027a82e425d 100644 --- a/shared-bindings/digitalio/Pull.h +++ b/shared-bindings/digitalio/Pull.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DIGITALIO_PULL_H #define MICROPY_INCLUDED_SHARED_BINDINGS_DIGITALIO_PULL_H diff --git a/shared-bindings/digitalio/__init__.c b/shared-bindings/digitalio/__init__.c index 938b7df754ab..cc7a705534e3 100644 --- a/shared-bindings/digitalio/__init__.c +++ b/shared-bindings/digitalio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/digitalio/__init__.h b/shared-bindings/digitalio/__init__.h index 8ab7f789e703..186c5bcefa7c 100644 --- a/shared-bindings/digitalio/__init__.h +++ b/shared-bindings/digitalio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DIGITALIO___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_DIGITALIO___INIT___H diff --git a/shared-bindings/displayio/Bitmap.c b/shared-bindings/displayio/Bitmap.c index e266bf9ca5a6..f7e40a27bf4b 100644 --- a/shared-bindings/displayio/Bitmap.c +++ b/shared-bindings/displayio/Bitmap.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/displayio/Bitmap.h" #include "shared-module/displayio/Bitmap.h" diff --git a/shared-bindings/displayio/Bitmap.h b/shared-bindings/displayio/Bitmap.h index 8f30b3a330c7..4d0789b24e39 100644 --- a/shared-bindings/displayio/Bitmap.h +++ b/shared-bindings/displayio/Bitmap.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_BITMAP_H #define MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_BITMAP_H diff --git a/shared-bindings/displayio/ColorConverter.c b/shared-bindings/displayio/ColorConverter.c index ef863162a3f3..6f2342b28426 100644 --- a/shared-bindings/displayio/ColorConverter.c +++ b/shared-bindings/displayio/ColorConverter.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/displayio/ColorConverter.h" diff --git a/shared-bindings/displayio/ColorConverter.h b/shared-bindings/displayio/ColorConverter.h index 12fa8da20f3f..0bd38403d9dd 100644 --- a/shared-bindings/displayio/ColorConverter.h +++ b/shared-bindings/displayio/ColorConverter.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_COLORCONVERTER_H #define MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_COLORCONVERTER_H diff --git a/shared-bindings/displayio/Colorspace.c b/shared-bindings/displayio/Colorspace.c index 3692dc29bcca..4b3c589d2042 100644 --- a/shared-bindings/displayio/Colorspace.c +++ b/shared-bindings/displayio/Colorspace.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/enum.h" #include "py/obj.h" diff --git a/shared-bindings/displayio/Group.c b/shared-bindings/displayio/Group.c index 063f2c98a28d..17748b872b6d 100644 --- a/shared-bindings/displayio/Group.c +++ b/shared-bindings/displayio/Group.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/displayio/Group.h" diff --git a/shared-bindings/displayio/Group.h b/shared-bindings/displayio/Group.h index 266fce959cb5..43b4dd60a17c 100644 --- a/shared-bindings/displayio/Group.h +++ b/shared-bindings/displayio/Group.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_GROUP_H #define MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_GROUP_H diff --git a/shared-bindings/displayio/OnDiskBitmap.c b/shared-bindings/displayio/OnDiskBitmap.c index 205c70e998f4..e9e281ebbb96 100644 --- a/shared-bindings/displayio/OnDiskBitmap.c +++ b/shared-bindings/displayio/OnDiskBitmap.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/displayio/OnDiskBitmap.h" diff --git a/shared-bindings/displayio/OnDiskBitmap.h b/shared-bindings/displayio/OnDiskBitmap.h index 6d534ec50e67..80edea7b65a9 100644 --- a/shared-bindings/displayio/OnDiskBitmap.h +++ b/shared-bindings/displayio/OnDiskBitmap.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_ONDISKBITMAP_H #define MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_ONDISKBITMAP_H diff --git a/shared-bindings/displayio/Palette.c b/shared-bindings/displayio/Palette.c index 8dbde1568f45..58b498018758 100644 --- a/shared-bindings/displayio/Palette.c +++ b/shared-bindings/displayio/Palette.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/displayio/Palette.h" diff --git a/shared-bindings/displayio/Palette.h b/shared-bindings/displayio/Palette.h index 2cc7417fe3ca..89340a990b96 100644 --- a/shared-bindings/displayio/Palette.h +++ b/shared-bindings/displayio/Palette.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_PALETTE_H #define MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_PALETTE_H diff --git a/shared-bindings/displayio/TileGrid.c b/shared-bindings/displayio/TileGrid.c index fb9e69b03210..ecaf40b1d297 100644 --- a/shared-bindings/displayio/TileGrid.c +++ b/shared-bindings/displayio/TileGrid.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/displayio/TileGrid.h" diff --git a/shared-bindings/displayio/TileGrid.h b/shared-bindings/displayio/TileGrid.h index fb56ba6101f3..9c3d8966de40 100644 --- a/shared-bindings/displayio/TileGrid.h +++ b/shared-bindings/displayio/TileGrid.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_TILEGRID_H #define MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_TILEGRID_H diff --git a/shared-bindings/displayio/__init__.c b/shared-bindings/displayio/__init__.c index 1b151fb8c638..db36b5e0c2d9 100644 --- a/shared-bindings/displayio/__init__.c +++ b/shared-bindings/displayio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/displayio/__init__.h b/shared-bindings/displayio/__init__.h index 7f6c280e1ac8..33987ebe38ae 100644 --- a/shared-bindings/displayio/__init__.h +++ b/shared-bindings/displayio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/displayio/area.c b/shared-bindings/displayio/area.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-bindings/displayio/area.c +++ b/shared-bindings/displayio/area.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-bindings/dotclockframebuffer/DotClockFramebuffer.c b/shared-bindings/dotclockframebuffer/DotClockFramebuffer.c index 899fccf68a3a..e423cd61a61a 100644 --- a/shared-bindings/dotclockframebuffer/DotClockFramebuffer.c +++ b/shared-bindings/dotclockframebuffer/DotClockFramebuffer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/dotclockframebuffer/DotClockFramebuffer.h" diff --git a/shared-bindings/dotclockframebuffer/DotClockFramebuffer.h b/shared-bindings/dotclockframebuffer/DotClockFramebuffer.h index 0f99d2017e20..8b5fb69e0141 100644 --- a/shared-bindings/dotclockframebuffer/DotClockFramebuffer.h +++ b/shared-bindings/dotclockframebuffer/DotClockFramebuffer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/dotclockframebuffer/__init__.c b/shared-bindings/dotclockframebuffer/__init__.c index 30f4022d0f01..b9af98cf5ce3 100644 --- a/shared-bindings/dotclockframebuffer/__init__.c +++ b/shared-bindings/dotclockframebuffer/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/dotclockframebuffer/__init__.h b/shared-bindings/dotclockframebuffer/__init__.h index 864eac35731a..0621f57f63ec 100644 --- a/shared-bindings/dotclockframebuffer/__init__.h +++ b/shared-bindings/dotclockframebuffer/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/dualbank/__init__.c b/shared-bindings/dualbank/__init__.c index 31cdd741b836..78f7feab285e 100644 --- a/shared-bindings/dualbank/__init__.c +++ b/shared-bindings/dualbank/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #include "shared-bindings/dualbank/__init__.h" diff --git a/shared-bindings/dualbank/__init__.h b/shared-bindings/dualbank/__init__.h index 7edbc6d68afd..f40529f6cb41 100644 --- a/shared-bindings/dualbank/__init__.h +++ b/shared-bindings/dualbank/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 microDev +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DUALBANK___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_DUALBANK___INIT___H diff --git a/shared-bindings/epaperdisplay/EPaperDisplay.c b/shared-bindings/epaperdisplay/EPaperDisplay.c index 4ffdc452b223..19a3568f0564 100644 --- a/shared-bindings/epaperdisplay/EPaperDisplay.c +++ b/shared-bindings/epaperdisplay/EPaperDisplay.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/epaperdisplay/EPaperDisplay.h" diff --git a/shared-bindings/epaperdisplay/EPaperDisplay.h b/shared-bindings/epaperdisplay/EPaperDisplay.h index 7c780326db05..d4475e0a6aa4 100644 --- a/shared-bindings/epaperdisplay/EPaperDisplay.h +++ b/shared-bindings/epaperdisplay/EPaperDisplay.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/epaperdisplay/__init__.c b/shared-bindings/epaperdisplay/__init__.c index e7ad194353be..f657e3e665c7 100644 --- a/shared-bindings/epaperdisplay/__init__.c +++ b/shared-bindings/epaperdisplay/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/epaperdisplay/__init__.h b/shared-bindings/epaperdisplay/__init__.h index f7b42875a18f..70cc2d4786f3 100644 --- a/shared-bindings/epaperdisplay/__init__.h +++ b/shared-bindings/epaperdisplay/__init__.h @@ -1,27 +1,7 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/floppyio/__init__.c b/shared-bindings/floppyio/__init__.c index 4338fbf6158a..2982981e9e36 100644 --- a/shared-bindings/floppyio/__init__.c +++ b/shared-bindings/floppyio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/floppyio/__init__.h" #if CIRCUITPY_DIGITALIO diff --git a/shared-bindings/floppyio/__init__.h b/shared-bindings/floppyio/__init__.h index 54079ee025f6..5eda23675543 100644 --- a/shared-bindings/floppyio/__init__.h +++ b/shared-bindings/floppyio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/fontio/BuiltinFont.c b/shared-bindings/fontio/BuiltinFont.c index 7b6571890313..ca31198a0756 100644 --- a/shared-bindings/fontio/BuiltinFont.c +++ b/shared-bindings/fontio/BuiltinFont.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/fontio/BuiltinFont.h" diff --git a/shared-bindings/fontio/BuiltinFont.h b/shared-bindings/fontio/BuiltinFont.h index e87445e6b2ca..233b426cccd2 100644 --- a/shared-bindings/fontio/BuiltinFont.h +++ b/shared-bindings/fontio/BuiltinFont.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_FONTIO_BUILTINFONT_H #define MICROPY_INCLUDED_SHARED_BINDINGS_FONTIO_BUILTINFONT_H diff --git a/shared-bindings/fontio/Glyph.c b/shared-bindings/fontio/Glyph.c index 4fc3a12b927e..009fcb060603 100644 --- a/shared-bindings/fontio/Glyph.c +++ b/shared-bindings/fontio/Glyph.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/fontio/Glyph.h" diff --git a/shared-bindings/fontio/Glyph.h b/shared-bindings/fontio/Glyph.h index c58d812dd87d..395705629c90 100644 --- a/shared-bindings/fontio/Glyph.h +++ b/shared-bindings/fontio/Glyph.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_FONTIO_GLYPH_H #define MICROPY_INCLUDED_SHARED_BINDINGS_FONTIO_GLYPH_H diff --git a/shared-bindings/fontio/__init__.c b/shared-bindings/fontio/__init__.c index d988ceda7f8e..648dcfada9d9 100644 --- a/shared-bindings/fontio/__init__.c +++ b/shared-bindings/fontio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/fontio/__init__.h b/shared-bindings/fontio/__init__.h index 209919777db8..2e8a436b505d 100644 --- a/shared-bindings/fontio/__init__.h +++ b/shared-bindings/fontio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_FONTIO___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_FONTIO___INIT___H diff --git a/shared-bindings/fourwire/FourWire.c b/shared-bindings/fourwire/FourWire.c index 9986e1ac2206..5d62ba311aa3 100644 --- a/shared-bindings/fourwire/FourWire.c +++ b/shared-bindings/fourwire/FourWire.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018-2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018-2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/fourwire/FourWire.h" diff --git a/shared-bindings/fourwire/FourWire.h b/shared-bindings/fourwire/FourWire.h index aadd2b607823..515a466b4b98 100644 --- a/shared-bindings/fourwire/FourWire.h +++ b/shared-bindings/fourwire/FourWire.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017, 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017, 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/fourwire/__init__.c b/shared-bindings/fourwire/__init__.c index d6f8b86528fd..6e952363b052 100644 --- a/shared-bindings/fourwire/__init__.c +++ b/shared-bindings/fourwire/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/fourwire/__init__.h b/shared-bindings/fourwire/__init__.h index 253132b64eec..2ca8d334957a 100644 --- a/shared-bindings/fourwire/__init__.h +++ b/shared-bindings/fourwire/__init__.h @@ -1,27 +1,7 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/framebufferio/FramebufferDisplay.c b/shared-bindings/framebufferio/FramebufferDisplay.c index 3e0c75cd742c..cef206da35a7 100644 --- a/shared-bindings/framebufferio/FramebufferDisplay.c +++ b/shared-bindings/framebufferio/FramebufferDisplay.c @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/framebufferio/FramebufferDisplay.h" diff --git a/shared-bindings/framebufferio/FramebufferDisplay.h b/shared-bindings/framebufferio/FramebufferDisplay.h index 87f57b0aaaa8..ce0b5bd3755d 100644 --- a/shared-bindings/framebufferio/FramebufferDisplay.h +++ b/shared-bindings/framebufferio/FramebufferDisplay.h @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017, 2018 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017, 2018 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_FRAMEBUFFERDISPLAY_H #define MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_FRAMEBUFFERDISPLAY_H diff --git a/shared-bindings/framebufferio/__init__.c b/shared-bindings/framebufferio/__init__.c index 739c26f17134..b53571de22cc 100644 --- a/shared-bindings/framebufferio/__init__.c +++ b/shared-bindings/framebufferio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "shared-bindings/framebufferio/__init__.h" diff --git a/shared-bindings/framebufferio/__init__.h b/shared-bindings/framebufferio/__init__.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-bindings/framebufferio/__init__.h +++ b/shared-bindings/framebufferio/__init__.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-bindings/frequencyio/FrequencyIn.c b/shared-bindings/frequencyio/FrequencyIn.c index 250a31ce5bad..11feb4545f4f 100644 --- a/shared-bindings/frequencyio/FrequencyIn.c +++ b/shared-bindings/frequencyio/FrequencyIn.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Michael Schroeder - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Michael Schroeder +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/frequencyio/FrequencyIn.h b/shared-bindings/frequencyio/FrequencyIn.h index dba6c3a66128..656f6859d247 100644 --- a/shared-bindings/frequencyio/FrequencyIn.h +++ b/shared-bindings/frequencyio/FrequencyIn.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Michael Schroeder - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Michael Schroeder +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_FREQUENCYIO_FREQUENCYIN_H #define MICROPY_INCLUDED_SHARED_BINDINGS_FREQUENCYIO_FREQUENCYIN_H diff --git a/shared-bindings/frequencyio/__init__.c b/shared-bindings/frequencyio/__init__.c index 80b60651de9a..05ea811c5dea 100644 --- a/shared-bindings/frequencyio/__init__.c +++ b/shared-bindings/frequencyio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Michael Schroeder - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Michael Schroeder +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/frequencyio/__init__.h b/shared-bindings/frequencyio/__init__.h index 39157659440f..02b30030c798 100644 --- a/shared-bindings/frequencyio/__init__.h +++ b/shared-bindings/frequencyio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Michael Schroeder - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Michael Schroeder +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_FREQUENCYIO___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_FREQUENCYIO___INIT___H diff --git a/shared-bindings/getpass/__init__.c b/shared-bindings/getpass/__init__.c index b6ff97fc7819..adbd728512c6 100644 --- a/shared-bindings/getpass/__init__.c +++ b/shared-bindings/getpass/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include "py/stream.h" #include "shared-module/getpass/__init__.h" diff --git a/shared-bindings/gifio/GifWriter.c b/shared-bindings/gifio/GifWriter.c index 6ce3dea69ab6..fc6fa3115596 100644 --- a/shared-bindings/gifio/GifWriter.c +++ b/shared-bindings/gifio/GifWriter.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #if MICROPY_VFS diff --git a/shared-bindings/gifio/GifWriter.h b/shared-bindings/gifio/GifWriter.h index 601bd7867907..920605eebb79 100644 --- a/shared-bindings/gifio/GifWriter.h +++ b/shared-bindings/gifio/GifWriter.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" diff --git a/shared-bindings/gifio/OnDiskGif.c b/shared-bindings/gifio/OnDiskGif.c index 103c1eb3a55a..ea20a38b1d85 100644 --- a/shared-bindings/gifio/OnDiskGif.c +++ b/shared-bindings/gifio/OnDiskGif.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Mark Komus - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Mark Komus +// +// SPDX-License-Identifier: MIT #include "shared-bindings/gifio/OnDiskGif.h" diff --git a/shared-bindings/gifio/OnDiskGif.h b/shared-bindings/gifio/OnDiskGif.h index deaa63968574..5a2dc876f5cb 100644 --- a/shared-bindings/gifio/OnDiskGif.h +++ b/shared-bindings/gifio/OnDiskGif.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Mark Komus - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Mark Komus +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_ONDISKGIF_H #define MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_ONDISKGIF_H diff --git a/shared-bindings/gifio/__init__.c b/shared-bindings/gifio/__init__.c index 7691a6cedb67..30998e1d14f2 100644 --- a/shared-bindings/gifio/__init__.c +++ b/shared-bindings/gifio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/runtime.h" #include "py/mphal.h" diff --git a/shared-bindings/gifio/__init__.h b/shared-bindings/gifio/__init__.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-bindings/gifio/__init__.h +++ b/shared-bindings/gifio/__init__.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-bindings/hashlib/Hash.c b/shared-bindings/hashlib/Hash.c index 3d1e09479429..a26636c28016 100644 --- a/shared-bindings/hashlib/Hash.c +++ b/shared-bindings/hashlib/Hash.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/hashlib/Hash.h" diff --git a/shared-bindings/hashlib/Hash.h b/shared-bindings/hashlib/Hash.h index a26c9bad9830..ceac92158797 100644 --- a/shared-bindings/hashlib/Hash.h +++ b/shared-bindings/hashlib/Hash.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_HASHLIB_HASH_H #define MICROPY_INCLUDED_SHARED_BINDINGS_HASHLIB_HASH_H diff --git a/shared-bindings/hashlib/__init__.c b/shared-bindings/hashlib/__init__.c index cf0f3c3c3677..6b256cc436c6 100644 --- a/shared-bindings/hashlib/__init__.c +++ b/shared-bindings/hashlib/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/hashlib/__init__.h b/shared-bindings/hashlib/__init__.h index ae47b546a428..811e370f0105 100644 --- a/shared-bindings/hashlib/__init__.h +++ b/shared-bindings/hashlib/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_HASHLIB___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_HASHLIB___INIT___H diff --git a/shared-bindings/help.rst b/shared-bindings/help.rst index ccc3790a5a3a..8eaf18d5e080 100644 --- a/shared-bindings/help.rst +++ b/shared-bindings/help.rst @@ -1,26 +1,8 @@ -.. This file is part of the MicroPython project, http://micropython.org/ +.. This file is part of the CircuitPython project, https://circuitpython.org/ - The MIT License (MIT) + SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. + SPDX-License-Identifier: MIT :func:`help` -- Built-in method to provide helpful information ============================================================== diff --git a/shared-bindings/i2cdisplaybus/I2CDisplayBus.c b/shared-bindings/i2cdisplaybus/I2CDisplayBus.c index 7f14817be457..d4e2f1d4832c 100644 --- a/shared-bindings/i2cdisplaybus/I2CDisplayBus.c +++ b/shared-bindings/i2cdisplaybus/I2CDisplayBus.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/i2cdisplaybus/I2CDisplayBus.h" diff --git a/shared-bindings/i2cdisplaybus/I2CDisplayBus.h b/shared-bindings/i2cdisplaybus/I2CDisplayBus.h index 0d015b2f2d64..55b8590ac5b2 100644 --- a/shared-bindings/i2cdisplaybus/I2CDisplayBus.h +++ b/shared-bindings/i2cdisplaybus/I2CDisplayBus.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017, 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017, 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/i2cdisplaybus/__init__.c b/shared-bindings/i2cdisplaybus/__init__.c index e7cdd11729da..f1a622a5f970 100644 --- a/shared-bindings/i2cdisplaybus/__init__.c +++ b/shared-bindings/i2cdisplaybus/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/i2cdisplaybus/__init__.h b/shared-bindings/i2cdisplaybus/__init__.h index f7b42875a18f..70cc2d4786f3 100644 --- a/shared-bindings/i2cdisplaybus/__init__.h +++ b/shared-bindings/i2cdisplaybus/__init__.h @@ -1,27 +1,7 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/i2ctarget/I2CTarget.c b/shared-bindings/i2ctarget/I2CTarget.c index ff93b74f9b03..fcc63c376894 100644 --- a/shared-bindings/i2ctarget/I2CTarget.c +++ b/shared-bindings/i2ctarget/I2CTarget.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Noralf Trønnes - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Noralf Trønnes +// +// SPDX-License-Identifier: MIT #include "shared-bindings/microcontroller/Pin.h" #include "shared-bindings/i2ctarget/I2CTarget.h" diff --git a/shared-bindings/i2ctarget/I2CTarget.h b/shared-bindings/i2ctarget/I2CTarget.h index e9c9714dee3c..1782d0695fb4 100644 --- a/shared-bindings/i2ctarget/I2CTarget.h +++ b/shared-bindings/i2ctarget/I2CTarget.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Noralf Trønnes - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Noralf Trønnes +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO_I2C_TARGET_H #define MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO_I2C_TARGET_H diff --git a/shared-bindings/i2ctarget/__init__.c b/shared-bindings/i2ctarget/__init__.c index 0e6b641f0b4c..9a0939a66a4b 100644 --- a/shared-bindings/i2ctarget/__init__.c +++ b/shared-bindings/i2ctarget/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Noralf Trønnes - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Noralf Trønnes +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/imagecapture/ParallelImageCapture.c b/shared-bindings/imagecapture/ParallelImageCapture.c index 924f1f0b4c87..c8a60e43ffcd 100644 --- a/shared-bindings/imagecapture/ParallelImageCapture.c +++ b/shared-bindings/imagecapture/ParallelImageCapture.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/runtime.h" diff --git a/shared-bindings/imagecapture/ParallelImageCapture.h b/shared-bindings/imagecapture/ParallelImageCapture.h index 72ddc23f65ff..fddd2cb27634 100644 --- a/shared-bindings/imagecapture/ParallelImageCapture.h +++ b/shared-bindings/imagecapture/ParallelImageCapture.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/imagecapture/__init__.c b/shared-bindings/imagecapture/__init__.c index de30ec24baee..0d4294c771cc 100644 --- a/shared-bindings/imagecapture/__init__.c +++ b/shared-bindings/imagecapture/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/imagecapture/__init__.h b/shared-bindings/imagecapture/__init__.h index 1e170aa94107..b54539ab2024 100644 --- a/shared-bindings/imagecapture/__init__.h +++ b/shared-bindings/imagecapture/__init__.h @@ -1,27 +1,7 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/ipaddress/IPv4Address.c b/shared-bindings/ipaddress/IPv4Address.c index 05c0289209fc..17110b640160 100644 --- a/shared-bindings/ipaddress/IPv4Address.c +++ b/shared-bindings/ipaddress/IPv4Address.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include "shared-bindings/ipaddress/IPv4Address.h" diff --git a/shared-bindings/ipaddress/IPv4Address.h b/shared-bindings/ipaddress/IPv4Address.h index 46a52a0b2304..81e928e6cb6f 100644 --- a/shared-bindings/ipaddress/IPv4Address.h +++ b/shared-bindings/ipaddress/IPv4Address.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_IPADDRESS_IPV4ADDRESS_H #define MICROPY_INCLUDED_SHARED_BINDINGS_IPADDRESS_IPV4ADDRESS_H diff --git a/shared-bindings/ipaddress/__init__.c b/shared-bindings/ipaddress/__init__.c index 6c97e6d79306..00d6075edf91 100644 --- a/shared-bindings/ipaddress/__init__.c +++ b/shared-bindings/ipaddress/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/objexcept.h" #include "py/objstr.h" diff --git a/shared-bindings/ipaddress/__init__.h b/shared-bindings/ipaddress/__init__.h index 7c2e5c1819ac..27efa4da65c8 100644 --- a/shared-bindings/ipaddress/__init__.h +++ b/shared-bindings/ipaddress/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_IPADDRESS___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_IPADDRESS___INIT___H diff --git a/shared-bindings/is31fl3741/FrameBuffer.c b/shared-bindings/is31fl3741/FrameBuffer.c index 9a397c514bd3..34b8bba6f71a 100644 --- a/shared-bindings/is31fl3741/FrameBuffer.c +++ b/shared-bindings/is31fl3741/FrameBuffer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Mark Komus - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Mark Komus +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/objproperty.h" diff --git a/shared-bindings/is31fl3741/FrameBuffer.h b/shared-bindings/is31fl3741/FrameBuffer.h index 9624b2ccd308..d8a9a101e8db 100644 --- a/shared-bindings/is31fl3741/FrameBuffer.h +++ b/shared-bindings/is31fl3741/FrameBuffer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Mark Komus - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Mark Komus +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/is31fl3741/IS31FL3741.c b/shared-bindings/is31fl3741/IS31FL3741.c index 5650d0444764..5dcc6f38f8be 100644 --- a/shared-bindings/is31fl3741/IS31FL3741.c +++ b/shared-bindings/is31fl3741/IS31FL3741.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Mark Komus - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Mark Komus +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/runtime.h" diff --git a/shared-bindings/is31fl3741/IS31FL3741.h b/shared-bindings/is31fl3741/IS31FL3741.h index 62302a3ac24b..5c6447f78f98 100644 --- a/shared-bindings/is31fl3741/IS31FL3741.h +++ b/shared-bindings/is31fl3741/IS31FL3741.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Mark Komus - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Mark Komus +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/is31fl3741/__init__.c b/shared-bindings/is31fl3741/__init__.c index ce0d6b33cdf4..efc6e4c8b76d 100644 --- a/shared-bindings/is31fl3741/__init__.c +++ b/shared-bindings/is31fl3741/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Mark Komus - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Mark Komus +// +// SPDX-License-Identifier: MIT #include #include diff --git a/shared-bindings/jpegio/JpegDecoder.c b/shared-bindings/jpegio/JpegDecoder.c index c807fbcc3de8..3fecb2af5d6b 100644 --- a/shared-bindings/jpegio/JpegDecoder.c +++ b/shared-bindings/jpegio/JpegDecoder.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/builtin.h" diff --git a/shared-bindings/jpegio/JpegDecoder.h b/shared-bindings/jpegio/JpegDecoder.h index 7f0ad300719b..b520470cd534 100644 --- a/shared-bindings/jpegio/JpegDecoder.h +++ b/shared-bindings/jpegio/JpegDecoder.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/stream.h" diff --git a/shared-bindings/jpegio/__init__.c b/shared-bindings/jpegio/__init__.c index 6cba0f9a67f9..b22edad960cc 100644 --- a/shared-bindings/jpegio/__init__.c +++ b/shared-bindings/jpegio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "shared-bindings/jpegio/JpegDecoder.h" diff --git a/shared-bindings/jpegio/__init__.h b/shared-bindings/jpegio/__init__.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-bindings/jpegio/__init__.h +++ b/shared-bindings/jpegio/__init__.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-bindings/keypad/Event.c b/shared-bindings/keypad/Event.c index 57ce660978ed..d58ac32077db 100644 --- a/shared-bindings/keypad/Event.c +++ b/shared-bindings/keypad/Event.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/objproperty.h" diff --git a/shared-bindings/keypad/Event.h b/shared-bindings/keypad/Event.h index 44e69299e420..9f88b7e9aed1 100644 --- a/shared-bindings/keypad/Event.h +++ b/shared-bindings/keypad/Event.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_EVENT__H #define MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_EVENT__H diff --git a/shared-bindings/keypad/EventQueue.c b/shared-bindings/keypad/EventQueue.c index ee34b4009441..a7010ce341ca 100644 --- a/shared-bindings/keypad/EventQueue.c +++ b/shared-bindings/keypad/EventQueue.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/stream.h" #include "py/mperrno.h" diff --git a/shared-bindings/keypad/EventQueue.h b/shared-bindings/keypad/EventQueue.h index b222ffa35a93..9ab64a2aa4ec 100644 --- a/shared-bindings/keypad/EventQueue.h +++ b/shared-bindings/keypad/EventQueue.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_EVENTQUEUE_H #define MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_EVENTQUEUE_H diff --git a/shared-bindings/keypad/KeyMatrix.c b/shared-bindings/keypad/KeyMatrix.c index 13556436f623..aad017d9be29 100644 --- a/shared-bindings/keypad/KeyMatrix.c +++ b/shared-bindings/keypad/KeyMatrix.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared/runtime/context_manager_helpers.h" #include "py/binary.h" diff --git a/shared-bindings/keypad/KeyMatrix.h b/shared-bindings/keypad/KeyMatrix.h index f6085eb231db..8d555cabb8af 100644 --- a/shared-bindings/keypad/KeyMatrix.h +++ b/shared-bindings/keypad/KeyMatrix.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_KEYMATRIX_H #define MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_KEYMATRIX_H diff --git a/shared-bindings/keypad/Keys.c b/shared-bindings/keypad/Keys.c index 512cad2da3ae..6571c658bb86 100644 --- a/shared-bindings/keypad/Keys.c +++ b/shared-bindings/keypad/Keys.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared/runtime/context_manager_helpers.h" #include "py/binary.h" diff --git a/shared-bindings/keypad/Keys.h b/shared-bindings/keypad/Keys.h index e57030f7d0e0..4ee4c1078272 100644 --- a/shared-bindings/keypad/Keys.h +++ b/shared-bindings/keypad/Keys.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_KEYS_H #define MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_KEYS_H diff --git a/shared-bindings/keypad/ShiftRegisterKeys.c b/shared-bindings/keypad/ShiftRegisterKeys.c index aaca59605290..956a90763f6e 100644 --- a/shared-bindings/keypad/ShiftRegisterKeys.c +++ b/shared-bindings/keypad/ShiftRegisterKeys.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared/runtime/context_manager_helpers.h" #include "py/binary.h" diff --git a/shared-bindings/keypad/ShiftRegisterKeys.h b/shared-bindings/keypad/ShiftRegisterKeys.h index b98818140c16..7c92f98a4fa4 100644 --- a/shared-bindings/keypad/ShiftRegisterKeys.h +++ b/shared-bindings/keypad/ShiftRegisterKeys.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_SHIFTREGISTERKEYS_H #define MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_SHIFTREGISTERKEYS_H diff --git a/shared-bindings/keypad/__init__.c b/shared-bindings/keypad/__init__.c index bf5b334d3166..b9282e7f0b21 100644 --- a/shared-bindings/keypad/__init__.c +++ b/shared-bindings/keypad/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2011 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2011 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" diff --git a/shared-bindings/keypad/__init__.h b/shared-bindings/keypad/__init__.h index eb3b16aa4bb9..05d058353a5d 100644 --- a/shared-bindings/keypad/__init__.h +++ b/shared-bindings/keypad/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef SHARED_BINDINGS_KEYPAD_H #define SHARED_BINDINGS_KEYPAD_H diff --git a/shared-bindings/keypad_demux/DemuxKeyMatrix.c b/shared-bindings/keypad_demux/DemuxKeyMatrix.c index 64fd8a0ff13a..1092b0e8cd8a 100644 --- a/shared-bindings/keypad_demux/DemuxKeyMatrix.c +++ b/shared-bindings/keypad_demux/DemuxKeyMatrix.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 CDarius - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 CDarius +// +// SPDX-License-Identifier: MIT #include "shared/runtime/context_manager_helpers.h" #include "py/binary.h" diff --git a/shared-bindings/keypad_demux/DemuxKeyMatrix.h b/shared-bindings/keypad_demux/DemuxKeyMatrix.h index a4acbc911504..607365bd223e 100644 --- a/shared-bindings/keypad_demux/DemuxKeyMatrix.h +++ b/shared-bindings/keypad_demux/DemuxKeyMatrix.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 CDarius - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 CDarius +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_DEMUX_DEMUXKEYMATRIX_H #define MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_DEMUX_DEMUXKEYMATRIX_H diff --git a/shared-bindings/keypad_demux/__init__.c b/shared-bindings/keypad_demux/__init__.c index fdce618e6401..d3abf462e87f 100644 --- a/shared-bindings/keypad_demux/__init__.c +++ b/shared-bindings/keypad_demux/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 CDarius - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 CDarius +// +// SPDX-License-Identifier: MIT #include "py/obj.h" diff --git a/shared-bindings/locale/__init__.c b/shared-bindings/locale/__init__.c index 0ee0e8f8ab38..c4d1be24f3d2 100644 --- a/shared-bindings/locale/__init__.c +++ b/shared-bindings/locale/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/objtuple.h" diff --git a/shared-bindings/math/__init__.c b/shared-bindings/math/__init__.c index 93af53769d65..49a34d247bca 100644 --- a/shared-bindings/math/__init__.c +++ b/shared-bindings/math/__init__.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * Copyright (c) 2017 Michael McWethy - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// SPDX-FileCopyrightText: Copyright (c) 2017 Michael McWethy +// +// SPDX-License-Identifier: MIT #include "py/builtin.h" #include "py/runtime.h" diff --git a/shared-bindings/max3421e/Max3421E.c b/shared-bindings/max3421e/Max3421E.c index f6132a14f48b..ffb75c56fd5a 100644 --- a/shared-bindings/max3421e/Max3421E.c +++ b/shared-bindings/max3421e/Max3421E.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/max3421e/Max3421E.h" diff --git a/shared-bindings/max3421e/Max3421E.h b/shared-bindings/max3421e/Max3421E.h index 994cec8c2e82..9d6c14d42040 100644 --- a/shared-bindings/max3421e/Max3421E.h +++ b/shared-bindings/max3421e/Max3421E.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/max3421e/__init__.c b/shared-bindings/max3421e/__init__.c index 7aa6584bbd52..2eb7b53e23f5 100644 --- a/shared-bindings/max3421e/__init__.c +++ b/shared-bindings/max3421e/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/max3421e/__init__.h b/shared-bindings/max3421e/__init__.h index 82eb9f8fbf33..b56388fa8ae3 100644 --- a/shared-bindings/max3421e/__init__.h +++ b/shared-bindings/max3421e/__init__.h @@ -1,27 +1,7 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/mdns/RemoteService.c b/shared-bindings/mdns/RemoteService.c index 6bf96a2a763c..5b907b8ddfb1 100644 --- a/shared-bindings/mdns/RemoteService.c +++ b/shared-bindings/mdns/RemoteService.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2017 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2017 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/mdns/RemoteService.h b/shared-bindings/mdns/RemoteService.h index 4783170e8838..a5ffe897e4e9 100644 --- a/shared-bindings/mdns/RemoteService.h +++ b/shared-bindings/mdns/RemoteService.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2017 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2017 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/mdns/Server.c b/shared-bindings/mdns/Server.c index a8bf60ad4288..3d6b6adbb260 100644 --- a/shared-bindings/mdns/Server.c +++ b/shared-bindings/mdns/Server.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/mdns/Server.h b/shared-bindings/mdns/Server.h index bb25f771eb56..df4b6f438dbc 100644 --- a/shared-bindings/mdns/Server.h +++ b/shared-bindings/mdns/Server.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/mdns/__init__.c b/shared-bindings/mdns/__init__.c index 2a8cd85e390a..52b3219d0c75 100644 --- a/shared-bindings/mdns/__init__.c +++ b/shared-bindings/mdns/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/mdns/__init__.h b/shared-bindings/mdns/__init__.h index d6722851c79b..a3eb3cbe1476 100644 --- a/shared-bindings/mdns/__init__.h +++ b/shared-bindings/mdns/__init__.h @@ -1,27 +1,7 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/memorymap/AddressRange.c b/shared-bindings/memorymap/AddressRange.c index 0a37468dea70..74d1a153bec6 100644 --- a/shared-bindings/memorymap/AddressRange.c +++ b/shared-bindings/memorymap/AddressRange.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/binary.h" #include "py/runtime.h" diff --git a/shared-bindings/memorymap/AddressRange.h b/shared-bindings/memorymap/AddressRange.h index 93c082c8ebc0..cd04f7f68551 100644 --- a/shared-bindings/memorymap/AddressRange.h +++ b/shared-bindings/memorymap/AddressRange.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMAP_ADDRESSRANGE_H #define MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMAP_ADDRESSRANGE_H diff --git a/shared-bindings/memorymap/__init__.c b/shared-bindings/memorymap/__init__.c index a276e371ba88..8d30104bbe1a 100644 --- a/shared-bindings/memorymap/__init__.c +++ b/shared-bindings/memorymap/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/shared-bindings/memorymap/__init__.h b/shared-bindings/memorymap/__init__.h index f4e6c51481f4..ced885a4f669 100644 --- a/shared-bindings/memorymap/__init__.h +++ b/shared-bindings/memorymap/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef SHARED_BINDINGS_MEMORYMAP_H #define SHARED_BINDINGS_MEMORYMAP_H diff --git a/shared-bindings/memorymonitor/AllocationAlarm.c b/shared-bindings/memorymonitor/AllocationAlarm.c index 1ba59a03549d..417c31fe2e61 100644 --- a/shared-bindings/memorymonitor/AllocationAlarm.c +++ b/shared-bindings/memorymonitor/AllocationAlarm.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/memorymonitor/AllocationAlarm.h b/shared-bindings/memorymonitor/AllocationAlarm.h index 0a62971821e4..9dbfe8c2a271 100644 --- a/shared-bindings/memorymonitor/AllocationAlarm.h +++ b/shared-bindings/memorymonitor/AllocationAlarm.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMONITOR_ALLOCATIONALARM_H #define MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMONITOR_ALLOCATIONALARM_H diff --git a/shared-bindings/memorymonitor/AllocationSize.c b/shared-bindings/memorymonitor/AllocationSize.c index 0b3bc353ce80..198dc658bf69 100644 --- a/shared-bindings/memorymonitor/AllocationSize.c +++ b/shared-bindings/memorymonitor/AllocationSize.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/memorymonitor/AllocationSize.h b/shared-bindings/memorymonitor/AllocationSize.h index c677c1a5b6cd..9790ae79f046 100644 --- a/shared-bindings/memorymonitor/AllocationSize.h +++ b/shared-bindings/memorymonitor/AllocationSize.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMONITOR_ALLOCATIONSIZE_H #define MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMONITOR_ALLOCATIONSIZE_H diff --git a/shared-bindings/memorymonitor/__init__.c b/shared-bindings/memorymonitor/__init__.c index 677254c00db5..afe2726100e0 100644 --- a/shared-bindings/memorymonitor/__init__.c +++ b/shared-bindings/memorymonitor/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/memorymonitor/__init__.h b/shared-bindings/memorymonitor/__init__.h index cffb3b77f006..3c9bdd9b4133 100644 --- a/shared-bindings/memorymonitor/__init__.h +++ b/shared-bindings/memorymonitor/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMONITOR___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMONITOR___INIT___H diff --git a/shared-bindings/microcontroller/Pin.c b/shared-bindings/microcontroller/Pin.c index 354c4e827003..b0260a229547 100644 --- a/shared-bindings/microcontroller/Pin.c +++ b/shared-bindings/microcontroller/Pin.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #include "shared-bindings/board/__init__.h" #include "shared-bindings/microcontroller/__init__.h" diff --git a/shared-bindings/microcontroller/Pin.h b/shared-bindings/microcontroller/Pin.h index 28d094904278..7064d81980d3 100644 --- a/shared-bindings/microcontroller/Pin.h +++ b/shared-bindings/microcontroller/Pin.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_MICROCONTROLLER_PIN_H #define MICROPY_INCLUDED_SHARED_BINDINGS_MICROCONTROLLER_PIN_H diff --git a/shared-bindings/microcontroller/Processor.c b/shared-bindings/microcontroller/Processor.c index 56acca256ba0..4e0372dbdf1e 100644 --- a/shared-bindings/microcontroller/Processor.c +++ b/shared-bindings/microcontroller/Processor.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/microcontroller/__init__.h" #include "shared-bindings/microcontroller/Processor.h" diff --git a/shared-bindings/microcontroller/Processor.h b/shared-bindings/microcontroller/Processor.h index 473f25cbc6ae..608e6b8f54b9 100644 --- a/shared-bindings/microcontroller/Processor.h +++ b/shared-bindings/microcontroller/Processor.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_MICROCONTROLLER_PROCESSOR_H #define MICROPY_INCLUDED_SHARED_BINDINGS_MICROCONTROLLER_PROCESSOR_H diff --git a/shared-bindings/microcontroller/ResetReason.c b/shared-bindings/microcontroller/ResetReason.c index 6f8ac8f42b20..e67f640f340e 100644 --- a/shared-bindings/microcontroller/ResetReason.c +++ b/shared-bindings/microcontroller/ResetReason.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/enum.h" diff --git a/shared-bindings/microcontroller/ResetReason.h b/shared-bindings/microcontroller/ResetReason.h index 7abc54c00b6b..6c8b2448fe37 100644 --- a/shared-bindings/microcontroller/ResetReason.h +++ b/shared-bindings/microcontroller/ResetReason.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_MCU_RESET_REASON__H #define MICROPY_INCLUDED_SHARED_BINDINGS_MCU_RESET_REASON__H diff --git a/shared-bindings/microcontroller/RunMode.c b/shared-bindings/microcontroller/RunMode.c index e4e8282234ad..456bc1053c7f 100644 --- a/shared-bindings/microcontroller/RunMode.c +++ b/shared-bindings/microcontroller/RunMode.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/microcontroller/RunMode.h" diff --git a/shared-bindings/microcontroller/RunMode.h b/shared-bindings/microcontroller/RunMode.h index 172256d7b07d..0eb81e1eb4e3 100644 --- a/shared-bindings/microcontroller/RunMode.h +++ b/shared-bindings/microcontroller/RunMode.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_MICROCONTROLLER_RUNMODE_H #define MICROPY_INCLUDED_SHARED_BINDINGS_MICROCONTROLLER_RUNMODE_H diff --git a/shared-bindings/microcontroller/__init__.c b/shared-bindings/microcontroller/__init__.c index 51940a3dab0b..73ce4ccb7c1b 100644 --- a/shared-bindings/microcontroller/__init__.c +++ b/shared-bindings/microcontroller/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT // Microcontroller contains pin references and microcontroller specific control // functions. diff --git a/shared-bindings/microcontroller/__init__.h b/shared-bindings/microcontroller/__init__.h index e41cce84a45f..3a74b67b38bd 100644 --- a/shared-bindings/microcontroller/__init__.h +++ b/shared-bindings/microcontroller/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_MICROCONTROLLER___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_MICROCONTROLLER___INIT___H diff --git a/shared-bindings/msgpack/ExtType.c b/shared-bindings/msgpack/ExtType.c index 537aac08fd18..2bf2560b021d 100644 --- a/shared-bindings/msgpack/ExtType.c +++ b/shared-bindings/msgpack/ExtType.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Bernhard Boser - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Bernhard Boser +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" #include "py/smallint.h" diff --git a/shared-bindings/msgpack/ExtType.h b/shared-bindings/msgpack/ExtType.h index 64173b22136f..116028b88ee9 100644 --- a/shared-bindings/msgpack/ExtType.h +++ b/shared-bindings/msgpack/ExtType.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Bernhard Boser - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Bernhard Boser +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_MSGPACK_EXTTYPE___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_MSGPACK_EXTTYPE___INIT___H diff --git a/shared-bindings/msgpack/__init__.c b/shared-bindings/msgpack/__init__.c index a6d7ad737bb6..ea42f96e7287 100644 --- a/shared-bindings/msgpack/__init__.c +++ b/shared-bindings/msgpack/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Bernhard Boser - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Bernhard Boser +// +// SPDX-License-Identifier: MIT #include #include "py/obj.h" diff --git a/shared-bindings/msgpack/__init__.h b/shared-bindings/msgpack/__init__.h index a02ead0bd01b..78785d7df519 100644 --- a/shared-bindings/msgpack/__init__.h +++ b/shared-bindings/msgpack/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_MSGPACK___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_MSGPACK___INIT___H diff --git a/shared-bindings/neopixel_write/__init__.c b/shared-bindings/neopixel_write/__init__.c index 3c307f5c716a..f3e953046a87 100644 --- a/shared-bindings/neopixel_write/__init__.c +++ b/shared-bindings/neopixel_write/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/neopixel_write/__init__.h" #include "py/obj.h" diff --git a/shared-bindings/neopixel_write/__init__.h b/shared-bindings/neopixel_write/__init__.h index 89b087ddf813..20fdc6eb175e 100644 --- a/shared-bindings/neopixel_write/__init__.h +++ b/shared-bindings/neopixel_write/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_NEOPIXEL_WRITE_H #define MICROPY_INCLUDED_SHARED_BINDINGS_NEOPIXEL_WRITE_H diff --git a/shared-bindings/nvm/ByteArray.c b/shared-bindings/nvm/ByteArray.c index 2d4e073ece0b..9a37f4bc90eb 100644 --- a/shared-bindings/nvm/ByteArray.c +++ b/shared-bindings/nvm/ByteArray.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/binary.h" #include "py/runtime.h" diff --git a/shared-bindings/nvm/ByteArray.h b/shared-bindings/nvm/ByteArray.h index c0446b52a3ae..7855cc8a6d9d 100644 --- a/shared-bindings/nvm/ByteArray.h +++ b/shared-bindings/nvm/ByteArray.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_NVM_BYTEARRAY_H #define MICROPY_INCLUDED_SHARED_BINDINGS_NVM_BYTEARRAY_H diff --git a/shared-bindings/nvm/__init__.c b/shared-bindings/nvm/__init__.c index ff553741a929..6402612df439 100644 --- a/shared-bindings/nvm/__init__.c +++ b/shared-bindings/nvm/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/shared-bindings/nvm/__init__.h b/shared-bindings/nvm/__init__.h index 9e1799974745..9c037b4816ca 100644 --- a/shared-bindings/nvm/__init__.h +++ b/shared-bindings/nvm/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef SHARED_BINDINGS_NVM_H #define SHARED_BINDINGS_NVM_H diff --git a/shared-bindings/onewireio/OneWire.c b/shared-bindings/onewireio/OneWire.c index d635cc125651..d2d525dc0ba2 100644 --- a/shared-bindings/onewireio/OneWire.c +++ b/shared-bindings/onewireio/OneWire.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/onewireio/OneWire.h b/shared-bindings/onewireio/OneWire.h index c6d0fd6ebbce..39ccf25e1828 100644 --- a/shared-bindings/onewireio/OneWire.h +++ b/shared-bindings/onewireio/OneWire.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ONEWIREIO_ONEWIRE_H #define MICROPY_INCLUDED_SHARED_BINDINGS_ONEWIREIO_ONEWIRE_H diff --git a/shared-bindings/onewireio/__init__.c b/shared-bindings/onewireio/__init__.c index 869300debacf..f4c8f9fea929 100644 --- a/shared-bindings/onewireio/__init__.c +++ b/shared-bindings/onewireio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/onewireio/__init__.h b/shared-bindings/onewireio/__init__.h index 25384f6a7bb4..370e1d641aef 100644 --- a/shared-bindings/onewireio/__init__.h +++ b/shared-bindings/onewireio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ONEWIREIO___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_ONEWIREIO___INIT___H diff --git a/shared-bindings/os/__init__.c b/shared-bindings/os/__init__.c index 717d4e92de63..1ebd7faa701a 100644 --- a/shared-bindings/os/__init__.c +++ b/shared-bindings/os/__init__.c @@ -1,30 +1,10 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * Copyright (c) 2015 Josef Gajdusek - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// SPDX-FileCopyrightText: Copyright (c) 2015 Josef Gajdusek +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/os/__init__.h b/shared-bindings/os/__init__.h index 49b12cd52a15..228af63199dd 100644 --- a/shared-bindings/os/__init__.h +++ b/shared-bindings/os/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_OS___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_OS___INIT___H diff --git a/shared-bindings/paralleldisplaybus/ParallelBus.c b/shared-bindings/paralleldisplaybus/ParallelBus.c index 1b345f3f7082..7c3146e98f20 100644 --- a/shared-bindings/paralleldisplaybus/ParallelBus.c +++ b/shared-bindings/paralleldisplaybus/ParallelBus.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/paralleldisplaybus/ParallelBus.h" diff --git a/shared-bindings/paralleldisplaybus/ParallelBus.h b/shared-bindings/paralleldisplaybus/ParallelBus.h index b0d5cab82fc2..e45448610f6a 100644 --- a/shared-bindings/paralleldisplaybus/ParallelBus.h +++ b/shared-bindings/paralleldisplaybus/ParallelBus.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/paralleldisplaybus/__init__.c b/shared-bindings/paralleldisplaybus/__init__.c index 379eeb5857fd..76c403602370 100644 --- a/shared-bindings/paralleldisplaybus/__init__.c +++ b/shared-bindings/paralleldisplaybus/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/paralleldisplaybus/__init__.h b/shared-bindings/paralleldisplaybus/__init__.h index f7b42875a18f..70cc2d4786f3 100644 --- a/shared-bindings/paralleldisplaybus/__init__.h +++ b/shared-bindings/paralleldisplaybus/__init__.h @@ -1,27 +1,7 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/ps2io/Ps2.c b/shared-bindings/ps2io/Ps2.c index 4ce9ccfc226d..83791d6596a7 100644 --- a/shared-bindings/ps2io/Ps2.c +++ b/shared-bindings/ps2io/Ps2.c @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Elvis Pfutzenreuter - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Elvis Pfutzenreuter +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/ps2io/Ps2.h b/shared-bindings/ps2io/Ps2.h index 861fd402324b..9cddf86443d0 100644 --- a/shared-bindings/ps2io/Ps2.h +++ b/shared-bindings/ps2io/Ps2.h @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Elvis Pfutzenreuter - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Elvis Pfutzenreuter +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_PS2IO_PS2_H #define MICROPY_INCLUDED_SHARED_BINDINGS_PS2IO_PS2_H diff --git a/shared-bindings/ps2io/__init__.c b/shared-bindings/ps2io/__init__.c index e6aed1095541..a23f803cb6a6 100644 --- a/shared-bindings/ps2io/__init__.c +++ b/shared-bindings/ps2io/__init__.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Elvis Pfutzenreuter - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Elvis Pfutzenreuter +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/ps2io/__init__.h b/shared-bindings/ps2io/__init__.h index 1ff3d97b5cca..822e8617cf65 100644 --- a/shared-bindings/ps2io/__init__.h +++ b/shared-bindings/ps2io/__init__.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * Copyright (c) 2019 Elvis Pfutzenreuter - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// SPDX-FileCopyrightText: Copyright (c) 2019 Elvis Pfutzenreuter +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_PS2IO___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_PS2IO___INIT___H diff --git a/shared-bindings/pulseio/PulseIn.c b/shared-bindings/pulseio/PulseIn.c index fe2357039dcf..ba48d242694a 100644 --- a/shared-bindings/pulseio/PulseIn.c +++ b/shared-bindings/pulseio/PulseIn.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/pulseio/PulseIn.h b/shared-bindings/pulseio/PulseIn.h index 09d01fded75e..1667f0ccba4f 100644 --- a/shared-bindings/pulseio/PulseIn.h +++ b/shared-bindings/pulseio/PulseIn.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_PULSEIO_PULSEIN_H #define MICROPY_INCLUDED_SHARED_BINDINGS_PULSEIO_PULSEIN_H diff --git a/shared-bindings/pulseio/PulseOut.c b/shared-bindings/pulseio/PulseOut.c index 4f166aceba2f..d7903af18d23 100644 --- a/shared-bindings/pulseio/PulseOut.c +++ b/shared-bindings/pulseio/PulseOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/pulseio/PulseOut.h b/shared-bindings/pulseio/PulseOut.h index 0c64c1363a03..1a13e3adc708 100644 --- a/shared-bindings/pulseio/PulseOut.h +++ b/shared-bindings/pulseio/PulseOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_PULSEIO_PULSEOUT_H #define MICROPY_INCLUDED_SHARED_BINDINGS_PULSEIO_PULSEOUT_H diff --git a/shared-bindings/pulseio/__init__.c b/shared-bindings/pulseio/__init__.c index b8a190ef5d3a..547a78035e5a 100644 --- a/shared-bindings/pulseio/__init__.c +++ b/shared-bindings/pulseio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/pulseio/__init__.h b/shared-bindings/pulseio/__init__.h index 0691ad2828c3..3dfa6cb2de9f 100644 --- a/shared-bindings/pulseio/__init__.h +++ b/shared-bindings/pulseio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_PULSEIO___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_PULSEIO___INIT___H diff --git a/shared-bindings/pwmio/PWMOut.c b/shared-bindings/pwmio/PWMOut.c index 734f3a2cf42a..7e23c4d8adbe 100644 --- a/shared-bindings/pwmio/PWMOut.c +++ b/shared-bindings/pwmio/PWMOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2016 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Damien P. George +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/pwmio/PWMOut.h b/shared-bindings/pwmio/PWMOut.h index 228ffc199524..c2de5117f18b 100644 --- a/shared-bindings/pwmio/PWMOut.h +++ b/shared-bindings/pwmio/PWMOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_PWMIO_PWMOUT_H #define MICROPY_INCLUDED_SHARED_BINDINGS_PWMIO_PWMOUT_H diff --git a/shared-bindings/pwmio/__init__.c b/shared-bindings/pwmio/__init__.c index 38388fec8420..ab5bf7c21fe7 100644 --- a/shared-bindings/pwmio/__init__.c +++ b/shared-bindings/pwmio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/pwmio/__init__.h b/shared-bindings/pwmio/__init__.h index 93c70377d734..4da28008fad6 100644 --- a/shared-bindings/pwmio/__init__.h +++ b/shared-bindings/pwmio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_PWMIO___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_PWMIO___INIT___H diff --git a/shared-bindings/qrio/PixelPolicy.c b/shared-bindings/qrio/PixelPolicy.c index deb164d02d22..e086f5da09ba 100644 --- a/shared-bindings/qrio/PixelPolicy.c +++ b/shared-bindings/qrio/PixelPolicy.c @@ -1,28 +1,8 @@ -/* - * This file is part of the CircuitPython project, https://github.com/adafruit/circuitpython - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler +// +// SPDX-License-Identifier: MIT #include "shared-bindings/qrio/__init__.h" #include "shared-bindings/qrio/PixelPolicy.h" diff --git a/shared-bindings/qrio/PixelPolicy.h b/shared-bindings/qrio/PixelPolicy.h index 36c1d271fde1..0c7328d0b402 100644 --- a/shared-bindings/qrio/PixelPolicy.h +++ b/shared-bindings/qrio/PixelPolicy.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/qrio/QRDecoder.c b/shared-bindings/qrio/QRDecoder.c index 47533d9d5de4..7ef8a84fa4b3 100644 --- a/shared-bindings/qrio/QRDecoder.c +++ b/shared-bindings/qrio/QRDecoder.c @@ -1,28 +1,8 @@ -/* - * This file is part of the CircuitPython project, https://github.com/adafruit/circuitpython - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler +// +// SPDX-License-Identifier: MIT #include "shared-bindings/qrio/__init__.h" #include "shared-bindings/qrio/QRDecoder.h" diff --git a/shared-bindings/qrio/QRDecoder.h b/shared-bindings/qrio/QRDecoder.h index 0b01aeb44e2b..9d30dc32542f 100644 --- a/shared-bindings/qrio/QRDecoder.h +++ b/shared-bindings/qrio/QRDecoder.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/qrio/QRInfo.c b/shared-bindings/qrio/QRInfo.c index f2856e115c7e..3f63c21e3cee 100644 --- a/shared-bindings/qrio/QRInfo.c +++ b/shared-bindings/qrio/QRInfo.c @@ -1,28 +1,8 @@ -/* - * This file is part of the CircuitPython project, https://github.com/adafruit/circuitpython - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler +// +// SPDX-License-Identifier: MIT #include "shared-bindings/qrio/__init__.h" #include "shared-bindings/qrio/QRInfo.h" diff --git a/shared-bindings/qrio/QRInfo.h b/shared-bindings/qrio/QRInfo.h index 6c587433790f..7512fb8d0579 100644 --- a/shared-bindings/qrio/QRInfo.h +++ b/shared-bindings/qrio/QRInfo.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/qrio/__init__.c b/shared-bindings/qrio/__init__.c index 3daee820edaf..b3093c6b4eca 100644 --- a/shared-bindings/qrio/__init__.c +++ b/shared-bindings/qrio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the CircuitPython project, https://github.com/adafruit/circuitpython - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler +// +// SPDX-License-Identifier: MIT #include "shared-bindings/qrio/__init__.h" #include "shared-bindings/qrio/QRDecoder.h" diff --git a/shared-bindings/qrio/__init__.h b/shared-bindings/qrio/__init__.h index be9b3aefa77a..b54539ab2024 100644 --- a/shared-bindings/qrio/__init__.h +++ b/shared-bindings/qrio/__init__.h @@ -1,27 +1,7 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/rainbowio/__init__.c b/shared-bindings/rainbowio/__init__.c index b4a5536588d4..dc20c1416f1d 100644 --- a/shared-bindings/rainbowio/__init__.c +++ b/shared-bindings/rainbowio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the CircuitPython project, https://github.com/adafruit/circuitpython - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Kattni Rembor - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Kattni Rembor +// +// SPDX-License-Identifier: MIT #include "shared-bindings/rainbowio/__init__.h" #include "py/mpconfig.h" diff --git a/shared-bindings/rainbowio/__init__.h b/shared-bindings/rainbowio/__init__.h index 3599e3ab3eb4..17db6331eb69 100644 --- a/shared-bindings/rainbowio/__init__.h +++ b/shared-bindings/rainbowio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the CircuitPython project, https://github.com/adafruit/circuitpython - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Kattni Rembor - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Kattni Rembor +// +// SPDX-License-Identifier: MIT #ifndef CP_SHARED_BINDINGS_RAINBOWIO_INIT_H #define CP_SHARED_BINDINGS_RAINBOWIO_INIT_H diff --git a/shared-bindings/random/__init__.c b/shared-bindings/random/__init__.c index 8076ddfeecc8..3185a439fe56 100644 --- a/shared-bindings/random/__init__.c +++ b/shared-bindings/random/__init__.c @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Paul Sokolovsky - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Paul Sokolovsky +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/shared-bindings/random/__init__.h b/shared-bindings/random/__init__.h index 9e058051fc0a..6006701ae5cd 100644 --- a/shared-bindings/random/__init__.h +++ b/shared-bindings/random/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_RANDOM___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_RANDOM___INIT___H diff --git a/shared-bindings/rgbmatrix/RGBMatrix.c b/shared-bindings/rgbmatrix/RGBMatrix.c index 4f47ef3814c0..b602e8468bbe 100644 --- a/shared-bindings/rgbmatrix/RGBMatrix.c +++ b/shared-bindings/rgbmatrix/RGBMatrix.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/objproperty.h" diff --git a/shared-bindings/rgbmatrix/RGBMatrix.h b/shared-bindings/rgbmatrix/RGBMatrix.h index 0081570f42ed..960abc66a3fe 100644 --- a/shared-bindings/rgbmatrix/RGBMatrix.h +++ b/shared-bindings/rgbmatrix/RGBMatrix.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/rgbmatrix/__init__.c b/shared-bindings/rgbmatrix/__init__.c index c8798c1581e6..60865df56077 100644 --- a/shared-bindings/rgbmatrix/__init__.c +++ b/shared-bindings/rgbmatrix/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/rotaryio/IncrementalEncoder.c b/shared-bindings/rotaryio/IncrementalEncoder.c index 51a43d97e9bd..2310b82bc258 100644 --- a/shared-bindings/rotaryio/IncrementalEncoder.c +++ b/shared-bindings/rotaryio/IncrementalEncoder.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/rotaryio/IncrementalEncoder.h b/shared-bindings/rotaryio/IncrementalEncoder.h index 45551c3e414b..e517cdaf8889 100644 --- a/shared-bindings/rotaryio/IncrementalEncoder.h +++ b/shared-bindings/rotaryio/IncrementalEncoder.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ROTARYIO_INCREMENTALENCODER_H #define MICROPY_INCLUDED_SHARED_BINDINGS_ROTARYIO_INCREMENTALENCODER_H diff --git a/shared-bindings/rotaryio/__init__.c b/shared-bindings/rotaryio/__init__.c index d8348eb9586f..62f1f5b0fb47 100644 --- a/shared-bindings/rotaryio/__init__.c +++ b/shared-bindings/rotaryio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/rotaryio/__init__.h b/shared-bindings/rotaryio/__init__.h index 5d051d5a1aea..9e1e032b0dab 100644 --- a/shared-bindings/rotaryio/__init__.h +++ b/shared-bindings/rotaryio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ROTARYIO___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_ROTARYIO___INIT___H diff --git a/shared-bindings/rtc/RTC.c b/shared-bindings/rtc/RTC.c index 9445d4fb0e47..f56467ee575f 100644 --- a/shared-bindings/rtc/RTC.c +++ b/shared-bindings/rtc/RTC.c @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Noralf Trønnes - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Noralf Trønnes +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/rtc/RTC.h b/shared-bindings/rtc/RTC.h index ede824fa2a24..720eb9eac99f 100644 --- a/shared-bindings/rtc/RTC.h +++ b/shared-bindings/rtc/RTC.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Noralf Trønnes - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Noralf Trønnes +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_RTC_RTC_H #define MICROPY_INCLUDED_SHARED_BINDINGS_RTC_RTC_H diff --git a/shared-bindings/rtc/__init__.c b/shared-bindings/rtc/__init__.c index 908b324071d8..e89a550dd64e 100644 --- a/shared-bindings/rtc/__init__.c +++ b/shared-bindings/rtc/__init__.c @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Noralf Trønnes - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Noralf Trønnes +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/runtime.h" diff --git a/shared-bindings/rtc/__init__.h b/shared-bindings/rtc/__init__.h index 04f8f8b08cbe..13dd2dd32e35 100644 --- a/shared-bindings/rtc/__init__.h +++ b/shared-bindings/rtc/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Noralf Trønnes - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Noralf Trønnes +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_RTC___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_RTC___INIT___H diff --git a/shared-bindings/sdcardio/SDCard.c b/shared-bindings/sdcardio/SDCard.c index 7f5f07ddd65f..bc5fb1d5ed20 100644 --- a/shared-bindings/sdcardio/SDCard.c +++ b/shared-bindings/sdcardio/SDCard.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/runtime.h" diff --git a/shared-bindings/sdcardio/SDCard.h b/shared-bindings/sdcardio/SDCard.h index 2e274b9d54f6..ac27b47aa4d2 100644 --- a/shared-bindings/sdcardio/SDCard.h +++ b/shared-bindings/sdcardio/SDCard.h @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017, 2018 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017, 2018 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/sdcardio/__init__.c b/shared-bindings/sdcardio/__init__.c index da97af685cbd..6df3d3c75891 100644 --- a/shared-bindings/sdcardio/__init__.c +++ b/shared-bindings/sdcardio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/sdcardio/__init__.h b/shared-bindings/sdcardio/__init__.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-bindings/sdcardio/__init__.h +++ b/shared-bindings/sdcardio/__init__.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-bindings/sdioio/SDCard.c b/shared-bindings/sdioio/SDCard.c index 2fb878aa081e..3994d83364cc 100644 --- a/shared-bindings/sdioio/SDCard.c +++ b/shared-bindings/sdioio/SDCard.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT // This file contains all of the Python API definitions for the // sdioio.SDCard class. diff --git a/shared-bindings/sdioio/SDCard.h b/shared-bindings/sdioio/SDCard.h index cf1576262c51..1a7506209d8b 100644 --- a/shared-bindings/sdioio/SDCard.h +++ b/shared-bindings/sdioio/SDCard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO_SDIO_H #define MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO_SDIO_H diff --git a/shared-bindings/sdioio/__init__.c b/shared-bindings/sdioio/__init__.c index 0d15a3e5d36c..4a761e8a9dd5 100644 --- a/shared-bindings/sdioio/__init__.c +++ b/shared-bindings/sdioio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/sdioio/__init__.h b/shared-bindings/sdioio/__init__.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-bindings/sdioio/__init__.h +++ b/shared-bindings/sdioio/__init__.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-bindings/sharpdisplay/SharpMemoryFramebuffer.c b/shared-bindings/sharpdisplay/SharpMemoryFramebuffer.c index 58a411369336..14c123c0fe30 100644 --- a/shared-bindings/sharpdisplay/SharpMemoryFramebuffer.c +++ b/shared-bindings/sharpdisplay/SharpMemoryFramebuffer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/objarray.h" #include "py/runtime.h" diff --git a/shared-bindings/sharpdisplay/SharpMemoryFramebuffer.h b/shared-bindings/sharpdisplay/SharpMemoryFramebuffer.h index b2c15ac49934..ccda641000a0 100644 --- a/shared-bindings/sharpdisplay/SharpMemoryFramebuffer.h +++ b/shared-bindings/sharpdisplay/SharpMemoryFramebuffer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/sharpdisplay/__init__.c b/shared-bindings/sharpdisplay/__init__.c index 90e99eea1d12..47f7b7b9553d 100644 --- a/shared-bindings/sharpdisplay/__init__.c +++ b/shared-bindings/sharpdisplay/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/sharpdisplay/__init__.h b/shared-bindings/sharpdisplay/__init__.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-bindings/sharpdisplay/__init__.h +++ b/shared-bindings/sharpdisplay/__init__.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-bindings/socketpool/Socket.c b/shared-bindings/socketpool/Socket.c index 417afcb96997..b8db8184490c 100644 --- a/shared-bindings/socketpool/Socket.c +++ b/shared-bindings/socketpool/Socket.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/socketpool/Socket.h" diff --git a/shared-bindings/socketpool/Socket.h b/shared-bindings/socketpool/Socket.h index ab54ea4a9c41..25782974f221 100644 --- a/shared-bindings/socketpool/Socket.h +++ b/shared-bindings/socketpool/Socket.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_SOCKETPOOL_SOCKET_H #define MICROPY_INCLUDED_SHARED_BINDINGS_SOCKETPOOL_SOCKET_H diff --git a/shared-bindings/socketpool/SocketPool.c b/shared-bindings/socketpool/SocketPool.c index 099f2ce19f83..417a76a2e696 100644 --- a/shared-bindings/socketpool/SocketPool.c +++ b/shared-bindings/socketpool/SocketPool.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/shared-bindings/socketpool/SocketPool.h b/shared-bindings/socketpool/SocketPool.h index ab1e1daa5bd2..fedf2c9e8a50 100644 --- a/shared-bindings/socketpool/SocketPool.h +++ b/shared-bindings/socketpool/SocketPool.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_SOCKETPOOL_SOCKETPOOL_H #define MICROPY_INCLUDED_SHARED_BINDINGS_SOCKETPOOL_SOCKETPOOL_H diff --git a/shared-bindings/socketpool/__init__.c b/shared-bindings/socketpool/__init__.c index 53993a978c03..64774272f13b 100644 --- a/shared-bindings/socketpool/__init__.c +++ b/shared-bindings/socketpool/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/objexcept.h" #include "py/objstr.h" diff --git a/shared-bindings/socketpool/__init__.h b/shared-bindings/socketpool/__init__.h index 46034f257d0c..4620a736042c 100644 --- a/shared-bindings/socketpool/__init__.h +++ b/shared-bindings/socketpool/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_SOCKETPOOL___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_SOCKETPOOL___INIT___H diff --git a/shared-bindings/socketpool/enum.h b/shared-bindings/socketpool/enum.h index 45dab2a9e1e2..78c9641a6924 100644 --- a/shared-bindings/socketpool/enum.h +++ b/shared-bindings/socketpool/enum.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/ssl/SSLContext.c b/shared-bindings/ssl/SSLContext.c index 6ac06ae194da..b82cb31ee804 100644 --- a/shared-bindings/ssl/SSLContext.c +++ b/shared-bindings/ssl/SSLContext.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/shared-bindings/ssl/SSLContext.h b/shared-bindings/ssl/SSLContext.h index 671edf73d622..b2bc4d24e2c8 100644 --- a/shared-bindings/ssl/SSLContext.h +++ b/shared-bindings/ssl/SSLContext.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_SSL_SSLCONTEXT_H #define MICROPY_INCLUDED_SHARED_BINDINGS_SSL_SSLCONTEXT_H diff --git a/shared-bindings/ssl/SSLSocket.c b/shared-bindings/ssl/SSLSocket.c index 4181ad3a156d..5f0337a2e802 100644 --- a/shared-bindings/ssl/SSLSocket.c +++ b/shared-bindings/ssl/SSLSocket.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/ssl/SSLSocket.h" diff --git a/shared-bindings/ssl/SSLSocket.h b/shared-bindings/ssl/SSLSocket.h index 1010817e37a2..4079048a6cb1 100644 --- a/shared-bindings/ssl/SSLSocket.h +++ b/shared-bindings/ssl/SSLSocket.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Lucian Copeland for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Lucian Copeland for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/ssl/__init__.c b/shared-bindings/ssl/__init__.c index 2e298163be44..2af83a328df0 100644 --- a/shared-bindings/ssl/__init__.c +++ b/shared-bindings/ssl/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/objexcept.h" #include "py/objstr.h" diff --git a/shared-bindings/ssl/__init__.h b/shared-bindings/ssl/__init__.h index 2b65d2b8de3d..5e185e412f7d 100644 --- a/shared-bindings/ssl/__init__.h +++ b/shared-bindings/ssl/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_SSL___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_SSL___INIT___H diff --git a/shared-bindings/storage/__init__.c b/shared-bindings/storage/__init__.c index 880088bbb347..77c5441336de 100644 --- a/shared-bindings/storage/__init__.c +++ b/shared-bindings/storage/__init__.c @@ -1,30 +1,10 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * Copyright (c) 2015 Josef Gajdusek - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// SPDX-FileCopyrightText: Copyright (c) 2015 Josef Gajdusek +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/storage/__init__.h b/shared-bindings/storage/__init__.h index ffe68c17c8ce..01b09e25debf 100644 --- a/shared-bindings/storage/__init__.h +++ b/shared-bindings/storage/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_STORAGE___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_STORAGE___INIT___H diff --git a/shared-bindings/struct/__init__.c b/shared-bindings/struct/__init__.c index 623210064e28..93b7666bf992 100644 --- a/shared-bindings/struct/__init__.c +++ b/shared-bindings/struct/__init__.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * Copyright (c) 2014 Paul Sokolovsky - * Copyright (c) 2017 Michael McWethy - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// SPDX-FileCopyrightText: Copyright (c) 2014 Paul Sokolovsky +// SPDX-FileCopyrightText: Copyright (c) 2017 Michael McWethy +// +// SPDX-License-Identifier: MIT #include #include diff --git a/shared-bindings/struct/__init__.h b/shared-bindings/struct/__init__.h index 4c7c65da38c1..bae3338157cc 100644 --- a/shared-bindings/struct/__init__.h +++ b/shared-bindings/struct/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_STRUCT___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_STRUCT___INIT___H diff --git a/shared-bindings/supervisor/RunReason.c b/shared-bindings/supervisor/RunReason.c index a2a5fe13efe9..4d25d7be3f64 100644 --- a/shared-bindings/supervisor/RunReason.c +++ b/shared-bindings/supervisor/RunReason.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/enum.h" diff --git a/shared-bindings/supervisor/RunReason.h b/shared-bindings/supervisor/RunReason.h index 391e6d306475..b7ddba51bf5a 100644 --- a/shared-bindings/supervisor/RunReason.h +++ b/shared-bindings/supervisor/RunReason.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/supervisor/Runtime.c b/shared-bindings/supervisor/Runtime.c index 2a9d16f7f71e..3a63816ccf4d 100644 --- a/shared-bindings/supervisor/Runtime.c +++ b/shared-bindings/supervisor/Runtime.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Michael Schroeder - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Michael Schroeder +// +// SPDX-License-Identifier: MIT #include #include "py/obj.h" diff --git a/shared-bindings/supervisor/Runtime.h b/shared-bindings/supervisor/Runtime.h index bc4e2db471f3..054281e54902 100644 --- a/shared-bindings/supervisor/Runtime.h +++ b/shared-bindings/supervisor/Runtime.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Michael Schroeder - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Michael Schroeder +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/supervisor/SafeModeReason.c b/shared-bindings/supervisor/SafeModeReason.c index 4c071a770a62..e974cf34dd1a 100644 --- a/shared-bindings/supervisor/SafeModeReason.c +++ b/shared-bindings/supervisor/SafeModeReason.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/enum.h" diff --git a/shared-bindings/supervisor/SafeModeReason.h b/shared-bindings/supervisor/SafeModeReason.h index d061d7515460..f8922bc1f28b 100644 --- a/shared-bindings/supervisor/SafeModeReason.h +++ b/shared-bindings/supervisor/SafeModeReason.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/supervisor/StatusBar.c b/shared-bindings/supervisor/StatusBar.c index e77e4a9f7189..af041facf46f 100644 --- a/shared-bindings/supervisor/StatusBar.c +++ b/shared-bindings/supervisor/StatusBar.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 by Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 by Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include "py/obj.h" diff --git a/shared-bindings/supervisor/StatusBar.h b/shared-bindings/supervisor/StatusBar.h index 12b337ea8470..b54ad44972ad 100644 --- a/shared-bindings/supervisor/StatusBar.h +++ b/shared-bindings/supervisor/StatusBar.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 by Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 by Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_STATUS_BAR_STATUS_H #define MICROPY_INCLUDED_SHARED_BINDINGS_STATUS_BAR_STATUS_H diff --git a/shared-bindings/supervisor/__init__.c b/shared-bindings/supervisor/__init__.c index 692f02f0e8fd..e026fd91d482 100644 --- a/shared-bindings/supervisor/__init__.c +++ b/shared-bindings/supervisor/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016-2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016-2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include "py/obj.h" diff --git a/shared-bindings/supervisor/__init__.h b/shared-bindings/supervisor/__init__.h index 134dc18d3bfb..c442534072ae 100644 --- a/shared-bindings/supervisor/__init__.h +++ b/shared-bindings/supervisor/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Michael Schroeder - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Michael Schroeder +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/synthio/Biquad.c b/shared-bindings/synthio/Biquad.c index b8dc73515463..a687c759d1db 100644 --- a/shared-bindings/synthio/Biquad.c +++ b/shared-bindings/synthio/Biquad.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Artyom Skrobov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Artyom Skrobov +// +// SPDX-License-Identifier: MIT #include #include diff --git a/shared-bindings/synthio/Biquad.h b/shared-bindings/synthio/Biquad.h index b25e059a7458..2b40960fc5d3 100644 --- a/shared-bindings/synthio/Biquad.h +++ b/shared-bindings/synthio/Biquad.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/synthio/LFO.c b/shared-bindings/synthio/LFO.c index 7b44bb883beb..40bb46cfa91d 100644 --- a/shared-bindings/synthio/LFO.c +++ b/shared-bindings/synthio/LFO.c @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Artyom Skrobov - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Artyom Skrobov +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/objproperty.h" diff --git a/shared-bindings/synthio/LFO.h b/shared-bindings/synthio/LFO.h index 8bcea7c328da..82fd352080e1 100644 --- a/shared-bindings/synthio/LFO.h +++ b/shared-bindings/synthio/LFO.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/synthio/Math.c b/shared-bindings/synthio/Math.c index d111263728aa..0a3b8a875b14 100644 --- a/shared-bindings/synthio/Math.c +++ b/shared-bindings/synthio/Math.c @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Artyom Skrobov - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Artyom Skrobov +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/objproperty.h" diff --git a/shared-bindings/synthio/Math.h b/shared-bindings/synthio/Math.h index 472546fc4227..48c0599ec854 100644 --- a/shared-bindings/synthio/Math.h +++ b/shared-bindings/synthio/Math.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/synthio/MidiTrack.c b/shared-bindings/synthio/MidiTrack.c index f9c5aa4b00fa..da1ebac70efe 100644 --- a/shared-bindings/synthio/MidiTrack.c +++ b/shared-bindings/synthio/MidiTrack.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Artyom Skrobov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Artyom Skrobov +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/synthio/MidiTrack.h b/shared-bindings/synthio/MidiTrack.h index cafe91343080..50a6c921cb65 100644 --- a/shared-bindings/synthio/MidiTrack.h +++ b/shared-bindings/synthio/MidiTrack.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Artyom Skrobov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Artyom Skrobov +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/synthio/Note.c b/shared-bindings/synthio/Note.c index 3fc0d780b1c9..174cce8a3a38 100644 --- a/shared-bindings/synthio/Note.c +++ b/shared-bindings/synthio/Note.c @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Artyom Skrobov - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Artyom Skrobov +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/synthio/Note.h b/shared-bindings/synthio/Note.h index ee6a4eda7594..0ee450acfe46 100644 --- a/shared-bindings/synthio/Note.h +++ b/shared-bindings/synthio/Note.h @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Artyom Skrobov - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Artyom Skrobov +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/synthio/Synthesizer.c b/shared-bindings/synthio/Synthesizer.c index 59c5966c01eb..e117792d7047 100644 --- a/shared-bindings/synthio/Synthesizer.c +++ b/shared-bindings/synthio/Synthesizer.c @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Artyom Skrobov - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Artyom Skrobov +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/synthio/Synthesizer.h b/shared-bindings/synthio/Synthesizer.h index 8ae0af3bf3c6..65e15ae88ad5 100644 --- a/shared-bindings/synthio/Synthesizer.h +++ b/shared-bindings/synthio/Synthesizer.h @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Artyom Skrobov - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Artyom Skrobov +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/synthio/__init__.c b/shared-bindings/synthio/__init__.c index f671ee80012c..3109b0a90399 100644 --- a/shared-bindings/synthio/__init__.c +++ b/shared-bindings/synthio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Artyom Skrobov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Artyom Skrobov +// +// SPDX-License-Identifier: MIT #include #include diff --git a/shared-bindings/synthio/__init__.h b/shared-bindings/synthio/__init__.h index e77e77ecc6a5..783eb80202de 100644 --- a/shared-bindings/synthio/__init__.h +++ b/shared-bindings/synthio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Artyom Skrobov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Artyom Skrobov +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/terminalio/Terminal.c b/shared-bindings/terminalio/Terminal.c index 6358493cd4cc..745b3f3a8f7f 100644 --- a/shared-bindings/terminalio/Terminal.c +++ b/shared-bindings/terminalio/Terminal.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/terminalio/Terminal.h b/shared-bindings/terminalio/Terminal.h index fda1c29bddac..cd5b22025fe2 100644 --- a/shared-bindings/terminalio/Terminal.h +++ b/shared-bindings/terminalio/Terminal.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_TERMINALIO_TERMINAL_H #define MICROPY_INCLUDED_SHARED_BINDINGS_TERMINALIO_TERMINAL_H diff --git a/shared-bindings/terminalio/__init__.c b/shared-bindings/terminalio/__init__.c index 3492390e5a76..81256dab58e7 100644 --- a/shared-bindings/terminalio/__init__.c +++ b/shared-bindings/terminalio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/terminalio/__init__.h b/shared-bindings/terminalio/__init__.h index 4be14dfc6460..ef81dbd7238e 100644 --- a/shared-bindings/terminalio/__init__.h +++ b/shared-bindings/terminalio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_TERMINALIO___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_TERMINALIO___INIT___H diff --git a/shared-bindings/time/__init__.c b/shared-bindings/time/__init__.c index 15b58e8010fe..0ce8e68280f8 100644 --- a/shared-bindings/time/__init__.c +++ b/shared-bindings/time/__init__.c @@ -1,30 +1,10 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * Copyright (c) 2015 Josef Gajdusek - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// SPDX-FileCopyrightText: Copyright (c) 2015 Josef Gajdusek +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/time/__init__.h b/shared-bindings/time/__init__.h index 432736a1ec8e..e8afaaf2f18a 100644 --- a/shared-bindings/time/__init__.h +++ b/shared-bindings/time/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_TIME___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_TIME___INIT___H diff --git a/shared-bindings/touchio/TouchIn.c b/shared-bindings/touchio/TouchIn.c index 982006b5325c..34739236e3b8 100644 --- a/shared-bindings/touchio/TouchIn.c +++ b/shared-bindings/touchio/TouchIn.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// +// SPDX-License-Identifier: MIT #include #include diff --git a/shared-bindings/touchio/TouchIn.h b/shared-bindings/touchio/TouchIn.h index 1da2cf190a5a..c8055e9ef519 100644 --- a/shared-bindings/touchio/TouchIn.h +++ b/shared-bindings/touchio/TouchIn.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_TOUCHIO_TOUCHIN_H #define MICROPY_INCLUDED_SHARED_BINDINGS_TOUCHIO_TOUCHIN_H diff --git a/shared-bindings/touchio/__init__.c b/shared-bindings/touchio/__init__.c index 502b3efa5ad5..ee1cc19f72f5 100644 --- a/shared-bindings/touchio/__init__.c +++ b/shared-bindings/touchio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/touchio/__init__.h b/shared-bindings/touchio/__init__.h index f1d3501418c0..58f21f0860d3 100644 --- a/shared-bindings/touchio/__init__.h +++ b/shared-bindings/touchio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_TOUCHIO___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_TOUCHIO___INIT___H diff --git a/shared-bindings/traceback/__init__.c b/shared-bindings/traceback/__init__.c index 6117515e8764..587cf43aed9f 100644 --- a/shared-bindings/traceback/__init__.c +++ b/shared-bindings/traceback/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include "py/stream.h" #include "py/runtime.h" diff --git a/shared-bindings/uheap/__init__.c b/shared-bindings/uheap/__init__.c index 08a8592a4d9b..f80235df7d03 100644 --- a/shared-bindings/uheap/__init__.c +++ b/shared-bindings/uheap/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/uheap/__init__.h b/shared-bindings/uheap/__init__.h index 53afb4172352..cc57fa026161 100644 --- a/shared-bindings/uheap/__init__.h +++ b/shared-bindings/uheap/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_UHEAP___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_UHEAP___INIT___H diff --git a/shared-bindings/usb/__init__.c b/shared-bindings/usb/__init__.c index 60297dcab068..afa70940bad7 100644 --- a/shared-bindings/usb/__init__.c +++ b/shared-bindings/usb/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/shared-bindings/usb/__init__.h b/shared-bindings/usb/__init__.h index d6722851c79b..a3eb3cbe1476 100644 --- a/shared-bindings/usb/__init__.h +++ b/shared-bindings/usb/__init__.h @@ -1,27 +1,7 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/usb/core/Device.c b/shared-bindings/usb/core/Device.c index 4da92aa2f140..6ff038581b82 100644 --- a/shared-bindings/usb/core/Device.c +++ b/shared-bindings/usb/core/Device.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // This file uses method signatures and comments derived from the PyUSB code // that has the below BSD-3 license. diff --git a/shared-bindings/usb/core/Device.h b/shared-bindings/usb/core/Device.h index c9de5d505f46..3a2b0f55bcb0 100644 --- a/shared-bindings/usb/core/Device.h +++ b/shared-bindings/usb/core/Device.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_USB_CORE_DEVICE_H #define MICROPY_INCLUDED_SHARED_BINDINGS_USB_CORE_DEVICE_H diff --git a/shared-bindings/usb/core/__init__.c b/shared-bindings/usb/core/__init__.c index 47c833ee0e15..b1f0056dd863 100644 --- a/shared-bindings/usb/core/__init__.c +++ b/shared-bindings/usb/core/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/shared-bindings/usb/core/__init__.h b/shared-bindings/usb/core/__init__.h index 40f3030a6d60..0dc08fae5325 100644 --- a/shared-bindings/usb/core/__init__.h +++ b/shared-bindings/usb/core/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/usb_cdc/Serial.c b/shared-bindings/usb_cdc/Serial.c index 696e401f6203..ae77d793a169 100644 --- a/shared-bindings/usb_cdc/Serial.c +++ b/shared-bindings/usb_cdc/Serial.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/usb_cdc/Serial.h b/shared-bindings/usb_cdc/Serial.h index cdf5c3a914ac..a48601cb42b6 100644 --- a/shared-bindings/usb_cdc/Serial.h +++ b/shared-bindings/usb_cdc/Serial.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_USB_CDC_SERIAL_H #define MICROPY_INCLUDED_SHARED_BINDINGS_USB_CDC_SERIAL_H diff --git a/shared-bindings/usb_cdc/__init__.c b/shared-bindings/usb_cdc/__init__.c index dfc2c4a886eb..cde90ecbc31e 100644 --- a/shared-bindings/usb_cdc/__init__.c +++ b/shared-bindings/usb_cdc/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/usb_cdc/__init__.h b/shared-bindings/usb_cdc/__init__.h index 0a517f4cec52..c28732e23f7e 100644 --- a/shared-bindings/usb_cdc/__init__.h +++ b/shared-bindings/usb_cdc/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_USB_CDC___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_USB_CDC___INIT___H diff --git a/shared-bindings/usb_hid/Device.c b/shared-bindings/usb_hid/Device.c index 1c75042caf50..6b300a522c0e 100644 --- a/shared-bindings/usb_hid/Device.c +++ b/shared-bindings/usb_hid/Device.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/objproperty.h" #include "shared-bindings/usb_hid/Device.h" diff --git a/shared-bindings/usb_hid/Device.h b/shared-bindings/usb_hid/Device.h index b0df43858f1d..6e01890aa014 100644 --- a/shared-bindings/usb_hid/Device.h +++ b/shared-bindings/usb_hid/Device.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_USB_HID_DEVICE_H #define MICROPY_INCLUDED_SHARED_BINDINGS_USB_HID_DEVICE_H diff --git a/shared-bindings/usb_hid/__init__.c b/shared-bindings/usb_hid/__init__.c index fb1d4918d1eb..321cea30470a 100644 --- a/shared-bindings/usb_hid/__init__.c +++ b/shared-bindings/usb_hid/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/shared-bindings/usb_hid/__init__.h b/shared-bindings/usb_hid/__init__.h index feaeed2545cb..445d939ec9ac 100644 --- a/shared-bindings/usb_hid/__init__.h +++ b/shared-bindings/usb_hid/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef SHARED_BINDINGS_USB_HID_H #define SHARED_BINDINGS_USB_HID_H diff --git a/shared-bindings/usb_host/Port.c b/shared-bindings/usb_host/Port.c index 64f08869b7a1..ae0852bb0dfd 100644 --- a/shared-bindings/usb_host/Port.c +++ b/shared-bindings/usb_host/Port.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared/runtime/context_manager_helpers.h" #include "shared-bindings/usb_host/Port.h" diff --git a/shared-bindings/usb_host/Port.h b/shared-bindings/usb_host/Port.h index ba8d298517d0..682590cbeb0d 100644 --- a/shared-bindings/usb_host/Port.h +++ b/shared-bindings/usb_host/Port.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_USB_HOST_PORT_H #define MICROPY_INCLUDED_SHARED_BINDINGS_USB_HOST_PORT_H diff --git a/shared-bindings/usb_host/__init__.c b/shared-bindings/usb_host/__init__.c index 6a683df503c7..e311db310576 100644 --- a/shared-bindings/usb_host/__init__.c +++ b/shared-bindings/usb_host/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/mphal.h" diff --git a/shared-bindings/usb_host/__init__.h b/shared-bindings/usb_host/__init__.h index d6722851c79b..a3eb3cbe1476 100644 --- a/shared-bindings/usb_host/__init__.h +++ b/shared-bindings/usb_host/__init__.h @@ -1,27 +1,7 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/usb_midi/PortIn.c b/shared-bindings/usb_midi/PortIn.c index cd6b03c1a4d6..a200af01bae5 100644 --- a/shared-bindings/usb_midi/PortIn.c +++ b/shared-bindings/usb_midi/PortIn.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/usb_midi/PortIn.h b/shared-bindings/usb_midi/PortIn.h index 58d017fa026a..d5d241e5ab52 100644 --- a/shared-bindings/usb_midi/PortIn.h +++ b/shared-bindings/usb_midi/PortIn.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_USB_MIDI_PORTIN_H #define MICROPY_INCLUDED_SHARED_BINDINGS_USB_MIDI_PORTIN_H diff --git a/shared-bindings/usb_midi/PortOut.c b/shared-bindings/usb_midi/PortOut.c index d3f85aae19d1..1fbba74d66d0 100644 --- a/shared-bindings/usb_midi/PortOut.c +++ b/shared-bindings/usb_midi/PortOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/usb_midi/PortOut.h b/shared-bindings/usb_midi/PortOut.h index 7d8a014dad47..d60d09dcbbbb 100644 --- a/shared-bindings/usb_midi/PortOut.h +++ b/shared-bindings/usb_midi/PortOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_USB_MIDI_PORTOUT_H #define MICROPY_INCLUDED_SHARED_BINDINGS_USB_MIDI_PORTOUT_H diff --git a/shared-bindings/usb_midi/__init__.c b/shared-bindings/usb_midi/__init__.c index 134ba26f1334..e4372fa91311 100644 --- a/shared-bindings/usb_midi/__init__.c +++ b/shared-bindings/usb_midi/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/usb_midi/__init__.h b/shared-bindings/usb_midi/__init__.h index b657cfe57b7e..7a9c997a2be2 100644 --- a/shared-bindings/usb_midi/__init__.h +++ b/shared-bindings/usb_midi/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_USB_MIDI___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_USB_MIDI___INIT___H diff --git a/shared-bindings/usb_video/USBFramebuffer.c b/shared-bindings/usb_video/USBFramebuffer.c index eefe5919bfc2..9bbcdde67415 100644 --- a/shared-bindings/usb_video/USBFramebuffer.c +++ b/shared-bindings/usb_video/USBFramebuffer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/objproperty.h" diff --git a/shared-bindings/usb_video/USBFramebuffer.h b/shared-bindings/usb_video/USBFramebuffer.h index e99fb246ffda..b974f61578ab 100644 --- a/shared-bindings/usb_video/USBFramebuffer.h +++ b/shared-bindings/usb_video/USBFramebuffer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/usb_video/__init__.c b/shared-bindings/usb_video/__init__.c index 95c1a8c106de..bcf8a108d4b1 100644 --- a/shared-bindings/usb_video/__init__.c +++ b/shared-bindings/usb_video/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "py/runtime.h" diff --git a/shared-bindings/usb_video/__init__.h b/shared-bindings/usb_video/__init__.h index d847f04a54bc..634a6f4a2dab 100644 --- a/shared-bindings/usb_video/__init__.h +++ b/shared-bindings/usb_video/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/ustack/__init__.c b/shared-bindings/ustack/__init__.c index b3850e42abd5..ec61f1629cb0 100644 --- a/shared-bindings/ustack/__init__.c +++ b/shared-bindings/ustack/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/ustack/__init__.h b/shared-bindings/ustack/__init__.h index 561d581b28ed..3053b05ac72c 100644 --- a/shared-bindings/ustack/__init__.h +++ b/shared-bindings/ustack/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_USTACK___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_USTACK___INIT___H diff --git a/shared-bindings/util.c b/shared-bindings/util.c index 2f15b9936c5c..0711428b4de0 100644 --- a/shared-bindings/util.c +++ b/shared-bindings/util.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" diff --git a/shared-bindings/util.h b/shared-bindings/util.h index b03c5b67bb85..f1e4dca13aa4 100644 --- a/shared-bindings/util.h +++ b/shared-bindings/util.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/vectorio/Circle.c b/shared-bindings/vectorio/Circle.c index 6fb6d760fea6..0d3d0681bfbb 100644 --- a/shared-bindings/vectorio/Circle.c +++ b/shared-bindings/vectorio/Circle.c @@ -1,54 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 by kvc0/WarriorOfWire - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 by Sean Cross - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 by kvc0/WarriorOfWire +// +// SPDX-License-Identifier: MIT #include "shared-bindings/vectorio/__init__.h" #include "shared-bindings/vectorio/Circle.h" diff --git a/shared-bindings/vectorio/Circle.h b/shared-bindings/vectorio/Circle.h index 8d4c8b9a5f30..33a0cc2e3d1a 100644 --- a/shared-bindings/vectorio/Circle.h +++ b/shared-bindings/vectorio/Circle.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 by kvc0/WarriorOfWire - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 by kvc0/WarriorOfWire +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_CIRCLE_H #define MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_CIRCLE_H diff --git a/shared-bindings/vectorio/Polygon.c b/shared-bindings/vectorio/Polygon.c index ca80a1f4e162..2a5236c3f022 100644 --- a/shared-bindings/vectorio/Polygon.c +++ b/shared-bindings/vectorio/Polygon.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 by kvc0/WarriorOfWire - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 by kvc0/WarriorOfWire +// +// SPDX-License-Identifier: MIT #include "shared-bindings/vectorio/__init__.h" #include "shared-module/vectorio/__init__.h" diff --git a/shared-bindings/vectorio/Polygon.h b/shared-bindings/vectorio/Polygon.h index 085769fe5314..2843c4ba1ad9 100644 --- a/shared-bindings/vectorio/Polygon.h +++ b/shared-bindings/vectorio/Polygon.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 by kvc0/WarriorOfWire - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 by kvc0/WarriorOfWire +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_POLYGON_H #define MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_POLYGON_H diff --git a/shared-bindings/vectorio/Rectangle.c b/shared-bindings/vectorio/Rectangle.c index 887dc59d2f7e..5f51dfb39d59 100644 --- a/shared-bindings/vectorio/Rectangle.c +++ b/shared-bindings/vectorio/Rectangle.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 by kvc0/WarriorOfWire - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 by kvc0/WarriorOfWire +// +// SPDX-License-Identifier: MIT #include "shared-bindings/vectorio/__init__.h" #include "shared-bindings/vectorio/Rectangle.h" diff --git a/shared-bindings/vectorio/Rectangle.h b/shared-bindings/vectorio/Rectangle.h index 8e6580163bca..58435f98c4e3 100644 --- a/shared-bindings/vectorio/Rectangle.h +++ b/shared-bindings/vectorio/Rectangle.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 by kvc0/WarriorOfWire - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 by kvc0/WarriorOfWire +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_RECTANGLE_H #define MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_RECTANGLE_H diff --git a/shared-bindings/vectorio/VectorShape.c b/shared-bindings/vectorio/VectorShape.c index 91ae40659536..83ecca8b23db 100644 --- a/shared-bindings/vectorio/VectorShape.c +++ b/shared-bindings/vectorio/VectorShape.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 by kvc0/WarriorOfWire - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 by kvc0/WarriorOfWire +// +// SPDX-License-Identifier: MIT #include "shared-module/vectorio/__init__.h" #include "shared-bindings/vectorio/VectorShape.h" diff --git a/shared-bindings/vectorio/VectorShape.h b/shared-bindings/vectorio/VectorShape.h index 658577dfd23d..7f86829076a6 100644 --- a/shared-bindings/vectorio/VectorShape.h +++ b/shared-bindings/vectorio/VectorShape.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 by kvc0/WarriorOfWire - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 by kvc0/WarriorOfWire +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_SHAPE_H #define MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_SHAPE_H diff --git a/shared-bindings/vectorio/__init__.c b/shared-bindings/vectorio/__init__.c index f09e118319be..cc9501217182 100644 --- a/shared-bindings/vectorio/__init__.c +++ b/shared-bindings/vectorio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 by kvc0/WarriorOfWire - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 by kvc0/WarriorOfWire +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/vectorio/__init__.h b/shared-bindings/vectorio/__init__.h index 622b20684974..bbb01b934b61 100644 --- a/shared-bindings/vectorio/__init__.h +++ b/shared-bindings/vectorio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 by kvc0/WarriorOfWire - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 by kvc0/WarriorOfWire +// +// SPDX-License-Identifier: MIT #ifndef SHARED_MODULE_VECTORIO__INIT__H #define SHARED_MODULE_VECTORIO__INIT__H diff --git a/shared-bindings/warnings/__init__.c b/shared-bindings/warnings/__init__.c index 2da64bdf4ceb..b19229ab6468 100644 --- a/shared-bindings/warnings/__init__.c +++ b/shared-bindings/warnings/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/warnings/__init__.h b/shared-bindings/warnings/__init__.h index 23781cf9d1ed..8a4d5745050d 100644 --- a/shared-bindings/warnings/__init__.h +++ b/shared-bindings/warnings/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-bindings/watchdog/WatchDogMode.c b/shared-bindings/watchdog/WatchDogMode.c index 944ab451fad7..b3747a032c24 100644 --- a/shared-bindings/watchdog/WatchDogMode.c +++ b/shared-bindings/watchdog/WatchDogMode.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 MicroDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 MicroDev +// +// SPDX-License-Identifier: MIT #include "py/enum.h" diff --git a/shared-bindings/watchdog/WatchDogMode.h b/shared-bindings/watchdog/WatchDogMode.h index fd27d4d46a0e..4bbbe39a78bb 100644 --- a/shared-bindings/watchdog/WatchDogMode.h +++ b/shared-bindings/watchdog/WatchDogMode.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Sean Cross for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Sean Cross for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_WATCHDOG_WATCHDOGMODE_H #define MICROPY_INCLUDED_SHARED_BINDINGS_WATCHDOG_WATCHDOGMODE_H diff --git a/shared-bindings/watchdog/WatchDogTimer.c b/shared-bindings/watchdog/WatchDogTimer.c index 2d276ac82c87..103e667a7b2d 100644 --- a/shared-bindings/watchdog/WatchDogTimer.c +++ b/shared-bindings/watchdog/WatchDogTimer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Nick Moore for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Nick Moore for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/watchdog/WatchDogTimer.h b/shared-bindings/watchdog/WatchDogTimer.h index a566b267d69c..c336c6866d7a 100644 --- a/shared-bindings/watchdog/WatchDogTimer.h +++ b/shared-bindings/watchdog/WatchDogTimer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Noralf Trønnes - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Noralf Trønnes +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_WATCHDOG_WATCHDOGTIMER_H #define MICROPY_INCLUDED_SHARED_BINDINGS_WATCHDOG_WATCHDOGTIMER_H diff --git a/shared-bindings/watchdog/__init__.c b/shared-bindings/watchdog/__init__.c index da7fb238688a..a5d6a40c9e10 100644 --- a/shared-bindings/watchdog/__init__.c +++ b/shared-bindings/watchdog/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Paul Sokolovsky - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Paul Sokolovsky +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/watchdog/__init__.h b/shared-bindings/watchdog/__init__.h index 092114112923..8d1c4239b3e9 100644 --- a/shared-bindings/watchdog/__init__.h +++ b/shared-bindings/watchdog/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_WATCHDOG___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_WATCHDOG___INIT___H diff --git a/shared-bindings/wifi/AuthMode.c b/shared-bindings/wifi/AuthMode.c index 528fcd414375..422bbd10ecdf 100644 --- a/shared-bindings/wifi/AuthMode.c +++ b/shared-bindings/wifi/AuthMode.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include "py/enum.h" diff --git a/shared-bindings/wifi/AuthMode.h b/shared-bindings/wifi/AuthMode.h index c514fb2a32a3..bc0952870088 100644 --- a/shared-bindings/wifi/AuthMode.h +++ b/shared-bindings/wifi/AuthMode.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_AUTHMODE_H #define MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_AUTHMODE_H diff --git a/shared-bindings/wifi/Monitor.c b/shared-bindings/wifi/Monitor.c index 07f5fc890d8a..dfacaed4f54f 100644 --- a/shared-bindings/wifi/Monitor.c +++ b/shared-bindings/wifi/Monitor.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include "py/mpstate.h" #include "py/runtime.h" diff --git a/shared-bindings/wifi/Monitor.h b/shared-bindings/wifi/Monitor.h index b828616ddb2e..6439ee933f2b 100644 --- a/shared-bindings/wifi/Monitor.h +++ b/shared-bindings/wifi/Monitor.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_MONITOR_H #define MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_MONITOR_H diff --git a/shared-bindings/wifi/Network.c b/shared-bindings/wifi/Network.c index 4bb860404b40..195757f53893 100644 --- a/shared-bindings/wifi/Network.c +++ b/shared-bindings/wifi/Network.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/wifi/Network.h b/shared-bindings/wifi/Network.h index 574d690f3712..fc499c3168ca 100644 --- a/shared-bindings/wifi/Network.h +++ b/shared-bindings/wifi/Network.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_NETWORK_H #define MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_NETWORK_H diff --git a/shared-bindings/wifi/Packet.c b/shared-bindings/wifi/Packet.c index ef9d23b7a9b3..df383f13f76d 100644 --- a/shared-bindings/wifi/Packet.c +++ b/shared-bindings/wifi/Packet.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include "py/enum.h" diff --git a/shared-bindings/wifi/Packet.h b/shared-bindings/wifi/Packet.h index 09dfddfc9875..1522440ea699 100644 --- a/shared-bindings/wifi/Packet.h +++ b/shared-bindings/wifi/Packet.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_PACKET_H #define MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_PACKET_H diff --git a/shared-bindings/wifi/Radio.c b/shared-bindings/wifi/Radio.c index 056016f8a682..c58d09e42e36 100644 --- a/shared-bindings/wifi/Radio.c +++ b/shared-bindings/wifi/Radio.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/wifi/__init__.h" #include "shared-bindings/wifi/AuthMode.h" diff --git a/shared-bindings/wifi/Radio.h b/shared-bindings/wifi/Radio.h index 7e85dc8a4cd9..4c46205179c0 100644 --- a/shared-bindings/wifi/Radio.h +++ b/shared-bindings/wifi/Radio.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_RADIO_H #define MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_RADIO_H diff --git a/shared-bindings/wifi/ScannedNetworks.c b/shared-bindings/wifi/ScannedNetworks.c index cb91829a9e1f..5b44d466ccd3 100644 --- a/shared-bindings/wifi/ScannedNetworks.c +++ b/shared-bindings/wifi/ScannedNetworks.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2017 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2017 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-bindings/wifi/ScannedNetworks.h b/shared-bindings/wifi/ScannedNetworks.h index 8e0aa435d052..0ecab5a42a72 100644 --- a/shared-bindings/wifi/ScannedNetworks.h +++ b/shared-bindings/wifi/ScannedNetworks.h @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2017 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2017 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_SCANNEDNETWORKS_H #define MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_SCANNEDNETWORKS_H diff --git a/shared-bindings/wifi/__init__.c b/shared-bindings/wifi/__init__.c index e3750271037e..0bd9e8c7b64a 100644 --- a/shared-bindings/wifi/__init__.c +++ b/shared-bindings/wifi/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/wifi/__init__.h" #include "shared-bindings/wifi/AuthMode.h" diff --git a/shared-bindings/wifi/__init__.h b/shared-bindings/wifi/__init__.h index 9553e92ce162..f4493a2cefd5 100644 --- a/shared-bindings/wifi/__init__.h +++ b/shared-bindings/wifi/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_WIFI___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_WIFI___INIT___H diff --git a/shared-bindings/zlib/__init__.c b/shared-bindings/zlib/__init__.c index 7a218f9a5b28..237c68f3b762 100644 --- a/shared-bindings/zlib/__init__.c +++ b/shared-bindings/zlib/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Mark Komus - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Mark Komus +// +// SPDX-License-Identifier: MIT #include #include diff --git a/shared-bindings/zlib/__init__.h b/shared-bindings/zlib/__init__.h index 06ffb4aef65a..9e2146e0e2b9 100644 --- a/shared-bindings/zlib/__init__.h +++ b/shared-bindings/zlib/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Mark Komus - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Mark Komus +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ZLIB___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_ZLIB___INIT___H diff --git a/shared-module/_bleio/Address.c b/shared-module/_bleio/Address.c index 8c8b043fec9f..b40abb3d560c 100644 --- a/shared-module/_bleio/Address.c +++ b/shared-module/_bleio/Address.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-module/_bleio/Address.h b/shared-module/_bleio/Address.h index 39789842f7b6..b67c1f68f322 100644 --- a/shared-module/_bleio/Address.h +++ b/shared-module/_bleio/Address.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_BLEIO_ADDRESS_H #define MICROPY_INCLUDED_SHARED_MODULE_BLEIO_ADDRESS_H diff --git a/shared-module/_bleio/Attribute.c b/shared-module/_bleio/Attribute.c index 9c75a69fd19f..b12f2b121deb 100644 --- a/shared-module/_bleio/Attribute.c +++ b/shared-module/_bleio/Attribute.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-module/_bleio/Attribute.h b/shared-module/_bleio/Attribute.h index a498a14a51c4..1cd7bce5881b 100644 --- a/shared-module/_bleio/Attribute.h +++ b/shared-module/_bleio/Attribute.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_BLEIO_ATTRIBUTE_H #define MICROPY_INCLUDED_SHARED_MODULE_BLEIO_ATTRIBUTE_H diff --git a/shared-module/_bleio/Characteristic.h b/shared-module/_bleio/Characteristic.h index 298592b9ebe8..36d399702dd2 100644 --- a/shared-module/_bleio/Characteristic.h +++ b/shared-module/_bleio/Characteristic.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_BLEIO_CHARACTERISTIC_H #define MICROPY_INCLUDED_SHARED_MODULE_BLEIO_CHARACTERISTIC_H diff --git a/shared-module/_bleio/ScanEntry.c b/shared-module/_bleio/ScanEntry.c index 7a57d8aedc3c..32d808de0048 100644 --- a/shared-module/_bleio/ScanEntry.c +++ b/shared-module/_bleio/ScanEntry.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2017 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2017 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-module/_bleio/ScanEntry.h b/shared-module/_bleio/ScanEntry.h index 9e142fd6e0bb..80039d092bbc 100644 --- a/shared-module/_bleio/ScanEntry.h +++ b/shared-module/_bleio/ScanEntry.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_BLEIO_SCANENTRY_H #define MICROPY_INCLUDED_SHARED_MODULE_BLEIO_SCANENTRY_H diff --git a/shared-module/_bleio/ScanResults.c b/shared-module/_bleio/ScanResults.c index 31f11c7eb13a..795b186e2487 100644 --- a/shared-module/_bleio/ScanResults.c +++ b/shared-module/_bleio/ScanResults.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * Copyright (c) 2017 Glenn Ruben Bakke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// SPDX-FileCopyrightText: Copyright (c) 2017 Glenn Ruben Bakke +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-module/_bleio/ScanResults.h b/shared-module/_bleio/ScanResults.h index 945809c8d911..51474fa69587 100644 --- a/shared-module/_bleio/ScanResults.h +++ b/shared-module/_bleio/ScanResults.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Dan Halbert for Adafruit Industries - * Copyright (c) 2018 Artur Pacholec - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Artur Pacholec +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_BLEIO_SCANRESULTS_H #define MICROPY_INCLUDED_SHARED_MODULE_BLEIO_SCANRESULTS_H diff --git a/shared-module/_eve/__init__.c b/shared-module/_eve/__init__.c index a39e6f9ee8ec..c2d81ce76aa1 100644 --- a/shared-module/_eve/__init__.c +++ b/shared-module/_eve/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 James Bowman for Excamera Labs - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 James Bowman for Excamera Labs +// +// SPDX-License-Identifier: MIT #include #include diff --git a/shared-module/_eve/__init__.h b/shared-module/_eve/__init__.h index 5217d860ab29..27269e96c478 100644 --- a/shared-module/_eve/__init__.h +++ b/shared-module/_eve/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 James Bowman for Excamera Labs - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 James Bowman for Excamera Labs +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE__EVE___INIT___H #define MICROPY_INCLUDED_SHARED_MODULE__EVE___INIT___H diff --git a/shared-module/_pixelmap/PixelMap.c b/shared-module/_pixelmap/PixelMap.c index bbaaf2db96cd..a2a9f2cebfb1 100644 --- a/shared-module/_pixelmap/PixelMap.c +++ b/shared-module/_pixelmap/PixelMap.c @@ -1,29 +1,9 @@ -/* - * This file is part of the CircuitPython project, https://github.com/adafruit/circuitpython - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Rose Hooper - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Rose Hooper +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/smallint.h" #include "py/runtime.h" diff --git a/shared-module/_pixelmap/PixelMap.h b/shared-module/_pixelmap/PixelMap.h index 192d6a4f9cd9..092621f2820d 100644 --- a/shared-module/_pixelmap/PixelMap.h +++ b/shared-module/_pixelmap/PixelMap.h @@ -1,29 +1,9 @@ -/* - * This file is part of the CircuitPython project, https://github.com/adafruit/circuitpython - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Rose Hooper - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Rose Hooper +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/_pixelmap/__init__.c b/shared-module/_pixelmap/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/_pixelmap/__init__.c +++ b/shared-module/_pixelmap/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/_stage/Layer.c b/shared-module/_stage/Layer.c index 6d06e7261f82..949ac8e4f970 100644 --- a/shared-module/_stage/Layer.c +++ b/shared-module/_stage/Layer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Radomir Dopieralski - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Radomir Dopieralski +// +// SPDX-License-Identifier: MIT #include "Layer.h" #include "__init__.h" diff --git a/shared-module/_stage/Layer.h b/shared-module/_stage/Layer.h index 42338476414e..bfe232310128 100644 --- a/shared-module/_stage/Layer.h +++ b/shared-module/_stage/Layer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Radomir Dopieralski - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Radomir Dopieralski +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE__STAGE_LAYER_H #define MICROPY_INCLUDED_SHARED_MODULE__STAGE_LAYER_H diff --git a/shared-module/_stage/Text.c b/shared-module/_stage/Text.c index a803b85de43e..f26cc492f6c5 100644 --- a/shared-module/_stage/Text.c +++ b/shared-module/_stage/Text.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Radomir Dopieralski - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Radomir Dopieralski +// +// SPDX-License-Identifier: MIT #include "Text.h" #include "__init__.h" diff --git a/shared-module/_stage/Text.h b/shared-module/_stage/Text.h index dd75465d176e..6db600a1078c 100644 --- a/shared-module/_stage/Text.h +++ b/shared-module/_stage/Text.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Radomir Dopieralski - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Radomir Dopieralski +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE__STAGE_TEXT_H #define MICROPY_INCLUDED_SHARED_MODULE__STAGE_TEXT_H diff --git a/shared-module/_stage/__init__.c b/shared-module/_stage/__init__.c index 36562232c594..c23d05673457 100644 --- a/shared-module/_stage/__init__.c +++ b/shared-module/_stage/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Radomir Dopieralski - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Radomir Dopieralski +// +// SPDX-License-Identifier: MIT #include "Layer.h" #include "Text.h" diff --git a/shared-module/_stage/__init__.h b/shared-module/_stage/__init__.h index d7e1467945ba..22904584e862 100644 --- a/shared-module/_stage/__init__.h +++ b/shared-module/_stage/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Radomir Dopieralski - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Radomir Dopieralski +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/adafruit_bus_device/__init__.c b/shared-module/adafruit_bus_device/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/adafruit_bus_device/__init__.c +++ b/shared-module/adafruit_bus_device/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/adafruit_bus_device/i2c_device/I2CDevice.c b/shared-module/adafruit_bus_device/i2c_device/I2CDevice.c index 85bd430a9652..0795e29f3829 100644 --- a/shared-module/adafruit_bus_device/i2c_device/I2CDevice.c +++ b/shared-module/adafruit_bus_device/i2c_device/I2CDevice.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Mark Komus - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Mark Komus +// +// SPDX-License-Identifier: MIT #include "shared-bindings/adafruit_bus_device/i2c_device/I2CDevice.h" #include "shared-bindings/busio/I2C.h" diff --git a/shared-module/adafruit_bus_device/i2c_device/I2CDevice.h b/shared-module/adafruit_bus_device/i2c_device/I2CDevice.h index b76bafb2c11b..538a9fe027a2 100644 --- a/shared-module/adafruit_bus_device/i2c_device/I2CDevice.h +++ b/shared-module/adafruit_bus_device/i2c_device/I2CDevice.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_SHARED_MODULE_BUSDEVICE_I2CDEVICE_H #define MICROPY_INCLUDED_ATMEL_SAMD_SHARED_MODULE_BUSDEVICE_I2CDEVICE_H diff --git a/shared-module/adafruit_bus_device/spi_device/SPIDevice.c b/shared-module/adafruit_bus_device/spi_device/SPIDevice.c index c90d7cc60d05..cd5cb74fc251 100644 --- a/shared-module/adafruit_bus_device/spi_device/SPIDevice.c +++ b/shared-module/adafruit_bus_device/spi_device/SPIDevice.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Mark Komus - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Mark Komus +// +// SPDX-License-Identifier: MIT #include "shared-bindings/adafruit_bus_device/spi_device/SPIDevice.h" #include "shared-bindings/busio/SPI.h" diff --git a/shared-module/adafruit_bus_device/spi_device/SPIDevice.h b/shared-module/adafruit_bus_device/spi_device/SPIDevice.h index 7f577c6c1450..8c86cdef84d2 100644 --- a/shared-module/adafruit_bus_device/spi_device/SPIDevice.h +++ b/shared-module/adafruit_bus_device/spi_device/SPIDevice.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_SHARED_MODULE_BUSDEVICE_SPIDEVICE_H #define MICROPY_INCLUDED_ATMEL_SAMD_SHARED_MODULE_BUSDEVICE_SPIDEVICE_H diff --git a/shared-module/adafruit_pixelbuf/PixelBuf.c b/shared-module/adafruit_pixelbuf/PixelBuf.c index 10ef46b45e90..8f5aa434ccd2 100644 --- a/shared-module/adafruit_pixelbuf/PixelBuf.c +++ b/shared-module/adafruit_pixelbuf/PixelBuf.c @@ -1,28 +1,8 @@ -/* - * This file is part of the CircuitPython project, https://github.com/adafruit/circuitpython - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Rose Hooper - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Rose Hooper +// +// SPDX-License-Identifier: MIT #include "py/obj.h" diff --git a/shared-module/adafruit_pixelbuf/PixelBuf.h b/shared-module/adafruit_pixelbuf/PixelBuf.h index a4a753baa045..67c75552fb2f 100644 --- a/shared-module/adafruit_pixelbuf/PixelBuf.h +++ b/shared-module/adafruit_pixelbuf/PixelBuf.h @@ -1,28 +1,8 @@ -/* - * This file is part of the CircuitPython project, https://github.com/adafruit/circuitpython - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Rose Hooper - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Rose Hooper +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/adafruit_pixelbuf/__init__.c b/shared-module/adafruit_pixelbuf/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/adafruit_pixelbuf/__init__.c +++ b/shared-module/adafruit_pixelbuf/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/aesio/__init__.c b/shared-module/aesio/__init__.c index d40fb81c4068..335738a54d58 100644 --- a/shared-module/aesio/__init__.c +++ b/shared-module/aesio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 by Sean Cross - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 by Sean Cross +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-module/aesio/__init__.h b/shared-module/aesio/__init__.h index 1a0bb86967f1..21445e1b73c0 100644 --- a/shared-module/aesio/__init__.h +++ b/shared-module/aesio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_AESIO__INIT__H #define MICROPY_INCLUDED_SHARED_MODULE_AESIO__INIT__H diff --git a/shared-module/aesio/aes.h b/shared-module/aesio/aes.h index b1706ac4edc7..b248ce2eb01b 100644 --- a/shared-module/aesio/aes.h +++ b/shared-module/aesio/aes.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 by Sean Cross - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 by Sean Cross +// +// SPDX-License-Identifier: MIT #ifndef _AES_H_ #define _AES_H_ diff --git a/shared-module/atexit/__init__.c b/shared-module/atexit/__init__.c index 640bfe0173f7..ff369e83c77c 100644 --- a/shared-module/atexit/__init__.c +++ b/shared-module/atexit/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include "py/gc.h" #include "py/runtime.h" diff --git a/shared-module/atexit/__init__.h b/shared-module/atexit/__init__.h index d88d066ded99..dffb2293ab6f 100644 --- a/shared-module/atexit/__init__.h +++ b/shared-module/atexit/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_ATEXIT___INIT___H #define MICROPY_INCLUDED_SHARED_MODULE_ATEXIT___INIT___H diff --git a/shared-module/audiocore/RawSample.c b/shared-module/audiocore/RawSample.c index e7d765e197af..a985c29fb691 100644 --- a/shared-module/audiocore/RawSample.c +++ b/shared-module/audiocore/RawSample.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/audiocore/RawSample.h" diff --git a/shared-module/audiocore/RawSample.h b/shared-module/audiocore/RawSample.h index 10d395b8a3e6..b3179a47d025 100644 --- a/shared-module/audiocore/RawSample.h +++ b/shared-module/audiocore/RawSample.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_AUDIOIO_RAWSAMPLE_H #define MICROPY_INCLUDED_SHARED_MODULE_AUDIOIO_RAWSAMPLE_H diff --git a/shared-module/audiocore/WaveFile.c b/shared-module/audiocore/WaveFile.c index 10d9775d80ef..50f56303e950 100644 --- a/shared-module/audiocore/WaveFile.c +++ b/shared-module/audiocore/WaveFile.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/audiocore/WaveFile.h" diff --git a/shared-module/audiocore/WaveFile.h b/shared-module/audiocore/WaveFile.h index 986359e16ecd..d1b9acd008b7 100644 --- a/shared-module/audiocore/WaveFile.h +++ b/shared-module/audiocore/WaveFile.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_AUDIOIO_WAVEFILE_H #define MICROPY_INCLUDED_SHARED_MODULE_AUDIOIO_WAVEFILE_H diff --git a/shared-module/audiocore/__init__.c b/shared-module/audiocore/__init__.c index b85586851bbc..ff3c9652807c 100644 --- a/shared-module/audiocore/__init__.c +++ b/shared-module/audiocore/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-module/audioio/__init__.h" diff --git a/shared-module/audiocore/__init__.h b/shared-module/audiocore/__init__.h index e57602519c43..7888a46d5cae 100644 --- a/shared-module/audiocore/__init__.h +++ b/shared-module/audiocore/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_AUDIOCORE__INIT__H #define MICROPY_INCLUDED_SHARED_MODULE_AUDIOCORE__INIT__H diff --git a/shared-module/audioio/__init__.c b/shared-module/audioio/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/audioio/__init__.c +++ b/shared-module/audioio/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/audioio/__init__.h b/shared-module/audioio/__init__.h index 53b2d4a161b8..edc15700a1d1 100644 --- a/shared-module/audioio/__init__.h +++ b/shared-module/audioio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_AUDIOIO__INIT__H #define MICROPY_INCLUDED_SHARED_MODULE_AUDIOIO__INIT__H diff --git a/shared-module/audiomixer/Mixer.c b/shared-module/audiomixer/Mixer.c index 5a0338cb4a6e..f086e78323be 100644 --- a/shared-module/audiomixer/Mixer.c +++ b/shared-module/audiomixer/Mixer.c @@ -1,30 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * 2018 DeanM for Adafruit Industries - * 2019 Michael Schroeder - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/audiomixer/Mixer.h" #include "shared-bindings/audiomixer/MixerVoice.h" diff --git a/shared-module/audiomixer/Mixer.h b/shared-module/audiomixer/Mixer.h index c9228d9f13af..ec21546397a5 100644 --- a/shared-module/audiomixer/Mixer.h +++ b/shared-module/audiomixer/Mixer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_AUDIOMIXER_MIXER_H #define MICROPY_INCLUDED_SHARED_MODULE_AUDIOMIXER_MIXER_H diff --git a/shared-module/audiomixer/MixerVoice.c b/shared-module/audiomixer/MixerVoice.c index 4bdd6119c476..c32d37cdec28 100644 --- a/shared-module/audiomixer/MixerVoice.c +++ b/shared-module/audiomixer/MixerVoice.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 DeanM for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 DeanM for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/audiomixer/Mixer.h" #include "shared-bindings/audiomixer/MixerVoice.h" #include "shared-module/audiomixer/MixerVoice.h" diff --git a/shared-module/audiomixer/MixerVoice.h b/shared-module/audiomixer/MixerVoice.h index 1fdc91d11baa..2a272755cc74 100644 --- a/shared-module/audiomixer/MixerVoice.h +++ b/shared-module/audiomixer/MixerVoice.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 DeanM for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 DeanM for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef SHARED_MODULE_AUDIOMIXER_MIXERVOICE_H_ #define SHARED_MODULE_AUDIOMIXER_MIXERVOICE_H_ diff --git a/shared-module/audiomixer/__init__.c b/shared-module/audiomixer/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/audiomixer/__init__.c +++ b/shared-module/audiomixer/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/audiomixer/__init__.h b/shared-module/audiomixer/__init__.h index 35b73155881f..1a9dad492e9f 100644 --- a/shared-module/audiomixer/__init__.h +++ b/shared-module/audiomixer/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_AUDIOMIXER__INIT__H #define MICROPY_INCLUDED_SHARED_MODULE_AUDIOMIXER__INIT__H diff --git a/shared-module/audiomp3/MP3Decoder.c b/shared-module/audiomp3/MP3Decoder.c index 08349bde70ba..70ee318fd965 100644 --- a/shared-module/audiomp3/MP3Decoder.c +++ b/shared-module/audiomp3/MP3Decoder.c @@ -1,29 +1,9 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2019 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2019 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/audiomp3/MP3Decoder.h" diff --git a/shared-module/audiomp3/MP3Decoder.h b/shared-module/audiomp3/MP3Decoder.h index 17616d4a28fc..c4fa8ac61de2 100644 --- a/shared-module/audiomp3/MP3Decoder.h +++ b/shared-module/audiomp3/MP3Decoder.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft - * Copyright (c) 2019 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft +// SPDX-FileCopyrightText: Copyright (c) 2019 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_AUDIOIO_MP3FILE_H #define MICROPY_INCLUDED_SHARED_MODULE_AUDIOIO_MP3FILE_H diff --git a/shared-module/audiomp3/__init__.c b/shared-module/audiomp3/__init__.c index 5141f4ab05b4..2d1c2f7ccd0f 100644 --- a/shared-module/audiomp3/__init__.c +++ b/shared-module/audiomp3/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include "py/mpconfig.h" diff --git a/shared-module/audiomp3/__init__.h b/shared-module/audiomp3/__init__.h index 6d8a8514ed24..bce99d2b8c9d 100644 --- a/shared-module/audiomp3/__init__.h +++ b/shared-module/audiomp3/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/audiopwmio/__init__.c b/shared-module/audiopwmio/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/audiopwmio/__init__.c +++ b/shared-module/audiopwmio/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/audiopwmio/__init__.h b/shared-module/audiopwmio/__init__.h index 964e4aafe2bc..9aa04ce0d2ce 100644 --- a/shared-module/audiopwmio/__init__.h +++ b/shared-module/audiopwmio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_AUDIOPWMIO__INIT__H #define MICROPY_INCLUDED_SHARED_MODULE_AUDIOPWMIO__INIT__H diff --git a/shared-module/bitbangio/I2C.c b/shared-module/bitbangio/I2C.c index 7155fef2cf83..0b062608203a 100644 --- a/shared-module/bitbangio/I2C.c +++ b/shared-module/bitbangio/I2C.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2016 Damien P. George, Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Damien P. George, Scott Shawcroft +// +// SPDX-License-Identifier: MIT #include "shared-bindings/bitbangio/I2C.h" #include "py/mperrno.h" diff --git a/shared-module/bitbangio/I2C.h b/shared-module/bitbangio/I2C.h index 763c03adc656..a15d29f41fdd 100644 --- a/shared-module/bitbangio/I2C.h +++ b/shared-module/bitbangio/I2C.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_BITBANGIO_I2C_H #define MICROPY_INCLUDED_SHARED_MODULE_BITBANGIO_I2C_H diff --git a/shared-module/bitbangio/SPI.c b/shared-module/bitbangio/SPI.c index dce9a7c2ed34..56e978985edc 100644 --- a/shared-module/bitbangio/SPI.c +++ b/shared-module/bitbangio/SPI.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// +// SPDX-License-Identifier: MIT #include "py/mpconfig.h" #include "py/obj.h" diff --git a/shared-module/bitbangio/SPI.h b/shared-module/bitbangio/SPI.h index cc71a0319a8c..dcb760f222e5 100644 --- a/shared-module/bitbangio/SPI.h +++ b/shared-module/bitbangio/SPI.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_BITBANGIO_SPI_H #define MICROPY_INCLUDED_SHARED_MODULE_BITBANGIO_SPI_H diff --git a/shared-module/bitbangio/__init__.c b/shared-module/bitbangio/__init__.c index 674343c5333d..6283dbe0c6ab 100644 --- a/shared-module/bitbangio/__init__.c +++ b/shared-module/bitbangio/__init__.c @@ -1,27 +1,7 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT // Nothing now. diff --git a/shared-module/bitmapfilter/__init__.c b/shared-module/bitmapfilter/__init__.c index c58a78f70da6..cdce674628cd 100644 --- a/shared-module/bitmapfilter/__init__.c +++ b/shared-module/bitmapfilter/__init__.c @@ -1,11 +1,10 @@ -/* - * Copyright (c) 2013-2021 Ibrahim Abdelkader - * Copyright (c) 2013-2021 Kwabena W. Agyeman - * Copyright (c) 2024 Jeff Epler for Adafruit Industries - * - * This work is licensed under the MIT license, see the file LICENSE for details. - * Adapted from https://github.com/openmv/openmv/blob/master/bitmap/omv/imlib/filter.c#L2083 - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013-2021 Ibrahim Abdelkader +// SPDX-FileCopyrightText: Copyright (c) 2013-2021 Kwabena W. Agyeman +// SPDX-FileCopyrightText: Copyright (c) 2024 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/shared-module/bitmapfilter/__init__.h b/shared-module/bitmapfilter/__init__.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/bitmapfilter/__init__.h +++ b/shared-module/bitmapfilter/__init__.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/bitmapfilter/macros.h b/shared-module/bitmapfilter/macros.h index cb4b36b9cb32..c76b64f937c5 100644 --- a/shared-module/bitmapfilter/macros.h +++ b/shared-module/bitmapfilter/macros.h @@ -1,11 +1,10 @@ -/* - * Copyright (c) 2013-2021 Ibrahim Abdelkader - * Copyright (c) 2013-2021 Kwabena W. Agyeman - * Copyright (c) 2024 Jeff Epler for Adafruit Industries - * - * This work is licensed under the MIT license, see the file LICENSE for details. - * Adapted from https://github.com/openmv/openmv/blob/master/bitmap/omv/imlib/filter.c#L2083 - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013-2021 Ibrahim Abdelkader +// SPDX-FileCopyrightText: Copyright (c) 2013-2021 Kwabena W. Agyeman +// SPDX-FileCopyrightText: Copyright (c) 2024 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/bitmaptools/__init__.c b/shared-module/bitmaptools/__init__.c index fe7e08208e60..df329aacf1c2 100644 --- a/shared-module/bitmaptools/__init__.c +++ b/shared-module/bitmaptools/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Kevin Matocha, Jose David Montoya - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Kevin Matocha, Jose David Montoya +// +// SPDX-License-Identifier: MIT #include "shared/runtime/interrupt_char.h" #include "shared-bindings/bitmaptools/__init__.h" diff --git a/shared-module/bitops/__init__.c b/shared-module/bitops/__init__.c index 7e1cf7d322e3..2ae1c5d9b9d7 100644 --- a/shared-module/bitops/__init__.c +++ b/shared-module/bitops/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the CircuitPython project, https://github.com/adafruit/circuitpython - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/bitops/__init__.h" diff --git a/shared-module/bitops/__init__.h b/shared-module/bitops/__init__.h index 79de80e35ebc..d2293e8488c8 100644 --- a/shared-module/bitops/__init__.h +++ b/shared-module/bitops/__init__.h @@ -1,27 +1,7 @@ -/* - * This file is part of the CircuitPython project, https://github.com/adafruit/circuitpython - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/board/__init__.c b/shared-module/board/__init__.c index 2b0a29248e2b..34169c9c6242 100644 --- a/shared-module/board/__init__.c +++ b/shared-module/board/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/board/__init__.h" #include "shared-bindings/microcontroller/Pin.h" diff --git a/shared-module/board/__init__.h b/shared-module/board/__init__.h index 8b3723bddae2..c51533e9b3ec 100644 --- a/shared-module/board/__init__.h +++ b/shared-module/board/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_BOARD__INIT__H #define MICROPY_INCLUDED_SHARED_MODULE_BOARD__INIT__H diff --git a/shared-module/busdisplay/BusDisplay.c b/shared-module/busdisplay/BusDisplay.c index 3753a1c2407a..603ade26f833 100644 --- a/shared-module/busdisplay/BusDisplay.c +++ b/shared-module/busdisplay/BusDisplay.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/busdisplay/BusDisplay.h" diff --git a/shared-module/busdisplay/BusDisplay.h b/shared-module/busdisplay/BusDisplay.h index 88778089a0fe..87e09a821e5a 100644 --- a/shared-module/busdisplay/BusDisplay.h +++ b/shared-module/busdisplay/BusDisplay.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/busdisplay/__init__.c b/shared-module/busdisplay/__init__.c index 674343c5333d..6283dbe0c6ab 100644 --- a/shared-module/busdisplay/__init__.c +++ b/shared-module/busdisplay/__init__.c @@ -1,27 +1,7 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT // Nothing now. diff --git a/shared-module/canio/Match.c b/shared-module/canio/Match.c index ae8fd40893d1..a69cfc07b509 100644 --- a/shared-module/canio/Match.c +++ b/shared-module/canio/Match.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-module/canio/Match.h" #include "shared-bindings/canio/Match.h" diff --git a/shared-module/canio/Match.h b/shared-module/canio/Match.h index b52191d7c4df..69ab69266b4e 100644 --- a/shared-module/canio/Match.h +++ b/shared-module/canio/Match.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/canio/Message.c b/shared-module/canio/Message.c index 7c0dcf739a3f..0c048f0197e9 100644 --- a/shared-module/canio/Message.c +++ b/shared-module/canio/Message.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-module/canio/Message.h" #include "shared-bindings/canio/Message.h" diff --git a/shared-module/canio/Message.h b/shared-module/canio/Message.h index fafcaffe7a39..92c93599fabe 100644 --- a/shared-module/canio/Message.h +++ b/shared-module/canio/Message.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/canio/RemoteTransmissionRequest.c b/shared-module/canio/RemoteTransmissionRequest.c index 55c0d3ba22f5..ebaebc2d2027 100644 --- a/shared-module/canio/RemoteTransmissionRequest.c +++ b/shared-module/canio/RemoteTransmissionRequest.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-module/canio/RemoteTransmissionRequest.h" #include "shared-bindings/canio/RemoteTransmissionRequest.h" diff --git a/shared-module/canio/RemoteTransmissionRequest.h b/shared-module/canio/RemoteTransmissionRequest.h index 2f09b19c6fbc..023c533ba33b 100644 --- a/shared-module/canio/RemoteTransmissionRequest.h +++ b/shared-module/canio/RemoteTransmissionRequest.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/displayio/Bitmap.c b/shared-module/displayio/Bitmap.c index e34ad6ef71ac..d0060edae543 100644 --- a/shared-module/displayio/Bitmap.c +++ b/shared-module/displayio/Bitmap.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/displayio/Bitmap.h" diff --git a/shared-module/displayio/Bitmap.h b/shared-module/displayio/Bitmap.h index 2025e56282c5..1861ee54e30a 100644 --- a/shared-module/displayio/Bitmap.h +++ b/shared-module/displayio/Bitmap.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_BITMAP_H #define MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_BITMAP_H diff --git a/shared-module/displayio/ColorConverter.c b/shared-module/displayio/ColorConverter.c index b6bf4da3129c..512d45108ebe 100644 --- a/shared-module/displayio/ColorConverter.c +++ b/shared-module/displayio/ColorConverter.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/displayio/ColorConverter.h" diff --git a/shared-module/displayio/ColorConverter.h b/shared-module/displayio/ColorConverter.h index 7ac5062ff36a..e62a86e361c0 100644 --- a/shared-module/displayio/ColorConverter.h +++ b/shared-module/displayio/ColorConverter.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_COLORCONVERTER_H #define MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_COLORCONVERTER_H diff --git a/shared-module/displayio/Group.c b/shared-module/displayio/Group.c index d20ad5ebe67a..e2a1a527062b 100644 --- a/shared-module/displayio/Group.c +++ b/shared-module/displayio/Group.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/displayio/Group.h" diff --git a/shared-module/displayio/Group.h b/shared-module/displayio/Group.h index 6a9432adfbab..a7336c4fb1ee 100644 --- a/shared-module/displayio/Group.h +++ b/shared-module/displayio/Group.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_GROUP_H #define MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_GROUP_H diff --git a/shared-module/displayio/OnDiskBitmap.c b/shared-module/displayio/OnDiskBitmap.c index 1175a576e46b..6777bd738a9e 100644 --- a/shared-module/displayio/OnDiskBitmap.c +++ b/shared-module/displayio/OnDiskBitmap.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/displayio/OnDiskBitmap.h" #include "shared-bindings/displayio/ColorConverter.h" diff --git a/shared-module/displayio/OnDiskBitmap.h b/shared-module/displayio/OnDiskBitmap.h index 806b13f7f962..68421bb4fce8 100644 --- a/shared-module/displayio/OnDiskBitmap.h +++ b/shared-module/displayio/OnDiskBitmap.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_ONDISKBITMAP_H #define MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_ONDISKBITMAP_H diff --git a/shared-module/displayio/Palette.c b/shared-module/displayio/Palette.c index 8cd2da8973ff..d80f1c47da17 100644 --- a/shared-module/displayio/Palette.c +++ b/shared-module/displayio/Palette.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/displayio/Palette.h" diff --git a/shared-module/displayio/Palette.h b/shared-module/displayio/Palette.h index 050423d05268..be3eaf80e605 100644 --- a/shared-module/displayio/Palette.h +++ b/shared-module/displayio/Palette.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_PALETTE_H #define MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_PALETTE_H diff --git a/shared-module/displayio/Shape.c b/shared-module/displayio/Shape.c index 25c5d1527a9b..f36e9e32ac17 100644 --- a/shared-module/displayio/Shape.c +++ b/shared-module/displayio/Shape.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/displayio/Shape.h" diff --git a/shared-module/displayio/Shape.h b/shared-module/displayio/Shape.h index 2cac5d73b24f..65273e2cb364 100644 --- a/shared-module/displayio/Shape.h +++ b/shared-module/displayio/Shape.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_SHAPE_H #define MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_SHAPE_H diff --git a/shared-module/displayio/TileGrid.c b/shared-module/displayio/TileGrid.c index 696de59d979d..923065d7c546 100644 --- a/shared-module/displayio/TileGrid.c +++ b/shared-module/displayio/TileGrid.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/displayio/TileGrid.h" diff --git a/shared-module/displayio/TileGrid.h b/shared-module/displayio/TileGrid.h index 4f5cfbc62fac..afccc73722cc 100644 --- a/shared-module/displayio/TileGrid.h +++ b/shared-module/displayio/TileGrid.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_TILEGRID_H #define MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_TILEGRID_H diff --git a/shared-module/displayio/__init__.c b/shared-module/displayio/__init__.c index 9fe4d5e94e5d..fe4a4cc84a3f 100644 --- a/shared-module/displayio/__init__.c +++ b/shared-module/displayio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-module/displayio/__init__.h b/shared-module/displayio/__init__.h index 475426cd7a0c..95bacbd0eb52 100644 --- a/shared-module/displayio/__init__.h +++ b/shared-module/displayio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #if CIRCUITPY_BUSDISPLAY #include "shared-bindings/busdisplay/BusDisplay.h" diff --git a/shared-module/displayio/area.c b/shared-module/displayio/area.c index 6d0f94d9cc58..6a79e2aeeea0 100644 --- a/shared-module/displayio/area.c +++ b/shared-module/displayio/area.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-module/displayio/area.h" diff --git a/shared-module/displayio/area.h b/shared-module/displayio/area.h index 47cb48bcdd65..29646ddf8155 100644 --- a/shared-module/displayio/area.h +++ b/shared-module/displayio/area.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_AREA_H #define MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_AREA_H diff --git a/shared-module/displayio/bus_core.c b/shared-module/displayio/bus_core.c index 301606c1f33b..c945a342cf89 100644 --- a/shared-module/displayio/bus_core.c +++ b/shared-module/displayio/bus_core.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-module/displayio/bus_core.h" diff --git a/shared-module/displayio/bus_core.h b/shared-module/displayio/bus_core.h index d5d516fc92d3..838454c92e6d 100644 --- a/shared-module/displayio/bus_core.h +++ b/shared-module/displayio/bus_core.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/displayio/display_core.c b/shared-module/displayio/display_core.c index a2771c4defaa..dfcddde77965 100644 --- a/shared-module/displayio/display_core.c +++ b/shared-module/displayio/display_core.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-module/displayio/display_core.h" diff --git a/shared-module/displayio/display_core.h b/shared-module/displayio/display_core.h index 315c693e2368..f3fe20236368 100644 --- a/shared-module/displayio/display_core.h +++ b/shared-module/displayio/display_core.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/displayio/mipi_constants.h b/shared-module/displayio/mipi_constants.h index 3cb7e4292fa4..30992a807d14 100644 --- a/shared-module/displayio/mipi_constants.h +++ b/shared-module/displayio/mipi_constants.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_MIPI_CONSTANTS_H #define MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_MIPI_CONSTANTS_H diff --git a/shared-module/dotclockframebuffer/__init__.c b/shared-module/dotclockframebuffer/__init__.c index 0b1b5c59ac14..730a5cf1bef6 100644 --- a/shared-module/dotclockframebuffer/__init__.c +++ b/shared-module/dotclockframebuffer/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/dotclockframebuffer/__init__.h" diff --git a/shared-module/epaperdisplay/EPaperDisplay.c b/shared-module/epaperdisplay/EPaperDisplay.c index 15013bb7e738..23a69d7f320d 100644 --- a/shared-module/epaperdisplay/EPaperDisplay.c +++ b/shared-module/epaperdisplay/EPaperDisplay.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/epaperdisplay/EPaperDisplay.h" diff --git a/shared-module/epaperdisplay/EPaperDisplay.h b/shared-module/epaperdisplay/EPaperDisplay.h index b3ea040123a2..7c72bf1f9546 100644 --- a/shared-module/epaperdisplay/EPaperDisplay.h +++ b/shared-module/epaperdisplay/EPaperDisplay.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/epaperdisplay/__init__.c b/shared-module/epaperdisplay/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/epaperdisplay/__init__.c +++ b/shared-module/epaperdisplay/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/floppyio/__init__.c b/shared-module/floppyio/__init__.c index cb41dba0c393..0903701987ea 100644 --- a/shared-module/floppyio/__init__.c +++ b/shared-module/floppyio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" #include "py/mphal.h" diff --git a/shared-module/fontio/BuiltinFont.c b/shared-module/fontio/BuiltinFont.c index cb5b7f9cb19d..e24fe9c7f373 100644 --- a/shared-module/fontio/BuiltinFont.c +++ b/shared-module/fontio/BuiltinFont.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/fontio/BuiltinFont.h" diff --git a/shared-module/fontio/BuiltinFont.h b/shared-module/fontio/BuiltinFont.h index 79c8614194e4..61deb09ffb1d 100644 --- a/shared-module/fontio/BuiltinFont.h +++ b/shared-module/fontio/BuiltinFont.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_FONTIO_BUILTINFONT_H #define MICROPY_INCLUDED_SHARED_MODULE_FONTIO_BUILTINFONT_H diff --git a/shared-module/fontio/__init__.c b/shared-module/fontio/__init__.c index 674343c5333d..6283dbe0c6ab 100644 --- a/shared-module/fontio/__init__.c +++ b/shared-module/fontio/__init__.c @@ -1,27 +1,7 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT // Nothing now. diff --git a/shared-module/fourwire/FourWire.c b/shared-module/fourwire/FourWire.c index 720238f0e6c7..0a168fa1563f 100644 --- a/shared-module/fourwire/FourWire.c +++ b/shared-module/fourwire/FourWire.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/fourwire/FourWire.h" diff --git a/shared-module/fourwire/FourWire.h b/shared-module/fourwire/FourWire.h index ba365554d1d2..629a426b3b03 100644 --- a/shared-module/fourwire/FourWire.h +++ b/shared-module/fourwire/FourWire.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/fourwire/__init__.c b/shared-module/fourwire/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/fourwire/__init__.c +++ b/shared-module/fourwire/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/framebufferio/FramebufferDisplay.c b/shared-module/framebufferio/FramebufferDisplay.c index 9e9c9a093f2c..348d8c0e646a 100644 --- a/shared-module/framebufferio/FramebufferDisplay.c +++ b/shared-module/framebufferio/FramebufferDisplay.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/framebufferio/FramebufferDisplay.h" diff --git a/shared-module/framebufferio/FramebufferDisplay.h b/shared-module/framebufferio/FramebufferDisplay.h index 9f6b04e2f9f7..eb3875881471 100644 --- a/shared-module/framebufferio/FramebufferDisplay.h +++ b/shared-module/framebufferio/FramebufferDisplay.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_FRAMEBUFFERDISPLAY_H #define MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_FRAMEBUFFERDISPLAY_H diff --git a/shared-module/framebufferio/__init__.c b/shared-module/framebufferio/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/framebufferio/__init__.c +++ b/shared-module/framebufferio/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/framebufferio/__init__.h b/shared-module/framebufferio/__init__.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/framebufferio/__init__.h +++ b/shared-module/framebufferio/__init__.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/getpass/__init__.c b/shared-module/getpass/__init__.c index 72469a686f48..5263ff637d68 100644 --- a/shared-module/getpass/__init__.c +++ b/shared-module/getpass/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include "py/mphal.h" #include "shared/readline/readline.h" diff --git a/shared-module/getpass/__init__.h b/shared-module/getpass/__init__.h index 80595d41ba5e..96a1d3b0051c 100644 --- a/shared-module/getpass/__init__.h +++ b/shared-module/getpass/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_GETPASS___INIT___H #define MICROPY_INCLUDED_SHARED_MODULE_GETPASS___INIT___H diff --git a/shared-module/gifio/GifWriter.c b/shared-module/gifio/GifWriter.c index 698e2e714458..8747f4a486ca 100644 --- a/shared-module/gifio/GifWriter.c +++ b/shared-module/gifio/GifWriter.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * Copyright (c) 2013-2021 Ibrahim Abdelkader - * Copyright (c) 2013-2021 Kwabena W. Agyeman - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2013-2021 Ibrahim Abdelkader +// SPDX-FileCopyrightText: Copyright (c) 2013-2021 Kwabena W. Agyeman +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-module/gifio/GifWriter.h b/shared-module/gifio/GifWriter.h index 5ed57bb02210..67726d243ea4 100644 --- a/shared-module/gifio/GifWriter.h +++ b/shared-module/gifio/GifWriter.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/gifio/OnDiskGif.c b/shared-module/gifio/OnDiskGif.c index 7e27810bf2d0..2b95e875c716 100644 --- a/shared-module/gifio/OnDiskGif.c +++ b/shared-module/gifio/OnDiskGif.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Mark Komus - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Mark Komus +// +// SPDX-License-Identifier: MIT #include "shared-bindings/gifio/OnDiskGif.h" #include "shared-bindings/displayio/Bitmap.h" diff --git a/shared-module/gifio/OnDiskGif.h b/shared-module/gifio/OnDiskGif.h index 6138337391e6..b3bcb390b684 100644 --- a/shared-module/gifio/OnDiskGif.h +++ b/shared-module/gifio/OnDiskGif.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Mark Komus - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Mark Komus +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_ONDISKGIF_H #define MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_ONDISKGIF_H diff --git a/shared-module/gifio/__init__.c b/shared-module/gifio/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/gifio/__init__.c +++ b/shared-module/gifio/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/gifio/__init__.h b/shared-module/gifio/__init__.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/gifio/__init__.h +++ b/shared-module/gifio/__init__.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/hashlib/Hash.c b/shared-module/hashlib/Hash.c index 66102ad9923b..a454966d9936 100644 --- a/shared-module/hashlib/Hash.c +++ b/shared-module/hashlib/Hash.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/hashlib/Hash.h" #include "shared-module/hashlib/__init__.h" diff --git a/shared-module/hashlib/Hash.h b/shared-module/hashlib/Hash.h index 9792538e0a43..ccc82037cb7a 100644 --- a/shared-module/hashlib/Hash.h +++ b/shared-module/hashlib/Hash.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/hashlib/__init__.c b/shared-module/hashlib/__init__.c index 4afa44a8c7bf..be3a9f189596 100644 --- a/shared-module/hashlib/__init__.c +++ b/shared-module/hashlib/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/hashlib/__init__.h" #include "shared-module/hashlib/__init__.h" diff --git a/shared-module/hashlib/__init__.h b/shared-module/hashlib/__init__.h index 295d860b9203..f72882a1c03b 100644 --- a/shared-module/hashlib/__init__.h +++ b/shared-module/hashlib/__init__.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2014 Paul Sokolovsky - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2014 Paul Sokolovsky +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/i2cdisplaybus/I2CDisplayBus.c b/shared-module/i2cdisplaybus/I2CDisplayBus.c index 364ad24b60c8..47b5865d1585 100644 --- a/shared-module/i2cdisplaybus/I2CDisplayBus.c +++ b/shared-module/i2cdisplaybus/I2CDisplayBus.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/i2cdisplaybus/I2CDisplayBus.h" diff --git a/shared-module/i2cdisplaybus/I2CDisplayBus.h b/shared-module/i2cdisplaybus/I2CDisplayBus.h index be5a24a951d7..04375f86e6f7 100644 --- a/shared-module/i2cdisplaybus/I2CDisplayBus.h +++ b/shared-module/i2cdisplaybus/I2CDisplayBus.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/i2cdisplaybus/__init__.c b/shared-module/i2cdisplaybus/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/i2cdisplaybus/__init__.c +++ b/shared-module/i2cdisplaybus/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/imagecapture/ParallelImageCapture.c b/shared-module/imagecapture/ParallelImageCapture.c index 6d2197fcfc27..7aadf45f0285 100644 --- a/shared-module/imagecapture/ParallelImageCapture.c +++ b/shared-module/imagecapture/ParallelImageCapture.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/imagecapture/ParallelImageCapture.h" #include "py/runtime.h" diff --git a/shared-module/ipaddress/IPv4Address.c b/shared-module/ipaddress/IPv4Address.c index 6850fcadc016..3fa06e52eae2 100644 --- a/shared-module/ipaddress/IPv4Address.c +++ b/shared-module/ipaddress/IPv4Address.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" diff --git a/shared-module/ipaddress/IPv4Address.h b/shared-module/ipaddress/IPv4Address.h index 3f2bde0911fb..a0d3a220ae38 100644 --- a/shared-module/ipaddress/IPv4Address.h +++ b/shared-module/ipaddress/IPv4Address.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_IPADDRESS_IPV4ADDRESS_H #define MICROPY_INCLUDED_SHARED_MODULE_IPADDRESS_IPV4ADDRESS_H diff --git a/shared-module/ipaddress/__init__.c b/shared-module/ipaddress/__init__.c index 4801500f74f3..ea04d0448079 100644 --- a/shared-module/ipaddress/__init__.c +++ b/shared-module/ipaddress/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/ipaddress/__init__.h" #include "shared-bindings/ipaddress/IPv4Address.h" diff --git a/shared-module/ipaddress/__init__.h b/shared-module/ipaddress/__init__.h index 7d5f2c220786..cd5b996dd0ea 100644 --- a/shared-module/ipaddress/__init__.h +++ b/shared-module/ipaddress/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_IPADDRESS___INIT___H #define MICROPY_INCLUDED_SHARED_MODULE_IPADDRESS___INIT___H diff --git a/shared-module/is31fl3741/FrameBuffer.c b/shared-module/is31fl3741/FrameBuffer.c index 2fb36a0b7ab0..7f4660d857c3 100644 --- a/shared-module/is31fl3741/FrameBuffer.c +++ b/shared-module/is31fl3741/FrameBuffer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Mark Komus - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Mark Komus +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-module/is31fl3741/FrameBuffer.h b/shared-module/is31fl3741/FrameBuffer.h index 4f71bb8e043c..938a4cc5d477 100644 --- a/shared-module/is31fl3741/FrameBuffer.h +++ b/shared-module/is31fl3741/FrameBuffer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Mark Komus - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Mark Komus +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/is31fl3741/IS31FL3741.c b/shared-module/is31fl3741/IS31FL3741.c index b4d814ff1b7e..35ee08107b97 100644 --- a/shared-module/is31fl3741/IS31FL3741.c +++ b/shared-module/is31fl3741/IS31FL3741.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Mark Komus - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Mark Komus +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-module/is31fl3741/IS31FL3741.h b/shared-module/is31fl3741/IS31FL3741.h index 03f1902c4725..5d011d7f8925 100644 --- a/shared-module/is31fl3741/IS31FL3741.h +++ b/shared-module/is31fl3741/IS31FL3741.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Mark Komus - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Mark Komus +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/is31fl3741/__init__.c b/shared-module/is31fl3741/__init__.c index c267047eda3d..289f14b0caad 100644 --- a/shared-module/is31fl3741/__init__.c +++ b/shared-module/is31fl3741/__init__.c @@ -1,25 +1,5 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Mark Komus - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Mark Komus +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/is31fl3741/__init__.h b/shared-module/is31fl3741/__init__.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/is31fl3741/__init__.h +++ b/shared-module/is31fl3741/__init__.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/jpegio/JpegDecoder.c b/shared-module/jpegio/JpegDecoder.c index d642e98cb9f2..484ba8e7ccd0 100644 --- a/shared-module/jpegio/JpegDecoder.c +++ b/shared-module/jpegio/JpegDecoder.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" diff --git a/shared-module/jpegio/JpegDecoder.h b/shared-module/jpegio/JpegDecoder.h index 0fc6426ba96c..504692912954 100644 --- a/shared-module/jpegio/JpegDecoder.h +++ b/shared-module/jpegio/JpegDecoder.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" #include "lib/tjpgd/src/tjpgd.h" diff --git a/shared-module/jpegio/__init__.c b/shared-module/jpegio/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/jpegio/__init__.c +++ b/shared-module/jpegio/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/jpegio/__init__.h b/shared-module/jpegio/__init__.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/jpegio/__init__.h +++ b/shared-module/jpegio/__init__.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/keypad/Event.c b/shared-module/keypad/Event.c index 70a30e38311f..15ae24655ee0 100644 --- a/shared-module/keypad/Event.c +++ b/shared-module/keypad/Event.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-module/keypad/Event.h" #include "shared-bindings/keypad/Event.h" diff --git a/shared-module/keypad/Event.h b/shared-module/keypad/Event.h index c30eb9aa3879..b7e004f443d9 100644 --- a/shared-module/keypad/Event.h +++ b/shared-module/keypad/Event.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_EVENT_H #define MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_EVENT_H diff --git a/shared-module/keypad/EventQueue.c b/shared-module/keypad/EventQueue.c index 9b508769c52a..8d831d7a38e6 100644 --- a/shared-module/keypad/EventQueue.c +++ b/shared-module/keypad/EventQueue.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/keypad/Event.h" #include "shared-bindings/keypad/EventQueue.h" diff --git a/shared-module/keypad/EventQueue.h b/shared-module/keypad/EventQueue.h index fc46ac3a0fe3..4477497c6e2a 100644 --- a/shared-module/keypad/EventQueue.h +++ b/shared-module/keypad/EventQueue.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_EVENTQUEUE_H #define MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_EVENTQUEUE_H diff --git a/shared-module/keypad/KeyMatrix.c b/shared-module/keypad/KeyMatrix.c index 856e595a2843..7706e335af82 100644 --- a/shared-module/keypad/KeyMatrix.c +++ b/shared-module/keypad/KeyMatrix.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-module/keypad/KeyMatrix.h b/shared-module/keypad/KeyMatrix.h index 8049fcbb9035..cef5a5a9e36c 100644 --- a/shared-module/keypad/KeyMatrix.h +++ b/shared-module/keypad/KeyMatrix.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_KEYMATRIX_H #define MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_KEYMATRIX_H diff --git a/shared-module/keypad/Keys.c b/shared-module/keypad/Keys.c index 51d3836788e6..39d50f95e323 100644 --- a/shared-module/keypad/Keys.c +++ b/shared-module/keypad/Keys.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-module/keypad/Keys.h b/shared-module/keypad/Keys.h index 6bd7d7ac31e9..f8f382923040 100644 --- a/shared-module/keypad/Keys.h +++ b/shared-module/keypad/Keys.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_KEYS_H #define MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_KEYS_H diff --git a/shared-module/keypad/ShiftRegisterKeys.c b/shared-module/keypad/ShiftRegisterKeys.c index 64e36c619cd0..f65c9a0532fc 100644 --- a/shared-module/keypad/ShiftRegisterKeys.c +++ b/shared-module/keypad/ShiftRegisterKeys.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-module/keypad/ShiftRegisterKeys.h b/shared-module/keypad/ShiftRegisterKeys.h index 0c2ccfb63bde..b8d5c74a328f 100644 --- a/shared-module/keypad/ShiftRegisterKeys.h +++ b/shared-module/keypad/ShiftRegisterKeys.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_SHIFTREGISTERKEYS_H #define MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_SHIFTREGISTERKEYS_H diff --git a/shared-module/keypad/__init__.c b/shared-module/keypad/__init__.c index 1bbb613cac5e..e43c7bce4fb0 100644 --- a/shared-module/keypad/__init__.c +++ b/shared-module/keypad/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include "shared-bindings/keypad/__init__.h" diff --git a/shared-module/keypad/__init__.h b/shared-module/keypad/__init__.h index da81710b9302..0bc6f16599f8 100644 --- a/shared-module/keypad/__init__.h +++ b/shared-module/keypad/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef SHARED_MODULE_KEYPAD_H #define SHARED_MODULE_KEYPAD_H diff --git a/shared-module/keypad_demux/DemuxKeyMatrix.c b/shared-module/keypad_demux/DemuxKeyMatrix.c index a399295ae4be..42a0a0e68cc1 100644 --- a/shared-module/keypad_demux/DemuxKeyMatrix.c +++ b/shared-module/keypad_demux/DemuxKeyMatrix.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 CDarius - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 CDarius +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-module/keypad_demux/DemuxKeyMatrix.h b/shared-module/keypad_demux/DemuxKeyMatrix.h index 414c2fb50360..583e05fa8a5e 100644 --- a/shared-module/keypad_demux/DemuxKeyMatrix.h +++ b/shared-module/keypad_demux/DemuxKeyMatrix.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 CDarius - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 CDarius +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_DEMUX_DEMUXKEYMATRIX_H #define MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_DEMUX_DEMUXKEYMATRIX_H diff --git a/shared-module/keypad_demux/__init__.c b/shared-module/keypad_demux/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/keypad_demux/__init__.c +++ b/shared-module/keypad_demux/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/max3421e/Max3421E.c b/shared-module/max3421e/Max3421E.c index b1bb6e164445..4946e4e7d8df 100644 --- a/shared-module/max3421e/Max3421E.c +++ b/shared-module/max3421e/Max3421E.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/max3421e/Max3421E.h" diff --git a/shared-module/max3421e/Max3421E.h b/shared-module/max3421e/Max3421E.h index f434c1abef9e..5710451a57ae 100644 --- a/shared-module/max3421e/Max3421E.h +++ b/shared-module/max3421e/Max3421E.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/max3421e/__init__.c b/shared-module/max3421e/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/max3421e/__init__.c +++ b/shared-module/max3421e/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/memorymonitor/AllocationAlarm.c b/shared-module/memorymonitor/AllocationAlarm.c index d15829f896b5..3170357081f5 100644 --- a/shared-module/memorymonitor/AllocationAlarm.c +++ b/shared-module/memorymonitor/AllocationAlarm.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/memorymonitor/__init__.h" #include "shared-bindings/memorymonitor/AllocationAlarm.h" diff --git a/shared-module/memorymonitor/AllocationAlarm.h b/shared-module/memorymonitor/AllocationAlarm.h index 1f6e3d069271..b106e76b09c3 100644 --- a/shared-module/memorymonitor/AllocationAlarm.h +++ b/shared-module/memorymonitor/AllocationAlarm.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_MEMORYMONITOR_ALLOCATIONALARM_H #define MICROPY_INCLUDED_SHARED_MODULE_MEMORYMONITOR_ALLOCATIONALARM_H diff --git a/shared-module/memorymonitor/AllocationSize.c b/shared-module/memorymonitor/AllocationSize.c index 70b57780f187..f68401a252f0 100644 --- a/shared-module/memorymonitor/AllocationSize.c +++ b/shared-module/memorymonitor/AllocationSize.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/memorymonitor/AllocationSize.h" diff --git a/shared-module/memorymonitor/AllocationSize.h b/shared-module/memorymonitor/AllocationSize.h index 3af1a1a3a17f..c4a2255b7323 100644 --- a/shared-module/memorymonitor/AllocationSize.h +++ b/shared-module/memorymonitor/AllocationSize.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_MEMORYMONITOR_ALLOCATIONSIZE_H #define MICROPY_INCLUDED_SHARED_MODULE_MEMORYMONITOR_ALLOCATIONSIZE_H diff --git a/shared-module/memorymonitor/__init__.c b/shared-module/memorymonitor/__init__.c index 6cb424153d46..489d41ff7934 100644 --- a/shared-module/memorymonitor/__init__.c +++ b/shared-module/memorymonitor/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #include "shared-module/memorymonitor/__init__.h" #include "shared-module/memorymonitor/AllocationAlarm.h" diff --git a/shared-module/memorymonitor/__init__.h b/shared-module/memorymonitor/__init__.h index f47f6434bfe7..38849b857200 100644 --- a/shared-module/memorymonitor/__init__.h +++ b/shared-module/memorymonitor/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_MEMORYMONITOR___INIT___H #define MICROPY_INCLUDED_MEMORYMONITOR___INIT___H diff --git a/shared-module/msgpack/__init__.c b/shared-module/msgpack/__init__.c index 9ea927999753..f686dbc6e3cc 100644 --- a/shared-module/msgpack/__init__.c +++ b/shared-module/msgpack/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Bernhard Boser - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Bernhard Boser +// +// SPDX-License-Identifier: MIT #include #include diff --git a/shared-module/msgpack/__init__.h b/shared-module/msgpack/__init__.h index 88b4809f958e..ccb5a97b1501 100644 --- a/shared-module/msgpack/__init__.h +++ b/shared-module/msgpack/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_MSGPACK___INIT___H #define MICROPY_INCLUDED_SHARED_MODULE_MSGPACK___INIT___H diff --git a/shared-module/onewireio/OneWire.c b/shared-module/onewireio/OneWire.c index f00cf572dd7a..63049fe8a77a 100644 --- a/shared-module/onewireio/OneWire.c +++ b/shared-module/onewireio/OneWire.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "common-hal/microcontroller/Pin.h" #include "shared-bindings/onewireio/OneWire.h" diff --git a/shared-module/onewireio/OneWire.h b/shared-module/onewireio/OneWire.h index 594478f86191..a86e209d6b19 100644 --- a/shared-module/onewireio/OneWire.h +++ b/shared-module/onewireio/OneWire.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_ONEWIREIO_ONEWIRE_H #define MICROPY_INCLUDED_SHARED_MODULE_ONEWIREIO_ONEWIRE_H diff --git a/shared-module/onewireio/__init__.c b/shared-module/onewireio/__init__.c index 674343c5333d..6283dbe0c6ab 100644 --- a/shared-module/onewireio/__init__.c +++ b/shared-module/onewireio/__init__.c @@ -1,27 +1,7 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT // Nothing now. diff --git a/shared-module/os/__init__.c b/shared-module/os/__init__.c index 4a4c02e6369f..fbe720a89c8b 100644 --- a/shared-module/os/__init__.c +++ b/shared-module/os/__init__.c @@ -1,30 +1,10 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * Copyright (c) 2015 Josef Gajdusek - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// SPDX-FileCopyrightText: Copyright (c) 2015 Josef Gajdusek +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-module/os/__init__.h b/shared-module/os/__init__.h index 1b18a1f4b96e..be9c077b2006 100644 --- a/shared-module/os/__init__.h +++ b/shared-module/os/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/os/getenv.c b/shared-module/os/getenv.c index d3408e8a2c9a..55872eff7a71 100644 --- a/shared-module/os/getenv.c +++ b/shared-module/os/getenv.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // These functions are separate from __init__.c so that os.getenv() can be // tested in the unix "coverage" build, without bringing in "our" os module diff --git a/shared-module/paralleldisplaybus/ParallelBus.c b/shared-module/paralleldisplaybus/ParallelBus.c index 04bcfe18c8f8..662232153601 100644 --- a/shared-module/paralleldisplaybus/ParallelBus.c +++ b/shared-module/paralleldisplaybus/ParallelBus.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/paralleldisplaybus/ParallelBus.h" #include "py/runtime.h" diff --git a/shared-module/qrio/QRDecoder.c b/shared-module/qrio/QRDecoder.c index b98fe637350f..73f3a052e166 100644 --- a/shared-module/qrio/QRDecoder.c +++ b/shared-module/qrio/QRDecoder.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-module/qrio/QRDecoder.h b/shared-module/qrio/QRDecoder.h index da000be1f525..f0a4f4633b15 100644 --- a/shared-module/qrio/QRDecoder.h +++ b/shared-module/qrio/QRDecoder.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/qrio/__init__.c b/shared-module/qrio/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/qrio/__init__.c +++ b/shared-module/qrio/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/qrio/quirc_alloc.h b/shared-module/qrio/quirc_alloc.h index 553af3c3e2da..beb1f2becc5e 100644 --- a/shared-module/qrio/quirc_alloc.h +++ b/shared-module/qrio/quirc_alloc.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 by Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 by Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/rainbowio/__init__.c b/shared-module/rainbowio/__init__.c index b1745c362bd4..8fdc88676664 100644 --- a/shared-module/rainbowio/__init__.c +++ b/shared-module/rainbowio/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the CircuitPython project, https://github.com/adafruit/circuitpython - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Kattni Rembor - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Kattni Rembor +// +// SPDX-License-Identifier: MIT #include "shared-bindings/rainbowio/__init__.h" diff --git a/shared-module/random/__init__.c b/shared-module/random/__init__.c index 8796dc91079e..9a6e050850ae 100644 --- a/shared-module/random/__init__.c +++ b/shared-module/random/__init__.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Paul Sokolovsky - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Paul Sokolovsky +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/shared-module/rgbmatrix/RGBMatrix.c b/shared-module/rgbmatrix/RGBMatrix.c index 6f8af97694c0..86028b358e82 100644 --- a/shared-module/rgbmatrix/RGBMatrix.c +++ b/shared-module/rgbmatrix/RGBMatrix.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-module/rgbmatrix/RGBMatrix.h b/shared-module/rgbmatrix/RGBMatrix.h index 7f5c601cbdd8..197bbb264af4 100644 --- a/shared-module/rgbmatrix/RGBMatrix.h +++ b/shared-module/rgbmatrix/RGBMatrix.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/rgbmatrix/__init__.c b/shared-module/rgbmatrix/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/rgbmatrix/__init__.c +++ b/shared-module/rgbmatrix/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/rgbmatrix/__init__.h b/shared-module/rgbmatrix/__init__.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/rgbmatrix/__init__.h +++ b/shared-module/rgbmatrix/__init__.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/rgbmatrix/allocator.h b/shared-module/rgbmatrix/allocator.h index 315f621c389b..e2cd1d10f9a3 100644 --- a/shared-module/rgbmatrix/allocator.h +++ b/shared-module/rgbmatrix/allocator.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/rotaryio/IncrementalEncoder.c b/shared-module/rotaryio/IncrementalEncoder.c index 27b9cdb64d99..fb1c569db3d5 100644 --- a/shared-module/rotaryio/IncrementalEncoder.c +++ b/shared-module/rotaryio/IncrementalEncoder.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #if CIRCUITPY_ROTARYIO && CIRCUITPY_ROTARYIO_SOFTENCODER #include "shared-bindings/rotaryio/IncrementalEncoder.h" diff --git a/shared-module/rotaryio/IncrementalEncoder.h b/shared-module/rotaryio/IncrementalEncoder.h index 82a5644b470f..1d6b66498357 100644 --- a/shared-module/rotaryio/IncrementalEncoder.h +++ b/shared-module/rotaryio/IncrementalEncoder.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/sdcardio/SDCard.c b/shared-module/sdcardio/SDCard.c index 20c5afef0e01..38c2a59935d3 100644 --- a/shared-module/sdcardio/SDCard.c +++ b/shared-module/sdcardio/SDCard.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT // This implementation largely follows the structure of adafruit_sdcard.py diff --git a/shared-module/sdcardio/SDCard.h b/shared-module/sdcardio/SDCard.h index 38644021065e..0b315395aadf 100644 --- a/shared-module/sdcardio/SDCard.h +++ b/shared-module/sdcardio/SDCard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/sdcardio/__init__.c b/shared-module/sdcardio/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/sdcardio/__init__.c +++ b/shared-module/sdcardio/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/sdcardio/__init__.h b/shared-module/sdcardio/__init__.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/sdcardio/__init__.h +++ b/shared-module/sdcardio/__init__.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/sharpdisplay/SharpMemoryFramebuffer.c b/shared-module/sharpdisplay/SharpMemoryFramebuffer.c index 6a0cb7e61951..04846723f5b8 100644 --- a/shared-module/sharpdisplay/SharpMemoryFramebuffer.c +++ b/shared-module/sharpdisplay/SharpMemoryFramebuffer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-module/sharpdisplay/SharpMemoryFramebuffer.h b/shared-module/sharpdisplay/SharpMemoryFramebuffer.h index 75abb2ff10d5..9daea3d97a64 100644 --- a/shared-module/sharpdisplay/SharpMemoryFramebuffer.h +++ b/shared-module/sharpdisplay/SharpMemoryFramebuffer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/sharpdisplay/__init__.c b/shared-module/sharpdisplay/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/sharpdisplay/__init__.c +++ b/shared-module/sharpdisplay/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/sharpdisplay/__init__.h b/shared-module/sharpdisplay/__init__.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/sharpdisplay/__init__.h +++ b/shared-module/sharpdisplay/__init__.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/ssl/SSLContext.c b/shared-module/ssl/SSLContext.c index 2c35fe8ae554..e58074ea3ea1 100644 --- a/shared-module/ssl/SSLContext.c +++ b/shared-module/ssl/SSLContext.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/ssl/SSLContext.h" #include "shared-bindings/ssl/SSLSocket.h" diff --git a/shared-module/ssl/SSLContext.h b/shared-module/ssl/SSLContext.h index 40840deeec9c..293f3143ebc3 100644 --- a/shared-module/ssl/SSLContext.h +++ b/shared-module/ssl/SSLContext.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/ssl/SSLSocket.c b/shared-module/ssl/SSLSocket.c index 79a01156a3af..71f671529cde 100644 --- a/shared-module/ssl/SSLSocket.c +++ b/shared-module/ssl/SSLSocket.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Linaro Ltd. - * Copyright (c) 2019 Paul Sokolovsky - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Linaro Ltd. +// SPDX-FileCopyrightText: Copyright (c) 2019 Paul Sokolovsky +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/ssl/SSLSocket.h" #include "shared-bindings/ssl/SSLContext.h" diff --git a/shared-module/ssl/SSLSocket.h b/shared-module/ssl/SSLSocket.h index 6d9be05febbb..b9baad3ce174 100644 --- a/shared-module/ssl/SSLSocket.h +++ b/shared-module/ssl/SSLSocket.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Lucian Copeland for Adafruit Industries - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Lucian Copeland for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/ssl/__init__.c b/shared-module/ssl/__init__.c index cff87c8c04b4..e62dddd9da83 100644 --- a/shared-module/ssl/__init__.c +++ b/shared-module/ssl/__init__.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-module/ssl/__init__.h" #include "shared-bindings/ssl/__init__.h" diff --git a/shared-module/ssl/__init__.h b/shared-module/ssl/__init__.h index 6f1757ee4772..c5083fbe817f 100644 --- a/shared-module/ssl/__init__.h +++ b/shared-module/ssl/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/storage/__init__.c b/shared-module/storage/__init__.c index 8e106415a38c..e859d4109418 100644 --- a/shared-module/storage/__init__.c +++ b/shared-module/storage/__init__.c @@ -1,30 +1,10 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * Copyright (c) 2015 Josef Gajdusek - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// SPDX-FileCopyrightText: Copyright (c) 2015 Josef Gajdusek +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-module/storage/__init__.h b/shared-module/storage/__init__.h index cbcf6f5b9967..3adda2c2f713 100644 --- a/shared-module/storage/__init__.h +++ b/shared-module/storage/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/struct/__init__.c b/shared-module/struct/__init__.c index 9a49f5c774d1..57468044e429 100644 --- a/shared-module/struct/__init__.c +++ b/shared-module/struct/__init__.c @@ -1,30 +1,10 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Paul Sokolovsky - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2017 Michael McWethy - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Paul Sokolovsky +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2017 Michael McWethy +// +// SPDX-License-Identifier: MIT #include #include diff --git a/shared-module/struct/__init__.h b/shared-module/struct/__init__.h index bd3959b53ac8..9d73a73ecfeb 100644 --- a/shared-module/struct/__init__.h +++ b/shared-module/struct/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_STRUCT___INIT___H #define MICROPY_INCLUDED_SHARED_MODULE_STRUCT___INIT___H diff --git a/shared-module/supervisor/Runtime.h b/shared-module/supervisor/Runtime.h index f3d76d1b6800..21802da0c30f 100755 --- a/shared-module/supervisor/Runtime.h +++ b/shared-module/supervisor/Runtime.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Michael Schroeder - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Michael Schroeder +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_SUPERVISOR_RUNTIME_H #define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_SUPERVISOR_RUNTIME_H diff --git a/shared-module/supervisor/StatusBar.c b/shared-module/supervisor/StatusBar.c index 13c99c72e2f4..de8044736d6d 100644 --- a/shared-module/supervisor/StatusBar.c +++ b/shared-module/supervisor/StatusBar.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include "py/obj.h" diff --git a/shared-module/supervisor/StatusBar.h b/shared-module/supervisor/StatusBar.h index a1254addc449..f1c00f58fd5e 100644 --- a/shared-module/supervisor/StatusBar.h +++ b/shared-module/supervisor/StatusBar.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_SUPERVISOR_STATUS_BAR_H #define MICROPY_INCLUDED_SHARED_MODULE_SUPERVISOR_STATUS_BAR_H diff --git a/shared-module/supervisor/__init__.c b/shared-module/supervisor/__init__.c index 9a0a0a7b7d57..3a7f6a85518b 100644 --- a/shared-module/supervisor/__init__.c +++ b/shared-module/supervisor/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/obj.h" diff --git a/shared-module/synthio/Biquad.c b/shared-module/synthio/Biquad.c index 006f596a19fe..f821d583812c 100644 --- a/shared-module/synthio/Biquad.c +++ b/shared-module/synthio/Biquad.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include "shared-bindings/synthio/Biquad.h" diff --git a/shared-module/synthio/Biquad.h b/shared-module/synthio/Biquad.h index 1ae7658131e5..b33a6230caf8 100644 --- a/shared-module/synthio/Biquad.h +++ b/shared-module/synthio/Biquad.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/synthio/LFO.c b/shared-module/synthio/LFO.c index f0ffecfc9eac..fb3939ab898e 100644 --- a/shared-module/synthio/LFO.c +++ b/shared-module/synthio/LFO.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/synthio/LFO.h" #include "shared-module/synthio/LFO.h" diff --git a/shared-module/synthio/LFO.h b/shared-module/synthio/LFO.h index 0b08bb18dd01..2c86f2e7bc3d 100644 --- a/shared-module/synthio/LFO.h +++ b/shared-module/synthio/LFO.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/synthio/Math.c b/shared-module/synthio/Math.c index c975dfbf066a..74613e7d6539 100644 --- a/shared-module/synthio/Math.c +++ b/shared-module/synthio/Math.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-module/synthio/Math.h b/shared-module/synthio/Math.h index b689f7783e26..b307b7ea646f 100644 --- a/shared-module/synthio/Math.h +++ b/shared-module/synthio/Math.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once #include "shared-module/synthio/block.h" diff --git a/shared-module/synthio/MidiTrack.c b/shared-module/synthio/MidiTrack.c index 41f9676b72d9..9c70bbb009e0 100644 --- a/shared-module/synthio/MidiTrack.c +++ b/shared-module/synthio/MidiTrack.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Artyom Skrobov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Artyom Skrobov +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" #include "shared-bindings/synthio/MidiTrack.h" diff --git a/shared-module/synthio/MidiTrack.h b/shared-module/synthio/MidiTrack.h index 2f843dcc3dc7..1358c8fe0333 100644 --- a/shared-module/synthio/MidiTrack.h +++ b/shared-module/synthio/MidiTrack.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Artyom Skrobov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Artyom Skrobov +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_SYNTHIO_MIDITRACK_H #define MICROPY_INCLUDED_SHARED_MODULE_SYNTHIO_MIDITRACK_H diff --git a/shared-module/synthio/Note.c b/shared-module/synthio/Note.c index 24173a04452e..724ca8c41183 100644 --- a/shared-module/synthio/Note.c +++ b/shared-module/synthio/Note.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include "py/runtime.h" diff --git a/shared-module/synthio/Note.h b/shared-module/synthio/Note.h index 6d21987a9802..dc4e5557fd3c 100644 --- a/shared-module/synthio/Note.h +++ b/shared-module/synthio/Note.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/synthio/Synthesizer.c b/shared-module/synthio/Synthesizer.c index fb98ffa15f8d..44d6aa93c576 100644 --- a/shared-module/synthio/Synthesizer.c +++ b/shared-module/synthio/Synthesizer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Artyom Skrobov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Artyom Skrobov +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" #include "shared-bindings/synthio/LFO.h" diff --git a/shared-module/synthio/Synthesizer.h b/shared-module/synthio/Synthesizer.h index c5e3eeb9be55..4fd5012cdcd9 100644 --- a/shared-module/synthio/Synthesizer.h +++ b/shared-module/synthio/Synthesizer.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Artyom Skrobov - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Artyom Skrobov +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/synthio/__init__.c b/shared-module/synthio/__init__.c index ad2612c61be8..e86d737a02e7 100644 --- a/shared-module/synthio/__init__.c +++ b/shared-module/synthio/__init__.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Artyom Skrobov - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Artyom Skrobov +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-module/synthio/__init__.h" #include "shared-bindings/synthio/__init__.h" diff --git a/shared-module/synthio/__init__.h b/shared-module/synthio/__init__.h index 178e4fb866bf..b0bca1efcffe 100644 --- a/shared-module/synthio/__init__.h +++ b/shared-module/synthio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Artyom Skrobov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Artyom Skrobov +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/synthio/block.h b/shared-module/synthio/block.h index d89896ca6121..a6ca400794b1 100644 --- a/shared-module/synthio/block.h +++ b/shared-module/synthio/block.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/terminalio/Terminal.c b/shared-module/terminalio/Terminal.c index a19768a62247..e6f1cb23111f 100644 --- a/shared-module/terminalio/Terminal.c +++ b/shared-module/terminalio/Terminal.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-module/terminalio/Terminal.h" diff --git a/shared-module/terminalio/Terminal.h b/shared-module/terminalio/Terminal.h index 7f0545c6be00..df2ee72c99d2 100644 --- a/shared-module/terminalio/Terminal.h +++ b/shared-module/terminalio/Terminal.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef SHARED_MODULE_TERMINALIO_TERMINAL_H #define SHARED_MODULE_TERMINALIO_TERMINAL_H diff --git a/shared-module/terminalio/__init__.c b/shared-module/terminalio/__init__.c index 3f61f482344e..672ec242f014 100644 --- a/shared-module/terminalio/__init__.c +++ b/shared-module/terminalio/__init__.c @@ -1,27 +1,7 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 hathach for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 hathach for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/terminalio/__init__.h" diff --git a/shared-module/terminalio/__init__.h b/shared-module/terminalio/__init__.h index e925dd429a94..084e796ba196 100644 --- a/shared-module/terminalio/__init__.h +++ b/shared-module/terminalio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef SHARED_MODULE_TERMINALIO___INIT___H #define SHARED_MODULE_TERMINALIO___INIT___H diff --git a/shared-module/time/__init__.c b/shared-module/time/__init__.c index 7d4f585ea1c9..13664a500a23 100644 --- a/shared-module/time/__init__.c +++ b/shared-module/time/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/mphal.h" #include "supervisor/port.h" diff --git a/shared-module/touchio/TouchIn.c b/shared-module/touchio/TouchIn.c index f5b1b44e328a..9334b369f657 100644 --- a/shared-module/touchio/TouchIn.c +++ b/shared-module/touchio/TouchIn.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2018 Nick Moore for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2018 Nick Moore for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/shared-module/touchio/TouchIn.h b/shared-module/touchio/TouchIn.h index 8ff6fda8f4d5..95b17cecb47b 100644 --- a/shared-module/touchio/TouchIn.h +++ b/shared-module/touchio/TouchIn.h @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * Copyright (c) 2018 Nick Moore for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// SPDX-FileCopyrightText: Copyright (c) 2018 Nick Moore for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_TOUCHIO_TOUCHIN_H #define MICROPY_INCLUDED_SHARED_MODULE_TOUCHIO_TOUCHIN_H diff --git a/shared-module/touchio/__init__.c b/shared-module/touchio/__init__.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/touchio/__init__.c +++ b/shared-module/touchio/__init__.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/traceback/__init__.c b/shared-module/traceback/__init__.c index a29bd5743f81..1ea10d65e8b6 100644 --- a/shared-module/traceback/__init__.c +++ b/shared-module/traceback/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #include "shared-module/traceback/__init__.h" diff --git a/shared-module/traceback/__init__.h b/shared-module/traceback/__init__.h index 73edd0750421..07a758d13396 100644 --- a/shared-module/traceback/__init__.h +++ b/shared-module/traceback/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 microDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 microDev +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_TRACEBACK___INIT___H #define MICROPY_INCLUDED_SHARED_MODULE_TRACEBACK___INIT___H diff --git a/shared-module/uheap/__init__.c b/shared-module/uheap/__init__.c index bff571ad8caf..adad408b4665 100644 --- a/shared-module/uheap/__init__.c +++ b/shared-module/uheap/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-module/usb/__init__.c b/shared-module/usb/__init__.c index 2b3a4c5d6c1b..9c184d18fb9b 100644 --- a/shared-module/usb/__init__.c +++ b/shared-module/usb/__init__.c @@ -1,27 +1,7 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Nothing here diff --git a/shared-module/usb/core/Device.c b/shared-module/usb/core/Device.c index 1b1583caeff2..b7cbee9192ce 100644 --- a/shared-module/usb/core/Device.c +++ b/shared-module/usb/core/Device.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/usb/core/Device.h" diff --git a/shared-module/usb/core/Device.h b/shared-module/usb/core/Device.h index 346a59fdbbe9..de7c98fc6463 100644 --- a/shared-module/usb/core/Device.h +++ b/shared-module/usb/core/Device.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_USB_CORE_DEVICE_H #define MICROPY_INCLUDED_SHARED_MODULE_USB_CORE_DEVICE_H diff --git a/shared-module/usb/core/__init__.c b/shared-module/usb/core/__init__.c index a108f5fa05d0..d3f12eb42bb8 100644 --- a/shared-module/usb/core/__init__.c +++ b/shared-module/usb/core/__init__.c @@ -1,27 +1,7 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Nothing implementation specific. diff --git a/shared-module/usb/utf16le.c b/shared-module/usb/utf16le.c index 10152a2a7d46..8c7208a3325a 100644 --- a/shared-module/usb/utf16le.c +++ b/shared-module/usb/utf16le.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-module/usb/utf16le.h" diff --git a/shared-module/usb/utf16le.h b/shared-module/usb/utf16le.h index 7305a1ad317b..82ca242087d5 100644 --- a/shared-module/usb/utf16le.h +++ b/shared-module/usb/utf16le.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_USB_UTF16LE_H #define MICROPY_INCLUDED_SHARED_MODULE_USB_UTF16LE_H diff --git a/shared-module/usb_cdc/Serial.c b/shared-module/usb_cdc/Serial.c index 23bcc8722dd6..3c67103afcee 100644 --- a/shared-module/usb_cdc/Serial.c +++ b/shared-module/usb_cdc/Serial.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared/runtime/interrupt_char.h" #include "shared-bindings/usb_cdc/Serial.h" diff --git a/shared-module/usb_cdc/Serial.h b/shared-module/usb_cdc/Serial.h index ddf78eefa63e..aa7ebab05ab7 100644 --- a/shared-module/usb_cdc/Serial.h +++ b/shared-module/usb_cdc/Serial.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef SHARED_MODULE_USB_CDC_SERIAL_H #define SHARED_MODULE_USB_CDC_SERIAL_H diff --git a/shared-module/usb_cdc/__init__.c b/shared-module/usb_cdc/__init__.c index 16d6cca6165e..502d8fa620e0 100644 --- a/shared-module/usb_cdc/__init__.c +++ b/shared-module/usb_cdc/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/gc.h" #include "py/obj.h" diff --git a/shared-module/usb_cdc/__init__.h b/shared-module/usb_cdc/__init__.h index 87dabf05db9c..9638e86f8cd1 100644 --- a/shared-module/usb_cdc/__init__.h +++ b/shared-module/usb_cdc/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef SHARED_MODULE_USB_CDC___INIT___H #define SHARED_MODULE_USB_CDC___INIT___H diff --git a/shared-module/usb_hid/Device.c b/shared-module/usb_hid/Device.c index 337d7f0a022f..82393ba602f0 100644 --- a/shared-module/usb_hid/Device.c +++ b/shared-module/usb_hid/Device.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 hathach for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 hathach for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/shared-module/usb_hid/Device.h b/shared-module/usb_hid/Device.h index b3275fafbdd8..eec6344dc7b1 100644 --- a/shared-module/usb_hid/Device.h +++ b/shared-module/usb_hid/Device.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 hathach for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 hathach for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef SHARED_MODULE_USB_HID_DEVICE_H #define SHARED_MODULE_USB_HID_DEVICE_H diff --git a/shared-module/usb_hid/__init__.c b/shared-module/usb_hid/__init__.c index 30196a383410..b007bc3ac2d4 100644 --- a/shared-module/usb_hid/__init__.c +++ b/shared-module/usb_hid/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 hathach for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 hathach for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-module/usb_hid/__init__.h b/shared-module/usb_hid/__init__.h index 352f6d564133..5119c26d13d5 100644 --- a/shared-module/usb_hid/__init__.h +++ b/shared-module/usb_hid/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef SHARED_MODULE_USB_HID___INIT___H #define SHARED_MODULE_USB_HID___INIT___H diff --git a/shared-module/usb_midi/PortIn.c b/shared-module/usb_midi/PortIn.c index a5c73aa256fd..73eab63a6453 100644 --- a/shared-module/usb_midi/PortIn.c +++ b/shared-module/usb_midi/PortIn.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/usb_midi/PortIn.h" #include "shared-module/usb_midi/PortIn.h" diff --git a/shared-module/usb_midi/PortIn.h b/shared-module/usb_midi/PortIn.h index 2f72aa4c211a..3caf1625718c 100644 --- a/shared-module/usb_midi/PortIn.h +++ b/shared-module/usb_midi/PortIn.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef SHARED_MODULE_USB_MIDI_PORTIN_H #define SHARED_MODULE_USB_MIDI_PORTIN_H diff --git a/shared-module/usb_midi/PortOut.c b/shared-module/usb_midi/PortOut.c index c9d229635eb7..33bd8bafc63c 100644 --- a/shared-module/usb_midi/PortOut.c +++ b/shared-module/usb_midi/PortOut.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/usb_midi/PortOut.h" #include "shared-module/usb_midi/PortOut.h" diff --git a/shared-module/usb_midi/PortOut.h b/shared-module/usb_midi/PortOut.h index 6b1b8846474b..196fc9f600a5 100644 --- a/shared-module/usb_midi/PortOut.h +++ b/shared-module/usb_midi/PortOut.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef SHARED_MODULE_USB_MIDI_PORTOUT_H #define SHARED_MODULE_USB_MIDI_PORTOUT_H diff --git a/shared-module/usb_midi/__init__.c b/shared-module/usb_midi/__init__.c index 9bd9414ca6c4..e0853e4e2a7a 100644 --- a/shared-module/usb_midi/__init__.c +++ b/shared-module/usb_midi/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 hathach for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 hathach for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/usb_midi/__init__.h" diff --git a/shared-module/usb_midi/__init__.h b/shared-module/usb_midi/__init__.h index 453d01733ca3..80402fddf87a 100644 --- a/shared-module/usb_midi/__init__.h +++ b/shared-module/usb_midi/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef SHARED_MODULE_USB_MIDI___INIT___H #define SHARED_MODULE_USB_MIDI___INIT___H diff --git a/shared-module/usb_video/USBFramebuffer.c b/shared-module/usb_video/USBFramebuffer.c index cc7cddb89ff4..6cbe137191cb 100644 --- a/shared-module/usb_video/USBFramebuffer.c +++ b/shared-module/usb_video/USBFramebuffer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-module/usb_video/__init__.h" #include "shared-module/usb_video/USBFramebuffer.h" diff --git a/shared-module/usb_video/USBFramebuffer.h b/shared-module/usb_video/USBFramebuffer.h index 43b0050b3105..0db85ac378ce 100644 --- a/shared-module/usb_video/USBFramebuffer.h +++ b/shared-module/usb_video/USBFramebuffer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/usb_video/__init__.c b/shared-module/usb_video/__init__.c index 18f155c84fbb..98298f722fb5 100644 --- a/shared-module/usb_video/__init__.c +++ b/shared-module/usb_video/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 by Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 by Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" #include diff --git a/shared-module/usb_video/__init__.h b/shared-module/usb_video/__init__.h index 52472891e336..89a62f10fac4 100644 --- a/shared-module/usb_video/__init__.h +++ b/shared-module/usb_video/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/usb_video/descriptor.c b/shared-module/usb_video/descriptor.c index 631e49139d8f..3a59ff196da6 100644 --- a/shared-module/usb_video/descriptor.c +++ b/shared-module/usb_video/descriptor.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 by Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 by Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT // To find the offsets where the string and endpoint value are used, // build this on your host computer: diff --git a/shared-module/usb_video/tusb_config.h b/shared-module/usb_video/tusb_config.h index e69de29bb2d1..72d32ef2b2c5 100644 --- a/shared-module/usb_video/tusb_config.h +++ b/shared-module/usb_video/tusb_config.h @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/shared-module/usb_video/uvc_usb_descriptors.h b/shared-module/usb_video/uvc_usb_descriptors.h index 789d3c100b02..808107a9af0b 100644 --- a/shared-module/usb_video/uvc_usb_descriptors.h +++ b/shared-module/usb_video/uvc_usb_descriptors.h @@ -1,28 +1,9 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2020 Jerzy Kasenbreg - * Copyright (c) 2021 Koji KITAYAMA - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jerzy Kasenbreg +// SPDX-FileCopyrightText: Copyright (c) 2021 Koji KITAYAMA +// +// SPDX-License-Identifier: MIT #ifndef _USB_DESCRIPTORS_H_ #define _USB_DESCRIPTORS_H_ diff --git a/shared-module/ustack/__init__.c b/shared-module/ustack/__init__.c index 55e5fa2d1a7e..a9a8377b79cf 100644 --- a/shared-module/ustack/__init__.c +++ b/shared-module/ustack/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Dan Halbert - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Dan Halbert +// +// SPDX-License-Identifier: MIT #include diff --git a/shared-module/vectorio/Circle.c b/shared-module/vectorio/Circle.c index d174e6d11af8..6f7ee2f3406e 100644 --- a/shared-module/vectorio/Circle.c +++ b/shared-module/vectorio/Circle.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 by kvc0/WarriorOfWire - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 by kvc0/WarriorOfWire +// +// SPDX-License-Identifier: MIT #include "shared-bindings/vectorio/Circle.h" #include "shared-module/vectorio/__init__.h" diff --git a/shared-module/vectorio/Circle.h b/shared-module/vectorio/Circle.h index 4da88762dc5e..0536a9ba57b6 100644 --- a/shared-module/vectorio/Circle.h +++ b/shared-module/vectorio/Circle.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 by kvc0/WarriorOfWire - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 by kvc0/WarriorOfWire +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_CIRCLE_H #define MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_CIRCLE_H diff --git a/shared-module/vectorio/Polygon.c b/shared-module/vectorio/Polygon.c index cc09a5f015f0..212d519e2983 100644 --- a/shared-module/vectorio/Polygon.c +++ b/shared-module/vectorio/Polygon.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 by kvc0/WarriorOfWire - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 by kvc0/WarriorOfWire +// +// SPDX-License-Identifier: MIT #include "shared-module/vectorio/__init__.h" #include "shared-bindings/vectorio/Polygon.h" diff --git a/shared-module/vectorio/Polygon.h b/shared-module/vectorio/Polygon.h index 60eb9d727413..c1eb3f3b67d7 100644 --- a/shared-module/vectorio/Polygon.h +++ b/shared-module/vectorio/Polygon.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 by kvc0/WarriorOfWire - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 by kvc0/WarriorOfWire +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_POLYGON_H #define MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_POLYGON_H diff --git a/shared-module/vectorio/Rectangle.c b/shared-module/vectorio/Rectangle.c index 365d681f4d90..42cdf7cca96e 100644 --- a/shared-module/vectorio/Rectangle.c +++ b/shared-module/vectorio/Rectangle.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 by kvc0/WarriorOfWire - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 by kvc0/WarriorOfWire +// +// SPDX-License-Identifier: MIT #include "shared-module/vectorio/__init__.h" #include "shared-bindings/vectorio/Rectangle.h" diff --git a/shared-module/vectorio/Rectangle.h b/shared-module/vectorio/Rectangle.h index fd75589e9d4b..42983e791cb4 100644 --- a/shared-module/vectorio/Rectangle.h +++ b/shared-module/vectorio/Rectangle.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 by kvc0/WarriorOfWire - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 by kvc0/WarriorOfWire +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_RECTANGLE_H #define MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_RECTANGLE_H diff --git a/shared-module/vectorio/VectorShape.c b/shared-module/vectorio/VectorShape.c index d25fa43421f9..ca6a68adb6da 100644 --- a/shared-module/vectorio/VectorShape.c +++ b/shared-module/vectorio/VectorShape.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 by kvc0/WarriorOfWire - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 by kvc0/WarriorOfWire +// +// SPDX-License-Identifier: MIT #include "stdlib.h" diff --git a/shared-module/vectorio/VectorShape.h b/shared-module/vectorio/VectorShape.h index 69e38971ab9c..427768395cc3 100644 --- a/shared-module/vectorio/VectorShape.h +++ b/shared-module/vectorio/VectorShape.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 by kvc0/WarriorOfWire - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 by kvc0/WarriorOfWire +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_SHAPE_H diff --git a/shared-module/vectorio/__init__.c b/shared-module/vectorio/__init__.c index 4b8f4cdefa0a..0c16efad6eda 100644 --- a/shared-module/vectorio/__init__.c +++ b/shared-module/vectorio/__init__.c @@ -1,27 +1,7 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 by kvc0/WarriorOfWire - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 by kvc0/WarriorOfWire +// +// SPDX-License-Identifier: MIT // Don't need anything in here yet diff --git a/shared-module/vectorio/__init__.h b/shared-module/vectorio/__init__.h index 0343bfe3b026..879fb577a878 100644 --- a/shared-module/vectorio/__init__.h +++ b/shared-module/vectorio/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 by kvc0/WarriorOfWire - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 by kvc0/WarriorOfWire +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_INIT_H #define MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_INIT_H diff --git a/shared-module/warnings/__init__.c b/shared-module/warnings/__init__.c index 9ee52619a56a..ad2f14b1c5b7 100644 --- a/shared-module/warnings/__init__.c +++ b/shared-module/warnings/__init__.c @@ -1,30 +1,10 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * Copyright (c) 2015 Josef Gajdusek - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// SPDX-FileCopyrightText: Copyright (c) 2015 Josef Gajdusek +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/shared-module/warnings/__init__.h b/shared-module/warnings/__init__.h index 5d67438ef20c..48dbb5f7321c 100644 --- a/shared-module/warnings/__init__.h +++ b/shared-module/warnings/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/shared-module/watchdog/__init__.c b/shared-module/watchdog/__init__.c index b348647c0699..3f47e2107026 100644 --- a/shared-module/watchdog/__init__.c +++ b/shared-module/watchdog/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 MicroDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 MicroDev +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" diff --git a/shared-module/watchdog/__init__.h b/shared-module/watchdog/__init__.h index 219ccfc7b4f8..112af3b0863f 100644 --- a/shared-module/watchdog/__init__.h +++ b/shared-module/watchdog/__init__.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 MicroDev - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 MicroDev +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SHARED_MODULE_WATCHDOG___INIT___H #define MICROPY_INCLUDED_SHARED_MODULE_WATCHDOG___INIT___H diff --git a/shared-module/zlib/__init__.c b/shared-module/zlib/__init__.c index 082464fad286..031432a215fe 100644 --- a/shared-module/zlib/__init__.c +++ b/shared-module/zlib/__init__.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Mark Komus - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Mark Komus +// +// SPDX-License-Identifier: MIT #include #include diff --git a/shared/runtime/buffer_helper.c b/shared/runtime/buffer_helper.c index facd05eaf062..a1f7f7bb7f61 100644 --- a/shared/runtime/buffer_helper.c +++ b/shared/runtime/buffer_helper.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared/runtime/buffer_helper.h" diff --git a/shared/runtime/buffer_helper.h b/shared/runtime/buffer_helper.h index 9611dc309ac2..86271bd3012b 100644 --- a/shared/runtime/buffer_helper.h +++ b/shared/runtime/buffer_helper.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_LIB_UTILS_BUFFER_HELPER_H #define MICROPY_INCLUDED_LIB_UTILS_BUFFER_HELPER_H diff --git a/shared/runtime/context_manager_helpers.c b/shared/runtime/context_manager_helpers.c index d489ce994b84..df8f2d41bec9 100644 --- a/shared/runtime/context_manager_helpers.c +++ b/shared/runtime/context_manager_helpers.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared/runtime/context_manager_helpers.h" diff --git a/shared/runtime/context_manager_helpers.h b/shared/runtime/context_manager_helpers.h index 286ab750eefd..3dd14e759f31 100644 --- a/shared/runtime/context_manager_helpers.h +++ b/shared/runtime/context_manager_helpers.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_LIB_UTILS_CONTEXT_MANAGER_HELPERS_H #define MICROPY_INCLUDED_LIB_UTILS_CONTEXT_MANAGER_HELPERS_H diff --git a/supervisor/background_callback.h b/supervisor/background_callback.h index 4be62c081eb2..dec5f442c1b7 100644 --- a/supervisor/background_callback.h +++ b/supervisor/background_callback.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef CIRCUITPY_INCLUDED_SUPERVISOR_BACKGROUND_CALLBACK_H #define CIRCUITPY_INCLUDED_SUPERVISOR_BACKGROUND_CALLBACK_H diff --git a/supervisor/board.h b/supervisor/board.h index e3f0af79a3cf..89de01d490a4 100644 --- a/supervisor/board.h +++ b/supervisor/board.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SUPERVISOR_BOARD_H #define MICROPY_INCLUDED_SUPERVISOR_BOARD_H diff --git a/supervisor/cpu.h b/supervisor/cpu.h index c4f81316c745..cd7bf9385055 100755 --- a/supervisor/cpu.h +++ b/supervisor/cpu.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SUPERVISOR_CPU_H #define MICROPY_INCLUDED_SUPERVISOR_CPU_H diff --git a/supervisor/fatfs.h b/supervisor/fatfs.h index 59226aae1c12..cd5605d8a423 100644 --- a/supervisor/fatfs.h +++ b/supervisor/fatfs.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SUPERVISOR_FATFS_H #define MICROPY_INCLUDED_SUPERVISOR_FATFS_H diff --git a/supervisor/filesystem.h b/supervisor/filesystem.h index 869193a8777a..a0445b0510da 100644 --- a/supervisor/filesystem.h +++ b/supervisor/filesystem.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/supervisor/flash.h b/supervisor/flash.h index 5154cb85983a..ab527d4d54dc 100644 --- a/supervisor/flash.h +++ b/supervisor/flash.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SUPERVISOR_FLASH_H #define MICROPY_INCLUDED_SUPERVISOR_FLASH_H diff --git a/supervisor/linker.h b/supervisor/linker.h index 2106e167cfb5..06633b342de2 100644 --- a/supervisor/linker.h +++ b/supervisor/linker.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // These macros are used to place code and data into different linking sections. diff --git a/supervisor/port.h b/supervisor/port.h index 2c897b3f1193..29c071515c13 100644 --- a/supervisor/port.h +++ b/supervisor/port.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016-2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016-2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/supervisor/port_heap.h b/supervisor/port_heap.h index 54a7cc80b3ae..f035cc2409e7 100644 --- a/supervisor/port_heap.h +++ b/supervisor/port_heap.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/supervisor/shared/background_callback.c b/supervisor/shared/background_callback.c index a8c0f071faf9..dc0560c50a52 100644 --- a/supervisor/shared/background_callback.c +++ b/supervisor/shared/background_callback.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/supervisor/shared/bluetooth/bluetooth.c b/supervisor/shared/bluetooth/bluetooth.c index d61d1d9c6708..920e88b4a335 100644 --- a/supervisor/shared/bluetooth/bluetooth.c +++ b/supervisor/shared/bluetooth/bluetooth.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/supervisor/shared/bluetooth/bluetooth.h b/supervisor/shared/bluetooth/bluetooth.h index 0028c8da33a3..357dd6869ce2 100644 --- a/supervisor/shared/bluetooth/bluetooth.h +++ b/supervisor/shared/bluetooth/bluetooth.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_BLUETOOTH_H #define MICROPY_INCLUDED_SUPERVISOR_SHARED_BLUETOOTH_H diff --git a/supervisor/shared/bluetooth/file_transfer.c b/supervisor/shared/bluetooth/file_transfer.c index 628d06f99db2..1157b231bb57 100644 --- a/supervisor/shared/bluetooth/file_transfer.c +++ b/supervisor/shared/bluetooth/file_transfer.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019-2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019-2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/supervisor/shared/bluetooth/file_transfer.h b/supervisor/shared/bluetooth/file_transfer.h index e27924e7fa95..d6b2d2dc8439 100644 --- a/supervisor/shared/bluetooth/file_transfer.h +++ b/supervisor/shared/bluetooth/file_transfer.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_BLUETOOTH_FILE_TRANSFER_H #define MICROPY_INCLUDED_SUPERVISOR_SHARED_BLUETOOTH_FILE_TRANSFER_H diff --git a/supervisor/shared/bluetooth/file_transfer_protocol.h b/supervisor/shared/bluetooth/file_transfer_protocol.h index 3bc1f611c5a2..f1b7126f2ac3 100644 --- a/supervisor/shared/bluetooth/file_transfer_protocol.h +++ b/supervisor/shared/bluetooth/file_transfer_protocol.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_BLUETOOTH_FILE_TRANSFER_PROTOCOL_H #define MICROPY_INCLUDED_SUPERVISOR_SHARED_BLUETOOTH_FILE_TRANSFER_PROTOCOL_H diff --git a/supervisor/shared/bluetooth/serial.c b/supervisor/shared/bluetooth/serial.c index 28902d6091db..09428939ce55 100644 --- a/supervisor/shared/bluetooth/serial.c +++ b/supervisor/shared/bluetooth/serial.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/supervisor/shared/bluetooth/serial.h b/supervisor/shared/bluetooth/serial.h index 4d318b966714..ac5c21c92004 100644 --- a/supervisor/shared/bluetooth/serial.h +++ b/supervisor/shared/bluetooth/serial.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_BLUETOOTH_SERIAL_H #define MICROPY_INCLUDED_SUPERVISOR_SHARED_BLUETOOTH_SERIAL_H diff --git a/supervisor/shared/board.c b/supervisor/shared/board.c index 2317540c1a0b..192bf7a65c80 100644 --- a/supervisor/shared/board.c +++ b/supervisor/shared/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" #include "supervisor/shared/board.h" diff --git a/supervisor/shared/board.h b/supervisor/shared/board.h index def5f4865562..589bd517f966 100644 --- a/supervisor/shared/board.h +++ b/supervisor/shared/board.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_BOARD_H #define MICROPY_INCLUDED_SUPERVISOR_SHARED_BOARD_H diff --git a/supervisor/shared/cpu.c b/supervisor/shared/cpu.c index d1e4114ca3c1..88f0dd0dd853 100644 --- a/supervisor/shared/cpu.c +++ b/supervisor/shared/cpu.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/supervisor/shared/cpu.h b/supervisor/shared/cpu.h index 9e2bed1e5552..3555fe18024b 100644 --- a/supervisor/shared/cpu.h +++ b/supervisor/shared/cpu.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_CPU_H #define MICROPY_INCLUDED_SUPERVISOR_SHARED_CPU_H diff --git a/supervisor/shared/display.c b/supervisor/shared/display.c index ce0feb032421..f74b74993fd9 100644 --- a/supervisor/shared/display.c +++ b/supervisor/shared/display.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/shared/display.h" diff --git a/supervisor/shared/display.h b/supervisor/shared/display.h index 66ee0e89d93f..017a02fefdbb 100644 --- a/supervisor/shared/display.h +++ b/supervisor/shared/display.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_DISPLAY_H #define MICROPY_INCLUDED_SUPERVISOR_SHARED_DISPLAY_H diff --git a/supervisor/shared/external_flash/common_commands.h b/supervisor/shared/external_flash/common_commands.h index 37efd8ceb1df..f95dbee9f46b 100644 --- a/supervisor/shared/external_flash/common_commands.h +++ b/supervisor/shared/external_flash/common_commands.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_ATMEL_SAMD_EXTERNAL_FLASH_COMMON_COMMANDS_H #define MICROPY_INCLUDED_ATMEL_SAMD_EXTERNAL_FLASH_COMMON_COMMANDS_H diff --git a/supervisor/shared/external_flash/device.h b/supervisor/shared/external_flash/device.h index bbf6bfd91b64..fae0dfbd31d2 100644 --- a/supervisor/shared/external_flash/device.h +++ b/supervisor/shared/external_flash/device.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries LLC - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_EXTERNAL_FLASH_DEVICE_H #define MICROPY_INCLUDED_SUPERVISOR_SHARED_EXTERNAL_FLASH_DEVICE_H diff --git a/supervisor/shared/external_flash/devices.h.jinja b/supervisor/shared/external_flash/devices.h.jinja index 7cad90df8a44..3859559d2b35 100644 --- a/supervisor/shared/external_flash/devices.h.jinja +++ b/supervisor/shared/external_flash/devices.h.jinja @@ -1,28 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries LLC - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT + #ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_EXTERNAL_FLASH_DEVICES_H #define MICROPY_INCLUDED_SUPERVISOR_SHARED_EXTERNAL_FLASH_DEVICES_H diff --git a/supervisor/shared/external_flash/external_flash.c b/supervisor/shared/external_flash/external_flash.c index 229fd629e0fe..0b2a02c2d28b 100644 --- a/supervisor/shared/external_flash/external_flash.c +++ b/supervisor/shared/external_flash/external_flash.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016, 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016, 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/shared/external_flash/external_flash.h" #include diff --git a/supervisor/shared/external_flash/external_flash.h b/supervisor/shared/external_flash/external_flash.h index 7966b64674e4..25ca2f017a22 100644 --- a/supervisor/shared/external_flash/external_flash.h +++ b/supervisor/shared/external_flash/external_flash.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries LLC - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_EXTERNAL_FLASH_EXTERNAL_FLASH_H #define MICROPY_INCLUDED_SUPERVISOR_SHARED_EXTERNAL_FLASH_EXTERNAL_FLASH_H diff --git a/supervisor/shared/external_flash/qspi_flash.c b/supervisor/shared/external_flash/qspi_flash.c index 293654ba793d..a942eb3a54a8 100644 --- a/supervisor/shared/external_flash/qspi_flash.c +++ b/supervisor/shared/external_flash/qspi_flash.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016, 2017, 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016, 2017, 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/spi_flash_api.h" diff --git a/supervisor/shared/external_flash/qspi_flash.h b/supervisor/shared/external_flash/qspi_flash.h index c0c089ee0f94..6f77ef047f26 100644 --- a/supervisor/shared/external_flash/qspi_flash.h +++ b/supervisor/shared/external_flash/qspi_flash.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries LLC - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_EXTERNAL_FLASH_QSPI_FLASH_H #define MICROPY_INCLUDED_SUPERVISOR_SHARED_EXTERNAL_FLASH_QSPI_FLASH_H diff --git a/supervisor/shared/external_flash/spi_flash.c b/supervisor/shared/external_flash/spi_flash.c index abff3437134d..f9ed50ac46f7 100644 --- a/supervisor/shared/external_flash/spi_flash.c +++ b/supervisor/shared/external_flash/spi_flash.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016, 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016, 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/spi_flash_api.h" #include diff --git a/supervisor/shared/fatfs.c b/supervisor/shared/fatfs.c index f1452bf567f9..07ab724d7a98 100644 --- a/supervisor/shared/fatfs.c +++ b/supervisor/shared/fatfs.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/fatfs.h" diff --git a/supervisor/shared/filesystem.c b/supervisor/shared/filesystem.c index 63555203ddd5..1a4e7bcd051d 100644 --- a/supervisor/shared/filesystem.c +++ b/supervisor/shared/filesystem.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/filesystem.h" diff --git a/supervisor/shared/flash.c b/supervisor/shared/flash.c index 33602d37ef17..4af62cb30c2a 100644 --- a/supervisor/shared/flash.c +++ b/supervisor/shared/flash.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft +// +// SPDX-License-Identifier: MIT #include "supervisor/flash.h" #include "extmod/vfs_fat.h" diff --git a/supervisor/shared/internal_flash.h b/supervisor/shared/internal_flash.h index 80257a2901ce..1809bc24f493 100644 --- a/supervisor/shared/internal_flash.h +++ b/supervisor/shared/internal_flash.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft, for Adafruit Industries LLC - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft, for Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_INTERNAL_FLASH_H #define MICROPY_INCLUDED_SUPERVISOR_SHARED_INTERNAL_FLASH_H diff --git a/supervisor/shared/lock.c b/supervisor/shared/lock.c index 36971badad17..44ca93f09b18 100644 --- a/supervisor/shared/lock.c +++ b/supervisor/shared/lock.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "shared-bindings/microcontroller/__init__.h" #include "supervisor/shared/lock.h" diff --git a/supervisor/shared/lock.h b/supervisor/shared/lock.h index 89f81cfdfb66..e89eb0f22d2f 100644 --- a/supervisor/shared/lock.h +++ b/supervisor/shared/lock.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2021 Dan Halbert for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SUPERVISOR_LOCK_H #define MICROPY_INCLUDED_SUPERVISOR_LOCK_H diff --git a/supervisor/shared/memory.c b/supervisor/shared/memory.c index e69de29bb2d1..72d32ef2b2c5 100644 --- a/supervisor/shared/memory.c +++ b/supervisor/shared/memory.c @@ -0,0 +1,5 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT diff --git a/supervisor/shared/micropython.c b/supervisor/shared/micropython.c index 698df2a44c8a..e006d4805941 100644 --- a/supervisor/shared/micropython.c +++ b/supervisor/shared/micropython.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include diff --git a/supervisor/shared/port.c b/supervisor/shared/port.c index 0ea521b94038..f13e6b2f29ed 100644 --- a/supervisor/shared/port.c +++ b/supervisor/shared/port.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/port.h" diff --git a/supervisor/shared/reload.c b/supervisor/shared/reload.c index b1a001942754..fb7ff0403c25 100644 --- a/supervisor/shared/reload.c +++ b/supervisor/shared/reload.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "reload.h" diff --git a/supervisor/shared/reload.h b/supervisor/shared/reload.h index 40d852f017b5..7800cf6fd4c0 100644 --- a/supervisor/shared/reload.h +++ b/supervisor/shared/reload.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2016 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2016 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SUPERVISOR_AUTORELOAD_H #define MICROPY_INCLUDED_SUPERVISOR_AUTORELOAD_H diff --git a/supervisor/shared/rgb_led_colors.h b/supervisor/shared/rgb_led_colors.h index 831a874381a9..bf2d7697c7d2 100644 --- a/supervisor/shared/rgb_led_colors.h +++ b/supervisor/shared/rgb_led_colors.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017-2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017-2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #define COLOR(r, g, b) (((r) << 16) | ((g) << 8) | (b)) // For brightness == 255 (full). This will be adjusted downward for various different RGB indicators, diff --git a/supervisor/shared/safe_mode.c b/supervisor/shared/safe_mode.c index 6a79b6dc6d29..81bcb749143d 100644 --- a/supervisor/shared/safe_mode.c +++ b/supervisor/shared/safe_mode.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/shared/safe_mode.h" diff --git a/supervisor/shared/safe_mode.h b/supervisor/shared/safe_mode.h index 005488552ea7..63db2a4c0ba6 100644 --- a/supervisor/shared/safe_mode.h +++ b/supervisor/shared/safe_mode.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SUPERVISOR_SAFE_MODE_H #define MICROPY_INCLUDED_SUPERVISOR_SAFE_MODE_H diff --git a/supervisor/shared/serial.c b/supervisor/shared/serial.c index abea966b59d1..b8d6e2d28f08 100644 --- a/supervisor/shared/serial.c +++ b/supervisor/shared/serial.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include diff --git a/supervisor/shared/serial.h b/supervisor/shared/serial.h index 3d2e1c96c980..9620b12443a9 100644 --- a/supervisor/shared/serial.h +++ b/supervisor/shared/serial.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SUPERVISOR_SERIAL_H #define MICROPY_INCLUDED_SUPERVISOR_SERIAL_H diff --git a/supervisor/shared/stack.c b/supervisor/shared/stack.c index 6e645605d3f8..ebf99f425cc1 100644 --- a/supervisor/shared/stack.c +++ b/supervisor/shared/stack.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "stack.h" diff --git a/supervisor/shared/stack.h b/supervisor/shared/stack.h index 2205461f1990..230275793b11 100644 --- a/supervisor/shared/stack.h +++ b/supervisor/shared/stack.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/supervisor/shared/status_bar.c b/supervisor/shared/status_bar.c index 1e08e0e0318b..2a8f88d1a3f8 100644 --- a/supervisor/shared/status_bar.c +++ b/supervisor/shared/status_bar.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include "genhdr/mpversion.h" diff --git a/supervisor/shared/status_bar.h b/supervisor/shared/status_bar.h index 062012b54521..60232ded57e8 100644 --- a/supervisor/shared/status_bar.h +++ b/supervisor/shared/status_bar.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/supervisor/shared/status_leds.c b/supervisor/shared/status_leds.c index 414b35dd4164..73b1f4ef15a6 100644 --- a/supervisor/shared/status_leds.c +++ b/supervisor/shared/status_leds.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017-2021 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017-2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/shared/status_leds.h" diff --git a/supervisor/shared/status_leds.h b/supervisor/shared/status_leds.h index d065b96d4a24..26d3f264fe20 100644 --- a/supervisor/shared/status_leds.h +++ b/supervisor/shared/status_leds.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SUPERVISOR_STATUS_LEDS_H #define MICROPY_INCLUDED_SUPERVISOR_STATUS_LEDS_H diff --git a/supervisor/shared/tick.c b/supervisor/shared/tick.c index 7c35bc2f9b7c..24a06e622a18 100644 --- a/supervisor/shared/tick.c +++ b/supervisor/shared/tick.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/shared/tick.h" diff --git a/supervisor/shared/tick.h b/supervisor/shared/tick.h index 5f537ad2ed16..9840d6ffdd21 100644 --- a/supervisor/shared/tick.h +++ b/supervisor/shared/tick.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #ifndef __INCLUDED_SUPERVISOR_TICK_H #define __INCLUDED_SUPERVISOR_TICK_H diff --git a/supervisor/shared/traceback.c b/supervisor/shared/traceback.c index 6b97f5bd3764..cacc74b2327a 100644 --- a/supervisor/shared/traceback.c +++ b/supervisor/shared/traceback.c @@ -1,27 +1,7 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Christian Walther - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Christian Walther +// +// SPDX-License-Identifier: MIT #include "traceback.h" diff --git a/supervisor/shared/traceback.h b/supervisor/shared/traceback.h index 09e9bc403bd0..64994c26a0f6 100644 --- a/supervisor/shared/traceback.h +++ b/supervisor/shared/traceback.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Christian Walther - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Christian Walther +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SUPERVISOR_TRACEBACK_H #define MICROPY_INCLUDED_SUPERVISOR_TRACEBACK_H diff --git a/supervisor/shared/translate/compressed_string.h b/supervisor/shared/translate/compressed_string.h index 442933a9c568..89dd75c22aef 100644 --- a/supervisor/shared/translate/compressed_string.h +++ b/supervisor/shared/translate/compressed_string.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/supervisor/shared/translate/translate.c b/supervisor/shared/translate/translate.c index 4ef24ffba735..00083347c9cd 100644 --- a/supervisor/shared/translate/translate.c +++ b/supervisor/shared/translate/translate.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/shared/translate/translate.h" #include "py/qstr.h" diff --git a/supervisor/shared/translate/translate.h b/supervisor/shared/translate/translate.h index fddf82675d23..bc9d950e297c 100644 --- a/supervisor/shared/translate/translate.h +++ b/supervisor/shared/translate/translate.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/supervisor/shared/translate/translate_impl.h b/supervisor/shared/translate/translate_impl.h index e00480b58a38..292d77440f7d 100644 --- a/supervisor/shared/translate/translate_impl.h +++ b/supervisor/shared/translate/translate_impl.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/supervisor/shared/usb/host_keyboard.c b/supervisor/shared/usb/host_keyboard.c index 1342c3b8c91c..0aaecbd3b218 100644 --- a/supervisor/shared/usb/host_keyboard.c +++ b/supervisor/shared/usb/host_keyboard.c @@ -1,29 +1,9 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2023 Scott Shawcroft for Adafruit Industries - * Copyright (c) 2023 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2023 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "tusb.h" diff --git a/supervisor/shared/usb/usb.c b/supervisor/shared/usb/usb.c index bbd51678b236..b87cf78e903d 100644 --- a/supervisor/shared/usb/usb.c +++ b/supervisor/shared/usb/usb.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 hathach for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 hathach for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/objstr.h" #include "supervisor/background_callback.h" diff --git a/supervisor/shared/usb/usb_desc.c b/supervisor/shared/usb/usb_desc.c index c69063263c16..c4e182ff1e5d 100644 --- a/supervisor/shared/usb/usb_desc.c +++ b/supervisor/shared/usb/usb_desc.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 hathach for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 hathach for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "lib/tinyusb/src/tusb.h" diff --git a/supervisor/shared/usb/usb_device.c b/supervisor/shared/usb/usb_device.c index cee97a0d3a19..ec08b8bf4d7e 100644 --- a/supervisor/shared/usb/usb_device.c +++ b/supervisor/shared/usb/usb_device.c @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 hathach for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 hathach for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "py/runtime.h" #include "supervisor/port.h" diff --git a/supervisor/shared/usb/usb_msc_flash.c b/supervisor/shared/usb/usb_msc_flash.c index 86a8c259d830..45ec7cb5aaa2 100644 --- a/supervisor/shared/usb/usb_msc_flash.c +++ b/supervisor/shared/usb/usb_msc_flash.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 hathach for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 hathach for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "tusb.h" // // #include "supervisor/flash.h" diff --git a/supervisor/shared/usb/usb_vendor_descriptors.h b/supervisor/shared/usb/usb_vendor_descriptors.h index 0b41c09d3416..0849075dae4c 100644 --- a/supervisor/shared/usb/usb_vendor_descriptors.h +++ b/supervisor/shared/usb/usb_vendor_descriptors.h @@ -1,26 +1,8 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2019 Ha Thach (tinyusb.org) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Ha Thach (tinyusb.org) +// +// SPDX-License-Identifier: MIT #ifndef USB_DESCRIPTORS_H_ #define USB_DESCRIPTORS_H_ diff --git a/supervisor/shared/web_workflow/web_workflow.c b/supervisor/shared/web_workflow/web_workflow.c index 83b7bedd8ec7..a03338c90f9e 100644 --- a/supervisor/shared/web_workflow/web_workflow.c +++ b/supervisor/shared/web_workflow/web_workflow.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Include strchrnul() #define _GNU_SOURCE diff --git a/supervisor/shared/web_workflow/web_workflow.h b/supervisor/shared/web_workflow/web_workflow.h index 5b699799b1d7..439964dd333a 100644 --- a/supervisor/shared/web_workflow/web_workflow.h +++ b/supervisor/shared/web_workflow/web_workflow.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/supervisor/shared/web_workflow/websocket.c b/supervisor/shared/web_workflow/websocket.c index a6b9b322a55f..4ee06791097c 100644 --- a/supervisor/shared/web_workflow/websocket.c +++ b/supervisor/shared/web_workflow/websocket.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/shared/web_workflow/websocket.h" diff --git a/supervisor/shared/web_workflow/websocket.h b/supervisor/shared/web_workflow/websocket.h index 7f0a559fa983..bbf30a4611d5 100644 --- a/supervisor/shared/web_workflow/websocket.h +++ b/supervisor/shared/web_workflow/websocket.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2022 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/supervisor/shared/workflow.c b/supervisor/shared/workflow.c index 0ebaca2865a3..7c5046ffe61d 100644 --- a/supervisor/shared/workflow.c +++ b/supervisor/shared/workflow.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include #include "py/mpconfig.h" diff --git a/supervisor/shared/workflow.h b/supervisor/shared/workflow.h index 65813cb47e17..e03f9c005737 100644 --- a/supervisor/shared/workflow.h +++ b/supervisor/shared/workflow.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/supervisor/spi_flash_api.h b/supervisor/spi_flash_api.h index 1af83736dfe6..deba3794e1f4 100644 --- a/supervisor/spi_flash_api.h +++ b/supervisor/spi_flash_api.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries LLC - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries LLC +// +// SPDX-License-Identifier: MIT #ifndef MICROPY_INCLUDED_SUPERVISOR_SPI_FLASH_H #define MICROPY_INCLUDED_SUPERVISOR_SPI_FLASH_H diff --git a/supervisor/stub/filesystem.c b/supervisor/stub/filesystem.c index 920a7571f27f..ce9204b95c39 100644 --- a/supervisor/stub/filesystem.c +++ b/supervisor/stub/filesystem.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/filesystem.h" diff --git a/supervisor/stub/internal_flash.c b/supervisor/stub/internal_flash.c index 3bb71493fd72..ab3aff58f82f 100644 --- a/supervisor/stub/internal_flash.c +++ b/supervisor/stub/internal_flash.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George +// +// SPDX-License-Identifier: MIT #include "supervisor/flash.h" #include diff --git a/supervisor/stub/misc.c b/supervisor/stub/misc.c index a17188beff07..c0a2a87f9fec 100644 --- a/supervisor/stub/misc.c +++ b/supervisor/stub/misc.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "stdbool.h" #include "supervisor/port.h" diff --git a/supervisor/stub/safe_mode.c b/supervisor/stub/safe_mode.c index ea5187da28a5..aee5705f5b54 100644 --- a/supervisor/stub/safe_mode.c +++ b/supervisor/stub/safe_mode.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/shared/safe_mode.h" diff --git a/supervisor/stub/stack.c b/supervisor/stub/stack.c index 120db34c7353..a8ffa9662210 100644 --- a/supervisor/stub/stack.c +++ b/supervisor/stub/stack.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/shared/stack.h" diff --git a/supervisor/usb.h b/supervisor/usb.h index 8bf10fe7b268..0b0fabb5d606 100644 --- a/supervisor/usb.h +++ b/supervisor/usb.h @@ -1,28 +1,8 @@ -/* - * This file is part of the Micro Python project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2018 hathach for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2018 hathach for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/supervisor/workflow.h b/supervisor/workflow.h index f550f8e88c06..46a59dfdfaf4 100755 --- a/supervisor/workflow.h +++ b/supervisor/workflow.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #pragma once From bb959ba094c57ed9d63d42ae46bf287f83dd0ac5 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Fri, 17 May 2024 14:55:19 -0400 Subject: [PATCH 040/227] save header change tool for posterity --- tools/circuitpy_header_change.py | 149 +++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100755 tools/circuitpy_header_change.py diff --git a/tools/circuitpy_header_change.py b/tools/circuitpy_header_change.py new file mode 100755 index 000000000000..451959c3e59c --- /dev/null +++ b/tools/circuitpy_header_change.py @@ -0,0 +1,149 @@ +#!/usr/bin/env python3 + +# This file is part of the CircuitPython project: https://circuitpython.org + +# SPDX-FileCopyrightText: Copyright (c) 2024 by Dan Halbert for Adafruit Industries +# +# SPDX-License-Identifier: MIT +# +# Casual tool to help convert old-style copyright/license headers to SPDX and label +# them as CircuitPython. +# +# Typical usages: +# header_change.py *.c *.h --change +# find boards common-hal/ peripherals/ supervisor/ -name '*.[ch]' |xargs header_change.py +# find boards common-hal/ peripherals/ supervisor/ -name '*.[ch]' |xargs header_change.py --change + +import click +import os +import pathlib +import re +import sys + +SPDX_COPYRIGHT_RE = re.compile(r"(SPDX-FileCopyrightText:.*$)") +ORIGINAL_COPYRIGHT_RE = re.compile(r"\* (.*Copyright .*[12].*$)", flags=re.IGNORECASE) +MIT_LICENSE_RE = re.compile(r"MIT License", flags=re.IGNORECASE) + + +def find_related_copyrights(filename): + path = pathlib.Path(filename) + copyrights = [] + + if "boards" in path.parts: + related_path = path.parent / "board.c" + if related_path.is_file(): + with open(related_path, "r") as f: + for line in f.readlines(): + match = SPDX_COPYRIGHT_RE.search(line) + if match: + copyrights.append(f"// {match.group(1)}") + continue + match = ORIGINAL_COPYRIGHT_RE.search(line) + if match: + copyrights.append(f"// SPDX-FileCopyrightText: {match.group(1)}") + + return copyrights + + +def fix_file(filename, change): + copyrights = [] + mit_license = False + empty_file = False + first_line = "" + no_existing_header = False + + with open(filename, "r") as f: + lines = f.readlines() + if not lines: + empty_file = True + no_existing_header = True + mit_license = True + copyrights.append( + f"// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC" + ) + else: + first_line = lines.pop(0) + + if first_line.startswith("// SPDX"): + return "already SPDX" + + if first_line.startswith("// This file is part of the CircuitPython"): + return "already converted to CircuitPython header" + + if not first_line == "/*\n": + no_existing_header = True + mit_license = True + + # Put back the line we just read, and add a blank line to separate the header as well. + lines.insert(0, first_line) + lines.insert(0, "\n") + + while lines and not no_existing_header: + line = lines.pop(0) + + if not line and not no_existing_header: + return "Could not find '*/'" + + # Check that it's MIT-licensed + match = MIT_LICENSE_RE.search(line) + if match: + mit_license = True + continue + + # If there's an SPDX copyright, just use it. There may be more than one + match = SPDX_COPYRIGHT_RE.search(line) + if match: + copyrights.append(f"// {match.group(1)}") + continue + + # If it's a non-SPDX copyright, use the copyright text and put it in an SPDX-FileCopyrightText. + match = ORIGINAL_COPYRIGHT_RE.search(line) + if match: + copyrights.append(f"// SPDX-FileCopyrightText: {match.group(1)}") + continue + + if line.strip() == "*/": + break + + if not mit_license and not no_existing_header: + return "No MIT license" + if not copyrights: + copyrights = find_related_copyrights(filename) + if not copyrights: + copyrights.append( + f"// SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC" + ) + + if change: + with open(filename, "w") as f: + f.write( + "// This file is part of the CircuitPython project: https://circuitpython.org\n//\n" + ) + for copyright in copyrights: + f.write(copyright) + f.write("\n") + f.write("//\n// SPDX-License-Identifier: MIT\n") + + # Copy the rest of the file. + for line in lines: + f.write(line) + return None + + +@click.command() +@click.option("--change/--no-change", default=False, help="update the file, or only do a dry run") +@click.argument("files", type=click.Path(exists=True, dir_okay=False, writable=True), nargs=-1) +def main(change, files): + if not change: + print("Dry-run only. No changes being made. Use --change to change files") + for filename in files: + print(filename, end="") + error = fix_file(filename, change) + if error: + print(" :", error) + else: + print() + + +if __name__ == "__main__": + main() From ad5990ee74998565180d3d31fa91f82bd3a80a3c Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Fri, 17 May 2024 15:32:38 -0400 Subject: [PATCH 041/227] fix typo --- devices/ble_hci/common-hal/_bleio/hci_include/att.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devices/ble_hci/common-hal/_bleio/hci_include/att.h b/devices/ble_hci/common-hal/_bleio/hci_include/att.h index 421f7dda9de2..39a32d5e6dd3 100644 --- a/devices/ble_hci/common-hal/_bleio/hci_include/att.h +++ b/devices/ble_hci/common-hal/_bleio/hci_include/att.h @@ -1,4 +1,4 @@ -// This file is part of the CircuitPython project: https://circuitpython.org\ +// This file is part of the CircuitPython project: https://circuitpython.org // Adapted from Zephyr include file. /** @file From 6a93dd4b656bd7245c5cd2806d35e62acdee2ce9 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Fri, 17 May 2024 16:07:31 -0400 Subject: [PATCH 042/227] fix .ld file --- ports/stm/boards/STM32F746xG_fs.ld | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/ports/stm/boards/STM32F746xG_fs.ld b/ports/stm/boards/STM32F746xG_fs.ld index ab3bcff97a97..4516159fd808 100644 --- a/ports/stm/boards/STM32F746xG_fs.ld +++ b/ports/stm/boards/STM32F746xG_fs.ld @@ -1,8 +1,10 @@ -// This file is part of the CircuitPython project: https://circuitpython.org -// -// SPDX-FileCopyrightText: Copyright (c) 2020 Mark Olsson -// -// SPDX-License-Identifier: MIT +/* + * This file is part of the CircuitPython project: https://circuitpython.org + * + * SPDX-FileCopyrightText: Copyright (c) 2020 Mark Olsson + * + * SPDX-License-Identifier: MIT + */ /* Entry Point */ ENTRY(Reset_Handler) From e99d41e584c58f07f92bd58210d122e2b86cc517 Mon Sep 17 00:00:00 2001 From: Thomas Raffler Date: Sat, 18 May 2024 19:53:42 +0200 Subject: [PATCH 043/227] add missing pin for ESP32-S3-DevKitM-1 --- ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/pins.c | 1 + 1 file changed, 1 insertion(+) diff --git a/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/pins.c b/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/pins.c index 0ab3e57cbc57..bad7079457df 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/pins.c +++ b/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/pins.c @@ -31,6 +31,7 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_IO19), MP_ROM_PTR(&pin_GPIO19) }, { MP_ROM_QSTR(MP_QSTR_IO20), MP_ROM_PTR(&pin_GPIO20) }, { MP_ROM_QSTR(MP_QSTR_IO21), MP_ROM_PTR(&pin_GPIO21) }, + { MP_ROM_QSTR(MP_QSTR_IO34), MP_ROM_PTR(&pin_GPIO34) }, { MP_ROM_QSTR(MP_QSTR_IO35), MP_ROM_PTR(&pin_GPIO35) }, { MP_ROM_QSTR(MP_QSTR_IO36), MP_ROM_PTR(&pin_GPIO36) }, { MP_ROM_QSTR(MP_QSTR_IO37), MP_ROM_PTR(&pin_GPIO37) }, From b994c24768ab085d1b3d35498201df6e5ae3c68c Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Sun, 19 May 2024 20:15:34 -0400 Subject: [PATCH 044/227] update bradanlanestudio_explorer_rp2040 headers --- .../bradanlanestudio_explorer_rp2040/board.c | 28 ++++------------- .../mpconfigboard.h | 28 ++++------------- .../mpconfigboard.mk | 6 ++++ .../pico-sdk-configboard.h | 6 ++++ .../bradanlanestudio_explorer_rp2040/pins.c | 30 +++++-------------- 5 files changed, 29 insertions(+), 69 deletions(-) diff --git a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/board.c b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/board.c index 8130925b9708..a886c949afce 100644 --- a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/board.c +++ b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/board.c @@ -1,26 +1,8 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2024 Bradán Lane STUDIO - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Bradán Lane STUDIO +// +// SPDX-License-Identifier: MIT /* The Explorer Badge(s) have more than one specific hardware configuration. diff --git a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.h index 43271bb17d6e..2c5760c74968 100644 --- a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.h @@ -1,26 +1,8 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2024 Bradán Lane STUDIO - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Bradán Lane STUDIO +// +// SPDX-License-Identifier: MIT #pragma once diff --git a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.mk b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.mk index 06c8786d85c8..872da79982ff 100644 --- a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.mk +++ b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.mk @@ -1,3 +1,9 @@ +# This file is part of the CircuitPython project: https://circuitpython.org +# +# SPDX-FileCopyrightText: Copyright (c) 2024 Bradán Lane STUDIO +# +# SPDX-License-Identifier: MIT + USB_VID = 0x2E8A USB_PID = 0x1073 USB_PRODUCT = "Explorer Badge" diff --git a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pico-sdk-configboard.h index a41131dd22b7..2d9283a9192f 100644 --- a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pico-sdk-configboard.h @@ -1,3 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pins.c b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pins.c index 971ca5f2597f..9ca4cbdfa282 100644 --- a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pins.c +++ b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pins.c @@ -1,26 +1,10 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2024 Bradán Lane STUDIO - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +// Put board-specific pico-sdk definitions here. This file must exist. #include "mpconfigboard.h" From dbef48d5e29344dec8a35788f4e001008da57882 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Sun, 19 May 2024 20:38:07 -0400 Subject: [PATCH 045/227] add #pragma once to all CircuitPython header files without any include guards --- devices/ble_hci/common-hal/_bleio/hci_include/l2cap_internal.h | 2 ++ ports/atmel-samd/boards/8086_commander/mpconfigboard.h | 2 ++ .../boards/adafruit_neokey_trinkey_m0/mpconfigboard.h | 2 ++ .../boards/adafruit_pixel_trinkey_m0/mpconfigboard.h | 2 ++ .../boards/adafruit_proxlight_trinkey_m0/mpconfigboard.h | 2 ++ .../boards/adafruit_rotary_trinkey_m0/mpconfigboard.h | 2 ++ .../boards/adafruit_sht4x_trinkey_m0/mpconfigboard.h | 2 ++ .../boards/adafruit_slide_trinkey_m0/mpconfigboard.h | 2 ++ .../atmel-samd/boards/adafruit_trrs_trinkey_m0/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/aloriumtech_evo_m51/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/arduino_mkr1300/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/arduino_mkrzero/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/arduino_nano_33_iot/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/arduino_zero/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/bast_pro_mini_m0/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/bdmicro_vina_d21/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/bdmicro_vina_d51/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/blm_badge/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/capablerobot_usbhub/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/catwan_usbstick/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/circuitbrains_basic_m0/mpconfigboard.h | 2 ++ .../atmel-samd/boards/circuitbrains_deluxe_m4/mpconfigboard.h | 2 ++ .../boards/circuitplayground_express/mpconfigboard.h | 2 ++ .../boards/circuitplayground_express_crickit/mpconfigboard.h | 2 ++ .../boards/circuitplayground_express_displayio/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/cp32-m4/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/cp_sapling_m0/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/cp_sapling_m0_revb/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/cp_sapling_m0_spiflash/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/datalore_ip_m4/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/datum_distance/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/datum_imu/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/datum_light/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/datum_weather/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/dynalora_usb/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/dynossat_edu_eps/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/dynossat_edu_obc/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/escornabot_makech/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/feather_m0_adalogger/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/feather_m0_basic/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/feather_m0_express/mpconfigboard.h | 2 ++ .../boards/feather_m0_express_crickit/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/feather_m0_rfm69/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/feather_m0_rfm9x/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/feather_m0_supersized/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/feather_m4_can/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/feather_m4_express/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/fluff_m0/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/gemma_m0/mpconfigboard.h | 2 ++ .../atmel-samd/boards/grandcentral_m4_express/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/hallowing_m0_express/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/hallowing_m4_express/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/huntercat_nfc/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/itsybitsy_m0_express/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/itsybitsy_m4_express/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/kicksat-sprite/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/loc_ber_m4_base_board/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/matrixportal_m4/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/meowmeow/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/metro_m0_express/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/metro_m4_airlift_lite/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/metro_m4_express/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/mini_sam_m4/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/monster_m4sk/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/ndgarage_ndbit6/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/ndgarage_ndbit6_v2/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/neopixel_trinkey_m0/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/nfc_copy_cat/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/openbook_m4/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/p1am_200/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/pewpew10/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/pewpew_lcd/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/pewpew_m4/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/picoplanet/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/pybadge/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/pycubed/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/pycubed_mram/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/pycubed_mram_v05/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/pycubed_v05/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/pygamer/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/pyportal/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/pyportal_titano/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/pyruler/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/qtpy_m0/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/qtpy_m0_haxpress/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/robohatmm1_m4/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/sam32/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/same54_xplained/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/seeeduino_wio_terminal/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/seeeduino_xiao/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/seeeduino_xiao_kb/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/sensebox_mcu/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/serpente/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/shirtty/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/silicognition-m4-shim/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/snekboard/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/sparkfun_lumidrive/mpconfigboard.h | 2 ++ .../boards/sparkfun_qwiic_micro_no_flash/mpconfigboard.h | 2 ++ .../boards/sparkfun_qwiic_micro_with_flash/mpconfigboard.h | 2 ++ .../atmel-samd/boards/sparkfun_redboard_turbo/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/sparkfun_samd21_dev/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/sparkfun_samd21_mini/mpconfigboard.h | 2 ++ .../atmel-samd/boards/sparkfun_samd51_micromod/mpconfigboard.h | 2 ++ .../boards/sparkfun_samd51_thing_plus/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/stackrduino_m0_pro/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/stringcar_m0_express/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/trellis_m4_express/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/trinket_m0/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/trinket_m0_haxpress/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/uartlogger2/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/uchip/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/ugame10/mpconfigboard.h | 2 ++ .../boards/winterbloom_big_honking_button/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/winterbloom_sol/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/xinabox_cc03/mpconfigboard.h | 2 ++ ports/atmel-samd/boards/xinabox_cs11/mpconfigboard.h | 2 ++ ports/atmel-samd/common-hal/alarm/coproc/CoprocAlarm.h | 2 ++ ports/atmel-samd/common-hal/imagecapture/__init__.h | 2 ++ ports/atmel-samd/common-hal/rtc/RTC.h | 2 ++ ports/atmel-samd/common-hal/sdioio/__init__.h | 2 ++ ports/atmel-samd/qstrdefsport.h | 2 ++ ports/broadcom/boards/diodes_delight_piunora/mpconfigboard.h | 2 ++ ports/broadcom/boards/raspberrypi_cm4/mpconfigboard.h | 2 ++ ports/broadcom/boards/raspberrypi_cm4io/mpconfigboard.h | 2 ++ ports/broadcom/boards/raspberrypi_pi4b/mpconfigboard.h | 2 ++ ports/broadcom/boards/raspberrypi_zero/mpconfigboard.h | 2 ++ ports/broadcom/boards/raspberrypi_zero2w/mpconfigboard.h | 2 ++ ports/broadcom/boards/raspberrypi_zero_w/mpconfigboard.h | 2 ++ ports/broadcom/common-hal/sdioio/__init__.h | 2 ++ ports/broadcom/qstrdefsport.h | 2 ++ ports/cxd56/background.h | 2 ++ ports/cxd56/boards/spresense/mpconfigboard.h | 2 ++ ports/cxd56/common-hal/rtc/RTC.h | 2 ++ ports/cxd56/qstrdefsport.h | 2 ++ ports/cxd56/supervisor/internal_flash.h | 2 ++ ports/espressif/boards/01space_lcd042_esp32c3/mpconfigboard.h | 2 ++ ports/espressif/boards/adafruit_esp32s3_camera/mpconfigboard.h | 2 ++ .../espressif/boards/adafruit_feather_esp32_v2/mpconfigboard.h | 2 ++ .../adafruit_feather_esp32c6_4mbflash_nopsram/mpconfigboard.h | 2 ++ .../espressif/boards/adafruit_feather_esp32s2/mpconfigboard.h | 2 ++ .../adafruit_feather_esp32s2_reverse_tft/mpconfigboard.h | 2 ++ .../boards/adafruit_feather_esp32s2_tft/mpconfigboard.h | 2 ++ .../adafruit_feather_esp32s3_4mbflash_2mbpsram/mpconfigboard.h | 2 ++ .../boards/adafruit_feather_esp32s3_nopsram/mpconfigboard.h | 2 ++ .../adafruit_feather_esp32s3_reverse_tft/mpconfigboard.h | 2 ++ .../boards/adafruit_feather_esp32s3_tft/mpconfigboard.h | 2 ++ .../espressif/boards/adafruit_feather_huzzah32/mpconfigboard.h | 2 ++ ports/espressif/boards/adafruit_funhouse/mpconfigboard.h | 2 ++ .../boards/adafruit_huzzah32_breakout/mpconfigboard.h | 2 ++ .../espressif/boards/adafruit_itsybitsy_esp32/mpconfigboard.h | 2 ++ .../boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h | 2 ++ .../espressif/boards/adafruit_matrixportal_s3/mpconfigboard.h | 2 ++ ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h | 2 ++ ports/espressif/boards/adafruit_metro_esp32s3/mpconfigboard.h | 2 ++ .../espressif/boards/adafruit_qtpy_esp32_pico/mpconfigboard.h | 2 ++ ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h | 2 ++ ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h | 2 ++ .../adafruit_qtpy_esp32s3_4mbflash_2mbpsram/mpconfigboard.h | 2 ++ .../boards/adafruit_qtpy_esp32s3_nopsram/mpconfigboard.h | 2 ++ .../espressif/boards/adafruit_qualia_s3_rgb666/mpconfigboard.h | 2 ++ ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.h | 2 ++ ports/espressif/boards/ai_thinker_esp32-c3s-2m/mpconfigboard.h | 2 ++ ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h | 2 ++ .../boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h | 2 ++ ports/espressif/boards/arduino_nano_esp32s3/mpconfigboard.h | 2 ++ .../arduino_nano_esp32s3_inverted_statusled/mpconfigboard.h | 2 ++ ports/espressif/boards/artisense_rd00/mpconfigboard.h | 2 ++ ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h | 2 ++ ports/espressif/boards/beetle-esp32-c3/mpconfigboard.h | 2 ++ ports/espressif/boards/bpi_bit_s2/mpconfigboard.h | 2 ++ ports/espressif/boards/bpi_leaf_s3/mpconfigboard.h | 2 ++ ports/espressif/boards/bpi_picow_s3/mpconfigboard.h | 2 ++ ports/espressif/boards/brainboardz_neuron/mpconfigboard.h | 2 ++ ports/espressif/boards/columbia-dsl-sensor/mpconfigboard.h | 2 ++ ports/espressif/boards/crcibernetica-ideaboard/mpconfigboard.h | 2 ++ ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h | 2 ++ .../boards/cytron_maker_feather_aiot_s3/mpconfigboard.h | 2 ++ ports/espressif/boards/deneyap_kart/mpconfigboard.h | 2 ++ ports/espressif/boards/deneyap_kart_1a/mpconfigboard.h | 2 ++ ports/espressif/boards/deneyap_kart_1a_v2/mpconfigboard.h | 2 ++ ports/espressif/boards/deneyap_kart_g/mpconfigboard.h | 2 ++ ports/espressif/boards/deneyap_mini/mpconfigboard.h | 2 ++ ports/espressif/boards/deneyap_mini_v2/mpconfigboard.h | 2 ++ ports/espressif/boards/doit_esp32_devkit_v1/mpconfigboard.h | 2 ++ ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h | 2 ++ ports/espressif/boards/es3ink/mpconfigboard.h | 2 ++ .../espressif_esp32_devkitc_v4_wroom_32e/mpconfigboard.h | 2 ++ .../boards/espressif_esp32_devkitc_v4_wrover/mpconfigboard.h | 2 ++ ports/espressif/boards/espressif_esp32_eye/mpconfigboard.h | 2 ++ ports/espressif/boards/espressif_esp32_lyrat/mpconfigboard.h | 2 ++ .../boards/espressif_esp32c3_devkitm_1_n4/mpconfigboard.h | 2 ++ .../boards/espressif_esp32c6_devkitc_1_n8/mpconfigboard.h | 2 ++ .../boards/espressif_esp32c6_devkitm_1_n4/mpconfigboard.h | 2 ++ .../boards/espressif_esp32h2_devkitm_1_n4/mpconfigboard.h | 2 ++ .../boards/espressif_esp32s2_devkitc_1_n4/mpconfigboard.h | 2 ++ .../boards/espressif_esp32s2_devkitc_1_n4r2/mpconfigboard.h | 2 ++ .../boards/espressif_esp32s2_devkitc_1_n8r2/mpconfigboard.h | 2 ++ ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h | 2 ++ .../boards/espressif_esp32s3_box_lite/mpconfigboard.h | 2 ++ .../boards/espressif_esp32s3_devkitc_1_n32r8/mpconfigboard.h | 2 ++ .../boards/espressif_esp32s3_devkitc_1_n8/mpconfigboard.h | 2 ++ .../boards/espressif_esp32s3_devkitc_1_n8r2/mpconfigboard.h | 2 ++ .../boards/espressif_esp32s3_devkitc_1_n8r8/mpconfigboard.h | 2 ++ .../mpconfigboard.h | 2 ++ .../boards/espressif_esp32s3_devkitm_1_n8/mpconfigboard.h | 2 ++ ports/espressif/boards/espressif_esp32s3_eye/mpconfigboard.h | 2 ++ .../espressif/boards/espressif_esp32s3_lcd_ev/mpconfigboard.h | 2 ++ .../boards/espressif_esp32s3_usb_otg_n8/mpconfigboard.h | 2 ++ ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h | 2 ++ ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h | 2 ++ ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h | 2 ++ ports/espressif/boards/espressif_saola_1_wroom/mpconfigboard.h | 2 ++ .../espressif/boards/espressif_saola_1_wrover/mpconfigboard.h | 2 ++ ports/espressif/boards/firebeetle2_esp32s3/mpconfigboard.h | 2 ++ ports/espressif/boards/flipperzero_wifi_dev/mpconfigboard.h | 2 ++ ports/espressif/boards/franzininho_wifi_wroom/mpconfigboard.h | 2 ++ ports/espressif/boards/franzininho_wifi_wrover/mpconfigboard.h | 2 ++ ports/espressif/boards/gravitech_cucumber_m/mpconfigboard.h | 2 ++ ports/espressif/boards/gravitech_cucumber_ms/mpconfigboard.h | 2 ++ ports/espressif/boards/gravitech_cucumber_r/mpconfigboard.h | 2 ++ ports/espressif/boards/gravitech_cucumber_rs/mpconfigboard.h | 2 ++ ports/espressif/boards/hardkernel_odroid_go/mpconfigboard.h | 2 ++ .../boards/heltec_esp32s3_wifi_lora_v3/mpconfigboard.h | 2 ++ ports/espressif/boards/hexky_s2/mpconfigboard.h | 2 ++ ports/espressif/boards/hiibot_iots2/mpconfigboard.h | 2 ++ ports/espressif/boards/lilygo_tdeck/mpconfigboard.h | 2 ++ ports/espressif/boards/lilygo_tdisplay_s3/mpconfigboard.h | 2 ++ ports/espressif/boards/lilygo_tembed_esp32s3/mpconfigboard.h | 2 ++ ports/espressif/boards/lilygo_ttgo_t-01c3/mpconfigboard.h | 2 ++ ports/espressif/boards/lilygo_ttgo_t-oi-plus/mpconfigboard.h | 2 ++ .../boards/lilygo_ttgo_t8_esp32_s2_wroom/mpconfigboard.h | 2 ++ ports/espressif/boards/lilygo_ttgo_t8_s2/mpconfigboard.h | 2 ++ .../espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h | 2 ++ .../boards/lilygo_ttgo_tdisplay_esp32_16m/mpconfigboard.h | 2 ++ .../boards/lilygo_ttgo_tdisplay_esp32_4m/mpconfigboard.h | 2 ++ ports/espressif/boards/lilygo_twatch_2020_v3/mpconfigboard.h | 2 ++ ports/espressif/boards/lolin_c3_mini/mpconfigboard.h | 2 ++ ports/espressif/boards/lolin_c3_pico/mpconfigboard.h | 2 ++ ports/espressif/boards/lolin_s2_mini/mpconfigboard.h | 2 ++ ports/espressif/boards/lolin_s2_pico/mpconfigboard.h | 2 ++ ports/espressif/boards/lolin_s3/mpconfigboard.h | 2 ++ ports/espressif/boards/lolin_s3_mini/mpconfigboard.h | 2 ++ ports/espressif/boards/lolin_s3_pro/mpconfigboard.h | 2 ++ ports/espressif/boards/luatos_core_esp32c3/mpconfigboard.h | 2 ++ .../espressif/boards/luatos_core_esp32c3_ch343/mpconfigboard.h | 2 ++ ports/espressif/boards/m5stack_atom_echo/mpconfigboard.h | 2 ++ ports/espressif/boards/m5stack_atom_lite/mpconfigboard.h | 2 ++ ports/espressif/boards/m5stack_atom_matrix/mpconfigboard.h | 2 ++ ports/espressif/boards/m5stack_atom_u/mpconfigboard.h | 2 ++ ports/espressif/boards/m5stack_atoms3/mpconfigboard.h | 2 ++ ports/espressif/boards/m5stack_atoms3_lite/mpconfigboard.h | 2 ++ ports/espressif/boards/m5stack_atoms3u/mpconfigboard.h | 2 ++ ports/espressif/boards/m5stack_cardputer/keymap.h | 2 ++ ports/espressif/boards/m5stack_cardputer/mpconfigboard.h | 2 ++ ports/espressif/boards/m5stack_core2/mpconfigboard.h | 2 ++ ports/espressif/boards/m5stack_core_basic/mpconfigboard.h | 2 ++ ports/espressif/boards/m5stack_core_fire/mpconfigboard.h | 2 ++ ports/espressif/boards/m5stack_cores3/mpconfigboard.h | 2 ++ ports/espressif/boards/m5stack_dial/mpconfigboard.h | 2 ++ ports/espressif/boards/m5stack_m5paper/mpconfigboard.h | 2 ++ ports/espressif/boards/m5stack_stamp_c3/mpconfigboard.h | 2 ++ ports/espressif/boards/m5stack_stick_c/mpconfigboard.h | 2 ++ ports/espressif/boards/m5stack_stick_c_plus/mpconfigboard.h | 2 ++ ports/espressif/boards/m5stack_timer_camera_x/mpconfigboard.h | 2 ++ ports/espressif/boards/magiclick_s3_n4r2/mpconfigboard.h | 2 ++ ports/espressif/boards/maker_badge/mpconfigboard.h | 2 ++ ports/espressif/boards/makerfabs_tft7/mpconfigboard.h | 2 ++ .../espressif/boards/makergo_esp32c3_supermini/mpconfigboard.h | 2 ++ ports/espressif/boards/microdev_micro_c3/mpconfigboard.h | 2 ++ ports/espressif/boards/microdev_micro_s2/mpconfigboard.h | 2 ++ ports/espressif/boards/mixgo_ce_serial/mpconfigboard.h | 2 ++ ports/espressif/boards/mixgo_ce_udisk/mpconfigboard.h | 2 ++ ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h | 2 ++ .../boards/muselab_nanoesp32_s2_wroom/mpconfigboard.h | 2 ++ .../boards/muselab_nanoesp32_s2_wrover/mpconfigboard.h | 2 ++ ports/espressif/boards/odt_pixelwing_esp32_s2/mpconfigboard.h | 2 ++ ports/espressif/boards/oxocard_artwork/mpconfigboard.h | 2 ++ ports/espressif/boards/oxocard_connect/mpconfigboard.h | 2 ++ ports/espressif/boards/oxocard_galaxy/mpconfigboard.h | 2 ++ ports/espressif/boards/oxocard_science/mpconfigboard.h | 2 ++ ports/espressif/boards/seeed_xiao_esp32c3/mpconfigboard.h | 2 ++ ports/espressif/boards/sensebox_mcu_esp32s2/mpconfigboard.h | 2 ++ .../boards/smartbeedesigns_bee_data_logger/mpconfigboard.h | 2 ++ .../boards/smartbeedesigns_bee_motion_s3/mpconfigboard.h | 2 ++ ports/espressif/boards/smartbeedesigns_bee_s3/mpconfigboard.h | 2 ++ .../espressif/boards/spotpear_esp32c3_lcd_1_44/mpconfigboard.h | 2 ++ ports/espressif/boards/sqfmi_watchy/mpconfigboard.h | 2 ++ ports/espressif/boards/sunton_esp32_2424S012/mpconfigboard.h | 2 ++ ports/espressif/boards/sunton_esp32_2432S028/mpconfigboard.h | 2 ++ ports/espressif/boards/sunton_esp32_8048S070/mpconfigboard.h | 2 ++ .../espressif/boards/targett_module_clip_wroom/mpconfigboard.h | 2 ++ .../boards/targett_module_clip_wrover/mpconfigboard.h | 2 ++ ports/espressif/boards/unexpectedmaker_bling/mpconfigboard.h | 2 ++ .../boards/unexpectedmaker_blizzard_s3/mpconfigboard.h | 2 ++ .../espressif/boards/unexpectedmaker_feathers2/mpconfigboard.h | 2 ++ .../boards/unexpectedmaker_feathers2_neo/mpconfigboard.h | 2 ++ .../unexpectedmaker_feathers2_prerelease/mpconfigboard.h | 2 ++ .../espressif/boards/unexpectedmaker_feathers3/mpconfigboard.h | 2 ++ ports/espressif/boards/unexpectedmaker_nanos3/mpconfigboard.h | 2 ++ ports/espressif/boards/unexpectedmaker_pros3/mpconfigboard.h | 2 ++ ports/espressif/boards/unexpectedmaker_tinyc6/mpconfigboard.h | 2 ++ .../espressif/boards/unexpectedmaker_tinypico/mpconfigboard.h | 2 ++ .../boards/unexpectedmaker_tinypico_nano/mpconfigboard.h | 2 ++ ports/espressif/boards/unexpectedmaker_tinys2/mpconfigboard.h | 2 ++ ports/espressif/boards/unexpectedmaker_tinys3/mpconfigboard.h | 2 ++ .../boards/unexpectedmaker_tinywatch_s3/mpconfigboard.h | 2 ++ .../boards/waveshare_esp32_s2_pico_lcd/mpconfigboard.h | 2 ++ ports/espressif/boards/waveshare_esp32_s3_geek/mpconfigboard.h | 2 ++ .../boards/waveshare_esp32_s3_lcd_1_28/mpconfigboard.h | 2 ++ ports/espressif/boards/waveshare_esp32_s3_pico/mpconfigboard.h | 2 ++ ports/espressif/boards/waveshare_esp32_s3_zero/mpconfigboard.h | 2 ++ ports/espressif/boards/waveshare_esp32s2_pico/mpconfigboard.h | 2 ++ ports/espressif/boards/weact_esp32c6_n4/mpconfigboard.h | 2 ++ ports/espressif/boards/weact_esp32c6_n8/mpconfigboard.h | 2 ++ ports/espressif/boards/wemos_lolin32_lite/mpconfigboard.h | 2 ++ ports/espressif/boards/yd_esp32_s3_n16r8/mpconfigboard.h | 2 ++ ports/espressif/boards/yd_esp32_s3_n8r8/mpconfigboard.h | 2 ++ ports/espressif/common-hal/audiobusio/PDMIn.h | 2 ++ ports/espressif/common-hal/dotclockframebuffer/__init__.h | 2 ++ ports/espressif/common-hal/rgbmatrix/__init__.h | 2 ++ ports/espressif/common-hal/socketpool/__init__.h | 2 ++ ports/espressif/qstrdefsport.h | 2 ++ ports/litex/background.h | 2 ++ ports/litex/boards/fomu/mpconfigboard.h | 2 ++ ports/litex/qstrdefsport.h | 2 ++ ports/mimxrt10xx/background.h | 2 ++ .../boards/adafruit_metro_m7_1011_sd/mpconfigboard.h | 2 ++ ports/mimxrt10xx/boards/board.h | 2 ++ ports/mimxrt10xx/boards/feather_m7_1011/mpconfigboard.h | 2 ++ ports/mimxrt10xx/boards/feather_mimxrt1011/mpconfigboard.h | 2 ++ ports/mimxrt10xx/boards/feather_mimxrt1062/mpconfigboard.h | 2 ++ ports/mimxrt10xx/boards/imxrt1010_evk/mpconfigboard.h | 2 ++ ports/mimxrt10xx/boards/imxrt1015_evk/mpconfigboard.h | 2 ++ ports/mimxrt10xx/boards/imxrt1020_evk/mpconfigboard.h | 2 ++ ports/mimxrt10xx/boards/imxrt1040_evk/mpconfigboard.h | 2 ++ ports/mimxrt10xx/boards/imxrt1050_evkb/mpconfigboard.h | 2 ++ ports/mimxrt10xx/boards/imxrt1060_evk/mpconfigboard.h | 2 ++ ports/mimxrt10xx/boards/imxrt1060_evkb/mpconfigboard.h | 2 ++ ports/mimxrt10xx/boards/metro_m7_1011/mpconfigboard.h | 2 ++ .../mimxrt10xx/boards/sparkfun_teensy_micromod/mpconfigboard.h | 2 ++ ports/mimxrt10xx/boards/teensy40/mpconfigboard.h | 2 ++ ports/mimxrt10xx/boards/teensy41/mpconfigboard.h | 2 ++ ports/mimxrt10xx/common-hal/audiobusio/PDMIn.h | 2 ++ ports/mimxrt10xx/common-hal/audiopwmio/__init__.h | 2 ++ ports/mimxrt10xx/common-hal/rotaryio/__init__.h | 2 ++ ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/pin_names.h | 2 ++ ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/pin_names.h | 2 ++ ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/pin_names.h | 2 ++ ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/pin_names.h | 2 ++ ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/pin_names.h | 2 ++ ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/pin_names.h | 2 ++ ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/pin_names.h | 2 ++ ports/mimxrt10xx/peripherals/mimxrt10xx/clocks.h | 2 ++ ports/mimxrt10xx/peripherals/mimxrt10xx/pin_names.h | 2 ++ ports/mimxrt10xx/qstrdefsport.h | 2 ++ ports/nordic/boards/ADM_B_NRF52840_1/mpconfigboard.h | 2 ++ ports/nordic/boards/Seeed_XIAO_nRF52840_Sense/mpconfigboard.h | 2 ++ ports/nordic/boards/TG-Watch/mpconfigboard.h | 2 ++ .../boards/adafruit_led_glasses_nrf52840/mpconfigboard.h | 2 ++ ports/nordic/boards/aramcon2_badge/mpconfigboard.h | 3 +++ ports/nordic/boards/aramcon_badge_2019/mpconfigboard.h | 2 ++ ports/nordic/boards/arduino_nano_33_ble/mpconfigboard.h | 2 ++ ports/nordic/boards/bastble/mpconfigboard.h | 2 ++ .../nordic/boards/bless_dev_board_multi_sensor/mpconfigboard.h | 2 ++ ports/nordic/boards/bluemicro833/mpconfigboard.h | 2 ++ ports/nordic/boards/bluemicro840/mpconfigboard.h | 2 ++ ports/nordic/boards/challenger_840/mpconfigboard.h | 2 ++ .../nordic/boards/circuitplayground_bluefruit/mpconfigboard.h | 2 ++ ports/nordic/boards/clue_nrf52840_express/mpconfigboard.h | 2 ++ ports/nordic/boards/electronut_labs_blip/mpconfigboard.h | 2 ++ ports/nordic/boards/electronut_labs_papyr/mpconfigboard.h | 2 ++ ports/nordic/boards/espruino_banglejs2/mpconfigboard.h | 2 ++ ports/nordic/boards/feather_bluefruit_sense/mpconfigboard.h | 2 ++ ports/nordic/boards/feather_nrf52840_express/mpconfigboard.h | 2 ++ ports/nordic/boards/hiibot_bluefi/mpconfigboard.h | 2 ++ ports/nordic/boards/ikigaisense_vita/mpconfigboard.h | 2 ++ ports/nordic/boards/itsybitsy_nrf52840_express/mpconfigboard.h | 2 ++ ports/nordic/boards/makerdiary_m60_keyboard/mpconfigboard.h | 2 ++ .../boards/makerdiary_nrf52840_connectkit/mpconfigboard.h | 2 ++ .../boards/makerdiary_nrf52840_m2_devkit/mpconfigboard.h | 2 ++ ports/nordic/boards/makerdiary_nrf52840_mdk/mpconfigboard.h | 2 ++ .../boards/makerdiary_nrf52840_mdk_usb_dongle/mpconfigboard.h | 2 ++ ports/nordic/boards/metro_nrf52840_express/mpconfigboard.h | 2 ++ ports/nordic/boards/microbit_v2/mpconfigboard.h | 2 ++ ports/nordic/boards/nice_nano/mpconfigboard.h | 2 ++ ports/nordic/boards/ohs2020_badge/mpconfigboard.h | 2 ++ ports/nordic/boards/particle_argon/mpconfigboard.h | 2 ++ ports/nordic/boards/particle_boron/mpconfigboard.h | 2 ++ ports/nordic/boards/particle_xenon/mpconfigboard.h | 2 ++ ports/nordic/boards/pca10056/mpconfigboard.h | 2 ++ ports/nordic/boards/pca10059/mpconfigboard.h | 2 ++ ports/nordic/boards/pca10100/mpconfigboard.h | 2 ++ ports/nordic/boards/pctel_wsc_1450/mpconfigboard.h | 2 ++ ports/nordic/boards/pillbug/mpconfigboard.h | 2 ++ ports/nordic/boards/pitaya_go/mpconfigboard.h | 2 ++ ports/nordic/boards/raytac_mdbt50q-db-40/mpconfigboard.h | 2 ++ ports/nordic/boards/raytac_mdbt50q-rx/mpconfigboard.h | 2 ++ ports/nordic/boards/simmel/mpconfigboard.h | 2 ++ ports/nordic/boards/sparkfun_nrf52840_micromod/mpconfigboard.h | 2 ++ ports/nordic/boards/sparkfun_nrf52840_mini/mpconfigboard.h | 2 ++ ports/nordic/boards/ssci_isp1807_dev_board/mpconfigboard.h | 2 ++ ports/nordic/boards/ssci_isp1807_micro_board/mpconfigboard.h | 2 ++ ports/nordic/boards/supermini_nrf52840/mpconfigboard.h | 2 ++ ports/nordic/boards/teknikio_bluebird/mpconfigboard.h | 2 ++ .../boards/tinkeringtech_scoutmakes_azul/mpconfigboard.h | 2 ++ ports/nordic/boards/warmbit_bluepixel/mpconfigboard.h | 2 ++ ports/nordic/common-hal/alarm/coproc/CoprocAlarm.h | 2 ++ ports/nordic/common-hal/watchdog/__init__.h | 2 ++ ports/nordic/peripherals/nrf/cache.h | 2 ++ ports/nordic/peripherals/nrf/clocks.h | 2 ++ ports/nordic/peripherals/nrf/nvm.h | 2 ++ ports/nordic/peripherals/nrf/power.h | 2 ++ ports/nordic/peripherals/nrf/timers.h | 2 ++ ports/nordic/qstrdefsport.h | 2 ++ ports/nordic/supervisor/qspi_flash.h | 2 ++ ports/raspberrypi/boards/0xcb_helios/mpconfigboard.h | 2 ++ ports/raspberrypi/boards/0xcb_helios/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/42keebs_frood/mpconfigboard.h | 2 ++ ports/raspberrypi/boards/42keebs_frood/pico-sdk-configboard.h | 2 ++ .../raspberrypi/boards/adafruit_feather_rp2040/mpconfigboard.h | 2 ++ .../boards/adafruit_feather_rp2040/pico-sdk-configboard.h | 2 ++ .../boards/adafruit_feather_rp2040_can/mpconfigboard.h | 2 ++ .../boards/adafruit_feather_rp2040_can/pico-sdk-configboard.h | 2 ++ .../boards/adafruit_feather_rp2040_dvi/mpconfigboard.h | 2 ++ .../boards/adafruit_feather_rp2040_dvi/pico-sdk-configboard.h | 2 ++ .../boards/adafruit_feather_rp2040_prop_maker/mpconfigboard.h | 2 ++ .../adafruit_feather_rp2040_prop_maker/pico-sdk-configboard.h | 2 ++ .../boards/adafruit_feather_rp2040_rfm/mpconfigboard.h | 2 ++ .../boards/adafruit_feather_rp2040_rfm/pico-sdk-configboard.h | 2 ++ .../boards/adafruit_feather_rp2040_scorpio/mpconfigboard.h | 2 ++ .../adafruit_feather_rp2040_scorpio/pico-sdk-configboard.h | 2 ++ .../boards/adafruit_feather_rp2040_thinkink/mpconfigboard.h | 2 ++ .../adafruit_feather_rp2040_thinkink/pico-sdk-configboard.h | 2 ++ .../boards/adafruit_feather_rp2040_usb_host/mpconfigboard.h | 2 ++ .../adafruit_feather_rp2040_usb_host/pico-sdk-configboard.h | 2 ++ .../raspberrypi/boards/adafruit_floppsy_rp2040/mpconfigboard.h | 2 ++ .../boards/adafruit_floppsy_rp2040/pico-sdk-configboard.h | 2 ++ .../boards/adafruit_itsybitsy_rp2040/mpconfigboard.h | 2 ++ .../boards/adafruit_itsybitsy_rp2040/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/adafruit_kb2040/mpconfigboard.h | 2 ++ .../raspberrypi/boards/adafruit_kb2040/pico-sdk-configboard.h | 2 ++ .../boards/adafruit_macropad_rp2040/mpconfigboard.h | 2 ++ .../boards/adafruit_macropad_rp2040/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/adafruit_metro_rp2040/mpconfigboard.h | 2 ++ .../boards/adafruit_metro_rp2040/pico-sdk-configboard.h | 2 ++ .../raspberrypi/boards/adafruit_qt2040_trinkey/mpconfigboard.h | 2 ++ .../boards/adafruit_qt2040_trinkey/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/adafruit_qtpy_rp2040/mpconfigboard.h | 2 ++ .../boards/adafruit_qtpy_rp2040/pico-sdk-configboard.h | 2 ++ .../boards/arduino_nano_rp2040_connect/mpconfigboard.h | 2 ++ .../boards/arduino_nano_rp2040_connect/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/boardsource_blok/mpconfigboard.h | 2 ++ .../raspberrypi/boards/boardsource_blok/pico-sdk-configboard.h | 2 ++ .../bradanlanestudio_explorer_rp2040/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/breadstick_raspberry/mpconfigboard.h | 2 ++ .../boards/breadstick_raspberry/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/bwshockley_figpi/mpconfigboard.h | 2 ++ .../raspberrypi/boards/bwshockley_figpi/pico-sdk-configboard.h | 2 ++ .../boards/challenger_nb_rp2040_wifi/mpconfigboard.h | 2 ++ .../boards/challenger_nb_rp2040_wifi/pico-sdk-configboard.h | 2 ++ .../raspberrypi/boards/challenger_rp2040_lora/mpconfigboard.h | 2 ++ .../boards/challenger_rp2040_lora/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/challenger_rp2040_lte/mpconfigboard.h | 2 ++ .../boards/challenger_rp2040_lte/pico-sdk-configboard.h | 2 ++ .../raspberrypi/boards/challenger_rp2040_sdrtc/mpconfigboard.h | 2 ++ .../boards/challenger_rp2040_sdrtc/pico-sdk-configboard.h | 2 ++ .../boards/challenger_rp2040_subghz/mpconfigboard.h | 2 ++ .../boards/challenger_rp2040_subghz/pico-sdk-configboard.h | 2 ++ .../raspberrypi/boards/challenger_rp2040_wifi/mpconfigboard.h | 2 ++ .../boards/challenger_rp2040_wifi/pico-sdk-configboard.h | 2 ++ .../boards/challenger_rp2040_wifi_ble/mpconfigboard.h | 2 ++ .../boards/challenger_rp2040_wifi_ble/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/cosmo_pico/mpconfigboard.h | 2 ++ ports/raspberrypi/boards/cosmo_pico/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/cytron_edu_pico_w/mpconfigboard.h | 2 ++ .../boards/cytron_edu_pico_w/pico-sdk-configboard.h | 2 ++ .../boards/cytron_maker_nano_rp2040/mpconfigboard.h | 2 ++ .../boards/cytron_maker_nano_rp2040/pico-sdk-configboard.h | 2 ++ .../raspberrypi/boards/cytron_maker_pi_rp2040/mpconfigboard.h | 2 ++ .../boards/cytron_maker_pi_rp2040/pico-sdk-configboard.h | 2 ++ .../raspberrypi/boards/cytron_maker_uno_rp2040/mpconfigboard.h | 2 ++ .../boards/cytron_maker_uno_rp2040/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/datanoise_picoadk/mpconfigboard.h | 2 ++ .../boards/datanoise_picoadk/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/e_fidget/mpconfigboard.h | 2 ++ ports/raspberrypi/boards/e_fidget/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/elecfreaks_picoed/mpconfigboard.h | 2 ++ .../boards/elecfreaks_picoed/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/electrolama_minik/mpconfigboard.h | 2 ++ .../boards/electrolama_minik/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/hack_club_sprig/mpconfigboard.h | 2 ++ .../raspberrypi/boards/hack_club_sprig/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/heiafr_picomo_v2/mpconfigboard.h | 2 ++ .../raspberrypi/boards/heiafr_picomo_v2/pico-sdk-configboard.h | 2 ++ .../boards/jpconstantineau_encoderpad_rp2040/mpconfigboard.h | 2 ++ .../jpconstantineau_encoderpad_rp2040/pico-sdk-configboard.h | 2 ++ .../raspberrypi/boards/jpconstantineau_pykey18/mpconfigboard.h | 2 ++ .../boards/jpconstantineau_pykey18/pico-sdk-configboard.h | 2 ++ .../raspberrypi/boards/jpconstantineau_pykey44/mpconfigboard.h | 2 ++ .../boards/jpconstantineau_pykey44/pico-sdk-configboard.h | 2 ++ .../raspberrypi/boards/jpconstantineau_pykey60/mpconfigboard.h | 2 ++ .../boards/jpconstantineau_pykey60/pico-sdk-configboard.h | 2 ++ .../raspberrypi/boards/jpconstantineau_pykey87/mpconfigboard.h | 2 ++ .../boards/jpconstantineau_pykey87/pico-sdk-configboard.h | 2 ++ .../raspberrypi/boards/lilygo_t_display_rp2040/mpconfigboard.h | 2 ++ .../boards/lilygo_t_display_rp2040/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/maple_elite_pi/mpconfigboard.h | 2 ++ ports/raspberrypi/boards/maple_elite_pi/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/melopero_shake_rp2040/mpconfigboard.h | 2 ++ .../boards/melopero_shake_rp2040/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/nullbits_bit_c_pro/mpconfigboard.h | 2 ++ .../boards/nullbits_bit_c_pro/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/odt_bread_2040/mpconfigboard.h | 2 ++ ports/raspberrypi/boards/odt_bread_2040/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/odt_cast_away_rp2040/mpconfigboard.h | 2 ++ .../boards/odt_cast_away_rp2040/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/pajenicko_picopad/mpconfigboard.h | 2 ++ .../boards/pajenicko_picopad/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/pimoroni_badger2040/mpconfigboard.h | 2 ++ .../boards/pimoroni_badger2040/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/pimoroni_badger2040w/mpconfigboard.h | 2 ++ .../boards/pimoroni_badger2040w/pico-sdk-configboard.h | 2 ++ .../raspberrypi/boards/pimoroni_inky_frame_5_7/mpconfigboard.h | 2 ++ .../boards/pimoroni_inky_frame_5_7/pico-sdk-configboard.h | 2 ++ .../raspberrypi/boards/pimoroni_inky_frame_7_3/mpconfigboard.h | 2 ++ .../boards/pimoroni_inky_frame_7_3/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/pimoroni_interstate75/mpconfigboard.h | 2 ++ .../boards/pimoroni_interstate75/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/pimoroni_keybow2040/mpconfigboard.h | 2 ++ .../boards/pimoroni_keybow2040/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/pimoroni_motor2040/mpconfigboard.h | 2 ++ .../boards/pimoroni_motor2040/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/pimoroni_pga2040/mpconfigboard.h | 2 ++ .../raspberrypi/boards/pimoroni_pga2040/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/pimoroni_pico_dv_base/mpconfigboard.h | 2 ++ .../boards/pimoroni_pico_dv_base/pico-sdk-configboard.h | 2 ++ .../raspberrypi/boards/pimoroni_pico_dv_base_w/mpconfigboard.h | 2 ++ .../boards/pimoroni_pico_dv_base_w/pico-sdk-configboard.h | 2 ++ .../raspberrypi/boards/pimoroni_picolipo_16mb/mpconfigboard.h | 2 ++ .../boards/pimoroni_picolipo_16mb/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/pimoroni_picolipo_4mb/mpconfigboard.h | 2 ++ .../boards/pimoroni_picolipo_4mb/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/pimoroni_picosystem/mpconfigboard.h | 2 ++ .../boards/pimoroni_picosystem/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/pimoroni_plasma2040/mpconfigboard.h | 2 ++ .../boards/pimoroni_plasma2040/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/pimoroni_plasma2040w/mpconfigboard.h | 2 ++ .../boards/pimoroni_plasma2040w/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/pimoroni_servo2040/mpconfigboard.h | 2 ++ .../boards/pimoroni_servo2040/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/pimoroni_tiny2040/mpconfigboard.h | 2 ++ .../boards/pimoroni_tiny2040/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/pimoroni_tiny2040_2mb/mpconfigboard.h | 2 ++ .../boards/pimoroni_tiny2040_2mb/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/raspberry_pi_pico/mpconfigboard.h | 2 ++ .../boards/raspberry_pi_pico/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/raspberry_pi_pico_w/mpconfigboard.h | 2 ++ .../boards/raspberry_pi_pico_w/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/rfguru_rp2040/mpconfigboard.h | 2 ++ ports/raspberrypi/boards/rfguru_rp2040/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/seeeduino_xiao_rp2040/mpconfigboard.h | 2 ++ .../boards/seeeduino_xiao_rp2040/pico-sdk-configboard.h | 2 ++ .../boards/silicognition_rp2040_shim/mpconfigboard.h | 2 ++ .../boards/silicognition_rp2040_shim/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/solderparty_bbq20kbd/mpconfigboard.h | 2 ++ .../boards/solderparty_bbq20kbd/pico-sdk-configboard.h | 2 ++ .../boards/solderparty_rp2040_stamp/mpconfigboard.h | 2 ++ .../boards/solderparty_rp2040_stamp/pico-sdk-configboard.h | 2 ++ .../boards/sparkfun_micromod_rp2040/mpconfigboard.h | 2 ++ .../boards/sparkfun_micromod_rp2040/pico-sdk-configboard.h | 2 ++ .../boards/sparkfun_pro_micro_rp2040/mpconfigboard.h | 2 ++ .../boards/sparkfun_pro_micro_rp2040/pico-sdk-configboard.h | 2 ++ .../boards/sparkfun_thing_plus_rp2040/mpconfigboard.h | 2 ++ .../boards/sparkfun_thing_plus_rp2040/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/splitkb_liatris/mpconfigboard.h | 2 ++ .../raspberrypi/boards/splitkb_liatris/pico-sdk-configboard.h | 2 ++ .../boards/takayoshiotake_octave_rp2040/mpconfigboard.h | 2 ++ .../boards/takayoshiotake_octave_rp2040/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/ugame22/mpconfigboard.h | 2 ++ ports/raspberrypi/boards/ugame22/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/vcc_gnd_yd_rp2040/mpconfigboard.h | 2 ++ .../boards/vcc_gnd_yd_rp2040/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/waveshare_rp2040_geek/mpconfigboard.h | 2 ++ .../boards/waveshare_rp2040_geek/pico-sdk-configboard.h | 2 ++ .../boards/waveshare_rp2040_lcd_0_96/mpconfigboard.h | 2 ++ .../boards/waveshare_rp2040_lcd_0_96/pico-sdk-configboard.h | 2 ++ .../boards/waveshare_rp2040_lcd_1_28/mpconfigboard.h | 2 ++ .../boards/waveshare_rp2040_lcd_1_28/pico-sdk-configboard.h | 2 ++ .../boards/waveshare_rp2040_plus_16mb/mpconfigboard.h | 2 ++ .../boards/waveshare_rp2040_plus_16mb/pico-sdk-configboard.h | 2 ++ .../boards/waveshare_rp2040_plus_4mb/mpconfigboard.h | 2 ++ .../boards/waveshare_rp2040_plus_4mb/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/waveshare_rp2040_tiny/mpconfigboard.h | 2 ++ .../boards/waveshare_rp2040_tiny/pico-sdk-configboard.h | 2 ++ .../boards/waveshare_rp2040_touch_lcd_1_28/mpconfigboard.h | 2 ++ .../waveshare_rp2040_touch_lcd_1_28/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/waveshare_rp2040_zero/mpconfigboard.h | 2 ++ .../boards/waveshare_rp2040_zero/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/weact_studio_pico/mpconfigboard.h | 2 ++ .../boards/weact_studio_pico/pico-sdk-configboard.h | 2 ++ .../raspberrypi/boards/weact_studio_pico_16mb/mpconfigboard.h | 2 ++ .../boards/weact_studio_pico_16mb/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/wisdpi_ardu2040m/mpconfigboard.h | 2 ++ .../raspberrypi/boards/wisdpi_ardu2040m/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/wisdpi_tiny_rp2040/mpconfigboard.h | 2 ++ .../boards/wisdpi_tiny_rp2040/pico-sdk-configboard.h | 2 ++ .../raspberrypi/boards/wiznet_w5100s_evb_pico/mpconfigboard.h | 2 ++ .../boards/wiznet_w5100s_evb_pico/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/wiznet_w5500_evb_pico/mpconfigboard.h | 2 ++ .../boards/wiznet_w5500_evb_pico/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/boards/zrichard_rp2.65-f/mpconfigboard.h | 2 ++ .../boards/zrichard_rp2.65-f/pico-sdk-configboard.h | 2 ++ ports/raspberrypi/common-hal/alarm/coproc/CoprocAlarm.h | 2 ++ ports/raspberrypi/common-hal/i2ctarget/I2CTarget.h | 2 ++ ports/raspberrypi/common-hal/imagecapture/__init__.h | 2 ++ ports/raspberrypi/common-hal/rotaryio/__init__.h | 2 ++ ports/raspberrypi/qstrdefsport.h | 2 ++ ports/renode/boards/renode_cortex_m0plus/mpconfigboard.h | 2 ++ ports/renode/qstrdefsport.h | 2 ++ ports/stm/background.h | 2 ++ ports/stm/boards/espruino_pico/mpconfigboard.h | 2 ++ ports/stm/boards/espruino_wifi/mpconfigboard.h | 2 ++ ports/stm/boards/feather_stm32f405_express/mpconfigboard.h | 2 ++ ports/stm/boards/meowbit_v121/mpconfigboard.h | 2 ++ ports/stm/boards/nucleo_f446re/mpconfigboard.h | 2 ++ ports/stm/boards/nucleo_f746zg/mpconfigboard.h | 2 ++ ports/stm/boards/nucleo_f767zi/mpconfigboard.h | 2 ++ ports/stm/boards/nucleo_h743zi_2/mpconfigboard.h | 2 ++ ports/stm/boards/openmv_h7/mpconfigboard.h | 2 ++ ports/stm/boards/pyb_nano_v2/mpconfigboard.h | 2 ++ ports/stm/boards/pyboard_v11/mpconfigboard.h | 2 ++ ports/stm/boards/sparkfun_stm32_thing_plus/mpconfigboard.h | 2 ++ ports/stm/boards/sparkfun_stm32f405_micromod/mpconfigboard.h | 2 ++ ports/stm/boards/stm32f411ce_blackpill/mpconfigboard.h | 2 ++ .../boards/stm32f411ce_blackpill_with_flash/mpconfigboard.h | 2 ++ ports/stm/boards/stm32f411ve_discovery/mpconfigboard.h | 2 ++ ports/stm/boards/stm32f412zg_discovery/mpconfigboard.h | 2 ++ ports/stm/boards/stm32f4_discovery/mpconfigboard.h | 2 ++ ports/stm/boards/stm32f746g_discovery/mpconfigboard.h | 2 ++ ports/stm/boards/swan_r5/mpconfigboard.h | 2 ++ ports/stm/boards/thunderpack_v11/mpconfigboard.h | 2 ++ ports/stm/boards/thunderpack_v12/mpconfigboard.h | 3 +++ ports/stm/common-hal/alarm/coproc/CoprocAlarm.h | 2 ++ ports/stm/common-hal/audiobusio/I2SOut.h | 2 ++ ports/stm/common-hal/rgbmatrix/__init__.h | 2 ++ ports/stm/common-hal/rtc/__init__.h | 2 ++ ports/stm/common-hal/sdioio/__init__.h | 2 ++ ports/stm/mpconfigport_nanbox.h | 2 ++ ports/stm/peripherals/clocks.h | 2 ++ ports/stm/peripherals/gpio.h | 2 ++ ports/stm/peripherals/stm32f4/stm32f401xe/clocks.h | 2 ++ ports/stm/peripherals/stm32f4/stm32f405xx/clocks.h | 2 ++ ports/stm/peripherals/stm32f4/stm32f407xx/clocks.h | 2 ++ ports/stm/peripherals/stm32f4/stm32f411xe/clocks.h | 2 ++ ports/stm/peripherals/stm32f4/stm32f412cx/clocks.h | 2 ++ ports/stm/peripherals/stm32f4/stm32f412zx/clocks.h | 2 ++ ports/stm/peripherals/stm32f4/stm32f446xx/clocks.h | 2 ++ ports/stm/peripherals/stm32f7/stm32f746xx/clocks.h | 2 ++ ports/stm/peripherals/stm32f7/stm32f767xx/clocks.h | 2 ++ ports/stm/peripherals/stm32h7/stm32h743xx/clocks.h | 2 ++ ports/stm/peripherals/stm32l4/stm32l4r5xx/clocks.h | 2 ++ ports/stm/peripherals/timers.h | 2 ++ ports/stm/qstrdefsport.h | 2 ++ shared-bindings/__future__/__init__.h | 2 ++ shared-bindings/_pixelmap/__init__.h | 2 ++ shared-bindings/adafruit_pixelbuf/__init__.h | 2 ++ shared-bindings/fontio/__init__.h | 2 ++ shared-bindings/framebufferio/__init__.h | 2 ++ shared-bindings/gifio/__init__.h | 2 ++ shared-bindings/jpegio/JpegDecoder.h | 2 ++ shared-bindings/jpegio/__init__.h | 2 ++ shared-bindings/memorymap/__init__.h | 2 ++ shared-bindings/nvm/__init__.h | 2 ++ shared-bindings/sdcardio/__init__.h | 2 ++ shared-bindings/sdioio/__init__.h | 2 ++ shared-bindings/sharpdisplay/__init__.h | 2 ++ shared-module/bitmapfilter/__init__.h | 2 ++ shared-module/framebufferio/__init__.h | 2 ++ shared-module/gifio/__init__.h | 2 ++ shared-module/is31fl3741/__init__.h | 2 ++ shared-module/jpegio/JpegDecoder.h | 2 ++ shared-module/jpegio/__init__.h | 2 ++ shared-module/rgbmatrix/__init__.h | 2 ++ shared-module/sdcardio/__init__.h | 2 ++ shared-module/sharpdisplay/__init__.h | 2 ++ shared-module/terminalio/__init__.h | 2 ++ shared-module/usb_video/tusb_config.h | 2 ++ supervisor/shared/rgb_led_colors.h | 2 ++ supervisor/shared/traceback.h | 2 ++ 690 files changed, 1382 insertions(+) diff --git a/devices/ble_hci/common-hal/_bleio/hci_include/l2cap_internal.h b/devices/ble_hci/common-hal/_bleio/hci_include/l2cap_internal.h index f66bac3c3527..aa993e93f52c 100644 --- a/devices/ble_hci/common-hal/_bleio/hci_include/l2cap_internal.h +++ b/devices/ble_hci/common-hal/_bleio/hci_include/l2cap_internal.h @@ -11,6 +11,8 @@ * SPDX-License-Identifier: Apache-2.0 */ +#pragma once + #include // for __packed #include diff --git a/ports/atmel-samd/boards/8086_commander/mpconfigboard.h b/ports/atmel-samd/boards/8086_commander/mpconfigboard.h index 9a212c4ac9b8..4ec5981cc063 100644 --- a/ports/atmel-samd/boards/8086_commander/mpconfigboard.h +++ b/ports/atmel-samd/boards/8086_commander/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "8086 Commander" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/adafruit_neokey_trinkey_m0/mpconfigboard.h b/ports/atmel-samd/boards/adafruit_neokey_trinkey_m0/mpconfigboard.h index a1739f2859f5..c4757b5b4cae 100644 --- a/ports/atmel-samd/boards/adafruit_neokey_trinkey_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/adafruit_neokey_trinkey_m0/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit NeoKey Trinkey M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/adafruit_pixel_trinkey_m0/mpconfigboard.h b/ports/atmel-samd/boards/adafruit_pixel_trinkey_m0/mpconfigboard.h index 6483be72d9a5..67507f1e4b6d 100644 --- a/ports/atmel-samd/boards/adafruit_pixel_trinkey_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/adafruit_pixel_trinkey_m0/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Pixel Trinkey M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/adafruit_proxlight_trinkey_m0/mpconfigboard.h b/ports/atmel-samd/boards/adafruit_proxlight_trinkey_m0/mpconfigboard.h index 3ba27ad17da0..2f4f5f808171 100644 --- a/ports/atmel-samd/boards/adafruit_proxlight_trinkey_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/adafruit_proxlight_trinkey_m0/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit ProxLight Trinkey M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/adafruit_rotary_trinkey_m0/mpconfigboard.h b/ports/atmel-samd/boards/adafruit_rotary_trinkey_m0/mpconfigboard.h index 1766aaa69cd8..a8bff01fead9 100644 --- a/ports/atmel-samd/boards/adafruit_rotary_trinkey_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/adafruit_rotary_trinkey_m0/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Rotary Trinkey M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/adafruit_sht4x_trinkey_m0/mpconfigboard.h b/ports/atmel-samd/boards/adafruit_sht4x_trinkey_m0/mpconfigboard.h index 564e504436fa..01f6a63a7957 100644 --- a/ports/atmel-samd/boards/adafruit_sht4x_trinkey_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/adafruit_sht4x_trinkey_m0/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit SHT4x Trinkey M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/adafruit_slide_trinkey_m0/mpconfigboard.h b/ports/atmel-samd/boards/adafruit_slide_trinkey_m0/mpconfigboard.h index 5383e63f3ef3..be45400d64c8 100644 --- a/ports/atmel-samd/boards/adafruit_slide_trinkey_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/adafruit_slide_trinkey_m0/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Slide Trinkey M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/adafruit_trrs_trinkey_m0/mpconfigboard.h b/ports/atmel-samd/boards/adafruit_trrs_trinkey_m0/mpconfigboard.h index 1ee236fad924..8e53129679f2 100644 --- a/ports/atmel-samd/boards/adafruit_trrs_trinkey_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/adafruit_trrs_trinkey_m0/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit TRRS Trinkey M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/aloriumtech_evo_m51/mpconfigboard.h b/ports/atmel-samd/boards/aloriumtech_evo_m51/mpconfigboard.h index 73abb6e495d0..2cae7cc90373 100644 --- a/ports/atmel-samd/boards/aloriumtech_evo_m51/mpconfigboard.h +++ b/ports/atmel-samd/boards/aloriumtech_evo_m51/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "AloriumTech Evo M51" #define MICROPY_HW_MCU_NAME "samd51p19" diff --git a/ports/atmel-samd/boards/arduino_mkr1300/mpconfigboard.h b/ports/atmel-samd/boards/arduino_mkr1300/mpconfigboard.h index d5ca3642f8ab..4669b73563f2 100644 --- a/ports/atmel-samd/boards/arduino_mkr1300/mpconfigboard.h +++ b/ports/atmel-samd/boards/arduino_mkr1300/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Arduino MKR1300" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/arduino_mkrzero/mpconfigboard.h b/ports/atmel-samd/boards/arduino_mkrzero/mpconfigboard.h index 11a21d513d0d..2ef850e30461 100644 --- a/ports/atmel-samd/boards/arduino_mkrzero/mpconfigboard.h +++ b/ports/atmel-samd/boards/arduino_mkrzero/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Arduino MKR Zero" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/arduino_nano_33_iot/mpconfigboard.h b/ports/atmel-samd/boards/arduino_nano_33_iot/mpconfigboard.h index 0d2241362969..8e469e6bfc4e 100644 --- a/ports/atmel-samd/boards/arduino_nano_33_iot/mpconfigboard.h +++ b/ports/atmel-samd/boards/arduino_nano_33_iot/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Arduino Nano 33 IoT" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/arduino_zero/mpconfigboard.h b/ports/atmel-samd/boards/arduino_zero/mpconfigboard.h index e4a4037ca8f0..eacfa97b1d86 100644 --- a/ports/atmel-samd/boards/arduino_zero/mpconfigboard.h +++ b/ports/atmel-samd/boards/arduino_zero/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Arduino Zero" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/bast_pro_mini_m0/mpconfigboard.h b/ports/atmel-samd/boards/bast_pro_mini_m0/mpconfigboard.h index 55bdd23923a3..6c13e3d917fe 100644 --- a/ports/atmel-samd/boards/bast_pro_mini_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/bast_pro_mini_m0/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Electronic Cats Bast Pro Mini M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/bdmicro_vina_d21/mpconfigboard.h b/ports/atmel-samd/boards/bdmicro_vina_d21/mpconfigboard.h index 0e65168a5f79..ddee00daff73 100644 --- a/ports/atmel-samd/boards/bdmicro_vina_d21/mpconfigboard.h +++ b/ports/atmel-samd/boards/bdmicro_vina_d21/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "BDMICRO VINA-D21" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/bdmicro_vina_d51/mpconfigboard.h b/ports/atmel-samd/boards/bdmicro_vina_d51/mpconfigboard.h index fb577ac65008..f934968b3efc 100644 --- a/ports/atmel-samd/boards/bdmicro_vina_d51/mpconfigboard.h +++ b/ports/atmel-samd/boards/bdmicro_vina_d51/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // More than one revision of this board is available. // This board specifies the most up to date PCB Revision diff --git a/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/mpconfigboard.h b/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/mpconfigboard.h index 6ec1c68a94ba..dc7db514165c 100644 --- a/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/mpconfigboard.h +++ b/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "BDMICRO VINA-D51" #define MICROPY_HW_MCU_NAME "samd51n20" diff --git a/ports/atmel-samd/boards/blm_badge/mpconfigboard.h b/ports/atmel-samd/boards/blm_badge/mpconfigboard.h index d87b3302f06d..d05d2ed60729 100644 --- a/ports/atmel-samd/boards/blm_badge/mpconfigboard.h +++ b/ports/atmel-samd/boards/blm_badge/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit BLM Badge" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/capablerobot_usbhub/mpconfigboard.h b/ports/atmel-samd/boards/capablerobot_usbhub/mpconfigboard.h index 00f89cbd83a1..1f35f342588a 100644 --- a/ports/atmel-samd/boards/capablerobot_usbhub/mpconfigboard.h +++ b/ports/atmel-samd/boards/capablerobot_usbhub/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Capable Robot Programmable USB Hub" #define MICROPY_HW_MCU_NAME "samd51g19" diff --git a/ports/atmel-samd/boards/catwan_usbstick/mpconfigboard.h b/ports/atmel-samd/boards/catwan_usbstick/mpconfigboard.h index 80fe04dd661e..8b2a722fe97f 100644 --- a/ports/atmel-samd/boards/catwan_usbstick/mpconfigboard.h +++ b/ports/atmel-samd/boards/catwan_usbstick/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Electronic Cats CatWAN USBStick" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/circuitbrains_basic_m0/mpconfigboard.h b/ports/atmel-samd/boards/circuitbrains_basic_m0/mpconfigboard.h index 1abbd8664d3b..f2e7db086ea8 100755 --- a/ports/atmel-samd/boards/circuitbrains_basic_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/circuitbrains_basic_m0/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "CircuitBrains Basic" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/circuitbrains_deluxe_m4/mpconfigboard.h b/ports/atmel-samd/boards/circuitbrains_deluxe_m4/mpconfigboard.h index 6a105e698fec..0dbff2cf29ab 100755 --- a/ports/atmel-samd/boards/circuitbrains_deluxe_m4/mpconfigboard.h +++ b/ports/atmel-samd/boards/circuitbrains_deluxe_m4/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "CircuitBrains Deluxe" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/circuitplayground_express/mpconfigboard.h b/ports/atmel-samd/boards/circuitplayground_express/mpconfigboard.h index 09aaaa439c67..f8c6f153cecb 100644 --- a/ports/atmel-samd/boards/circuitplayground_express/mpconfigboard.h +++ b/ports/atmel-samd/boards/circuitplayground_express/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit CircuitPlayground Express" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/circuitplayground_express_crickit/mpconfigboard.h b/ports/atmel-samd/boards/circuitplayground_express_crickit/mpconfigboard.h index e93216ae55b9..570269022b47 100644 --- a/ports/atmel-samd/boards/circuitplayground_express_crickit/mpconfigboard.h +++ b/ports/atmel-samd/boards/circuitplayground_express_crickit/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit CircuitPlayground Express with Crickit libraries" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/circuitplayground_express_displayio/mpconfigboard.h b/ports/atmel-samd/boards/circuitplayground_express_displayio/mpconfigboard.h index ecbe363cab73..0ee533fff20c 100644 --- a/ports/atmel-samd/boards/circuitplayground_express_displayio/mpconfigboard.h +++ b/ports/atmel-samd/boards/circuitplayground_express_displayio/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit CircuitPlayground Express with displayio" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/cp32-m4/mpconfigboard.h b/ports/atmel-samd/boards/cp32-m4/mpconfigboard.h index a7c33c377e44..9f34e3e153db 100644 --- a/ports/atmel-samd/boards/cp32-m4/mpconfigboard.h +++ b/ports/atmel-samd/boards/cp32-m4/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "CP32-M4" #define MICROPY_HW_MCU_NAME "samd51j20" diff --git a/ports/atmel-samd/boards/cp_sapling_m0/mpconfigboard.h b/ports/atmel-samd/boards/cp_sapling_m0/mpconfigboard.h index 175415303914..cf0b9926850c 100644 --- a/ports/atmel-samd/boards/cp_sapling_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/cp_sapling_m0/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "CP Sapling M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/cp_sapling_m0_revb/mpconfigboard.h b/ports/atmel-samd/boards/cp_sapling_m0_revb/mpconfigboard.h index 936f97e50765..95a72194705a 100644 --- a/ports/atmel-samd/boards/cp_sapling_m0_revb/mpconfigboard.h +++ b/ports/atmel-samd/boards/cp_sapling_m0_revb/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "CP Sapling M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/cp_sapling_m0_spiflash/mpconfigboard.h b/ports/atmel-samd/boards/cp_sapling_m0_spiflash/mpconfigboard.h index 41095430eda4..7b452b18dc3f 100644 --- a/ports/atmel-samd/boards/cp_sapling_m0_spiflash/mpconfigboard.h +++ b/ports/atmel-samd/boards/cp_sapling_m0_spiflash/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "CP Sapling M0 w/ SPI Flash" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/datalore_ip_m4/mpconfigboard.h b/ports/atmel-samd/boards/datalore_ip_m4/mpconfigboard.h index cdcc3b96db42..7c009ac099b7 100644 --- a/ports/atmel-samd/boards/datalore_ip_m4/mpconfigboard.h +++ b/ports/atmel-samd/boards/datalore_ip_m4/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "TG-Boards' Datalore IP M4" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/datum_distance/mpconfigboard.h b/ports/atmel-samd/boards/datum_distance/mpconfigboard.h index e0cfbe06ec9a..8b43ce2a0687 100644 --- a/ports/atmel-samd/boards/datum_distance/mpconfigboard.h +++ b/ports/atmel-samd/boards/datum_distance/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // LEDs #define MICROPY_HW_LED_STATUS (&pin_PA17) #define MICROPY_HW_LED_TX &pin_PA27 diff --git a/ports/atmel-samd/boards/datum_imu/mpconfigboard.h b/ports/atmel-samd/boards/datum_imu/mpconfigboard.h index 7654daadf2eb..9dfb9e5bc5f7 100644 --- a/ports/atmel-samd/boards/datum_imu/mpconfigboard.h +++ b/ports/atmel-samd/boards/datum_imu/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // LEDs #define MICROPY_HW_LED_STATUS (&pin_PA17) #define MICROPY_HW_LED_TX &pin_PA27 diff --git a/ports/atmel-samd/boards/datum_light/mpconfigboard.h b/ports/atmel-samd/boards/datum_light/mpconfigboard.h index 4dde48a54278..b7b06d57b879 100644 --- a/ports/atmel-samd/boards/datum_light/mpconfigboard.h +++ b/ports/atmel-samd/boards/datum_light/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // LEDs #define MICROPY_HW_LED_STATUS (&pin_PA17) #define MICROPY_HW_LED_TX &pin_PA27 diff --git a/ports/atmel-samd/boards/datum_weather/mpconfigboard.h b/ports/atmel-samd/boards/datum_weather/mpconfigboard.h index 851414de96f2..3395a4403f8a 100644 --- a/ports/atmel-samd/boards/datum_weather/mpconfigboard.h +++ b/ports/atmel-samd/boards/datum_weather/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // LEDs #define MICROPY_HW_LED_STATUS (&pin_PA17) #define MICROPY_HW_LED_TX &pin_PA27 diff --git a/ports/atmel-samd/boards/dynalora_usb/mpconfigboard.h b/ports/atmel-samd/boards/dynalora_usb/mpconfigboard.h index 46f366d6b35b..8e65074613d2 100644 --- a/ports/atmel-samd/boards/dynalora_usb/mpconfigboard.h +++ b/ports/atmel-samd/boards/dynalora_usb/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "DynaLoRa_USB" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/dynossat_edu_eps/mpconfigboard.h b/ports/atmel-samd/boards/dynossat_edu_eps/mpconfigboard.h index e060a684c3ec..cd6246c7dfbb 100644 --- a/ports/atmel-samd/boards/dynossat_edu_eps/mpconfigboard.h +++ b/ports/atmel-samd/boards/dynossat_edu_eps/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "DynOSSAT-EDU-EPS" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/dynossat_edu_obc/mpconfigboard.h b/ports/atmel-samd/boards/dynossat_edu_obc/mpconfigboard.h index bc35a5939991..6610188d2c70 100644 --- a/ports/atmel-samd/boards/dynossat_edu_obc/mpconfigboard.h +++ b/ports/atmel-samd/boards/dynossat_edu_obc/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "DynOSSAT-EDU-OBC" #define MICROPY_HW_MCU_NAME "samd51j20" diff --git a/ports/atmel-samd/boards/escornabot_makech/mpconfigboard.h b/ports/atmel-samd/boards/escornabot_makech/mpconfigboard.h index 6aec5fb78804..a6ca84fe921f 100644 --- a/ports/atmel-samd/boards/escornabot_makech/mpconfigboard.h +++ b/ports/atmel-samd/boards/escornabot_makech/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Escornabot Makech" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/feather_m0_adalogger/mpconfigboard.h b/ports/atmel-samd/boards/feather_m0_adalogger/mpconfigboard.h index 575abe96accf..dc43040a272d 100644 --- a/ports/atmel-samd/boards/feather_m0_adalogger/mpconfigboard.h +++ b/ports/atmel-samd/boards/feather_m0_adalogger/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // LEDs #define MICROPY_HW_LED_STATUS (&pin_PA17) diff --git a/ports/atmel-samd/boards/feather_m0_basic/mpconfigboard.h b/ports/atmel-samd/boards/feather_m0_basic/mpconfigboard.h index b844999bf5d9..57be1eb3e1ad 100644 --- a/ports/atmel-samd/boards/feather_m0_basic/mpconfigboard.h +++ b/ports/atmel-samd/boards/feather_m0_basic/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // LEDs #define MICROPY_HW_LED_STATUS (&pin_PA17) diff --git a/ports/atmel-samd/boards/feather_m0_express/mpconfigboard.h b/ports/atmel-samd/boards/feather_m0_express/mpconfigboard.h index 682d594e3af6..80d4b4b9c1d7 100644 --- a/ports/atmel-samd/boards/feather_m0_express/mpconfigboard.h +++ b/ports/atmel-samd/boards/feather_m0_express/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Feather M0 Express" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/feather_m0_express_crickit/mpconfigboard.h b/ports/atmel-samd/boards/feather_m0_express_crickit/mpconfigboard.h index b9e65240c63c..63560dd7f9bb 100644 --- a/ports/atmel-samd/boards/feather_m0_express_crickit/mpconfigboard.h +++ b/ports/atmel-samd/boards/feather_m0_express_crickit/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Feather M0 Express with Crickit libraries" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/feather_m0_rfm69/mpconfigboard.h b/ports/atmel-samd/boards/feather_m0_rfm69/mpconfigboard.h index b1d909e8156f..406e653c1186 100644 --- a/ports/atmel-samd/boards/feather_m0_rfm69/mpconfigboard.h +++ b/ports/atmel-samd/boards/feather_m0_rfm69/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // LEDs #define MICROPY_HW_LED_STATUS (&pin_PA17) diff --git a/ports/atmel-samd/boards/feather_m0_rfm9x/mpconfigboard.h b/ports/atmel-samd/boards/feather_m0_rfm9x/mpconfigboard.h index 52734fb6f4eb..00fccc0f89cd 100644 --- a/ports/atmel-samd/boards/feather_m0_rfm9x/mpconfigboard.h +++ b/ports/atmel-samd/boards/feather_m0_rfm9x/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // LEDs #define MICROPY_HW_LED_STATUS (&pin_PA17) diff --git a/ports/atmel-samd/boards/feather_m0_supersized/mpconfigboard.h b/ports/atmel-samd/boards/feather_m0_supersized/mpconfigboard.h index 0a1ffc162e33..79285f8b3df3 100644 --- a/ports/atmel-samd/boards/feather_m0_supersized/mpconfigboard.h +++ b/ports/atmel-samd/boards/feather_m0_supersized/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + /* Adafruit Feather M0 Express with an 8MB SPI flash instead of the usual 2MB */ #define MICROPY_HW_BOARD_NAME "Hacked Feather M0 Express with 8Mbyte SPI flash" diff --git a/ports/atmel-samd/boards/feather_m4_can/mpconfigboard.h b/ports/atmel-samd/boards/feather_m4_can/mpconfigboard.h index 8c09216fa9b5..202c4f821661 100644 --- a/ports/atmel-samd/boards/feather_m4_can/mpconfigboard.h +++ b/ports/atmel-samd/boards/feather_m4_can/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Feather M4 CAN" #define MICROPY_HW_MCU_NAME "same51j19a" diff --git a/ports/atmel-samd/boards/feather_m4_express/mpconfigboard.h b/ports/atmel-samd/boards/feather_m4_express/mpconfigboard.h index 27c5e5a015c1..9bba71b56aff 100644 --- a/ports/atmel-samd/boards/feather_m4_express/mpconfigboard.h +++ b/ports/atmel-samd/boards/feather_m4_express/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Feather M4 Express" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/fluff_m0/mpconfigboard.h b/ports/atmel-samd/boards/fluff_m0/mpconfigboard.h index ae3972984193..d4980c1877a5 100644 --- a/ports/atmel-samd/boards/fluff_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/fluff_m0/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Fluff M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/gemma_m0/mpconfigboard.h b/ports/atmel-samd/boards/gemma_m0/mpconfigboard.h index 5127848418ff..e531bfb172bf 100644 --- a/ports/atmel-samd/boards/gemma_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/gemma_m0/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Gemma M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/grandcentral_m4_express/mpconfigboard.h b/ports/atmel-samd/boards/grandcentral_m4_express/mpconfigboard.h index c30f0307dc1c..81d128899799 100644 --- a/ports/atmel-samd/boards/grandcentral_m4_express/mpconfigboard.h +++ b/ports/atmel-samd/boards/grandcentral_m4_express/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Grand Central M4 Express" #define MICROPY_HW_MCU_NAME "samd51p20" diff --git a/ports/atmel-samd/boards/hallowing_m0_express/mpconfigboard.h b/ports/atmel-samd/boards/hallowing_m0_express/mpconfigboard.h index 6645c6ca2d19..c95f7f5050d6 100644 --- a/ports/atmel-samd/boards/hallowing_m0_express/mpconfigboard.h +++ b/ports/atmel-samd/boards/hallowing_m0_express/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "HalloWing M0 Express" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/hallowing_m4_express/mpconfigboard.h b/ports/atmel-samd/boards/hallowing_m4_express/mpconfigboard.h index d2b946297896..f7b16df76527 100644 --- a/ports/atmel-samd/boards/hallowing_m4_express/mpconfigboard.h +++ b/ports/atmel-samd/boards/hallowing_m4_express/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Hallowing M4 Express" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/huntercat_nfc/mpconfigboard.h b/ports/atmel-samd/boards/huntercat_nfc/mpconfigboard.h index 5855f2b2bc15..09536225e1af 100644 --- a/ports/atmel-samd/boards/huntercat_nfc/mpconfigboard.h +++ b/ports/atmel-samd/boards/huntercat_nfc/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Electronic Cats Hunter Cat NFC" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/itsybitsy_m0_express/mpconfigboard.h b/ports/atmel-samd/boards/itsybitsy_m0_express/mpconfigboard.h index 98689173d30d..b1b554dc7559 100644 --- a/ports/atmel-samd/boards/itsybitsy_m0_express/mpconfigboard.h +++ b/ports/atmel-samd/boards/itsybitsy_m0_express/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit ItsyBitsy M0 Express" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/itsybitsy_m4_express/mpconfigboard.h b/ports/atmel-samd/boards/itsybitsy_m4_express/mpconfigboard.h index 9cbe4f2e227e..bedeccba3562 100644 --- a/ports/atmel-samd/boards/itsybitsy_m4_express/mpconfigboard.h +++ b/ports/atmel-samd/boards/itsybitsy_m4_express/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit ItsyBitsy M4 Express" #define MICROPY_HW_MCU_NAME "samd51g19" diff --git a/ports/atmel-samd/boards/kicksat-sprite/mpconfigboard.h b/ports/atmel-samd/boards/kicksat-sprite/mpconfigboard.h index 2f701784d73b..7864a44ed862 100644 --- a/ports/atmel-samd/boards/kicksat-sprite/mpconfigboard.h +++ b/ports/atmel-samd/boards/kicksat-sprite/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Sprite_v2b" #define MICROPY_HW_MCU_NAME "samd51G19" diff --git a/ports/atmel-samd/boards/loc_ber_m4_base_board/mpconfigboard.h b/ports/atmel-samd/boards/loc_ber_m4_base_board/mpconfigboard.h index 2224cf0ceed6..60116296cc46 100644 --- a/ports/atmel-samd/boards/loc_ber_m4_base_board/mpconfigboard.h +++ b/ports/atmel-samd/boards/loc_ber_m4_base_board/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "LoC BeR M4 base board" #define MICROPY_HW_MCU_NAME "samd51g19" diff --git a/ports/atmel-samd/boards/matrixportal_m4/mpconfigboard.h b/ports/atmel-samd/boards/matrixportal_m4/mpconfigboard.h index b17c51a939a9..689ac026b8f4 100644 --- a/ports/atmel-samd/boards/matrixportal_m4/mpconfigboard.h +++ b/ports/atmel-samd/boards/matrixportal_m4/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Matrix Portal M4" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/meowmeow/mpconfigboard.h b/ports/atmel-samd/boards/meowmeow/mpconfigboard.h index 8b0fceaae0dd..c527331aa012 100644 --- a/ports/atmel-samd/boards/meowmeow/mpconfigboard.h +++ b/ports/atmel-samd/boards/meowmeow/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Meow Meow" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/metro_m0_express/mpconfigboard.h b/ports/atmel-samd/boards/metro_m0_express/mpconfigboard.h index dd7a9dea45de..4e193a329ffd 100644 --- a/ports/atmel-samd/boards/metro_m0_express/mpconfigboard.h +++ b/ports/atmel-samd/boards/metro_m0_express/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Metro M0 Express" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/metro_m4_airlift_lite/mpconfigboard.h b/ports/atmel-samd/boards/metro_m4_airlift_lite/mpconfigboard.h index 1afa9259cf5a..f29f0e192b0c 100644 --- a/ports/atmel-samd/boards/metro_m4_airlift_lite/mpconfigboard.h +++ b/ports/atmel-samd/boards/metro_m4_airlift_lite/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Metro M4 Airlift Lite" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/metro_m4_express/mpconfigboard.h b/ports/atmel-samd/boards/metro_m4_express/mpconfigboard.h index c297d16a0a2a..ebc8cae33f1c 100644 --- a/ports/atmel-samd/boards/metro_m4_express/mpconfigboard.h +++ b/ports/atmel-samd/boards/metro_m4_express/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Metro M4 Express" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/mini_sam_m4/mpconfigboard.h b/ports/atmel-samd/boards/mini_sam_m4/mpconfigboard.h index d16e6ab1bce5..3818adfde495 100644 --- a/ports/atmel-samd/boards/mini_sam_m4/mpconfigboard.h +++ b/ports/atmel-samd/boards/mini_sam_m4/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Mini SAM M4" #define MICROPY_HW_MCU_NAME "samd51g19" diff --git a/ports/atmel-samd/boards/monster_m4sk/mpconfigboard.h b/ports/atmel-samd/boards/monster_m4sk/mpconfigboard.h index 8617a7f577a6..ad36187a69f6 100644 --- a/ports/atmel-samd/boards/monster_m4sk/mpconfigboard.h +++ b/ports/atmel-samd/boards/monster_m4sk/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Monster M4SK" // Board is mislabeled as SAMD51J19. #define MICROPY_HW_MCU_NAME "samd51g19" diff --git a/ports/atmel-samd/boards/ndgarage_ndbit6/mpconfigboard.h b/ports/atmel-samd/boards/ndgarage_ndbit6/mpconfigboard.h index a5ece93ec183..79a51acb0ea8 100644 --- a/ports/atmel-samd/boards/ndgarage_ndbit6/mpconfigboard.h +++ b/ports/atmel-samd/boards/ndgarage_ndbit6/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "ndGarage[n°]Bit6:FeatherSnow" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/ndgarage_ndbit6_v2/mpconfigboard.h b/ports/atmel-samd/boards/ndgarage_ndbit6_v2/mpconfigboard.h index 4b5ab3c7b699..e811c95c8ded 100644 --- a/ports/atmel-samd/boards/ndgarage_ndbit6_v2/mpconfigboard.h +++ b/ports/atmel-samd/boards/ndgarage_ndbit6_v2/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "ndGarage[n°] Bit6: FeatherSnow-v2" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/neopixel_trinkey_m0/mpconfigboard.h b/ports/atmel-samd/boards/neopixel_trinkey_m0/mpconfigboard.h index cc658bf139e6..eeb4bb3cb63a 100644 --- a/ports/atmel-samd/boards/neopixel_trinkey_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/neopixel_trinkey_m0/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit NeoPixel Trinkey M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/nfc_copy_cat/mpconfigboard.h b/ports/atmel-samd/boards/nfc_copy_cat/mpconfigboard.h index 09e143ce747a..4bf4dc003484 100644 --- a/ports/atmel-samd/boards/nfc_copy_cat/mpconfigboard.h +++ b/ports/atmel-samd/boards/nfc_copy_cat/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Electronic Cats NFC Copy Cat" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/openbook_m4/mpconfigboard.h b/ports/atmel-samd/boards/openbook_m4/mpconfigboard.h index 9a8ea22668e7..fec4b05fda49 100644 --- a/ports/atmel-samd/boards/openbook_m4/mpconfigboard.h +++ b/ports/atmel-samd/boards/openbook_m4/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "The Open Book Feather" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/p1am_200/mpconfigboard.h b/ports/atmel-samd/boards/p1am_200/mpconfigboard.h index 6c272126fa2b..27ccbe8413ee 100644 --- a/ports/atmel-samd/boards/p1am_200/mpconfigboard.h +++ b/ports/atmel-samd/boards/p1am_200/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "P1AM-200" #define MICROPY_HW_MCU_NAME "samd51p20" diff --git a/ports/atmel-samd/boards/pewpew10/mpconfigboard.h b/ports/atmel-samd/boards/pewpew10/mpconfigboard.h index ad9d7d05523a..83df9712ab71 100644 --- a/ports/atmel-samd/boards/pewpew10/mpconfigboard.h +++ b/ports/atmel-samd/boards/pewpew10/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "PewPew 10.2" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/pewpew_lcd/mpconfigboard.h b/ports/atmel-samd/boards/pewpew_lcd/mpconfigboard.h index 741007099589..ab6b4ad9521d 100644 --- a/ports/atmel-samd/boards/pewpew_lcd/mpconfigboard.h +++ b/ports/atmel-samd/boards/pewpew_lcd/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "PewPew LCD" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/pewpew_m4/mpconfigboard.h b/ports/atmel-samd/boards/pewpew_m4/mpconfigboard.h index 4dd4aa170f27..18f8c9eb78c5 100644 --- a/ports/atmel-samd/boards/pewpew_m4/mpconfigboard.h +++ b/ports/atmel-samd/boards/pewpew_m4/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "PewPew M4" #define MICROPY_HW_MCU_NAME "samd51g19" diff --git a/ports/atmel-samd/boards/picoplanet/mpconfigboard.h b/ports/atmel-samd/boards/picoplanet/mpconfigboard.h index 072177256c9e..f2f2d3e3c373 100644 --- a/ports/atmel-samd/boards/picoplanet/mpconfigboard.h +++ b/ports/atmel-samd/boards/picoplanet/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "PicoPlanet" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/pybadge/mpconfigboard.h b/ports/atmel-samd/boards/pybadge/mpconfigboard.h index 30139c3e0a4c..e96318c84b5a 100644 --- a/ports/atmel-samd/boards/pybadge/mpconfigboard.h +++ b/ports/atmel-samd/boards/pybadge/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Pybadge" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/pycubed/mpconfigboard.h b/ports/atmel-samd/boards/pycubed/mpconfigboard.h index d0c32239e028..fdc2c49fc81f 100644 --- a/ports/atmel-samd/boards/pycubed/mpconfigboard.h +++ b/ports/atmel-samd/boards/pycubed/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "PyCubedv04" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/pycubed_mram/mpconfigboard.h b/ports/atmel-samd/boards/pycubed_mram/mpconfigboard.h index f35a147e4f92..fecf8780d954 100644 --- a/ports/atmel-samd/boards/pycubed_mram/mpconfigboard.h +++ b/ports/atmel-samd/boards/pycubed_mram/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "PyCubedv04-MRAM" #define MICROPY_HW_MCU_NAME "samd51j19" #define CIRCUITPY_MCU_FAMILY samd51 diff --git a/ports/atmel-samd/boards/pycubed_mram_v05/mpconfigboard.h b/ports/atmel-samd/boards/pycubed_mram_v05/mpconfigboard.h index 98c307a107ad..336f7ff3a8d3 100644 --- a/ports/atmel-samd/boards/pycubed_mram_v05/mpconfigboard.h +++ b/ports/atmel-samd/boards/pycubed_mram_v05/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "PyCubedv05-MRAM" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/pycubed_v05/mpconfigboard.h b/ports/atmel-samd/boards/pycubed_v05/mpconfigboard.h index 7a699c7da61b..ac968c76d551 100644 --- a/ports/atmel-samd/boards/pycubed_v05/mpconfigboard.h +++ b/ports/atmel-samd/boards/pycubed_v05/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "PyCubedv05" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/pygamer/mpconfigboard.h b/ports/atmel-samd/boards/pygamer/mpconfigboard.h index 338c7c4bcbbe..e162c4e036fb 100644 --- a/ports/atmel-samd/boards/pygamer/mpconfigboard.h +++ b/ports/atmel-samd/boards/pygamer/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit PyGamer" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/pyportal/mpconfigboard.h b/ports/atmel-samd/boards/pyportal/mpconfigboard.h index 8257328a8d4c..b84bc7931703 100644 --- a/ports/atmel-samd/boards/pyportal/mpconfigboard.h +++ b/ports/atmel-samd/boards/pyportal/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit PyPortal" #define MICROPY_HW_MCU_NAME "samd51j20" diff --git a/ports/atmel-samd/boards/pyportal_titano/mpconfigboard.h b/ports/atmel-samd/boards/pyportal_titano/mpconfigboard.h index 012b6dfa89ff..2b497c5269ff 100644 --- a/ports/atmel-samd/boards/pyportal_titano/mpconfigboard.h +++ b/ports/atmel-samd/boards/pyportal_titano/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit PyPortal Titano" #define MICROPY_HW_MCU_NAME "samd51j20" diff --git a/ports/atmel-samd/boards/pyruler/mpconfigboard.h b/ports/atmel-samd/boards/pyruler/mpconfigboard.h index 55e066d1e385..19c44ec1f843 100644 --- a/ports/atmel-samd/boards/pyruler/mpconfigboard.h +++ b/ports/atmel-samd/boards/pyruler/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit PyRuler" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/qtpy_m0/mpconfigboard.h b/ports/atmel-samd/boards/qtpy_m0/mpconfigboard.h index 4326ad795640..075b6039fbdf 100644 --- a/ports/atmel-samd/boards/qtpy_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/qtpy_m0/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit QT Py M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/qtpy_m0_haxpress/mpconfigboard.h b/ports/atmel-samd/boards/qtpy_m0_haxpress/mpconfigboard.h index 36eec93ffb0b..0ed70a625bf7 100644 --- a/ports/atmel-samd/boards/qtpy_m0_haxpress/mpconfigboard.h +++ b/ports/atmel-samd/boards/qtpy_m0_haxpress/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit QT Py M0 Haxpress" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/robohatmm1_m4/mpconfigboard.h b/ports/atmel-samd/boards/robohatmm1_m4/mpconfigboard.h index 1a394ee30c56..c3fa8e9995f6 100644 --- a/ports/atmel-samd/boards/robohatmm1_m4/mpconfigboard.h +++ b/ports/atmel-samd/boards/robohatmm1_m4/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Robo HAT MM1 M4" #define MICROPY_HW_MCU_NAME "samd51g19" diff --git a/ports/atmel-samd/boards/sam32/mpconfigboard.h b/ports/atmel-samd/boards/sam32/mpconfigboard.h index 406e8046b90a..84e9417d6799 100644 --- a/ports/atmel-samd/boards/sam32/mpconfigboard.h +++ b/ports/atmel-samd/boards/sam32/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "SAM32v26" #define MICROPY_HW_MCU_NAME "samd51j20" #define CIRCUITPY_MCU_FAMILY samd51 diff --git a/ports/atmel-samd/boards/same54_xplained/mpconfigboard.h b/ports/atmel-samd/boards/same54_xplained/mpconfigboard.h index 0cc7cd25cd29..b748551dadb6 100644 --- a/ports/atmel-samd/boards/same54_xplained/mpconfigboard.h +++ b/ports/atmel-samd/boards/same54_xplained/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "SAM E54 Xplained Pro" #define MICROPY_HW_MCU_NAME "same54p20" diff --git a/ports/atmel-samd/boards/seeeduino_wio_terminal/mpconfigboard.h b/ports/atmel-samd/boards/seeeduino_wio_terminal/mpconfigboard.h index 7d70cb5930ad..474150e745c7 100644 --- a/ports/atmel-samd/boards/seeeduino_wio_terminal/mpconfigboard.h +++ b/ports/atmel-samd/boards/seeeduino_wio_terminal/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Seeeduino Wio Terminal" #define MICROPY_HW_MCU_NAME "samd51p19" diff --git a/ports/atmel-samd/boards/seeeduino_xiao/mpconfigboard.h b/ports/atmel-samd/boards/seeeduino_xiao/mpconfigboard.h index fa9cd3d8407e..414adc5eba7f 100644 --- a/ports/atmel-samd/boards/seeeduino_xiao/mpconfigboard.h +++ b/ports/atmel-samd/boards/seeeduino_xiao/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Seeeduino XIAO" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/seeeduino_xiao_kb/mpconfigboard.h b/ports/atmel-samd/boards/seeeduino_xiao_kb/mpconfigboard.h index 070bc9aae06b..acd90b50ac16 100644 --- a/ports/atmel-samd/boards/seeeduino_xiao_kb/mpconfigboard.h +++ b/ports/atmel-samd/boards/seeeduino_xiao_kb/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Seeeduino XIAO KB" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/sensebox_mcu/mpconfigboard.h b/ports/atmel-samd/boards/sensebox_mcu/mpconfigboard.h index d18b7f561dcc..71e4908b2561 100644 --- a/ports/atmel-samd/boards/sensebox_mcu/mpconfigboard.h +++ b/ports/atmel-samd/boards/sensebox_mcu/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "senseBox MCU" #define MICROPY_HW_MCU_NAME "senseBox" diff --git a/ports/atmel-samd/boards/serpente/mpconfigboard.h b/ports/atmel-samd/boards/serpente/mpconfigboard.h index cd38a8fbc3b0..d32e81c60719 100644 --- a/ports/atmel-samd/boards/serpente/mpconfigboard.h +++ b/ports/atmel-samd/boards/serpente/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Serpente" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/shirtty/mpconfigboard.h b/ports/atmel-samd/boards/shirtty/mpconfigboard.h index b0a52708d4ab..147b342cb8f4 100644 --- a/ports/atmel-samd/boards/shirtty/mpconfigboard.h +++ b/ports/atmel-samd/boards/shirtty/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "@sarfata shIRtty" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/silicognition-m4-shim/mpconfigboard.h b/ports/atmel-samd/boards/silicognition-m4-shim/mpconfigboard.h index 1c736c97731d..fb51b35b6069 100644 --- a/ports/atmel-samd/boards/silicognition-m4-shim/mpconfigboard.h +++ b/ports/atmel-samd/boards/silicognition-m4-shim/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Silicognition LLC M4-Shim" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/snekboard/mpconfigboard.h b/ports/atmel-samd/boards/snekboard/mpconfigboard.h index 783a0525d278..b7653b0a629f 100644 --- a/ports/atmel-samd/boards/snekboard/mpconfigboard.h +++ b/ports/atmel-samd/boards/snekboard/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "keithp.com snekboard" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/sparkfun_lumidrive/mpconfigboard.h b/ports/atmel-samd/boards/sparkfun_lumidrive/mpconfigboard.h index 3e8cd15ddf5d..f6d762f34bbd 100644 --- a/ports/atmel-samd/boards/sparkfun_lumidrive/mpconfigboard.h +++ b/ports/atmel-samd/boards/sparkfun_lumidrive/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "SparkFun LUMIDrive" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/sparkfun_qwiic_micro_no_flash/mpconfigboard.h b/ports/atmel-samd/boards/sparkfun_qwiic_micro_no_flash/mpconfigboard.h index 2ef31edf76a9..3b9fedd56ec1 100644 --- a/ports/atmel-samd/boards/sparkfun_qwiic_micro_no_flash/mpconfigboard.h +++ b/ports/atmel-samd/boards/sparkfun_qwiic_micro_no_flash/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "SparkFun Qwiic Micro" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/sparkfun_qwiic_micro_with_flash/mpconfigboard.h b/ports/atmel-samd/boards/sparkfun_qwiic_micro_with_flash/mpconfigboard.h index 054b7bcd3bfc..93dc166baece 100644 --- a/ports/atmel-samd/boards/sparkfun_qwiic_micro_with_flash/mpconfigboard.h +++ b/ports/atmel-samd/boards/sparkfun_qwiic_micro_with_flash/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "SparkFun Qwiic Micro" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/sparkfun_redboard_turbo/mpconfigboard.h b/ports/atmel-samd/boards/sparkfun_redboard_turbo/mpconfigboard.h index ee8781e47f6d..3078c5794a47 100644 --- a/ports/atmel-samd/boards/sparkfun_redboard_turbo/mpconfigboard.h +++ b/ports/atmel-samd/boards/sparkfun_redboard_turbo/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "SparkFun RedBoard Turbo" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/sparkfun_samd21_dev/mpconfigboard.h b/ports/atmel-samd/boards/sparkfun_samd21_dev/mpconfigboard.h index 5bb61b530022..728088ee797a 100644 --- a/ports/atmel-samd/boards/sparkfun_samd21_dev/mpconfigboard.h +++ b/ports/atmel-samd/boards/sparkfun_samd21_dev/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "SparkFun SAMD21 Dev Breakout" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/sparkfun_samd21_mini/mpconfigboard.h b/ports/atmel-samd/boards/sparkfun_samd21_mini/mpconfigboard.h index e396bcd0b5fb..a4fb0155e14d 100644 --- a/ports/atmel-samd/boards/sparkfun_samd21_mini/mpconfigboard.h +++ b/ports/atmel-samd/boards/sparkfun_samd21_mini/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "SparkFun SAMD21 Mini Breakout" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/sparkfun_samd51_micromod/mpconfigboard.h b/ports/atmel-samd/boards/sparkfun_samd51_micromod/mpconfigboard.h index 984b3dfb8279..835cc6f309d3 100644 --- a/ports/atmel-samd/boards/sparkfun_samd51_micromod/mpconfigboard.h +++ b/ports/atmel-samd/boards/sparkfun_samd51_micromod/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "SparkFun MicroMod SAMD51 Processor" #define MICROPY_HW_MCU_NAME "samd51j20" diff --git a/ports/atmel-samd/boards/sparkfun_samd51_thing_plus/mpconfigboard.h b/ports/atmel-samd/boards/sparkfun_samd51_thing_plus/mpconfigboard.h index 5567750b790f..cff2ba9ae474 100644 --- a/ports/atmel-samd/boards/sparkfun_samd51_thing_plus/mpconfigboard.h +++ b/ports/atmel-samd/boards/sparkfun_samd51_thing_plus/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "SparkFun Thing Plus - SAMD51" #define MICROPY_HW_MCU_NAME "samd51j20" diff --git a/ports/atmel-samd/boards/stackrduino_m0_pro/mpconfigboard.h b/ports/atmel-samd/boards/stackrduino_m0_pro/mpconfigboard.h index 1bd131b83ef4..3044dbbb3085 100644 --- a/ports/atmel-samd/boards/stackrduino_m0_pro/mpconfigboard.h +++ b/ports/atmel-samd/boards/stackrduino_m0_pro/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "StackRduino M0 PRO" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/stringcar_m0_express/mpconfigboard.h b/ports/atmel-samd/boards/stringcar_m0_express/mpconfigboard.h index af1715b46717..78bb0b7f57e4 100644 --- a/ports/atmel-samd/boards/stringcar_m0_express/mpconfigboard.h +++ b/ports/atmel-samd/boards/stringcar_m0_express/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Cedar Grove StringCar M0 Express" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/trellis_m4_express/mpconfigboard.h b/ports/atmel-samd/boards/trellis_m4_express/mpconfigboard.h index cca01e68157d..c61335862b08 100644 --- a/ports/atmel-samd/boards/trellis_m4_express/mpconfigboard.h +++ b/ports/atmel-samd/boards/trellis_m4_express/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Trellis M4 Express" #define MICROPY_HW_MCU_NAME "samd51g19" diff --git a/ports/atmel-samd/boards/trinket_m0/mpconfigboard.h b/ports/atmel-samd/boards/trinket_m0/mpconfigboard.h index b74441a9187e..bdee97537085 100644 --- a/ports/atmel-samd/boards/trinket_m0/mpconfigboard.h +++ b/ports/atmel-samd/boards/trinket_m0/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Trinket M0" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/trinket_m0_haxpress/mpconfigboard.h b/ports/atmel-samd/boards/trinket_m0_haxpress/mpconfigboard.h index 87db664a909f..bc157d6c86bb 100644 --- a/ports/atmel-samd/boards/trinket_m0_haxpress/mpconfigboard.h +++ b/ports/atmel-samd/boards/trinket_m0_haxpress/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Trinket M0 Haxpress" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/uartlogger2/mpconfigboard.h b/ports/atmel-samd/boards/uartlogger2/mpconfigboard.h index 311d65c57f11..3cbfa06b82ee 100644 --- a/ports/atmel-samd/boards/uartlogger2/mpconfigboard.h +++ b/ports/atmel-samd/boards/uartlogger2/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "UARTLogger II" #define MICROPY_HW_MCU_NAME "samd51j19" diff --git a/ports/atmel-samd/boards/uchip/mpconfigboard.h b/ports/atmel-samd/boards/uchip/mpconfigboard.h index 7ba507444f56..7c1047b7c834 100644 --- a/ports/atmel-samd/boards/uchip/mpconfigboard.h +++ b/ports/atmel-samd/boards/uchip/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "uChip" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/ugame10/mpconfigboard.h b/ports/atmel-samd/boards/ugame10/mpconfigboard.h index 4baf10dbfd22..47ace631e424 100644 --- a/ports/atmel-samd/boards/ugame10/mpconfigboard.h +++ b/ports/atmel-samd/boards/ugame10/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "uGame10" #define MICROPY_HW_MCU_NAME "samd21e18" diff --git a/ports/atmel-samd/boards/winterbloom_big_honking_button/mpconfigboard.h b/ports/atmel-samd/boards/winterbloom_big_honking_button/mpconfigboard.h index e4a3e3038aff..ed22eec1f24f 100644 --- a/ports/atmel-samd/boards/winterbloom_big_honking_button/mpconfigboard.h +++ b/ports/atmel-samd/boards/winterbloom_big_honking_button/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Winterbloom Big Honking Button" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/winterbloom_sol/mpconfigboard.h b/ports/atmel-samd/boards/winterbloom_sol/mpconfigboard.h index bb02d31eba4a..88f004e64bd5 100644 --- a/ports/atmel-samd/boards/winterbloom_sol/mpconfigboard.h +++ b/ports/atmel-samd/boards/winterbloom_sol/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Winterbloom Sol" #define MICROPY_HW_MCU_NAME "samd51j20" diff --git a/ports/atmel-samd/boards/xinabox_cc03/mpconfigboard.h b/ports/atmel-samd/boards/xinabox_cc03/mpconfigboard.h index 3a712599b819..96da809d3e3c 100644 --- a/ports/atmel-samd/boards/xinabox_cc03/mpconfigboard.h +++ b/ports/atmel-samd/boards/xinabox_cc03/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "XinaBox CC03" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/boards/xinabox_cs11/mpconfigboard.h b/ports/atmel-samd/boards/xinabox_cs11/mpconfigboard.h index 0a3fcb573747..1da95ddce263 100644 --- a/ports/atmel-samd/boards/xinabox_cs11/mpconfigboard.h +++ b/ports/atmel-samd/boards/xinabox_cs11/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "XinaBox CS11" #define MICROPY_HW_MCU_NAME "samd21g18" diff --git a/ports/atmel-samd/common-hal/alarm/coproc/CoprocAlarm.h b/ports/atmel-samd/common-hal/alarm/coproc/CoprocAlarm.h index a7f2dfca2b67..f8921574865a 100644 --- a/ports/atmel-samd/common-hal/alarm/coproc/CoprocAlarm.h +++ b/ports/atmel-samd/common-hal/alarm/coproc/CoprocAlarm.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // empty file diff --git a/ports/atmel-samd/common-hal/imagecapture/__init__.h b/ports/atmel-samd/common-hal/imagecapture/__init__.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/ports/atmel-samd/common-hal/imagecapture/__init__.h +++ b/ports/atmel-samd/common-hal/imagecapture/__init__.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/ports/atmel-samd/common-hal/rtc/RTC.h b/ports/atmel-samd/common-hal/rtc/RTC.h index 0d43ee850173..daf215164610 100644 --- a/ports/atmel-samd/common-hal/rtc/RTC.h +++ b/ports/atmel-samd/common-hal/rtc/RTC.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_RTC_RTC_H #define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_RTC_RTC_H diff --git a/ports/atmel-samd/common-hal/sdioio/__init__.h b/ports/atmel-samd/common-hal/sdioio/__init__.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/ports/atmel-samd/common-hal/sdioio/__init__.h +++ b/ports/atmel-samd/common-hal/sdioio/__init__.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/ports/atmel-samd/qstrdefsport.h b/ports/atmel-samd/qstrdefsport.h index b0f5566fabf2..9ff78060068f 100644 --- a/ports/atmel-samd/qstrdefsport.h +++ b/ports/atmel-samd/qstrdefsport.h @@ -4,5 +4,7 @@ // // SPDX-License-Identifier: MIT +#pragma once + // qstrs specific to this port // *FORMAT-OFF* diff --git a/ports/broadcom/boards/diodes_delight_piunora/mpconfigboard.h b/ports/broadcom/boards/diodes_delight_piunora/mpconfigboard.h index d5690fe7a0ae..298a94316ad8 100644 --- a/ports/broadcom/boards/diodes_delight_piunora/mpconfigboard.h +++ b/ports/broadcom/boards/diodes_delight_piunora/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Diodes Delight Piunora" #define DEFAULT_I2C_BUS_SCL (&pin_GPIO3) diff --git a/ports/broadcom/boards/raspberrypi_cm4/mpconfigboard.h b/ports/broadcom/boards/raspberrypi_cm4/mpconfigboard.h index d34ed6924fe9..23b99342facb 100644 --- a/ports/broadcom/boards/raspberrypi_cm4/mpconfigboard.h +++ b/ports/broadcom/boards/raspberrypi_cm4/mpconfigboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Raspberry Pi Compute Module 4" diff --git a/ports/broadcom/boards/raspberrypi_cm4io/mpconfigboard.h b/ports/broadcom/boards/raspberrypi_cm4io/mpconfigboard.h index e87636d1afeb..2c02fabd9ec9 100644 --- a/ports/broadcom/boards/raspberrypi_cm4io/mpconfigboard.h +++ b/ports/broadcom/boards/raspberrypi_cm4io/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Raspberry Pi Compute Module 4 IO Board" #define DEFAULT_I2C_BUS_SCL (&pin_GPIO3) diff --git a/ports/broadcom/boards/raspberrypi_pi4b/mpconfigboard.h b/ports/broadcom/boards/raspberrypi_pi4b/mpconfigboard.h index dda8dad382a8..45eeff3b59b4 100644 --- a/ports/broadcom/boards/raspberrypi_pi4b/mpconfigboard.h +++ b/ports/broadcom/boards/raspberrypi_pi4b/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Raspberry Pi 4B" #define DEFAULT_I2C_BUS_SCL (&pin_GPIO3) diff --git a/ports/broadcom/boards/raspberrypi_zero/mpconfigboard.h b/ports/broadcom/boards/raspberrypi_zero/mpconfigboard.h index c03207468b04..64da629317e7 100644 --- a/ports/broadcom/boards/raspberrypi_zero/mpconfigboard.h +++ b/ports/broadcom/boards/raspberrypi_zero/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Raspberry Pi Zero" #define DEFAULT_I2C_BUS_SCL (&pin_GPIO3) diff --git a/ports/broadcom/boards/raspberrypi_zero2w/mpconfigboard.h b/ports/broadcom/boards/raspberrypi_zero2w/mpconfigboard.h index f0c90491d72e..4168832fb824 100644 --- a/ports/broadcom/boards/raspberrypi_zero2w/mpconfigboard.h +++ b/ports/broadcom/boards/raspberrypi_zero2w/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Raspberry Pi Zero 2W" #define DEFAULT_I2C_BUS_SCL (&pin_GPIO3) diff --git a/ports/broadcom/boards/raspberrypi_zero_w/mpconfigboard.h b/ports/broadcom/boards/raspberrypi_zero_w/mpconfigboard.h index 468ea5b3f099..526a152011e1 100644 --- a/ports/broadcom/boards/raspberrypi_zero_w/mpconfigboard.h +++ b/ports/broadcom/boards/raspberrypi_zero_w/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Raspberry Pi Zero W" #define DEFAULT_I2C_BUS_SCL (&pin_GPIO3) diff --git a/ports/broadcom/common-hal/sdioio/__init__.h b/ports/broadcom/common-hal/sdioio/__init__.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/ports/broadcom/common-hal/sdioio/__init__.h +++ b/ports/broadcom/common-hal/sdioio/__init__.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/ports/broadcom/qstrdefsport.h b/ports/broadcom/qstrdefsport.h index 3abaafc7fcc1..738a4500f902 100644 --- a/ports/broadcom/qstrdefsport.h +++ b/ports/broadcom/qstrdefsport.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // qstrs specific to this port, only needed if they aren't auto-generated // Prevent uncrustify from modifying these lines. diff --git a/ports/cxd56/background.h b/ports/cxd56/background.h index 6bff0f1e8edd..35ac5b1d482f 100644 --- a/ports/cxd56/background.h +++ b/ports/cxd56/background.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #ifndef MICROPY_INCLUDED_CXD56_BACKGROUND_H #define MICROPY_INCLUDED_CXD56_BACKGROUND_H diff --git a/ports/cxd56/boards/spresense/mpconfigboard.h b/ports/cxd56/boards/spresense/mpconfigboard.h index 1b0f97fac19f..2d334ef29b30 100644 --- a/ports/cxd56/boards/spresense/mpconfigboard.h +++ b/ports/cxd56/boards/spresense/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "SPRESENSE" #define MICROPY_HW_MCU_NAME "CXD5602" diff --git a/ports/cxd56/common-hal/rtc/RTC.h b/ports/cxd56/common-hal/rtc/RTC.h index a61d52a25d03..e9bf05160416 100644 --- a/ports/cxd56/common-hal/rtc/RTC.h +++ b/ports/cxd56/common-hal/rtc/RTC.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #ifndef MICROPY_INCLUDED_CXD56_COMMON_HAL_RTC_RTC_H #define MICROPY_INCLUDED_CXD56_COMMON_HAL_RTC_RTC_H diff --git a/ports/cxd56/qstrdefsport.h b/ports/cxd56/qstrdefsport.h index b0f5566fabf2..9ff78060068f 100644 --- a/ports/cxd56/qstrdefsport.h +++ b/ports/cxd56/qstrdefsport.h @@ -4,5 +4,7 @@ // // SPDX-License-Identifier: MIT +#pragma once + // qstrs specific to this port // *FORMAT-OFF* diff --git a/ports/cxd56/supervisor/internal_flash.h b/ports/cxd56/supervisor/internal_flash.h index 31e23a389090..a1ca833402cf 100644 --- a/ports/cxd56/supervisor/internal_flash.h +++ b/ports/cxd56/supervisor/internal_flash.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #ifndef MICROPY_INCLUDED_CXD56_INTERNAL_FLASH_H #define MICROPY_INCLUDED_CXD56_INTERNAL_FLASH_H diff --git a/ports/espressif/boards/01space_lcd042_esp32c3/mpconfigboard.h b/ports/espressif/boards/01space_lcd042_esp32c3/mpconfigboard.h index 54fcac8abd03..bc02e85367b2 100644 --- a/ports/espressif/boards/01space_lcd042_esp32c3/mpconfigboard.h +++ b/ports/espressif/boards/01space_lcd042_esp32c3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Board setup #define MICROPY_HW_BOARD_NAME "01Space 0.42 OLED ESP32C3" #define MICROPY_HW_MCU_NAME "ESP32-C3FH4" diff --git a/ports/espressif/boards/adafruit_esp32s3_camera/mpconfigboard.h b/ports/espressif/boards/adafruit_esp32s3_camera/mpconfigboard.h index 643c7bb9315f..25d08535dd6f 100644 --- a/ports/espressif/boards/adafruit_esp32s3_camera/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_esp32s3_camera/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Camera" #define MICROPY_HW_MCU_NAME "ESP32S3" diff --git a/ports/espressif/boards/adafruit_feather_esp32_v2/mpconfigboard.h b/ports/espressif/boards/adafruit_feather_esp32_v2/mpconfigboard.h index 5adedb7c057b..38b014fd59f3 100644 --- a/ports/espressif/boards/adafruit_feather_esp32_v2/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_feather_esp32_v2/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Adafruit Feather ESP32 V2" diff --git a/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/mpconfigboard.h b/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/mpconfigboard.h index edabcd130c56..c3d168ac16d2 100644 --- a/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Adafruit Feather ESP32-C6 4MB Flash No PSRAM" diff --git a/ports/espressif/boards/adafruit_feather_esp32s2/mpconfigboard.h b/ports/espressif/boards/adafruit_feather_esp32s2/mpconfigboard.h index 12324990db38..b80f354ade38 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s2/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_feather_esp32s2/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Adafruit Feather ESP32S2" diff --git a/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/mpconfigboard.h b/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/mpconfigboard.h index ef0194221738..42b51434edfd 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Adafruit Feather ESP32-S2 Reverse TFT" diff --git a/ports/espressif/boards/adafruit_feather_esp32s2_tft/mpconfigboard.h b/ports/espressif/boards/adafruit_feather_esp32s2_tft/mpconfigboard.h index b3c630aadf45..c8009b0ea755 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s2_tft/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_feather_esp32s2_tft/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Adafruit Feather ESP32-S2 TFT" diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/mpconfigboard.h b/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/mpconfigboard.h index 1936b1ab12c5..7abd61a7d422 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Adafruit Feather ESP32S3 4MB Flash 2MB PSRAM" diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/mpconfigboard.h b/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/mpconfigboard.h index 263e84fd397a..a47bc8d859ee 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Adafruit Feather ESP32S3 No PSRAM" diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/mpconfigboard.h b/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/mpconfigboard.h index 80e219c100b3..c11780faf41e 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Adafruit Feather ESP32-S3 Reverse TFT" diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_tft/mpconfigboard.h b/ports/espressif/boards/adafruit_feather_esp32s3_tft/mpconfigboard.h index 884eda67e985..243777fd8df3 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_tft/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_feather_esp32s3_tft/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Adafruit Feather ESP32-S3 TFT" diff --git a/ports/espressif/boards/adafruit_feather_huzzah32/mpconfigboard.h b/ports/espressif/boards/adafruit_feather_huzzah32/mpconfigboard.h index 80bc691e7e38..9bd51044f4e8 100644 --- a/ports/espressif/boards/adafruit_feather_huzzah32/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_feather_huzzah32/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Adafruit Feather HUZZAH32" diff --git a/ports/espressif/boards/adafruit_funhouse/mpconfigboard.h b/ports/espressif/boards/adafruit_funhouse/mpconfigboard.h index 59b11e7f8bb5..af2033e31b7b 100644 --- a/ports/espressif/boards/adafruit_funhouse/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_funhouse/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Adafruit FunHouse" diff --git a/ports/espressif/boards/adafruit_huzzah32_breakout/mpconfigboard.h b/ports/espressif/boards/adafruit_huzzah32_breakout/mpconfigboard.h index 1e443e738a5d..657918ab50b3 100644 --- a/ports/espressif/boards/adafruit_huzzah32_breakout/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_huzzah32_breakout/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Adafruit HUZZAH32 Breakout" diff --git a/ports/espressif/boards/adafruit_itsybitsy_esp32/mpconfigboard.h b/ports/espressif/boards/adafruit_itsybitsy_esp32/mpconfigboard.h index 1691290f1df6..9b20c5f73e3e 100644 --- a/ports/espressif/boards/adafruit_itsybitsy_esp32/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_itsybitsy_esp32/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Adafruit ItsyBitsy ESP32" diff --git a/ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h b/ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h index 1c32da49de05..0c69eba7c682 100644 --- a/ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Adafruit MagTag" diff --git a/ports/espressif/boards/adafruit_matrixportal_s3/mpconfigboard.h b/ports/espressif/boards/adafruit_matrixportal_s3/mpconfigboard.h index 66ac03485f6f..059cfe5be6fe 100644 --- a/ports/espressif/boards/adafruit_matrixportal_s3/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_matrixportal_s3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Adafruit MatrixPortal S3" diff --git a/ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h b/ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h index a704e7b93e88..09d980c098b6 100644 --- a/ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Adafruit Metro ESP32S2" diff --git a/ports/espressif/boards/adafruit_metro_esp32s3/mpconfigboard.h b/ports/espressif/boards/adafruit_metro_esp32s3/mpconfigboard.h index 68007def650e..2442d28e7126 100644 --- a/ports/espressif/boards/adafruit_metro_esp32s3/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_metro_esp32s3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Adafruit Metro ESP32S3" diff --git a/ports/espressif/boards/adafruit_qtpy_esp32_pico/mpconfigboard.h b/ports/espressif/boards/adafruit_qtpy_esp32_pico/mpconfigboard.h index 7d7f4d4f1b51..799a53c5c789 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32_pico/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_qtpy_esp32_pico/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit QT Py ESP32 PICO" #define MICROPY_HW_MCU_NAME "ESP32" diff --git a/ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h b/ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h index 4a864396ca1c..8fbdd1713e61 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Board setup #define MICROPY_HW_BOARD_NAME "Adafruit QT Py ESP32C3" #define MICROPY_HW_MCU_NAME "ESP32-C3FN4" diff --git a/ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h b/ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h index d78e776fc229..c59dbfc81c93 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Adafruit QT Py ESP32S2" diff --git a/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/mpconfigboard.h b/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/mpconfigboard.h index c9e0bd0cd12c..ad97ab057fb4 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Adafruit QT Py ESP32-S3 4MB Flash 2MB PSRAM" diff --git a/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/mpconfigboard.h b/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/mpconfigboard.h index 26a710435764..fcdefda3b403 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Adafruit QT Py ESP32-S3 no psram" diff --git a/ports/espressif/boards/adafruit_qualia_s3_rgb666/mpconfigboard.h b/ports/espressif/boards/adafruit_qualia_s3_rgb666/mpconfigboard.h index 0664b3d19e17..1a79c63f3ff8 100644 --- a/ports/espressif/boards/adafruit_qualia_s3_rgb666/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_qualia_s3_rgb666/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Adafruit-Qualia-S3-RGB666" diff --git a/ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.h b/ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.h index 790718803f6e..53ace45adbd5 100644 --- a/ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.h +++ b/ports/espressif/boards/ai-thinker-esp32-cam/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Ai Thinker ESP32-CAM" #define MICROPY_HW_MCU_NAME "ESP32" diff --git a/ports/espressif/boards/ai_thinker_esp32-c3s-2m/mpconfigboard.h b/ports/espressif/boards/ai_thinker_esp32-c3s-2m/mpconfigboard.h index 0009a3fc60cd..ebf3dd309061 100644 --- a/ports/espressif/boards/ai_thinker_esp32-c3s-2m/mpconfigboard.h +++ b/ports/espressif/boards/ai_thinker_esp32-c3s-2m/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Board setup #define MICROPY_HW_BOARD_NAME "AITHinker ESP32-C3S_Kit_2M" #define MICROPY_HW_MCU_NAME "ESP32-C3" diff --git a/ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h b/ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h index 2da84a10a3d0..ebd3cbe2d1de 100644 --- a/ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h +++ b/ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Board setup #define MICROPY_HW_BOARD_NAME "AITHinker ESP32-C3S_Kit" #define MICROPY_HW_MCU_NAME "ESP32-C3FN4" diff --git a/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h b/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h index 379981dff564..0537be575a67 100644 --- a/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h +++ b/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup // Same setup as the Saola board but with no Neopixel on board diff --git a/ports/espressif/boards/arduino_nano_esp32s3/mpconfigboard.h b/ports/espressif/boards/arduino_nano_esp32s3/mpconfigboard.h index 29653d2f1a84..6518da3566fd 100644 --- a/ports/espressif/boards/arduino_nano_esp32s3/mpconfigboard.h +++ b/ports/espressif/boards/arduino_nano_esp32s3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Arduino Nano ESP32" diff --git a/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/mpconfigboard.h b/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/mpconfigboard.h index dbd72b048dd2..da20e04a973c 100644 --- a/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/mpconfigboard.h +++ b/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Arduino Nano ESP32" diff --git a/ports/espressif/boards/artisense_rd00/mpconfigboard.h b/ports/espressif/boards/artisense_rd00/mpconfigboard.h index aa525ba5f077..7f4de6fb5e96 100644 --- a/ports/espressif/boards/artisense_rd00/mpconfigboard.h +++ b/ports/espressif/boards/artisense_rd00/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup // Same setup as the Saola board but with no Neopixel on board diff --git a/ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h b/ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h index 5608c51669f7..8f20dc5bfe2e 100644 --- a/ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h +++ b/ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "ATMegaZero ESP32-S2" diff --git a/ports/espressif/boards/beetle-esp32-c3/mpconfigboard.h b/ports/espressif/boards/beetle-esp32-c3/mpconfigboard.h index c35c6995daca..cec05b0fb7ab 100644 --- a/ports/espressif/boards/beetle-esp32-c3/mpconfigboard.h +++ b/ports/espressif/boards/beetle-esp32-c3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Board setup #define MICROPY_HW_BOARD_NAME "DFRobot Beetle ESP32-C3" diff --git a/ports/espressif/boards/bpi_bit_s2/mpconfigboard.h b/ports/espressif/boards/bpi_bit_s2/mpconfigboard.h index 52a0fcc60a11..71806d446b02 100644 --- a/ports/espressif/boards/bpi_bit_s2/mpconfigboard.h +++ b/ports/espressif/boards/bpi_bit_s2/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "BPI-Bit-S2" diff --git a/ports/espressif/boards/bpi_leaf_s3/mpconfigboard.h b/ports/espressif/boards/bpi_leaf_s3/mpconfigboard.h index ef479def9ff3..1384db64332b 100644 --- a/ports/espressif/boards/bpi_leaf_s3/mpconfigboard.h +++ b/ports/espressif/boards/bpi_leaf_s3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "BPI-Leaf-S3" diff --git a/ports/espressif/boards/bpi_picow_s3/mpconfigboard.h b/ports/espressif/boards/bpi_picow_s3/mpconfigboard.h index 7ec1a381b4c2..d1d0e72393f6 100644 --- a/ports/espressif/boards/bpi_picow_s3/mpconfigboard.h +++ b/ports/espressif/boards/bpi_picow_s3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "BPI-PicoW-S3" diff --git a/ports/espressif/boards/brainboardz_neuron/mpconfigboard.h b/ports/espressif/boards/brainboardz_neuron/mpconfigboard.h index 65ebd53e718d..70bc3249fe66 100755 --- a/ports/espressif/boards/brainboardz_neuron/mpconfigboard.h +++ b/ports/espressif/boards/brainboardz_neuron/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Neuron" diff --git a/ports/espressif/boards/columbia-dsl-sensor/mpconfigboard.h b/ports/espressif/boards/columbia-dsl-sensor/mpconfigboard.h index c064ac6634dc..63b0086d4b26 100644 --- a/ports/espressif/boards/columbia-dsl-sensor/mpconfigboard.h +++ b/ports/espressif/boards/columbia-dsl-sensor/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "ColumbiaDSL-Sensor-Board-V1" diff --git a/ports/espressif/boards/crcibernetica-ideaboard/mpconfigboard.h b/ports/espressif/boards/crcibernetica-ideaboard/mpconfigboard.h index ce7c73b20cfc..3315b93b6421 100644 --- a/ports/espressif/boards/crcibernetica-ideaboard/mpconfigboard.h +++ b/ports/espressif/boards/crcibernetica-ideaboard/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "CRCibernetica IdeaBoard" diff --git a/ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h b/ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h index 42e3101aef3a..623c9bb2be71 100644 --- a/ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h +++ b/ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "CrumpS2" diff --git a/ports/espressif/boards/cytron_maker_feather_aiot_s3/mpconfigboard.h b/ports/espressif/boards/cytron_maker_feather_aiot_s3/mpconfigboard.h index ef7d295d2848..943ec7625deb 100644 --- a/ports/espressif/boards/cytron_maker_feather_aiot_s3/mpconfigboard.h +++ b/ports/espressif/boards/cytron_maker_feather_aiot_s3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Cytron Maker Feather AIoT S3" diff --git a/ports/espressif/boards/deneyap_kart/mpconfigboard.h b/ports/espressif/boards/deneyap_kart/mpconfigboard.h index 4ffccfd1a49b..5374c9c789ed 100644 --- a/ports/espressif/boards/deneyap_kart/mpconfigboard.h +++ b/ports/espressif/boards/deneyap_kart/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Deneyap Kart" diff --git a/ports/espressif/boards/deneyap_kart_1a/mpconfigboard.h b/ports/espressif/boards/deneyap_kart_1a/mpconfigboard.h index ee79699c05aa..416eff32a9bc 100644 --- a/ports/espressif/boards/deneyap_kart_1a/mpconfigboard.h +++ b/ports/espressif/boards/deneyap_kart_1a/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Deneyap Kart 1A" diff --git a/ports/espressif/boards/deneyap_kart_1a_v2/mpconfigboard.h b/ports/espressif/boards/deneyap_kart_1a_v2/mpconfigboard.h index 17cc69492118..8c0ff8e75981 100644 --- a/ports/espressif/boards/deneyap_kart_1a_v2/mpconfigboard.h +++ b/ports/espressif/boards/deneyap_kart_1a_v2/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Deneyap Kart 1A v2" diff --git a/ports/espressif/boards/deneyap_kart_g/mpconfigboard.h b/ports/espressif/boards/deneyap_kart_g/mpconfigboard.h index 246375120eac..1114415f65d8 100644 --- a/ports/espressif/boards/deneyap_kart_g/mpconfigboard.h +++ b/ports/espressif/boards/deneyap_kart_g/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Board setup #define MICROPY_HW_BOARD_NAME "Deneyap Kart G" #define MICROPY_HW_MCU_NAME "ESP32-C3FN4" diff --git a/ports/espressif/boards/deneyap_mini/mpconfigboard.h b/ports/espressif/boards/deneyap_mini/mpconfigboard.h index 730147c47de3..4bd748c70c74 100644 --- a/ports/espressif/boards/deneyap_mini/mpconfigboard.h +++ b/ports/espressif/boards/deneyap_mini/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Deneyap Mini" diff --git a/ports/espressif/boards/deneyap_mini_v2/mpconfigboard.h b/ports/espressif/boards/deneyap_mini_v2/mpconfigboard.h index 9fe706a6ee29..28c9abc7c9bb 100644 --- a/ports/espressif/boards/deneyap_mini_v2/mpconfigboard.h +++ b/ports/espressif/boards/deneyap_mini_v2/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Deneyap Mini v2" diff --git a/ports/espressif/boards/doit_esp32_devkit_v1/mpconfigboard.h b/ports/espressif/boards/doit_esp32_devkit_v1/mpconfigboard.h index 5c3f14b3d35c..c67d6ae03e1d 100644 --- a/ports/espressif/boards/doit_esp32_devkit_v1/mpconfigboard.h +++ b/ports/espressif/boards/doit_esp32_devkit_v1/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "ESP32 Devkit V1" diff --git a/ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h b/ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h index a37d437e8683..1d6a22ef0459 100644 --- a/ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h +++ b/ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "BastWiFi" diff --git a/ports/espressif/boards/es3ink/mpconfigboard.h b/ports/espressif/boards/es3ink/mpconfigboard.h index 2ff1afd4cdea..3d7eac94ddaa 100644 --- a/ports/espressif/boards/es3ink/mpconfigboard.h +++ b/ports/espressif/boards/es3ink/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "ES3ink" diff --git a/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/mpconfigboard.h b/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/mpconfigboard.h index eb78d039cb02..a5cc7b08ad3f 100644 --- a/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Espressif ESP32 DevKitc V4 WROOM-32E" diff --git a/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/mpconfigboard.h b/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/mpconfigboard.h index ad09bffc1f94..a9413b7d24ca 100644 --- a/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Espressif ESP32 DevKitc V4 WROVER" diff --git a/ports/espressif/boards/espressif_esp32_eye/mpconfigboard.h b/ports/espressif/boards/espressif_esp32_eye/mpconfigboard.h index dcac55237c72..5e32db054088 100644 --- a/ports/espressif/boards/espressif_esp32_eye/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32_eye/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Espressif ESP32-EYE" diff --git a/ports/espressif/boards/espressif_esp32_lyrat/mpconfigboard.h b/ports/espressif/boards/espressif_esp32_lyrat/mpconfigboard.h index 209402c7db6a..28eafc27a4e9 100644 --- a/ports/espressif/boards/espressif_esp32_lyrat/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32_lyrat/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Espressif ESP32-LyraT" diff --git a/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/mpconfigboard.h b/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/mpconfigboard.h index 02b4451f20f3..55b7979e86bb 100644 --- a/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Board setup #define MICROPY_HW_BOARD_NAME "ESP32-C3-DevKitM-1" #define MICROPY_HW_MCU_NAME "ESP32-C3N4" diff --git a/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/mpconfigboard.h b/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/mpconfigboard.h index 3bc9c2a95807..e5f2606cf49f 100644 --- a/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "ESP32-C6-DevKitC-1-N8" diff --git a/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/mpconfigboard.h b/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/mpconfigboard.h index 3d777794af9e..347cd5873484 100644 --- a/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Board setup #define MICROPY_HW_BOARD_NAME "ESP32-C6-DevKitM-1" #define MICROPY_HW_MCU_NAME "ESP32-C6N4" diff --git a/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/mpconfigboard.h b/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/mpconfigboard.h index ca5cd8746ce7..e368af9d3a38 100644 --- a/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Board setup #define MICROPY_HW_BOARD_NAME "ESP32-H2-DevKitM-1" #define MICROPY_HW_MCU_NAME "ESP32-H2N4" diff --git a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/mpconfigboard.h index 182594284cbd..baa8ab54ee5d 100644 --- a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "ESP32-S2-DevKitC-1-N4" diff --git a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/mpconfigboard.h index 0465ca3acca7..b1996e7814a7 100644 --- a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "ESP32-S2-DevKitC-1-N4R2" diff --git a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/mpconfigboard.h index e2eb368439b6..daa9890e8d34 100644 --- a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "ESP32-S2-DevKitC-1-N8R2" diff --git a/ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h index 04338b59274a..4c08a28b7d20 100644 --- a/ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "ESP32-S3-Box-2.5" diff --git a/ports/espressif/boards/espressif_esp32s3_box_lite/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s3_box_lite/mpconfigboard.h index f35ac643c6b3..fd85ee1ed3d2 100644 --- a/ports/espressif/boards/espressif_esp32s3_box_lite/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s3_box_lite/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "ESP32-S3-Box-Lite" diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/mpconfigboard.h index e3e7d02c7576..fd2b8723eb66 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "ESP32-S3-DevKitC-1-N32R8" diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/mpconfigboard.h index 2ee339af9795..ab9425139377 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "ESP32-S3-DevKitC-1-N8" diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/mpconfigboard.h index b110d60a790a..dcd737da119d 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "ESP32-S3-DevKitC-1-N8R2" diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/mpconfigboard.h index 84b749f3d4e2..da7d018ee5f4 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "ESP32-S3-DevKitC-1-N8R8" diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8_hacktablet/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8_hacktablet/mpconfigboard.h index aa8286b5bc6f..d0b16b51b843 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8_hacktablet/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8_hacktablet/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "ESP32-S3-DevKitC-1-N8R8-with-HACKTABLET" diff --git a/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/mpconfigboard.h index 3fe14423613c..d6dba39b7ab3 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "ESP32-S3-DevKitM-1-N8" diff --git a/ports/espressif/boards/espressif_esp32s3_eye/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s3_eye/mpconfigboard.h index 7fe7a53a162d..24dca2e4ba2f 100644 --- a/ports/espressif/boards/espressif_esp32s3_eye/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s3_eye/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "ESP32-S3-EYE" diff --git a/ports/espressif/boards/espressif_esp32s3_lcd_ev/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s3_lcd_ev/mpconfigboard.h index d88b8b615cbf..345055629817 100644 --- a/ports/espressif/boards/espressif_esp32s3_lcd_ev/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s3_lcd_ev/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Espressif-ESP32-S3-LCD-EV-Board" diff --git a/ports/espressif/boards/espressif_esp32s3_usb_otg_n8/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s3_usb_otg_n8/mpconfigboard.h index 8eb2507319b0..c5945c168f84 100644 --- a/ports/espressif/boards/espressif_esp32s3_usb_otg_n8/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp32s3_usb_otg_n8/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "ESP32-S3-USB-OTG-N8" diff --git a/ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h b/ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h index 55420507ca8b..7c59e6d4decc 100644 --- a/ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h +++ b/ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "HMI-DevKit-1.1" diff --git a/ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h b/ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h index a0b080120374..87536191e235 100644 --- a/ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h +++ b/ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Kaluga 1" diff --git a/ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h b/ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h index d0dd8242f0c5..28288fe8752d 100644 --- a/ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h +++ b/ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Kaluga 1" diff --git a/ports/espressif/boards/espressif_saola_1_wroom/mpconfigboard.h b/ports/espressif/boards/espressif_saola_1_wroom/mpconfigboard.h index 4f4536694a1e..94e4b4fb7163 100644 --- a/ports/espressif/boards/espressif_saola_1_wroom/mpconfigboard.h +++ b/ports/espressif/boards/espressif_saola_1_wroom/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Saola 1 w/Wroom" diff --git a/ports/espressif/boards/espressif_saola_1_wrover/mpconfigboard.h b/ports/espressif/boards/espressif_saola_1_wrover/mpconfigboard.h index c22eedbd537c..5f0b3ee71b1f 100644 --- a/ports/espressif/boards/espressif_saola_1_wrover/mpconfigboard.h +++ b/ports/espressif/boards/espressif_saola_1_wrover/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Saola 1 w/Wrover" diff --git a/ports/espressif/boards/firebeetle2_esp32s3/mpconfigboard.h b/ports/espressif/boards/firebeetle2_esp32s3/mpconfigboard.h index f5f6a1ac01e4..490821c1ef76 100644 --- a/ports/espressif/boards/firebeetle2_esp32s3/mpconfigboard.h +++ b/ports/espressif/boards/firebeetle2_esp32s3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "DFRobot FireBeetle 2 ESP32-S3" #define MICROPY_HW_MCU_NAME "ESP32S3" diff --git a/ports/espressif/boards/flipperzero_wifi_dev/mpconfigboard.h b/ports/espressif/boards/flipperzero_wifi_dev/mpconfigboard.h index a5bcb17c0321..c776221e6001 100644 --- a/ports/espressif/boards/flipperzero_wifi_dev/mpconfigboard.h +++ b/ports/espressif/boards/flipperzero_wifi_dev/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Flipper Zero Wi-Fi Dev" diff --git a/ports/espressif/boards/franzininho_wifi_wroom/mpconfigboard.h b/ports/espressif/boards/franzininho_wifi_wroom/mpconfigboard.h index 412dce4bd4a0..6aad19182d90 100644 --- a/ports/espressif/boards/franzininho_wifi_wroom/mpconfigboard.h +++ b/ports/espressif/boards/franzininho_wifi_wroom/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Franzininho WIFI w/Wroom" diff --git a/ports/espressif/boards/franzininho_wifi_wrover/mpconfigboard.h b/ports/espressif/boards/franzininho_wifi_wrover/mpconfigboard.h index f141085d5db8..220d92e4a512 100644 --- a/ports/espressif/boards/franzininho_wifi_wrover/mpconfigboard.h +++ b/ports/espressif/boards/franzininho_wifi_wrover/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Franzininho WIFI w/Wrover" diff --git a/ports/espressif/boards/gravitech_cucumber_m/mpconfigboard.h b/ports/espressif/boards/gravitech_cucumber_m/mpconfigboard.h index 288cb35e2001..95e3d8457311 100644 --- a/ports/espressif/boards/gravitech_cucumber_m/mpconfigboard.h +++ b/ports/espressif/boards/gravitech_cucumber_m/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Gravitech Cucumber M" diff --git a/ports/espressif/boards/gravitech_cucumber_ms/mpconfigboard.h b/ports/espressif/boards/gravitech_cucumber_ms/mpconfigboard.h index b6287b581982..ab597b73bed7 100644 --- a/ports/espressif/boards/gravitech_cucumber_ms/mpconfigboard.h +++ b/ports/espressif/boards/gravitech_cucumber_ms/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Gravitech Cucumber MS" diff --git a/ports/espressif/boards/gravitech_cucumber_r/mpconfigboard.h b/ports/espressif/boards/gravitech_cucumber_r/mpconfigboard.h index 6769e0d4c571..58064f429445 100644 --- a/ports/espressif/boards/gravitech_cucumber_r/mpconfigboard.h +++ b/ports/espressif/boards/gravitech_cucumber_r/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Gravitech Cucumber R" diff --git a/ports/espressif/boards/gravitech_cucumber_rs/mpconfigboard.h b/ports/espressif/boards/gravitech_cucumber_rs/mpconfigboard.h index 79b0f8642a20..005bb4ab230b 100644 --- a/ports/espressif/boards/gravitech_cucumber_rs/mpconfigboard.h +++ b/ports/espressif/boards/gravitech_cucumber_rs/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Gravitech Cucumber RS" diff --git a/ports/espressif/boards/hardkernel_odroid_go/mpconfigboard.h b/ports/espressif/boards/hardkernel_odroid_go/mpconfigboard.h index 3cb5f7fe077c..856184bba974 100644 --- a/ports/espressif/boards/hardkernel_odroid_go/mpconfigboard.h +++ b/ports/espressif/boards/hardkernel_odroid_go/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Hardkernel Odroid Go" #define MICROPY_HW_MCU_NAME "ESP32" diff --git a/ports/espressif/boards/heltec_esp32s3_wifi_lora_v3/mpconfigboard.h b/ports/espressif/boards/heltec_esp32s3_wifi_lora_v3/mpconfigboard.h index c322866eea25..f986116a8e2e 100644 --- a/ports/espressif/boards/heltec_esp32s3_wifi_lora_v3/mpconfigboard.h +++ b/ports/espressif/boards/heltec_esp32s3_wifi_lora_v3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Heltec ESP32-S3-WIFI-LoRa-V3" diff --git a/ports/espressif/boards/hexky_s2/mpconfigboard.h b/ports/espressif/boards/hexky_s2/mpconfigboard.h index 7f15c42670eb..00400046690f 100644 --- a/ports/espressif/boards/hexky_s2/mpconfigboard.h +++ b/ports/espressif/boards/hexky_s2/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "HexKyS2" diff --git a/ports/espressif/boards/hiibot_iots2/mpconfigboard.h b/ports/espressif/boards/hiibot_iots2/mpconfigboard.h index 144a68a7cdf3..770f03c4810a 100644 --- a/ports/espressif/boards/hiibot_iots2/mpconfigboard.h +++ b/ports/espressif/boards/hiibot_iots2/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "IoTs2" diff --git a/ports/espressif/boards/lilygo_tdeck/mpconfigboard.h b/ports/espressif/boards/lilygo_tdeck/mpconfigboard.h index 41d8c9cf7874..aca85d815e0a 100644 --- a/ports/espressif/boards/lilygo_tdeck/mpconfigboard.h +++ b/ports/espressif/boards/lilygo_tdeck/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "LILYGO T-DECK" diff --git a/ports/espressif/boards/lilygo_tdisplay_s3/mpconfigboard.h b/ports/espressif/boards/lilygo_tdisplay_s3/mpconfigboard.h index 3b5dea2d6f55..31cabb8e244c 100644 --- a/ports/espressif/boards/lilygo_tdisplay_s3/mpconfigboard.h +++ b/ports/espressif/boards/lilygo_tdisplay_s3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "LILYGO T-DISPLAY S3 v1.2" diff --git a/ports/espressif/boards/lilygo_tembed_esp32s3/mpconfigboard.h b/ports/espressif/boards/lilygo_tembed_esp32s3/mpconfigboard.h index 642e7275347b..18bf2ac67dee 100644 --- a/ports/espressif/boards/lilygo_tembed_esp32s3/mpconfigboard.h +++ b/ports/espressif/boards/lilygo_tembed_esp32s3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "LILYGO TEMBED ESP32S3" diff --git a/ports/espressif/boards/lilygo_ttgo_t-01c3/mpconfigboard.h b/ports/espressif/boards/lilygo_ttgo_t-01c3/mpconfigboard.h index a524f3946019..0a04e5d5299e 100644 --- a/ports/espressif/boards/lilygo_ttgo_t-01c3/mpconfigboard.h +++ b/ports/espressif/boards/lilygo_ttgo_t-01c3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "LILYGO TTGO T-01C3" #define MICROPY_HW_MCU_NAME "ESP32-C3" diff --git a/ports/espressif/boards/lilygo_ttgo_t-oi-plus/mpconfigboard.h b/ports/espressif/boards/lilygo_ttgo_t-oi-plus/mpconfigboard.h index c4772c73be64..247e58d916d8 100644 --- a/ports/espressif/boards/lilygo_ttgo_t-oi-plus/mpconfigboard.h +++ b/ports/espressif/boards/lilygo_ttgo_t-oi-plus/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "LILYGO TTGO T-OI PLUS" #define MICROPY_HW_MCU_NAME "ESP32-C3" diff --git a/ports/espressif/boards/lilygo_ttgo_t8_esp32_s2_wroom/mpconfigboard.h b/ports/espressif/boards/lilygo_ttgo_t8_esp32_s2_wroom/mpconfigboard.h index b607422a4bdf..ff898a35afcc 100644 --- a/ports/espressif/boards/lilygo_ttgo_t8_esp32_s2_wroom/mpconfigboard.h +++ b/ports/espressif/boards/lilygo_ttgo_t8_esp32_s2_wroom/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "TTGO T8 ESP32-S2-WROOM" diff --git a/ports/espressif/boards/lilygo_ttgo_t8_s2/mpconfigboard.h b/ports/espressif/boards/lilygo_ttgo_t8_s2/mpconfigboard.h index 9ab674eefb92..7e5d5c00bf61 100644 --- a/ports/espressif/boards/lilygo_ttgo_t8_s2/mpconfigboard.h +++ b/ports/espressif/boards/lilygo_ttgo_t8_s2/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "LILYGO TTGO T8 ESP32-S2" diff --git a/ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h b/ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h index dfc64d86c5da..de59659d4ae9 100644 --- a/ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h +++ b/ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "LILYGO TTGO T8 ESP32-S2 w/Display" diff --git a/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_16m/mpconfigboard.h b/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_16m/mpconfigboard.h index 10b074bd9fcf..75a875813db7 100644 --- a/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_16m/mpconfigboard.h +++ b/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_16m/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "LILYGO TTGO T-DISPLAY v1.1" diff --git a/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/mpconfigboard.h b/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/mpconfigboard.h index b519954872f9..89be1f9e1d27 100644 --- a/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/mpconfigboard.h +++ b/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "LILYGO TTGO T-DISPLAY v1.1 4M" diff --git a/ports/espressif/boards/lilygo_twatch_2020_v3/mpconfigboard.h b/ports/espressif/boards/lilygo_twatch_2020_v3/mpconfigboard.h index d499f3ec9da3..b943972b22c7 100644 --- a/ports/espressif/boards/lilygo_twatch_2020_v3/mpconfigboard.h +++ b/ports/espressif/boards/lilygo_twatch_2020_v3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Lilygo T-watch 2020 V3" diff --git a/ports/espressif/boards/lolin_c3_mini/mpconfigboard.h b/ports/espressif/boards/lolin_c3_mini/mpconfigboard.h index da141ad7007f..0faf4e6775a4 100644 --- a/ports/espressif/boards/lolin_c3_mini/mpconfigboard.h +++ b/ports/espressif/boards/lolin_c3_mini/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Board setup #define MICROPY_HW_BOARD_NAME "Wemos Lolin C3 Mini" // from Wemos MP diff --git a/ports/espressif/boards/lolin_c3_pico/mpconfigboard.h b/ports/espressif/boards/lolin_c3_pico/mpconfigboard.h index 767592c15a5a..248003072230 100644 --- a/ports/espressif/boards/lolin_c3_pico/mpconfigboard.h +++ b/ports/espressif/boards/lolin_c3_pico/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Board setup #define MICROPY_HW_BOARD_NAME "Wemos Lolin C3 Pico" // from Wemos MP diff --git a/ports/espressif/boards/lolin_s2_mini/mpconfigboard.h b/ports/espressif/boards/lolin_s2_mini/mpconfigboard.h index d170aef6a59a..e89b644e11c1 100644 --- a/ports/espressif/boards/lolin_s2_mini/mpconfigboard.h +++ b/ports/espressif/boards/lolin_s2_mini/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "S2Mini" diff --git a/ports/espressif/boards/lolin_s2_pico/mpconfigboard.h b/ports/espressif/boards/lolin_s2_pico/mpconfigboard.h index 146fb3efe15a..cc6f1bcb9e53 100644 --- a/ports/espressif/boards/lolin_s2_pico/mpconfigboard.h +++ b/ports/espressif/boards/lolin_s2_pico/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "S2Pico" diff --git a/ports/espressif/boards/lolin_s3/mpconfigboard.h b/ports/espressif/boards/lolin_s3/mpconfigboard.h index 2fe9197c4a00..f29f7551ce5d 100644 --- a/ports/espressif/boards/lolin_s3/mpconfigboard.h +++ b/ports/espressif/boards/lolin_s3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "LOLIN S3 16MB Flash 8MB PSRAM" diff --git a/ports/espressif/boards/lolin_s3_mini/mpconfigboard.h b/ports/espressif/boards/lolin_s3_mini/mpconfigboard.h index 3030473d4cb1..8e42bc8d76d3 100644 --- a/ports/espressif/boards/lolin_s3_mini/mpconfigboard.h +++ b/ports/espressif/boards/lolin_s3_mini/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "LOLIN S3 MINI 4MB Flash 2MB PSRAM" diff --git a/ports/espressif/boards/lolin_s3_pro/mpconfigboard.h b/ports/espressif/boards/lolin_s3_pro/mpconfigboard.h index b5964b18e5ea..548f53af2ed1 100755 --- a/ports/espressif/boards/lolin_s3_pro/mpconfigboard.h +++ b/ports/espressif/boards/lolin_s3_pro/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "LOLIN S3 PRO 16MB Flash 8MB PSRAM" diff --git a/ports/espressif/boards/luatos_core_esp32c3/mpconfigboard.h b/ports/espressif/boards/luatos_core_esp32c3/mpconfigboard.h index 5540b0feb326..6d9b9db9c6dd 100644 --- a/ports/espressif/boards/luatos_core_esp32c3/mpconfigboard.h +++ b/ports/espressif/boards/luatos_core_esp32c3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Board setup #define MICROPY_HW_BOARD_NAME "Luatos Core-ESP32C3" diff --git a/ports/espressif/boards/luatos_core_esp32c3_ch343/mpconfigboard.h b/ports/espressif/boards/luatos_core_esp32c3_ch343/mpconfigboard.h index 1682f3b27f68..87fa0c13f65c 100644 --- a/ports/espressif/boards/luatos_core_esp32c3_ch343/mpconfigboard.h +++ b/ports/espressif/boards/luatos_core_esp32c3_ch343/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Board setup #define MICROPY_HW_BOARD_NAME "Luatos Core-ESP32C3" diff --git a/ports/espressif/boards/m5stack_atom_echo/mpconfigboard.h b/ports/espressif/boards/m5stack_atom_echo/mpconfigboard.h index feb04e3b21b9..56fc9db4cca9 100644 --- a/ports/espressif/boards/m5stack_atom_echo/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_atom_echo/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "M5Stack Atom Echo" diff --git a/ports/espressif/boards/m5stack_atom_lite/mpconfigboard.h b/ports/espressif/boards/m5stack_atom_lite/mpconfigboard.h index ddaafdfef216..35bc39b94571 100644 --- a/ports/espressif/boards/m5stack_atom_lite/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_atom_lite/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "M5Stack Atom Lite" diff --git a/ports/espressif/boards/m5stack_atom_matrix/mpconfigboard.h b/ports/espressif/boards/m5stack_atom_matrix/mpconfigboard.h index 440eb44abe9e..43ca2daff751 100644 --- a/ports/espressif/boards/m5stack_atom_matrix/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_atom_matrix/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "M5Stack Atom Matrix" diff --git a/ports/espressif/boards/m5stack_atom_u/mpconfigboard.h b/ports/espressif/boards/m5stack_atom_u/mpconfigboard.h index 8ab4234460e2..96843a2e983d 100644 --- a/ports/espressif/boards/m5stack_atom_u/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_atom_u/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "M5Stack Atom U" diff --git a/ports/espressif/boards/m5stack_atoms3/mpconfigboard.h b/ports/espressif/boards/m5stack_atoms3/mpconfigboard.h index 4c0538977a57..76691f4c98ee 100644 --- a/ports/espressif/boards/m5stack_atoms3/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_atoms3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "M5Stack AtomS3" diff --git a/ports/espressif/boards/m5stack_atoms3_lite/mpconfigboard.h b/ports/espressif/boards/m5stack_atoms3_lite/mpconfigboard.h index 3e31c4f97379..d57c3cb3c681 100644 --- a/ports/espressif/boards/m5stack_atoms3_lite/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_atoms3_lite/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "M5Stack AtomS3 Lite" diff --git a/ports/espressif/boards/m5stack_atoms3u/mpconfigboard.h b/ports/espressif/boards/m5stack_atoms3u/mpconfigboard.h index 880e4896ca93..9da6d1733b54 100644 --- a/ports/espressif/boards/m5stack_atoms3u/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_atoms3u/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "M5Stack AtomS3U" diff --git a/ports/espressif/boards/m5stack_cardputer/keymap.h b/ports/espressif/boards/m5stack_cardputer/keymap.h index 63147beb79f3..08c278bf82bf 100644 --- a/ports/espressif/boards/m5stack_cardputer/keymap.h +++ b/ports/espressif/boards/m5stack_cardputer/keymap.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define SHIFT_MOD 0x40 #define FN_MOD 0x80 diff --git a/ports/espressif/boards/m5stack_cardputer/mpconfigboard.h b/ports/espressif/boards/m5stack_cardputer/mpconfigboard.h index a24aa5bcf902..8cd0d86db9a2 100644 --- a/ports/espressif/boards/m5stack_cardputer/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_cardputer/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "M5 Stack Cardputer" diff --git a/ports/espressif/boards/m5stack_core2/mpconfigboard.h b/ports/espressif/boards/m5stack_core2/mpconfigboard.h index 2650e86f724a..506736f4da39 100755 --- a/ports/espressif/boards/m5stack_core2/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_core2/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "M5Stack Core2" diff --git a/ports/espressif/boards/m5stack_core_basic/mpconfigboard.h b/ports/espressif/boards/m5stack_core_basic/mpconfigboard.h index 79da2cdbb80e..ccdd0ae349f4 100755 --- a/ports/espressif/boards/m5stack_core_basic/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_core_basic/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "M5Stack Core Basic" diff --git a/ports/espressif/boards/m5stack_core_fire/mpconfigboard.h b/ports/espressif/boards/m5stack_core_fire/mpconfigboard.h index 05c788fba7ec..10e73e010f1f 100755 --- a/ports/espressif/boards/m5stack_core_fire/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_core_fire/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "M5Stack Core Fire" diff --git a/ports/espressif/boards/m5stack_cores3/mpconfigboard.h b/ports/espressif/boards/m5stack_cores3/mpconfigboard.h index 9b1edc4ea794..9af6ccf2fb42 100644 --- a/ports/espressif/boards/m5stack_cores3/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_cores3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "M5Stack CoreS3" diff --git a/ports/espressif/boards/m5stack_dial/mpconfigboard.h b/ports/espressif/boards/m5stack_dial/mpconfigboard.h index c70c1c85dab5..0e0bc17c680b 100644 --- a/ports/espressif/boards/m5stack_dial/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_dial/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "M5Stack Dial" diff --git a/ports/espressif/boards/m5stack_m5paper/mpconfigboard.h b/ports/espressif/boards/m5stack_m5paper/mpconfigboard.h index af41e5e05a38..963bc916ee71 100644 --- a/ports/espressif/boards/m5stack_m5paper/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_m5paper/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "M5Stack M5Paper" diff --git a/ports/espressif/boards/m5stack_stamp_c3/mpconfigboard.h b/ports/espressif/boards/m5stack_stamp_c3/mpconfigboard.h index 2a02b84a9254..87f476e5fffc 100644 --- a/ports/espressif/boards/m5stack_stamp_c3/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_stamp_c3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Board setup #define MICROPY_HW_BOARD_NAME "M5STACK STAMP-C3" diff --git a/ports/espressif/boards/m5stack_stick_c/mpconfigboard.h b/ports/espressif/boards/m5stack_stick_c/mpconfigboard.h index 12c56d5e0262..2e4d19a399f1 100644 --- a/ports/espressif/boards/m5stack_stick_c/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_stick_c/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "M5Stack Stick C" diff --git a/ports/espressif/boards/m5stack_stick_c_plus/mpconfigboard.h b/ports/espressif/boards/m5stack_stick_c_plus/mpconfigboard.h index e4ebe53a8d3b..79f1f902d901 100644 --- a/ports/espressif/boards/m5stack_stick_c_plus/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_stick_c_plus/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "M5Stack Stick C Plus" diff --git a/ports/espressif/boards/m5stack_timer_camera_x/mpconfigboard.h b/ports/espressif/boards/m5stack_timer_camera_x/mpconfigboard.h index c6f733ed6412..49b09c3383c3 100644 --- a/ports/espressif/boards/m5stack_timer_camera_x/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_timer_camera_x/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "M5Stack Timer Camera X" #define MICROPY_HW_MCU_NAME "ESP32" diff --git a/ports/espressif/boards/magiclick_s3_n4r2/mpconfigboard.h b/ports/espressif/boards/magiclick_s3_n4r2/mpconfigboard.h index 6ad2df0b17bf..ac5d98cba58f 100644 --- a/ports/espressif/boards/magiclick_s3_n4r2/mpconfigboard.h +++ b/ports/espressif/boards/magiclick_s3_n4r2/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "MagiClick S3 N4R2" diff --git a/ports/espressif/boards/maker_badge/mpconfigboard.h b/ports/espressif/boards/maker_badge/mpconfigboard.h index 2b4f68c6df8d..5b55b6e918a2 100644 --- a/ports/espressif/boards/maker_badge/mpconfigboard.h +++ b/ports/espressif/boards/maker_badge/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Maker badge by Czech maker" diff --git a/ports/espressif/boards/makerfabs_tft7/mpconfigboard.h b/ports/espressif/boards/makerfabs_tft7/mpconfigboard.h index 6b22da260dcb..aaae5c85b276 100644 --- a/ports/espressif/boards/makerfabs_tft7/mpconfigboard.h +++ b/ports/espressif/boards/makerfabs_tft7/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "MakerFabs-ESP32-S3-Parallel-TFT-With-Touch-7inch" diff --git a/ports/espressif/boards/makergo_esp32c3_supermini/mpconfigboard.h b/ports/espressif/boards/makergo_esp32c3_supermini/mpconfigboard.h index 2306ce28f343..6f3d33c29302 100644 --- a/ports/espressif/boards/makergo_esp32c3_supermini/mpconfigboard.h +++ b/ports/espressif/boards/makergo_esp32c3_supermini/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Board setup #define MICROPY_HW_BOARD_NAME "Maker Go ESP32C3 Supermini" diff --git a/ports/espressif/boards/microdev_micro_c3/mpconfigboard.h b/ports/espressif/boards/microdev_micro_c3/mpconfigboard.h index 6f8b1a04ddfa..a6bc2b1aae84 100644 --- a/ports/espressif/boards/microdev_micro_c3/mpconfigboard.h +++ b/ports/espressif/boards/microdev_micro_c3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Board setup #define MICROPY_HW_BOARD_NAME "MicroDev microC3" #define MICROPY_HW_MCU_NAME "ESP32-C3FN4" diff --git a/ports/espressif/boards/microdev_micro_s2/mpconfigboard.h b/ports/espressif/boards/microdev_micro_s2/mpconfigboard.h index 4f4e0ea27c00..b7b327b23d3c 100644 --- a/ports/espressif/boards/microdev_micro_s2/mpconfigboard.h +++ b/ports/espressif/boards/microdev_micro_s2/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Board setup #define MICROPY_HW_BOARD_NAME "MicroDev microS2" #define MICROPY_HW_MCU_NAME "ESP32-S2" diff --git a/ports/espressif/boards/mixgo_ce_serial/mpconfigboard.h b/ports/espressif/boards/mixgo_ce_serial/mpconfigboard.h index fef88b284c42..faf376cd1884 100644 --- a/ports/espressif/boards/mixgo_ce_serial/mpconfigboard.h +++ b/ports/espressif/boards/mixgo_ce_serial/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "MixGo CE" diff --git a/ports/espressif/boards/mixgo_ce_udisk/mpconfigboard.h b/ports/espressif/boards/mixgo_ce_udisk/mpconfigboard.h index fef88b284c42..faf376cd1884 100644 --- a/ports/espressif/boards/mixgo_ce_udisk/mpconfigboard.h +++ b/ports/espressif/boards/mixgo_ce_udisk/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "MixGo CE" diff --git a/ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h b/ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h index 5091afa5cf16..50998d425288 100644 --- a/ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h +++ b/ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "MORPHEANS MorphESP-240" diff --git a/ports/espressif/boards/muselab_nanoesp32_s2_wroom/mpconfigboard.h b/ports/espressif/boards/muselab_nanoesp32_s2_wroom/mpconfigboard.h index d3607bd37d06..28924dde66c3 100644 --- a/ports/espressif/boards/muselab_nanoesp32_s2_wroom/mpconfigboard.h +++ b/ports/espressif/boards/muselab_nanoesp32_s2_wroom/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "nanoESP32-S2 w/Wroom" diff --git a/ports/espressif/boards/muselab_nanoesp32_s2_wrover/mpconfigboard.h b/ports/espressif/boards/muselab_nanoesp32_s2_wrover/mpconfigboard.h index 69003da8b40a..d4a3dd09d1db 100644 --- a/ports/espressif/boards/muselab_nanoesp32_s2_wrover/mpconfigboard.h +++ b/ports/espressif/boards/muselab_nanoesp32_s2_wrover/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "nanoESP32-S2 w/Wrover" diff --git a/ports/espressif/boards/odt_pixelwing_esp32_s2/mpconfigboard.h b/ports/espressif/boards/odt_pixelwing_esp32_s2/mpconfigboard.h index 5e256a1e1dca..7697d6a98a8a 100644 --- a/ports/espressif/boards/odt_pixelwing_esp32_s2/mpconfigboard.h +++ b/ports/espressif/boards/odt_pixelwing_esp32_s2/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Oak Dev Tech PixelWing ESP32S2" diff --git a/ports/espressif/boards/oxocard_artwork/mpconfigboard.h b/ports/espressif/boards/oxocard_artwork/mpconfigboard.h index f92b6dad4c1e..73cbfbbb54ce 100644 --- a/ports/espressif/boards/oxocard_artwork/mpconfigboard.h +++ b/ports/espressif/boards/oxocard_artwork/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Oxocard Artwork" diff --git a/ports/espressif/boards/oxocard_connect/mpconfigboard.h b/ports/espressif/boards/oxocard_connect/mpconfigboard.h index 3512a5a12f2d..d4c87c1d8a4e 100644 --- a/ports/espressif/boards/oxocard_connect/mpconfigboard.h +++ b/ports/espressif/boards/oxocard_connect/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Oxocard Connect" diff --git a/ports/espressif/boards/oxocard_galaxy/mpconfigboard.h b/ports/espressif/boards/oxocard_galaxy/mpconfigboard.h index 7f68815b17f8..7f8e91ffc87b 100644 --- a/ports/espressif/boards/oxocard_galaxy/mpconfigboard.h +++ b/ports/espressif/boards/oxocard_galaxy/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Oxocard Galaxy" diff --git a/ports/espressif/boards/oxocard_science/mpconfigboard.h b/ports/espressif/boards/oxocard_science/mpconfigboard.h index 78095ff4e24c..ac20d9e9b2ec 100644 --- a/ports/espressif/boards/oxocard_science/mpconfigboard.h +++ b/ports/espressif/boards/oxocard_science/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Oxocard Science" diff --git a/ports/espressif/boards/seeed_xiao_esp32c3/mpconfigboard.h b/ports/espressif/boards/seeed_xiao_esp32c3/mpconfigboard.h index d4d0007d2024..29f933465b55 100644 --- a/ports/espressif/boards/seeed_xiao_esp32c3/mpconfigboard.h +++ b/ports/espressif/boards/seeed_xiao_esp32c3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Seeed Studio XIAO ESP32C3" #define MICROPY_HW_MCU_NAME "ESP32-C3FN4" diff --git a/ports/espressif/boards/sensebox_mcu_esp32s2/mpconfigboard.h b/ports/espressif/boards/sensebox_mcu_esp32s2/mpconfigboard.h index 1835e5d5a597..9213a260ab86 100644 --- a/ports/espressif/boards/sensebox_mcu_esp32s2/mpconfigboard.h +++ b/ports/espressif/boards/sensebox_mcu_esp32s2/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "senseBox MCU-S2 ESP32S2" diff --git a/ports/espressif/boards/smartbeedesigns_bee_data_logger/mpconfigboard.h b/ports/espressif/boards/smartbeedesigns_bee_data_logger/mpconfigboard.h index 1923c84cf9bb..ed94367c4aac 100644 --- a/ports/espressif/boards/smartbeedesigns_bee_data_logger/mpconfigboard.h +++ b/ports/espressif/boards/smartbeedesigns_bee_data_logger/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Bee-Data-Logger" diff --git a/ports/espressif/boards/smartbeedesigns_bee_motion_s3/mpconfigboard.h b/ports/espressif/boards/smartbeedesigns_bee_motion_s3/mpconfigboard.h index 92b8aa09d4d4..f24da9bb5ddb 100644 --- a/ports/espressif/boards/smartbeedesigns_bee_motion_s3/mpconfigboard.h +++ b/ports/espressif/boards/smartbeedesigns_bee_motion_s3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Bee-Motion-S3" diff --git a/ports/espressif/boards/smartbeedesigns_bee_s3/mpconfigboard.h b/ports/espressif/boards/smartbeedesigns_bee_s3/mpconfigboard.h index c1de8d155abc..38d7fb9d5d07 100644 --- a/ports/espressif/boards/smartbeedesigns_bee_s3/mpconfigboard.h +++ b/ports/espressif/boards/smartbeedesigns_bee_s3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Bee-S3" diff --git a/ports/espressif/boards/spotpear_esp32c3_lcd_1_44/mpconfigboard.h b/ports/espressif/boards/spotpear_esp32c3_lcd_1_44/mpconfigboard.h index 652eb7aaa2af..fcc5a74ea9fe 100644 --- a/ports/espressif/boards/spotpear_esp32c3_lcd_1_44/mpconfigboard.h +++ b/ports/espressif/boards/spotpear_esp32c3_lcd_1_44/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Board setup #define MICROPY_HW_BOARD_NAME "Spotpear ESP32C3 LCD 1.44" #define MICROPY_HW_MCU_NAME "ESP32-C3FH4" diff --git a/ports/espressif/boards/sqfmi_watchy/mpconfigboard.h b/ports/espressif/boards/sqfmi_watchy/mpconfigboard.h index 21a93b0b8f18..b6b375f14282 100644 --- a/ports/espressif/boards/sqfmi_watchy/mpconfigboard.h +++ b/ports/espressif/boards/sqfmi_watchy/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "SQFMI Watchy" diff --git a/ports/espressif/boards/sunton_esp32_2424S012/mpconfigboard.h b/ports/espressif/boards/sunton_esp32_2424S012/mpconfigboard.h index 1f0aac74c310..c1665fa8c28b 100644 --- a/ports/espressif/boards/sunton_esp32_2424S012/mpconfigboard.h +++ b/ports/espressif/boards/sunton_esp32_2424S012/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Board setup #define MICROPY_HW_BOARD_NAME "Sunton ESP32-2424S012" diff --git a/ports/espressif/boards/sunton_esp32_2432S028/mpconfigboard.h b/ports/espressif/boards/sunton_esp32_2432S028/mpconfigboard.h index fc179c92fbc0..95eb1bdefe74 100644 --- a/ports/espressif/boards/sunton_esp32_2432S028/mpconfigboard.h +++ b/ports/espressif/boards/sunton_esp32_2432S028/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "sunton_esp32_2432S028" diff --git a/ports/espressif/boards/sunton_esp32_8048S070/mpconfigboard.h b/ports/espressif/boards/sunton_esp32_8048S070/mpconfigboard.h index 9ebf463c5474..919c575e8783 100644 --- a/ports/espressif/boards/sunton_esp32_8048S070/mpconfigboard.h +++ b/ports/espressif/boards/sunton_esp32_8048S070/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Sunton-ESP32-8048S070" diff --git a/ports/espressif/boards/targett_module_clip_wroom/mpconfigboard.h b/ports/espressif/boards/targett_module_clip_wroom/mpconfigboard.h index 591d2b068d60..7e2a02f93d07 100644 --- a/ports/espressif/boards/targett_module_clip_wroom/mpconfigboard.h +++ b/ports/espressif/boards/targett_module_clip_wroom/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup // Essentially the same as the Saola board but without the neopixel diff --git a/ports/espressif/boards/targett_module_clip_wrover/mpconfigboard.h b/ports/espressif/boards/targett_module_clip_wrover/mpconfigboard.h index 8e664607b0c3..179ca7d65e0c 100644 --- a/ports/espressif/boards/targett_module_clip_wrover/mpconfigboard.h +++ b/ports/espressif/boards/targett_module_clip_wrover/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup // Same setup as the Saola board but with no Neopixel on board diff --git a/ports/espressif/boards/unexpectedmaker_bling/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_bling/mpconfigboard.h index 4c3e6ba73197..671f714daeab 100644 --- a/ports/espressif/boards/unexpectedmaker_bling/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_bling/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "BLING!" diff --git a/ports/espressif/boards/unexpectedmaker_blizzard_s3/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_blizzard_s3/mpconfigboard.h index 2b1a04f86521..dd677dad7b91 100644 --- a/ports/espressif/boards/unexpectedmaker_blizzard_s3/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_blizzard_s3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "BlizzardS3" diff --git a/ports/espressif/boards/unexpectedmaker_feathers2/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_feathers2/mpconfigboard.h index c5101e948da5..d8349cdb58bf 100644 --- a/ports/espressif/boards/unexpectedmaker_feathers2/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_feathers2/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "FeatherS2" diff --git a/ports/espressif/boards/unexpectedmaker_feathers2_neo/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_feathers2_neo/mpconfigboard.h index 8b8c26c3f71f..1dd6b79a9b99 100644 --- a/ports/espressif/boards/unexpectedmaker_feathers2_neo/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_feathers2_neo/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "FeatherS2 Neo" diff --git a/ports/espressif/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h index c1793d67bc17..1d6c9035ac6f 100644 --- a/ports/espressif/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "FeatherS2 PreRelease" diff --git a/ports/espressif/boards/unexpectedmaker_feathers3/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_feathers3/mpconfigboard.h index 642af0b999d5..53157a1ff11e 100644 --- a/ports/espressif/boards/unexpectedmaker_feathers3/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_feathers3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "FeatherS3" diff --git a/ports/espressif/boards/unexpectedmaker_nanos3/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_nanos3/mpconfigboard.h index 64350cbef9c6..022d6f3373ef 100644 --- a/ports/espressif/boards/unexpectedmaker_nanos3/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_nanos3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "NanoS3" diff --git a/ports/espressif/boards/unexpectedmaker_pros3/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_pros3/mpconfigboard.h index 2320624a8155..bec68c88cb19 100644 --- a/ports/espressif/boards/unexpectedmaker_pros3/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_pros3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "ProS3" diff --git a/ports/espressif/boards/unexpectedmaker_tinyc6/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_tinyc6/mpconfigboard.h index e77a2234ab78..3e4995437d59 100644 --- a/ports/espressif/boards/unexpectedmaker_tinyc6/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_tinyc6/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "TinyC6" diff --git a/ports/espressif/boards/unexpectedmaker_tinypico/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_tinypico/mpconfigboard.h index 593e05dc3e76..c03aa8d7fbce 100644 --- a/ports/espressif/boards/unexpectedmaker_tinypico/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_tinypico/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "TinyPICO" #define MICROPY_HW_MCU_NAME "ESP32-PICO-D4" diff --git a/ports/espressif/boards/unexpectedmaker_tinypico_nano/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_tinypico_nano/mpconfigboard.h index e764601e734f..2ab781f1a2e2 100644 --- a/ports/espressif/boards/unexpectedmaker_tinypico_nano/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_tinypico_nano/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "TinyPICO Nano" #define MICROPY_HW_MCU_NAME "ESP32-PICO-D4" diff --git a/ports/espressif/boards/unexpectedmaker_tinys2/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_tinys2/mpconfigboard.h index 215cadcd0692..d7c87bfdba2d 100644 --- a/ports/espressif/boards/unexpectedmaker_tinys2/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_tinys2/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "TinyS2" diff --git a/ports/espressif/boards/unexpectedmaker_tinys3/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_tinys3/mpconfigboard.h index d3f83c928a80..2556e714d67b 100644 --- a/ports/espressif/boards/unexpectedmaker_tinys3/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_tinys3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "TinyS3" diff --git a/ports/espressif/boards/unexpectedmaker_tinywatch_s3/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_tinywatch_s3/mpconfigboard.h index a46c653e046a..6f0181c4acb1 100644 --- a/ports/espressif/boards/unexpectedmaker_tinywatch_s3/mpconfigboard.h +++ b/ports/espressif/boards/unexpectedmaker_tinywatch_s3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "TinyWATCH S3" diff --git a/ports/espressif/boards/waveshare_esp32_s2_pico_lcd/mpconfigboard.h b/ports/espressif/boards/waveshare_esp32_s2_pico_lcd/mpconfigboard.h index ab9e7ee37580..c74499cf80aa 100644 --- a/ports/espressif/boards/waveshare_esp32_s2_pico_lcd/mpconfigboard.h +++ b/ports/espressif/boards/waveshare_esp32_s2_pico_lcd/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Waveshare ESP32-S2-Pico-LCD" diff --git a/ports/espressif/boards/waveshare_esp32_s3_geek/mpconfigboard.h b/ports/espressif/boards/waveshare_esp32_s3_geek/mpconfigboard.h index 8ce2bc349058..2da021447e39 100644 --- a/ports/espressif/boards/waveshare_esp32_s3_geek/mpconfigboard.h +++ b/ports/espressif/boards/waveshare_esp32_s3_geek/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Waveshare ESP32-S3-GEEK" diff --git a/ports/espressif/boards/waveshare_esp32_s3_lcd_1_28/mpconfigboard.h b/ports/espressif/boards/waveshare_esp32_s3_lcd_1_28/mpconfigboard.h index e5eb9605ef90..1e1acbdd9f8b 100644 --- a/ports/espressif/boards/waveshare_esp32_s3_lcd_1_28/mpconfigboard.h +++ b/ports/espressif/boards/waveshare_esp32_s3_lcd_1_28/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Waveshare ESP32S3 LCD 1.28" diff --git a/ports/espressif/boards/waveshare_esp32_s3_pico/mpconfigboard.h b/ports/espressif/boards/waveshare_esp32_s3_pico/mpconfigboard.h index 6893b0e1dea0..866fbdaea558 100644 --- a/ports/espressif/boards/waveshare_esp32_s3_pico/mpconfigboard.h +++ b/ports/espressif/boards/waveshare_esp32_s3_pico/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Waveshare ESP32-S3-Pico" diff --git a/ports/espressif/boards/waveshare_esp32_s3_zero/mpconfigboard.h b/ports/espressif/boards/waveshare_esp32_s3_zero/mpconfigboard.h index 4d36d6f06120..da6b7a8a8552 100644 --- a/ports/espressif/boards/waveshare_esp32_s3_zero/mpconfigboard.h +++ b/ports/espressif/boards/waveshare_esp32_s3_zero/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Waveshare ESP32-S3-Zero" diff --git a/ports/espressif/boards/waveshare_esp32s2_pico/mpconfigboard.h b/ports/espressif/boards/waveshare_esp32s2_pico/mpconfigboard.h index cdef90545fee..2888af9184ab 100644 --- a/ports/espressif/boards/waveshare_esp32s2_pico/mpconfigboard.h +++ b/ports/espressif/boards/waveshare_esp32s2_pico/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Waveshare ESP32-S2-Pico" diff --git a/ports/espressif/boards/weact_esp32c6_n4/mpconfigboard.h b/ports/espressif/boards/weact_esp32c6_n4/mpconfigboard.h index 60c38a4106a7..777e62c731bf 100644 --- a/ports/espressif/boards/weact_esp32c6_n4/mpconfigboard.h +++ b/ports/espressif/boards/weact_esp32c6_n4/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Board setup #define MICROPY_HW_BOARD_NAME "WeAct ESP32-C6 (4MB)" #define MICROPY_HW_MCU_NAME "ESP32-C6N4" diff --git a/ports/espressif/boards/weact_esp32c6_n8/mpconfigboard.h b/ports/espressif/boards/weact_esp32c6_n8/mpconfigboard.h index 0ebdc2b8b553..a72cf703c3d6 100644 --- a/ports/espressif/boards/weact_esp32c6_n8/mpconfigboard.h +++ b/ports/espressif/boards/weact_esp32c6_n8/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Board setup #define MICROPY_HW_BOARD_NAME "WeAct ESP32-C6 (8MB)" #define MICROPY_HW_MCU_NAME "ESP32-C6N4" diff --git a/ports/espressif/boards/wemos_lolin32_lite/mpconfigboard.h b/ports/espressif/boards/wemos_lolin32_lite/mpconfigboard.h index 13b73696e9b1..6a9f03571569 100644 --- a/ports/espressif/boards/wemos_lolin32_lite/mpconfigboard.h +++ b/ports/espressif/boards/wemos_lolin32_lite/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "WeMos LOLIN32 Lite" diff --git a/ports/espressif/boards/yd_esp32_s3_n16r8/mpconfigboard.h b/ports/espressif/boards/yd_esp32_s3_n16r8/mpconfigboard.h index cacd7149c20f..730eb4438077 100644 --- a/ports/espressif/boards/yd_esp32_s3_n16r8/mpconfigboard.h +++ b/ports/espressif/boards/yd_esp32_s3_n16r8/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "VCC-GND YD-ESP32-S3 (N16R8)" #define MICROPY_HW_MCU_NAME "ESP32S3" diff --git a/ports/espressif/boards/yd_esp32_s3_n8r8/mpconfigboard.h b/ports/espressif/boards/yd_esp32_s3_n8r8/mpconfigboard.h index d3578cf1e948..b2b39a2b9464 100644 --- a/ports/espressif/boards/yd_esp32_s3_n8r8/mpconfigboard.h +++ b/ports/espressif/boards/yd_esp32_s3_n8r8/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "VCC-GND YD-ESP32-S3 (N8R8)" #define MICROPY_HW_MCU_NAME "ESP32S3" diff --git a/ports/espressif/common-hal/audiobusio/PDMIn.h b/ports/espressif/common-hal/audiobusio/PDMIn.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/ports/espressif/common-hal/audiobusio/PDMIn.h +++ b/ports/espressif/common-hal/audiobusio/PDMIn.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/ports/espressif/common-hal/dotclockframebuffer/__init__.h b/ports/espressif/common-hal/dotclockframebuffer/__init__.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/ports/espressif/common-hal/dotclockframebuffer/__init__.h +++ b/ports/espressif/common-hal/dotclockframebuffer/__init__.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/ports/espressif/common-hal/rgbmatrix/__init__.h b/ports/espressif/common-hal/rgbmatrix/__init__.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/ports/espressif/common-hal/rgbmatrix/__init__.h +++ b/ports/espressif/common-hal/rgbmatrix/__init__.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/ports/espressif/common-hal/socketpool/__init__.h b/ports/espressif/common-hal/socketpool/__init__.h index c72cd4ada506..fd356b87050f 100644 --- a/ports/espressif/common-hal/socketpool/__init__.h +++ b/ports/espressif/common-hal/socketpool/__init__.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_SOCKETPOOL___INIT___H #define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_SOCKETPOOL___INIT___H diff --git a/ports/espressif/qstrdefsport.h b/ports/espressif/qstrdefsport.h index b0f5566fabf2..9ff78060068f 100644 --- a/ports/espressif/qstrdefsport.h +++ b/ports/espressif/qstrdefsport.h @@ -4,5 +4,7 @@ // // SPDX-License-Identifier: MIT +#pragma once + // qstrs specific to this port // *FORMAT-OFF* diff --git a/ports/litex/background.h b/ports/litex/background.h index c9899b50e30f..c2d984756784 100644 --- a/ports/litex/background.h +++ b/ports/litex/background.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #ifndef MICROPY_INCLUDED_LITEX_BACKGROUND_H #define MICROPY_INCLUDED_LITEX_BACKGROUND_H diff --git a/ports/litex/boards/fomu/mpconfigboard.h b/ports/litex/boards/fomu/mpconfigboard.h index c39bdf90e625..497809110ed7 100644 --- a/ports/litex/boards/fomu/mpconfigboard.h +++ b/ports/litex/boards/fomu/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Fomu" diff --git a/ports/litex/qstrdefsport.h b/ports/litex/qstrdefsport.h index b0f5566fabf2..9ff78060068f 100644 --- a/ports/litex/qstrdefsport.h +++ b/ports/litex/qstrdefsport.h @@ -4,5 +4,7 @@ // // SPDX-License-Identifier: MIT +#pragma once + // qstrs specific to this port // *FORMAT-OFF* diff --git a/ports/mimxrt10xx/background.h b/ports/mimxrt10xx/background.h index 138a5fc61855..7d7df48865ca 100644 --- a/ports/mimxrt10xx/background.h +++ b/ports/mimxrt10xx/background.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #ifndef MICROPY_INCLUDED_MIMXRT10XX_BACKGROUND_H #define MICROPY_INCLUDED_MIMXRT10XX_BACKGROUND_H diff --git a/ports/mimxrt10xx/boards/adafruit_metro_m7_1011_sd/mpconfigboard.h b/ports/mimxrt10xx/boards/adafruit_metro_m7_1011_sd/mpconfigboard.h index dd18b11f35d6..1fe72385d485 100644 --- a/ports/mimxrt10xx/boards/adafruit_metro_m7_1011_sd/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/adafruit_metro_m7_1011_sd/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Metro MIMXRT1011" #define MICROPY_HW_MCU_NAME "IMXRT1011DAE5A" diff --git a/ports/mimxrt10xx/boards/board.h b/ports/mimxrt10xx/boards/board.h index 7f79085c9157..3da19aa1a55c 100644 --- a/ports/mimxrt10xx/boards/board.h +++ b/ports/mimxrt10xx/boards/board.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "mpconfigboard.h" #define XIP_BOOT_HEADER_ENABLE (1) diff --git a/ports/mimxrt10xx/boards/feather_m7_1011/mpconfigboard.h b/ports/mimxrt10xx/boards/feather_m7_1011/mpconfigboard.h index c582072c38f6..70256d08a767 100644 --- a/ports/mimxrt10xx/boards/feather_m7_1011/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/feather_m7_1011/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Feather MIMXRT1011" #define MICROPY_HW_MCU_NAME "IMXRT1011DAE5A" diff --git a/ports/mimxrt10xx/boards/feather_mimxrt1011/mpconfigboard.h b/ports/mimxrt10xx/boards/feather_mimxrt1011/mpconfigboard.h index 31885d2bae4d..6ef64f1bbea8 100644 --- a/ports/mimxrt10xx/boards/feather_mimxrt1011/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/feather_mimxrt1011/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Feather MIMXRT1011" #define MICROPY_HW_MCU_NAME "IMXRT1011DAE5A" diff --git a/ports/mimxrt10xx/boards/feather_mimxrt1062/mpconfigboard.h b/ports/mimxrt10xx/boards/feather_mimxrt1062/mpconfigboard.h index 82d10dc8f092..2ca0c21cbb43 100644 --- a/ports/mimxrt10xx/boards/feather_mimxrt1062/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/feather_mimxrt1062/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Feather MIMXRT1062" #define MICROPY_HW_MCU_NAME "IMXRT1062DVJ6A" diff --git a/ports/mimxrt10xx/boards/imxrt1010_evk/mpconfigboard.h b/ports/mimxrt10xx/boards/imxrt1010_evk/mpconfigboard.h index 9e9e4756e1f9..9a3603127296 100644 --- a/ports/mimxrt10xx/boards/imxrt1010_evk/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/imxrt1010_evk/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "IMXRT1010-EVK" #define MICROPY_HW_MCU_NAME "IMXRT1011DAE5A" diff --git a/ports/mimxrt10xx/boards/imxrt1015_evk/mpconfigboard.h b/ports/mimxrt10xx/boards/imxrt1015_evk/mpconfigboard.h index fe731dec0a4f..867501c5879b 100644 --- a/ports/mimxrt10xx/boards/imxrt1015_evk/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/imxrt1015_evk/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "IMXRT1015-EVK" #define MICROPY_HW_MCU_NAME "IMXRT1015DAF5A" diff --git a/ports/mimxrt10xx/boards/imxrt1020_evk/mpconfigboard.h b/ports/mimxrt10xx/boards/imxrt1020_evk/mpconfigboard.h index cebe7ef0ac22..ca692d8fdd70 100644 --- a/ports/mimxrt10xx/boards/imxrt1020_evk/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/imxrt1020_evk/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "iMX RT 1020 EVK" #define MICROPY_HW_MCU_NAME "IMXRT1021DAG5A" diff --git a/ports/mimxrt10xx/boards/imxrt1040_evk/mpconfigboard.h b/ports/mimxrt10xx/boards/imxrt1040_evk/mpconfigboard.h index cd1a83ea8399..f0271b55371f 100644 --- a/ports/mimxrt10xx/boards/imxrt1040_evk/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/imxrt1040_evk/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "iMX RT 1040 EVK" #define MICROPY_HW_MCU_NAME "IMXRT1042XJM5B" diff --git a/ports/mimxrt10xx/boards/imxrt1050_evkb/mpconfigboard.h b/ports/mimxrt10xx/boards/imxrt1050_evkb/mpconfigboard.h index c8669e74fa3c..aa2f10fb173d 100644 --- a/ports/mimxrt10xx/boards/imxrt1050_evkb/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/imxrt1050_evkb/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "iMX RT 1050 EVKB" #define MICROPY_HW_MCU_NAME "IMXRT1052DVL6B" diff --git a/ports/mimxrt10xx/boards/imxrt1060_evk/mpconfigboard.h b/ports/mimxrt10xx/boards/imxrt1060_evk/mpconfigboard.h index 70434e12c764..8c090e2941b0 100644 --- a/ports/mimxrt10xx/boards/imxrt1060_evk/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/imxrt1060_evk/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "iMX RT 1060 EVK" #define MICROPY_HW_MCU_NAME "IMXRT1062DVJ6A" diff --git a/ports/mimxrt10xx/boards/imxrt1060_evkb/mpconfigboard.h b/ports/mimxrt10xx/boards/imxrt1060_evkb/mpconfigboard.h index d73dd243491c..6286c2e545c7 100644 --- a/ports/mimxrt10xx/boards/imxrt1060_evkb/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/imxrt1060_evkb/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "iMX RT 1060 EVKB" #define MICROPY_HW_MCU_NAME "IMXRT1062DVJ6A" diff --git a/ports/mimxrt10xx/boards/metro_m7_1011/mpconfigboard.h b/ports/mimxrt10xx/boards/metro_m7_1011/mpconfigboard.h index dd18b11f35d6..1fe72385d485 100644 --- a/ports/mimxrt10xx/boards/metro_m7_1011/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/metro_m7_1011/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Metro MIMXRT1011" #define MICROPY_HW_MCU_NAME "IMXRT1011DAE5A" diff --git a/ports/mimxrt10xx/boards/sparkfun_teensy_micromod/mpconfigboard.h b/ports/mimxrt10xx/boards/sparkfun_teensy_micromod/mpconfigboard.h index 5fc2889a066f..4fbf0a302a9c 100644 --- a/ports/mimxrt10xx/boards/sparkfun_teensy_micromod/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/sparkfun_teensy_micromod/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "SparkFun Teensy MicroMod Processor" #define MICROPY_HW_MCU_NAME "IMXRT1062DVL6A" diff --git a/ports/mimxrt10xx/boards/teensy40/mpconfigboard.h b/ports/mimxrt10xx/boards/teensy40/mpconfigboard.h index 4d89446dfd0c..e7565d64438f 100644 --- a/ports/mimxrt10xx/boards/teensy40/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/teensy40/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Teensy 4.0" #define MICROPY_HW_MCU_NAME "IMXRT1062DVJ6A" diff --git a/ports/mimxrt10xx/boards/teensy41/mpconfigboard.h b/ports/mimxrt10xx/boards/teensy41/mpconfigboard.h index c0b807321d9e..66329bbc88c9 100644 --- a/ports/mimxrt10xx/boards/teensy41/mpconfigboard.h +++ b/ports/mimxrt10xx/boards/teensy41/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Teensy 4.1" #define MICROPY_HW_MCU_NAME "IMXRT1062DVJ6A" diff --git a/ports/mimxrt10xx/common-hal/audiobusio/PDMIn.h b/ports/mimxrt10xx/common-hal/audiobusio/PDMIn.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/ports/mimxrt10xx/common-hal/audiobusio/PDMIn.h +++ b/ports/mimxrt10xx/common-hal/audiobusio/PDMIn.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/ports/mimxrt10xx/common-hal/audiopwmio/__init__.h b/ports/mimxrt10xx/common-hal/audiopwmio/__init__.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/ports/mimxrt10xx/common-hal/audiopwmio/__init__.h +++ b/ports/mimxrt10xx/common-hal/audiopwmio/__init__.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/ports/mimxrt10xx/common-hal/rotaryio/__init__.h b/ports/mimxrt10xx/common-hal/rotaryio/__init__.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/ports/mimxrt10xx/common-hal/rotaryio/__init__.h +++ b/ports/mimxrt10xx/common-hal/rotaryio/__init__.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/pin_names.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/pin_names.h index 9a635af1f58d..1d6a9cafaf84 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/pin_names.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1011/pin_names.h @@ -6,6 +6,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // define FORMAT_PIN(pin_name) and then include this file. diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/pin_names.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/pin_names.h index aeb46d38a329..ee8b47b61afe 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/pin_names.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1015/pin_names.h @@ -6,6 +6,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // define FORMAT_PIN(pin_name) and then include this file. diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/pin_names.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/pin_names.h index 81f7208f8707..1218cd8ed8db 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/pin_names.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1021/pin_names.h @@ -6,6 +6,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // define FORMAT_PIN(pin_name) and then include this file. diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/pin_names.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/pin_names.h index 330d302f87a7..42f03e02f911 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/pin_names.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1042/pin_names.h @@ -6,6 +6,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // define FORMAT_PIN(pin_name) and then include this file. diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/pin_names.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/pin_names.h index 139c03040965..5483206f94f3 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/pin_names.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1052/pin_names.h @@ -6,6 +6,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // define FORMAT_PIN(pin_name) and then include this file. diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/pin_names.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/pin_names.h index 139c03040965..5483206f94f3 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/pin_names.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1062/pin_names.h @@ -6,6 +6,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // define FORMAT_PIN(pin_name) and then include this file. diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/pin_names.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/pin_names.h index f184c36348a6..ec23d603de7d 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/pin_names.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/MIMXRT1176/pin_names.h @@ -6,6 +6,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // define FORMAT_PIN(pin_name) and then include this file. diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/clocks.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/clocks.h index 0d012cc9035a..d95f30d3e9b0 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/clocks.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/clocks.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + extern uint32_t SystemCoreClock; void clocks_init(void); diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/pin_names.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/pin_names.h index ffaa74edc388..22fa6c572964 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/pin_names.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/pin_names.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // OK to include more than once because FORMAT_PIN may be different. #ifdef MIMXRT1011_SERIES diff --git a/ports/mimxrt10xx/qstrdefsport.h b/ports/mimxrt10xx/qstrdefsport.h index b0f5566fabf2..9ff78060068f 100644 --- a/ports/mimxrt10xx/qstrdefsport.h +++ b/ports/mimxrt10xx/qstrdefsport.h @@ -4,5 +4,7 @@ // // SPDX-License-Identifier: MIT +#pragma once + // qstrs specific to this port // *FORMAT-OFF* diff --git a/ports/nordic/boards/ADM_B_NRF52840_1/mpconfigboard.h b/ports/nordic/boards/ADM_B_NRF52840_1/mpconfigboard.h index 4e4f8a4ba9a2..ff8cc3865191 100644 --- a/ports/nordic/boards/ADM_B_NRF52840_1/mpconfigboard.h +++ b/ports/nordic/boards/ADM_B_NRF52840_1/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "AtelierDuMaker nRF52840 Breakout" diff --git a/ports/nordic/boards/Seeed_XIAO_nRF52840_Sense/mpconfigboard.h b/ports/nordic/boards/Seeed_XIAO_nRF52840_Sense/mpconfigboard.h index 27857a3b8f16..499cdd24a78e 100644 --- a/ports/nordic/boards/Seeed_XIAO_nRF52840_Sense/mpconfigboard.h +++ b/ports/nordic/boards/Seeed_XIAO_nRF52840_Sense/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "Seeed XIAO nRF52840 Sense" diff --git a/ports/nordic/boards/TG-Watch/mpconfigboard.h b/ports/nordic/boards/TG-Watch/mpconfigboard.h index 7bd35c8413b0..8ebb88f6f86b 100644 --- a/ports/nordic/boards/TG-Watch/mpconfigboard.h +++ b/ports/nordic/boards/TG-Watch/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "TG-Watch" diff --git a/ports/nordic/boards/adafruit_led_glasses_nrf52840/mpconfigboard.h b/ports/nordic/boards/adafruit_led_glasses_nrf52840/mpconfigboard.h index 6a2f3fa16f75..d0fea7c721d3 100644 --- a/ports/nordic/boards/adafruit_led_glasses_nrf52840/mpconfigboard.h +++ b/ports/nordic/boards/adafruit_led_glasses_nrf52840/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "Adafruit LED Glasses Driver nRF52840" diff --git a/ports/nordic/boards/aramcon2_badge/mpconfigboard.h b/ports/nordic/boards/aramcon2_badge/mpconfigboard.h index 93576900c89e..4a1d09532d73 100644 --- a/ports/nordic/boards/aramcon2_badge/mpconfigboard.h +++ b/ports/nordic/boards/aramcon2_badge/mpconfigboard.h @@ -4,6 +4,9 @@ // SPDX-FileCopyrightText: Copyright (c) 2021 Benjamin Meisels // // SPDX-License-Identifier: MIT + +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "ARAMCON2 Badge" diff --git a/ports/nordic/boards/aramcon_badge_2019/mpconfigboard.h b/ports/nordic/boards/aramcon_badge_2019/mpconfigboard.h index f9eb2fdbb483..6e98c6e8bb14 100644 --- a/ports/nordic/boards/aramcon_badge_2019/mpconfigboard.h +++ b/ports/nordic/boards/aramcon_badge_2019/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "ARAMCON Badge 2019" diff --git a/ports/nordic/boards/arduino_nano_33_ble/mpconfigboard.h b/ports/nordic/boards/arduino_nano_33_ble/mpconfigboard.h index 16001c5419c1..869c1c71114d 100644 --- a/ports/nordic/boards/arduino_nano_33_ble/mpconfigboard.h +++ b/ports/nordic/boards/arduino_nano_33_ble/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "Arduino Nano 33 BLE" diff --git a/ports/nordic/boards/bastble/mpconfigboard.h b/ports/nordic/boards/bastble/mpconfigboard.h index 3cd817092c68..a71faed7d560 100644 --- a/ports/nordic/boards/bastble/mpconfigboard.h +++ b/ports/nordic/boards/bastble/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "BastBLE" diff --git a/ports/nordic/boards/bless_dev_board_multi_sensor/mpconfigboard.h b/ports/nordic/boards/bless_dev_board_multi_sensor/mpconfigboard.h index 5d9a4a901c8e..64f98a130896 100644 --- a/ports/nordic/boards/bless_dev_board_multi_sensor/mpconfigboard.h +++ b/ports/nordic/boards/bless_dev_board_multi_sensor/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "BLE-SS dev board Multi Sensor" diff --git a/ports/nordic/boards/bluemicro833/mpconfigboard.h b/ports/nordic/boards/bluemicro833/mpconfigboard.h index 02116360ca84..c440c5c42563 100644 --- a/ports/nordic/boards/bluemicro833/mpconfigboard.h +++ b/ports/nordic/boards/bluemicro833/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "BlueMicro833" diff --git a/ports/nordic/boards/bluemicro840/mpconfigboard.h b/ports/nordic/boards/bluemicro840/mpconfigboard.h index 60ef1e0fc675..a9d8ae8610e1 100644 --- a/ports/nordic/boards/bluemicro840/mpconfigboard.h +++ b/ports/nordic/boards/bluemicro840/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "BlueMicro840" diff --git a/ports/nordic/boards/challenger_840/mpconfigboard.h b/ports/nordic/boards/challenger_840/mpconfigboard.h index 4f1843c75087..84f9c1651f8d 100644 --- a/ports/nordic/boards/challenger_840/mpconfigboard.h +++ b/ports/nordic/boards/challenger_840/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "iLabs Challenger 840" diff --git a/ports/nordic/boards/circuitplayground_bluefruit/mpconfigboard.h b/ports/nordic/boards/circuitplayground_bluefruit/mpconfigboard.h index c30f6598115e..91cf68095d27 100644 --- a/ports/nordic/boards/circuitplayground_bluefruit/mpconfigboard.h +++ b/ports/nordic/boards/circuitplayground_bluefruit/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "Adafruit Circuit Playground Bluefruit" diff --git a/ports/nordic/boards/clue_nrf52840_express/mpconfigboard.h b/ports/nordic/boards/clue_nrf52840_express/mpconfigboard.h index 71ae82c7627a..316b59f9b516 100644 --- a/ports/nordic/boards/clue_nrf52840_express/mpconfigboard.h +++ b/ports/nordic/boards/clue_nrf52840_express/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "Adafruit CLUE nRF52840 Express" diff --git a/ports/nordic/boards/electronut_labs_blip/mpconfigboard.h b/ports/nordic/boards/electronut_labs_blip/mpconfigboard.h index 336ab0d39328..3639b380fa23 100644 --- a/ports/nordic/boards/electronut_labs_blip/mpconfigboard.h +++ b/ports/nordic/boards/electronut_labs_blip/mpconfigboard.h @@ -6,6 +6,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define ELECTRONUT_LABS_PAPYR diff --git a/ports/nordic/boards/electronut_labs_papyr/mpconfigboard.h b/ports/nordic/boards/electronut_labs_papyr/mpconfigboard.h index f77513987980..0fc49dfbfd48 100644 --- a/ports/nordic/boards/electronut_labs_papyr/mpconfigboard.h +++ b/ports/nordic/boards/electronut_labs_papyr/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define ELECTRONUT_LABS_PAPYR diff --git a/ports/nordic/boards/espruino_banglejs2/mpconfigboard.h b/ports/nordic/boards/espruino_banglejs2/mpconfigboard.h index 9d73e765823e..885d17a6397e 100644 --- a/ports/nordic/boards/espruino_banglejs2/mpconfigboard.h +++ b/ports/nordic/boards/espruino_banglejs2/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "Espruino Bangle.js 2" diff --git a/ports/nordic/boards/feather_bluefruit_sense/mpconfigboard.h b/ports/nordic/boards/feather_bluefruit_sense/mpconfigboard.h index fec41463da1a..b0aca947c02c 100644 --- a/ports/nordic/boards/feather_bluefruit_sense/mpconfigboard.h +++ b/ports/nordic/boards/feather_bluefruit_sense/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "Adafruit Feather Bluefruit Sense" diff --git a/ports/nordic/boards/feather_nrf52840_express/mpconfigboard.h b/ports/nordic/boards/feather_nrf52840_express/mpconfigboard.h index 80a4bdcad8b4..6f3d13d96826 100644 --- a/ports/nordic/boards/feather_nrf52840_express/mpconfigboard.h +++ b/ports/nordic/boards/feather_nrf52840_express/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "Adafruit Feather nRF52840 Express" diff --git a/ports/nordic/boards/hiibot_bluefi/mpconfigboard.h b/ports/nordic/boards/hiibot_bluefi/mpconfigboard.h index 778ca0cb4378..afceb4cca1d1 100644 --- a/ports/nordic/boards/hiibot_bluefi/mpconfigboard.h +++ b/ports/nordic/boards/hiibot_bluefi/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "HiiBot BlueFi" diff --git a/ports/nordic/boards/ikigaisense_vita/mpconfigboard.h b/ports/nordic/boards/ikigaisense_vita/mpconfigboard.h index dfbdf7ef0960..d78cd3b78d62 100644 --- a/ports/nordic/boards/ikigaisense_vita/mpconfigboard.h +++ b/ports/nordic/boards/ikigaisense_vita/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "IkigaiSense Vita nRF52840" diff --git a/ports/nordic/boards/itsybitsy_nrf52840_express/mpconfigboard.h b/ports/nordic/boards/itsybitsy_nrf52840_express/mpconfigboard.h index d435b8f58717..e328be1563b9 100644 --- a/ports/nordic/boards/itsybitsy_nrf52840_express/mpconfigboard.h +++ b/ports/nordic/boards/itsybitsy_nrf52840_express/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "Adafruit ItsyBitsy nRF52840 Express" diff --git a/ports/nordic/boards/makerdiary_m60_keyboard/mpconfigboard.h b/ports/nordic/boards/makerdiary_m60_keyboard/mpconfigboard.h index a1b8d9273a17..cf79837b163a 100644 --- a/ports/nordic/boards/makerdiary_m60_keyboard/mpconfigboard.h +++ b/ports/nordic/boards/makerdiary_m60_keyboard/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "Makerdiary M60 Keyboard" diff --git a/ports/nordic/boards/makerdiary_nrf52840_connectkit/mpconfigboard.h b/ports/nordic/boards/makerdiary_nrf52840_connectkit/mpconfigboard.h index e5deb9d9e9a5..84cf75373a6a 100644 --- a/ports/nordic/boards/makerdiary_nrf52840_connectkit/mpconfigboard.h +++ b/ports/nordic/boards/makerdiary_nrf52840_connectkit/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "Makerdiary nRF52840 Connect Kit" diff --git a/ports/nordic/boards/makerdiary_nrf52840_m2_devkit/mpconfigboard.h b/ports/nordic/boards/makerdiary_nrf52840_m2_devkit/mpconfigboard.h index 03d48ac18e24..b519a789f4cd 100644 --- a/ports/nordic/boards/makerdiary_nrf52840_m2_devkit/mpconfigboard.h +++ b/ports/nordic/boards/makerdiary_nrf52840_m2_devkit/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "Makerdiary nRF52840 M.2 Developer Kit" diff --git a/ports/nordic/boards/makerdiary_nrf52840_mdk/mpconfigboard.h b/ports/nordic/boards/makerdiary_nrf52840_mdk/mpconfigboard.h index 8e2a19638510..1eb44b18d28d 100644 --- a/ports/nordic/boards/makerdiary_nrf52840_mdk/mpconfigboard.h +++ b/ports/nordic/boards/makerdiary_nrf52840_mdk/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MAKERDIARYNRF52840MDK diff --git a/ports/nordic/boards/makerdiary_nrf52840_mdk_usb_dongle/mpconfigboard.h b/ports/nordic/boards/makerdiary_nrf52840_mdk_usb_dongle/mpconfigboard.h index 9e40b6591d8a..510f35f7344c 100644 --- a/ports/nordic/boards/makerdiary_nrf52840_mdk_usb_dongle/mpconfigboard.h +++ b/ports/nordic/boards/makerdiary_nrf52840_mdk_usb_dongle/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MAKERDIARY_NRF52840_MDK_DONGLE diff --git a/ports/nordic/boards/metro_nrf52840_express/mpconfigboard.h b/ports/nordic/boards/metro_nrf52840_express/mpconfigboard.h index 430626be9ce9..42f90dbecb5f 100644 --- a/ports/nordic/boards/metro_nrf52840_express/mpconfigboard.h +++ b/ports/nordic/boards/metro_nrf52840_express/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "Adafruit Metro nRF52840 Express" diff --git a/ports/nordic/boards/microbit_v2/mpconfigboard.h b/ports/nordic/boards/microbit_v2/mpconfigboard.h index 4e60a39567b5..94cd28c80192 100644 --- a/ports/nordic/boards/microbit_v2/mpconfigboard.h +++ b/ports/nordic/boards/microbit_v2/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "micro:bit v2" diff --git a/ports/nordic/boards/nice_nano/mpconfigboard.h b/ports/nordic/boards/nice_nano/mpconfigboard.h index f8cf85e13827..2e21ccea497b 100644 --- a/ports/nordic/boards/nice_nano/mpconfigboard.h +++ b/ports/nordic/boards/nice_nano/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "nice!nano" diff --git a/ports/nordic/boards/ohs2020_badge/mpconfigboard.h b/ports/nordic/boards/ohs2020_badge/mpconfigboard.h index 4118b0db6761..037907ae8a12 100644 --- a/ports/nordic/boards/ohs2020_badge/mpconfigboard.h +++ b/ports/nordic/boards/ohs2020_badge/mpconfigboard.h @@ -6,6 +6,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "Open Hardware Summit 2020 Badge" diff --git a/ports/nordic/boards/particle_argon/mpconfigboard.h b/ports/nordic/boards/particle_argon/mpconfigboard.h index 7456505cbf9d..bdb0d7c73eb1 100644 --- a/ports/nordic/boards/particle_argon/mpconfigboard.h +++ b/ports/nordic/boards/particle_argon/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "Particle Argon" diff --git a/ports/nordic/boards/particle_boron/mpconfigboard.h b/ports/nordic/boards/particle_boron/mpconfigboard.h index 2f012010a025..7dbdeb77160c 100644 --- a/ports/nordic/boards/particle_boron/mpconfigboard.h +++ b/ports/nordic/boards/particle_boron/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "Particle Boron" diff --git a/ports/nordic/boards/particle_xenon/mpconfigboard.h b/ports/nordic/boards/particle_xenon/mpconfigboard.h index 8ac32c3aae36..01f4919c4c30 100644 --- a/ports/nordic/boards/particle_xenon/mpconfigboard.h +++ b/ports/nordic/boards/particle_xenon/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "Particle Xenon" diff --git a/ports/nordic/boards/pca10056/mpconfigboard.h b/ports/nordic/boards/pca10056/mpconfigboard.h index bd5c66758929..4be1f0aa05f0 100644 --- a/ports/nordic/boards/pca10056/mpconfigboard.h +++ b/ports/nordic/boards/pca10056/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "PCA10056 nRF52840-DK" diff --git a/ports/nordic/boards/pca10059/mpconfigboard.h b/ports/nordic/boards/pca10059/mpconfigboard.h index 5c60cab8bc27..9730a9c86b39 100644 --- a/ports/nordic/boards/pca10059/mpconfigboard.h +++ b/ports/nordic/boards/pca10059/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "PCA10059 nRF52840 Dongle" #define MICROPY_HW_MCU_NAME "nRF52840" diff --git a/ports/nordic/boards/pca10100/mpconfigboard.h b/ports/nordic/boards/pca10100/mpconfigboard.h index b62cd56bc990..8e8e348954da 100644 --- a/ports/nordic/boards/pca10100/mpconfigboard.h +++ b/ports/nordic/boards/pca10100/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "PCA10100 nRF52833 DK" diff --git a/ports/nordic/boards/pctel_wsc_1450/mpconfigboard.h b/ports/nordic/boards/pctel_wsc_1450/mpconfigboard.h index 94beb7b3503d..bcc3eb105786 100644 --- a/ports/nordic/boards/pctel_wsc_1450/mpconfigboard.h +++ b/ports/nordic/boards/pctel_wsc_1450/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define PCTELWSC1450 diff --git a/ports/nordic/boards/pillbug/mpconfigboard.h b/ports/nordic/boards/pillbug/mpconfigboard.h index d952b6160aa7..8668680d5655 100644 --- a/ports/nordic/boards/pillbug/mpconfigboard.h +++ b/ports/nordic/boards/pillbug/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "PillBug" diff --git a/ports/nordic/boards/pitaya_go/mpconfigboard.h b/ports/nordic/boards/pitaya_go/mpconfigboard.h index a41be6f089ec..b765c3a4d583 100644 --- a/ports/nordic/boards/pitaya_go/mpconfigboard.h +++ b/ports/nordic/boards/pitaya_go/mpconfigboard.h @@ -6,6 +6,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MAKERDIARYPITAYAGO diff --git a/ports/nordic/boards/raytac_mdbt50q-db-40/mpconfigboard.h b/ports/nordic/boards/raytac_mdbt50q-db-40/mpconfigboard.h index 4eac8645294b..d7c1fa5fd48b 100644 --- a/ports/nordic/boards/raytac_mdbt50q-db-40/mpconfigboard.h +++ b/ports/nordic/boards/raytac_mdbt50q-db-40/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "MDBT50Q-DB-40" #define MICROPY_HW_MCU_NAME "nRF52840" diff --git a/ports/nordic/boards/raytac_mdbt50q-rx/mpconfigboard.h b/ports/nordic/boards/raytac_mdbt50q-rx/mpconfigboard.h index 589f1918e6ec..2cc5f4abcda9 100644 --- a/ports/nordic/boards/raytac_mdbt50q-rx/mpconfigboard.h +++ b/ports/nordic/boards/raytac_mdbt50q-rx/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "MDBT50Q-RX Dongle" #define MICROPY_HW_MCU_NAME "nRF52840" diff --git a/ports/nordic/boards/simmel/mpconfigboard.h b/ports/nordic/boards/simmel/mpconfigboard.h index 88abeca62d14..b8b3f5786133 100644 --- a/ports/nordic/boards/simmel/mpconfigboard.h +++ b/ports/nordic/boards/simmel/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "Simmel" diff --git a/ports/nordic/boards/sparkfun_nrf52840_micromod/mpconfigboard.h b/ports/nordic/boards/sparkfun_nrf52840_micromod/mpconfigboard.h index 1ebc7d30c860..d0d77e3ab0ac 100644 --- a/ports/nordic/boards/sparkfun_nrf52840_micromod/mpconfigboard.h +++ b/ports/nordic/boards/sparkfun_nrf52840_micromod/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "SparkFun MicroMod nRF52840 Processor" diff --git a/ports/nordic/boards/sparkfun_nrf52840_mini/mpconfigboard.h b/ports/nordic/boards/sparkfun_nrf52840_mini/mpconfigboard.h index 9d2238014351..4fd171086831 100644 --- a/ports/nordic/boards/sparkfun_nrf52840_mini/mpconfigboard.h +++ b/ports/nordic/boards/sparkfun_nrf52840_mini/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "SparkFun Pro nRF52840 Mini" diff --git a/ports/nordic/boards/ssci_isp1807_dev_board/mpconfigboard.h b/ports/nordic/boards/ssci_isp1807_dev_board/mpconfigboard.h index 82f323c78713..03bddbc949f2 100644 --- a/ports/nordic/boards/ssci_isp1807_dev_board/mpconfigboard.h +++ b/ports/nordic/boards/ssci_isp1807_dev_board/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "SSCI ISP1807 Dev Board" diff --git a/ports/nordic/boards/ssci_isp1807_micro_board/mpconfigboard.h b/ports/nordic/boards/ssci_isp1807_micro_board/mpconfigboard.h index 0bcf30389430..82621740f103 100644 --- a/ports/nordic/boards/ssci_isp1807_micro_board/mpconfigboard.h +++ b/ports/nordic/boards/ssci_isp1807_micro_board/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "SSCI ISP1807 Micro Board" diff --git a/ports/nordic/boards/supermini_nrf52840/mpconfigboard.h b/ports/nordic/boards/supermini_nrf52840/mpconfigboard.h index 77c5e8576ee6..d67857ef34f7 100644 --- a/ports/nordic/boards/supermini_nrf52840/mpconfigboard.h +++ b/ports/nordic/boards/supermini_nrf52840/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "SuperMini NRF52840" diff --git a/ports/nordic/boards/teknikio_bluebird/mpconfigboard.h b/ports/nordic/boards/teknikio_bluebird/mpconfigboard.h index b011b03fc3b5..308193153a10 100644 --- a/ports/nordic/boards/teknikio_bluebird/mpconfigboard.h +++ b/ports/nordic/boards/teknikio_bluebird/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // https://github.com/Teknikio/TKInventionBuilderFramework diff --git a/ports/nordic/boards/tinkeringtech_scoutmakes_azul/mpconfigboard.h b/ports/nordic/boards/tinkeringtech_scoutmakes_azul/mpconfigboard.h index c2d00d864328..d2b4994de89c 100644 --- a/ports/nordic/boards/tinkeringtech_scoutmakes_azul/mpconfigboard.h +++ b/ports/nordic/boards/tinkeringtech_scoutmakes_azul/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "TinkeringTech ScoutMakes Azul" diff --git a/ports/nordic/boards/warmbit_bluepixel/mpconfigboard.h b/ports/nordic/boards/warmbit_bluepixel/mpconfigboard.h index d7b02d1ab6df..71743c316de1 100644 --- a/ports/nordic/boards/warmbit_bluepixel/mpconfigboard.h +++ b/ports/nordic/boards/warmbit_bluepixel/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx/hal/nrf_gpio.h" #define MICROPY_HW_BOARD_NAME "WarmBit BluePixel nRF52840" diff --git a/ports/nordic/common-hal/alarm/coproc/CoprocAlarm.h b/ports/nordic/common-hal/alarm/coproc/CoprocAlarm.h index a7f2dfca2b67..f8921574865a 100644 --- a/ports/nordic/common-hal/alarm/coproc/CoprocAlarm.h +++ b/ports/nordic/common-hal/alarm/coproc/CoprocAlarm.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // empty file diff --git a/ports/nordic/common-hal/watchdog/__init__.h b/ports/nordic/common-hal/watchdog/__init__.h index 331e7344620d..3df378fbadcf 100644 --- a/ports/nordic/common-hal/watchdog/__init__.h +++ b/ports/nordic/common-hal/watchdog/__init__.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_WATCHDOG___INIT___H #define MICROPY_INCLUDED_NRF_COMMON_HAL_WATCHDOG___INIT___H diff --git a/ports/nordic/peripherals/nrf/cache.h b/ports/nordic/peripherals/nrf/cache.h index 5c9bd35b7076..f3aa8b40c0dd 100644 --- a/ports/nordic/peripherals/nrf/cache.h +++ b/ports/nordic/peripherals/nrf/cache.h @@ -4,5 +4,7 @@ // // SPDX-License-Identifier: MIT +#pragma once + void nrf_peripherals_disable_and_clear_cache(void); void nrf_peripherals_enable_cache(void); diff --git a/ports/nordic/peripherals/nrf/clocks.h b/ports/nordic/peripherals/nrf/clocks.h index 986c35561cc4..4ab51c5868eb 100644 --- a/ports/nordic/peripherals/nrf/clocks.h +++ b/ports/nordic/peripherals/nrf/clocks.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + void nrf_peripherals_clocks_init(void); diff --git a/ports/nordic/peripherals/nrf/nvm.h b/ports/nordic/peripherals/nrf/nvm.h index 3137c5f3ee15..aff980944699 100644 --- a/ports/nordic/peripherals/nrf/nvm.h +++ b/ports/nordic/peripherals/nrf/nvm.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define FLASH_PAGE_SIZE (4096) #if BLUETOOTH_SD diff --git a/ports/nordic/peripherals/nrf/power.h b/ports/nordic/peripherals/nrf/power.h index ba6bb8a56134..6f8c31f08d31 100644 --- a/ports/nordic/peripherals/nrf/power.h +++ b/ports/nordic/peripherals/nrf/power.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + void nrf_peripherals_power_init(void); diff --git a/ports/nordic/peripherals/nrf/timers.h b/ports/nordic/peripherals/nrf/timers.h index f8ae59ac9625..44b8bc1bf04f 100644 --- a/ports/nordic/peripherals/nrf/timers.h +++ b/ports/nordic/peripherals/nrf/timers.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "nrfx.h" #include "nrfx_timer.h" diff --git a/ports/nordic/qstrdefsport.h b/ports/nordic/qstrdefsport.h index 57b5815583d4..b8cd1fd9af90 100644 --- a/ports/nordic/qstrdefsport.h +++ b/ports/nordic/qstrdefsport.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // qstrs specific to this port diff --git a/ports/nordic/supervisor/qspi_flash.h b/ports/nordic/supervisor/qspi_flash.h index 556f03799670..35c31298a0d4 100644 --- a/ports/nordic/supervisor/qspi_flash.h +++ b/ports/nordic/supervisor/qspi_flash.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + extern void qspi_flash_enter_sleep(void); extern void qspi_flash_exit_sleep(void); extern void qspi_disable(void); diff --git a/ports/raspberrypi/boards/0xcb_helios/mpconfigboard.h b/ports/raspberrypi/boards/0xcb_helios/mpconfigboard.h index 91f7e3747237..dd156781edce 100644 --- a/ports/raspberrypi/boards/0xcb_helios/mpconfigboard.h +++ b/ports/raspberrypi/boards/0xcb_helios/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "0xCB Helios" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/0xcb_helios/pico-sdk-configboard.h b/ports/raspberrypi/boards/0xcb_helios/pico-sdk-configboard.h index 1d095f07d985..c3af1ed4084a 100644 --- a/ports/raspberrypi/boards/0xcb_helios/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/0xcb_helios/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/42keebs_frood/mpconfigboard.h b/ports/raspberrypi/boards/42keebs_frood/mpconfigboard.h index 554786f33ff8..d81ca7a84586 100644 --- a/ports/raspberrypi/boards/42keebs_frood/mpconfigboard.h +++ b/ports/raspberrypi/boards/42keebs_frood/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "42. Keebs Frood" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/42keebs_frood/pico-sdk-configboard.h b/ports/raspberrypi/boards/42keebs_frood/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/42keebs_frood/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/42keebs_frood/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040/mpconfigboard.h index 831a9513cc13..2a47ae53e417 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Feather RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_can/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_can/mpconfigboard.h index 85c83e3bcf1b..5b43e9263ab9 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_can/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_can/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Feather RP2040 CAN" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_can/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_can/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_can/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_can/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/mpconfigboard.h index fcb5aede24b5..713fd34f68d1 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Feather RP2040 DVI" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/mpconfigboard.h index 6b43929194f9..30b25e9adf00 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Feather RP2040 Prop-Maker" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/mpconfigboard.h index 5a58b5ed49a4..eba14ff163de 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Feather RP2040 RFM" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/mpconfigboard.h index 6eed2fa78e6f..670e056363e7 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Feather RP2040 Scorpio" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/mpconfigboard.h index 2d90e4859e4a..c2b276b132b8 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Feather RP2040 ThinkInk" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/mpconfigboard.h index 677d84ca7971..e2b378c52252 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Feather RP2040 USB Host" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_floppsy_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_floppsy_rp2040/mpconfigboard.h index 2305c8bcc3ef..6f41981e2489 100644 --- a/ports/raspberrypi/boards/adafruit_floppsy_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_floppsy_rp2040/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Floppsy RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_floppsy_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_floppsy_rp2040/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/adafruit_floppsy_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_floppsy_rp2040/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/mpconfigboard.h index 689c9ba96bfc..ad5e870f4e73 100644 --- a/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit ItsyBitsy RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_kb2040/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_kb2040/mpconfigboard.h index 963bbb27c05a..89c76d74ba7e 100644 --- a/ports/raspberrypi/boards/adafruit_kb2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_kb2040/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit KB2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_kb2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_kb2040/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/adafruit_kb2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_kb2040/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_macropad_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_macropad_rp2040/mpconfigboard.h index 7f410ebb4d1e..32ba5284a626 100644 --- a/ports/raspberrypi/boards/adafruit_macropad_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_macropad_rp2040/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Macropad RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_macropad_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_macropad_rp2040/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/adafruit_macropad_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_macropad_rp2040/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_metro_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_metro_rp2040/mpconfigboard.h index 42901d23836f..4242599354c3 100644 --- a/ports/raspberrypi/boards/adafruit_metro_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_metro_rp2040/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit Metro RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_metro_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_metro_rp2040/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/adafruit_metro_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_metro_rp2040/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_qt2040_trinkey/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_qt2040_trinkey/mpconfigboard.h index 27ebadda23f9..5f7829791b70 100644 --- a/ports/raspberrypi/boards/adafruit_qt2040_trinkey/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_qt2040_trinkey/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit QT2040 Trinkey" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_qt2040_trinkey/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_qt2040_trinkey/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/adafruit_qt2040_trinkey/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_qt2040_trinkey/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/adafruit_qtpy_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_qtpy_rp2040/mpconfigboard.h index 972bfd34debc..7e5f679c07de 100644 --- a/ports/raspberrypi/boards/adafruit_qtpy_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/adafruit_qtpy_rp2040/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Adafruit QT Py RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/adafruit_qtpy_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_qtpy_rp2040/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/adafruit_qtpy_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/adafruit_qtpy_rp2040/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/arduino_nano_rp2040_connect/mpconfigboard.h b/ports/raspberrypi/boards/arduino_nano_rp2040_connect/mpconfigboard.h index aec4591c9abb..76eb2180b18a 100644 --- a/ports/raspberrypi/boards/arduino_nano_rp2040_connect/mpconfigboard.h +++ b/ports/raspberrypi/boards/arduino_nano_rp2040_connect/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Arduino Nano RP2040 Connect" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/arduino_nano_rp2040_connect/pico-sdk-configboard.h b/ports/raspberrypi/boards/arduino_nano_rp2040_connect/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/arduino_nano_rp2040_connect/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/arduino_nano_rp2040_connect/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/boardsource_blok/mpconfigboard.h b/ports/raspberrypi/boards/boardsource_blok/mpconfigboard.h index eb75d69b3dc6..0929427eeda0 100644 --- a/ports/raspberrypi/boards/boardsource_blok/mpconfigboard.h +++ b/ports/raspberrypi/boards/boardsource_blok/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "BLOK" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/boardsource_blok/pico-sdk-configboard.h b/ports/raspberrypi/boards/boardsource_blok/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/boardsource_blok/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/boardsource_blok/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/breadstick_raspberry/mpconfigboard.h b/ports/raspberrypi/boards/breadstick_raspberry/mpconfigboard.h index 2b3ec7378026..f5c1b85eedab 100644 --- a/ports/raspberrypi/boards/breadstick_raspberry/mpconfigboard.h +++ b/ports/raspberrypi/boards/breadstick_raspberry/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Raspberry Breadstick" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/breadstick_raspberry/pico-sdk-configboard.h b/ports/raspberrypi/boards/breadstick_raspberry/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/breadstick_raspberry/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/breadstick_raspberry/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/bwshockley_figpi/mpconfigboard.h b/ports/raspberrypi/boards/bwshockley_figpi/mpconfigboard.h index 9abfdc9a723f..e937c8ba21da 100644 --- a/ports/raspberrypi/boards/bwshockley_figpi/mpconfigboard.h +++ b/ports/raspberrypi/boards/bwshockley_figpi/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Fig Pi" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/bwshockley_figpi/pico-sdk-configboard.h b/ports/raspberrypi/boards/bwshockley_figpi/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/bwshockley_figpi/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/bwshockley_figpi/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/mpconfigboard.h b/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/mpconfigboard.h index 809748ca5565..7c98280fee98 100644 --- a/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/mpconfigboard.h +++ b/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Challenger NB RP2040 WiFi" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/pico-sdk-configboard.h b/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/challenger_rp2040_lora/mpconfigboard.h b/ports/raspberrypi/boards/challenger_rp2040_lora/mpconfigboard.h index 241131bc3375..6442593a6676 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_lora/mpconfigboard.h +++ b/ports/raspberrypi/boards/challenger_rp2040_lora/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Challenger RP2040 LoRa" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/challenger_rp2040_lora/pico-sdk-configboard.h b/ports/raspberrypi/boards/challenger_rp2040_lora/pico-sdk-configboard.h index 8cdca16a13e7..b579b60b887b 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_lora/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/challenger_rp2040_lora/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/challenger_rp2040_lte/mpconfigboard.h b/ports/raspberrypi/boards/challenger_rp2040_lte/mpconfigboard.h index fb2f0966a9f3..2acd7b69666e 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_lte/mpconfigboard.h +++ b/ports/raspberrypi/boards/challenger_rp2040_lte/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Challenger RP2040 LTE" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/challenger_rp2040_lte/pico-sdk-configboard.h b/ports/raspberrypi/boards/challenger_rp2040_lte/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_lte/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/challenger_rp2040_lte/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/challenger_rp2040_sdrtc/mpconfigboard.h b/ports/raspberrypi/boards/challenger_rp2040_sdrtc/mpconfigboard.h index cee09737b312..06d7deb4fd36 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_sdrtc/mpconfigboard.h +++ b/ports/raspberrypi/boards/challenger_rp2040_sdrtc/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Challenger RP2040 SD/RTC" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/challenger_rp2040_sdrtc/pico-sdk-configboard.h b/ports/raspberrypi/boards/challenger_rp2040_sdrtc/pico-sdk-configboard.h index 8cdca16a13e7..b579b60b887b 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_sdrtc/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/challenger_rp2040_sdrtc/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/challenger_rp2040_subghz/mpconfigboard.h b/ports/raspberrypi/boards/challenger_rp2040_subghz/mpconfigboard.h index 3f6f8bc49e15..e4fd7b9fb728 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_subghz/mpconfigboard.h +++ b/ports/raspberrypi/boards/challenger_rp2040_subghz/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Challenger RP2040 SubGHz" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/challenger_rp2040_subghz/pico-sdk-configboard.h b/ports/raspberrypi/boards/challenger_rp2040_subghz/pico-sdk-configboard.h index 8cdca16a13e7..b579b60b887b 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_subghz/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/challenger_rp2040_subghz/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/challenger_rp2040_wifi/mpconfigboard.h b/ports/raspberrypi/boards/challenger_rp2040_wifi/mpconfigboard.h index efba5fc0d593..644d6da5927f 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_wifi/mpconfigboard.h +++ b/ports/raspberrypi/boards/challenger_rp2040_wifi/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Challenger RP2040 WiFi" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/challenger_rp2040_wifi/pico-sdk-configboard.h b/ports/raspberrypi/boards/challenger_rp2040_wifi/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_wifi/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/challenger_rp2040_wifi/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/mpconfigboard.h b/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/mpconfigboard.h index 42bed2502038..8acd2fc22124 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/mpconfigboard.h +++ b/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Challenger RP2040 WiFi/BLE" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/pico-sdk-configboard.h b/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/cosmo_pico/mpconfigboard.h b/ports/raspberrypi/boards/cosmo_pico/mpconfigboard.h index 194af6d2a5f0..829c60a2cf69 100644 --- a/ports/raspberrypi/boards/cosmo_pico/mpconfigboard.h +++ b/ports/raspberrypi/boards/cosmo_pico/mpconfigboard.h @@ -4,5 +4,7 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "COSMO-Pico" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/cosmo_pico/pico-sdk-configboard.h b/ports/raspberrypi/boards/cosmo_pico/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/cosmo_pico/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/cosmo_pico/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/cytron_edu_pico_w/mpconfigboard.h b/ports/raspberrypi/boards/cytron_edu_pico_w/mpconfigboard.h index 5ebfc3a66973..79b4a0617ced 100644 --- a/ports/raspberrypi/boards/cytron_edu_pico_w/mpconfigboard.h +++ b/ports/raspberrypi/boards/cytron_edu_pico_w/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Cytron EDU PICO W" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/cytron_edu_pico_w/pico-sdk-configboard.h b/ports/raspberrypi/boards/cytron_edu_pico_w/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/cytron_edu_pico_w/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/cytron_edu_pico_w/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/cytron_maker_nano_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/cytron_maker_nano_rp2040/mpconfigboard.h index fc1fed9e4304..0c9abd8788b0 100644 --- a/ports/raspberrypi/boards/cytron_maker_nano_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/cytron_maker_nano_rp2040/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Cytron Maker Nano RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/cytron_maker_nano_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/cytron_maker_nano_rp2040/pico-sdk-configboard.h index 5cb0e226e721..ff84d8826d9a 100644 --- a/ports/raspberrypi/boards/cytron_maker_nano_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/cytron_maker_nano_rp2040/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/cytron_maker_pi_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/cytron_maker_pi_rp2040/mpconfigboard.h index 923f79c652f1..cb3adabb958e 100644 --- a/ports/raspberrypi/boards/cytron_maker_pi_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/cytron_maker_pi_rp2040/mpconfigboard.h @@ -4,5 +4,7 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Cytron Maker Pi RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/cytron_maker_pi_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/cytron_maker_pi_rp2040/pico-sdk-configboard.h index 36894c8103df..3849c55e69c5 100644 --- a/ports/raspberrypi/boards/cytron_maker_pi_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/cytron_maker_pi_rp2040/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/cytron_maker_uno_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/cytron_maker_uno_rp2040/mpconfigboard.h index 4a97257b761e..34d57e01b1d7 100644 --- a/ports/raspberrypi/boards/cytron_maker_uno_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/cytron_maker_uno_rp2040/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Cytron Maker Uno RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/cytron_maker_uno_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/cytron_maker_uno_rp2040/pico-sdk-configboard.h index 1eca38d1a764..71f243cf0b06 100644 --- a/ports/raspberrypi/boards/cytron_maker_uno_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/cytron_maker_uno_rp2040/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/datanoise_picoadk/mpconfigboard.h b/ports/raspberrypi/boards/datanoise_picoadk/mpconfigboard.h index 1f2b2d690315..089f50b18d08 100644 --- a/ports/raspberrypi/boards/datanoise_picoadk/mpconfigboard.h +++ b/ports/raspberrypi/boards/datanoise_picoadk/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Datanoise PicoADK" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/datanoise_picoadk/pico-sdk-configboard.h b/ports/raspberrypi/boards/datanoise_picoadk/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/datanoise_picoadk/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/datanoise_picoadk/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/e_fidget/mpconfigboard.h b/ports/raspberrypi/boards/e_fidget/mpconfigboard.h index 1aac87bb8823..83a9ba95d940 100644 --- a/ports/raspberrypi/boards/e_fidget/mpconfigboard.h +++ b/ports/raspberrypi/boards/e_fidget/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "E-Fidget" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/e_fidget/pico-sdk-configboard.h b/ports/raspberrypi/boards/e_fidget/pico-sdk-configboard.h index 01d99bc142fc..e7a717226ef3 100644 --- a/ports/raspberrypi/boards/e_fidget/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/e_fidget/pico-sdk-configboard.h @@ -4,5 +4,7 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. #define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64 diff --git a/ports/raspberrypi/boards/elecfreaks_picoed/mpconfigboard.h b/ports/raspberrypi/boards/elecfreaks_picoed/mpconfigboard.h index 94a759a649d9..2c44e0dd80b0 100644 --- a/ports/raspberrypi/boards/elecfreaks_picoed/mpconfigboard.h +++ b/ports/raspberrypi/boards/elecfreaks_picoed/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "ELECFREAKS PICO:ED" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/elecfreaks_picoed/pico-sdk-configboard.h b/ports/raspberrypi/boards/elecfreaks_picoed/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/elecfreaks_picoed/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/elecfreaks_picoed/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/electrolama_minik/mpconfigboard.h b/ports/raspberrypi/boards/electrolama_minik/mpconfigboard.h index 664ccf55c6db..20e16ae070fb 100644 --- a/ports/raspberrypi/boards/electrolama_minik/mpconfigboard.h +++ b/ports/raspberrypi/boards/electrolama_minik/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Electrolama minik" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/electrolama_minik/pico-sdk-configboard.h b/ports/raspberrypi/boards/electrolama_minik/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/electrolama_minik/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/electrolama_minik/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/hack_club_sprig/mpconfigboard.h b/ports/raspberrypi/boards/hack_club_sprig/mpconfigboard.h index 837f67574214..041aca6d45eb 100644 --- a/ports/raspberrypi/boards/hack_club_sprig/mpconfigboard.h +++ b/ports/raspberrypi/boards/hack_club_sprig/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Hack Club Sprig" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/hack_club_sprig/pico-sdk-configboard.h b/ports/raspberrypi/boards/hack_club_sprig/pico-sdk-configboard.h index 9e4a8bfbda79..50b8812775f0 100644 --- a/ports/raspberrypi/boards/hack_club_sprig/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/hack_club_sprig/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/heiafr_picomo_v2/mpconfigboard.h b/ports/raspberrypi/boards/heiafr_picomo_v2/mpconfigboard.h index 72e3210d59d6..53b9ebd13dd0 100644 --- a/ports/raspberrypi/boards/heiafr_picomo_v2/mpconfigboard.h +++ b/ports/raspberrypi/boards/heiafr_picomo_v2/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "HEIA-FR Picomo V2" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/heiafr_picomo_v2/pico-sdk-configboard.h b/ports/raspberrypi/boards/heiafr_picomo_v2/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/heiafr_picomo_v2/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/heiafr_picomo_v2/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/mpconfigboard.h index 583d699f2e3a..9007dbbf127b 100644 --- a/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "EncoderPad RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey18/mpconfigboard.h b/ports/raspberrypi/boards/jpconstantineau_pykey18/mpconfigboard.h index b593e8ba9081..a7a92723cea3 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey18/mpconfigboard.h +++ b/ports/raspberrypi/boards/jpconstantineau_pykey18/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "PyKey 18 Numpad" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey18/pico-sdk-configboard.h b/ports/raspberrypi/boards/jpconstantineau_pykey18/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey18/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/jpconstantineau_pykey18/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey44/mpconfigboard.h b/ports/raspberrypi/boards/jpconstantineau_pykey44/mpconfigboard.h index c43653c7846f..8ddc7247276a 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey44/mpconfigboard.h +++ b/ports/raspberrypi/boards/jpconstantineau_pykey44/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "PyKey 44 Ergo" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey44/pico-sdk-configboard.h b/ports/raspberrypi/boards/jpconstantineau_pykey44/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey44/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/jpconstantineau_pykey44/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey60/mpconfigboard.h b/ports/raspberrypi/boards/jpconstantineau_pykey60/mpconfigboard.h index cfa67ec84c8e..92b235f86645 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey60/mpconfigboard.h +++ b/ports/raspberrypi/boards/jpconstantineau_pykey60/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "PyKey 60" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey60/pico-sdk-configboard.h b/ports/raspberrypi/boards/jpconstantineau_pykey60/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey60/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/jpconstantineau_pykey60/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey87/mpconfigboard.h b/ports/raspberrypi/boards/jpconstantineau_pykey87/mpconfigboard.h index 14aaf2686e60..96f87d831815 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey87/mpconfigboard.h +++ b/ports/raspberrypi/boards/jpconstantineau_pykey87/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "PyKey 87 TKL" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey87/pico-sdk-configboard.h b/ports/raspberrypi/boards/jpconstantineau_pykey87/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey87/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/jpconstantineau_pykey87/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/lilygo_t_display_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/lilygo_t_display_rp2040/mpconfigboard.h index decfca58fce0..bea027271449 100644 --- a/ports/raspberrypi/boards/lilygo_t_display_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/lilygo_t_display_rp2040/mpconfigboard.h @@ -4,5 +4,7 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "LILYGO T-DISPLAY" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/lilygo_t_display_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/lilygo_t_display_rp2040/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/lilygo_t_display_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/lilygo_t_display_rp2040/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/maple_elite_pi/mpconfigboard.h b/ports/raspberrypi/boards/maple_elite_pi/mpconfigboard.h index ce2643d44334..10f4f5812326 100644 --- a/ports/raspberrypi/boards/maple_elite_pi/mpconfigboard.h +++ b/ports/raspberrypi/boards/maple_elite_pi/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Maple Computing Elite-Pi" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/maple_elite_pi/pico-sdk-configboard.h b/ports/raspberrypi/boards/maple_elite_pi/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/maple_elite_pi/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/maple_elite_pi/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/melopero_shake_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/melopero_shake_rp2040/mpconfigboard.h index 4fb2fc2ac735..d377b6100ba4 100644 --- a/ports/raspberrypi/boards/melopero_shake_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/melopero_shake_rp2040/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Melopero Shake RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/melopero_shake_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/melopero_shake_rp2040/pico-sdk-configboard.h index 01d99bc142fc..e7a717226ef3 100644 --- a/ports/raspberrypi/boards/melopero_shake_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/melopero_shake_rp2040/pico-sdk-configboard.h @@ -4,5 +4,7 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. #define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64 diff --git a/ports/raspberrypi/boards/nullbits_bit_c_pro/mpconfigboard.h b/ports/raspberrypi/boards/nullbits_bit_c_pro/mpconfigboard.h index fe658628cf23..9ac0a3ff0cfe 100644 --- a/ports/raspberrypi/boards/nullbits_bit_c_pro/mpconfigboard.h +++ b/ports/raspberrypi/boards/nullbits_bit_c_pro/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "nullbits Bit-C PRO" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/nullbits_bit_c_pro/pico-sdk-configboard.h b/ports/raspberrypi/boards/nullbits_bit_c_pro/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/nullbits_bit_c_pro/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/nullbits_bit_c_pro/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/odt_bread_2040/mpconfigboard.h b/ports/raspberrypi/boards/odt_bread_2040/mpconfigboard.h index dc9390730213..92792fa6bf00 100644 --- a/ports/raspberrypi/boards/odt_bread_2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/odt_bread_2040/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Oak Dev Tech BREAD2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/odt_bread_2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/odt_bread_2040/pico-sdk-configboard.h index 91d72853f757..a301cec5acad 100644 --- a/ports/raspberrypi/boards/odt_bread_2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/odt_bread_2040/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. #define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64 diff --git a/ports/raspberrypi/boards/odt_cast_away_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/odt_cast_away_rp2040/mpconfigboard.h index e91a05ec6557..88b2db66424d 100644 --- a/ports/raspberrypi/boards/odt_cast_away_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/odt_cast_away_rp2040/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Oak Dev Tech Cast-Away RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/odt_cast_away_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/odt_cast_away_rp2040/pico-sdk-configboard.h index 91d72853f757..a301cec5acad 100644 --- a/ports/raspberrypi/boards/odt_cast_away_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/odt_cast_away_rp2040/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. #define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64 diff --git a/ports/raspberrypi/boards/pajenicko_picopad/mpconfigboard.h b/ports/raspberrypi/boards/pajenicko_picopad/mpconfigboard.h index 23b963d4358c..a4775d9e2d05 100644 --- a/ports/raspberrypi/boards/pajenicko_picopad/mpconfigboard.h +++ b/ports/raspberrypi/boards/pajenicko_picopad/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Pajenicko PicoPad" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pajenicko_picopad/pico-sdk-configboard.h b/ports/raspberrypi/boards/pajenicko_picopad/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/pajenicko_picopad/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pajenicko_picopad/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_badger2040/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_badger2040/mpconfigboard.h index 8affd4d4fa6d..d45377831187 100644 --- a/ports/raspberrypi/boards/pimoroni_badger2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_badger2040/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Pimoroni Badger 2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_badger2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_badger2040/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/pimoroni_badger2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_badger2040/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_badger2040w/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_badger2040w/mpconfigboard.h index 680317116d91..b120aa2dc1d5 100644 --- a/ports/raspberrypi/boards/pimoroni_badger2040w/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_badger2040w/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Pimoroni Badger 2040 W" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_badger2040w/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_badger2040w/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/pimoroni_badger2040w/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_badger2040w/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/mpconfigboard.h index 59d2c93cd98b..d2547cc16156 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Pimoroni Inky Frame 5.7" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/mpconfigboard.h index 5f9c4edb892d..42cb1196a547 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Pimoroni Inky Frame 7.3" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_interstate75/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_interstate75/mpconfigboard.h index 30975b0ce75e..81e931d47e89 100644 --- a/ports/raspberrypi/boards/pimoroni_interstate75/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_interstate75/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Pimoroni Interstate 75" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_interstate75/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_interstate75/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/pimoroni_interstate75/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_interstate75/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_keybow2040/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_keybow2040/mpconfigboard.h index c34e830b1ccf..a1f7dd50b7db 100644 --- a/ports/raspberrypi/boards/pimoroni_keybow2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_keybow2040/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Pimoroni Keybow 2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_keybow2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_keybow2040/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/pimoroni_keybow2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_keybow2040/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_motor2040/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_motor2040/mpconfigboard.h index f8c432605097..6bd30a616dd5 100644 --- a/ports/raspberrypi/boards/pimoroni_motor2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_motor2040/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Pimoroni Motor 2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_motor2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_motor2040/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/pimoroni_motor2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_motor2040/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_pga2040/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_pga2040/mpconfigboard.h index 51aaedc88a44..465de02bf883 100644 --- a/ports/raspberrypi/boards/pimoroni_pga2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_pga2040/mpconfigboard.h @@ -4,5 +4,7 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Pimoroni PGA2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_pga2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_pga2040/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/pimoroni_pga2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_pga2040/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_pico_dv_base/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_pico_dv_base/mpconfigboard.h index 378e6ba81938..c5941662c727 100644 --- a/ports/raspberrypi/boards/pimoroni_pico_dv_base/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_pico_dv_base/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Pimoroni Pico dv Base" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_pico_dv_base/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_pico_dv_base/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/pimoroni_pico_dv_base/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_pico_dv_base/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/mpconfigboard.h index 9ce2a07f9e54..4220ed96fc11 100644 --- a/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Pimoroni Pico DV Base W" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_picolipo_16mb/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_picolipo_16mb/mpconfigboard.h index ae7dd4729d94..5b55537791f5 100644 --- a/ports/raspberrypi/boards/pimoroni_picolipo_16mb/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_picolipo_16mb/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Pimoroni Pico LiPo (16MB)" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_picolipo_16mb/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_picolipo_16mb/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/pimoroni_picolipo_16mb/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_picolipo_16mb/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_picolipo_4mb/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_picolipo_4mb/mpconfigboard.h index 79c30a9e7d4a..d0cb4cc69b0c 100644 --- a/ports/raspberrypi/boards/pimoroni_picolipo_4mb/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_picolipo_4mb/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Pimoroni Pico LiPo (4MB)" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_picolipo_4mb/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_picolipo_4mb/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/pimoroni_picolipo_4mb/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_picolipo_4mb/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_picosystem/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_picosystem/mpconfigboard.h index 2b201a4651a5..dc40f685a2e2 100644 --- a/ports/raspberrypi/boards/pimoroni_picosystem/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_picosystem/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Pimoroni PicoSystem" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_picosystem/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_picosystem/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/pimoroni_picosystem/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_picosystem/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_plasma2040/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_plasma2040/mpconfigboard.h index 4ac0d0412542..f2b276714965 100644 --- a/ports/raspberrypi/boards/pimoroni_plasma2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_plasma2040/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Pimoroni Plasma 2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_plasma2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_plasma2040/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/pimoroni_plasma2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_plasma2040/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_plasma2040w/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_plasma2040w/mpconfigboard.h index 0e0d0e32638f..f59747f2ee4b 100644 --- a/ports/raspberrypi/boards/pimoroni_plasma2040w/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_plasma2040w/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Pimoroni Plasma 2040W" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_plasma2040w/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_plasma2040w/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/pimoroni_plasma2040w/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_plasma2040w/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_servo2040/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_servo2040/mpconfigboard.h index cb734dfe3296..f29b37c6f422 100644 --- a/ports/raspberrypi/boards/pimoroni_servo2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_servo2040/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Pimoroni Servo 2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_servo2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_servo2040/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/pimoroni_servo2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_servo2040/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_tiny2040/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_tiny2040/mpconfigboard.h index d69bdaf09592..4d1ef29bfe98 100644 --- a/ports/raspberrypi/boards/pimoroni_tiny2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_tiny2040/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Pimoroni Tiny 2040 (8MB)" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_tiny2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_tiny2040/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/pimoroni_tiny2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_tiny2040/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/mpconfigboard.h b/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/mpconfigboard.h index a2cd7b5d3c83..ee9f666252b0 100644 --- a/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/mpconfigboard.h +++ b/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Pimoroni Tiny 2040 (2MB)" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/pico-sdk-configboard.h b/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/raspberry_pi_pico/mpconfigboard.h b/ports/raspberrypi/boards/raspberry_pi_pico/mpconfigboard.h index bb996237af9d..c4aff9696d70 100644 --- a/ports/raspberrypi/boards/raspberry_pi_pico/mpconfigboard.h +++ b/ports/raspberrypi/boards/raspberry_pi_pico/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Raspberry Pi Pico" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/raspberry_pi_pico/pico-sdk-configboard.h b/ports/raspberrypi/boards/raspberry_pi_pico/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/raspberry_pi_pico/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/raspberry_pi_pico/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/raspberry_pi_pico_w/mpconfigboard.h b/ports/raspberrypi/boards/raspberry_pi_pico_w/mpconfigboard.h index 869204e7eece..5913eac48744 100644 --- a/ports/raspberrypi/boards/raspberry_pi_pico_w/mpconfigboard.h +++ b/ports/raspberrypi/boards/raspberry_pi_pico_w/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Raspberry Pi Pico W" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/raspberry_pi_pico_w/pico-sdk-configboard.h b/ports/raspberrypi/boards/raspberry_pi_pico_w/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/raspberry_pi_pico_w/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/raspberry_pi_pico_w/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/rfguru_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/rfguru_rp2040/mpconfigboard.h index dcfdc1c685fd..7847e61786b7 100644 --- a/ports/raspberrypi/boards/rfguru_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/rfguru_rp2040/mpconfigboard.h @@ -4,5 +4,7 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "RF.Guru RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/rfguru_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/rfguru_rp2040/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/rfguru_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/rfguru_rp2040/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/seeeduino_xiao_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/mpconfigboard.h index 8b13f2827e65..8b584f9740da 100644 --- a/ports/raspberrypi/boards/seeeduino_xiao_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Seeeduino XIAO RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/seeeduino_xiao_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/seeeduino_xiao_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/silicognition_rp2040_shim/mpconfigboard.h b/ports/raspberrypi/boards/silicognition_rp2040_shim/mpconfigboard.h index 3d243ea23a7b..fdaf126c7989 100644 --- a/ports/raspberrypi/boards/silicognition_rp2040_shim/mpconfigboard.h +++ b/ports/raspberrypi/boards/silicognition_rp2040_shim/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Silicognition LLC RP2040-Shim" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/silicognition_rp2040_shim/pico-sdk-configboard.h b/ports/raspberrypi/boards/silicognition_rp2040_shim/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/silicognition_rp2040_shim/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/silicognition_rp2040_shim/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/solderparty_bbq20kbd/mpconfigboard.h b/ports/raspberrypi/boards/solderparty_bbq20kbd/mpconfigboard.h index 9f84a28ba7dd..c727fdb0108c 100644 --- a/ports/raspberrypi/boards/solderparty_bbq20kbd/mpconfigboard.h +++ b/ports/raspberrypi/boards/solderparty_bbq20kbd/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "BBQ20KBD" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/solderparty_bbq20kbd/pico-sdk-configboard.h b/ports/raspberrypi/boards/solderparty_bbq20kbd/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/solderparty_bbq20kbd/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/solderparty_bbq20kbd/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/solderparty_rp2040_stamp/mpconfigboard.h b/ports/raspberrypi/boards/solderparty_rp2040_stamp/mpconfigboard.h index bee8a4948593..117eedfcbc2a 100644 --- a/ports/raspberrypi/boards/solderparty_rp2040_stamp/mpconfigboard.h +++ b/ports/raspberrypi/boards/solderparty_rp2040_stamp/mpconfigboard.h @@ -4,5 +4,7 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "RP2040 Stamp" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/solderparty_rp2040_stamp/pico-sdk-configboard.h b/ports/raspberrypi/boards/solderparty_rp2040_stamp/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/solderparty_rp2040_stamp/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/solderparty_rp2040_stamp/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/sparkfun_micromod_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/sparkfun_micromod_rp2040/mpconfigboard.h index 47d8c796fddd..9edd82de5922 100644 --- a/ports/raspberrypi/boards/sparkfun_micromod_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/sparkfun_micromod_rp2040/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "SparkFun MicroMod RP2040 Processor" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/sparkfun_micromod_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/sparkfun_micromod_rp2040/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/sparkfun_micromod_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/sparkfun_micromod_rp2040/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/mpconfigboard.h index 2a0b3bb3d3b6..5ebebe1fe300 100644 --- a/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "SparkFun Pro Micro RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/mpconfigboard.h index acbe82934731..b51b0c56d8b2 100644 --- a/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "SparkFun Thing Plus - RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/splitkb_liatris/mpconfigboard.h b/ports/raspberrypi/boards/splitkb_liatris/mpconfigboard.h index 3b027d592324..961385b6ab79 100644 --- a/ports/raspberrypi/boards/splitkb_liatris/mpconfigboard.h +++ b/ports/raspberrypi/boards/splitkb_liatris/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "splitkb.com Liatris" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/splitkb_liatris/pico-sdk-configboard.h b/ports/raspberrypi/boards/splitkb_liatris/pico-sdk-configboard.h index 1d095f07d985..c3af1ed4084a 100644 --- a/ports/raspberrypi/boards/splitkb_liatris/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/splitkb_liatris/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/mpconfigboard.h index 77d40671f2e5..3770d35a846f 100644 --- a/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "takayoshiotake Octave RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/ugame22/mpconfigboard.h b/ports/raspberrypi/boards/ugame22/mpconfigboard.h index d7ef1ba07148..f63c12b846ac 100644 --- a/ports/raspberrypi/boards/ugame22/mpconfigboard.h +++ b/ports/raspberrypi/boards/ugame22/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "uGame22" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/ugame22/pico-sdk-configboard.h b/ports/raspberrypi/boards/ugame22/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/ugame22/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/ugame22/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/mpconfigboard.h index e4c0d0bc4e27..cb73d6524473 100644 --- a/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "VCC-GND Studio YD RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/pico-sdk-configboard.h index c1efbb299eef..849b17332597 100644 --- a/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/waveshare_rp2040_geek/mpconfigboard.h b/ports/raspberrypi/boards/waveshare_rp2040_geek/mpconfigboard.h index 5c7f292c67cc..ba7b48a90564 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_geek/mpconfigboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_geek/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Waveshare RP2040-GEEK" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/waveshare_rp2040_geek/pico-sdk-configboard.h b/ports/raspberrypi/boards/waveshare_rp2040_geek/pico-sdk-configboard.h index aded40e07d88..a2e741ef9e5f 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_geek/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_geek/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/mpconfigboard.h b/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/mpconfigboard.h index 0d39b8d50e06..2fceb16d3cb4 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/mpconfigboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Waveshare RP2040-LCD-0.96" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/pico-sdk-configboard.h b/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/mpconfigboard.h b/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/mpconfigboard.h index aa7e5c17d316..6105bbef483d 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/mpconfigboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/mpconfigboard.h @@ -4,5 +4,7 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Waveshare RP2040-LCD-1.28" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/pico-sdk-configboard.h b/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/mpconfigboard.h b/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/mpconfigboard.h index 6a6c7362417e..7391a54fecf2 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/mpconfigboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/mpconfigboard.h @@ -4,5 +4,7 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Waveshare RP2040-Plus (16MB)" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/pico-sdk-configboard.h b/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/mpconfigboard.h b/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/mpconfigboard.h index 068a2ef4f191..90b596dcd0db 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/mpconfigboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/mpconfigboard.h @@ -4,5 +4,7 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Waveshare RP2040-Plus (4MB)" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/pico-sdk-configboard.h b/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/waveshare_rp2040_tiny/mpconfigboard.h b/ports/raspberrypi/boards/waveshare_rp2040_tiny/mpconfigboard.h index e3a925d42d8f..b2b6f3a27f9d 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_tiny/mpconfigboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_tiny/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Waveshare RP2040-Tiny" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/waveshare_rp2040_tiny/pico-sdk-configboard.h b/ports/raspberrypi/boards/waveshare_rp2040_tiny/pico-sdk-configboard.h index 26ed98c336bc..307388439fa7 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_tiny/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_tiny/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/mpconfigboard.h b/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/mpconfigboard.h index 962f921293ed..faf2789510ff 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/mpconfigboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/mpconfigboard.h @@ -4,5 +4,7 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Waveshare RP2040-TOUCH-LCD-1.28" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/pico-sdk-configboard.h b/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/waveshare_rp2040_zero/mpconfigboard.h b/ports/raspberrypi/boards/waveshare_rp2040_zero/mpconfigboard.h index afd8b591af5b..04177f3a5727 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_zero/mpconfigboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_zero/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Waveshare RP2040-Zero" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/waveshare_rp2040_zero/pico-sdk-configboard.h b/ports/raspberrypi/boards/waveshare_rp2040_zero/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_zero/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/waveshare_rp2040_zero/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/weact_studio_pico/mpconfigboard.h b/ports/raspberrypi/boards/weact_studio_pico/mpconfigboard.h index a235595ee8af..7caaa19971ba 100644 --- a/ports/raspberrypi/boards/weact_studio_pico/mpconfigboard.h +++ b/ports/raspberrypi/boards/weact_studio_pico/mpconfigboard.h @@ -4,5 +4,7 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "WeAct Studio Pico" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/weact_studio_pico/pico-sdk-configboard.h b/ports/raspberrypi/boards/weact_studio_pico/pico-sdk-configboard.h index c1efbb299eef..849b17332597 100644 --- a/ports/raspberrypi/boards/weact_studio_pico/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/weact_studio_pico/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/weact_studio_pico_16mb/mpconfigboard.h b/ports/raspberrypi/boards/weact_studio_pico_16mb/mpconfigboard.h index 4049c0a3bd2b..c8160608fbc7 100644 --- a/ports/raspberrypi/boards/weact_studio_pico_16mb/mpconfigboard.h +++ b/ports/raspberrypi/boards/weact_studio_pico_16mb/mpconfigboard.h @@ -4,5 +4,7 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "WeAct Studio Pico 16MB" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/weact_studio_pico_16mb/pico-sdk-configboard.h b/ports/raspberrypi/boards/weact_studio_pico_16mb/pico-sdk-configboard.h index c1efbb299eef..849b17332597 100644 --- a/ports/raspberrypi/boards/weact_studio_pico_16mb/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/weact_studio_pico_16mb/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/wisdpi_ardu2040m/mpconfigboard.h b/ports/raspberrypi/boards/wisdpi_ardu2040m/mpconfigboard.h index 9b07a36e863f..aaaf34d793f4 100644 --- a/ports/raspberrypi/boards/wisdpi_ardu2040m/mpconfigboard.h +++ b/ports/raspberrypi/boards/wisdpi_ardu2040m/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "WisdPi Ardu2040M" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/wisdpi_ardu2040m/pico-sdk-configboard.h b/ports/raspberrypi/boards/wisdpi_ardu2040m/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/wisdpi_ardu2040m/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/wisdpi_ardu2040m/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/wisdpi_tiny_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/wisdpi_tiny_rp2040/mpconfigboard.h index 5df25f12cb7c..b35b64659ed2 100644 --- a/ports/raspberrypi/boards/wisdpi_tiny_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/wisdpi_tiny_rp2040/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "WisdPi Tiny RP2040" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/wisdpi_tiny_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/wisdpi_tiny_rp2040/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/wisdpi_tiny_rp2040/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/wisdpi_tiny_rp2040/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/mpconfigboard.h b/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/mpconfigboard.h index 35e5a471c2dd..ba60f5f72d23 100644 --- a/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/mpconfigboard.h +++ b/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "W5100S-EVB-Pico" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/pico-sdk-configboard.h b/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/wiznet_w5500_evb_pico/mpconfigboard.h b/ports/raspberrypi/boards/wiznet_w5500_evb_pico/mpconfigboard.h index ec26fa8e6d13..7aeca9bdb2cd 100644 --- a/ports/raspberrypi/boards/wiznet_w5500_evb_pico/mpconfigboard.h +++ b/ports/raspberrypi/boards/wiznet_w5500_evb_pico/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "W5500-EVB-Pico" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/wiznet_w5500_evb_pico/pico-sdk-configboard.h b/ports/raspberrypi/boards/wiznet_w5500_evb_pico/pico-sdk-configboard.h index 66b57dfd13dc..110195b77949 100644 --- a/ports/raspberrypi/boards/wiznet_w5500_evb_pico/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/wiznet_w5500_evb_pico/pico-sdk-configboard.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/zrichard_rp2.65-f/mpconfigboard.h b/ports/raspberrypi/boards/zrichard_rp2.65-f/mpconfigboard.h index 0bdfca7b84cf..b972a82c99e9 100644 --- a/ports/raspberrypi/boards/zrichard_rp2.65-f/mpconfigboard.h +++ b/ports/raspberrypi/boards/zrichard_rp2.65-f/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "RP2.65-F" #define MICROPY_HW_MCU_NAME "rp2040" diff --git a/ports/raspberrypi/boards/zrichard_rp2.65-f/pico-sdk-configboard.h b/ports/raspberrypi/boards/zrichard_rp2.65-f/pico-sdk-configboard.h index 2d9283a9192f..ce5a7645b4e2 100644 --- a/ports/raspberrypi/boards/zrichard_rp2.65-f/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/zrichard_rp2.65-f/pico-sdk-configboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Put board-specific pico-sdk definitions here. This file must exist. // Allow extra time for xosc to start. diff --git a/ports/raspberrypi/common-hal/alarm/coproc/CoprocAlarm.h b/ports/raspberrypi/common-hal/alarm/coproc/CoprocAlarm.h index a7f2dfca2b67..f8921574865a 100644 --- a/ports/raspberrypi/common-hal/alarm/coproc/CoprocAlarm.h +++ b/ports/raspberrypi/common-hal/alarm/coproc/CoprocAlarm.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // empty file diff --git a/ports/raspberrypi/common-hal/i2ctarget/I2CTarget.h b/ports/raspberrypi/common-hal/i2ctarget/I2CTarget.h index bd602544561f..9293ecbdf227 100644 --- a/ports/raspberrypi/common-hal/i2ctarget/I2CTarget.h +++ b/ports/raspberrypi/common-hal/i2ctarget/I2CTarget.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #ifndef MICROPY_INCLUDED_RPI_COMMON_HAL_I2C_TARGET_H #define MICROPY_INCLUDED_RPI_COMMON_HAL_I2C_TARGET_H diff --git a/ports/raspberrypi/common-hal/imagecapture/__init__.h b/ports/raspberrypi/common-hal/imagecapture/__init__.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/ports/raspberrypi/common-hal/imagecapture/__init__.h +++ b/ports/raspberrypi/common-hal/imagecapture/__init__.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/ports/raspberrypi/common-hal/rotaryio/__init__.h b/ports/raspberrypi/common-hal/rotaryio/__init__.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/ports/raspberrypi/common-hal/rotaryio/__init__.h +++ b/ports/raspberrypi/common-hal/rotaryio/__init__.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/ports/raspberrypi/qstrdefsport.h b/ports/raspberrypi/qstrdefsport.h index 57b5815583d4..b8cd1fd9af90 100644 --- a/ports/raspberrypi/qstrdefsport.h +++ b/ports/raspberrypi/qstrdefsport.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // qstrs specific to this port diff --git a/ports/renode/boards/renode_cortex_m0plus/mpconfigboard.h b/ports/renode/boards/renode_cortex_m0plus/mpconfigboard.h index 3874d96e4d1e..b09852e50855 100644 --- a/ports/renode/boards/renode_cortex_m0plus/mpconfigboard.h +++ b/ports/renode/boards/renode_cortex_m0plus/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define MICROPY_HW_BOARD_NAME "Renode Cortex-M0+" #define MICROPY_HW_MCU_NAME "cortex-m0+" diff --git a/ports/renode/qstrdefsport.h b/ports/renode/qstrdefsport.h index 57b5815583d4..b8cd1fd9af90 100644 --- a/ports/renode/qstrdefsport.h +++ b/ports/renode/qstrdefsport.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // qstrs specific to this port diff --git a/ports/stm/background.h b/ports/stm/background.h index 1fbee93a801c..647d1442f442 100644 --- a/ports/stm/background.h +++ b/ports/stm/background.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #ifndef MICROPY_INCLUDED_STM32_BACKGROUND_H #define MICROPY_INCLUDED_STM32_BACKGROUND_H diff --git a/ports/stm/boards/espruino_pico/mpconfigboard.h b/ports/stm/boards/espruino_pico/mpconfigboard.h index 2433cffdcee1..6c30f3183558 100644 --- a/ports/stm/boards/espruino_pico/mpconfigboard.h +++ b/ports/stm/boards/espruino_pico/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Espruino Pico" diff --git a/ports/stm/boards/espruino_wifi/mpconfigboard.h b/ports/stm/boards/espruino_wifi/mpconfigboard.h index a0ae336d7623..00ca46a18c68 100644 --- a/ports/stm/boards/espruino_wifi/mpconfigboard.h +++ b/ports/stm/boards/espruino_wifi/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Espruino Wifi" diff --git a/ports/stm/boards/feather_stm32f405_express/mpconfigboard.h b/ports/stm/boards/feather_stm32f405_express/mpconfigboard.h index c0f18fcd135a..9ca27089178a 100644 --- a/ports/stm/boards/feather_stm32f405_express/mpconfigboard.h +++ b/ports/stm/boards/feather_stm32f405_express/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Adafruit Feather STM32F405 Express" diff --git a/ports/stm/boards/meowbit_v121/mpconfigboard.h b/ports/stm/boards/meowbit_v121/mpconfigboard.h index dbc1a994baba..64ebbbf42799 100644 --- a/ports/stm/boards/meowbit_v121/mpconfigboard.h +++ b/ports/stm/boards/meowbit_v121/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "MEOWBIT" diff --git a/ports/stm/boards/nucleo_f446re/mpconfigboard.h b/ports/stm/boards/nucleo_f446re/mpconfigboard.h index f4ccc4e27c9a..0914cacc871f 100644 --- a/ports/stm/boards/nucleo_f446re/mpconfigboard.h +++ b/ports/stm/boards/nucleo_f446re/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "NUCLEO F446RE" diff --git a/ports/stm/boards/nucleo_f746zg/mpconfigboard.h b/ports/stm/boards/nucleo_f746zg/mpconfigboard.h index 9037b61cb521..7943c4bf75ea 100644 --- a/ports/stm/boards/nucleo_f746zg/mpconfigboard.h +++ b/ports/stm/boards/nucleo_f746zg/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "NUCLEO STM32F746" diff --git a/ports/stm/boards/nucleo_f767zi/mpconfigboard.h b/ports/stm/boards/nucleo_f767zi/mpconfigboard.h index 80bbeef0ac4d..eced675ed9a6 100644 --- a/ports/stm/boards/nucleo_f767zi/mpconfigboard.h +++ b/ports/stm/boards/nucleo_f767zi/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "NUCLEO STM32F767" diff --git a/ports/stm/boards/nucleo_h743zi_2/mpconfigboard.h b/ports/stm/boards/nucleo_h743zi_2/mpconfigboard.h index 7233d14ef80a..3a91cc7b6cb4 100644 --- a/ports/stm/boards/nucleo_h743zi_2/mpconfigboard.h +++ b/ports/stm/boards/nucleo_h743zi_2/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "NUCLEO STM32H743" diff --git a/ports/stm/boards/openmv_h7/mpconfigboard.h b/ports/stm/boards/openmv_h7/mpconfigboard.h index 0fa1abae8761..0d8d96c60c58 100644 --- a/ports/stm/boards/openmv_h7/mpconfigboard.h +++ b/ports/stm/boards/openmv_h7/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "OPENMV-H7 R1" diff --git a/ports/stm/boards/pyb_nano_v2/mpconfigboard.h b/ports/stm/boards/pyb_nano_v2/mpconfigboard.h index c11d23a7203f..4f0cafc26f96 100644 --- a/ports/stm/boards/pyb_nano_v2/mpconfigboard.h +++ b/ports/stm/boards/pyb_nano_v2/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "PYB LR Nano V2" diff --git a/ports/stm/boards/pyboard_v11/mpconfigboard.h b/ports/stm/boards/pyboard_v11/mpconfigboard.h index 64ba57853168..51df649ed634 100644 --- a/ports/stm/boards/pyboard_v11/mpconfigboard.h +++ b/ports/stm/boards/pyboard_v11/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "PyboardV1_1" diff --git a/ports/stm/boards/sparkfun_stm32_thing_plus/mpconfigboard.h b/ports/stm/boards/sparkfun_stm32_thing_plus/mpconfigboard.h index 662dd2f96772..07aa8c92e78b 100644 --- a/ports/stm/boards/sparkfun_stm32_thing_plus/mpconfigboard.h +++ b/ports/stm/boards/sparkfun_stm32_thing_plus/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "SparkFun Thing Plus - STM32" diff --git a/ports/stm/boards/sparkfun_stm32f405_micromod/mpconfigboard.h b/ports/stm/boards/sparkfun_stm32f405_micromod/mpconfigboard.h index 6e9c56237ffe..f2de573ab12e 100644 --- a/ports/stm/boards/sparkfun_stm32f405_micromod/mpconfigboard.h +++ b/ports/stm/boards/sparkfun_stm32f405_micromod/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "SparkFun STM32 MicroMod Processor" diff --git a/ports/stm/boards/stm32f411ce_blackpill/mpconfigboard.h b/ports/stm/boards/stm32f411ce_blackpill/mpconfigboard.h index 9a871e659195..cc2fb3db68b4 100644 --- a/ports/stm/boards/stm32f411ce_blackpill/mpconfigboard.h +++ b/ports/stm/boards/stm32f411ce_blackpill/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "stm32f411ce-blackpill" diff --git a/ports/stm/boards/stm32f411ce_blackpill_with_flash/mpconfigboard.h b/ports/stm/boards/stm32f411ce_blackpill_with_flash/mpconfigboard.h index 9ea278d8382d..be2423af8891 100644 --- a/ports/stm/boards/stm32f411ce_blackpill_with_flash/mpconfigboard.h +++ b/ports/stm/boards/stm32f411ce_blackpill_with_flash/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "stm32f411ce-blackpill-with-flash" diff --git a/ports/stm/boards/stm32f411ve_discovery/mpconfigboard.h b/ports/stm/boards/stm32f411ve_discovery/mpconfigboard.h index aa8023cbde8e..c9f477615538 100644 --- a/ports/stm/boards/stm32f411ve_discovery/mpconfigboard.h +++ b/ports/stm/boards/stm32f411ve_discovery/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "STM32F411E_DISCO" diff --git a/ports/stm/boards/stm32f412zg_discovery/mpconfigboard.h b/ports/stm/boards/stm32f412zg_discovery/mpconfigboard.h index 1a425a3729ee..e771532437f6 100644 --- a/ports/stm/boards/stm32f412zg_discovery/mpconfigboard.h +++ b/ports/stm/boards/stm32f412zg_discovery/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "STM32F412G_DISCO" diff --git a/ports/stm/boards/stm32f4_discovery/mpconfigboard.h b/ports/stm/boards/stm32f4_discovery/mpconfigboard.h index 9cf7c5af7526..2df256d6ae29 100644 --- a/ports/stm/boards/stm32f4_discovery/mpconfigboard.h +++ b/ports/stm/boards/stm32f4_discovery/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "STM32F4_DISCO" diff --git a/ports/stm/boards/stm32f746g_discovery/mpconfigboard.h b/ports/stm/boards/stm32f746g_discovery/mpconfigboard.h index 567bbad77ae3..f61bb4b80c42 100644 --- a/ports/stm/boards/stm32f746g_discovery/mpconfigboard.h +++ b/ports/stm/boards/stm32f746g_discovery/mpconfigboard.h @@ -5,6 +5,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "ST STM32F746G Discovery" diff --git a/ports/stm/boards/swan_r5/mpconfigboard.h b/ports/stm/boards/swan_r5/mpconfigboard.h index 44bd071a3130..ecfb8bcd64a8 100644 --- a/ports/stm/boards/swan_r5/mpconfigboard.h +++ b/ports/stm/boards/swan_r5/mpconfigboard.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Swan R5" diff --git a/ports/stm/boards/thunderpack_v11/mpconfigboard.h b/ports/stm/boards/thunderpack_v11/mpconfigboard.h index f4f147d865fb..c2369f71c4ad 100644 --- a/ports/stm/boards/thunderpack_v11/mpconfigboard.h +++ b/ports/stm/boards/thunderpack_v11/mpconfigboard.h @@ -3,6 +3,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries // // SPDX-License-Identifier: MIT + +#pragma once #define MICROPY_HW_BOARD_NAME "THUNDERPACK_v11" #define MICROPY_HW_MCU_NAME "STM32F411CE" diff --git a/ports/stm/boards/thunderpack_v12/mpconfigboard.h b/ports/stm/boards/thunderpack_v12/mpconfigboard.h index 670d4987f724..eea7a91e5c47 100644 --- a/ports/stm/boards/thunderpack_v12/mpconfigboard.h +++ b/ports/stm/boards/thunderpack_v12/mpconfigboard.h @@ -3,6 +3,9 @@ // SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries // // SPDX-License-Identifier: MIT + +#pragma once + #define MICROPY_HW_BOARD_NAME "THUNDERPACK_v12" #define MICROPY_HW_MCU_NAME "STM32F411CE" diff --git a/ports/stm/common-hal/alarm/coproc/CoprocAlarm.h b/ports/stm/common-hal/alarm/coproc/CoprocAlarm.h index a7f2dfca2b67..f8921574865a 100644 --- a/ports/stm/common-hal/alarm/coproc/CoprocAlarm.h +++ b/ports/stm/common-hal/alarm/coproc/CoprocAlarm.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // empty file diff --git a/ports/stm/common-hal/audiobusio/I2SOut.h b/ports/stm/common-hal/audiobusio/I2SOut.h index c14901730fc8..4426339c3fc5 100644 --- a/ports/stm/common-hal/audiobusio/I2SOut.h +++ b/ports/stm/common-hal/audiobusio/I2SOut.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Although IS2Out is not enabled on the STM32L4 family, this file is still required for the build to pass diff --git a/ports/stm/common-hal/rgbmatrix/__init__.h b/ports/stm/common-hal/rgbmatrix/__init__.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/ports/stm/common-hal/rgbmatrix/__init__.h +++ b/ports/stm/common-hal/rgbmatrix/__init__.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/ports/stm/common-hal/rtc/__init__.h b/ports/stm/common-hal/rtc/__init__.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/ports/stm/common-hal/rtc/__init__.h +++ b/ports/stm/common-hal/rtc/__init__.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/ports/stm/common-hal/sdioio/__init__.h b/ports/stm/common-hal/sdioio/__init__.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/ports/stm/common-hal/sdioio/__init__.h +++ b/ports/stm/common-hal/sdioio/__init__.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/ports/stm/mpconfigport_nanbox.h b/ports/stm/mpconfigport_nanbox.h index 560b52133bad..164850112e01 100644 --- a/ports/stm/mpconfigport_nanbox.h +++ b/ports/stm/mpconfigport_nanbox.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + // select nan-boxing object model #define MICROPY_OBJ_REPR (MICROPY_OBJ_REPR_D) diff --git a/ports/stm/peripherals/clocks.h b/ports/stm/peripherals/clocks.h index 0da7e9fe1a63..98bd9f28b447 100644 --- a/ports/stm/peripherals/clocks.h +++ b/ports/stm/peripherals/clocks.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + void stm32_peripherals_clocks_init(void); diff --git a/ports/stm/peripherals/gpio.h b/ports/stm/peripherals/gpio.h index c7d926702623..59b2a6fb3080 100644 --- a/ports/stm/peripherals/gpio.h +++ b/ports/stm/peripherals/gpio.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + void stm32_peripherals_gpio_init(void); diff --git a/ports/stm/peripherals/stm32f4/stm32f401xe/clocks.h b/ports/stm/peripherals/stm32f4/stm32f401xe/clocks.h index 4fa9182b306a..0e2e30bcba9b 100644 --- a/ports/stm/peripherals/stm32f4/stm32f401xe/clocks.h +++ b/ports/stm/peripherals/stm32f4/stm32f401xe/clocks.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "stm32f4xx_hal.h" // Chip: STM32F401 diff --git a/ports/stm/peripherals/stm32f4/stm32f405xx/clocks.h b/ports/stm/peripherals/stm32f4/stm32f405xx/clocks.h index e2de28fda9d2..85d1a766ed1b 100644 --- a/ports/stm/peripherals/stm32f4/stm32f405xx/clocks.h +++ b/ports/stm/peripherals/stm32f4/stm32f405xx/clocks.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "stm32f4xx_hal.h" // Chip: STM32F405 diff --git a/ports/stm/peripherals/stm32f4/stm32f407xx/clocks.h b/ports/stm/peripherals/stm32f4/stm32f407xx/clocks.h index cb25b194357f..98464c4bc5ba 100644 --- a/ports/stm/peripherals/stm32f4/stm32f407xx/clocks.h +++ b/ports/stm/peripherals/stm32f4/stm32f407xx/clocks.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "stm32f4xx_hal.h" // Chip: STM32F407 diff --git a/ports/stm/peripherals/stm32f4/stm32f411xe/clocks.h b/ports/stm/peripherals/stm32f4/stm32f411xe/clocks.h index d9c88a4b465f..931a9e5a72a9 100644 --- a/ports/stm/peripherals/stm32f4/stm32f411xe/clocks.h +++ b/ports/stm/peripherals/stm32f4/stm32f411xe/clocks.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "stm32f4xx_hal.h" // Chip: STM32F411 diff --git a/ports/stm/peripherals/stm32f4/stm32f412cx/clocks.h b/ports/stm/peripherals/stm32f4/stm32f412cx/clocks.h index f58986c2ee08..4d97ca27f7c8 100644 --- a/ports/stm/peripherals/stm32f4/stm32f412cx/clocks.h +++ b/ports/stm/peripherals/stm32f4/stm32f412cx/clocks.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "stm32f4xx_hal.h" // Chip: STM32F412Cx diff --git a/ports/stm/peripherals/stm32f4/stm32f412zx/clocks.h b/ports/stm/peripherals/stm32f4/stm32f412zx/clocks.h index 8e7497be4885..e4420fbbeb76 100644 --- a/ports/stm/peripherals/stm32f4/stm32f412zx/clocks.h +++ b/ports/stm/peripherals/stm32f4/stm32f412zx/clocks.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "stm32f4xx_hal.h" // Chip: STM32F412 diff --git a/ports/stm/peripherals/stm32f4/stm32f446xx/clocks.h b/ports/stm/peripherals/stm32f4/stm32f446xx/clocks.h index 7262da2ad9c5..45253af7cc29 100644 --- a/ports/stm/peripherals/stm32f4/stm32f446xx/clocks.h +++ b/ports/stm/peripherals/stm32f4/stm32f446xx/clocks.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "stm32f4xx_hal.h" // Chip: STM32F446xC/xV diff --git a/ports/stm/peripherals/stm32f7/stm32f746xx/clocks.h b/ports/stm/peripherals/stm32f7/stm32f746xx/clocks.h index c59918212888..42b4b26c001f 100644 --- a/ports/stm/peripherals/stm32f7/stm32f746xx/clocks.h +++ b/ports/stm/peripherals/stm32f7/stm32f746xx/clocks.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "stm32f7xx_hal.h" // Chip: STM32F746 diff --git a/ports/stm/peripherals/stm32f7/stm32f767xx/clocks.h b/ports/stm/peripherals/stm32f7/stm32f767xx/clocks.h index d220ed8208b1..6aa245e016e5 100644 --- a/ports/stm/peripherals/stm32f7/stm32f767xx/clocks.h +++ b/ports/stm/peripherals/stm32f7/stm32f767xx/clocks.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "stm32f7xx_hal.h" // Chip: STM32F767 diff --git a/ports/stm/peripherals/stm32h7/stm32h743xx/clocks.h b/ports/stm/peripherals/stm32h7/stm32h743xx/clocks.h index 97c3c4ef4630..56bb598ab74a 100644 --- a/ports/stm/peripherals/stm32h7/stm32h743xx/clocks.h +++ b/ports/stm/peripherals/stm32h7/stm32h743xx/clocks.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "stm32h7xx_hal.h" // Chip: STM32H743 diff --git a/ports/stm/peripherals/stm32l4/stm32l4r5xx/clocks.h b/ports/stm/peripherals/stm32l4/stm32l4r5xx/clocks.h index 57f49c83c438..06ecde2956e7 100644 --- a/ports/stm/peripherals/stm32l4/stm32l4r5xx/clocks.h +++ b/ports/stm/peripherals/stm32l4/stm32l4r5xx/clocks.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "stm32l4xx_hal.h" // Chip: STM32L4R5 diff --git a/ports/stm/peripherals/timers.h b/ports/stm/peripherals/timers.h index 3af6958cb027..db3f9472e1e9 100644 --- a/ports/stm/peripherals/timers.h +++ b/ports/stm/peripherals/timers.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include #include "py/mphal.h" #include "peripherals/periph.h" diff --git a/ports/stm/qstrdefsport.h b/ports/stm/qstrdefsport.h index 57b5815583d4..b8cd1fd9af90 100644 --- a/ports/stm/qstrdefsport.h +++ b/ports/stm/qstrdefsport.h @@ -4,4 +4,6 @@ // // SPDX-License-Identifier: MIT +#pragma once + // qstrs specific to this port diff --git a/shared-bindings/__future__/__init__.h b/shared-bindings/__future__/__init__.h index 47f1eb21dc7c..9289c128578e 100644 --- a/shared-bindings/__future__/__init__.h +++ b/shared-bindings/__future__/__init__.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #ifndef MICROPY_INCLUDED_SHARED_BINDINGS___FUTURE_____INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS___FUTURE_____INIT___H diff --git a/shared-bindings/_pixelmap/__init__.h b/shared-bindings/_pixelmap/__init__.h index 20d47e25e0ee..a98da1ed66c8 100644 --- a/shared-bindings/_pixelmap/__init__.h +++ b/shared-bindings/_pixelmap/__init__.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #ifndef CP_SHARED_BINDINGS_PIXELBUF_INIT_H #define CP_SHARED_BINDINGS_PIXELBUF_INIT_H diff --git a/shared-bindings/adafruit_pixelbuf/__init__.h b/shared-bindings/adafruit_pixelbuf/__init__.h index 20d47e25e0ee..a98da1ed66c8 100644 --- a/shared-bindings/adafruit_pixelbuf/__init__.h +++ b/shared-bindings/adafruit_pixelbuf/__init__.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #ifndef CP_SHARED_BINDINGS_PIXELBUF_INIT_H #define CP_SHARED_BINDINGS_PIXELBUF_INIT_H diff --git a/shared-bindings/fontio/__init__.h b/shared-bindings/fontio/__init__.h index 2e8a436b505d..76b9fa8e6a5d 100644 --- a/shared-bindings/fontio/__init__.h +++ b/shared-bindings/fontio/__init__.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_FONTIO___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_FONTIO___INIT___H diff --git a/shared-bindings/framebufferio/__init__.h b/shared-bindings/framebufferio/__init__.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/shared-bindings/framebufferio/__init__.h +++ b/shared-bindings/framebufferio/__init__.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/shared-bindings/gifio/__init__.h b/shared-bindings/gifio/__init__.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/shared-bindings/gifio/__init__.h +++ b/shared-bindings/gifio/__init__.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/shared-bindings/jpegio/JpegDecoder.h b/shared-bindings/jpegio/JpegDecoder.h index b520470cd534..560586a871ef 100644 --- a/shared-bindings/jpegio/JpegDecoder.h +++ b/shared-bindings/jpegio/JpegDecoder.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "py/obj.h" #include "py/stream.h" #include "shared-module/displayio/Bitmap.h" diff --git a/shared-bindings/jpegio/__init__.h b/shared-bindings/jpegio/__init__.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/shared-bindings/jpegio/__init__.h +++ b/shared-bindings/jpegio/__init__.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/shared-bindings/memorymap/__init__.h b/shared-bindings/memorymap/__init__.h index ced885a4f669..5762fd34fcaf 100644 --- a/shared-bindings/memorymap/__init__.h +++ b/shared-bindings/memorymap/__init__.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #ifndef SHARED_BINDINGS_MEMORYMAP_H #define SHARED_BINDINGS_MEMORYMAP_H diff --git a/shared-bindings/nvm/__init__.h b/shared-bindings/nvm/__init__.h index 9c037b4816ca..96c6efa67463 100644 --- a/shared-bindings/nvm/__init__.h +++ b/shared-bindings/nvm/__init__.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #ifndef SHARED_BINDINGS_NVM_H #define SHARED_BINDINGS_NVM_H diff --git a/shared-bindings/sdcardio/__init__.h b/shared-bindings/sdcardio/__init__.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/shared-bindings/sdcardio/__init__.h +++ b/shared-bindings/sdcardio/__init__.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/shared-bindings/sdioio/__init__.h b/shared-bindings/sdioio/__init__.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/shared-bindings/sdioio/__init__.h +++ b/shared-bindings/sdioio/__init__.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/shared-bindings/sharpdisplay/__init__.h b/shared-bindings/sharpdisplay/__init__.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/shared-bindings/sharpdisplay/__init__.h +++ b/shared-bindings/sharpdisplay/__init__.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/shared-module/bitmapfilter/__init__.h b/shared-module/bitmapfilter/__init__.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/shared-module/bitmapfilter/__init__.h +++ b/shared-module/bitmapfilter/__init__.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/shared-module/framebufferio/__init__.h b/shared-module/framebufferio/__init__.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/shared-module/framebufferio/__init__.h +++ b/shared-module/framebufferio/__init__.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/shared-module/gifio/__init__.h b/shared-module/gifio/__init__.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/shared-module/gifio/__init__.h +++ b/shared-module/gifio/__init__.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/shared-module/is31fl3741/__init__.h b/shared-module/is31fl3741/__init__.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/shared-module/is31fl3741/__init__.h +++ b/shared-module/is31fl3741/__init__.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/shared-module/jpegio/JpegDecoder.h b/shared-module/jpegio/JpegDecoder.h index 504692912954..2585b364545a 100644 --- a/shared-module/jpegio/JpegDecoder.h +++ b/shared-module/jpegio/JpegDecoder.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #include "py/obj.h" #include "lib/tjpgd/src/tjpgd.h" #include "shared-module/displayio/Bitmap.h" diff --git a/shared-module/jpegio/__init__.h b/shared-module/jpegio/__init__.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/shared-module/jpegio/__init__.h +++ b/shared-module/jpegio/__init__.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/shared-module/rgbmatrix/__init__.h b/shared-module/rgbmatrix/__init__.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/shared-module/rgbmatrix/__init__.h +++ b/shared-module/rgbmatrix/__init__.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/shared-module/sdcardio/__init__.h b/shared-module/sdcardio/__init__.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/shared-module/sdcardio/__init__.h +++ b/shared-module/sdcardio/__init__.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/shared-module/sharpdisplay/__init__.h b/shared-module/sharpdisplay/__init__.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/shared-module/sharpdisplay/__init__.h +++ b/shared-module/sharpdisplay/__init__.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/shared-module/terminalio/__init__.h b/shared-module/terminalio/__init__.h index 084e796ba196..452d4223e55c 100644 --- a/shared-module/terminalio/__init__.h +++ b/shared-module/terminalio/__init__.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #ifndef SHARED_MODULE_TERMINALIO___INIT___H #define SHARED_MODULE_TERMINALIO___INIT___H diff --git a/shared-module/usb_video/tusb_config.h b/shared-module/usb_video/tusb_config.h index 72d32ef2b2c5..c9069db9fd7d 100644 --- a/shared-module/usb_video/tusb_config.h +++ b/shared-module/usb_video/tusb_config.h @@ -3,3 +3,5 @@ // SPDX-FileCopyrightText: Copyright (c) 2024 Adafruit Industries LLC // // SPDX-License-Identifier: MIT + +#pragma once diff --git a/supervisor/shared/rgb_led_colors.h b/supervisor/shared/rgb_led_colors.h index bf2d7697c7d2..8e553d6d23e1 100644 --- a/supervisor/shared/rgb_led_colors.h +++ b/supervisor/shared/rgb_led_colors.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #define COLOR(r, g, b) (((r) << 16) | ((g) << 8) | (b)) // For brightness == 255 (full). This will be adjusted downward for various different RGB indicators, // which vary in brightness. diff --git a/supervisor/shared/traceback.h b/supervisor/shared/traceback.h index 64994c26a0f6..f67a8cc89aba 100644 --- a/supervisor/shared/traceback.h +++ b/supervisor/shared/traceback.h @@ -4,6 +4,8 @@ // // SPDX-License-Identifier: MIT +#pragma once + #ifndef MICROPY_INCLUDED_SUPERVISOR_TRACEBACK_H #define MICROPY_INCLUDED_SUPERVISOR_TRACEBACK_H From 950b5d09d2ce0793fd7a1788725f39112ad1d6e1 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Sun, 19 May 2024 20:40:44 -0400 Subject: [PATCH 046/227] guard2once -s ... --- devices/ble_hci/common-hal/_bleio/Adapter.h | 5 +---- devices/ble_hci/common-hal/_bleio/Attribute.h | 5 +---- devices/ble_hci/common-hal/_bleio/Characteristic.h | 5 +---- devices/ble_hci/common-hal/_bleio/CharacteristicBuffer.h | 5 +---- devices/ble_hci/common-hal/_bleio/Connection.h | 5 +---- devices/ble_hci/common-hal/_bleio/Descriptor.h | 5 +---- devices/ble_hci/common-hal/_bleio/PacketBuffer.h | 5 +---- devices/ble_hci/common-hal/_bleio/Service.h | 5 +---- devices/ble_hci/common-hal/_bleio/UUID.h | 5 +---- devices/ble_hci/common-hal/_bleio/__init__.h | 5 +---- devices/ble_hci/common-hal/_bleio/att.h | 5 +---- devices/ble_hci/common-hal/_bleio/hci.h | 5 +---- devices/ble_hci/common-hal/_bleio/hci_include/addr.h | 5 +---- devices/ble_hci/common-hal/_bleio/hci_include/att.h | 5 +---- devices/ble_hci/common-hal/_bleio/hci_include/hci.h | 5 +---- devices/ble_hci/supervisor/bluetooth.h | 5 +---- ports/atmel-samd/asf4_conf/samd21/hpl_adc_config.h | 5 +---- ports/atmel-samd/asf4_conf/samd21/hpl_dac_config.h | 5 +---- ports/atmel-samd/asf4_conf/samd21/hpl_dmac_config.h | 5 +---- ports/atmel-samd/asf4_conf/samd21/hpl_gclk_config.h | 5 +---- ports/atmel-samd/asf4_conf/samd21/hpl_nvmctrl_config.h | 5 +---- ports/atmel-samd/asf4_conf/samd21/hpl_pm_config.h | 5 +---- ports/atmel-samd/asf4_conf/samd21/hpl_rtc_config.h | 5 +---- ports/atmel-samd/asf4_conf/samd21/hpl_sercom_config.h | 5 +---- ports/atmel-samd/asf4_conf/samd21/hpl_sysctrl_config.h | 5 +---- ports/atmel-samd/asf4_conf/samd21/hpl_systick_config.h | 5 +---- ports/atmel-samd/asf4_conf/samd21/hpl_tc_config.h | 5 +---- ports/atmel-samd/asf4_conf/samd21/peripheral_clk_config.h | 5 +---- ports/atmel-samd/asf4_conf/samd51/hpl_adc_config.h | 5 +---- ports/atmel-samd/asf4_conf/samd51/hpl_dac_config.h | 5 +---- ports/atmel-samd/asf4_conf/samd51/hpl_dmac_config.h | 5 +---- ports/atmel-samd/asf4_conf/samd51/hpl_gclk_config.h | 5 +---- ports/atmel-samd/asf4_conf/samd51/hpl_mclk_config.h | 5 +---- ports/atmel-samd/asf4_conf/samd51/hpl_nvmctrl_config.h | 5 +---- ports/atmel-samd/asf4_conf/samd51/hpl_osc32kctrl_config.h | 5 +---- ports/atmel-samd/asf4_conf/samd51/hpl_oscctrl_config.h | 5 +---- ports/atmel-samd/asf4_conf/samd51/hpl_rtc_config.h | 5 +---- ports/atmel-samd/asf4_conf/samd51/hpl_sdhc_config.h | 5 +---- ports/atmel-samd/asf4_conf/samd51/hpl_sercom_config.h | 5 +---- ports/atmel-samd/asf4_conf/samd51/hpl_systick_config.h | 5 +---- ports/atmel-samd/asf4_conf/samd51/hpl_tc_config.h | 5 +---- ports/atmel-samd/asf4_conf/samd51/hpl_trng_config.h | 5 +---- ports/atmel-samd/asf4_conf/samd51/peripheral_clk_config.h | 5 +---- ports/atmel-samd/asf4_conf/same51/hpl_adc_config.h | 5 +---- ports/atmel-samd/asf4_conf/same51/hpl_dac_config.h | 5 +---- ports/atmel-samd/asf4_conf/same51/hpl_dmac_config.h | 5 +---- ports/atmel-samd/asf4_conf/same51/hpl_gclk_config.h | 5 +---- ports/atmel-samd/asf4_conf/same51/hpl_mclk_config.h | 5 +---- ports/atmel-samd/asf4_conf/same51/hpl_nvmctrl_config.h | 5 +---- ports/atmel-samd/asf4_conf/same51/hpl_osc32kctrl_config.h | 5 +---- ports/atmel-samd/asf4_conf/same51/hpl_oscctrl_config.h | 5 +---- ports/atmel-samd/asf4_conf/same51/hpl_rtc_config.h | 5 +---- ports/atmel-samd/asf4_conf/same51/hpl_sdhc_config.h | 5 +---- ports/atmel-samd/asf4_conf/same51/hpl_sercom_config.h | 5 +---- ports/atmel-samd/asf4_conf/same51/hpl_systick_config.h | 5 +---- ports/atmel-samd/asf4_conf/same51/hpl_tc_config.h | 5 +---- ports/atmel-samd/asf4_conf/same51/hpl_trng_config.h | 5 +---- ports/atmel-samd/asf4_conf/same51/peripheral_clk_config.h | 5 +---- ports/atmel-samd/asf4_conf/same54/hpl_adc_config.h | 5 +---- ports/atmel-samd/asf4_conf/same54/hpl_dac_config.h | 5 +---- ports/atmel-samd/asf4_conf/same54/hpl_dmac_config.h | 5 +---- ports/atmel-samd/asf4_conf/same54/hpl_gclk_config.h | 5 +---- ports/atmel-samd/asf4_conf/same54/hpl_mclk_config.h | 5 +---- ports/atmel-samd/asf4_conf/same54/hpl_nvmctrl_config.h | 5 +---- ports/atmel-samd/asf4_conf/same54/hpl_osc32kctrl_config.h | 5 +---- ports/atmel-samd/asf4_conf/same54/hpl_oscctrl_config.h | 5 +---- ports/atmel-samd/asf4_conf/same54/hpl_rtc_config.h | 5 +---- ports/atmel-samd/asf4_conf/same54/hpl_sdhc_config.h | 5 +---- ports/atmel-samd/asf4_conf/same54/hpl_sercom_config.h | 5 +---- ports/atmel-samd/asf4_conf/same54/hpl_systick_config.h | 5 +---- ports/atmel-samd/asf4_conf/same54/hpl_tc_config.h | 5 +---- ports/atmel-samd/asf4_conf/same54/hpl_trng_config.h | 5 +---- ports/atmel-samd/asf4_conf/same54/peripheral_clk_config.h | 5 +---- ports/atmel-samd/audio_dma.h | 5 +---- ports/atmel-samd/background.h | 5 +---- ports/atmel-samd/bindings/samd/Clock.h | 5 +---- ports/atmel-samd/common-hal/_pew/PewPew.h | 5 +---- ports/atmel-samd/common-hal/_pew/__init__.h | 5 +---- ports/atmel-samd/common-hal/analogio/AnalogIn.h | 5 +---- ports/atmel-samd/common-hal/analogio/AnalogOut.h | 5 +---- ports/atmel-samd/common-hal/audiobusio/I2SOut.h | 5 +---- ports/atmel-samd/common-hal/audiobusio/PDMIn.h | 5 +---- ports/atmel-samd/common-hal/audioio/AudioOut.h | 5 +---- ports/atmel-samd/common-hal/busio/I2C.h | 5 +---- ports/atmel-samd/common-hal/busio/SPI.h | 5 +---- ports/atmel-samd/common-hal/busio/UART.h | 5 +---- ports/atmel-samd/common-hal/busio/__init__.h | 6 +----- ports/atmel-samd/common-hal/countio/Counter.h | 5 +---- ports/atmel-samd/common-hal/digitalio/DigitalInOut.h | 5 +---- ports/atmel-samd/common-hal/frequencyio/FrequencyIn.h | 6 +----- ports/atmel-samd/common-hal/i2ctarget/I2CTarget.h | 5 +---- ports/atmel-samd/common-hal/microcontroller/Pin.h | 5 +---- ports/atmel-samd/common-hal/microcontroller/Processor.h | 5 +---- ports/atmel-samd/common-hal/nvm/ByteArray.h | 5 +---- ports/atmel-samd/common-hal/ps2io/Ps2.h | 5 +---- ports/atmel-samd/common-hal/rgbmatrix/RGBMatrix.h | 5 +---- ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.h | 5 +---- ports/atmel-samd/common-hal/touchio/TouchIn.h | 5 +---- ports/atmel-samd/common-hal/watchdog/WatchDogTimer.h | 5 +---- ports/atmel-samd/mpconfigport.h | 5 +---- ports/atmel-samd/mphalport.h | 5 +---- ports/atmel-samd/reset.h | 5 +---- ports/atmel-samd/samd_peripherals_config.h | 6 +----- ports/atmel-samd/sd_mmc/conf_sd_mmc.h | 5 +---- ports/atmel-samd/sd_mmc/sd_mmc.h | 5 +---- ports/atmel-samd/sd_mmc/sd_mmc_protocol.h | 5 +---- ports/atmel-samd/supervisor/internal_flash.h | 5 +---- ports/atmel-samd/timer_handler.h | 5 +---- ports/broadcom/background.h | 5 +---- ports/broadcom/common-hal/busio/I2C.h | 5 +---- ports/broadcom/common-hal/busio/SPI.h | 5 +---- ports/broadcom/common-hal/busio/UART.h | 5 +---- ports/broadcom/common-hal/digitalio/DigitalInOut.h | 5 +---- ports/broadcom/common-hal/microcontroller/Pin.h | 5 +---- ports/broadcom/common-hal/microcontroller/Processor.h | 5 +---- ports/broadcom/common-hal/microcontroller/__init__.h | 5 +---- ports/broadcom/common-hal/rtc/RTC.h | 5 +---- ports/broadcom/mpconfigport.h | 5 +---- ports/broadcom/mphalport.h | 5 +---- ports/broadcom/supervisor/internal_flash.h | 5 +---- ports/cxd56/alloca.h | 5 +---- ports/cxd56/common-hal/analogio/AnalogIn.h | 5 +---- ports/cxd56/common-hal/analogio/AnalogOut.h | 5 +---- ports/cxd56/common-hal/busio/I2C.h | 5 +---- ports/cxd56/common-hal/busio/SPI.h | 5 +---- ports/cxd56/common-hal/busio/UART.h | 5 +---- ports/cxd56/common-hal/camera/Camera.h | 5 +---- ports/cxd56/common-hal/digitalio/DigitalInOut.h | 5 +---- ports/cxd56/common-hal/gnss/GNSS.h | 5 +---- ports/cxd56/common-hal/microcontroller/Pin.h | 5 +---- ports/cxd56/common-hal/microcontroller/Processor.h | 5 +---- ports/cxd56/common-hal/sdioio/SDCard.h | 5 +---- ports/cxd56/mpconfigport.h | 5 +---- ports/cxd56/mphalport.h | 5 +---- ports/espressif/background.h | 5 +---- ports/espressif/bindings/espidf/__init__.h | 5 +---- ports/espressif/bindings/espulp/Architecture.h | 5 +---- ports/espressif/common-hal/_bleio/Adapter.h | 5 +---- ports/espressif/common-hal/_bleio/Attribute.h | 5 +---- ports/espressif/common-hal/_bleio/bonding.h | 5 +---- ports/espressif/common-hal/analogbufio/BufferedIn.h | 5 +---- ports/espressif/common-hal/analogio/AnalogIn.h | 5 +---- ports/espressif/common-hal/analogio/AnalogOut.h | 5 +---- ports/espressif/common-hal/busio/I2C.h | 5 +---- ports/espressif/common-hal/busio/UART.h | 5 +---- ports/espressif/common-hal/digitalio/DigitalInOut.h | 5 +---- ports/espressif/common-hal/dualbank/__init__.h | 5 +---- ports/espressif/common-hal/i2ctarget/I2CTarget.h | 5 +---- ports/espressif/common-hal/memorymap/AddressRange.h | 5 +---- ports/espressif/common-hal/microcontroller/Pin.h | 5 +---- ports/espressif/common-hal/microcontroller/Processor.h | 5 +---- ports/espressif/common-hal/nvm/ByteArray.h | 5 +---- ports/espressif/common-hal/ps2io/Ps2.h | 5 +---- ports/espressif/common-hal/rgbmatrix/RGBMatrix.h | 5 +---- ports/espressif/common-hal/rtc/RTC.h | 5 +---- ports/espressif/common-hal/socketpool/SocketPool.h | 5 +---- ports/espressif/common-hal/touchio/TouchIn.h | 5 +---- ports/espressif/common-hal/watchdog/WatchDogTimer.h | 5 +---- ports/espressif/common-hal/wifi/Monitor.h | 5 +---- ports/espressif/common-hal/wifi/Network.h | 5 +---- ports/espressif/common-hal/wifi/Radio.h | 5 +---- ports/espressif/common-hal/wifi/ScannedNetworks.h | 5 +---- ports/espressif/common-hal/wifi/__init__.h | 5 +---- ports/espressif/mpconfigport.h | 5 +---- ports/espressif/mphalport.h | 5 +---- ports/espressif/peripherals/esp32/pins.h | 5 +---- ports/espressif/peripherals/esp32c3/pins.h | 5 +---- ports/espressif/peripherals/esp32s2/pins.h | 5 +---- ports/espressif/peripherals/esp32s3/pins.h | 5 +---- ports/espressif/peripherals/i2c.h | 5 +---- ports/espressif/peripherals/pins.h | 5 +---- ports/espressif/peripherals/touch.h | 5 +---- ports/espressif/pmic/axp192/axp192.h | 5 +---- ports/espressif/supervisor/internal_flash.h | 5 +---- ports/litex/boards/fomu/csr.h | 5 +---- ports/litex/boards/fomu/generated/soc.h | 5 +---- ports/litex/common-hal/digitalio/DigitalInOut.h | 5 +---- ports/litex/common-hal/microcontroller/Pin.h | 5 +---- ports/litex/common-hal/microcontroller/Processor.h | 5 +---- ports/litex/hw/common.h | 4 +--- ports/litex/irq.h | 5 +---- ports/litex/mpconfigport.h | 6 +----- ports/litex/mphalport.h | 5 +---- ports/litex/supervisor/internal_flash.h | 5 +---- ports/mimxrt10xx/boards/flash_config.h | 5 +---- ports/mimxrt10xx/common-hal/analogio/AnalogIn.h | 5 +---- ports/mimxrt10xx/common-hal/analogio/AnalogOut.h | 5 +---- ports/mimxrt10xx/common-hal/microcontroller/Processor.h | 5 +---- ports/mimxrt10xx/common-hal/rtc/RTC.h | 5 +---- ports/mimxrt10xx/common-hal/usb_host/Port.h | 5 +---- ports/mimxrt10xx/mpconfigport.h | 5 +---- ports/mimxrt10xx/mphalport.h | 5 +---- ports/mimxrt10xx/peripherals/mimxrt10xx/periph.h | 5 +---- ports/mimxrt10xx/peripherals/mimxrt10xx/pins.h | 5 +---- ports/mimxrt10xx/reset.h | 5 +---- ports/mimxrt10xx/supervisor/internal_flash.h | 6 +----- ports/nordic/background.h | 5 +---- ports/nordic/bluetooth/ble_drv.h | 5 +---- ports/nordic/common-hal/_bleio/Adapter.h | 5 +---- ports/nordic/common-hal/_bleio/Attribute.h | 5 +---- ports/nordic/common-hal/_bleio/Characteristic.h | 5 +---- ports/nordic/common-hal/_bleio/CharacteristicBuffer.h | 5 +---- ports/nordic/common-hal/_bleio/Connection.h | 5 +---- ports/nordic/common-hal/_bleio/Descriptor.h | 5 +---- ports/nordic/common-hal/_bleio/PacketBuffer.h | 5 +---- ports/nordic/common-hal/_bleio/Service.h | 5 +---- ports/nordic/common-hal/_bleio/UUID.h | 5 +---- ports/nordic/common-hal/_bleio/__init__.h | 5 +---- ports/nordic/common-hal/_bleio/bonding.h | 5 +---- ports/nordic/common-hal/analogio/AnalogIn.h | 5 +---- ports/nordic/common-hal/analogio/AnalogOut.h | 5 +---- ports/nordic/common-hal/audiobusio/I2SOut.h | 5 +---- ports/nordic/common-hal/audiobusio/PDMIn.h | 5 +---- ports/nordic/common-hal/busio/I2C.h | 5 +---- ports/nordic/common-hal/busio/SPI.h | 5 +---- ports/nordic/common-hal/busio/UART.h | 5 +---- ports/nordic/common-hal/countio/Counter.h | 5 +---- ports/nordic/common-hal/digitalio/DigitalInOut.h | 5 +---- ports/nordic/common-hal/memorymap/AddressRange.h | 5 +---- ports/nordic/common-hal/microcontroller/Pin.h | 5 +---- ports/nordic/common-hal/microcontroller/Processor.h | 5 +---- ports/nordic/common-hal/neopixel_write/__init__.h | 5 +---- ports/nordic/common-hal/nvm/ByteArray.h | 5 +---- ports/nordic/common-hal/rgbmatrix/RGBMatrix.h | 5 +---- ports/nordic/common-hal/rotaryio/IncrementalEncoder.h | 5 +---- ports/nordic/common-hal/rtc/RTC.h | 5 +---- ports/nordic/common-hal/watchdog/WatchDogTimer.h | 5 +---- ports/nordic/mpconfigport.h | 5 +---- ports/nordic/mphalport.h | 5 +---- ports/nordic/nrfx_config.h | 5 +---- ports/nordic/nrfx_glue.h | 5 +---- ports/nordic/nrfx_log.h | 5 +---- ports/nordic/peripherals/nrf/nrf52833/pins.h | 5 +---- ports/nordic/peripherals/nrf/nrf52840/pins.h | 5 +---- ports/nordic/peripherals/nrf/pins.h | 5 +---- ports/nordic/sd_mutex.h | 5 +---- ports/nordic/supervisor/internal_flash.h | 5 +---- ports/raspberrypi/audio_dma.h | 5 +---- ports/raspberrypi/background.h | 5 +---- ports/raspberrypi/bindings/rp2pio/StateMachine.h | 5 +---- .../raspberrypi/boards/pimoroni_badger2040/badger-shared.h | 5 +---- .../raspberrypi/boards/pimoroni_badger2040w/badger-shared.h | 5 +---- .../boards/pimoroni_inky_frame_5_7/inky-shared.h | 5 +---- .../boards/pimoroni_inky_frame_7_3/inky-shared.h | 5 +---- ports/raspberrypi/common-hal/analogbufio/BufferedIn.h | 5 +---- ports/raspberrypi/common-hal/analogio/AnalogIn.h | 5 +---- ports/raspberrypi/common-hal/analogio/AnalogOut.h | 5 +---- ports/raspberrypi/common-hal/audiobusio/I2SOut.h | 5 +---- ports/raspberrypi/common-hal/audiobusio/PDMIn.h | 5 +---- ports/raspberrypi/common-hal/busio/I2C.h | 5 +---- ports/raspberrypi/common-hal/busio/SPI.h | 5 +---- ports/raspberrypi/common-hal/busio/UART.h | 5 +---- ports/raspberrypi/common-hal/countio/Counter.h | 5 +---- ports/raspberrypi/common-hal/digitalio/DigitalInOut.h | 5 +---- ports/raspberrypi/common-hal/memorymap/AddressRange.h | 5 +---- ports/raspberrypi/common-hal/microcontroller/Pin.h | 5 +---- ports/raspberrypi/common-hal/microcontroller/Processor.h | 5 +---- ports/raspberrypi/common-hal/microcontroller/__init__.h | 5 +---- ports/raspberrypi/common-hal/nvm/ByteArray.h | 5 +---- ports/raspberrypi/common-hal/rgbmatrix/RGBMatrix.h | 5 +---- ports/raspberrypi/common-hal/rp2pio/StateMachine.h | 5 +---- ports/raspberrypi/common-hal/rtc/RTC.h | 5 +---- ports/raspberrypi/common-hal/watchdog/WatchDogTimer.h | 5 +---- ports/raspberrypi/common-hal/wifi/Monitor.h | 5 +---- ports/raspberrypi/cyw43_configport.h | 5 +---- ports/raspberrypi/mpconfigport.h | 5 +---- ports/raspberrypi/mphalport.h | 5 +---- ports/raspberrypi/peripherals/pins.h | 5 +---- ports/raspberrypi/supervisor/internal_flash.h | 5 +---- ports/stm/boards/swan_r5/board.h | 6 +----- ports/stm/common-hal/analogio/AnalogIn.h | 5 +---- ports/stm/common-hal/analogio/AnalogOut.h | 5 +---- ports/stm/common-hal/audiobusio/MEMS_Audio.h | 6 +----- ports/stm/common-hal/audiobusio/MEMS_Audio_ll.h | 6 +----- ports/stm/common-hal/audiobusio/MEMS_Audio_ll_stm32l4.h | 6 +----- ports/stm/common-hal/audiobusio/OpenPDMFilter.h | 4 +--- ports/stm/common-hal/audiobusio/PDMIn.h | 6 +----- ports/stm/common-hal/busio/I2C.h | 5 +---- ports/stm/common-hal/busio/SPI.h | 5 +---- ports/stm/common-hal/busio/UART.h | 5 +---- ports/stm/common-hal/digitalio/DigitalInOut.h | 5 +---- ports/stm/common-hal/microcontroller/Pin.h | 5 +---- ports/stm/common-hal/microcontroller/Processor.h | 5 +---- ports/stm/common-hal/nvm/ByteArray.h | 5 +---- ports/stm/common-hal/rgbmatrix/RGBMatrix.h | 5 +---- ports/stm/common-hal/rtc/RTC.h | 5 +---- ports/stm/common-hal/sdioio/SDCard.h | 5 +---- ports/stm/mpconfigport.h | 5 +---- ports/stm/mphalport.h | 5 +---- ports/stm/peripherals/exti.h | 5 +---- ports/stm/peripherals/periph.h | 5 +---- ports/stm/peripherals/pins.h | 5 +---- ports/stm/peripherals/rtc.h | 5 +---- ports/stm/peripherals/stm32f4/stm32f401xe/periph.h | 5 +---- ports/stm/peripherals/stm32f4/stm32f401xe/pins.h | 6 +----- ports/stm/peripherals/stm32f4/stm32f405xx/periph.h | 6 +----- ports/stm/peripherals/stm32f4/stm32f405xx/pins.h | 5 +---- ports/stm/peripherals/stm32f4/stm32f407xx/periph.h | 6 +----- ports/stm/peripherals/stm32f4/stm32f407xx/pins.h | 5 +---- ports/stm/peripherals/stm32f4/stm32f411xe/periph.h | 5 +---- ports/stm/peripherals/stm32f4/stm32f411xe/pins.h | 6 +----- ports/stm/peripherals/stm32f4/stm32f412cx/periph.h | 5 +---- ports/stm/peripherals/stm32f4/stm32f412cx/pins.h | 5 +---- ports/stm/peripherals/stm32f4/stm32f412zx/periph.h | 5 +---- ports/stm/peripherals/stm32f4/stm32f412zx/pins.h | 5 +---- ports/stm/peripherals/stm32f4/stm32f446xx/periph.h | 5 +---- ports/stm/peripherals/stm32f4/stm32f446xx/pins.h | 5 +---- ports/stm/peripherals/stm32f7/stm32f746xx/periph.h | 5 +---- ports/stm/peripherals/stm32f7/stm32f746xx/pins.h | 5 +---- ports/stm/peripherals/stm32f7/stm32f767xx/periph.h | 5 +---- ports/stm/peripherals/stm32f7/stm32f767xx/pins.h | 5 +---- ports/stm/peripherals/stm32h7/stm32h743xx/periph.h | 5 +---- ports/stm/peripherals/stm32h7/stm32h743xx/pins.h | 5 +---- ports/stm/peripherals/stm32l4/stm32l4r5xx/periph.h | 6 +----- ports/stm/peripherals/stm32l4/stm32l4r5xx/pins.h | 5 +---- ports/stm/supervisor/internal_flash.h | 5 +---- py/circuitpy_mpconfig.h | 5 +---- py/proto.h | 5 +---- py/ringbuf.h | 5 +---- shared-bindings/_bleio/Adapter.h | 5 +---- shared-bindings/_bleio/Address.h | 5 +---- shared-bindings/_bleio/Attribute.h | 5 +---- shared-bindings/_bleio/Characteristic.h | 5 +---- shared-bindings/_bleio/CharacteristicBuffer.h | 5 +---- shared-bindings/_bleio/Connection.h | 5 +---- shared-bindings/_bleio/Descriptor.h | 5 +---- shared-bindings/_bleio/PacketBuffer.h | 5 +---- shared-bindings/_bleio/ScanEntry.h | 5 +---- shared-bindings/_bleio/ScanResults.h | 5 +---- shared-bindings/_bleio/Service.h | 5 +---- shared-bindings/_bleio/UUID.h | 5 +---- shared-bindings/_bleio/__init__.h | 5 +---- shared-bindings/_eve/__init__.h | 5 +---- shared-bindings/_pew/PewPew.h | 5 +---- shared-bindings/_stage/Layer.h | 5 +---- shared-bindings/_stage/Text.h | 5 +---- shared-bindings/_stage/__init__.h | 5 +---- shared-bindings/adafruit_bus_device/__init__.h | 5 +---- shared-bindings/adafruit_bus_device/i2c_device/I2CDevice.h | 5 +---- shared-bindings/adafruit_bus_device/spi_device/SPIDevice.h | 5 +---- shared-bindings/adafruit_pixelbuf/PixelBuf.h | 5 +---- shared-bindings/aesio/__init__.h | 5 +---- shared-bindings/alarm/SleepMemory.h | 5 +---- shared-bindings/alarm/__init__.h | 5 +---- shared-bindings/alarm/pin/PinAlarm.h | 5 +---- shared-bindings/alarm/time/TimeAlarm.h | 5 +---- shared-bindings/alarm/touch/TouchAlarm.h | 5 +---- shared-bindings/analogbufio/BufferedIn.h | 5 +---- shared-bindings/analogbufio/__init__.h | 5 +---- shared-bindings/analogio/AnalogIn.h | 5 +---- shared-bindings/analogio/AnalogOut.h | 5 +---- shared-bindings/analogio/__init__.h | 5 +---- shared-bindings/audiobusio/I2SOut.h | 5 +---- shared-bindings/audiobusio/PDMIn.h | 5 +---- shared-bindings/audiobusio/__init__.h | 5 +---- shared-bindings/audiocore/RawSample.h | 5 +---- shared-bindings/audiocore/WaveFile.h | 5 +---- shared-bindings/audiocore/__init__.h | 5 +---- shared-bindings/audioio/AudioOut.h | 5 +---- shared-bindings/audioio/__init__.h | 5 +---- shared-bindings/audiomixer/Mixer.h | 5 +---- shared-bindings/audiomixer/MixerVoice.h | 5 +---- shared-bindings/audiomixer/__init__.h | 5 +---- shared-bindings/audiomp3/MP3Decoder.h | 5 +---- shared-bindings/audiomp3/__init__.h | 5 +---- shared-bindings/audiopwmio/PWMAudioOut.h | 5 +---- shared-bindings/audiopwmio/__init__.h | 5 +---- shared-bindings/bitbangio/I2C.h | 5 +---- shared-bindings/bitbangio/SPI.h | 5 +---- shared-bindings/bitbangio/__init__.h | 5 +---- shared-bindings/bitmaptools/__init__.h | 4 +--- shared-bindings/board/__init__.h | 5 +---- shared-bindings/busio/SPI.h | 5 +---- shared-bindings/busio/UART.h | 5 +---- shared-bindings/busio/__init__.h | 5 +---- shared-bindings/camera/Camera.h | 5 +---- shared-bindings/camera/ImageFormat.h | 5 +---- shared-bindings/countio/Counter.h | 5 +---- shared-bindings/countio/Edge.h | 5 +---- shared-bindings/countio/__init__.h | 5 +---- shared-bindings/digitalio/DigitalInOut.h | 5 +---- shared-bindings/digitalio/Direction.h | 5 +---- shared-bindings/digitalio/DriveMode.h | 5 +---- shared-bindings/digitalio/Pull.h | 5 +---- shared-bindings/digitalio/__init__.h | 5 +---- shared-bindings/displayio/Bitmap.h | 5 +---- shared-bindings/displayio/ColorConverter.h | 5 +---- shared-bindings/displayio/Group.h | 5 +---- shared-bindings/displayio/OnDiskBitmap.h | 4 +--- shared-bindings/displayio/Palette.h | 5 +---- shared-bindings/displayio/TileGrid.h | 5 +---- shared-bindings/dualbank/__init__.h | 5 +---- shared-bindings/fontio/BuiltinFont.h | 5 +---- shared-bindings/fontio/Glyph.h | 5 +---- shared-bindings/framebufferio/FramebufferDisplay.h | 5 +---- shared-bindings/frequencyio/FrequencyIn.h | 5 +---- shared-bindings/frequencyio/__init__.h | 5 +---- shared-bindings/gifio/OnDiskGif.h | 4 +--- shared-bindings/hashlib/Hash.h | 5 +---- shared-bindings/hashlib/__init__.h | 5 +---- shared-bindings/i2ctarget/I2CTarget.h | 5 +---- shared-bindings/ipaddress/IPv4Address.h | 5 +---- shared-bindings/ipaddress/__init__.h | 5 +---- shared-bindings/keypad/Event.h | 5 +---- shared-bindings/keypad/EventQueue.h | 5 +---- shared-bindings/keypad/KeyMatrix.h | 5 +---- shared-bindings/keypad/Keys.h | 5 +---- shared-bindings/keypad/ShiftRegisterKeys.h | 5 +---- shared-bindings/keypad/__init__.h | 5 +---- shared-bindings/keypad_demux/DemuxKeyMatrix.h | 5 +---- shared-bindings/memorymap/AddressRange.h | 5 +---- shared-bindings/memorymonitor/AllocationAlarm.h | 5 +---- shared-bindings/memorymonitor/AllocationSize.h | 5 +---- shared-bindings/memorymonitor/__init__.h | 5 +---- shared-bindings/microcontroller/Pin.h | 5 +---- shared-bindings/microcontroller/Processor.h | 5 +---- shared-bindings/microcontroller/ResetReason.h | 5 +---- shared-bindings/microcontroller/RunMode.h | 5 +---- shared-bindings/microcontroller/__init__.h | 5 +---- shared-bindings/msgpack/ExtType.h | 5 +---- shared-bindings/msgpack/__init__.h | 5 +---- shared-bindings/neopixel_write/__init__.h | 5 +---- shared-bindings/nvm/ByteArray.h | 5 +---- shared-bindings/onewireio/OneWire.h | 5 +---- shared-bindings/onewireio/__init__.h | 5 +---- shared-bindings/os/__init__.h | 5 +---- shared-bindings/ps2io/Ps2.h | 5 +---- shared-bindings/ps2io/__init__.h | 5 +---- shared-bindings/pulseio/PulseIn.h | 5 +---- shared-bindings/pulseio/PulseOut.h | 5 +---- shared-bindings/pulseio/__init__.h | 5 +---- shared-bindings/pwmio/PWMOut.h | 5 +---- shared-bindings/pwmio/__init__.h | 5 +---- shared-bindings/rainbowio/__init__.h | 5 +---- shared-bindings/random/__init__.h | 5 +---- shared-bindings/rotaryio/IncrementalEncoder.h | 5 +---- shared-bindings/rotaryio/__init__.h | 5 +---- shared-bindings/rtc/RTC.h | 5 +---- shared-bindings/rtc/__init__.h | 5 +---- shared-bindings/sdioio/SDCard.h | 5 +---- shared-bindings/socketpool/Socket.h | 5 +---- shared-bindings/socketpool/SocketPool.h | 5 +---- shared-bindings/socketpool/__init__.h | 5 +---- shared-bindings/ssl/SSLContext.h | 5 +---- shared-bindings/ssl/__init__.h | 5 +---- shared-bindings/storage/__init__.h | 5 +---- shared-bindings/struct/__init__.h | 5 +---- shared-bindings/supervisor/StatusBar.h | 5 +---- shared-bindings/terminalio/Terminal.h | 5 +---- shared-bindings/terminalio/__init__.h | 5 +---- shared-bindings/time/__init__.h | 5 +---- shared-bindings/touchio/TouchIn.h | 5 +---- shared-bindings/touchio/__init__.h | 5 +---- shared-bindings/uheap/__init__.h | 5 +---- shared-bindings/usb/core/Device.h | 5 +---- shared-bindings/usb_cdc/Serial.h | 5 +---- shared-bindings/usb_cdc/__init__.h | 5 +---- shared-bindings/usb_hid/Device.h | 5 +---- shared-bindings/usb_hid/__init__.h | 5 +---- shared-bindings/usb_host/Port.h | 5 +---- shared-bindings/usb_midi/PortIn.h | 5 +---- shared-bindings/usb_midi/PortOut.h | 5 +---- shared-bindings/usb_midi/__init__.h | 5 +---- shared-bindings/ustack/__init__.h | 5 +---- shared-bindings/vectorio/Circle.h | 5 +---- shared-bindings/vectorio/Polygon.h | 6 +----- shared-bindings/vectorio/Rectangle.h | 5 +---- shared-bindings/vectorio/VectorShape.h | 5 +---- shared-bindings/vectorio/__init__.h | 5 +---- shared-bindings/watchdog/WatchDogMode.h | 5 +---- shared-bindings/watchdog/WatchDogTimer.h | 5 +---- shared-bindings/watchdog/__init__.h | 5 +---- shared-bindings/wifi/AuthMode.h | 5 +---- shared-bindings/wifi/Monitor.h | 5 +---- shared-bindings/wifi/Network.h | 5 +---- shared-bindings/wifi/Packet.h | 5 +---- shared-bindings/wifi/Radio.h | 5 +---- shared-bindings/wifi/ScannedNetworks.h | 5 +---- shared-bindings/wifi/__init__.h | 5 +---- shared-bindings/zlib/__init__.h | 5 +---- shared-module/_bleio/Address.h | 5 +---- shared-module/_bleio/Attribute.h | 5 +---- shared-module/_bleio/Characteristic.h | 5 +---- shared-module/_bleio/ScanEntry.h | 5 +---- shared-module/_bleio/ScanResults.h | 5 +---- shared-module/_eve/__init__.h | 5 +---- shared-module/_stage/Layer.h | 5 +---- shared-module/_stage/Text.h | 5 +---- shared-module/adafruit_bus_device/i2c_device/I2CDevice.h | 5 +---- shared-module/adafruit_bus_device/spi_device/SPIDevice.h | 5 +---- shared-module/aesio/__init__.h | 5 +---- shared-module/aesio/aes.h | 6 +----- shared-module/atexit/__init__.h | 5 +---- shared-module/audiocore/RawSample.h | 5 +---- shared-module/audiocore/WaveFile.h | 5 +---- shared-module/audiocore/__init__.h | 5 +---- shared-module/audioio/__init__.h | 5 +---- shared-module/audiomixer/Mixer.h | 5 +---- shared-module/audiomixer/MixerVoice.h | 6 +----- shared-module/audiomixer/__init__.h | 5 +---- shared-module/audiomp3/MP3Decoder.h | 5 +---- shared-module/audiopwmio/__init__.h | 5 +---- shared-module/bitbangio/I2C.h | 5 +---- shared-module/bitbangio/SPI.h | 5 +---- shared-module/board/__init__.h | 5 +---- shared-module/displayio/Bitmap.h | 5 +---- shared-module/displayio/ColorConverter.h | 5 +---- shared-module/displayio/Group.h | 5 +---- shared-module/displayio/OnDiskBitmap.h | 5 +---- shared-module/displayio/Palette.h | 5 +---- shared-module/displayio/Shape.h | 5 +---- shared-module/displayio/TileGrid.h | 5 +---- shared-module/displayio/area.h | 5 +---- shared-module/displayio/mipi_constants.h | 5 +---- shared-module/fontio/BuiltinFont.h | 5 +---- shared-module/framebufferio/FramebufferDisplay.h | 5 +---- shared-module/getpass/__init__.h | 5 +---- shared-module/gifio/OnDiskGif.h | 5 +---- shared-module/ipaddress/IPv4Address.h | 5 +---- shared-module/ipaddress/__init__.h | 5 +---- shared-module/keypad/Event.h | 6 +----- shared-module/keypad/EventQueue.h | 5 +---- shared-module/keypad/KeyMatrix.h | 5 +---- shared-module/keypad/Keys.h | 5 +---- shared-module/keypad/ShiftRegisterKeys.h | 5 +---- shared-module/keypad/__init__.h | 5 +---- shared-module/keypad_demux/DemuxKeyMatrix.h | 5 +---- shared-module/memorymonitor/AllocationAlarm.h | 5 +---- shared-module/memorymonitor/AllocationSize.h | 5 +---- shared-module/memorymonitor/__init__.h | 5 +---- shared-module/msgpack/__init__.h | 5 +---- shared-module/onewireio/OneWire.h | 5 +---- shared-module/struct/__init__.h | 5 +---- shared-module/supervisor/Runtime.h | 5 +---- shared-module/supervisor/StatusBar.h | 5 +---- shared-module/synthio/MidiTrack.h | 5 +---- shared-module/terminalio/Terminal.h | 5 +---- shared-module/touchio/TouchIn.h | 5 +---- shared-module/traceback/__init__.h | 5 +---- shared-module/usb/core/Device.h | 5 +---- shared-module/usb/utf16le.h | 5 +---- shared-module/usb_cdc/Serial.h | 5 +---- shared-module/usb_cdc/__init__.h | 5 +---- shared-module/usb_hid/Device.h | 5 +---- shared-module/usb_hid/__init__.h | 5 +---- shared-module/usb_midi/PortIn.h | 5 +---- shared-module/usb_midi/PortOut.h | 5 +---- shared-module/usb_midi/__init__.h | 5 +---- shared-module/usb_video/uvc_usb_descriptors.h | 6 +----- shared-module/vectorio/Circle.h | 5 +---- shared-module/vectorio/Polygon.h | 5 +---- shared-module/vectorio/Rectangle.h | 5 +---- shared-module/vectorio/VectorShape.h | 5 +---- shared-module/vectorio/__init__.h | 6 +----- shared-module/watchdog/__init__.h | 5 +---- shared/runtime/buffer_helper.h | 5 +---- shared/runtime/context_manager_helpers.h | 5 +---- supervisor/background_callback.h | 5 +---- supervisor/board.h | 5 +---- supervisor/cpu.h | 5 +---- supervisor/fatfs.h | 5 +---- supervisor/flash.h | 5 +---- supervisor/linker.h | 5 +---- supervisor/shared/bluetooth/bluetooth.h | 5 +---- supervisor/shared/bluetooth/file_transfer.h | 5 +---- supervisor/shared/bluetooth/file_transfer_protocol.h | 6 +----- supervisor/shared/bluetooth/serial.h | 5 +---- supervisor/shared/board.h | 5 +---- supervisor/shared/cpu.h | 5 +---- supervisor/shared/display.h | 5 +---- supervisor/shared/external_flash/common_commands.h | 5 +---- supervisor/shared/external_flash/device.h | 5 +---- supervisor/shared/external_flash/external_flash.h | 5 +---- supervisor/shared/external_flash/qspi_flash.h | 5 +---- supervisor/shared/internal_flash.h | 5 +---- supervisor/shared/lock.h | 5 +---- supervisor/shared/reload.h | 5 +---- supervisor/shared/safe_mode.h | 5 +---- supervisor/shared/serial.h | 5 +---- supervisor/shared/status_leds.h | 5 +---- supervisor/shared/tick.h | 5 +---- supervisor/shared/usb/usb_vendor_descriptors.h | 5 +---- supervisor/spi_flash_api.h | 5 +---- 583 files changed, 583 insertions(+), 2349 deletions(-) diff --git a/devices/ble_hci/common-hal/_bleio/Adapter.h b/devices/ble_hci/common-hal/_bleio/Adapter.h index 9c849a8def41..fda1c11d6cb0 100644 --- a/devices/ble_hci/common-hal/_bleio/Adapter.h +++ b/devices/ble_hci/common-hal/_bleio/Adapter.h @@ -6,8 +6,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_ADAPTER_H -#define MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_ADAPTER_H +#pragma once #include "py/obj.h" #include "py/objtuple.h" @@ -75,5 +74,3 @@ uint16_t bleio_adapter_max_attribute_handle(bleio_adapter_obj_t *adapter); void bleio_adapter_background(bleio_adapter_obj_t *adapter); void bleio_adapter_gc_collect(bleio_adapter_obj_t *adapter); void bleio_adapter_reset(bleio_adapter_obj_t *adapter); - -#endif // MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_ADAPTER_H diff --git a/devices/ble_hci/common-hal/_bleio/Attribute.h b/devices/ble_hci/common-hal/_bleio/Attribute.h index a838ba0e95d3..5428c2282a33 100644 --- a/devices/ble_hci/common-hal/_bleio/Attribute.h +++ b/devices/ble_hci/common-hal/_bleio/Attribute.h @@ -4,12 +4,9 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_ATTRIBUTE_H -#define MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_ATTRIBUTE_H +#pragma once #include "shared-module/_bleio/Attribute.h" #include "shared-bindings/_bleio/UUID.h" bleio_uuid_obj_t *bleio_attribute_get_uuid(mp_obj_t *attribute); - -#endif // MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_ATTRIBUTE_H diff --git a/devices/ble_hci/common-hal/_bleio/Characteristic.h b/devices/ble_hci/common-hal/_bleio/Characteristic.h index c30cd8bdfddd..d925c0e263a4 100644 --- a/devices/ble_hci/common-hal/_bleio/Characteristic.h +++ b/devices/ble_hci/common-hal/_bleio/Characteristic.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_CHARACTERISTIC_H -#define MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_CHARACTERISTIC_H +#pragma once #include "shared-bindings/_bleio/Attribute.h" #include "common-hal/_bleio/Descriptor.h" @@ -39,5 +38,3 @@ bool bleio_characteristic_set_local_value(bleio_characteristic_obj_t *self, mp_b void bleio_characteristic_set_observer(bleio_characteristic_obj_t *self, mp_obj_t observer); void bleio_characteristic_clear_observer(bleio_characteristic_obj_t *self); - -#endif // MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_CHARACTERISTIC_H diff --git a/devices/ble_hci/common-hal/_bleio/CharacteristicBuffer.h b/devices/ble_hci/common-hal/_bleio/CharacteristicBuffer.h index ee4d1a3f3d52..1a98df40b526 100644 --- a/devices/ble_hci/common-hal/_bleio/CharacteristicBuffer.h +++ b/devices/ble_hci/common-hal/_bleio/CharacteristicBuffer.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_CHARACTERISTICBUFFER_H -#define MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_CHARACTERISTICBUFFER_H +#pragma once #include "py/ringbuf.h" #include "shared-bindings/_bleio/Characteristic.h" @@ -19,5 +18,3 @@ typedef struct { } bleio_characteristic_buffer_obj_t; void bleio_characteristic_buffer_update(bleio_characteristic_buffer_obj_t *self, mp_buffer_info_t *bufinfo); - -#endif // MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_CHARACTERISTICBUFFER_H diff --git a/devices/ble_hci/common-hal/_bleio/Connection.h b/devices/ble_hci/common-hal/_bleio/Connection.h index ce693edf25c7..04edb104ddcb 100644 --- a/devices/ble_hci/common-hal/_bleio/Connection.h +++ b/devices/ble_hci/common-hal/_bleio/Connection.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_CONNECTION_H -#define MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_CONNECTION_H +#pragma once #include @@ -66,5 +65,3 @@ uint16_t bleio_connection_get_conn_handle(bleio_connection_obj_t *self); mp_obj_t bleio_connection_new_from_internal(bleio_connection_internal_t *connection); bleio_connection_internal_t *bleio_conn_handle_to_connection(uint16_t conn_handle); void bleio_connection_clear(bleio_connection_internal_t *self); - -#endif // MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_CONNECTION_H diff --git a/devices/ble_hci/common-hal/_bleio/Descriptor.h b/devices/ble_hci/common-hal/_bleio/Descriptor.h index fc17e532a5dc..a34961352034 100644 --- a/devices/ble_hci/common-hal/_bleio/Descriptor.h +++ b/devices/ble_hci/common-hal/_bleio/Descriptor.h @@ -6,8 +6,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_DESCRIPTOR_H -#define MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_DESCRIPTOR_H +#pragma once #include "py/obj.h" @@ -29,5 +28,3 @@ typedef struct _bleio_descriptor_obj { bleio_attribute_security_mode_t write_perm; struct _bleio_descriptor_obj *next; } bleio_descriptor_obj_t; - -#endif // MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_DESCRIPTOR_H diff --git a/devices/ble_hci/common-hal/_bleio/PacketBuffer.h b/devices/ble_hci/common-hal/_bleio/PacketBuffer.h index 4ef764db8a25..563f365d21b0 100644 --- a/devices/ble_hci/common-hal/_bleio/PacketBuffer.h +++ b/devices/ble_hci/common-hal/_bleio/PacketBuffer.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_PACKETBUFFER_H -#define MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_PACKETBUFFER_H +#pragma once #include "py/ringbuf.h" #include "shared-bindings/_bleio/Characteristic.h" @@ -30,5 +29,3 @@ typedef struct { } bleio_packet_buffer_obj_t; void bleio_packet_buffer_update(bleio_packet_buffer_obj_t *self, mp_buffer_info_t *bufinfo); - -#endif // MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_PACKETBUFFER_H diff --git a/devices/ble_hci/common-hal/_bleio/Service.h b/devices/ble_hci/common-hal/_bleio/Service.h index 8a58c91db23b..ccaba5704639 100644 --- a/devices/ble_hci/common-hal/_bleio/Service.h +++ b/devices/ble_hci/common-hal/_bleio/Service.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_SERVICE_H -#define MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_SERVICE_H +#pragma once #include "py/objlist.h" #include "common-hal/_bleio/UUID.h" @@ -30,5 +29,3 @@ typedef struct bleio_service_obj { } bleio_service_obj_t; void bleio_service_from_connection(bleio_service_obj_t *self, mp_obj_t connection); - -#endif // MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_SERVICE_H diff --git a/devices/ble_hci/common-hal/_bleio/UUID.h b/devices/ble_hci/common-hal/_bleio/UUID.h index ee492e850f14..3549555521ef 100644 --- a/devices/ble_hci/common-hal/_bleio/UUID.h +++ b/devices/ble_hci/common-hal/_bleio/UUID.h @@ -6,8 +6,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_UUID_H -#define MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_UUID_H +#pragma once #include "py/obj.h" @@ -34,5 +33,3 @@ typedef struct { } bleio_uuid_obj_t; uint16_t bleio_uuid_get_uuid16_or_unknown(bleio_uuid_obj_t *uuid); - -#endif // MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_UUID_H diff --git a/devices/ble_hci/common-hal/_bleio/__init__.h b/devices/ble_hci/common-hal/_bleio/__init__.h index 42f5d77af9da..ae1d3c6559c9 100644 --- a/devices/ble_hci/common-hal/_bleio/__init__.h +++ b/devices/ble_hci/common-hal/_bleio/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_INIT_H -#define MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_INIT_H +#pragma once #include @@ -37,5 +36,3 @@ extern bool vm_used_ble; // UUID shared by all CCCD's. extern bleio_uuid_obj_t cccd_uuid; - -#endif // MICROPY_INCLUDED_BLE_HCI_COMMON_HAL_INIT_H diff --git a/devices/ble_hci/common-hal/_bleio/att.h b/devices/ble_hci/common-hal/_bleio/att.h index 0482bea178d7..99cedfbca708 100644 --- a/devices/ble_hci/common-hal/_bleio/att.h +++ b/devices/ble_hci/common-hal/_bleio/att.h @@ -26,8 +26,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef MICROPY_INCLUDED_DEVICES_BLE_HCI_COMMON_HAL_BLEIO_ATT_H -#define MICROPY_INCLUDED_DEVICES_BLE_HCI_COMMON_HAL_BLEIO_ATT_H +#pragma once #include #include @@ -59,5 +58,3 @@ void att_remove_connection(uint16_t conn_handle, uint8_t reason); void att_set_max_mtu(uint16_t max_mtu); void att_set_timeout(unsigned long timeout); void att_write_cmd(uint16_t conn_handle, uint16_t handle, const uint8_t *data, uint8_t data_len); - -#endif // MICROPY_INCLUDED_DEVICES_BLE_HCI_COMMON_HAL_BLEIO_ATT_H diff --git a/devices/ble_hci/common-hal/_bleio/hci.h b/devices/ble_hci/common-hal/_bleio/hci.h index 06e72482d63f..fffed7ee1512 100644 --- a/devices/ble_hci/common-hal/_bleio/hci.h +++ b/devices/ble_hci/common-hal/_bleio/hci.h @@ -26,8 +26,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef MICROPY_INCLUDED_DEVICES_BLE_HCI_COMMON_HAL_BLEIO_HCI_H -#define MICROPY_INCLUDED_DEVICES_BLE_HCI_COMMON_HAL_BLEIO_HCI_H +#pragma once #include @@ -86,5 +85,3 @@ hci_result_t hci_reset(void); hci_result_t hci_send_acl_pkt(uint16_t handle, uint8_t cid, uint16_t data_len, uint8_t *data); hci_result_t hci_set_event_mask(uint64_t event_mask); - -#endif // MICROPY_INCLUDED_DEVICES_BLE_HCI_COMMON_HAL_BLEIO_HCI_H diff --git a/devices/ble_hci/common-hal/_bleio/hci_include/addr.h b/devices/ble_hci/common-hal/_bleio/hci_include/addr.h index 5d28cecf5e99..d21f1b484f18 100644 --- a/devices/ble_hci/common-hal/_bleio/hci_include/addr.h +++ b/devices/ble_hci/common-hal/_bleio/hci_include/addr.h @@ -11,8 +11,7 @@ * * SPDX-License-Identifier: Apache-2.0 */ -#ifndef ZEPHYR_INCLUDE_BLUETOOTH_ADDR_H_ -#define ZEPHYR_INCLUDE_BLUETOOTH_ADDR_H_ +#pragma once #include #include @@ -93,5 +92,3 @@ static inline bool bt_addr_le_is_identity(const bt_addr_le_t *addr) { /** * @} */ - -#endif /* ZEPHYR_INCLUDE_BLUETOOTH_ADDR_H_ */ diff --git a/devices/ble_hci/common-hal/_bleio/hci_include/att.h b/devices/ble_hci/common-hal/_bleio/hci_include/att.h index 39a32d5e6dd3..5a69ce0969b3 100644 --- a/devices/ble_hci/common-hal/_bleio/hci_include/att.h +++ b/devices/ble_hci/common-hal/_bleio/hci_include/att.h @@ -10,8 +10,7 @@ * * SPDX-License-Identifier: Apache-2.0 */ -#ifndef ZEPHYR_INCLUDE_BLUETOOTH_ATT_H_ -#define ZEPHYR_INCLUDE_BLUETOOTH_ATT_H_ +#pragma once /* Error codes for Error response PDU */ #define BT_ATT_ERR_INVALID_HANDLE 0x01 @@ -39,5 +38,3 @@ #define BT_ATT_ERR_CCC_IMPROPER_CONF 0xfd #define BT_ATT_ERR_PROCEDURE_IN_PROGRESS 0xfe #define BT_ATT_ERR_OUT_OF_RANGE 0xff - -#endif /* ZEPHYR_INCLUDE_BLUETOOTH_ATT_H_ */ diff --git a/devices/ble_hci/common-hal/_bleio/hci_include/hci.h b/devices/ble_hci/common-hal/_bleio/hci_include/hci.h index ffab0a54a56c..f4626222bd9a 100644 --- a/devices/ble_hci/common-hal/_bleio/hci_include/hci.h +++ b/devices/ble_hci/common-hal/_bleio/hci_include/hci.h @@ -9,8 +9,7 @@ * * SPDX-License-Identifier: Apache-2.0 */ -#ifndef ZEPHYR_INCLUDE_BLUETOOTH_HCI_H_ -#define ZEPHYR_INCLUDE_BLUETOOTH_HCI_H_ +#pragma once #include // for __packed @@ -1769,5 +1768,3 @@ struct bt_hci_evt_le_chan_sel_algo { #define BT_EVT_MASK_LE_CHAN_SEL_ALGO BT_EVT_BIT(19) // - -#endif /* ZEPHYR_INCLUDE_BLUETOOTH_HCI_H_ */ diff --git a/devices/ble_hci/supervisor/bluetooth.h b/devices/ble_hci/supervisor/bluetooth.h index 937bebc217fc..3d48ccaab7da 100644 --- a/devices/ble_hci/supervisor/bluetooth.h +++ b/devices/ble_hci/supervisor/bluetooth.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_DEVICE_BLE_HCI_SUPERVISOR_BLUETOOTH_H -#define MICROPY_INCLUDED_DEVICE_BLE_HCI_SUPERVISOR_BLUETOOTH_H +#pragma once void supervisor_start_bluetooth(void); bool supervisor_bluetooth_hook(ble_evt_t *ble_evt); void supervisor_bluetooth_background(void); - -#endif // MICROPY_INCLUDED_DEVICE_BLE_HCI_SUPERVISOR_BLUETOOTH_H diff --git a/ports/atmel-samd/asf4_conf/samd21/hpl_adc_config.h b/ports/atmel-samd/asf4_conf/samd21/hpl_adc_config.h index 38dd90b882a5..245c22822743 100644 --- a/ports/atmel-samd/asf4_conf/samd21/hpl_adc_config.h +++ b/ports/atmel-samd/asf4_conf/samd21/hpl_adc_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_adc_config.h */ -#ifndef HPL_ADC_CONFIG_H -#define HPL_ADC_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -298,5 +297,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_ADC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd21/hpl_dac_config.h b/ports/atmel-samd/asf4_conf/samd21/hpl_dac_config.h index 7fd61880b97a..272008219db1 100644 --- a/ports/atmel-samd/asf4_conf/samd21/hpl_dac_config.h +++ b/ports/atmel-samd/asf4_conf/samd21/hpl_dac_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_dac_config.h */ -#ifndef HPL_DAC_CONFIG_H -#define HPL_DAC_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -88,5 +87,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_DAC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd21/hpl_dmac_config.h b/ports/atmel-samd/asf4_conf/samd21/hpl_dmac_config.h index 84fde946324f..d7cbb136ce33 100644 --- a/ports/atmel-samd/asf4_conf/samd21/hpl_dmac_config.h +++ b/ports/atmel-samd/asf4_conf/samd21/hpl_dmac_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_dmac_config.h */ -#ifndef HPL_DMAC_CONFIG_H -#define HPL_DMAC_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -3059,5 +3058,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_DMAC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd21/hpl_gclk_config.h b/ports/atmel-samd/asf4_conf/samd21/hpl_gclk_config.h index 1b92d9754dd8..6a0cd2d4d146 100644 --- a/ports/atmel-samd/asf4_conf/samd21/hpl_gclk_config.h +++ b/ports/atmel-samd/asf4_conf/samd21/hpl_gclk_config.h @@ -17,8 +17,7 @@ /* Auto-generated config file hpl_gclk_config.h */ -#ifndef HPL_GCLK_CONFIG_H -#define HPL_GCLK_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -711,5 +710,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_GCLK_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd21/hpl_nvmctrl_config.h b/ports/atmel-samd/asf4_conf/samd21/hpl_nvmctrl_config.h index 9b2c815585ab..1b1d499c940a 100644 --- a/ports/atmel-samd/asf4_conf/samd21/hpl_nvmctrl_config.h +++ b/ports/atmel-samd/asf4_conf/samd21/hpl_nvmctrl_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_nvmctrl_config.h */ -#ifndef HPL_NVMCTRL_CONFIG_H -#define HPL_NVMCTRL_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -40,5 +39,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_NVMCTRL_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd21/hpl_pm_config.h b/ports/atmel-samd/asf4_conf/samd21/hpl_pm_config.h index 2a9285b4295d..b7c5fcbf16f4 100644 --- a/ports/atmel-samd/asf4_conf/samd21/hpl_pm_config.h +++ b/ports/atmel-samd/asf4_conf/samd21/hpl_pm_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_pm_config.h */ -#ifndef HPL_PM_CONFIG_H -#define HPL_PM_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -136,5 +135,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_PM_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd21/hpl_rtc_config.h b/ports/atmel-samd/asf4_conf/samd21/hpl_rtc_config.h index 1b7391b4a2a5..f81bc79a10b6 100644 --- a/ports/atmel-samd/asf4_conf/samd21/hpl_rtc_config.h +++ b/ports/atmel-samd/asf4_conf/samd21/hpl_rtc_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_rtc_config.h */ -#ifndef HPL_RTC_CONFIG_H -#define HPL_RTC_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -127,5 +126,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_RTC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd21/hpl_sercom_config.h b/ports/atmel-samd/asf4_conf/samd21/hpl_sercom_config.h index a4b836801df8..5979d1ee9979 100644 --- a/ports/atmel-samd/asf4_conf/samd21/hpl_sercom_config.h +++ b/ports/atmel-samd/asf4_conf/samd21/hpl_sercom_config.h @@ -21,8 +21,7 @@ #define PROTOTYPE_SERCOM_USART_ASYNC_CLOCK_FREQUENCY CONF_GCLK_SERCOM2_CORE_FREQUENCY /* Auto-generated config file hpl_sercom_config.h */ -#ifndef HPL_SERCOM_CONFIG_H -#define HPL_SERCOM_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -734,5 +733,3 @@ #endif // <<< end of configuration section >>> - -#endif // HPL_SERCOM_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd21/hpl_sysctrl_config.h b/ports/atmel-samd/asf4_conf/samd21/hpl_sysctrl_config.h index c27511c71d5f..43235bdee720 100644 --- a/ports/atmel-samd/asf4_conf/samd21/hpl_sysctrl_config.h +++ b/ports/atmel-samd/asf4_conf/samd21/hpl_sysctrl_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_sysctrl_config.h */ -#ifndef HPL_SYSCTRL_CONFIG_H -#define HPL_SYSCTRL_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -680,5 +679,3 @@ #define CONF_DPLL_FILTER SYSCTRL_DPLLCTRLB_FILTER_DEFAULT_Val // <<< end of configuration section >>> - -#endif // HPL_SYSCTRL_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd21/hpl_systick_config.h b/ports/atmel-samd/asf4_conf/samd21/hpl_systick_config.h index 48280a3de761..ccf06c5dc1f6 100644 --- a/ports/atmel-samd/asf4_conf/samd21/hpl_systick_config.h +++ b/ports/atmel-samd/asf4_conf/samd21/hpl_systick_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_systick_config.h */ -#ifndef HPL_SYSTICK_CONFIG_H -#define HPL_SYSTICK_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -20,5 +19,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_SYSTICK_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd21/hpl_tc_config.h b/ports/atmel-samd/asf4_conf/samd21/hpl_tc_config.h index f44feb865bc5..f6a5046493c9 100644 --- a/ports/atmel-samd/asf4_conf/samd21/hpl_tc_config.h +++ b/ports/atmel-samd/asf4_conf/samd21/hpl_tc_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_tc_config.h */ -#ifndef HPL_TC_CONFIG_H -#define HPL_TC_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -183,5 +182,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_TC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd21/peripheral_clk_config.h b/ports/atmel-samd/asf4_conf/samd21/peripheral_clk_config.h index ce63a49f99ab..6679829fac06 100644 --- a/ports/atmel-samd/asf4_conf/samd21/peripheral_clk_config.h +++ b/ports/atmel-samd/asf4_conf/samd21/peripheral_clk_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file peripheral_clk_config.h */ -#ifndef PERIPHERAL_CLK_CONFIG_H -#define PERIPHERAL_CLK_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -435,5 +434,3 @@ #endif // <<< end of configuration section >>> - -#endif // PERIPHERAL_CLK_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_adc_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_adc_config.h index 3ba63a414183..d4e2246beb4b 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_adc_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_adc_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_adc_config.h */ -#ifndef HPL_ADC_CONFIG_H -#define HPL_ADC_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -305,5 +304,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_ADC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_dac_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_dac_config.h index 47924cf0955f..9a80e18c5759 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_dac_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_dac_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_dac_config.h */ -#ifndef HPL_DAC_CONFIG_H -#define HPL_DAC_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -171,5 +170,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_DAC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_dmac_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_dmac_config.h index 479965e59ed3..07a032571e97 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_dmac_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_dmac_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_dmac_config.h */ -#ifndef HPL_DMAC_CONFIG_H -#define HPL_DMAC_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -7279,5 +7278,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_DMAC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_gclk_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_gclk_config.h index 906dfac7f7c5..eac42117da1b 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_gclk_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_gclk_config.h @@ -21,8 +21,7 @@ #define CIRCUITPY_GCLK_INIT_1ST 0xffff /* Auto-generated config file hpl_gclk_config.h */ -#ifndef HPL_GCLK_CONFIG_H -#define HPL_GCLK_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -926,5 +925,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_GCLK_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_mclk_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_mclk_config.h index 263898c6b11f..e4d9ab3924f8 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_mclk_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_mclk_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_mclk_config.h */ -#ifndef HPL_MCLK_CONFIG_H -#define HPL_MCLK_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -106,5 +105,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_MCLK_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_nvmctrl_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_nvmctrl_config.h index 26e8cf558054..f490c9257191 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_nvmctrl_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_nvmctrl_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_nvmctrl_config.h */ -#ifndef HPL_NVMCTRL_CONFIG_H -#define HPL_NVMCTRL_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -38,5 +37,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_NVMCTRL_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_osc32kctrl_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_osc32kctrl_config.h index d2a6b744a9a6..3e3499c3350e 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_osc32kctrl_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_osc32kctrl_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_osc32kctrl_config.h */ -#ifndef HPL_OSC32KCTRL_CONFIG_H -#define HPL_OSC32KCTRL_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -165,5 +164,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_OSC32KCTRL_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_oscctrl_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_oscctrl_config.h index e8d1a04128e9..3d78515d4f20 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_oscctrl_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_oscctrl_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_oscctrl_config.h */ -#ifndef HPL_OSCCTRL_CONFIG_H -#define HPL_OSCCTRL_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -636,5 +635,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_OSCCTRL_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_rtc_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_rtc_config.h index 16d6a5307169..d66f93e34ee3 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_rtc_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_rtc_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_rtc_config.h */ -#ifndef HPL_RTC_CONFIG_H -#define HPL_RTC_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -147,5 +146,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_RTC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_sdhc_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_sdhc_config.h index cdf32e51f328..8c692a7d83c4 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_sdhc_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_sdhc_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_sdhc_config.h */ -#ifndef HPL_SDHC_CONFIG_H -#define HPL_SDHC_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -26,5 +25,3 @@ #endif // <<< end of configuration section >>> - -#endif // HPL_SDHC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_sercom_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_sercom_config.h index c87a35cc7f3e..e05560e63582 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_sercom_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_sercom_config.h @@ -21,8 +21,7 @@ #define PROTOTYPE_SERCOM_USART_ASYNC_CLOCK_FREQUENCY CONF_GCLK_SERCOM2_CORE_FREQUENCY /* Auto-generated config file hpl_sercom_config.h */ -#ifndef HPL_SERCOM_CONFIG_H -#define HPL_SERCOM_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -753,5 +752,3 @@ #endif // <<< end of configuration section >>> - -#endif // HPL_SERCOM_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_systick_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_systick_config.h index 48280a3de761..ccf06c5dc1f6 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_systick_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_systick_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_systick_config.h */ -#ifndef HPL_SYSTICK_CONFIG_H -#define HPL_SYSTICK_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -20,5 +19,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_SYSTICK_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_tc_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_tc_config.h index b73f6143bfae..c61ae5f8d381 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_tc_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_tc_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_tc_config.h */ -#ifndef HPL_TC_CONFIG_H -#define HPL_TC_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -211,5 +210,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_TC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/hpl_trng_config.h b/ports/atmel-samd/asf4_conf/samd51/hpl_trng_config.h index e632208f74c3..b247e6936c31 100644 --- a/ports/atmel-samd/asf4_conf/samd51/hpl_trng_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/hpl_trng_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_trng_config.h */ -#ifndef HPL_TRNG_CONFIG_H -#define HPL_TRNG_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -29,5 +28,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_TRNG_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/samd51/peripheral_clk_config.h b/ports/atmel-samd/asf4_conf/samd51/peripheral_clk_config.h index 1dc0f8091e71..d6fe3b213a03 100644 --- a/ports/atmel-samd/asf4_conf/samd51/peripheral_clk_config.h +++ b/ports/atmel-samd/asf4_conf/samd51/peripheral_clk_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file peripheral_clk_config.h */ -#ifndef PERIPHERAL_CLK_CONFIG_H -#define PERIPHERAL_CLK_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -1172,5 +1171,3 @@ #endif // <<< end of configuration section >>> - -#endif // PERIPHERAL_CLK_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_adc_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_adc_config.h index 3ba63a414183..d4e2246beb4b 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_adc_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_adc_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_adc_config.h */ -#ifndef HPL_ADC_CONFIG_H -#define HPL_ADC_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -305,5 +304,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_ADC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_dac_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_dac_config.h index 47924cf0955f..9a80e18c5759 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_dac_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_dac_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_dac_config.h */ -#ifndef HPL_DAC_CONFIG_H -#define HPL_DAC_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -171,5 +170,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_DAC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_dmac_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_dmac_config.h index 479965e59ed3..07a032571e97 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_dmac_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_dmac_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_dmac_config.h */ -#ifndef HPL_DMAC_CONFIG_H -#define HPL_DMAC_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -7279,5 +7278,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_DMAC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_gclk_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_gclk_config.h index 906dfac7f7c5..eac42117da1b 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_gclk_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_gclk_config.h @@ -21,8 +21,7 @@ #define CIRCUITPY_GCLK_INIT_1ST 0xffff /* Auto-generated config file hpl_gclk_config.h */ -#ifndef HPL_GCLK_CONFIG_H -#define HPL_GCLK_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -926,5 +925,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_GCLK_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_mclk_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_mclk_config.h index 263898c6b11f..e4d9ab3924f8 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_mclk_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_mclk_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_mclk_config.h */ -#ifndef HPL_MCLK_CONFIG_H -#define HPL_MCLK_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -106,5 +105,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_MCLK_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_nvmctrl_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_nvmctrl_config.h index 26e8cf558054..f490c9257191 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_nvmctrl_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_nvmctrl_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_nvmctrl_config.h */ -#ifndef HPL_NVMCTRL_CONFIG_H -#define HPL_NVMCTRL_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -38,5 +37,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_NVMCTRL_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_osc32kctrl_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_osc32kctrl_config.h index d2a6b744a9a6..3e3499c3350e 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_osc32kctrl_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_osc32kctrl_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_osc32kctrl_config.h */ -#ifndef HPL_OSC32KCTRL_CONFIG_H -#define HPL_OSC32KCTRL_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -165,5 +164,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_OSC32KCTRL_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_oscctrl_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_oscctrl_config.h index e8d1a04128e9..3d78515d4f20 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_oscctrl_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_oscctrl_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_oscctrl_config.h */ -#ifndef HPL_OSCCTRL_CONFIG_H -#define HPL_OSCCTRL_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -636,5 +635,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_OSCCTRL_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_rtc_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_rtc_config.h index 16d6a5307169..d66f93e34ee3 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_rtc_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_rtc_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_rtc_config.h */ -#ifndef HPL_RTC_CONFIG_H -#define HPL_RTC_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -147,5 +146,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_RTC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_sdhc_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_sdhc_config.h index cdf32e51f328..8c692a7d83c4 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_sdhc_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_sdhc_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_sdhc_config.h */ -#ifndef HPL_SDHC_CONFIG_H -#define HPL_SDHC_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -26,5 +25,3 @@ #endif // <<< end of configuration section >>> - -#endif // HPL_SDHC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_sercom_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_sercom_config.h index c87a35cc7f3e..e05560e63582 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_sercom_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_sercom_config.h @@ -21,8 +21,7 @@ #define PROTOTYPE_SERCOM_USART_ASYNC_CLOCK_FREQUENCY CONF_GCLK_SERCOM2_CORE_FREQUENCY /* Auto-generated config file hpl_sercom_config.h */ -#ifndef HPL_SERCOM_CONFIG_H -#define HPL_SERCOM_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -753,5 +752,3 @@ #endif // <<< end of configuration section >>> - -#endif // HPL_SERCOM_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_systick_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_systick_config.h index 48280a3de761..ccf06c5dc1f6 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_systick_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_systick_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_systick_config.h */ -#ifndef HPL_SYSTICK_CONFIG_H -#define HPL_SYSTICK_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -20,5 +19,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_SYSTICK_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_tc_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_tc_config.h index b73f6143bfae..c61ae5f8d381 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_tc_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_tc_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_tc_config.h */ -#ifndef HPL_TC_CONFIG_H -#define HPL_TC_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -211,5 +210,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_TC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/hpl_trng_config.h b/ports/atmel-samd/asf4_conf/same51/hpl_trng_config.h index e632208f74c3..b247e6936c31 100644 --- a/ports/atmel-samd/asf4_conf/same51/hpl_trng_config.h +++ b/ports/atmel-samd/asf4_conf/same51/hpl_trng_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_trng_config.h */ -#ifndef HPL_TRNG_CONFIG_H -#define HPL_TRNG_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -29,5 +28,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_TRNG_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same51/peripheral_clk_config.h b/ports/atmel-samd/asf4_conf/same51/peripheral_clk_config.h index f62cf2b3add7..16d85cf8f4ee 100644 --- a/ports/atmel-samd/asf4_conf/same51/peripheral_clk_config.h +++ b/ports/atmel-samd/asf4_conf/same51/peripheral_clk_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file peripheral_clk_config.h */ -#ifndef PERIPHERAL_CLK_CONFIG_H -#define PERIPHERAL_CLK_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -1254,5 +1253,3 @@ #endif // <<< end of configuration section >>> - -#endif // PERIPHERAL_CLK_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_adc_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_adc_config.h index 3ba63a414183..d4e2246beb4b 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_adc_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_adc_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_adc_config.h */ -#ifndef HPL_ADC_CONFIG_H -#define HPL_ADC_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -305,5 +304,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_ADC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_dac_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_dac_config.h index 47924cf0955f..9a80e18c5759 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_dac_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_dac_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_dac_config.h */ -#ifndef HPL_DAC_CONFIG_H -#define HPL_DAC_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -171,5 +170,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_DAC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_dmac_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_dmac_config.h index 479965e59ed3..07a032571e97 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_dmac_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_dmac_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_dmac_config.h */ -#ifndef HPL_DMAC_CONFIG_H -#define HPL_DMAC_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -7279,5 +7278,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_DMAC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_gclk_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_gclk_config.h index 906dfac7f7c5..eac42117da1b 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_gclk_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_gclk_config.h @@ -21,8 +21,7 @@ #define CIRCUITPY_GCLK_INIT_1ST 0xffff /* Auto-generated config file hpl_gclk_config.h */ -#ifndef HPL_GCLK_CONFIG_H -#define HPL_GCLK_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -926,5 +925,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_GCLK_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_mclk_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_mclk_config.h index 263898c6b11f..e4d9ab3924f8 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_mclk_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_mclk_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_mclk_config.h */ -#ifndef HPL_MCLK_CONFIG_H -#define HPL_MCLK_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -106,5 +105,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_MCLK_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_nvmctrl_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_nvmctrl_config.h index 26e8cf558054..f490c9257191 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_nvmctrl_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_nvmctrl_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_nvmctrl_config.h */ -#ifndef HPL_NVMCTRL_CONFIG_H -#define HPL_NVMCTRL_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -38,5 +37,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_NVMCTRL_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_osc32kctrl_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_osc32kctrl_config.h index d2a6b744a9a6..3e3499c3350e 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_osc32kctrl_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_osc32kctrl_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_osc32kctrl_config.h */ -#ifndef HPL_OSC32KCTRL_CONFIG_H -#define HPL_OSC32KCTRL_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -165,5 +164,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_OSC32KCTRL_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_oscctrl_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_oscctrl_config.h index e8d1a04128e9..3d78515d4f20 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_oscctrl_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_oscctrl_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_oscctrl_config.h */ -#ifndef HPL_OSCCTRL_CONFIG_H -#define HPL_OSCCTRL_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -636,5 +635,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_OSCCTRL_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_rtc_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_rtc_config.h index 16d6a5307169..d66f93e34ee3 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_rtc_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_rtc_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_rtc_config.h */ -#ifndef HPL_RTC_CONFIG_H -#define HPL_RTC_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -147,5 +146,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_RTC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_sdhc_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_sdhc_config.h index cdf32e51f328..8c692a7d83c4 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_sdhc_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_sdhc_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_sdhc_config.h */ -#ifndef HPL_SDHC_CONFIG_H -#define HPL_SDHC_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -26,5 +25,3 @@ #endif // <<< end of configuration section >>> - -#endif // HPL_SDHC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_sercom_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_sercom_config.h index c87a35cc7f3e..e05560e63582 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_sercom_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_sercom_config.h @@ -21,8 +21,7 @@ #define PROTOTYPE_SERCOM_USART_ASYNC_CLOCK_FREQUENCY CONF_GCLK_SERCOM2_CORE_FREQUENCY /* Auto-generated config file hpl_sercom_config.h */ -#ifndef HPL_SERCOM_CONFIG_H -#define HPL_SERCOM_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -753,5 +752,3 @@ #endif // <<< end of configuration section >>> - -#endif // HPL_SERCOM_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_systick_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_systick_config.h index 48280a3de761..ccf06c5dc1f6 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_systick_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_systick_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_systick_config.h */ -#ifndef HPL_SYSTICK_CONFIG_H -#define HPL_SYSTICK_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -20,5 +19,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_SYSTICK_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_tc_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_tc_config.h index b73f6143bfae..c61ae5f8d381 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_tc_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_tc_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_tc_config.h */ -#ifndef HPL_TC_CONFIG_H -#define HPL_TC_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -211,5 +210,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_TC_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/hpl_trng_config.h b/ports/atmel-samd/asf4_conf/same54/hpl_trng_config.h index e632208f74c3..b247e6936c31 100644 --- a/ports/atmel-samd/asf4_conf/same54/hpl_trng_config.h +++ b/ports/atmel-samd/asf4_conf/same54/hpl_trng_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file hpl_trng_config.h */ -#ifndef HPL_TRNG_CONFIG_H -#define HPL_TRNG_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -29,5 +28,3 @@ // // <<< end of configuration section >>> - -#endif // HPL_TRNG_CONFIG_H diff --git a/ports/atmel-samd/asf4_conf/same54/peripheral_clk_config.h b/ports/atmel-samd/asf4_conf/same54/peripheral_clk_config.h index f62cf2b3add7..16d85cf8f4ee 100644 --- a/ports/atmel-samd/asf4_conf/same54/peripheral_clk_config.h +++ b/ports/atmel-samd/asf4_conf/same54/peripheral_clk_config.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file peripheral_clk_config.h */ -#ifndef PERIPHERAL_CLK_CONFIG_H -#define PERIPHERAL_CLK_CONFIG_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -1254,5 +1253,3 @@ #endif // <<< end of configuration section >>> - -#endif // PERIPHERAL_CLK_CONFIG_H diff --git a/ports/atmel-samd/audio_dma.h b/ports/atmel-samd/audio_dma.h index 008272a98a9e..284e2cbfd4f2 100644 --- a/ports/atmel-samd/audio_dma.h +++ b/ports/atmel-samd/audio_dma.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_AUDIO_DMA_H -#define MICROPY_INCLUDED_ATMEL_SAMD_AUDIO_DMA_H +#pragma once #include "extmod/vfs_fat.h" #include "py/obj.h" @@ -82,5 +81,3 @@ void audio_dma_background(void); uint8_t find_sync_event_channel_raise(void); void audio_dma_evsys_handler(void); - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_AUDIO_DMA_H diff --git a/ports/atmel-samd/background.h b/ports/atmel-samd/background.h index 67e82c83813d..209029c6ad33 100644 --- a/ports/atmel-samd/background.h +++ b/ports/atmel-samd/background.h @@ -4,9 +4,6 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_BACKGROUND_H -#define MICROPY_INCLUDED_ATMEL_SAMD_BACKGROUND_H +#pragma once #include - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_BACKGROUND_H diff --git a/ports/atmel-samd/bindings/samd/Clock.h b/ports/atmel-samd/bindings/samd/Clock.h index 738b05cb4cc6..b68d5829f9f8 100644 --- a/ports/atmel-samd/bindings/samd/Clock.h +++ b/ports/atmel-samd/bindings/samd/Clock.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_BINDINGS_SAMD_CLOCK_H -#define MICROPY_INCLUDED_ATMEL_SAMD_BINDINGS_SAMD_CLOCK_H +#pragma once #include "py/obj.h" @@ -53,5 +52,3 @@ typedef struct { extern const mp_obj_type_t samd_clock_type; extern const mp_obj_dict_t samd_clock_globals; - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_BINDINGS_SAMD_CLOCK_H diff --git a/ports/atmel-samd/common-hal/_pew/PewPew.h b/ports/atmel-samd/common-hal/_pew/PewPew.h index e7c4cc94fe02..c3d1b52f297a 100644 --- a/ports/atmel-samd/common-hal/_pew/PewPew.h +++ b/ports/atmel-samd/common-hal/_pew/PewPew.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_PEW_PEWPEW_H -#define MICROPY_INCLUDED_PEW_PEWPEW_H +#pragma once #include #include "shared-bindings/digitalio/DigitalInOut.h" @@ -25,5 +24,3 @@ void pew_init(void); void pewpew_interrupt_handler(uint8_t index); void pew_reset(void); uint16_t pew_get_ticks(void); - -#endif // MICROPY_INCLUDED_PEW_PEWPEW_H diff --git a/ports/atmel-samd/common-hal/_pew/__init__.h b/ports/atmel-samd/common-hal/_pew/__init__.h index 8552271ebe48..6759c05a3e25 100644 --- a/ports/atmel-samd/common-hal/_pew/__init__.h +++ b/ports/atmel-samd/common-hal/_pew/__init__.h @@ -4,9 +4,6 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_PEW_H -#define MICROPY_INCLUDED_PEW_H +#pragma once void pew_tick(void); - -#endif // MICROPY_INCLUDED_PEW_H diff --git a/ports/atmel-samd/common-hal/analogio/AnalogIn.h b/ports/atmel-samd/common-hal/analogio/AnalogIn.h index 2c92eccd5a4d..5d97ddcc1566 100644 --- a/ports/atmel-samd/common-hal/analogio/AnalogIn.h +++ b/ports/atmel-samd/common-hal/analogio/AnalogIn.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_ANALOGIO_ANALOGIN_H -#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_ANALOGIO_ANALOGIN_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -19,5 +18,3 @@ typedef struct { } analogio_analogin_obj_t; void analogin_reset(void); - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_ANALOGIO_ANALOGIN_H diff --git a/ports/atmel-samd/common-hal/analogio/AnalogOut.h b/ports/atmel-samd/common-hal/analogio/AnalogOut.h index a5aea945ffcc..7260444d26e5 100644 --- a/ports/atmel-samd/common-hal/analogio/AnalogOut.h +++ b/ports/atmel-samd/common-hal/analogio/AnalogOut.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_ANALOGIO_ANALOGOUT_H -#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_ANALOGIO_ANALOGOUT_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -22,5 +21,3 @@ typedef struct { } analogio_analogout_obj_t; void analogout_reset(void); - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_ANALOGIO_ANALOGOUT_H diff --git a/ports/atmel-samd/common-hal/audiobusio/I2SOut.h b/ports/atmel-samd/common-hal/audiobusio/I2SOut.h index 579a6db5dec9..617221adf218 100644 --- a/ports/atmel-samd/common-hal/audiobusio/I2SOut.h +++ b/ports/atmel-samd/common-hal/audiobusio/I2SOut.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_AUDIOBUSIO_I2SOUT_H -#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_AUDIOBUSIO_I2SOUT_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -32,5 +31,3 @@ typedef struct { void i2sout_reset(void); #endif // CIRCUITPY_AUDIOBUSIO_I2SOUT - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_AUDIOBUSIO_I2SOUT_H diff --git a/ports/atmel-samd/common-hal/audiobusio/PDMIn.h b/ports/atmel-samd/common-hal/audiobusio/PDMIn.h index 29536cee345a..4d2904e10758 100644 --- a/ports/atmel-samd/common-hal/audiobusio/PDMIn.h +++ b/ports/atmel-samd/common-hal/audiobusio/PDMIn.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_AUDIOBUSIO_AUDIOOUT_H -#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_AUDIOBUSIO_AUDIOOUT_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -29,5 +28,3 @@ void pdmin_reset(void); void pdmin_evsys_handler(void); void pdmin_background(void); - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_AUDIOBUSIO_AUDIOOUT_H diff --git a/ports/atmel-samd/common-hal/audioio/AudioOut.h b/ports/atmel-samd/common-hal/audioio/AudioOut.h index 9ec1149ed211..5b77206d3b9d 100644 --- a/ports/atmel-samd/common-hal/audioio/AudioOut.h +++ b/ports/atmel-samd/common-hal/audioio/AudioOut.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_AUDIOIO_AUDIOOUT_H -#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_AUDIOIO_AUDIOOUT_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -28,5 +27,3 @@ typedef struct { } audioio_audioout_obj_t; void audioout_background(void); - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_AUDIOIO_AUDIOOUT_H diff --git a/ports/atmel-samd/common-hal/busio/I2C.h b/ports/atmel-samd/common-hal/busio/I2C.h index ebcba1d0daf0..ef3031a6c6ee 100644 --- a/ports/atmel-samd/common-hal/busio/I2C.h +++ b/ports/atmel-samd/common-hal/busio/I2C.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_I2C_H -#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_I2C_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -23,5 +22,3 @@ typedef struct { extern Sercom *samd_i2c_get_sercom(const mcu_pin_obj_t *scl, const mcu_pin_obj_t *sda, uint8_t *sercom_index, uint32_t *sda_pinmux, uint32_t *scl_pinmux); - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_I2C_H diff --git a/ports/atmel-samd/common-hal/busio/SPI.h b/ports/atmel-samd/common-hal/busio/SPI.h index 3839c101331f..ed8bc220a342 100644 --- a/ports/atmel-samd/common-hal/busio/SPI.h +++ b/ports/atmel-samd/common-hal/busio/SPI.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_SPI_H -#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_SPI_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -21,5 +20,3 @@ typedef struct { uint8_t MOSI_pin; uint8_t MISO_pin; } busio_spi_obj_t; - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_SPI_H diff --git a/ports/atmel-samd/common-hal/busio/UART.h b/ports/atmel-samd/common-hal/busio/UART.h index fd65b06ca110..47d85b4227bb 100644 --- a/ports/atmel-samd/common-hal/busio/UART.h +++ b/ports/atmel-samd/common-hal/busio/UART.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_UART_H -#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_UART_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -27,5 +26,3 @@ typedef struct { uint32_t buffer_length; uint8_t *buffer; } busio_uart_obj_t; - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_UART_H diff --git a/ports/atmel-samd/common-hal/busio/__init__.h b/ports/atmel-samd/common-hal/busio/__init__.h index 293806014f30..a87e38cb7bae 100644 --- a/ports/atmel-samd/common-hal/busio/__init__.h +++ b/ports/atmel-samd/common-hal/busio/__init__.h @@ -4,12 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_INIT_H -#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_INIT_H +#pragma once void reset_sercoms(void); void allow_reset_sercom(Sercom *sercom); void never_reset_sercom(Sercom *sercom); - - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_INIT_H diff --git a/ports/atmel-samd/common-hal/countio/Counter.h b/ports/atmel-samd/common-hal/countio/Counter.h index 3f43e178c998..839754ca6a85 100644 --- a/ports/atmel-samd/common-hal/countio/Counter.h +++ b/ports/atmel-samd/common-hal/countio/Counter.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_COUNTIO_COUNTER_H -#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_COUNTIO_COUNTER_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -21,5 +20,3 @@ typedef struct { void counter_interrupt_handler(uint8_t channel); - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_COUNTIO_COUNT_H diff --git a/ports/atmel-samd/common-hal/digitalio/DigitalInOut.h b/ports/atmel-samd/common-hal/digitalio/DigitalInOut.h index 71e0d59784bb..8f8dcc3a8d6f 100644 --- a/ports/atmel-samd/common-hal/digitalio/DigitalInOut.h +++ b/ports/atmel-samd/common-hal/digitalio/DigitalInOut.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_DIGITALIO_DIGITALINOUT_H -#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_DIGITALIO_DIGITALINOUT_H +#pragma once #include "common-hal/microcontroller/Pin.h" #include "py/obj.h" @@ -16,5 +15,3 @@ typedef struct { bool output; bool open_drain; } digitalio_digitalinout_obj_t; - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_DIGITALIO_DIGITALINOUT_H diff --git a/ports/atmel-samd/common-hal/frequencyio/FrequencyIn.h b/ports/atmel-samd/common-hal/frequencyio/FrequencyIn.h index 3c339b024d14..8fd28b29c990 100644 --- a/ports/atmel-samd/common-hal/frequencyio/FrequencyIn.h +++ b/ports/atmel-samd/common-hal/frequencyio/FrequencyIn.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_FREQUENCYIO_FREQUENCYIN_H -#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_FREQUENCYIO_FREQUENCYIN_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -27,6 +26,3 @@ typedef struct { void frequencyin_interrupt_handler(uint8_t index); void frequencyin_reset(void); - - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_FREQUENCYIO_FREQUENCYIN_H diff --git a/ports/atmel-samd/common-hal/i2ctarget/I2CTarget.h b/ports/atmel-samd/common-hal/i2ctarget/I2CTarget.h index bfb9f61d6382..160b97adec12 100644 --- a/ports/atmel-samd/common-hal/i2ctarget/I2CTarget.h +++ b/ports/atmel-samd/common-hal/i2ctarget/I2CTarget.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_I2C_TARGET_H -#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_I2C_TARGET_H +#pragma once #include "common-hal/microcontroller/Pin.h" #include "py/obj.h" @@ -21,5 +20,3 @@ typedef struct { uint8_t sda_pin; bool writing; } i2ctarget_i2c_target_obj_t; - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_BUSIO_I2C_TARGET_H diff --git a/ports/atmel-samd/common-hal/microcontroller/Pin.h b/ports/atmel-samd/common-hal/microcontroller/Pin.h index 7b8a7ad11016..cce9d84ef330 100644 --- a/ports/atmel-samd/common-hal/microcontroller/Pin.h +++ b/ports/atmel-samd/common-hal/microcontroller/Pin.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_MICROCONTROLLER_PIN_H -#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_MICROCONTROLLER_PIN_H +#pragma once #include @@ -27,5 +26,3 @@ typedef struct { } mcu_pin_function_t; mcu_pin_function_t *mcu_find_pin_function(mcu_pin_function_t *table, const mcu_pin_obj_t *pin, int instance, uint16_t name); - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_MICROCONTROLLER_PIN_H diff --git a/ports/atmel-samd/common-hal/microcontroller/Processor.h b/ports/atmel-samd/common-hal/microcontroller/Processor.h index 23ee8fe5d0fd..e4f5d023e2c0 100644 --- a/ports/atmel-samd/common-hal/microcontroller/Processor.h +++ b/ports/atmel-samd/common-hal/microcontroller/Processor.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H -#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H +#pragma once #define COMMON_HAL_MCU_PROCESSOR_UID_LENGTH 16 @@ -15,5 +14,3 @@ typedef struct { mp_obj_base_t base; // Stores no state currently. } mcu_processor_obj_t; - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H diff --git a/ports/atmel-samd/common-hal/nvm/ByteArray.h b/ports/atmel-samd/common-hal/nvm/ByteArray.h index 72b749ea15ff..a293fc42ea5e 100644 --- a/ports/atmel-samd/common-hal/nvm/ByteArray.h +++ b/ports/atmel-samd/common-hal/nvm/ByteArray.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_NVM_BYTEARRAY_H -#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_NVM_BYTEARRAY_H +#pragma once #include "py/obj.h" @@ -14,5 +13,3 @@ typedef struct { uint8_t *start_address; uint32_t len; } nvm_bytearray_obj_t; - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_NVM_BYTEARRAY_H diff --git a/ports/atmel-samd/common-hal/ps2io/Ps2.h b/ports/atmel-samd/common-hal/ps2io/Ps2.h index a55fea3e32c6..0f806b12484c 100644 --- a/ports/atmel-samd/common-hal/ps2io/Ps2.h +++ b/ports/atmel-samd/common-hal/ps2io/Ps2.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_PS2IO_PS2_H -#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_PS2IO_PS2_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -37,5 +36,3 @@ typedef struct { } ps2io_ps2_obj_t; void ps2_interrupt_handler(uint8_t channel); - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_PS2IO_PS2_H diff --git a/ports/atmel-samd/common-hal/rgbmatrix/RGBMatrix.h b/ports/atmel-samd/common-hal/rgbmatrix/RGBMatrix.h index 002169291322..56c32e5c24f8 100644 --- a/ports/atmel-samd/common-hal/rgbmatrix/RGBMatrix.h +++ b/ports/atmel-samd/common-hal/rgbmatrix/RGBMatrix.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_RGBMATRIX_RGBMATRIX_H -#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_RGBMATRIX_RGBMATRIX_H +#pragma once #include "shared-module/rgbmatrix/RGBMatrix.h" @@ -13,5 +12,3 @@ void *common_hal_rgbmatrix_timer_allocate(rgbmatrix_rgbmatrix_obj_t *self); void common_hal_rgbmatrix_timer_enable(void *); void common_hal_rgbmatrix_timer_disable(void *); void common_hal_rgbmatrix_timer_free(void *); - -#endif diff --git a/ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.h b/ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.h index 347c692a7d7c..f3e8fb0c65de 100644 --- a/ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.h +++ b/ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_ROTARYIO_INCREMENTALENCODER_H -#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_ROTARYIO_INCREMENTALENCODER_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -25,5 +24,3 @@ typedef struct { void incrementalencoder_interrupt_handler(uint8_t channel); - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_ROTARYIO_INCREMENTALENCODER_H diff --git a/ports/atmel-samd/common-hal/touchio/TouchIn.h b/ports/atmel-samd/common-hal/touchio/TouchIn.h index 0d3a7dc87608..6029320e5ba9 100644 --- a/ports/atmel-samd/common-hal/touchio/TouchIn.h +++ b/ports/atmel-samd/common-hal/touchio/TouchIn.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_TOUCHIO_TOUCHIN_H -#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_TOUCHIO_TOUCHIN_H +#pragma once // Native touchio only exists for SAMD21 #ifdef SAMD21 @@ -26,5 +25,3 @@ typedef struct { void touchin_reset(void); #endif // SAMD21 - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_TOUCHIO_TOUCHIN_H diff --git a/ports/atmel-samd/common-hal/watchdog/WatchDogTimer.h b/ports/atmel-samd/common-hal/watchdog/WatchDogTimer.h index 5999836e6e82..ea53104bcc51 100644 --- a/ports/atmel-samd/common-hal/watchdog/WatchDogTimer.h +++ b/ports/atmel-samd/common-hal/watchdog/WatchDogTimer.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_WATCHDOG_WATCHDOGTIMER_H -#define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_WATCHDOG_WATCHDOGTIMER_H +#pragma once #include "py/obj.h" @@ -19,5 +18,3 @@ struct _watchdog_watchdogtimer_obj_t { mp_float_t timeout; watchdog_watchdogmode_t mode; }; - -#endif // MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_WATCHDOG_WATCHDOGTIMER_H diff --git a/ports/atmel-samd/mpconfigport.h b/ports/atmel-samd/mpconfigport.h index 2f7d1c5b3cd8..4100230815aa 100644 --- a/ports/atmel-samd/mpconfigport.h +++ b/ports/atmel-samd/mpconfigport.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef __INCLUDED_MPCONFIGPORT_H -#define __INCLUDED_MPCONFIGPORT_H +#pragma once // Definitions for which SAMD chip we're using. #include "include/sam.h" @@ -249,5 +248,3 @@ // due to limitations of chips is handled in mpconfigboard.mk #include "peripherals/samd/dma.h" - -#endif // __INCLUDED_MPCONFIGPORT_H diff --git a/ports/atmel-samd/mphalport.h b/ports/atmel-samd/mphalport.h index c5371e2f930d..c5cbbef85693 100644 --- a/ports/atmel-samd/mphalport.h +++ b/ports/atmel-samd/mphalport.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_MPHALPORT_H -#define MICROPY_INCLUDED_ATMEL_SAMD_MPHALPORT_H +#pragma once #include "py/obj.h" @@ -26,5 +25,3 @@ void mp_hal_set_interrupt_char(int c); void mp_hal_disable_all_interrupts(void); void mp_hal_enable_all_interrupts(void); - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_MPHALPORT_H diff --git a/ports/atmel-samd/reset.h b/ports/atmel-samd/reset.h index 49eac14463e8..c74d25fa01ea 100644 --- a/ports/atmel-samd/reset.h +++ b/ports/atmel-samd/reset.h @@ -3,8 +3,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_RESET_H -#define MICROPY_INCLUDED_ATMEL_SAMD_RESET_H +#pragma once #include #include @@ -20,5 +19,3 @@ extern uint32_t _bootloader_dbl_tap; void reset_to_bootloader(void) NORETURN; void reset(void) NORETURN; bool bootloader_available(void); - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_RESET_H diff --git a/ports/atmel-samd/samd_peripherals_config.h b/ports/atmel-samd/samd_peripherals_config.h index bfd015a7f86e..fdf2bbfd047b 100644 --- a/ports/atmel-samd/samd_peripherals_config.h +++ b/ports/atmel-samd/samd_peripherals_config.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_SAMD_PERIPHERALS_CONFIG_H -#define MICROPY_INCLUDED_ATMEL_SAMD_SAMD_PERIPHERALS_CONFIG_H +#pragma once #include "py/obj.h" @@ -13,6 +12,3 @@ extern const mp_obj_type_t mcu_pin_type; #define PIN_PREFIX_VALUES { &mcu_pin_type }, #define PIN_PREFIX_FIELDS mp_obj_base_t base; - - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_SAMD_PERIPHERALS_CONFIG_H diff --git a/ports/atmel-samd/sd_mmc/conf_sd_mmc.h b/ports/atmel-samd/sd_mmc/conf_sd_mmc.h index a695b6a8feec..ab9cb15a342b 100644 --- a/ports/atmel-samd/sd_mmc/conf_sd_mmc.h +++ b/ports/atmel-samd/sd_mmc/conf_sd_mmc.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT /* Auto-generated config file conf_sd_mmc.h */ -#ifndef CONF_SD_MMC_H -#define CONF_SD_MMC_H +#pragma once // <<< Use Configuration Wizard in Context Menu >>> @@ -81,5 +80,3 @@ #endif // <<< end of configuration section >>> - -#endif // CONF_SD_MMC_H diff --git a/ports/atmel-samd/sd_mmc/sd_mmc.h b/ports/atmel-samd/sd_mmc/sd_mmc.h index dd5a1ffb9497..cdc98e7108e2 100644 --- a/ports/atmel-samd/sd_mmc/sd_mmc.h +++ b/ports/atmel-samd/sd_mmc/sd_mmc.h @@ -40,8 +40,7 @@ * Support and FAQ: visit Microchip Support */ -#ifndef SD_MMC_H_INCLUDED -#define SD_MMC_H_INCLUDED +#pragma once #include "compiler.h" #include "conf_sd_mmc.h" @@ -312,5 +311,3 @@ sd_mmc_err_t sdio_write_extended(uint8_t slot, uint8_t func_num, uint32_t addr, #ifdef __cplusplus } #endif - -#endif /* SD_MMC_H_INCLUDED */ diff --git a/ports/atmel-samd/sd_mmc/sd_mmc_protocol.h b/ports/atmel-samd/sd_mmc/sd_mmc_protocol.h index 9e96ebb3c815..be84f2c5d49d 100644 --- a/ports/atmel-samd/sd_mmc/sd_mmc_protocol.h +++ b/ports/atmel-samd/sd_mmc/sd_mmc_protocol.h @@ -40,8 +40,7 @@ * Support and FAQ: visit Microchip Support */ -#ifndef SD_MMC_PROTOCOL_H_INCLUDED -#define SD_MMC_PROTOCOL_H_INCLUDED +#pragma once #include "compiler.h" @@ -1002,5 +1001,3 @@ static inline uint32_t SDMMC_UNSTUFF_BITS(uint8_t *reg, uint16_t reg_size, uint1 #ifdef __cplusplus } #endif - -#endif /* SD_MMC_PROTOCOL_H_INCLUDED */ diff --git a/ports/atmel-samd/supervisor/internal_flash.h b/ports/atmel-samd/supervisor/internal_flash.h index af3219802321..6fafa4bc8d4f 100644 --- a/ports/atmel-samd/supervisor/internal_flash.h +++ b/ports/atmel-samd/supervisor/internal_flash.h @@ -3,8 +3,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_INTERNAL_FLASH_H -#define MICROPY_INCLUDED_ATMEL_SAMD_INTERNAL_FLASH_H +#pragma once #include @@ -16,5 +15,3 @@ #define INTERNAL_FLASH_SYSTICK_MASK (0x1ff) // 512ms #define INTERNAL_FLASH_IDLE_TICK(tick) (((tick) & INTERNAL_FLASH_SYSTICK_MASK) == 2) - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_INTERNAL_FLASH_H diff --git a/ports/atmel-samd/timer_handler.h b/ports/atmel-samd/timer_handler.h index 2a44457eaa4c..d8eb121eb27a 100644 --- a/ports/atmel-samd/timer_handler.h +++ b/ports/atmel-samd/timer_handler.h @@ -3,8 +3,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_TIMER_HANDLER_H -#define MICROPY_INCLUDED_ATMEL_SAMD_TIMER_HANDLER_H +#pragma once #define TC_HANDLER_NO_INTERRUPT 0x0 #define TC_HANDLER_PULSEOUT 0x1 @@ -15,5 +14,3 @@ void set_timer_handler(bool is_tc, uint8_t index, uint8_t timer_handler); void shared_timer_handler(bool is_tc, uint8_t index); - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_TIMER_HANDLER_H diff --git a/ports/broadcom/background.h b/ports/broadcom/background.h index 30ed25c0fa75..fe71149ab4b4 100644 --- a/ports/broadcom/background.h +++ b/ports/broadcom/background.h @@ -4,9 +4,6 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_BROADCOM_BACKGROUND_H -#define MICROPY_INCLUDED_BROADCOM_BACKGROUND_H +#pragma once #include - -#endif // MICROPY_INCLUDED_BROADCOM_BACKGROUND_H diff --git a/ports/broadcom/common-hal/busio/I2C.h b/ports/broadcom/common-hal/busio/I2C.h index 6747db7b09e1..11416c0203fa 100644 --- a/ports/broadcom/common-hal/busio/I2C.h +++ b/ports/broadcom/common-hal/busio/I2C.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_BROADCOM_COMMON_HAL_BUSIO_I2C_H -#define MICROPY_INCLUDED_BROADCOM_COMMON_HAL_BUSIO_I2C_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -26,5 +25,3 @@ typedef struct { } busio_i2c_obj_t; void reset_i2c(void); - -#endif // MICROPY_INCLUDED_BROADCOM_COMMON_HAL_BUSIO_I2C_H diff --git a/ports/broadcom/common-hal/busio/SPI.h b/ports/broadcom/common-hal/busio/SPI.h index 659a26f40847..aec91263677c 100644 --- a/ports/broadcom/common-hal/busio/SPI.h +++ b/ports/broadcom/common-hal/busio/SPI.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_BROADCOM_COMMON_HAL_BUSIO_SPI_H -#define MICROPY_INCLUDED_BROADCOM_COMMON_HAL_BUSIO_SPI_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -26,5 +25,3 @@ typedef struct { } busio_spi_obj_t; void reset_spi(void); - -#endif // MICROPY_INCLUDED_BROADCOM_COMMON_HAL_BUSIO_SPI_H diff --git a/ports/broadcom/common-hal/busio/UART.h b/ports/broadcom/common-hal/busio/UART.h index 8503fa045980..866e64c4855d 100644 --- a/ports/broadcom/common-hal/busio/UART.h +++ b/ports/broadcom/common-hal/busio/UART.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_BROADCOM_COMMON_HAL_BUSIO_UART_H -#define MICROPY_INCLUDED_BROADCOM_COMMON_HAL_BUSIO_UART_H +#pragma once #include "py/obj.h" #include "py/ringbuf.h" @@ -24,5 +23,3 @@ typedef struct { } busio_uart_obj_t; extern void reset_uart(void); - -#endif // MICROPY_INCLUDED_BROADCOM_COMMON_HAL_BUSIO_UART_H diff --git a/ports/broadcom/common-hal/digitalio/DigitalInOut.h b/ports/broadcom/common-hal/digitalio/DigitalInOut.h index e002542a0b5c..69520a92bff3 100644 --- a/ports/broadcom/common-hal/digitalio/DigitalInOut.h +++ b/ports/broadcom/common-hal/digitalio/DigitalInOut.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_BROADCOM_COMMON_HAL_DIGITALIO_DIGITALINOUT_H -#define MICROPY_INCLUDED_BROADCOM_COMMON_HAL_DIGITALIO_DIGITALINOUT_H +#pragma once #include "common-hal/microcontroller/Pin.h" #include "py/obj.h" @@ -16,5 +15,3 @@ typedef struct { bool output; bool open_drain; } digitalio_digitalinout_obj_t; - -#endif // MICROPY_INCLUDED_BROADCOM_COMMON_HAL_DIGITALIO_DIGITALINOUT_H diff --git a/ports/broadcom/common-hal/microcontroller/Pin.h b/ports/broadcom/common-hal/microcontroller/Pin.h index 15e643b0629b..4e0e2e2e6598 100644 --- a/ports/broadcom/common-hal/microcontroller/Pin.h +++ b/ports/broadcom/common-hal/microcontroller/Pin.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_BROADCOM_COMMON_HAL_MICROCONTROLLER_PIN_H -#define MICROPY_INCLUDED_BROADCOM_COMMON_HAL_MICROCONTROLLER_PIN_H +#pragma once #include #include @@ -21,5 +20,3 @@ void reset_pin_number(uint8_t pin_number); void never_reset_pin_number(uint8_t pin_number); void claim_pin(const mcu_pin_obj_t *pin); bool pin_number_is_free(uint8_t pin_number); - -#endif // MICROPY_INCLUDED_BROADCOM_COMMON_HAL_MICROCONTROLLER_PIN_H diff --git a/ports/broadcom/common-hal/microcontroller/Processor.h b/ports/broadcom/common-hal/microcontroller/Processor.h index 9850e2c148c9..0c9088f18810 100644 --- a/ports/broadcom/common-hal/microcontroller/Processor.h +++ b/ports/broadcom/common-hal/microcontroller/Processor.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_BROADCOM_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H -#define MICROPY_INCLUDED_BROADCOM_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H +#pragma once #include "py/obj.h" @@ -15,5 +14,3 @@ typedef struct { } mcu_processor_obj_t; #define COMMON_HAL_MCU_PROCESSOR_UID_LENGTH 8 - -#endif // MICROPY_INCLUDED_BROADCOM_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H diff --git a/ports/broadcom/common-hal/microcontroller/__init__.h b/ports/broadcom/common-hal/microcontroller/__init__.h index 7f7170129dff..217a3de3c7a4 100644 --- a/ports/broadcom/common-hal/microcontroller/__init__.h +++ b/ports/broadcom/common-hal/microcontroller/__init__.h @@ -4,9 +4,6 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_BROADCOM_COMMON_HAL_MICROCONTROLLER___INIT___H -#define MICROPY_INCLUDED_BROADCOM_COMMON_HAL_MICROCONTROLLER___INIT___H +#pragma once #define TOTAL_GPIO_COUNT 58 - -#endif // MICROPY_INCLUDED_BROADCOM_COMMON_HAL_MICROCONTROLLER___INIT___H diff --git a/ports/broadcom/common-hal/rtc/RTC.h b/ports/broadcom/common-hal/rtc/RTC.h index 7c71e373a1e6..9f310488793f 100644 --- a/ports/broadcom/common-hal/rtc/RTC.h +++ b/ports/broadcom/common-hal/rtc/RTC.h @@ -5,9 +5,6 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_BROADCOM_COMMON_HAL_RTC_RTC_H -#define MICROPY_INCLUDED_BROADCOM_COMMON_HAL_RTC_RTC_H +#pragma once extern void rtc_reset(void); - -#endif // MICROPY_INCLUDED_BROADCOM_COMMON_HAL_RTC_RTC_H diff --git a/ports/broadcom/mpconfigport.h b/ports/broadcom/mpconfigport.h index 46a92cba9040..b9990be75ec0 100644 --- a/ports/broadcom/mpconfigport.h +++ b/ports/broadcom/mpconfigport.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef __INCLUDED_MPCONFIGPORT_H -#define __INCLUDED_MPCONFIGPORT_H +#pragma once // Definitions that control circuitpy_mpconfig.h: @@ -36,5 +35,3 @@ // Definitions that can be overridden by mpconfigboard.h: //////////////////////////////////////////////////////////////////////////////////////////////////// - -#endif // __INCLUDED_MPCONFIGPORT_H diff --git a/ports/broadcom/mphalport.h b/ports/broadcom/mphalport.h index bde56ff51732..6a7cdb99db59 100644 --- a/ports/broadcom/mphalport.h +++ b/ports/broadcom/mphalport.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_BROADCOM_MPHALPORT_H -#define MICROPY_INCLUDED_BROADCOM_MPHALPORT_H +#pragma once #include #include "py/obj.h" @@ -27,5 +26,3 @@ void mp_hal_stdout_tx_strn(const char *str, size_t len); void usbkbd_setup(); #endif - -#endif // MICROPY_INCLUDED_BROADCOM_MPHALPORT_H diff --git a/ports/broadcom/supervisor/internal_flash.h b/ports/broadcom/supervisor/internal_flash.h index 7239f2e94644..94b1f0bc973f 100644 --- a/ports/broadcom/supervisor/internal_flash.h +++ b/ports/broadcom/supervisor/internal_flash.h @@ -3,11 +3,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_BROADCOM_INTERNAL_FLASH_H -#define MICROPY_INCLUDED_BROADCOM_INTERNAL_FLASH_H +#pragma once #include #include "mpconfigport.h" - -#endif // MICROPY_INCLUDED_BROADCOM_INTERNAL_FLASH_H diff --git a/ports/cxd56/alloca.h b/ports/cxd56/alloca.h index df19d3f109fb..ec51b5e77d1e 100644 --- a/ports/cxd56/alloca.h +++ b/ports/cxd56/alloca.h @@ -4,9 +4,6 @@ // // SPDX-License-Identifier: MIT -#ifndef _ALLOCA_H -#define _ALLOCA_H +#pragma once #define alloca __builtin_alloca - -#endif /* _ALLOCA_H */ diff --git a/ports/cxd56/common-hal/analogio/AnalogIn.h b/ports/cxd56/common-hal/analogio/AnalogIn.h index f70f7aff0c4b..affc7f805e82 100644 --- a/ports/cxd56/common-hal/analogio/AnalogIn.h +++ b/ports/cxd56/common-hal/analogio/AnalogIn.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_CXD56_COMMON_HAL_ANALOGIO_ANALOGIN_H -#define MICROPY_INCLUDED_CXD56_COMMON_HAL_ANALOGIO_ANALOGIN_H +#pragma once #include "py/obj.h" @@ -18,5 +17,3 @@ typedef struct { } analogio_analogin_obj_t; void analogin_reset(void); - -#endif // MICROPY_INCLUDED_CXD56_COMMON_HAL_ANALOGIO_ANALOGIN_H diff --git a/ports/cxd56/common-hal/analogio/AnalogOut.h b/ports/cxd56/common-hal/analogio/AnalogOut.h index 00daf5f0bbda..afeca0f2bcc5 100644 --- a/ports/cxd56/common-hal/analogio/AnalogOut.h +++ b/ports/cxd56/common-hal/analogio/AnalogOut.h @@ -4,13 +4,10 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_CXD56_COMMON_HAL_ANALOGIO_ANALOGOUT_H -#define MICROPY_INCLUDED_CXD56_COMMON_HAL_ANALOGIO_ANALOGOUT_H +#pragma once #include "py/obj.h" typedef struct { mp_obj_base_t base; } analogio_analogout_obj_t; - -#endif // MICROPY_INCLUDED_CXD56_COMMON_HAL_ANALOGIO_ANALOGOUT_H diff --git a/ports/cxd56/common-hal/busio/I2C.h b/ports/cxd56/common-hal/busio/I2C.h index 61db1d9cd7fd..6287837e53dc 100644 --- a/ports/cxd56/common-hal/busio/I2C.h +++ b/ports/cxd56/common-hal/busio/I2C.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_CXD56_COMMON_HAL_BUSIO_I2C_H -#define MICROPY_INCLUDED_CXD56_COMMON_HAL_BUSIO_I2C_H +#pragma once #include "py/obj.h" @@ -19,5 +18,3 @@ typedef struct { const mcu_pin_obj_t *scl_pin; const mcu_pin_obj_t *sda_pin; } busio_i2c_obj_t; - -#endif // MICROPY_INCLUDED_CXD56_COMMON_HAL_BUSIO_I2C_H diff --git a/ports/cxd56/common-hal/busio/SPI.h b/ports/cxd56/common-hal/busio/SPI.h index 70e131cfff06..028d9211c744 100644 --- a/ports/cxd56/common-hal/busio/SPI.h +++ b/ports/cxd56/common-hal/busio/SPI.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_CXD56_COMMON_HAL_BUSIO_SPI_H -#define MICROPY_INCLUDED_CXD56_COMMON_HAL_BUSIO_SPI_H +#pragma once #include @@ -25,5 +24,3 @@ typedef struct { const mcu_pin_obj_t *mosi_pin; const mcu_pin_obj_t *miso_pin; } busio_spi_obj_t; - -#endif // MICROPY_INCLUDED_CXD56_COMMON_HAL_BUSIO_SPI_H diff --git a/ports/cxd56/common-hal/busio/UART.h b/ports/cxd56/common-hal/busio/UART.h index 7f8fd27dd7dc..e642de752578 100644 --- a/ports/cxd56/common-hal/busio/UART.h +++ b/ports/cxd56/common-hal/busio/UART.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_CXD56_COMMON_HAL_BUSIO_UART_H -#define MICROPY_INCLUDED_CXD56_COMMON_HAL_BUSIO_UART_H +#pragma once #include "py/obj.h" @@ -21,5 +20,3 @@ typedef struct { } busio_uart_obj_t; void busio_uart_reset(void); - -#endif // MICROPY_INCLUDED_CXD56_COMMON_HAL_BUSIO_UART_H diff --git a/ports/cxd56/common-hal/camera/Camera.h b/ports/cxd56/common-hal/camera/Camera.h index 8e9a0b3911e5..c79fa29079cd 100644 --- a/ports/cxd56/common-hal/camera/Camera.h +++ b/ports/cxd56/common-hal/camera/Camera.h @@ -4,13 +4,10 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_CXD56_COMMON_HAL_CAMERA_CAMERA_H -#define MICROPY_INCLUDED_CXD56_COMMON_HAL_CAMERA_CAMERA_H +#pragma once #include "py/obj.h" typedef struct { mp_obj_base_t base; } camera_obj_t; - -#endif // MICROPY_INCLUDED_CXD56_COMMON_HAL_CAMERA_CAMERA_H diff --git a/ports/cxd56/common-hal/digitalio/DigitalInOut.h b/ports/cxd56/common-hal/digitalio/DigitalInOut.h index 6df87313d043..2a28ed134d9e 100644 --- a/ports/cxd56/common-hal/digitalio/DigitalInOut.h +++ b/ports/cxd56/common-hal/digitalio/DigitalInOut.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_CXD56_COMMON_HAL_DIGITALIO_DIGITALINOUT_H -#define MICROPY_INCLUDED_CXD56_COMMON_HAL_DIGITALIO_DIGITALINOUT_H +#pragma once #include "py/obj.h" @@ -18,5 +17,3 @@ typedef struct { bool open_drain; uint8_t pull; } digitalio_digitalinout_obj_t; - -#endif // MICROPY_INCLUDED_CXD56_COMMON_HAL_DIGITALIO_DIGITALINOUT_H diff --git a/ports/cxd56/common-hal/gnss/GNSS.h b/ports/cxd56/common-hal/gnss/GNSS.h index 35e4084a41b9..a974d747c953 100644 --- a/ports/cxd56/common-hal/gnss/GNSS.h +++ b/ports/cxd56/common-hal/gnss/GNSS.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_CXD56_COMMON_HAL_GNSS_GNSS_H -#define MICROPY_INCLUDED_CXD56_COMMON_HAL_GNSS_GNSS_H +#pragma once #include @@ -21,5 +20,3 @@ typedef struct { struct cxd56_gnss_date_s date; struct cxd56_gnss_time_s time; } gnss_obj_t; - -#endif // MICROPY_INCLUDED_CXD56_COMMON_HAL_GNSS_GNSS_H diff --git a/ports/cxd56/common-hal/microcontroller/Pin.h b/ports/cxd56/common-hal/microcontroller/Pin.h index 0a4a8cb9fd30..8c27abe76f2e 100644 --- a/ports/cxd56/common-hal/microcontroller/Pin.h +++ b/ports/cxd56/common-hal/microcontroller/Pin.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_CXD56_COMMON_HAL_MICROCONTROLLER_PIN_H -#define MICROPY_INCLUDED_CXD56_COMMON_HAL_MICROCONTROLLER_PIN_H +#pragma once #include "py/obj.h" @@ -74,5 +73,3 @@ void never_reset_pin_number(uint8_t pin_number); void reset_pin_number(uint8_t pin_number); void reset_all_pins(void); void claim_pin(const mcu_pin_obj_t *pin); - -#endif // MICROPY_INCLUDED_CXD56_COMMON_HAL_MICROCONTROLLER_PIN_H diff --git a/ports/cxd56/common-hal/microcontroller/Processor.h b/ports/cxd56/common-hal/microcontroller/Processor.h index 575ae3ad8efd..1e77c35c777a 100644 --- a/ports/cxd56/common-hal/microcontroller/Processor.h +++ b/ports/cxd56/common-hal/microcontroller/Processor.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_CXD56_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H -#define MICROPY_INCLUDED_CXD56_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H +#pragma once #define COMMON_HAL_MCU_PROCESSOR_UID_LENGTH CONFIG_BOARDCTL_UNIQUEID_SIZE @@ -16,5 +15,3 @@ typedef struct { } mcu_processor_obj_t; extern const mp_obj_type_t mcu_processor_type; - -#endif // MICROPY_INCLUDED_CXD56_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H diff --git a/ports/cxd56/common-hal/sdioio/SDCard.h b/ports/cxd56/common-hal/sdioio/SDCard.h index d772abd794fc..ca2d3e7f0d97 100644 --- a/ports/cxd56/common-hal/sdioio/SDCard.h +++ b/ports/cxd56/common-hal/sdioio/SDCard.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_CXD56_SDIOIO_SDCARD_H -#define MICROPY_INCLUDED_CXD56_SDIOIO_SDCARD_H +#pragma once #include @@ -23,5 +22,3 @@ typedef struct { const mcu_pin_obj_t *clock_pin; const mcu_pin_obj_t *data_pins[4]; } sdioio_sdcard_obj_t; - -#endif // MICROPY_INCLUDED_CXD56_SDIOIO_SDCARD_H diff --git a/ports/cxd56/mpconfigport.h b/ports/cxd56/mpconfigport.h index 2460c7562186..3bcb25286878 100644 --- a/ports/cxd56/mpconfigport.h +++ b/ports/cxd56/mpconfigport.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef __INCLUDED_MPCONFIGPORT_H -#define __INCLUDED_MPCONFIGPORT_H +#pragma once #define MICROPY_PY_SYS_PLATFORM "CXD56" @@ -24,5 +23,3 @@ #include "py/circuitpy_mpconfig.h" #define MICROPY_BYTES_PER_GC_BLOCK (32) - -#endif // __INCLUDED_MPCONFIGPORT_H diff --git a/ports/cxd56/mphalport.h b/ports/cxd56/mphalport.h index 826912cb418b..edd22d12c8f3 100644 --- a/ports/cxd56/mphalport.h +++ b/ports/cxd56/mphalport.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_CXD56_MPHALPORT_H -#define MICROPY_INCLUDED_CXD56_MPHALPORT_H +#pragma once #include @@ -13,5 +12,3 @@ #include "supervisor/shared/tick.h" #define mp_hal_ticks_ms() ((mp_uint_t)supervisor_ticks_ms32()) - -#endif // MICROPY_INCLUDED_CXD56_MPHALPORT_H diff --git a/ports/espressif/background.h b/ports/espressif/background.h index bb815ed05e58..5a5118116bdd 100644 --- a/ports/espressif/background.h +++ b/ports/espressif/background.h @@ -4,9 +4,6 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_BACKGROUND_H -#define MICROPY_INCLUDED_ESPRESSIF_BACKGROUND_H +#pragma once #include - -#endif // MICROPY_INCLUDED_ESPRESSIF_BACKGROUND_H diff --git a/ports/espressif/bindings/espidf/__init__.h b/ports/espressif/bindings/espidf/__init__.h index 779bd949b20d..7c112abf7368 100644 --- a/ports/espressif/bindings/espidf/__init__.h +++ b/ports/espressif/bindings/espidf/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_BINDINGS_ESPIDF___INIT___H -#define MICROPY_INCLUDED_ESPRESSIF_BINDINGS_ESPIDF___INIT___H +#pragma once #include "esp_err.h" #include "py/mpconfig.h" @@ -24,5 +23,3 @@ void raise_esp_error(esp_err_t err) NORETURN; size_t common_hal_espidf_get_total_psram(void); intptr_t common_hal_espidf_get_psram_start(void); intptr_t common_hal_espidf_get_psram_end(void); - -#endif // MICROPY_INCLUDED_ESPRESSIF_BINDINGS_ESPIDF___INIT___H diff --git a/ports/espressif/bindings/espulp/Architecture.h b/ports/espressif/bindings/espulp/Architecture.h index b3ba0dbc9507..27e6d44aa4e2 100644 --- a/ports/espressif/bindings/espulp/Architecture.h +++ b/ports/espressif/bindings/espulp/Architecture.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_BINDINGS_ESPULP_ARCHITECTURE_H -#define MICROPY_INCLUDED_BINDINGS_ESPULP_ARCHITECTURE_H +#pragma once #include "py/enum.h" @@ -16,5 +15,3 @@ typedef enum { extern const mp_obj_type_t espulp_architecture_type; extern const cp_enum_obj_t architecture_FSM_obj; - -#endif // MICROPY_INCLUDED_BINDINGS_ESPULP_ARCHITECTURE_H diff --git a/ports/espressif/common-hal/_bleio/Adapter.h b/ports/espressif/common-hal/_bleio/Adapter.h index 1f4ac61d1f47..1dbae9946ee3 100644 --- a/ports/espressif/common-hal/_bleio/Adapter.h +++ b/ports/espressif/common-hal/_bleio/Adapter.h @@ -6,8 +6,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_ADAPTER_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_ADAPTER_H +#pragma once #include "py/obj.h" #include "py/objtuple.h" @@ -36,5 +35,3 @@ typedef struct { void bleio_adapter_gc_collect(bleio_adapter_obj_t *adapter); void bleio_adapter_reset(bleio_adapter_obj_t *adapter); - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_ADAPTER_H diff --git a/ports/espressif/common-hal/_bleio/Attribute.h b/ports/espressif/common-hal/_bleio/Attribute.h index e975fbe0614e..417ac3c45495 100644 --- a/ports/espressif/common-hal/_bleio/Attribute.h +++ b/ports/espressif/common-hal/_bleio/Attribute.h @@ -4,9 +4,6 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_ATTRIBUTE_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_ATTRIBUTE_H +#pragma once #include "shared-module/_bleio/Attribute.h" - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_ATTRIBUTE_H diff --git a/ports/espressif/common-hal/_bleio/bonding.h b/ports/espressif/common-hal/_bleio/bonding.h index 586e9662d1be..a0dc21382816 100644 --- a/ports/espressif/common-hal/_bleio/bonding.h +++ b/ports/espressif/common-hal/_bleio/bonding.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_BONDING_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_BONDING_H +#pragma once #include #include @@ -67,5 +66,3 @@ size_t bonding_peripheral_bond_count(void); void bonding_print_block(bonding_block_t *); void bonding_print_keys(bonding_keys_t *); #endif - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BLEIO_BONDING_H diff --git a/ports/espressif/common-hal/analogbufio/BufferedIn.h b/ports/espressif/common-hal/analogbufio/BufferedIn.h index 4ad09d417cf8..6f43903e4c29 100644 --- a/ports/espressif/common-hal/analogbufio/BufferedIn.h +++ b/ports/espressif/common-hal/analogbufio/BufferedIn.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESP32_COMMON_HAL_ANALOGBUFIO_BUFFEREDIN_H -#define MICROPY_INCLUDED_ESP32_COMMON_HAL_ANALOGBUFIO_BUFFEREDIN_H +#pragma once #include "common-hal/microcontroller/Pin.h" #include "py/obj.h" @@ -20,5 +19,3 @@ typedef struct { adc_continuous_handle_t handle; bool started; } analogbufio_bufferedin_obj_t; - -#endif // MICROPY_INCLUDED_ESP32_COMMON_HAL_ANALOGBUFIO_BUFFEREDIN_H diff --git a/ports/espressif/common-hal/analogio/AnalogIn.h b/ports/espressif/common-hal/analogio/AnalogIn.h index 241fc41f56f5..944039bec2a2 100644 --- a/ports/espressif/common-hal/analogio/AnalogIn.h +++ b/ports/espressif/common-hal/analogio/AnalogIn.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_ANALOGIO_ANALOGIN_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_ANALOGIO_ANALOGIN_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -18,5 +17,3 @@ typedef struct { mp_obj_base_t base; const mcu_pin_obj_t *pin; } analogio_analogin_obj_t; - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_ANALOGIO_ANALOGIN_H diff --git a/ports/espressif/common-hal/analogio/AnalogOut.h b/ports/espressif/common-hal/analogio/AnalogOut.h index 57dec09e1c0f..90199a221f05 100644 --- a/ports/espressif/common-hal/analogio/AnalogOut.h +++ b/ports/espressif/common-hal/analogio/AnalogOut.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_ANALOGIO_ANALOGOUT_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_ANALOGIO_ANALOGOUT_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -24,5 +23,3 @@ typedef struct { } analogio_analogout_obj_t; void analogout_reset(void); - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_ANALOGIO_ANALOGOUT_H diff --git a/ports/espressif/common-hal/busio/I2C.h b/ports/espressif/common-hal/busio/I2C.h index 5542a1bdffa2..6e040224ece2 100644 --- a/ports/espressif/common-hal/busio/I2C.h +++ b/ports/espressif/common-hal/busio/I2C.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BUSIO_I2C_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BUSIO_I2C_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -24,5 +23,3 @@ typedef struct { SemaphoreHandle_t xSemaphore; bool has_lock; } busio_i2c_obj_t; - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BUSIO_I2C_H diff --git a/ports/espressif/common-hal/busio/UART.h b/ports/espressif/common-hal/busio/UART.h index c2ecc1a61ea3..96bd6c8bf75b 100644 --- a/ports/espressif/common-hal/busio/UART.h +++ b/ports/espressif/common-hal/busio/UART.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BUSIO_UART_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BUSIO_UART_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -32,5 +31,3 @@ typedef struct { } busio_uart_obj_t; void uart_reset(void); - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BUSIO_UART_H diff --git a/ports/espressif/common-hal/digitalio/DigitalInOut.h b/ports/espressif/common-hal/digitalio/DigitalInOut.h index ec4ec0ab4c6b..49838ca97c3c 100644 --- a/ports/espressif/common-hal/digitalio/DigitalInOut.h +++ b/ports/espressif/common-hal/digitalio/DigitalInOut.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_DIGITALIO_DIGITALINOUT_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_DIGITALIO_DIGITALINOUT_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -17,5 +16,3 @@ typedef struct { } digitalio_digitalinout_obj_t; extern void digitalio_digitalinout_preserve_for_deep_sleep(size_t n_dios, digitalio_digitalinout_obj_t *preserve_dios[]); - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_DIGITALIO_DIGITALINOUT_H diff --git a/ports/espressif/common-hal/dualbank/__init__.h b/ports/espressif/common-hal/dualbank/__init__.h index 69bac4bd1bb1..54cf8cc68c90 100644 --- a/ports/espressif/common-hal/dualbank/__init__.h +++ b/ports/espressif/common-hal/dualbank/__init__.h @@ -4,9 +4,6 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_DUALBANK___INIT___H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_DUALBANK___INIT___H +#pragma once extern void dualbank_reset(void); - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_DUALBANK___INIT___H diff --git a/ports/espressif/common-hal/i2ctarget/I2CTarget.h b/ports/espressif/common-hal/i2ctarget/I2CTarget.h index 84f507b505fe..2dcfb581eb31 100644 --- a/ports/espressif/common-hal/i2ctarget/I2CTarget.h +++ b/ports/espressif/common-hal/i2ctarget/I2CTarget.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BUSIO_I2C_TARGET_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BUSIO_I2C_TARGET_H +#pragma once #include "py/obj.h" #include "peripherals/i2c.h" @@ -19,5 +18,3 @@ typedef struct { const mcu_pin_obj_t *scl_pin; const mcu_pin_obj_t *sda_pin; } i2ctarget_i2c_target_obj_t; - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_BUSIO_I2C_TARGET_H diff --git a/ports/espressif/common-hal/memorymap/AddressRange.h b/ports/espressif/common-hal/memorymap/AddressRange.h index 06a50fa92695..71bd76b9ea52 100644 --- a/ports/espressif/common-hal/memorymap/AddressRange.h +++ b/ports/espressif/common-hal/memorymap/AddressRange.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_MEMORYMAP_ADDRESSRANGE_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_MEMORYMAP_ADDRESSRANGE_H +#pragma once #include "py/obj.h" @@ -14,5 +13,3 @@ typedef struct { uint8_t *start_address; size_t len; } memorymap_addressrange_obj_t; - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_MEMORYMAP_ADDRESSRANGE_H diff --git a/ports/espressif/common-hal/microcontroller/Pin.h b/ports/espressif/common-hal/microcontroller/Pin.h index ff935650bd07..662a3a84eb9b 100644 --- a/ports/espressif/common-hal/microcontroller/Pin.h +++ b/ports/espressif/common-hal/microcontroller/Pin.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_MICROCONTROLLER_PIN_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_MICROCONTROLLER_PIN_H +#pragma once #include "py/mphal.h" @@ -37,5 +36,3 @@ extern void clear_pin_preservations(void); // Return true to indicate that the pin was reset. Returning false will lead to // the port-default reset behavior. extern bool espressif_board_reset_pin_number(gpio_num_t pin_number); - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_MICROCONTROLLER_PIN_H diff --git a/ports/espressif/common-hal/microcontroller/Processor.h b/ports/espressif/common-hal/microcontroller/Processor.h index 8eff97cf5eb4..81abbedeab21 100644 --- a/ports/espressif/common-hal/microcontroller/Processor.h +++ b/ports/espressif/common-hal/microcontroller/Processor.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H +#pragma once #define COMMON_HAL_MCU_PROCESSOR_UID_LENGTH 6 @@ -15,5 +14,3 @@ typedef struct { mp_obj_base_t base; // Stores no state currently. } mcu_processor_obj_t; - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H diff --git a/ports/espressif/common-hal/nvm/ByteArray.h b/ports/espressif/common-hal/nvm/ByteArray.h index d3c684b2f49c..8eb7e7c00aeb 100644 --- a/ports/espressif/common-hal/nvm/ByteArray.h +++ b/ports/espressif/common-hal/nvm/ByteArray.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_NVM_BYTEARRAY_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_NVM_BYTEARRAY_H +#pragma once #include "py/obj.h" @@ -14,5 +13,3 @@ typedef struct { uint8_t *start_address; uint32_t len; } nvm_bytearray_obj_t; - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_NVM_BYTEARRAY_H diff --git a/ports/espressif/common-hal/ps2io/Ps2.h b/ports/espressif/common-hal/ps2io/Ps2.h index 6483d02bb950..a3586b59f6ac 100644 --- a/ports/espressif/common-hal/ps2io/Ps2.h +++ b/ports/espressif/common-hal/ps2io/Ps2.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_PS2IO_PS2_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_PS2IO_PS2_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -36,5 +35,3 @@ typedef struct { } ps2io_ps2_obj_t; void ps2_reset(void); - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_PS2IO_PS2_H diff --git a/ports/espressif/common-hal/rgbmatrix/RGBMatrix.h b/ports/espressif/common-hal/rgbmatrix/RGBMatrix.h index 002169291322..56c32e5c24f8 100644 --- a/ports/espressif/common-hal/rgbmatrix/RGBMatrix.h +++ b/ports/espressif/common-hal/rgbmatrix/RGBMatrix.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_RGBMATRIX_RGBMATRIX_H -#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_RGBMATRIX_RGBMATRIX_H +#pragma once #include "shared-module/rgbmatrix/RGBMatrix.h" @@ -13,5 +12,3 @@ void *common_hal_rgbmatrix_timer_allocate(rgbmatrix_rgbmatrix_obj_t *self); void common_hal_rgbmatrix_timer_enable(void *); void common_hal_rgbmatrix_timer_disable(void *); void common_hal_rgbmatrix_timer_free(void *); - -#endif diff --git a/ports/espressif/common-hal/rtc/RTC.h b/ports/espressif/common-hal/rtc/RTC.h index 7e594f5194d0..18625763562a 100644 --- a/ports/espressif/common-hal/rtc/RTC.h +++ b/ports/espressif/common-hal/rtc/RTC.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_RTC_RTC_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_RTC_RTC_H +#pragma once extern void rtc_init(void); extern void rtc_reset(void); extern void common_hal_rtc_init(void); - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_RTC_RTC_H diff --git a/ports/espressif/common-hal/socketpool/SocketPool.h b/ports/espressif/common-hal/socketpool/SocketPool.h index c682a32ae14a..64f91e01e1cf 100644 --- a/ports/espressif/common-hal/socketpool/SocketPool.h +++ b/ports/espressif/common-hal/socketpool/SocketPool.h @@ -4,13 +4,10 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_SOCKETPOOL_SOCKETPOOL_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_SOCKETPOOL_SOCKETPOOL_H +#pragma once #include "py/obj.h" typedef struct { mp_obj_base_t base; } socketpool_socketpool_obj_t; - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_SOCKETPOOL_SOCKETPOOL_H diff --git a/ports/espressif/common-hal/touchio/TouchIn.h b/ports/espressif/common-hal/touchio/TouchIn.h index 8d78332d2cdc..0b757d99dfb4 100644 --- a/ports/espressif/common-hal/touchio/TouchIn.h +++ b/ports/espressif/common-hal/touchio/TouchIn.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_TOUCHIO_TOUCHIN_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_TOUCHIO_TOUCHIN_H +#pragma once #include "py/obj.h" #include "common-hal/microcontroller/Pin.h" @@ -15,5 +14,3 @@ typedef struct { const mcu_pin_obj_t *pin; uint16_t threshold; } touchio_touchin_obj_t; - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_TOUCHIO_TOUCHIN_H diff --git a/ports/espressif/common-hal/watchdog/WatchDogTimer.h b/ports/espressif/common-hal/watchdog/WatchDogTimer.h index 8a4dd94eb66a..ea53104bcc51 100644 --- a/ports/espressif/common-hal/watchdog/WatchDogTimer.h +++ b/ports/espressif/common-hal/watchdog/WatchDogTimer.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WATCHDOG_WATCHDOGTIMER_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WATCHDOG_WATCHDOGTIMER_H +#pragma once #include "py/obj.h" @@ -19,5 +18,3 @@ struct _watchdog_watchdogtimer_obj_t { mp_float_t timeout; watchdog_watchdogmode_t mode; }; - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WATCHDOG_WATCHDOGTIMER_H diff --git a/ports/espressif/common-hal/wifi/Monitor.h b/ports/espressif/common-hal/wifi/Monitor.h index 906a7a3f4016..6049291277e8 100644 --- a/ports/espressif/common-hal/wifi/Monitor.h +++ b/ports/espressif/common-hal/wifi/Monitor.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI_MONITOR_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI_MONITOR_H +#pragma once #include "py/obj.h" #include "components/esp_wifi/include/esp_wifi.h" @@ -17,5 +16,3 @@ typedef struct { size_t queue_length; QueueHandle_t queue; } wifi_monitor_obj_t; - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI_MONITOR_H diff --git a/ports/espressif/common-hal/wifi/Network.h b/ports/espressif/common-hal/wifi/Network.h index 20c4310bdfd4..9c4a4eeceb61 100644 --- a/ports/espressif/common-hal/wifi/Network.h +++ b/ports/espressif/common-hal/wifi/Network.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI_NETWORK_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI_NETWORK_H +#pragma once #include "py/obj.h" @@ -15,5 +14,3 @@ typedef struct { mp_obj_base_t base; wifi_ap_record_t record; } wifi_network_obj_t; - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI_NETWORK_H diff --git a/ports/espressif/common-hal/wifi/Radio.h b/ports/espressif/common-hal/wifi/Radio.h index 62a624cbc0ec..7e91862c300c 100644 --- a/ports/espressif/common-hal/wifi/Radio.h +++ b/ports/espressif/common-hal/wifi/Radio.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI_RADIO_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI_RADIO_H +#pragma once #include "py/obj.h" @@ -45,5 +44,3 @@ typedef struct { } wifi_radio_obj_t; extern void common_hal_wifi_radio_gc_collect(wifi_radio_obj_t *self); - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI_RADIO_H diff --git a/ports/espressif/common-hal/wifi/ScannedNetworks.h b/ports/espressif/common-hal/wifi/ScannedNetworks.h index e289e3a80fd6..f9f65587be03 100644 --- a/ports/espressif/common-hal/wifi/ScannedNetworks.h +++ b/ports/espressif/common-hal/wifi/ScannedNetworks.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI_SCANNEDNETWORKS_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI_SCANNEDNETWORKS_H +#pragma once #include @@ -38,5 +37,3 @@ typedef struct { void wifi_scannednetworks_scan_next_channel(wifi_scannednetworks_obj_t *self); void wifi_scannednetworks_deinit(wifi_scannednetworks_obj_t *self); - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI_SCANNEDNETWORKS_H diff --git a/ports/espressif/common-hal/wifi/__init__.h b/ports/espressif/common-hal/wifi/__init__.h index ec7f4d12b57b..55a7fddbf448 100644 --- a/ports/espressif/common-hal/wifi/__init__.h +++ b/ports/espressif/common-hal/wifi/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI___INIT___H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI___INIT___H +#pragma once #include "py/obj.h" @@ -16,5 +15,3 @@ void wifi_reset(void); void ipaddress_ipaddress_to_esp_idf(mp_obj_t ip_address, ip_addr_t *esp_ip_address); void ipaddress_ipaddress_to_esp_idf_ip4(mp_obj_t ip_address, esp_ip4_addr_t *esp_ip_address); - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI___INIT___H diff --git a/ports/espressif/mpconfigport.h b/ports/espressif/mpconfigport.h index 2698381a3ef4..a2d632a20ec8 100644 --- a/ports/espressif/mpconfigport.h +++ b/ports/espressif/mpconfigport.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_MPCONFIGPORT_H -#define MICROPY_INCLUDED_ESPRESSIF_MPCONFIGPORT_H +#pragma once // Enable for debugging. // #define CIRCUITPY_VERBOSE_BLE (1) @@ -60,5 +59,3 @@ extern portMUX_TYPE background_task_mutex; #define CALLBACK_CRITICAL_BEGIN (taskENTER_CRITICAL(&background_task_mutex)) #define CALLBACK_CRITICAL_END (taskEXIT_CRITICAL(&background_task_mutex)) - -#endif // MICROPY_INCLUDED_ESPRESSIF_MPCONFIGPORT_H diff --git a/ports/espressif/mphalport.h b/ports/espressif/mphalport.h index b630eecc898b..749e73335682 100644 --- a/ports/espressif/mphalport.h +++ b/ports/espressif/mphalport.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_MPHAL_H -#define MICROPY_INCLUDED_ESPRESSIF_MPHAL_H +#pragma once #include #include @@ -17,5 +16,3 @@ #define mp_hal_ticks_ms() ((mp_uint_t)supervisor_ticks_ms32()) bool mp_hal_stdin_any(void); - -#endif // MICROPY_INCLUDED_ESPRESSIF_MPHAL_H diff --git a/ports/espressif/peripherals/esp32/pins.h b/ports/espressif/peripherals/esp32/pins.h index 71a777a27b75..f8c94d570433 100644 --- a/ports/espressif/peripherals/esp32/pins.h +++ b/ports/espressif/peripherals/esp32/pins.h @@ -8,8 +8,7 @@ // Use shared-bindings/microcontroller/Pin.h instead. // This ensures that all necessary includes are already included. -#ifndef MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_ESP32_PINS_H -#define MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_ESP32_PINS_H +#pragma once #define GPIO0_EXISTS 1 extern const mcu_pin_obj_t pin_GPIO0; @@ -87,5 +86,3 @@ extern const mcu_pin_obj_t pin_GPIO37; extern const mcu_pin_obj_t pin_GPIO38; #define GPIO39_EXISTS 1 extern const mcu_pin_obj_t pin_GPIO39; - -#endif // MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_ESP32_PINS_H diff --git a/ports/espressif/peripherals/esp32c3/pins.h b/ports/espressif/peripherals/esp32c3/pins.h index e1ce88dd9ec9..7efc75cc6908 100644 --- a/ports/espressif/peripherals/esp32c3/pins.h +++ b/ports/espressif/peripherals/esp32c3/pins.h @@ -8,8 +8,7 @@ // Use shared-bindings/microcontroller/Pin.h instead. // This ensures that all necessary includes are already included. -#ifndef MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_ESP32C3_PINS_H -#define MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_ESP32C3_PINS_H +#pragma once #define GPIO0_EXISTS 1 extern const mcu_pin_obj_t pin_GPIO0; @@ -55,5 +54,3 @@ extern const mcu_pin_obj_t pin_GPIO19; extern const mcu_pin_obj_t pin_GPIO20; #define GPIO21_EXISTS 1 extern const mcu_pin_obj_t pin_GPIO21; - -#endif // MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_ESP32C3_PINS_H diff --git a/ports/espressif/peripherals/esp32s2/pins.h b/ports/espressif/peripherals/esp32s2/pins.h index 07a04d98fb4a..811eb6e25c8b 100644 --- a/ports/espressif/peripherals/esp32s2/pins.h +++ b/ports/espressif/peripherals/esp32s2/pins.h @@ -8,8 +8,7 @@ // Use shared-bindings/microcontroller/Pin.h instead. // This ensures that all necessary includes are already included. -#ifndef MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_ESP32S2_PINS_H -#define MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_ESP32S2_PINS_H +#pragma once #define GPIO0_EXISTS 1 extern const mcu_pin_obj_t pin_GPIO0; @@ -97,5 +96,3 @@ extern const mcu_pin_obj_t pin_GPIO44; extern const mcu_pin_obj_t pin_GPIO45; #define GPIO46_EXISTS 1 extern const mcu_pin_obj_t pin_GPIO46; - -#endif // MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_ESP32S2_PINS_H diff --git a/ports/espressif/peripherals/esp32s3/pins.h b/ports/espressif/peripherals/esp32s3/pins.h index 46b9dcf39462..19e2d5fba61a 100644 --- a/ports/espressif/peripherals/esp32s3/pins.h +++ b/ports/espressif/peripherals/esp32s3/pins.h @@ -8,8 +8,7 @@ // Use shared-bindings/microcontroller/Pin.h instead. // This ensures that all necessary includes are already included. -#ifndef MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_ESP32S3_PINS_H -#define MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_ESP32S3_PINS_H +#pragma once #define GPIO0_EXISTS 1 extern const mcu_pin_obj_t pin_GPIO0; @@ -101,5 +100,3 @@ extern const mcu_pin_obj_t pin_GPIO46; extern const mcu_pin_obj_t pin_GPIO47; #define GPIO48_EXISTS 1 extern const mcu_pin_obj_t pin_GPIO48; - -#endif // MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_ESP32S3_PINS_H diff --git a/ports/espressif/peripherals/i2c.h b/ports/espressif/peripherals/i2c.h index d9eea304a82a..a97889fe5acf 100644 --- a/ports/espressif/peripherals/i2c.h +++ b/ports/espressif/peripherals/i2c.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_I2C_HANDLER_H -#define MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_I2C_HANDLER_H +#pragma once #include "driver/i2c.h" @@ -14,5 +13,3 @@ extern void never_reset_i2c(i2c_port_t num); extern esp_err_t peripherals_i2c_init(i2c_port_t num, const i2c_config_t *i2c_conf); extern void peripherals_i2c_deinit(i2c_port_t num); extern i2c_port_t peripherals_i2c_get_free_num(void); - -#endif // MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_I2C_HANDLER_H diff --git a/ports/espressif/peripherals/pins.h b/ports/espressif/peripherals/pins.h index 81582ba3dae7..30bb21cdec70 100644 --- a/ports/espressif/peripherals/pins.h +++ b/ports/espressif/peripherals/pins.h @@ -8,8 +8,7 @@ // Use shared-bindings/microcontroller/Pin.h instead. // This ensures that all necessary includes are already included. -#ifndef MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_PINS_H -#define MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_PINS_H +#pragma once #include "py/obj.h" @@ -60,5 +59,3 @@ extern const mp_obj_type_t mcu_pin_type; #elif defined(CONFIG_IDF_TARGET_ESP32S3) #include "esp32s3/pins.h" #endif - -#endif // MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_PINS_H diff --git a/ports/espressif/peripherals/touch.h b/ports/espressif/peripherals/touch.h index 494a44627878..6be4f8c2be13 100644 --- a/ports/espressif/peripherals/touch.h +++ b/ports/espressif/peripherals/touch.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_TOUCH_HANDLER_H -#define MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_TOUCH_HANDLER_H +#pragma once #include "driver/touch_pad.h" @@ -13,5 +12,3 @@ extern uint16_t peripherals_touch_read(touch_pad_t touchpad); extern void peripherals_touch_reset(void); extern void peripherals_touch_never_reset(const bool enable); extern void peripherals_touch_init(const touch_pad_t touchpad); - -#endif // MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_TOUCH_HANDLER_H diff --git a/ports/espressif/pmic/axp192/axp192.h b/ports/espressif/pmic/axp192/axp192.h index 3fcc05e6f706..daa9459756fc 100755 --- a/ports/espressif/pmic/axp192/axp192.h +++ b/ports/espressif/pmic/axp192/axp192.h @@ -6,8 +6,7 @@ // SPDX-License-Identifier: MIT -#ifndef MICROPY_AXP192_H -#define MICROPY_AXP192_H +#pragma once #include "shared-bindings/busio/I2C.h" @@ -268,5 +267,3 @@ bool pmic_disable_all_irq(busio_i2c_obj_t *i2c); bool pmic_clear_all_irq(busio_i2c_obj_t *i2c); bool pmic_enable_power_key_press_irq(busio_i2c_obj_t *i2c); bool pmic_enable_low_battery_irq(busio_i2c_obj_t *i2c); - -#endif diff --git a/ports/espressif/supervisor/internal_flash.h b/ports/espressif/supervisor/internal_flash.h index a530fd299d80..7bc26042ca5a 100644 --- a/ports/espressif/supervisor/internal_flash.h +++ b/ports/espressif/supervisor/internal_flash.h @@ -4,8 +4,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_INTERNAL_FLASH_H -#define MICROPY_INCLUDED_ESPRESSIF_INTERNAL_FLASH_H +#pragma once #include #include @@ -14,5 +13,3 @@ #define INTERNAL_FLASH_SYSTICK_MASK (0x1ff) // 512ms #define INTERNAL_FLASH_IDLE_TICK(tick) (((tick) & INTERNAL_FLASH_SYSTICK_MASK) == 2) - -#endif // MICROPY_INCLUDED_ESPRESSIF_INTERNAL_FLASH_H diff --git a/ports/litex/boards/fomu/csr.h b/ports/litex/boards/fomu/csr.h index 6c0e280d18ae..c2a2495f7b7b 100644 --- a/ports/litex/boards/fomu/csr.h +++ b/ports/litex/boards/fomu/csr.h @@ -8,8 +8,7 @@ // Auto-generated by Migen (f4fcd10) & LiteX (de205d4a) on 2019-11-25 14:57:34 // -------------------------------------------------------------------------------- #include -#ifndef __GENERATED_CSR_H -#define __GENERATED_CSR_H +#pragma once #include #ifdef CSR_ACCESSORS_DEFINED extern void csr_writeb(uint8_t value, unsigned long addr); @@ -649,5 +648,3 @@ static inline unsigned int version_seed_read(void) { r |= csr_readl(0xe0007038L); return r; } - -#endif diff --git a/ports/litex/boards/fomu/generated/soc.h b/ports/litex/boards/fomu/generated/soc.h index 53b057837ec4..dc821bc6b4ac 100644 --- a/ports/litex/boards/fomu/generated/soc.h +++ b/ports/litex/boards/fomu/generated/soc.h @@ -7,8 +7,7 @@ // -------------------------------------------------------------------------------- // Auto-generated by Migen (f4fcd10) & LiteX (de205d4a) on 2019-11-25 15:17:59 // -------------------------------------------------------------------------------- -#ifndef __GENERATED_SOC_H -#define __GENERATED_SOC_H +#pragma once #define CONFIG_BITSTREAM_SYNC_HEADER1 2123999870 static inline int config_bitstream_sync_header1_read(void) { return 2123999870; @@ -60,5 +59,3 @@ static inline int timer0_interrupt_read(void) { static inline int usb_interrupt_read(void) { return 3; } - -#endif diff --git a/ports/litex/common-hal/digitalio/DigitalInOut.h b/ports/litex/common-hal/digitalio/DigitalInOut.h index 1508bff3658e..f58b23832b19 100644 --- a/ports/litex/common-hal/digitalio/DigitalInOut.h +++ b/ports/litex/common-hal/digitalio/DigitalInOut.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_FOMU_COMMON_HAL_DIGITALIO_DIGITALINOUT_H -#define MICROPY_INCLUDED_FOMU_COMMON_HAL_DIGITALIO_DIGITALINOUT_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -14,5 +13,3 @@ typedef struct { mp_obj_base_t base; const mcu_pin_obj_t *pin; } digitalio_digitalinout_obj_t; - -#endif // MICROPY_INCLUDED_FOMU_COMMON_HAL_DIGITALIO_DIGITALINOUT_H diff --git a/ports/litex/common-hal/microcontroller/Pin.h b/ports/litex/common-hal/microcontroller/Pin.h index aa38abf2d88e..542f3e979b5b 100644 --- a/ports/litex/common-hal/microcontroller/Pin.h +++ b/ports/litex/common-hal/microcontroller/Pin.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_FOMU_COMMON_HAL_MICROCONTROLLER_PIN_H -#define MICROPY_INCLUDED_FOMU_COMMON_HAL_MICROCONTROLLER_PIN_H +#pragma once #include "py/mphal.h" @@ -35,5 +34,3 @@ bool pin_number_is_free(uint8_t pin_port, uint8_t pin_number); void never_reset_pin_number(uint8_t pin_port, uint8_t pin_number); // GPIO_TypeDef * pin_port(uint8_t pin_port); uint16_t pin_mask(uint8_t pin_number); - -#endif // MICROPY_INCLUDED_FOMU_COMMON_HAL_MICROCONTROLLER_PIN_H diff --git a/ports/litex/common-hal/microcontroller/Processor.h b/ports/litex/common-hal/microcontroller/Processor.h index 7a6ffad45902..56da8367f8cf 100644 --- a/ports/litex/common-hal/microcontroller/Processor.h +++ b/ports/litex/common-hal/microcontroller/Processor.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_LITEX_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H -#define MICROPY_INCLUDED_LITEX_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H +#pragma once #define COMMON_HAL_MCU_PROCESSOR_UID_LENGTH 15 @@ -15,5 +14,3 @@ typedef struct { mp_obj_base_t base; // Stores no state currently. } mcu_processor_obj_t; - -#endif // MICROPY_INCLUDED_LITEX_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H diff --git a/ports/litex/hw/common.h b/ports/litex/hw/common.h index aba6b2439492..5597a866c62b 100644 --- a/ports/litex/hw/common.h +++ b/ports/litex/hw/common.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef _HW_COMMON_H_ -#define _HW_COMMON_H_ +#pragma once #include static inline void csr_writeb(uint8_t value, uint32_t addr) { *((volatile uint8_t *)addr) = value; @@ -30,4 +29,3 @@ static inline void csr_writel(uint32_t value, uint32_t addr) { static inline uint32_t csr_readl(uint32_t addr) { return *(volatile uint32_t *)addr; } -#endif /* _HW_COMMON_H_ */ diff --git a/ports/litex/irq.h b/ports/litex/irq.h index e1f0cae4d4d8..f0e0ee2ea4ea 100644 --- a/ports/litex/irq.h +++ b/ports/litex/irq.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef __IRQ_H -#define __IRQ_H +#pragma once #ifdef __cplusplus extern "C" { @@ -72,5 +71,3 @@ static inline unsigned int irq_pending(void) { #ifdef __cplusplus } #endif - -#endif /* __IRQ_H */ diff --git a/ports/litex/mpconfigport.h b/ports/litex/mpconfigport.h index 17b6f6aa74c7..8e7537af6a63 100644 --- a/ports/litex/mpconfigport.h +++ b/ports/litex/mpconfigport.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef FPGA_MPCONFIGPORT_H__ -#define FPGA_MPCONFIGPORT_H__ +#pragma once #define CIRCUITPY_INTERNAL_NVM_SIZE (0) #define MICROPY_NLR_THUMB (0) @@ -16,6 +15,3 @@ #define MICROPY_NLR_SETJMP (1) #define CIRCUITPY_DEFAULT_STACK_SIZE 0x6000 - - -#endif // __INCLUDED_FPGA_MPCONFIGPORT_H diff --git a/ports/litex/mphalport.h b/ports/litex/mphalport.h index ef5705832c4b..fc019b2f42b6 100644 --- a/ports/litex/mphalport.h +++ b/ports/litex/mphalport.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef __FOMU_HAL -#define __FOMU_HAL +#pragma once #include #include @@ -18,5 +17,3 @@ // #define mp_hal_delay_us(us) NRFX_DELAY_US((uint32_t) (us)) bool mp_hal_stdin_any(void); - -#endif diff --git a/ports/litex/supervisor/internal_flash.h b/ports/litex/supervisor/internal_flash.h index 9167036d42ec..7bc26042ca5a 100644 --- a/ports/litex/supervisor/internal_flash.h +++ b/ports/litex/supervisor/internal_flash.h @@ -4,8 +4,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2019 Lucian Copeland for Adafruit Industries // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_LITEX_INTERNAL_FLASH_H -#define MICROPY_INCLUDED_LITEX_INTERNAL_FLASH_H +#pragma once #include #include @@ -14,5 +13,3 @@ #define INTERNAL_FLASH_SYSTICK_MASK (0x1ff) // 512ms #define INTERNAL_FLASH_IDLE_TICK(tick) (((tick) & INTERNAL_FLASH_SYSTICK_MASK) == 2) - -#endif // MICROPY_INCLUDED_LITEX_INTERNAL_FLASH_H diff --git a/ports/mimxrt10xx/boards/flash_config.h b/ports/mimxrt10xx/boards/flash_config.h index a0dc3e22590b..5fc09f639652 100644 --- a/ports/mimxrt10xx/boards/flash_config.h +++ b/ports/mimxrt10xx/boards/flash_config.h @@ -6,8 +6,7 @@ // This file defines board specific functions. -#ifndef MICROPY_INCLUDED_MIMXRT10XX_BOARDS_FLASH_CONFIG_H -#define MICROPY_INCLUDED_MIMXRT10XX_BOARDS_FLASH_CONFIG_H +#pragma once #include @@ -56,5 +55,3 @@ enum // FlexSPI configuration that stores command info. extern const flexspi_nor_config_t qspiflash_config; - -#endif // MICROPY_INCLUDED_MIMXRT10XX_BOARDS_FLASH_CONFIG_H diff --git a/ports/mimxrt10xx/common-hal/analogio/AnalogIn.h b/ports/mimxrt10xx/common-hal/analogio/AnalogIn.h index 0fef51e20d3c..8e7580937767 100644 --- a/ports/mimxrt10xx/common-hal/analogio/AnalogIn.h +++ b/ports/mimxrt10xx/common-hal/analogio/AnalogIn.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_MIMXRT10XX_COMMON_HAL_ANALOGIO_ANALOGIN_H -#define MICROPY_INCLUDED_MIMXRT10XX_COMMON_HAL_ANALOGIO_ANALOGIN_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -16,5 +15,3 @@ typedef struct { mp_obj_base_t base; const mcu_pin_obj_t *pin; } analogio_analogin_obj_t; - -#endif // MICROPY_INCLUDED_MIMXRT10XX_COMMON_HAL_ANALOGIO_ANALOGIN_H diff --git a/ports/mimxrt10xx/common-hal/analogio/AnalogOut.h b/ports/mimxrt10xx/common-hal/analogio/AnalogOut.h index a57467bc2275..08a8332c4159 100644 --- a/ports/mimxrt10xx/common-hal/analogio/AnalogOut.h +++ b/ports/mimxrt10xx/common-hal/analogio/AnalogOut.h @@ -5,13 +5,10 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_MIMXRT10XX_COMMON_HAL_ANALOGIO_ANALOGOUT_H -#define MICROPY_INCLUDED_MIMXRT10XX_COMMON_HAL_ANALOGIO_ANALOGOUT_H +#pragma once #include "py/obj.h" typedef struct { mp_obj_base_t base; } analogio_analogout_obj_t; - -#endif // MICROPY_INCLUDED_MIMXRT10XX_COMMON_HAL_ANALOGIO_ANALOGOUT_H diff --git a/ports/mimxrt10xx/common-hal/microcontroller/Processor.h b/ports/mimxrt10xx/common-hal/microcontroller/Processor.h index 843dfec3508b..30b8e0a4e499 100644 --- a/ports/mimxrt10xx/common-hal/microcontroller/Processor.h +++ b/ports/mimxrt10xx/common-hal/microcontroller/Processor.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_MIMXRT10XX_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H -#define MICROPY_INCLUDED_MIMXRT10XX_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H +#pragma once #define COMMON_HAL_MCU_PROCESSOR_UID_LENGTH 16 @@ -17,5 +16,3 @@ typedef struct { mp_obj_base_t base; uint32_t frequency; } mcu_processor_obj_t; - -#endif // MICROPY_INCLUDED_MIMXRT10XX_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H diff --git a/ports/mimxrt10xx/common-hal/rtc/RTC.h b/ports/mimxrt10xx/common-hal/rtc/RTC.h index 9dcf86ab66e8..851b08970bb5 100644 --- a/ports/mimxrt10xx/common-hal/rtc/RTC.h +++ b/ports/mimxrt10xx/common-hal/rtc/RTC.h @@ -5,10 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_MIMXRT10XX_COMMON_HAL_RTC_RTC_H -#define MICROPY_INCLUDED_MIMXRT10XX_COMMON_HAL_RTC_RTC_H +#pragma once extern void rtc_init(void); extern void rtc_reset(void); - -#endif // MICROPY_INCLUDED_MIMXRT10XX_COMMON_HAL_RTC_RTC_H diff --git a/ports/mimxrt10xx/common-hal/usb_host/Port.h b/ports/mimxrt10xx/common-hal/usb_host/Port.h index d40b99c0b867..e7b44c9524cf 100644 --- a/ports/mimxrt10xx/common-hal/usb_host/Port.h +++ b/ports/mimxrt10xx/common-hal/usb_host/Port.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_MIMXRT10XX_COMMON_HAL_USB_HOST_PORT_H -#define MICROPY_INCLUDED_MIMXRT10XX_COMMON_HAL_USB_HOST_PORT_H +#pragma once #include "py/obj.h" @@ -14,5 +13,3 @@ typedef struct { const mcu_pin_obj_t *dp; const mcu_pin_obj_t *dm; } usb_host_port_obj_t; - -#endif // MICROPY_INCLUDED_MIMXRT10XX_COMMON_HAL_USB_HOST_PORT_H diff --git a/ports/mimxrt10xx/mpconfigport.h b/ports/mimxrt10xx/mpconfigport.h index 9770042ea4f5..4f9acd7a9fd3 100644 --- a/ports/mimxrt10xx/mpconfigport.h +++ b/ports/mimxrt10xx/mpconfigport.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef __INCLUDED_MPCONFIGPORT_H -#define __INCLUDED_MPCONFIGPORT_H +#pragma once #include @@ -34,5 +33,3 @@ extern uint8_t _ld_default_stack_size; // TODO: // mp_obj_t playing_audio[AUDIO_DMA_CHANNEL_COUNT] as an MP_REGISTER_ROOT_POINTER. - -#endif // __INCLUDED_MPCONFIGPORT_H diff --git a/ports/mimxrt10xx/mphalport.h b/ports/mimxrt10xx/mphalport.h index 9d6a9df38526..da0d3ce284f4 100644 --- a/ports/mimxrt10xx/mphalport.h +++ b/ports/mimxrt10xx/mphalport.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_MIMXRT10XX_MPHALPORT_H -#define MICROPY_INCLUDED_MIMXRT10XX_MPHALPORT_H +#pragma once #include "py/obj.h" @@ -28,5 +27,3 @@ void mp_hal_set_interrupt_char(int c); void mp_hal_disable_all_interrupts(void); void mp_hal_enable_all_interrupts(void); - -#endif // MICROPY_INCLUDED_MIMXRT10XX_MPHALPORT_H diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/periph.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/periph.h index b249bcd018e2..3993bf95e08b 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/periph.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/periph.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_MIMXRT10XX_PERIPHERALS_PERIPH_H -#define MICROPY_INCLUDED_MIMXRT10XX_PERIPHERALS_PERIPH_H +#pragma once #include "pins.h" @@ -71,5 +70,3 @@ extern LPUART_Type *const mcu_uart_banks[]; #elif defined(MIMXRT1176_cm7_SERIES) #include "MIMXRT1176/periph.h" #endif - -#endif // MICROPY_INCLUDED_MIMXRT10XX_PERIPHERALS_PERIPH_H diff --git a/ports/mimxrt10xx/peripherals/mimxrt10xx/pins.h b/ports/mimxrt10xx/peripherals/mimxrt10xx/pins.h index 235d337cb54d..c4b570a35de7 100644 --- a/ports/mimxrt10xx/peripherals/mimxrt10xx/pins.h +++ b/ports/mimxrt10xx/peripherals/mimxrt10xx/pins.h @@ -8,8 +8,7 @@ // DO NOT include this file directly. Use shared-bindings/microcontroller/Pin.h instead to ensure // that all necessary includes are already included. -#ifndef MICROPY_INCLUDED_MIMXRT10XX_PERIPHERALS_PINS_H -#define MICROPY_INCLUDED_MIMXRT10XX_PERIPHERALS_PINS_H +#pragma once #include #include @@ -71,5 +70,3 @@ void enable_pin_change_interrupt(const mcu_pin_obj_t *pin, gpio_change_interrupt #elif defined(MIMXRT1176_cm7_SERIES) #include "MIMXRT1176/pins.h" #endif - -#endif // MICROPY_INCLUDED_MIMXRT10XX_PERIPHERALS_PINS_H diff --git a/ports/mimxrt10xx/reset.h b/ports/mimxrt10xx/reset.h index bfa02c324011..04c951221e9e 100644 --- a/ports/mimxrt10xx/reset.h +++ b/ports/mimxrt10xx/reset.h @@ -4,8 +4,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2019 Artur Pacholec // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_MIMXRT10XX_RESET_H -#define MICROPY_INCLUDED_MIMXRT10XX_RESET_H +#pragma once #include #include @@ -20,5 +19,3 @@ void reset_to_bootloader(void) NORETURN; void reset(void) NORETURN; bool bootloader_available(void); - -#endif // MICROPY_INCLUDED_MIMXRT10XX_RESET_H diff --git a/ports/mimxrt10xx/supervisor/internal_flash.h b/ports/mimxrt10xx/supervisor/internal_flash.h index aa05bb2765cd..cab1fb4493f0 100644 --- a/ports/mimxrt10xx/supervisor/internal_flash.h +++ b/ports/mimxrt10xx/supervisor/internal_flash.h @@ -3,8 +3,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_MIMXRT10XX_INTERNAL_FLASH_H -#define MICROPY_INCLUDED_MIMXRT10XX_INTERNAL_FLASH_H +#pragma once #include #include @@ -26,6 +25,3 @@ extern void flexspi_nor_init(void); extern status_t flexspi_nor_flash_erase_sector(FLEXSPI_Type *base, uint32_t address); extern status_t flexspi_nor_flash_page_program(FLEXSPI_Type *base, uint32_t dstAddr, const uint32_t *src); extern status_t flexspi_nor_enable_quad_mode(FLEXSPI_Type *base); - - -#endif // MICROPY_INCLUDED_MIMXRT10XX_INTERNAL_FLASH_H diff --git a/ports/nordic/background.h b/ports/nordic/background.h index 8cf6418f6e15..5712b054193d 100644 --- a/ports/nordic/background.h +++ b/ports/nordic/background.h @@ -4,9 +4,6 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_BACKGROUND_H -#define MICROPY_INCLUDED_NRF_BACKGROUND_H +#pragma once void board_background_task(void); - -#endif // MICROPY_INCLUDED_NRF_BACKGROUND_H diff --git a/ports/nordic/bluetooth/ble_drv.h b/ports/nordic/bluetooth/ble_drv.h index 9c07cde1ac62..30318d5264fa 100644 --- a/ports/nordic/bluetooth/ble_drv.h +++ b/ports/nordic/bluetooth/ble_drv.h @@ -6,8 +6,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_BLUETOOTH_BLE_DRV_H -#define MICROPY_INCLUDED_NRF_BLUETOOTH_BLE_DRV_H +#pragma once #include @@ -53,5 +52,3 @@ void ble_drv_remove_event_handler(ble_drv_evt_handler_t func, void *param); // Allow for user provided entries to prevent allocations outside the VM. void ble_drv_add_event_handler_entry(ble_drv_evt_handler_entry_t *entry, ble_drv_evt_handler_t func, void *param); - -#endif // MICROPY_INCLUDED_NRF_BLUETOOTH_BLE_DRV_H diff --git a/ports/nordic/common-hal/_bleio/Adapter.h b/ports/nordic/common-hal/_bleio/Adapter.h index f8ade79b0040..5a4a147d32a7 100644 --- a/ports/nordic/common-hal/_bleio/Adapter.h +++ b/ports/nordic/common-hal/_bleio/Adapter.h @@ -6,8 +6,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_ADAPTER_H -#define MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_ADAPTER_H +#pragma once #include "py/obj.h" #include "py/objtuple.h" @@ -41,5 +40,3 @@ typedef struct { void bleio_adapter_gc_collect(bleio_adapter_obj_t *adapter); void bleio_adapter_reset(bleio_adapter_obj_t *adapter); - -#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_ADAPTER_H diff --git a/ports/nordic/common-hal/_bleio/Attribute.h b/ports/nordic/common-hal/_bleio/Attribute.h index 385166639c24..5fa6b4d63776 100644 --- a/ports/nordic/common-hal/_bleio/Attribute.h +++ b/ports/nordic/common-hal/_bleio/Attribute.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_ATTRIBUTE_H -#define MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_ATTRIBUTE_H +#pragma once #include "shared-module/_bleio/Attribute.h" extern void bleio_attribute_gatts_set_security_mode(ble_gap_conn_sec_mode_t *perm, bleio_attribute_security_mode_t security_mode); - -#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_ATTRIBUTE_H diff --git a/ports/nordic/common-hal/_bleio/Characteristic.h b/ports/nordic/common-hal/_bleio/Characteristic.h index fd9dd0680dc1..268943478b58 100644 --- a/ports/nordic/common-hal/_bleio/Characteristic.h +++ b/ports/nordic/common-hal/_bleio/Characteristic.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_CHARACTERISTIC_H -#define MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_CHARACTERISTIC_H +#pragma once #include "shared-bindings/_bleio/Attribute.h" #include "common-hal/_bleio/Descriptor.h" @@ -32,5 +31,3 @@ typedef struct _bleio_characteristic_obj { uint16_t sccd_handle; bool fixed_length; } bleio_characteristic_obj_t; - -#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_CHARACTERISTIC_H diff --git a/ports/nordic/common-hal/_bleio/CharacteristicBuffer.h b/ports/nordic/common-hal/_bleio/CharacteristicBuffer.h index 6e2dc0874ed8..55b139924bc8 100644 --- a/ports/nordic/common-hal/_bleio/CharacteristicBuffer.h +++ b/ports/nordic/common-hal/_bleio/CharacteristicBuffer.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_CHARACTERISTICBUFFER_H -#define MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_CHARACTERISTICBUFFER_H +#pragma once #include @@ -22,5 +21,3 @@ typedef struct { ringbuf_t ringbuf; bool watch_for_interrupt_char; } bleio_characteristic_buffer_obj_t; - -#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_CHARACTERISTICBUFFER_H diff --git a/ports/nordic/common-hal/_bleio/Connection.h b/ports/nordic/common-hal/_bleio/Connection.h index a8729ad72747..110677dc78b4 100644 --- a/ports/nordic/common-hal/_bleio/Connection.h +++ b/ports/nordic/common-hal/_bleio/Connection.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_CONNECTION_H -#define MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_CONNECTION_H +#pragma once #include @@ -69,5 +68,3 @@ bool connection_on_ble_evt(ble_evt_t *ble_evt, void *self_in); uint16_t bleio_connection_get_conn_handle(bleio_connection_obj_t *self); mp_obj_t bleio_connection_new_from_internal(bleio_connection_internal_t *connection); bleio_connection_internal_t *bleio_conn_handle_to_connection(uint16_t conn_handle); - -#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_CONNECTION_H diff --git a/ports/nordic/common-hal/_bleio/Descriptor.h b/ports/nordic/common-hal/_bleio/Descriptor.h index 674a2aa5027c..2a1f5e5d73b7 100644 --- a/ports/nordic/common-hal/_bleio/Descriptor.h +++ b/ports/nordic/common-hal/_bleio/Descriptor.h @@ -6,8 +6,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_DESCRIPTOR_H -#define MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_DESCRIPTOR_H +#pragma once #include "py/obj.h" @@ -28,5 +27,3 @@ typedef struct _bleio_descriptor_obj { bleio_attribute_security_mode_t read_perm; bleio_attribute_security_mode_t write_perm; } bleio_descriptor_obj_t; - -#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_DESCRIPTOR_H diff --git a/ports/nordic/common-hal/_bleio/PacketBuffer.h b/ports/nordic/common-hal/_bleio/PacketBuffer.h index 38fea8bda0d3..c55efd0293b6 100644 --- a/ports/nordic/common-hal/_bleio/PacketBuffer.h +++ b/ports/nordic/common-hal/_bleio/PacketBuffer.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_PACKETBUFFER_H -#define MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_PACKETBUFFER_H +#pragma once #include "nrf_soc.h" @@ -30,5 +29,3 @@ typedef struct { bool client; bool packet_queued; } bleio_packet_buffer_obj_t; - -#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_PACKETBUFFER_H diff --git a/ports/nordic/common-hal/_bleio/Service.h b/ports/nordic/common-hal/_bleio/Service.h index b2892b3320ac..172a4b8024fd 100644 --- a/ports/nordic/common-hal/_bleio/Service.h +++ b/ports/nordic/common-hal/_bleio/Service.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_SERVICE_H -#define MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_SERVICE_H +#pragma once #include "py/objlist.h" #include "common-hal/_bleio/UUID.h" @@ -29,5 +28,3 @@ typedef struct bleio_service_obj { } bleio_service_obj_t; void bleio_service_from_connection(bleio_service_obj_t *self, mp_obj_t connection); - -#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_SERVICE_H diff --git a/ports/nordic/common-hal/_bleio/UUID.h b/ports/nordic/common-hal/_bleio/UUID.h index 588f09c2ee85..63d7be04b635 100644 --- a/ports/nordic/common-hal/_bleio/UUID.h +++ b/ports/nordic/common-hal/_bleio/UUID.h @@ -6,8 +6,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_UUID_H -#define MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_UUID_H +#pragma once #include "py/obj.h" @@ -25,5 +24,3 @@ typedef struct { void bleio_uuid_construct_from_nrf_ble_uuid(bleio_uuid_obj_t *self, ble_uuid_t *nrf_uuid); void bleio_uuid_convert_to_nrf_ble_uuid(bleio_uuid_obj_t *self, ble_uuid_t *nrf_uuid); - -#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_UUID_H diff --git a/ports/nordic/common-hal/_bleio/__init__.h b/ports/nordic/common-hal/_bleio/__init__.h index d3f4688b403d..caf287f9204b 100644 --- a/ports/nordic/common-hal/_bleio/__init__.h +++ b/ports/nordic/common-hal/_bleio/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_INIT_H -#define MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_INIT_H +#pragma once void bleio_background(void); @@ -23,5 +22,3 @@ typedef struct { void check_nrf_error(uint32_t err_code); void check_gatt_status(uint16_t gatt_status); void check_sec_status(uint8_t sec_status); - -#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_INIT_H diff --git a/ports/nordic/common-hal/_bleio/bonding.h b/ports/nordic/common-hal/_bleio/bonding.h index dc89e2932635..584b04e561fc 100644 --- a/ports/nordic/common-hal/_bleio/bonding.h +++ b/ports/nordic/common-hal/_bleio/bonding.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_BONDING_H -#define MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_BONDING_H +#pragma once #include #include @@ -69,5 +68,3 @@ size_t bonding_peripheral_bond_count(void); void bonding_print_block(bonding_block_t *); void bonding_print_keys(bonding_keys_t *); #endif - -#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_BLEIO_BONDING_H diff --git a/ports/nordic/common-hal/analogio/AnalogIn.h b/ports/nordic/common-hal/analogio/AnalogIn.h index c3cd94e53004..ca86187620f9 100644 --- a/ports/nordic/common-hal/analogio/AnalogIn.h +++ b/ports/nordic/common-hal/analogio/AnalogIn.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_ANALOGIO_ANALOGIN_H -#define MICROPY_INCLUDED_NRF_COMMON_HAL_ANALOGIO_ANALOGIN_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -17,5 +16,3 @@ typedef struct { } analogio_analogin_obj_t; void analogin_init(void); - -#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_ANALOGIO_ANALOGIN_H diff --git a/ports/nordic/common-hal/analogio/AnalogOut.h b/ports/nordic/common-hal/analogio/AnalogOut.h index c07260aeb683..8b5c3b638ee0 100644 --- a/ports/nordic/common-hal/analogio/AnalogOut.h +++ b/ports/nordic/common-hal/analogio/AnalogOut.h @@ -4,13 +4,10 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_ANALOGIO_ANALOGOUT_H -#define MICROPY_INCLUDED_NRF_COMMON_HAL_ANALOGIO_ANALOGOUT_H +#pragma once #include "py/obj.h" typedef struct { mp_obj_base_t base; } analogio_analogout_obj_t; - -#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_ANALOGIO_ANALOGOUT_H diff --git a/ports/nordic/common-hal/audiobusio/I2SOut.h b/ports/nordic/common-hal/audiobusio/I2SOut.h index 6a877af722e6..7cb62ae3d2b9 100644 --- a/ports/nordic/common-hal/audiobusio/I2SOut.h +++ b/ports/nordic/common-hal/audiobusio/I2SOut.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_AUDIOBUSIO_I2SOUT_H -#define MICROPY_INCLUDED_NRF_COMMON_HAL_AUDIOBUSIO_I2SOUT_H +#pragma once #include "py/obj.h" @@ -39,5 +38,3 @@ typedef struct { void i2s_reset(void); void i2s_background(void); - -#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_AUDIOBUSIO_I2SOUT_H diff --git a/ports/nordic/common-hal/audiobusio/PDMIn.h b/ports/nordic/common-hal/audiobusio/PDMIn.h index cafa8d0ef0ac..50d22dc1b200 100644 --- a/ports/nordic/common-hal/audiobusio/PDMIn.h +++ b/ports/nordic/common-hal/audiobusio/PDMIn.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_AUDIOBUSIO_AUDIOOUT_H -#define MICROPY_INCLUDED_NRF_COMMON_HAL_AUDIOBUSIO_AUDIOOUT_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -16,5 +15,3 @@ typedef struct { uint8_t clock_pin_number, data_pin_number; bool mono; } audiobusio_pdmin_obj_t; - -#endif diff --git a/ports/nordic/common-hal/busio/I2C.h b/ports/nordic/common-hal/busio/I2C.h index 08566182f0cc..d94ff6929bc4 100644 --- a/ports/nordic/common-hal/busio/I2C.h +++ b/ports/nordic/common-hal/busio/I2C.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BUSIO_I2C_H -#define MICROPY_INCLUDED_NRF_COMMON_HAL_BUSIO_I2C_H +#pragma once #include "nrfx_twim.h" @@ -28,5 +27,3 @@ typedef struct { } busio_i2c_obj_t; void i2c_reset(void); - -#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_BUSIO_I2C_H diff --git a/ports/nordic/common-hal/busio/SPI.h b/ports/nordic/common-hal/busio/SPI.h index f3e878a0d082..7bfddd9625dc 100644 --- a/ports/nordic/common-hal/busio/SPI.h +++ b/ports/nordic/common-hal/busio/SPI.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BUSIO_SPI_H -#define MICROPY_INCLUDED_NRF_COMMON_HAL_BUSIO_SPI_H +#pragma once #include "nrfx_spim.h" #include "py/obj.h" @@ -26,5 +25,3 @@ typedef struct { } busio_spi_obj_t; void spi_reset(void); - -#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_BUSIO_SPI_H diff --git a/ports/nordic/common-hal/busio/UART.h b/ports/nordic/common-hal/busio/UART.h index d1abc82e5e72..10e881ced5a8 100644 --- a/ports/nordic/common-hal/busio/UART.h +++ b/ports/nordic/common-hal/busio/UART.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_BUSIO_UART_H -#define MICROPY_INCLUDED_NRF_COMMON_HAL_BUSIO_UART_H +#pragma once #include "common-hal/microcontroller/Pin.h" #include "nrfx_uarte.h" @@ -32,5 +31,3 @@ typedef struct { } busio_uart_obj_t; void uart_reset(void); - -#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_BUSIO_UART_H diff --git a/ports/nordic/common-hal/countio/Counter.h b/ports/nordic/common-hal/countio/Counter.h index b800a448a54f..5a3b35429d1d 100644 --- a/ports/nordic/common-hal/countio/Counter.h +++ b/ports/nordic/common-hal/countio/Counter.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_COUNTIO_COUNTER_H -#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_COUNTIO_COUNTER_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -17,5 +16,3 @@ typedef struct { uint8_t pin; mp_int_t count; } countio_counter_obj_t; - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_COUNTIO_COUNT_H diff --git a/ports/nordic/common-hal/digitalio/DigitalInOut.h b/ports/nordic/common-hal/digitalio/DigitalInOut.h index d4121968ed98..04226dbc8990 100644 --- a/ports/nordic/common-hal/digitalio/DigitalInOut.h +++ b/ports/nordic/common-hal/digitalio/DigitalInOut.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_DIGITALIO_DIGITALINOUT_H -#define MICROPY_INCLUDED_NRF_COMMON_HAL_DIGITALIO_DIGITALINOUT_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -13,5 +12,3 @@ typedef struct { mp_obj_base_t base; const mcu_pin_obj_t *pin; } digitalio_digitalinout_obj_t; - -#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_DIGITALIO_DIGITALINOUT_H diff --git a/ports/nordic/common-hal/memorymap/AddressRange.h b/ports/nordic/common-hal/memorymap/AddressRange.h index 9018855881b2..71bd76b9ea52 100644 --- a/ports/nordic/common-hal/memorymap/AddressRange.h +++ b/ports/nordic/common-hal/memorymap/AddressRange.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_MEMORYMAP_ADDRESSRANGE_H -#define MICROPY_INCLUDED_NRF_COMMON_HAL_MEMORYMAP_ADDRESSRANGE_H +#pragma once #include "py/obj.h" @@ -14,5 +13,3 @@ typedef struct { uint8_t *start_address; size_t len; } memorymap_addressrange_obj_t; - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_MEMORYMAP_ADDRESSRANGE_H diff --git a/ports/nordic/common-hal/microcontroller/Pin.h b/ports/nordic/common-hal/microcontroller/Pin.h index 4f7e414cb006..e0a7550ec3a3 100644 --- a/ports/nordic/common-hal/microcontroller/Pin.h +++ b/ports/nordic/common-hal/microcontroller/Pin.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_MICROCONTROLLER_PIN_H -#define MICROPY_INCLUDED_NRF_COMMON_HAL_MICROCONTROLLER_PIN_H +#pragma once #include "py/mphal.h" @@ -29,5 +28,3 @@ static inline uint8_t nrf_pin_port(uint8_t absolute_pin) { static inline uint8_t nrf_relative_pin_number(uint8_t absolute_pin) { return absolute_pin & 0x1f; } - -#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_MICROCONTROLLER_PIN_H diff --git a/ports/nordic/common-hal/microcontroller/Processor.h b/ports/nordic/common-hal/microcontroller/Processor.h index 744bb2238f27..6f22ed8811af 100644 --- a/ports/nordic/common-hal/microcontroller/Processor.h +++ b/ports/nordic/common-hal/microcontroller/Processor.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H -#define MICROPY_INCLUDED_NRF_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H +#pragma once #define COMMON_HAL_MCU_PROCESSOR_UID_LENGTH 8 @@ -17,5 +16,3 @@ typedef struct { } mcu_processor_obj_t; extern uint32_t reset_reason_saved; - -#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H diff --git a/ports/nordic/common-hal/neopixel_write/__init__.h b/ports/nordic/common-hal/neopixel_write/__init__.h index 5a6e7a79fb34..4820159c818a 100644 --- a/ports/nordic/common-hal/neopixel_write/__init__.h +++ b/ports/nordic/common-hal/neopixel_write/__init__.h @@ -4,9 +4,6 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32F4_COMMON_HAL_NEOPIXEL_WRITE_INIT_H -#define MICROPY_INCLUDED_STM32F4_COMMON_HAL_NEOPIXEL_WRITE_INIT_H +#pragma once void neopixel_write_reset(void); - -#endif // MICROPY_INCLUDED_STM32F4_COMMON_HAL_NEOPIXEL_WRITE_INIT_H diff --git a/ports/nordic/common-hal/nvm/ByteArray.h b/ports/nordic/common-hal/nvm/ByteArray.h index 461a9af5bb64..9d2add63200e 100644 --- a/ports/nordic/common-hal/nvm/ByteArray.h +++ b/ports/nordic/common-hal/nvm/ByteArray.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_NVM_BYTEARRAY_H -#define MICROPY_INCLUDED_NRF_COMMON_HAL_NVM_BYTEARRAY_H +#pragma once #include "py/obj.h" @@ -14,5 +13,3 @@ typedef struct { uint8_t *start_address; uint32_t len; } nvm_bytearray_obj_t; - -#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_NVM_BYTEARRAY_H diff --git a/ports/nordic/common-hal/rgbmatrix/RGBMatrix.h b/ports/nordic/common-hal/rgbmatrix/RGBMatrix.h index de4757383368..56c32e5c24f8 100644 --- a/ports/nordic/common-hal/rgbmatrix/RGBMatrix.h +++ b/ports/nordic/common-hal/rgbmatrix/RGBMatrix.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_RGBMATRIX_RGBMATRIX_H -#define MICROPY_INCLUDED_NRF_COMMON_HAL_RGBMATRIX_RGBMATRIX_H +#pragma once #include "shared-module/rgbmatrix/RGBMatrix.h" @@ -13,5 +12,3 @@ void *common_hal_rgbmatrix_timer_allocate(rgbmatrix_rgbmatrix_obj_t *self); void common_hal_rgbmatrix_timer_enable(void *); void common_hal_rgbmatrix_timer_disable(void *); void common_hal_rgbmatrix_timer_free(void *); - -#endif diff --git a/ports/nordic/common-hal/rotaryio/IncrementalEncoder.h b/ports/nordic/common-hal/rotaryio/IncrementalEncoder.h index 299703e51135..32a6f32fee67 100644 --- a/ports/nordic/common-hal/rotaryio/IncrementalEncoder.h +++ b/ports/nordic/common-hal/rotaryio/IncrementalEncoder.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_ROTARYIO_INCREMENTALENCODER_H -#define MICROPY_INCLUDED_NRF_COMMON_HAL_ROTARYIO_INCREMENTALENCODER_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -23,5 +22,3 @@ typedef struct { void incrementalencoder_interrupt_handler(uint8_t channel); - -#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_ROTARYIO_INCREMENTALENCODER_H diff --git a/ports/nordic/common-hal/rtc/RTC.h b/ports/nordic/common-hal/rtc/RTC.h index f05c924db80c..18625763562a 100644 --- a/ports/nordic/common-hal/rtc/RTC.h +++ b/ports/nordic/common-hal/rtc/RTC.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_RTC_RTC_H -#define MICROPY_INCLUDED_NRF_COMMON_HAL_RTC_RTC_H +#pragma once extern void rtc_init(void); extern void rtc_reset(void); extern void common_hal_rtc_init(void); - -#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_RTC_RTC_H diff --git a/ports/nordic/common-hal/watchdog/WatchDogTimer.h b/ports/nordic/common-hal/watchdog/WatchDogTimer.h index f7faeee599d5..c4489a9f6317 100644 --- a/ports/nordic/common-hal/watchdog/WatchDogTimer.h +++ b/ports/nordic/common-hal/watchdog/WatchDogTimer.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_WATCHDOG_WATCHDOGTIMER_H -#define MICROPY_INCLUDED_NRF_COMMON_HAL_WATCHDOG_WATCHDOGTIMER_H +#pragma once #include "py/obj.h" @@ -19,5 +18,3 @@ struct _watchdog_watchdogtimer_obj_t { mp_float_t timeout; watchdog_watchdogmode_t mode; }; - -#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_WATCHDOG_WATCHDOGTIMER_H diff --git a/ports/nordic/mpconfigport.h b/ports/nordic/mpconfigport.h index ddaff7276529..ed6c2827000c 100644 --- a/ports/nordic/mpconfigport.h +++ b/ports/nordic/mpconfigport.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef NRF5_MPCONFIGPORT_H__ -#define NRF5_MPCONFIGPORT_H__ +#pragma once #include "ble_drv.h" @@ -183,5 +182,3 @@ #if SOFTDEVICE_RAM_SIZE + SPIM3_BUFFER_RAM_SIZE + APP_RAM_SIZE < RAM_SIZE #error RAM size regions do not use all of RAM #endif - -#endif // NRF5_MPCONFIGPORT_H__ diff --git a/ports/nordic/mphalport.h b/ports/nordic/mphalport.h index c534f73d0afa..75bb2f411b20 100644 --- a/ports/nordic/mphalport.h +++ b/ports/nordic/mphalport.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef __NRF52_HAL -#define __NRF52_HAL +#pragma once #include #include @@ -21,5 +20,3 @@ extern nrfx_uarte_t serial_instance; #define mp_hal_delay_us(us) NRFX_DELAY_US((uint32_t)(us)) bool mp_hal_stdin_any(void); - -#endif diff --git a/ports/nordic/nrfx_config.h b/ports/nordic/nrfx_config.h index 0cfe834023c0..99c3caa0bd67 100644 --- a/ports/nordic/nrfx_config.h +++ b/ports/nordic/nrfx_config.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef NRFX_CONFIG_H__ -#define NRFX_CONFIG_H__ +#pragma once // Power #define NRFX_POWER_ENABLED 1 @@ -137,5 +136,3 @@ // This IRQ indicates the system will reboot shortly, so give // it a high priority. #define NRFX_WDT_DEFAULT_CONFIG_IRQ_PRIORITY 2 - -#endif // NRFX_CONFIG_H__ diff --git a/ports/nordic/nrfx_glue.h b/ports/nordic/nrfx_glue.h index cdd6c7e758e9..f1dca736d50f 100644 --- a/ports/nordic/nrfx_glue.h +++ b/ports/nordic/nrfx_glue.h @@ -44,8 +44,7 @@ * */ -#ifndef NRFX_GLUE_H__ -#define NRFX_GLUE_H__ +#pragma once #ifdef __cplusplus extern "C" { @@ -242,5 +241,3 @@ void common_hal_mcu_enable_interrupts(void); #ifdef __cplusplus } #endif - -#endif // NRFX_GLUE_H__ diff --git a/ports/nordic/nrfx_log.h b/ports/nordic/nrfx_log.h index f6ef36ee185c..a988ea3ec132 100644 --- a/ports/nordic/nrfx_log.h +++ b/ports/nordic/nrfx_log.h @@ -44,8 +44,7 @@ * */ -#ifndef NRFX_LOG_H__ -#define NRFX_LOG_H__ +#pragma once #ifdef __cplusplus extern "C" { @@ -140,5 +139,3 @@ extern "C" { #ifdef __cplusplus } #endif - -#endif // NRFX_LOG_H__ diff --git a/ports/nordic/peripherals/nrf/nrf52833/pins.h b/ports/nordic/peripherals/nrf/nrf52833/pins.h index e3ae4874d782..c97c22760dbe 100644 --- a/ports/nordic/peripherals/nrf/nrf52833/pins.h +++ b/ports/nordic/peripherals/nrf/nrf52833/pins.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_PERIPHERALS_NRF52833_PINS_H -#define MICROPY_INCLUDED_NRF_PERIPHERALS_NRF52833_PINS_H +#pragma once extern const mcu_pin_obj_t pin_P0_00; extern const mcu_pin_obj_t pin_P0_01; @@ -49,5 +48,3 @@ extern const mcu_pin_obj_t pin_P1_06; extern const mcu_pin_obj_t pin_P1_07; extern const mcu_pin_obj_t pin_P1_08; extern const mcu_pin_obj_t pin_P1_09; - -#endif // MICROPY_INCLUDED_NRF_PERIPHERALS_NRF52833_PINS_H diff --git a/ports/nordic/peripherals/nrf/nrf52840/pins.h b/ports/nordic/peripherals/nrf/nrf52840/pins.h index d71ff03209bc..676efb4bb1ff 100644 --- a/ports/nordic/peripherals/nrf/nrf52840/pins.h +++ b/ports/nordic/peripherals/nrf/nrf52840/pins.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_PERIPHERALS_NRF52840_PINS_H -#define MICROPY_INCLUDED_NRF_PERIPHERALS_NRF52840_PINS_H +#pragma once extern const mcu_pin_obj_t pin_P0_00; extern const mcu_pin_obj_t pin_P0_01; @@ -55,5 +54,3 @@ extern const mcu_pin_obj_t pin_P1_12; extern const mcu_pin_obj_t pin_P1_13; extern const mcu_pin_obj_t pin_P1_14; extern const mcu_pin_obj_t pin_P1_15; - -#endif // MICROPY_INCLUDED_NRF_PERIPHERALS_NRF52840_PINS_H diff --git a/ports/nordic/peripherals/nrf/pins.h b/ports/nordic/peripherals/nrf/pins.h index db8f0d15cb70..096568e87c3d 100644 --- a/ports/nordic/peripherals/nrf/pins.h +++ b/ports/nordic/peripherals/nrf/pins.h @@ -7,8 +7,7 @@ // DO NOT include this file directly. Use shared-bindings/microcontroller/Pin.h instead to ensure // that all necessary includes are already included. -#ifndef __MICROPY_INCLUDED_NRF_PERIPHERALS_PINS_H__ -#define __MICROPY_INCLUDED_NRF_PERIPHERALS_PINS_H__ +#pragma once #include #include @@ -45,5 +44,3 @@ extern const mp_obj_type_t mcu_pin_type; #ifdef NRF52833 #include "nrf52833/pins.h" #endif - -#endif // __MICROPY_INCLUDED_NRF_PERIPHERALS_PINS_H__ diff --git a/ports/nordic/sd_mutex.h b/ports/nordic/sd_mutex.h index 9f2eb9764208..d4b45b505994 100644 --- a/ports/nordic/sd_mutex.h +++ b/ports/nordic/sd_mutex.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_SD_MUTEX_H -#define MICROPY_INCLUDED_NRF_SD_MUTEX_H +#pragma once #include "nrf_soc.h" @@ -22,5 +21,3 @@ void sd_mutex_acquire_wait_no_vm(nrf_mutex_t *p_mutex); // Release a mutex, and raise exception on error. void sd_mutex_release_check(nrf_mutex_t *p_mutex); - -#endif // MICROPY_INCLUDED_NRF_SD_MUTEX_H diff --git a/ports/nordic/supervisor/internal_flash.h b/ports/nordic/supervisor/internal_flash.h index 05632f1d755f..32a77a63a9bb 100644 --- a/ports/nordic/supervisor/internal_flash.h +++ b/ports/nordic/supervisor/internal_flash.h @@ -3,8 +3,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_NRF_INTERNAL_FLASH_H -#define MICROPY_INCLUDED_NRF_INTERNAL_FLASH_H +#pragma once #include #include @@ -13,5 +12,3 @@ #define INTERNAL_FLASH_SYSTICK_MASK (0x1ff) // 512ms #define INTERNAL_FLASH_IDLE_TICK(tick) (((tick) & INTERNAL_FLASH_SYSTICK_MASK) == 2) - -#endif // MICROPY_INCLUDED_NRF_INTERNAL_FLASH_H diff --git a/ports/raspberrypi/audio_dma.h b/ports/raspberrypi/audio_dma.h index eeb34e78466f..7c33a9e2ac31 100644 --- a/ports/raspberrypi/audio_dma.h +++ b/ports/raspberrypi/audio_dma.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_RASPBERRYPI_AUDIO_DMA_OUT_H -#define MICROPY_INCLUDED_RASPBERRYPI_AUDIO_DMA_OUT_H +#pragma once #include "py/obj.h" #include "supervisor/background_callback.h" @@ -73,5 +72,3 @@ bool audio_dma_get_paused(audio_dma_t *dma); uint32_t audio_dma_pause_all(void); void audio_dma_unpause_mask(uint32_t channel_mask); - -#endif // MICROPY_INCLUDED_RASPBERRYPI_AUDIO_DMA_OUT_H diff --git a/ports/raspberrypi/background.h b/ports/raspberrypi/background.h index a538a24734d5..fe71149ab4b4 100644 --- a/ports/raspberrypi/background.h +++ b/ports/raspberrypi/background.h @@ -4,9 +4,6 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_RASPBERRYPI_BACKGROUND_H -#define MICROPY_INCLUDED_RASPBERRYPI_BACKGROUND_H +#pragma once #include - -#endif // MICROPY_INCLUDED_RASPBERRYPI_BACKGROUND_H diff --git a/ports/raspberrypi/bindings/rp2pio/StateMachine.h b/ports/raspberrypi/bindings/rp2pio/StateMachine.h index 8076031a35b5..ce14d634097c 100644 --- a/ports/raspberrypi/bindings/rp2pio/StateMachine.h +++ b/ports/raspberrypi/bindings/rp2pio/StateMachine.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_RASPBERRYPI_BINDINGS_RP2PIO_STATEMACHINE_H -#define MICROPY_INCLUDED_RASPBERRYPI_BINDINGS_RP2PIO_STATEMACHINE_H +#pragma once #include "py/obj.h" @@ -68,5 +67,3 @@ void common_hal_rp2pio_statemachine_clear_txstall(rp2pio_statemachine_obj_t *sel size_t common_hal_rp2pio_statemachine_get_in_waiting(rp2pio_statemachine_obj_t *self); void common_hal_rp2pio_statemachine_set_interrupt_handler(rp2pio_statemachine_obj_t *self, void (*handler)(void *), void *arg, int mask); - -#endif // MICROPY_INCLUDED_RASPBERRYPI_BINDINGS_RP2PIO_STATEMACHINE_H diff --git a/ports/raspberrypi/boards/pimoroni_badger2040/badger-shared.h b/ports/raspberrypi/boards/pimoroni_badger2040/badger-shared.h index 66db7063d80d..c6be0048937c 100644 --- a/ports/raspberrypi/boards/pimoroni_badger2040/badger-shared.h +++ b/ports/raspberrypi/boards/pimoroni_badger2040/badger-shared.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef PIMORONI_BADGER2040_SHARED -#define PIMORONI_BADGER2040_SHARED +#pragma once #include "shared-bindings/digitalio/DigitalInOut.h" extern digitalio_digitalinout_obj_t enable_pin_obj; - -#endif // PIMORONI_BADGER2040_SHARED diff --git a/ports/raspberrypi/boards/pimoroni_badger2040w/badger-shared.h b/ports/raspberrypi/boards/pimoroni_badger2040w/badger-shared.h index d6a7388bdbb4..c6be0048937c 100644 --- a/ports/raspberrypi/boards/pimoroni_badger2040w/badger-shared.h +++ b/ports/raspberrypi/boards/pimoroni_badger2040w/badger-shared.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef PIMORONI_BADGER2040W_SHARED -#define PIMORONI_BADGER2040W_SHARED +#pragma once #include "shared-bindings/digitalio/DigitalInOut.h" extern digitalio_digitalinout_obj_t enable_pin_obj; - -#endif // PIMORONI_BADGER2040W_SHARED diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/inky-shared.h b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/inky-shared.h index 24201751fc19..c6be0048937c 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/inky-shared.h +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/inky-shared.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef PIMORONI_INKY_SHARED -#define PIMORONI_INKY_SHARED +#pragma once #include "shared-bindings/digitalio/DigitalInOut.h" extern digitalio_digitalinout_obj_t enable_pin_obj; - -#endif // PIMORONI_INKY_SHARED diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/inky-shared.h b/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/inky-shared.h index 24201751fc19..c6be0048937c 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/inky-shared.h +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/inky-shared.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef PIMORONI_INKY_SHARED -#define PIMORONI_INKY_SHARED +#pragma once #include "shared-bindings/digitalio/DigitalInOut.h" extern digitalio_digitalinout_obj_t enable_pin_obj; - -#endif // PIMORONI_INKY_SHARED diff --git a/ports/raspberrypi/common-hal/analogbufio/BufferedIn.h b/ports/raspberrypi/common-hal/analogbufio/BufferedIn.h index 2b6786c0887b..8ce2148ecfb5 100644 --- a/ports/raspberrypi/common-hal/analogbufio/BufferedIn.h +++ b/ports/raspberrypi/common-hal/analogbufio/BufferedIn.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_ANALOGBUFIO_BUFFEREDIN_H -#define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_ANALOGBUFIO_BUFFEREDIN_H +#pragma once #include "common-hal/microcontroller/Pin.h" #include "src/rp2_common/hardware_dma/include/hardware/dma.h" @@ -21,5 +20,3 @@ typedef struct { uint dma_chan; dma_channel_config cfg; } analogbufio_bufferedin_obj_t; - -#endif // MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_ANALOGBUFIO_BUFFEREDIN_H diff --git a/ports/raspberrypi/common-hal/analogio/AnalogIn.h b/ports/raspberrypi/common-hal/analogio/AnalogIn.h index c8e6f7958c4f..a9edb98b3397 100644 --- a/ports/raspberrypi/common-hal/analogio/AnalogIn.h +++ b/ports/raspberrypi/common-hal/analogio/AnalogIn.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_ANALOGIO_ANALOGIN_H -#define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_ANALOGIO_ANALOGIN_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -17,5 +16,3 @@ typedef struct { } analogio_analogin_obj_t; void analogin_init(void); - -#endif // MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_ANALOGIO_ANALOGIN_H diff --git a/ports/raspberrypi/common-hal/analogio/AnalogOut.h b/ports/raspberrypi/common-hal/analogio/AnalogOut.h index 4903f67047c0..8b5c3b638ee0 100644 --- a/ports/raspberrypi/common-hal/analogio/AnalogOut.h +++ b/ports/raspberrypi/common-hal/analogio/AnalogOut.h @@ -4,13 +4,10 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_ANALOGIO_ANALOGOUT_H -#define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_ANALOGIO_ANALOGOUT_H +#pragma once #include "py/obj.h" typedef struct { mp_obj_base_t base; } analogio_analogout_obj_t; - -#endif // MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_ANALOGIO_ANALOGOUT_H diff --git a/ports/raspberrypi/common-hal/audiobusio/I2SOut.h b/ports/raspberrypi/common-hal/audiobusio/I2SOut.h index 80b021f4120a..2996640dc2d4 100644 --- a/ports/raspberrypi/common-hal/audiobusio/I2SOut.h +++ b/ports/raspberrypi/common-hal/audiobusio/I2SOut.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_AUDIOBUSIO_I2SOUT_H -#define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_AUDIOBUSIO_I2SOUT_H +#pragma once #include "common-hal/microcontroller/Pin.h" #include "common-hal/rp2pio/StateMachine.h" @@ -23,5 +22,3 @@ typedef struct { } audiobusio_i2sout_obj_t; void i2sout_reset(void); - -#endif // MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_AUDIOBUSIO_I2SOUT_H diff --git a/ports/raspberrypi/common-hal/audiobusio/PDMIn.h b/ports/raspberrypi/common-hal/audiobusio/PDMIn.h index 7cc92f92b932..9e97173e8c1b 100644 --- a/ports/raspberrypi/common-hal/audiobusio/PDMIn.h +++ b/ports/raspberrypi/common-hal/audiobusio/PDMIn.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_AUDIOBUSIO_AUDIOOUT_H -#define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_AUDIOBUSIO_AUDIOOUT_H +#pragma once #include "common-hal/microcontroller/Pin.h" #include "bindings/rp2pio/StateMachine.h" @@ -26,5 +25,3 @@ typedef struct { void pdmin_reset(void); void pdmin_background(void); - -#endif // MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_AUDIOBUSIO_AUDIOOUT_H diff --git a/ports/raspberrypi/common-hal/busio/I2C.h b/ports/raspberrypi/common-hal/busio/I2C.h index 11731e5bfb02..9d97025c48e2 100644 --- a/ports/raspberrypi/common-hal/busio/I2C.h +++ b/ports/raspberrypi/common-hal/busio/I2C.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_BUSIO_I2C_H -#define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_BUSIO_I2C_H +#pragma once #include "common-hal/microcontroller/Pin.h" #include "shared-module/bitbangio/I2C.h" @@ -25,5 +24,3 @@ typedef struct { } busio_i2c_obj_t; void reset_i2c(void); - -#endif // MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_BUSIO_I2C_H diff --git a/ports/raspberrypi/common-hal/busio/SPI.h b/ports/raspberrypi/common-hal/busio/SPI.h index 489974c7cb33..27d4cf6f3c72 100644 --- a/ports/raspberrypi/common-hal/busio/SPI.h +++ b/ports/raspberrypi/common-hal/busio/SPI.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_BUSIO_SPI_H -#define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_BUSIO_SPI_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -28,5 +27,3 @@ typedef struct { } busio_spi_obj_t; void reset_spi(void); - -#endif // MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_BUSIO_SPI_H diff --git a/ports/raspberrypi/common-hal/busio/UART.h b/ports/raspberrypi/common-hal/busio/UART.h index 375928d9ff5d..ca75235ddf87 100644 --- a/ports/raspberrypi/common-hal/busio/UART.h +++ b/ports/raspberrypi/common-hal/busio/UART.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_BUSIO_UART_H -#define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_BUSIO_UART_H +#pragma once #include "py/obj.h" #include "py/ringbuf.h" @@ -30,5 +29,3 @@ typedef struct { extern void reset_uart(void); extern void never_reset_uart(uint8_t num); - -#endif // MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_BUSIO_UART_H diff --git a/ports/raspberrypi/common-hal/countio/Counter.h b/ports/raspberrypi/common-hal/countio/Counter.h index 49feee6a77a4..93b83e2c267d 100644 --- a/ports/raspberrypi/common-hal/countio/Counter.h +++ b/ports/raspberrypi/common-hal/countio/Counter.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_RASPBERRRYPI_COMMON_HAL_COUNTIO_COUNTER_H -#define MICROPY_INCLUDED_RASPBERRRYPI_COMMON_HAL_COUNTIO_COUNTER_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -23,5 +22,3 @@ typedef struct { void counter_interrupt_handler(void); void reset_countio(void); - -#endif // MICROPY_INCLUDED_RASPBERRRYPI_COMMON_HAL_COUNTIO_COUNTER_H diff --git a/ports/raspberrypi/common-hal/digitalio/DigitalInOut.h b/ports/raspberrypi/common-hal/digitalio/DigitalInOut.h index e600b77ff147..69520a92bff3 100644 --- a/ports/raspberrypi/common-hal/digitalio/DigitalInOut.h +++ b/ports/raspberrypi/common-hal/digitalio/DigitalInOut.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_DIGITALIO_DIGITALINOUT_H -#define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_DIGITALIO_DIGITALINOUT_H +#pragma once #include "common-hal/microcontroller/Pin.h" #include "py/obj.h" @@ -16,5 +15,3 @@ typedef struct { bool output; bool open_drain; } digitalio_digitalinout_obj_t; - -#endif // MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_DIGITALIO_DIGITALINOUT_H diff --git a/ports/raspberrypi/common-hal/memorymap/AddressRange.h b/ports/raspberrypi/common-hal/memorymap/AddressRange.h index 9807d26623ee..8f5d1fab26ce 100644 --- a/ports/raspberrypi/common-hal/memorymap/AddressRange.h +++ b/ports/raspberrypi/common-hal/memorymap/AddressRange.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_MEMORYMAP_ADDRESSRANGE_H -#define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_MEMORYMAP_ADDRESSRANGE_H +#pragma once #include "py/obj.h" @@ -25,5 +24,3 @@ typedef struct { size_t len; memorymap_rp2_section_t type; } addressmap_rp2_range_t; - -#endif // MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_MEMORYMAP_ADDRESSRANGE_H diff --git a/ports/raspberrypi/common-hal/microcontroller/Pin.h b/ports/raspberrypi/common-hal/microcontroller/Pin.h index c2a856d498a3..ce6e33a24a84 100644 --- a/ports/raspberrypi/common-hal/microcontroller/Pin.h +++ b/ports/raspberrypi/common-hal/microcontroller/Pin.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_MICROCONTROLLER_PIN_H -#define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_MICROCONTROLLER_PIN_H +#pragma once #include #include @@ -32,5 +31,3 @@ bool pin_number_is_free(uint8_t pin_number); extern bool cyw_ever_init; void reset_pin_number_cyw(uint8_t pin_number); #endif - -#endif // MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_MICROCONTROLLER_PIN_H diff --git a/ports/raspberrypi/common-hal/microcontroller/Processor.h b/ports/raspberrypi/common-hal/microcontroller/Processor.h index 34a9cfc9e676..31f89f58fd30 100644 --- a/ports/raspberrypi/common-hal/microcontroller/Processor.h +++ b/ports/raspberrypi/common-hal/microcontroller/Processor.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H -#define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H +#pragma once #include "src/rp2_common/pico_unique_id/include/pico/unique_id.h" @@ -17,5 +16,3 @@ typedef struct { mp_obj_base_t base; // Stores no state currently. } mcu_processor_obj_t; - -#endif // MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H diff --git a/ports/raspberrypi/common-hal/microcontroller/__init__.h b/ports/raspberrypi/common-hal/microcontroller/__init__.h index 253c43e10a89..e9a7602bc040 100644 --- a/ports/raspberrypi/common-hal/microcontroller/__init__.h +++ b/ports/raspberrypi/common-hal/microcontroller/__init__.h @@ -4,12 +4,9 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_MICROCONTROLLER___INIT___H -#define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_MICROCONTROLLER___INIT___H +#pragma once #include "src/rp2040/hardware_regs/include/hardware/platform_defs.h" #include "peripherals/pins.h" const mcu_pin_obj_t *mcu_get_pin_by_number(int); - -#endif // MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_MICROCONTROLLER___INIT___H diff --git a/ports/raspberrypi/common-hal/nvm/ByteArray.h b/ports/raspberrypi/common-hal/nvm/ByteArray.h index f61dae99ab74..8eb7e7c00aeb 100644 --- a/ports/raspberrypi/common-hal/nvm/ByteArray.h +++ b/ports/raspberrypi/common-hal/nvm/ByteArray.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_NVM_BYTEARRAY_H -#define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_NVM_BYTEARRAY_H +#pragma once #include "py/obj.h" @@ -14,5 +13,3 @@ typedef struct { uint8_t *start_address; uint32_t len; } nvm_bytearray_obj_t; - -#endif // MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_NVM_BYTEARRAY_H diff --git a/ports/raspberrypi/common-hal/rgbmatrix/RGBMatrix.h b/ports/raspberrypi/common-hal/rgbmatrix/RGBMatrix.h index 002169291322..56c32e5c24f8 100644 --- a/ports/raspberrypi/common-hal/rgbmatrix/RGBMatrix.h +++ b/ports/raspberrypi/common-hal/rgbmatrix/RGBMatrix.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_RGBMATRIX_RGBMATRIX_H -#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_RGBMATRIX_RGBMATRIX_H +#pragma once #include "shared-module/rgbmatrix/RGBMatrix.h" @@ -13,5 +12,3 @@ void *common_hal_rgbmatrix_timer_allocate(rgbmatrix_rgbmatrix_obj_t *self); void common_hal_rgbmatrix_timer_enable(void *); void common_hal_rgbmatrix_timer_disable(void *); void common_hal_rgbmatrix_timer_free(void *); - -#endif diff --git a/ports/raspberrypi/common-hal/rp2pio/StateMachine.h b/ports/raspberrypi/common-hal/rp2pio/StateMachine.h index feea321a4e92..fcb86f783ac1 100644 --- a/ports/raspberrypi/common-hal/rp2pio/StateMachine.h +++ b/ports/raspberrypi/common-hal/rp2pio/StateMachine.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_RP2PIO_STATEMACHINE_H -#define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_RP2PIO_STATEMACHINE_H +#pragma once #include "py/obj.h" @@ -84,5 +83,3 @@ void rp2pio_statemachine_never_reset(PIO pio, int sm); uint8_t rp2pio_statemachine_find_pio(int program_size, int sm_count); extern const mp_obj_type_t rp2pio_statemachine_type; - -#endif // MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_RP2PIO_STATEMACHINE_H diff --git a/ports/raspberrypi/common-hal/rtc/RTC.h b/ports/raspberrypi/common-hal/rtc/RTC.h index 8aba151a3297..3e9072b0da2c 100644 --- a/ports/raspberrypi/common-hal/rtc/RTC.h +++ b/ports/raspberrypi/common-hal/rtc/RTC.h @@ -4,9 +4,6 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_RTC_RTC_H -#define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_RTC_RTC_H +#pragma once extern void common_hal_rtc_init(void); - -#endif // MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_RTC_RTC_H diff --git a/ports/raspberrypi/common-hal/watchdog/WatchDogTimer.h b/ports/raspberrypi/common-hal/watchdog/WatchDogTimer.h index 5999836e6e82..ea53104bcc51 100644 --- a/ports/raspberrypi/common-hal/watchdog/WatchDogTimer.h +++ b/ports/raspberrypi/common-hal/watchdog/WatchDogTimer.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_WATCHDOG_WATCHDOGTIMER_H -#define MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_WATCHDOG_WATCHDOGTIMER_H +#pragma once #include "py/obj.h" @@ -19,5 +18,3 @@ struct _watchdog_watchdogtimer_obj_t { mp_float_t timeout; watchdog_watchdogmode_t mode; }; - -#endif // MICROPY_INCLUDED_RASPBERRYPI_COMMON_HAL_WATCHDOG_WATCHDOGTIMER_H diff --git a/ports/raspberrypi/common-hal/wifi/Monitor.h b/ports/raspberrypi/common-hal/wifi/Monitor.h index 6e30ffcc2357..d2cbc318f46e 100644 --- a/ports/raspberrypi/common-hal/wifi/Monitor.h +++ b/ports/raspberrypi/common-hal/wifi/Monitor.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI_MONITOR_H -#define MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI_MONITOR_H +#pragma once #include "py/obj.h" @@ -16,5 +15,3 @@ typedef struct { size_t lost; size_t queue_length; } wifi_monitor_obj_t; - -#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_WIFI_MONITOR_H diff --git a/ports/raspberrypi/cyw43_configport.h b/ports/raspberrypi/cyw43_configport.h index d0b05c590e01..62666bee42c2 100644 --- a/ports/raspberrypi/cyw43_configport.h +++ b/ports/raspberrypi/cyw43_configport.h @@ -3,8 +3,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2022 Damien P. George // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_RP2_CYW43_CONFIGPORT_H -#define MICROPY_INCLUDED_RP2_CYW43_CONFIGPORT_H +#pragma once // The board-level config will be included here, so it can set some CYW43 values. #include "py/mpconfig.h" @@ -34,5 +33,3 @@ static inline void cyw43_yield(void) { } restore_interrupts(my_interrupts); } - -#endif // MICROPY_INCLUDED_RP2_CYW43_CONFIGPORT_H diff --git a/ports/raspberrypi/mpconfigport.h b/ports/raspberrypi/mpconfigport.h index 0ee15fa0ab0f..b97286fe45e6 100644 --- a/ports/raspberrypi/mpconfigport.h +++ b/ports/raspberrypi/mpconfigport.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef __INCLUDED_MPCONFIGPORT_H -#define __INCLUDED_MPCONFIGPORT_H +#pragma once #include "src/rp2040/hardware_regs/include/hardware/platform_defs.h" @@ -54,5 +53,3 @@ enum { enum_NUM_DMA_CHANNELS = NUM_DMA_CHANNELS, enum_NUM_PWM_SLICES = NUM_PWM_SLICES, }; - -#endif // __INCLUDED_MPCONFIGPORT_H diff --git a/ports/raspberrypi/mphalport.h b/ports/raspberrypi/mphalport.h index 2461318330c1..a6b9dda4f50a 100644 --- a/ports/raspberrypi/mphalport.h +++ b/ports/raspberrypi/mphalport.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_RASPBERRYPI_MPHALPORT_H -#define MICROPY_INCLUDED_RASPBERRYPI_MPHALPORT_H +#pragma once #include "py/obj.h" @@ -26,5 +25,3 @@ void mp_hal_set_interrupt_char(int c); void mp_hal_disable_all_interrupts(void); void mp_hal_enable_all_interrupts(void); - -#endif // MICROPY_INCLUDED_RASPBERRYPI_MPHALPORT_H diff --git a/ports/raspberrypi/peripherals/pins.h b/ports/raspberrypi/peripherals/pins.h index be7788712e2b..4aa15e8929f5 100644 --- a/ports/raspberrypi/peripherals/pins.h +++ b/ports/raspberrypi/peripherals/pins.h @@ -7,8 +7,7 @@ // DO NOT include this file directly. Use shared-bindings/microcontroller/Pin.h instead to ensure // that all necessary includes are already included. -#ifndef MICROPY_INCLUDED_RASPBERRYPI_PERIPHERALS_PINS_H -#define MICROPY_INCLUDED_RASPBERRYPI_PERIPHERALS_PINS_H +#pragma once #include "py/obj.h" @@ -55,5 +54,3 @@ extern const mcu_pin_obj_t pin_CYW0; extern const mcu_pin_obj_t pin_CYW1; extern const mcu_pin_obj_t pin_CYW2; #endif - -#endif // MICROPY_INCLUDED_RASPBERRYPI_PERIPHERALS_PINS_H diff --git a/ports/raspberrypi/supervisor/internal_flash.h b/ports/raspberrypi/supervisor/internal_flash.h index 1c1a48936042..01acbf02b4de 100644 --- a/ports/raspberrypi/supervisor/internal_flash.h +++ b/ports/raspberrypi/supervisor/internal_flash.h @@ -3,8 +3,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_RASPBERRYPI_INTERNAL_FLASH_H -#define MICROPY_INCLUDED_RASPBERRYPI_INTERNAL_FLASH_H +#pragma once #include @@ -14,5 +13,3 @@ // #define INTERNAL_FLASH_SYSTICK_MASK (0x1ff) // 512ms // #define INTERNAL_FLASH_IDLE_TICK(tick) (((tick) & INTERNAL_FLASH_SYSTICK_MASK) == 2) - -#endif // MICROPY_INCLUDED_RASPBERRYPI_INTERNAL_FLASH_H diff --git a/ports/stm/boards/swan_r5/board.h b/ports/stm/boards/swan_r5/board.h index 92ab61ba361a..ce199359ba49 100644 --- a/ports/stm/boards/swan_r5/board.h +++ b/ports/stm/boards/swan_r5/board.h @@ -4,13 +4,9 @@ // // SPDX-License-Identifier: MIT -#ifndef _BOARDS_SWAN_R5_BOARD_H_ -#define _BOARDS_SWAN_R5_BOARD_H_ +#pragma once #include "common-hal/digitalio/DigitalInOut.h" extern digitalio_digitalinout_obj_t power_pin; extern digitalio_digitalinout_obj_t discharge_pin; - - -#endif // _BOARDS_SWAN_R5_BOARD_H_ diff --git a/ports/stm/common-hal/analogio/AnalogIn.h b/ports/stm/common-hal/analogio/AnalogIn.h index f01399c17a40..1c0f48c5145a 100644 --- a/ports/stm/common-hal/analogio/AnalogIn.h +++ b/ports/stm/common-hal/analogio/AnalogIn.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32F4_COMMON_HAL_ANALOGIO_ANALOGIN_H -#define MICROPY_INCLUDED_STM32F4_COMMON_HAL_ANALOGIO_ANALOGIN_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -24,5 +23,3 @@ static inline uint8_t stm32_adc_units(uint8_t adc_packed) { static inline uint8_t stm32_adc_channel(uint8_t adc_packed) { return adc_packed & 0x1f; } - -#endif // MICROPY_INCLUDED_STM32F4_COMMON_HAL_ANALOGIO_ANALOGIN_H diff --git a/ports/stm/common-hal/analogio/AnalogOut.h b/ports/stm/common-hal/analogio/AnalogOut.h index 3c81e34c541b..6a8fc2720bf3 100644 --- a/ports/stm/common-hal/analogio/AnalogOut.h +++ b/ports/stm/common-hal/analogio/AnalogOut.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32F4_COMMON_HAL_ANALOGIO_ANALOGOUT_H -#define MICROPY_INCLUDED_STM32F4_COMMON_HAL_ANALOGIO_ANALOGOUT_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -29,5 +28,3 @@ typedef struct { } analogio_analogout_obj_t; void analogout_reset(void); - -#endif // MICROPY_INCLUDED_STM32F4_COMMON_HAL_ANALOGIO_ANALOGOUT_H diff --git a/ports/stm/common-hal/audiobusio/MEMS_Audio.h b/ports/stm/common-hal/audiobusio/MEMS_Audio.h index 075b9c87298e..6fcedde42240 100644 --- a/ports/stm/common-hal/audiobusio/MEMS_Audio.h +++ b/ports/stm/common-hal/audiobusio/MEMS_Audio.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef _MEMS_AUDIO_H_ -#define _MEMS_AUDIO_H_ +#pragma once #include #include @@ -133,6 +132,3 @@ mems_audio_err_t mems_audio_stop(MemsAudio *audio); #ifdef __cplusplus } #endif - - -#endif // _MEMS_AUDIO_H_ diff --git a/ports/stm/common-hal/audiobusio/MEMS_Audio_ll.h b/ports/stm/common-hal/audiobusio/MEMS_Audio_ll.h index a11e579407f6..fa8fbe774eb5 100644 --- a/ports/stm/common-hal/audiobusio/MEMS_Audio_ll.h +++ b/ports/stm/common-hal/audiobusio/MEMS_Audio_ll.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT -#ifndef _MEMS_AUDIO_LL_H_ -#define _MEMS_AUDIO_LL_H_ +#pragma once #include "MEMS_Audio.h" @@ -52,6 +51,3 @@ mems_audio_err_t mems_audio_ll_stop(MemsAudio *audio); #ifdef __cplusplus } #endif - - -#endif // _MEMS_AUDIO_LL_H_ diff --git a/ports/stm/common-hal/audiobusio/MEMS_Audio_ll_stm32l4.h b/ports/stm/common-hal/audiobusio/MEMS_Audio_ll_stm32l4.h index 37478675e74f..b7f341254505 100644 --- a/ports/stm/common-hal/audiobusio/MEMS_Audio_ll_stm32l4.h +++ b/ports/stm/common-hal/audiobusio/MEMS_Audio_ll_stm32l4.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT -#ifndef _MEMS_AUDIO_LL_STM32L4_H_ -#define _MEMS_AUDIO_LL_STM32L4_H_ +#pragma once #include #include @@ -186,6 +185,3 @@ typedef enum mems_audio_err_stm32l4_t { #ifdef __cplusplus } #endif - - -#endif // _MEMS_AUDIO_LL_STM32L4_H_ diff --git a/ports/stm/common-hal/audiobusio/OpenPDMFilter.h b/ports/stm/common-hal/audiobusio/OpenPDMFilter.h index 3d8046796231..3ee3ee0a3da7 100644 --- a/ports/stm/common-hal/audiobusio/OpenPDMFilter.h +++ b/ports/stm/common-hal/audiobusio/OpenPDMFilter.h @@ -34,8 +34,7 @@ /* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __OPENPDMFILTER_H -#define __OPENPDMFILTER_H +#pragma once #ifdef __cplusplus extern "C" { @@ -113,6 +112,5 @@ int Open_PDM_Filter_128(uint8_t *data, int16_t *data_out, uint16_t mic_gain, TPD } #endif -#endif // __OPENPDMFILTER_H /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/ports/stm/common-hal/audiobusio/PDMIn.h b/ports/stm/common-hal/audiobusio/PDMIn.h index 0d7eadbfeb65..b4064c64813e 100644 --- a/ports/stm/common-hal/audiobusio/PDMIn.h +++ b/ports/stm/common-hal/audiobusio/PDMIn.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM_COMMON_HAL_AUDIOBUSIO_AUDIOOUT_H -#define MICROPY_INCLUDED_STM_COMMON_HAL_AUDIOBUSIO_AUDIOOUT_H +#pragma once #include #include "py/obj.h" @@ -29,6 +28,3 @@ typedef struct { */ volatile bool recording_complete; } audiobusio_pdmin_obj_t; - - -#endif diff --git a/ports/stm/common-hal/busio/I2C.h b/ports/stm/common-hal/busio/I2C.h index 1eee336bceda..ff78ddb35af3 100644 --- a/ports/stm/common-hal/busio/I2C.h +++ b/ports/stm/common-hal/busio/I2C.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_COMMON_HAL_BUSIO_I2C_H -#define MICROPY_INCLUDED_STM32_COMMON_HAL_BUSIO_I2C_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -25,5 +24,3 @@ typedef struct { } busio_i2c_obj_t; void i2c_reset(void); - -#endif // MICROPY_INCLUDED_STM32_COMMON_HAL_BUSIO_I2C_H diff --git a/ports/stm/common-hal/busio/SPI.h b/ports/stm/common-hal/busio/SPI.h index 2b215e97f294..026623aeacc2 100644 --- a/ports/stm/common-hal/busio/SPI.h +++ b/ports/stm/common-hal/busio/SPI.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_COMMON_HAL_BUSIO_SPI_H -#define MICROPY_INCLUDED_STM32_COMMON_HAL_BUSIO_SPI_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -31,5 +30,3 @@ typedef struct { } busio_spi_obj_t; void spi_reset(void); - -#endif // MICROPY_INCLUDED_STM32_COMMON_HAL_BUSIO_SPI_H diff --git a/ports/stm/common-hal/busio/UART.h b/ports/stm/common-hal/busio/UART.h index d26edadfe603..5df7d457488d 100644 --- a/ports/stm/common-hal/busio/UART.h +++ b/ports/stm/common-hal/busio/UART.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_COMMON_HAL_BUSIO_UART_H -#define MICROPY_INCLUDED_STM32_COMMON_HAL_BUSIO_UART_H +#pragma once #include "common-hal/microcontroller/Pin.h" #include "peripherals/periph.h" @@ -37,5 +36,3 @@ typedef struct { } busio_uart_obj_t; void uart_reset(void); - -#endif // MICROPY_INCLUDED_STM32F4_COMMON_HAL_BUSIO_UART_H diff --git a/ports/stm/common-hal/digitalio/DigitalInOut.h b/ports/stm/common-hal/digitalio/DigitalInOut.h index 3856a5fb8748..f58b23832b19 100644 --- a/ports/stm/common-hal/digitalio/DigitalInOut.h +++ b/ports/stm/common-hal/digitalio/DigitalInOut.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_COMMON_HAL_DIGITALIO_DIGITALINOUT_H -#define MICROPY_INCLUDED_STM32_COMMON_HAL_DIGITALIO_DIGITALINOUT_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -14,5 +13,3 @@ typedef struct { mp_obj_base_t base; const mcu_pin_obj_t *pin; } digitalio_digitalinout_obj_t; - -#endif // MICROPY_INCLUDED_STM32_COMMON_HAL_DIGITALIO_DIGITALINOUT_H diff --git a/ports/stm/common-hal/microcontroller/Pin.h b/ports/stm/common-hal/microcontroller/Pin.h index ba090631b020..a1d347f26da2 100644 --- a/ports/stm/common-hal/microcontroller/Pin.h +++ b/ports/stm/common-hal/microcontroller/Pin.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_COMMON_HAL_MICROCONTROLLER_PIN_H -#define MICROPY_INCLUDED_STM32_COMMON_HAL_MICROCONTROLLER_PIN_H +#pragma once #include "py/mphal.h" @@ -20,5 +19,3 @@ bool pin_number_is_free(uint8_t pin_port, uint8_t pin_number); void never_reset_pin_number(uint8_t pin_port, uint8_t pin_number); GPIO_TypeDef *pin_port(uint8_t pin_port); uint16_t pin_mask(uint8_t pin_number); - -#endif // MICROPY_INCLUDED_STM32_COMMON_HAL_MICROCONTROLLER_PIN_H diff --git a/ports/stm/common-hal/microcontroller/Processor.h b/ports/stm/common-hal/microcontroller/Processor.h index 3f973b5151e4..aab7727550a9 100644 --- a/ports/stm/common-hal/microcontroller/Processor.h +++ b/ports/stm/common-hal/microcontroller/Processor.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H -#define MICROPY_INCLUDED_STM32_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H +#pragma once #define COMMON_HAL_MCU_PROCESSOR_UID_LENGTH 12 @@ -15,5 +14,3 @@ typedef struct { mp_obj_base_t base; // Stores no state currently. } mcu_processor_obj_t; - -#endif // MICROPY_INCLUDED_STM32_COMMON_HAL_MICROCONTROLLER_PROCESSOR_H diff --git a/ports/stm/common-hal/nvm/ByteArray.h b/ports/stm/common-hal/nvm/ByteArray.h index 4566d1de8cb0..7c90951dc31e 100644 --- a/ports/stm/common-hal/nvm/ByteArray.h +++ b/ports/stm/common-hal/nvm/ByteArray.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_COMMON_HAL_NVM_BYTEARRAY_H -#define MICROPY_INCLUDED_STM32_COMMON_HAL_NVM_BYTEARRAY_H +#pragma once #include "py/obj.h" @@ -21,5 +20,3 @@ typedef struct { uint8_t *start_address; uint32_t len; } nvm_bytearray_obj_t; - -#endif // MICROPY_INCLUDED_STM32_COMMON_HAL_NVM_BYTEARRAY_H diff --git a/ports/stm/common-hal/rgbmatrix/RGBMatrix.h b/ports/stm/common-hal/rgbmatrix/RGBMatrix.h index 8c38dece7142..56c32e5c24f8 100644 --- a/ports/stm/common-hal/rgbmatrix/RGBMatrix.h +++ b/ports/stm/common-hal/rgbmatrix/RGBMatrix.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM_COMMON_HAL_RGBMATRIX_RGBMATRIX_H -#define MICROPY_INCLUDED_STM_COMMON_HAL_RGBMATRIX_RGBMATRIX_H +#pragma once #include "shared-module/rgbmatrix/RGBMatrix.h" @@ -13,5 +12,3 @@ void *common_hal_rgbmatrix_timer_allocate(rgbmatrix_rgbmatrix_obj_t *self); void common_hal_rgbmatrix_timer_enable(void *); void common_hal_rgbmatrix_timer_disable(void *); void common_hal_rgbmatrix_timer_free(void *); - -#endif diff --git a/ports/stm/common-hal/rtc/RTC.h b/ports/stm/common-hal/rtc/RTC.h index b864ef46672c..b6e709bed4fc 100644 --- a/ports/stm/common-hal/rtc/RTC.h +++ b/ports/stm/common-hal/rtc/RTC.h @@ -4,10 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM_COMMON_HAL_RTC_RTC_H -#define MICROPY_INCLUDED_STM_COMMON_HAL_RTC_RTC_H +#pragma once extern void rtc_init(void); extern void rtc_reset(void); - -#endif // MICROPY_INCLUDED_STM_COMMON_HAL_RTC_RTC_H diff --git a/ports/stm/common-hal/sdioio/SDCard.h b/ports/stm/common-hal/sdioio/SDCard.h index 3afd77a48368..8f4d94530338 100644 --- a/ports/stm/common-hal/sdioio/SDCard.h +++ b/ports/stm/common-hal/sdioio/SDCard.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_COMMON_HAL_BUSIO_SDIO_H -#define MICROPY_INCLUDED_STM32_COMMON_HAL_BUSIO_SDIO_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -26,5 +25,3 @@ typedef struct { } sdioio_sdcard_obj_t; void sdioio_reset(void); - -#endif // MICROPY_INCLUDED_STM32_COMMON_HAL_BUSIO_SDIO_H diff --git a/ports/stm/mpconfigport.h b/ports/stm/mpconfigport.h index fda32328405b..ed36b49ffb92 100644 --- a/ports/stm/mpconfigport.h +++ b/ports/stm/mpconfigport.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef STM32_MPCONFIGPORT_H__ -#define STM32_MPCONFIGPORT_H__ +#pragma once #include @@ -39,5 +38,3 @@ extern uint8_t _ld_default_stack_size; #define MAX_UART 10 #define MAX_I2C 4 #define MAX_SPI 6 - -#endif // __INCLUDED_MPCONFIGPORT_H diff --git a/ports/stm/mphalport.h b/ports/stm/mphalport.h index 619155dacc44..f9fb0bf27238 100644 --- a/ports/stm/mphalport.h +++ b/ports/stm/mphalport.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_MPHALPORT_H -#define MICROPY_INCLUDED_STM32_MPHALPORT_H +#pragma once #include "py/obj.h" @@ -27,5 +26,3 @@ void mp_hal_set_interrupt_char(int c); void mp_hal_disable_all_interrupts(void); void mp_hal_enable_all_interrupts(void); - -#endif // MICROPY_INCLUDED_STM32_MPHALPORT_H diff --git a/ports/stm/peripherals/exti.h b/ports/stm/peripherals/exti.h index 47583bb35520..94b62f1768e9 100644 --- a/ports/stm/peripherals/exti.h +++ b/ports/stm/peripherals/exti.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef __MICROPY_INCLUDED_STM32_PERIPHERALS_EXTI_H__ -#define __MICROPY_INCLUDED_STM32_PERIPHERALS_EXTI_H__ +#pragma once #include STM32_HAL_H @@ -21,5 +20,3 @@ void stm_peripherals_exti_disable(uint8_t num); void stm_peripherals_exti_set_callback(void (*callback)(uint8_t num), uint8_t number); void stm_peripherals_exti_free(uint8_t num); IRQn_Type stm_peripherals_exti_get_irq(uint8_t num); - -#endif // __MICROPY_INCLUDED_STM32_PERIPHERALS_EXTI_H__ diff --git a/ports/stm/peripherals/periph.h b/ports/stm/peripherals/periph.h index fbe6ec97c645..438db7938672 100644 --- a/ports/stm/peripherals/periph.h +++ b/ports/stm/peripherals/periph.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef __MICROPY_INCLUDED_STM32_PERIPHERALS_PERIPH_H__ -#define __MICROPY_INCLUDED_STM32_PERIPHERALS_PERIPH_H__ +#pragma once #include #include @@ -131,5 +130,3 @@ typedef struct { #define HAS_BASIC_TIM 0 #include "stm32h7/stm32h743xx/periph.h" #endif - -#endif // __MICROPY_INCLUDED_STM32_PERIPHERALS_PERIPH_H__ diff --git a/ports/stm/peripherals/pins.h b/ports/stm/peripherals/pins.h index 5119a6fc51f3..999f8172d971 100644 --- a/ports/stm/peripherals/pins.h +++ b/ports/stm/peripherals/pins.h @@ -7,8 +7,7 @@ // DO NOT include this file directly. Use shared-bindings/microcontroller/Pin.h instead to ensure // that all necessary includes are already included. -#ifndef __MICROPY_INCLUDED_STM32_PERIPHERALS_PINS_H__ -#define __MICROPY_INCLUDED_STM32_PERIPHERALS_PINS_H__ +#pragma once #include #include @@ -93,5 +92,3 @@ extern const mp_obj_type_t mcu_pin_type; #ifdef STM32H743xx #include "stm32h7/stm32h743xx/pins.h" #endif - -#endif // __MICROPY_INCLUDED_STM32_PERIPHERALS_PINS_H__ diff --git a/ports/stm/peripherals/rtc.h b/ports/stm/peripherals/rtc.h index 05410cabfbcf..9d47ece8982c 100644 --- a/ports/stm/peripherals/rtc.h +++ b/ports/stm/peripherals/rtc.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef __MICROPY_INCLUDED_STM32_PERIPHERALS_RTC_H__ -#define __MICROPY_INCLUDED_STM32_PERIPHERALS_RTC_H__ +#pragma once #include #include @@ -34,5 +33,3 @@ typedef struct _timeutils_struct_time_t timeutils_struct_time_t; void stm32_peripherals_rtc_get_time(timeutils_struct_time_t *tm); void stm32_peripherals_rtc_set_time(timeutils_struct_time_t *tm); #endif - -#endif // __MICROPY_INCLUDED_STM32_PERIPHERALS_RTC_H__ diff --git a/ports/stm/peripherals/stm32f4/stm32f401xe/periph.h b/ports/stm/peripherals/stm32f4/stm32f401xe/periph.h index 7ef46999c8c9..6aa77eeb8abe 100644 --- a/ports/stm/peripherals/stm32f4/stm32f401xe/periph.h +++ b/ports/stm/peripherals/stm32f4/stm32f401xe/periph.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F401XE_PERIPH_H -#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F401XE_PERIPH_H +#pragma once // I2C extern I2C_TypeDef *mcu_i2c_banks[3]; @@ -33,5 +32,3 @@ extern const mcu_periph_obj_t mcu_uart_rx_list[6]; #define TIM_PIN_ARRAY_LEN 44 extern TIM_TypeDef *mcu_tim_banks[TIM_BANK_ARRAY_LEN]; extern const mcu_tim_pin_obj_t mcu_tim_pin_list[TIM_PIN_ARRAY_LEN]; - -#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F401XE_PERIPH_H diff --git a/ports/stm/peripherals/stm32f4/stm32f401xe/pins.h b/ports/stm/peripherals/stm32f4/stm32f401xe/pins.h index d2f24124b9d6..fa26655d64f6 100644 --- a/ports/stm/peripherals/stm32f4/stm32f401xe/pins.h +++ b/ports/stm/peripherals/stm32f4/stm32f401xe/pins.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F401XE_PINS_H -#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F401XE_PINS_H +#pragma once // Pins in datasheet order: DocID026289 Rev 7 page 38. LQFP100 only // pg 38 @@ -96,6 +95,3 @@ extern const mcu_pin_obj_t pin_PB08; extern const mcu_pin_obj_t pin_PB09; extern const mcu_pin_obj_t pin_PE00; extern const mcu_pin_obj_t pin_PE01; - - -#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F401XE_PINS_H diff --git a/ports/stm/peripherals/stm32f4/stm32f405xx/periph.h b/ports/stm/peripherals/stm32f4/stm32f405xx/periph.h index c2cfb23b9730..0ddfdd455349 100644 --- a/ports/stm/peripherals/stm32f4/stm32f405xx/periph.h +++ b/ports/stm/peripherals/stm32f4/stm32f405xx/periph.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F405XX_PERIPH_H -#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F405XX_PERIPH_H +#pragma once // I2C #define I2C_BANK_ARRAY_LEN 3 @@ -56,6 +55,3 @@ extern CAN_TypeDef *mcu_can_banks[2]; extern const mcu_periph_obj_t mcu_can_tx_list[6]; extern const mcu_periph_obj_t mcu_can_rx_list[6]; - - -#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F405XX_PERIPH_H diff --git a/ports/stm/peripherals/stm32f4/stm32f405xx/pins.h b/ports/stm/peripherals/stm32f4/stm32f405xx/pins.h index 5ec131b5ea2e..76316b77a4aa 100644 --- a/ports/stm/peripherals/stm32f4/stm32f405xx/pins.h +++ b/ports/stm/peripherals/stm32f4/stm32f405xx/pins.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F405XX_PINS_H -#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F405XX_PINS_H +#pragma once extern const mcu_pin_obj_t pin_PA00; extern const mcu_pin_obj_t pin_PA01; @@ -147,5 +146,3 @@ extern const mcu_pin_obj_t pin_PI08; extern const mcu_pin_obj_t pin_PI09; extern const mcu_pin_obj_t pin_PI10; extern const mcu_pin_obj_t pin_PI11; - -#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F405XX_PINS_H diff --git a/ports/stm/peripherals/stm32f4/stm32f407xx/periph.h b/ports/stm/peripherals/stm32f4/stm32f407xx/periph.h index 7259cdeb695a..0ddfdd455349 100644 --- a/ports/stm/peripherals/stm32f4/stm32f407xx/periph.h +++ b/ports/stm/peripherals/stm32f4/stm32f407xx/periph.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F407XX_PERIPH_H -#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F407XX_PERIPH_H +#pragma once // I2C #define I2C_BANK_ARRAY_LEN 3 @@ -56,6 +55,3 @@ extern CAN_TypeDef *mcu_can_banks[2]; extern const mcu_periph_obj_t mcu_can_tx_list[6]; extern const mcu_periph_obj_t mcu_can_rx_list[6]; - - -#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F407XX_PERIPH_H diff --git a/ports/stm/peripherals/stm32f4/stm32f407xx/pins.h b/ports/stm/peripherals/stm32f4/stm32f407xx/pins.h index 56915accd388..76316b77a4aa 100644 --- a/ports/stm/peripherals/stm32f4/stm32f407xx/pins.h +++ b/ports/stm/peripherals/stm32f4/stm32f407xx/pins.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F407XX_PINS_H -#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F407XX_PINS_H +#pragma once extern const mcu_pin_obj_t pin_PA00; extern const mcu_pin_obj_t pin_PA01; @@ -147,5 +146,3 @@ extern const mcu_pin_obj_t pin_PI08; extern const mcu_pin_obj_t pin_PI09; extern const mcu_pin_obj_t pin_PI10; extern const mcu_pin_obj_t pin_PI11; - -#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F407XX_PINS_H diff --git a/ports/stm/peripherals/stm32f4/stm32f411xe/periph.h b/ports/stm/peripherals/stm32f4/stm32f411xe/periph.h index 81e833fc07a2..7bc08c1d16bb 100644 --- a/ports/stm/peripherals/stm32f4/stm32f411xe/periph.h +++ b/ports/stm/peripherals/stm32f4/stm32f411xe/periph.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F411XE_PERIPH_H -#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F411XE_PERIPH_H +#pragma once // I2C extern I2C_TypeDef *mcu_i2c_banks[3]; @@ -33,5 +32,3 @@ extern const mcu_periph_obj_t mcu_uart_rx_list[7]; #define TIM_PIN_ARRAY_LEN 44 extern TIM_TypeDef *mcu_tim_banks[TIM_BANK_ARRAY_LEN]; extern const mcu_tim_pin_obj_t mcu_tim_pin_list[TIM_PIN_ARRAY_LEN]; - -#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F411XE_PERIPH_H diff --git a/ports/stm/peripherals/stm32f4/stm32f411xe/pins.h b/ports/stm/peripherals/stm32f4/stm32f411xe/pins.h index 74cb6c93ca0c..fa26655d64f6 100644 --- a/ports/stm/peripherals/stm32f4/stm32f411xe/pins.h +++ b/ports/stm/peripherals/stm32f4/stm32f411xe/pins.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F411XE_PINS_H -#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F411XE_PINS_H +#pragma once // Pins in datasheet order: DocID026289 Rev 7 page 38. LQFP100 only // pg 38 @@ -96,6 +95,3 @@ extern const mcu_pin_obj_t pin_PB08; extern const mcu_pin_obj_t pin_PB09; extern const mcu_pin_obj_t pin_PE00; extern const mcu_pin_obj_t pin_PE01; - - -#endif // MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F411VE_PINS_H diff --git a/ports/stm/peripherals/stm32f4/stm32f412cx/periph.h b/ports/stm/peripherals/stm32f4/stm32f412cx/periph.h index 8c860ea80950..3d1d361181b3 100644 --- a/ports/stm/peripherals/stm32f4/stm32f412cx/periph.h +++ b/ports/stm/peripherals/stm32f4/stm32f412cx/periph.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F412CX_PERIPH_H -#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F412CX_PERIPH_H +#pragma once // I2C #define I2C_BANK_ARRAY_LEN 3 @@ -41,5 +40,3 @@ extern const mcu_periph_obj_t mcu_uart_rx_list[UART_RX_ARRAY_LEN]; #define TIM_PIN_ARRAY_LEN 34 extern TIM_TypeDef *mcu_tim_banks[TIM_BANK_ARRAY_LEN]; extern const mcu_tim_pin_obj_t mcu_tim_pin_list[TIM_PIN_ARRAY_LEN]; - -#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F412CX_PERIPH_H diff --git a/ports/stm/peripherals/stm32f4/stm32f412cx/pins.h b/ports/stm/peripherals/stm32f4/stm32f412cx/pins.h index ef65b0e1094c..002f5e6d075b 100644 --- a/ports/stm/peripherals/stm32f4/stm32f412cx/pins.h +++ b/ports/stm/peripherals/stm32f4/stm32f412cx/pins.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F412CX_PINS_H -#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F412CX_PINS_H +#pragma once // pg 50 extern const mcu_pin_obj_t pin_PC13; @@ -58,5 +57,3 @@ extern const mcu_pin_obj_t pin_PB06; extern const mcu_pin_obj_t pin_PB07; extern const mcu_pin_obj_t pin_PB08; extern const mcu_pin_obj_t pin_PB09; - -#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F412CX_PINS_H diff --git a/ports/stm/peripherals/stm32f4/stm32f412zx/periph.h b/ports/stm/peripherals/stm32f4/stm32f412zx/periph.h index 66209db5fa97..6fc508d5ab3e 100644 --- a/ports/stm/peripherals/stm32f4/stm32f412zx/periph.h +++ b/ports/stm/peripherals/stm32f4/stm32f412zx/periph.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F412ZX_PERIPH_H -#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F412ZX_PERIPH_H +#pragma once // I2C extern I2C_TypeDef *mcu_i2c_banks[3]; @@ -34,5 +33,3 @@ extern const mcu_periph_obj_t mcu_uart_rx_list[12]; #define TIM_PIN_ARRAY_LEN 60 extern TIM_TypeDef *mcu_tim_banks[TIM_BANK_ARRAY_LEN]; extern const mcu_tim_pin_obj_t mcu_tim_pin_list[TIM_PIN_ARRAY_LEN]; - -#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F412ZX_PERIPH_H diff --git a/ports/stm/peripherals/stm32f4/stm32f412zx/pins.h b/ports/stm/peripherals/stm32f4/stm32f412zx/pins.h index 40224c9000a2..700ab8310a8c 100644 --- a/ports/stm/peripherals/stm32f4/stm32f412zx/pins.h +++ b/ports/stm/peripherals/stm32f4/stm32f412zx/pins.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F412ZX_PINS_H -#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F412ZX_PINS_H +#pragma once // pg 50 extern const mcu_pin_obj_t pin_PE02; @@ -133,5 +132,3 @@ extern const mcu_pin_obj_t pin_PB08; extern const mcu_pin_obj_t pin_PB09; extern const mcu_pin_obj_t pin_PE00; extern const mcu_pin_obj_t pin_PE01; - -#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F412ZX_PINS_H diff --git a/ports/stm/peripherals/stm32f4/stm32f446xx/periph.h b/ports/stm/peripherals/stm32f4/stm32f446xx/periph.h index 81f7a7cad9d6..0e1d65d7f234 100644 --- a/ports/stm/peripherals/stm32f4/stm32f446xx/periph.h +++ b/ports/stm/peripherals/stm32f4/stm32f446xx/periph.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F446RE_PERIPH_H -#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F446RE_PERIPH_H +#pragma once // I2C extern I2C_TypeDef *mcu_i2c_banks[3]; @@ -33,5 +32,3 @@ extern const mcu_periph_obj_t mcu_uart_rx_list[3]; #define TIM_PIN_ARRAY_LEN 34 extern TIM_TypeDef *mcu_tim_banks[TIM_BANK_ARRAY_LEN]; extern const mcu_tim_pin_obj_t mcu_tim_pin_list[TIM_PIN_ARRAY_LEN]; - -#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F446RE_PERIPH_H diff --git a/ports/stm/peripherals/stm32f4/stm32f446xx/pins.h b/ports/stm/peripherals/stm32f4/stm32f446xx/pins.h index 8930f5f832c9..1bd9543d4691 100644 --- a/ports/stm/peripherals/stm32f4/stm32f446xx/pins.h +++ b/ports/stm/peripherals/stm32f4/stm32f446xx/pins.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F446RE_PINS_H -#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F446RE_PINS_H +#pragma once // Pins in datasheet order: DocID026289 Rev 7 page 38. LQFP64 only @@ -66,5 +65,3 @@ extern const mcu_pin_obj_t pin_PB09; extern const mcu_pin_obj_t pin_PD02; extern const mcu_pin_obj_t pin_PH00; extern const mcu_pin_obj_t pin_PH01; - -#endif // MICROPY_INCLUDED_STM32F4_PERIPHERALS_STM32F446RE_PINS_H diff --git a/ports/stm/peripherals/stm32f7/stm32f746xx/periph.h b/ports/stm/peripherals/stm32f7/stm32f746xx/periph.h index 4578ee7b555b..6e5b790543ba 100644 --- a/ports/stm/peripherals/stm32f7/stm32f746xx/periph.h +++ b/ports/stm/peripherals/stm32f7/stm32f746xx/periph.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F746XX_PERIPH_H -#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F746XX_PERIPH_H +#pragma once // I2C extern I2C_TypeDef *mcu_i2c_banks[4]; @@ -34,5 +33,3 @@ extern const mcu_periph_obj_t mcu_uart_rx_list[15]; extern TIM_TypeDef *mcu_tim_banks[TIM_BANK_ARRAY_LEN]; extern const mcu_tim_pin_obj_t mcu_tim_pin_list[TIM_PIN_ARRAY_LEN]; - -#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F746XX_PERIPH_H diff --git a/ports/stm/peripherals/stm32f7/stm32f746xx/pins.h b/ports/stm/peripherals/stm32f7/stm32f746xx/pins.h index 8f02e607950b..dd39314c3cdf 100644 --- a/ports/stm/peripherals/stm32f7/stm32f746xx/pins.h +++ b/ports/stm/peripherals/stm32f7/stm32f746xx/pins.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F746XX_PINS_H -#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F746XX_PINS_H +#pragma once extern const mcu_pin_obj_t pin_PA00; extern const mcu_pin_obj_t pin_PA01; @@ -183,5 +182,3 @@ extern const mcu_pin_obj_t pin_PK12; extern const mcu_pin_obj_t pin_PK13; extern const mcu_pin_obj_t pin_PK14; extern const mcu_pin_obj_t pin_PK15; - -#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F746XX_PINS_H diff --git a/ports/stm/peripherals/stm32f7/stm32f767xx/periph.h b/ports/stm/peripherals/stm32f7/stm32f767xx/periph.h index 96f3c458e2f2..5ecf88f444ee 100644 --- a/ports/stm/peripherals/stm32f7/stm32f767xx/periph.h +++ b/ports/stm/peripherals/stm32f7/stm32f767xx/periph.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F767XX_PERIPH_H -#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F767XX_PERIPH_H +#pragma once // I2C extern I2C_TypeDef *mcu_i2c_banks[4]; @@ -33,5 +32,3 @@ extern const mcu_periph_obj_t mcu_uart_rx_list[25]; extern TIM_TypeDef *mcu_tim_banks[TIM_BANK_ARRAY_LEN]; extern const mcu_tim_pin_obj_t mcu_tim_pin_list[TIM_PIN_ARRAY_LEN]; - -#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F767XX_PERIPH_H diff --git a/ports/stm/peripherals/stm32f7/stm32f767xx/pins.h b/ports/stm/peripherals/stm32f7/stm32f767xx/pins.h index 68f9e265011d..7c170351a51e 100644 --- a/ports/stm/peripherals/stm32f7/stm32f767xx/pins.h +++ b/ports/stm/peripherals/stm32f7/stm32f767xx/pins.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F767XX_PINS_H -#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F767XX_PINS_H +#pragma once extern const mcu_pin_obj_t pin_PA00; extern const mcu_pin_obj_t pin_PA01; @@ -175,5 +174,3 @@ extern const mcu_pin_obj_t pin_PK04; extern const mcu_pin_obj_t pin_PK05; extern const mcu_pin_obj_t pin_PK06; extern const mcu_pin_obj_t pin_PK07; - -#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32F767XX_PINS_H diff --git a/ports/stm/peripherals/stm32h7/stm32h743xx/periph.h b/ports/stm/peripherals/stm32h7/stm32h743xx/periph.h index a913a46b1169..fa4ec7f6e562 100644 --- a/ports/stm/peripherals/stm32h7/stm32h743xx/periph.h +++ b/ports/stm/peripherals/stm32h7/stm32h743xx/periph.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32H743XX_PERIPH_H -#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32H743XX_PERIPH_H +#pragma once // I2C extern I2C_TypeDef *mcu_i2c_banks[4]; @@ -31,5 +30,3 @@ extern const mcu_periph_obj_t mcu_uart_rx_list[26]; #define TIM_BANK_ARRAY_LEN 14 #define TIM_PIN_ARRAY_LEN 58 extern TIM_TypeDef *mcu_tim_banks[TIM_BANK_ARRAY_LEN]; - -#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32H743XX_PERIPH_H diff --git a/ports/stm/peripherals/stm32h7/stm32h743xx/pins.h b/ports/stm/peripherals/stm32h7/stm32h743xx/pins.h index ea9d506c0bd9..7c170351a51e 100644 --- a/ports/stm/peripherals/stm32h7/stm32h743xx/pins.h +++ b/ports/stm/peripherals/stm32h7/stm32h743xx/pins.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32H743XX_PINS_H -#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32H743XX_PINS_H +#pragma once extern const mcu_pin_obj_t pin_PA00; extern const mcu_pin_obj_t pin_PA01; @@ -175,5 +174,3 @@ extern const mcu_pin_obj_t pin_PK04; extern const mcu_pin_obj_t pin_PK05; extern const mcu_pin_obj_t pin_PK06; extern const mcu_pin_obj_t pin_PK07; - -#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32H743XX_PINS_H diff --git a/ports/stm/peripherals/stm32l4/stm32l4r5xx/periph.h b/ports/stm/peripherals/stm32l4/stm32l4r5xx/periph.h index 4c00d9009d44..3e45a17c811c 100644 --- a/ports/stm/peripherals/stm32l4/stm32l4r5xx/periph.h +++ b/ports/stm/peripherals/stm32l4/stm32l4r5xx/periph.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32L4R5XX_PERIPH_H -#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32L4R5XX_PERIPH_H +#pragma once // I2C #define I2C_BANK_ARRAY_LEN 4 @@ -55,6 +54,3 @@ extern const mcu_tim_pin_obj_t mcu_tim_pin_list[TIM_PIN_ARRAY_LEN]; extern CAN_TypeDef *mcu_can_banks[1]; extern const mcu_periph_obj_t mcu_can_tx_list[4]; extern const mcu_periph_obj_t mcu_can_rx_list[4]; - - -#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32L4R5XX_PERIPH_H diff --git a/ports/stm/peripherals/stm32l4/stm32l4r5xx/pins.h b/ports/stm/peripherals/stm32l4/stm32l4r5xx/pins.h index 89c510731914..2e2f106fb84e 100644 --- a/ports/stm/peripherals/stm32l4/stm32l4r5xx/pins.h +++ b/ports/stm/peripherals/stm32l4/stm32l4r5xx/pins.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_PERIPHERALS_STM32L4R5XX_PINS_H -#define MICROPY_INCLUDED_STM32_PERIPHERALS_STM32L4R5XX_PINS_H +#pragma once extern const mcu_pin_obj_t pin_PA00; extern const mcu_pin_obj_t pin_PA01; @@ -147,5 +146,3 @@ extern const mcu_pin_obj_t pin_PI08; extern const mcu_pin_obj_t pin_PI09; extern const mcu_pin_obj_t pin_PI10; extern const mcu_pin_obj_t pin_PI11; - -#endif // MICROPY_INCLUDED_STM32_PERIPHERALS_STM32L4R5XX_PINS_H diff --git a/ports/stm/supervisor/internal_flash.h b/ports/stm/supervisor/internal_flash.h index e75c9339825e..68704805f339 100644 --- a/ports/stm/supervisor/internal_flash.h +++ b/ports/stm/supervisor/internal_flash.h @@ -5,8 +5,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Mark Olsson // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_STM32_INTERNAL_FLASH_H -#define MICROPY_INCLUDED_STM32_INTERNAL_FLASH_H +#pragma once #include #include @@ -94,5 +93,3 @@ #define INTERNAL_FLASH_SYSTICK_MASK (0x1ff) // 512ms #define INTERNAL_FLASH_IDLE_TICK(tick) (((tick) & INTERNAL_FLASH_SYSTICK_MASK) == 2) - -#endif // MICROPY_INCLUDED_STM32_INTERNAL_FLASH_H diff --git a/py/circuitpy_mpconfig.h b/py/circuitpy_mpconfig.h index 9f2e3eaa7ee3..648853d2f45f 100644 --- a/py/circuitpy_mpconfig.h +++ b/py/circuitpy_mpconfig.h @@ -8,8 +8,7 @@ // sure that the same feature set and settings are used, such as in atmel-samd // and nordic. -#ifndef __INCLUDED_MPCONFIG_CIRCUITPY_H -#define __INCLUDED_MPCONFIG_CIRCUITPY_H +#pragma once #include #include @@ -593,5 +592,3 @@ void background_callback_run_all(void); // Enable compiler functionality. #define MICROPY_ENABLE_COMPILER (1) #define MICROPY_PY_BUILTINS_COMPILE (1) - -#endif // __INCLUDED_MPCONFIG_CIRCUITPY_H diff --git a/py/proto.h b/py/proto.h index 0c20d8645ac6..bd40576708a0 100644 --- a/py/proto.h +++ b/py/proto.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_PY_PROTO_H -#define MICROPY_INCLUDED_PY_PROTO_H +#pragma once // CIRCUITPY-CHANGE // @@ -26,5 +25,3 @@ static inline void *mp_proto_get(uint16_t name, mp_const_obj_type_t obj) { const void *mp_proto_get(uint16_t name, mp_const_obj_t obj); const void *mp_proto_get_or_throw(uint16_t name, mp_const_obj_t obj); #endif - -#endif diff --git a/py/ringbuf.h b/py/ringbuf.h index 25345da99d78..cef6a1b1fcd3 100644 --- a/py/ringbuf.h +++ b/py/ringbuf.h @@ -5,8 +5,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Dan Halbert for Adafruit Industries LLC // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_PY_RINGBUF_H -#define MICROPY_INCLUDED_PY_RINGBUF_H +#pragma once #include "py/gc.h" @@ -48,5 +47,3 @@ int ringbuf_put16(ringbuf_t *r, uint16_t v); int ringbuf_get_bytes(ringbuf_t *r, uint8_t *data, size_t data_len); int ringbuf_put_bytes(ringbuf_t *r, const uint8_t *data, size_t data_len); - -#endif // MICROPY_INCLUDED_PY_RINGBUF_H diff --git a/shared-bindings/_bleio/Adapter.h b/shared-bindings/_bleio/Adapter.h index 6a2647f5d0b1..c6b7aeefc960 100644 --- a/shared-bindings/_bleio/Adapter.h +++ b/shared-bindings/_bleio/Adapter.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_ADAPTER_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_ADAPTER_H +#pragma once #include @@ -58,5 +57,3 @@ extern mp_obj_t common_hal_bleio_adapter_connect(bleio_adapter_obj_t *self, blei extern void common_hal_bleio_adapter_erase_bonding(bleio_adapter_obj_t *self); extern bool common_hal_bleio_adapter_is_bonded_to_central(bleio_adapter_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_ADAPTER_H diff --git a/shared-bindings/_bleio/Address.h b/shared-bindings/_bleio/Address.h index d3df03ef6148..c869ccf55cb9 100644 --- a/shared-bindings/_bleio/Address.h +++ b/shared-bindings/_bleio/Address.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_ADDRESS_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_ADDRESS_H +#pragma once #include "py/objtype.h" #include "shared-module/_bleio/Address.h" @@ -24,5 +23,3 @@ extern const mp_obj_type_t bleio_address_type; extern void common_hal_bleio_address_construct(bleio_address_obj_t *self, uint8_t *bytes, uint8_t address_type); extern mp_obj_t common_hal_bleio_address_get_address_bytes(bleio_address_obj_t *self); extern uint8_t common_hal_bleio_address_get_type(bleio_address_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_ADDRESS_H diff --git a/shared-bindings/_bleio/Attribute.h b/shared-bindings/_bleio/Attribute.h index bbaab213f79b..51278dc0157f 100644 --- a/shared-bindings/_bleio/Attribute.h +++ b/shared-bindings/_bleio/Attribute.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_ATTRIBUTE_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_ATTRIBUTE_H +#pragma once #include "py/obj.h" @@ -15,5 +14,3 @@ extern const mp_obj_type_t bleio_attribute_type; extern void common_hal_bleio_attribute_security_mode_check_valid(bleio_attribute_security_mode_t security_mode); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_ATTRIBUTE_H diff --git a/shared-bindings/_bleio/Characteristic.h b/shared-bindings/_bleio/Characteristic.h index 314456222279..2d343b8b07f9 100644 --- a/shared-bindings/_bleio/Characteristic.h +++ b/shared-bindings/_bleio/Characteristic.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_CHARACTERISTIC_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_CHARACTERISTIC_H +#pragma once #include "py/objtuple.h" #include "shared-bindings/_bleio/Attribute.h" @@ -27,5 +26,3 @@ extern void common_hal_bleio_characteristic_add_descriptor(bleio_characteristic_ extern void common_hal_bleio_characteristic_construct(bleio_characteristic_obj_t *self, bleio_service_obj_t *service, uint16_t handle, bleio_uuid_obj_t *uuid, bleio_characteristic_properties_t props, bleio_attribute_security_mode_t read_perm, bleio_attribute_security_mode_t write_perm, mp_int_t max_length, bool fixed_length, mp_buffer_info_t *initial_value_bufinfo, const char *user_description); extern void common_hal_bleio_characteristic_set_cccd(bleio_characteristic_obj_t *self, bool notify, bool indicate); extern void common_hal_bleio_characteristic_set_value(bleio_characteristic_obj_t *self, mp_buffer_info_t *bufinfo); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_CHARACTERISTIC_H diff --git a/shared-bindings/_bleio/CharacteristicBuffer.h b/shared-bindings/_bleio/CharacteristicBuffer.h index da0bf7bb70fd..156ebc98bc76 100644 --- a/shared-bindings/_bleio/CharacteristicBuffer.h +++ b/shared-bindings/_bleio/CharacteristicBuffer.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_CHARACTERISTICBUFFER_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_CHARACTERISTICBUFFER_H +#pragma once #include @@ -29,5 +28,3 @@ void common_hal_bleio_characteristic_buffer_clear_rx_buffer(bleio_characteristic bool common_hal_bleio_characteristic_buffer_deinited(bleio_characteristic_buffer_obj_t *self); void common_hal_bleio_characteristic_buffer_deinit(bleio_characteristic_buffer_obj_t *self); bool common_hal_bleio_characteristic_buffer_connected(bleio_characteristic_buffer_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_CHARACTERISTICBUFFER_H diff --git a/shared-bindings/_bleio/Connection.h b/shared-bindings/_bleio/Connection.h index c3cb2259d311..4be4992fb2f9 100644 --- a/shared-bindings/_bleio/Connection.h +++ b/shared-bindings/_bleio/Connection.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_CONNECTION_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_CONNECTION_H +#pragma once #include "py/objtuple.h" #include "common-hal/_bleio/Connection.h" @@ -25,5 +24,3 @@ mp_float_t common_hal_bleio_connection_get_connection_interval(bleio_connection_ void common_hal_bleio_connection_set_connection_interval(bleio_connection_internal_t *self, mp_float_t new_interval); void bleio_connection_ensure_connected(bleio_connection_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_CONNECTION_H diff --git a/shared-bindings/_bleio/Descriptor.h b/shared-bindings/_bleio/Descriptor.h index cf5c4bebd781..e4629d84ef41 100644 --- a/shared-bindings/_bleio/Descriptor.h +++ b/shared-bindings/_bleio/Descriptor.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_DESCRIPTOR_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_DESCRIPTOR_H +#pragma once #include "shared-module/_bleio/Attribute.h" #include "common-hal/_bleio/Characteristic.h" @@ -20,5 +19,3 @@ extern bleio_uuid_obj_t *common_hal_bleio_descriptor_get_uuid(bleio_descriptor_o extern bleio_characteristic_obj_t *common_hal_bleio_descriptor_get_characteristic(bleio_descriptor_obj_t *self); extern size_t common_hal_bleio_descriptor_get_value(bleio_descriptor_obj_t *self, uint8_t *buf, size_t len); extern void common_hal_bleio_descriptor_set_value(bleio_descriptor_obj_t *self, mp_buffer_info_t *bufinfo); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_DESCRIPTOR_H diff --git a/shared-bindings/_bleio/PacketBuffer.h b/shared-bindings/_bleio/PacketBuffer.h index bffc9b53e76d..25d7127a67ec 100644 --- a/shared-bindings/_bleio/PacketBuffer.h +++ b/shared-bindings/_bleio/PacketBuffer.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_PACKETBUFFER_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_PACKETBUFFER_H +#pragma once #include "common-hal/_bleio/PacketBuffer.h" @@ -27,5 +26,3 @@ mp_int_t common_hal_bleio_packet_buffer_get_outgoing_packet_length(bleio_packet_ void common_hal_bleio_packet_buffer_flush(bleio_packet_buffer_obj_t *self); bool common_hal_bleio_packet_buffer_deinited(bleio_packet_buffer_obj_t *self); void common_hal_bleio_packet_buffer_deinit(bleio_packet_buffer_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_PACKETBUFFER_H diff --git a/shared-bindings/_bleio/ScanEntry.h b/shared-bindings/_bleio/ScanEntry.h index fce4020c81fb..bc5dc20be455 100644 --- a/shared-bindings/_bleio/ScanEntry.h +++ b/shared-bindings/_bleio/ScanEntry.h @@ -6,8 +6,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_SCANENTRY_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_SCANENTRY_H +#pragma once #include "py/obj.h" #include "shared-module/_bleio/ScanEntry.h" @@ -20,5 +19,3 @@ mp_int_t common_hal_bleio_scanentry_get_rssi(bleio_scanentry_obj_t *self); bool common_hal_bleio_scanentry_get_connectable(bleio_scanentry_obj_t *self); bool common_hal_bleio_scanentry_get_scan_response(bleio_scanentry_obj_t *self); bool common_hal_bleio_scanentry_matches(bleio_scanentry_obj_t *self, const uint8_t *prefixes, size_t prefixes_len, bool match_all); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_SCANENTRY_H diff --git a/shared-bindings/_bleio/ScanResults.h b/shared-bindings/_bleio/ScanResults.h index fcf4e9d05870..a34fccf6fa2a 100644 --- a/shared-bindings/_bleio/ScanResults.h +++ b/shared-bindings/_bleio/ScanResults.h @@ -6,8 +6,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_SCANRESULTS_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_SCANRESULTS_H +#pragma once #include "py/obj.h" #include "shared-module/_bleio/ScanResults.h" @@ -15,5 +14,3 @@ extern const mp_obj_type_t bleio_scanresults_type; mp_obj_t common_hal_bleio_scanresults_next(bleio_scanresults_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_SCANRESULTS_H diff --git a/shared-bindings/_bleio/Service.h b/shared-bindings/_bleio/Service.h index 9291618649fd..eaa2a546219d 100644 --- a/shared-bindings/_bleio/Service.h +++ b/shared-bindings/_bleio/Service.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_SERVICE_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_SERVICE_H +#pragma once #include "common-hal/_bleio/Characteristic.h" #include "common-hal/_bleio/Connection.h" @@ -26,5 +25,3 @@ extern mp_obj_tuple_t *common_hal_bleio_service_get_characteristics(bleio_servic extern bool common_hal_bleio_service_get_is_remote(bleio_service_obj_t *self); extern bool common_hal_bleio_service_get_is_secondary(bleio_service_obj_t *self); extern void common_hal_bleio_service_add_characteristic(bleio_service_obj_t *self, bleio_characteristic_obj_t *characteristic, mp_buffer_info_t *initial_value_bufinfo, const char *user_description); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_SERVICE_H diff --git a/shared-bindings/_bleio/UUID.h b/shared-bindings/_bleio/UUID.h index 84cb759c3bf5..b8d1c2fcecd6 100644 --- a/shared-bindings/_bleio/UUID.h +++ b/shared-bindings/_bleio/UUID.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_UUID_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_UUID_H +#pragma once #include "common-hal/_bleio/UUID.h" @@ -20,5 +19,3 @@ extern void common_hal_bleio_uuid_get_uuid128(bleio_uuid_obj_t *self, uint8_t uu extern uint32_t common_hal_bleio_uuid_get_size(bleio_uuid_obj_t *self); void common_hal_bleio_uuid_pack_into(bleio_uuid_obj_t *self, uint8_t *buf); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO_UUID_H diff --git a/shared-bindings/_bleio/__init__.h b/shared-bindings/_bleio/__init__.h index d55b85e5440e..0feb538d81d8 100644 --- a/shared-bindings/_bleio/__init__.h +++ b/shared-bindings/_bleio/__init__.h @@ -6,8 +6,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO___INIT___H +#pragma once #include "py/obj.h" #include "py/objlist.h" @@ -58,5 +57,3 @@ size_t common_hal_bleio_gattc_read(uint16_t handle, uint16_t conn_handle, uint8_ void common_hal_bleio_gattc_write(uint16_t handle, uint16_t conn_handle, mp_buffer_info_t *bufinfo, bool write_no_response); void common_hal_bleio_gc_collect(void); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BLEIO___INIT___H diff --git a/shared-bindings/_eve/__init__.h b/shared-bindings/_eve/__init__.h index 6c635b423962..ea743cbf07fe 100644 --- a/shared-bindings/_eve/__init__.h +++ b/shared-bindings/_eve/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS__EVE___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS__EVE___INIT___H +#pragma once #include "shared-module/_eve/__init__.h" @@ -62,5 +61,3 @@ void common_hal__eve_VertexTranslateX(common_hal__eve_t *eve, mp_float_t x); void common_hal__eve_VertexTranslateY(common_hal__eve_t *eve, mp_float_t y); void common_hal__eve_VertexFormat(common_hal__eve_t *eve, uint32_t frac); void common_hal__eve_Vertex2ii(common_hal__eve_t *eve, uint32_t x, uint32_t y, uint32_t handle, uint32_t cell); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS__EVE___INIT___H diff --git a/shared-bindings/_pew/PewPew.h b/shared-bindings/_pew/PewPew.h index f8b7ef81e49c..287b0438b3c6 100644 --- a/shared-bindings/_pew/PewPew.h +++ b/shared-bindings/_pew/PewPew.h @@ -5,9 +5,6 @@ // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_PEW_PEWPEW_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_PEW_PEWPEW_H +#pragma once extern const mp_obj_type_t pewpew_type; - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_PEW_PEWPEW_H diff --git a/shared-bindings/_stage/Layer.h b/shared-bindings/_stage/Layer.h index 6b33fe095c92..b284f27fb390 100644 --- a/shared-bindings/_stage/Layer.h +++ b/shared-bindings/_stage/Layer.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED__STAGE_LAYER_H -#define MICROPY_INCLUDED__STAGE_LAYER_H +#pragma once #include "shared-module/_stage/Layer.h" extern const mp_obj_type_t mp_type_layer; - -#endif // MICROPY_INCLUDED__STAGE_LAYER diff --git a/shared-bindings/_stage/Text.h b/shared-bindings/_stage/Text.h index 14e2ee2b25c2..cc06a324706b 100644 --- a/shared-bindings/_stage/Text.h +++ b/shared-bindings/_stage/Text.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED__STAGE_TEXT_H -#define MICROPY_INCLUDED__STAGE_TEXT_H +#pragma once #include "shared-module/_stage/Text.h" extern const mp_obj_type_t mp_type_text; - -#endif // MICROPY_INCLUDED__STAGE_TEXT diff --git a/shared-bindings/_stage/__init__.h b/shared-bindings/_stage/__init__.h index 60e2f0e0039c..68b7d0504fe8 100644 --- a/shared-bindings/_stage/__init__.h +++ b/shared-bindings/_stage/__init__.h @@ -4,9 +4,6 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED__STAGE_H -#define MICROPY_INCLUDED__STAGE_H +#pragma once #include "shared-module/_stage/__init__.h" - -#endif // MICROPY_INCLUDED__STAGE diff --git a/shared-bindings/adafruit_bus_device/__init__.h b/shared-bindings/adafruit_bus_device/__init__.h index ac61851bdb7b..8c0321cd1143 100644 --- a/shared-bindings/adafruit_bus_device/__init__.h +++ b/shared-bindings/adafruit_bus_device/__init__.h @@ -4,9 +4,6 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BUSDEVICE___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_BUSDEVICE___INIT___H +#pragma once // Nothing now. - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BUSDEVICE___INIT___H diff --git a/shared-bindings/adafruit_bus_device/i2c_device/I2CDevice.h b/shared-bindings/adafruit_bus_device/i2c_device/I2CDevice.h index 25468e7a3c97..361d65b1fa1a 100644 --- a/shared-bindings/adafruit_bus_device/i2c_device/I2CDevice.h +++ b/shared-bindings/adafruit_bus_device/i2c_device/I2CDevice.h @@ -11,8 +11,7 @@ // This file includes externs for all functions a port should implement to // support the machine module. -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BUSDEVICE_I2CDEVICE_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_BUSDEVICE_I2CDEVICE_H +#pragma once #include "py/obj.h" @@ -27,5 +26,3 @@ extern void common_hal_adafruit_bus_device_i2cdevice_construct(adafruit_bus_devi extern void common_hal_adafruit_bus_device_i2cdevice_lock(adafruit_bus_device_i2cdevice_obj_t *self); extern void common_hal_adafruit_bus_device_i2cdevice_unlock(adafruit_bus_device_i2cdevice_obj_t *self); extern void common_hal_adafruit_bus_device_i2cdevice_probe_for_device(adafruit_bus_device_i2cdevice_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BUSDEVICE_I2CDEVICE_H diff --git a/shared-bindings/adafruit_bus_device/spi_device/SPIDevice.h b/shared-bindings/adafruit_bus_device/spi_device/SPIDevice.h index b0c65ecdc32e..c5f125341644 100644 --- a/shared-bindings/adafruit_bus_device/spi_device/SPIDevice.h +++ b/shared-bindings/adafruit_bus_device/spi_device/SPIDevice.h @@ -11,8 +11,7 @@ // This file includes externs for all functions a port should implement to // support the machine module. -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BUSDEVICE_SPIDEVICE_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_BUSDEVICE_SPIDEVICE_H +#pragma once #include "py/obj.h" @@ -26,5 +25,3 @@ extern void common_hal_adafruit_bus_device_spidevice_construct(adafruit_bus_devi bool cs_active_value, uint32_t baudrate, uint8_t polarity, uint8_t phase, uint8_t extra_clocks); extern mp_obj_t common_hal_adafruit_bus_device_spidevice_enter(adafruit_bus_device_spidevice_obj_t *self); extern void common_hal_adafruit_bus_device_spidevice_exit(adafruit_bus_device_spidevice_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BUSDEVICE_SPIDEVICE_H diff --git a/shared-bindings/adafruit_pixelbuf/PixelBuf.h b/shared-bindings/adafruit_pixelbuf/PixelBuf.h index cedf74cdea55..e81a7501e47c 100644 --- a/shared-bindings/adafruit_pixelbuf/PixelBuf.h +++ b/shared-bindings/adafruit_pixelbuf/PixelBuf.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef CP_SHARED_BINDINGS_PIXELBUF_PIXELBUF_H -#define CP_SHARED_BINDINGS_PIXELBUF_PIXELBUF_H +#pragma once #include "py/objtuple.h" #include "shared-module/adafruit_pixelbuf/PixelBuf.h" @@ -38,5 +37,3 @@ void common_hal_adafruit_pixelbuf_pixelbuf_set_pixel(mp_obj_t self, size_t index void common_hal_adafruit_pixelbuf_pixelbuf_set_pixels(mp_obj_t self_in, size_t start, mp_int_t step, size_t slice_len, mp_obj_t *values, mp_obj_tuple_t *flatten_to); void common_hal_adafruit_pixelbuf_pixelbuf_parse_color(mp_obj_t self, mp_obj_t color, uint8_t *r, uint8_t *g, uint8_t *b, uint8_t *w); void common_hal_adafruit_pixelbuf_pixelbuf_set_pixel_color(mp_obj_t self, size_t index, uint8_t r, uint8_t g, uint8_t b, uint8_t w); - -#endif // CP_SHARED_BINDINGS_PIXELBUF_PIXELBUF_H diff --git a/shared-bindings/aesio/__init__.h b/shared-bindings/aesio/__init__.h index 9e722f112a37..6e88dd5dbfd1 100644 --- a/shared-bindings/aesio/__init__.h +++ b/shared-bindings/aesio/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AESIO_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_AESIO_H +#pragma once #include "shared-module/aesio/__init__.h" @@ -29,5 +28,3 @@ void common_hal_aesio_aes_encrypt(aesio_aes_obj_t *self, void common_hal_aesio_aes_decrypt(aesio_aes_obj_t *self, uint8_t *buffer, size_t len); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_AESIO_H diff --git a/shared-bindings/alarm/SleepMemory.h b/shared-bindings/alarm/SleepMemory.h index 32eb51c61ef6..1c72c9f44b25 100644 --- a/shared-bindings/alarm/SleepMemory.h +++ b/shared-bindings/alarm/SleepMemory.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_SLEEPMEMORY_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_SLEEPMEMORY_H +#pragma once #include "common-hal/alarm/SleepMemory.h" @@ -16,5 +15,3 @@ uint32_t common_hal_alarm_sleep_memory_get_length(alarm_sleep_memory_obj_t *self bool common_hal_alarm_sleep_memory_set_bytes(alarm_sleep_memory_obj_t *self, uint32_t start_index, const uint8_t *values, uint32_t len); void common_hal_alarm_sleep_memory_get_bytes(alarm_sleep_memory_obj_t *self, uint32_t start_index, uint8_t *values, uint32_t len); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_SLEEPMEMORY_H diff --git a/shared-bindings/alarm/__init__.h b/shared-bindings/alarm/__init__.h index 096897ab8931..af92b381137c 100644 --- a/shared-bindings/alarm/__init__.h +++ b/shared-bindings/alarm/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ALARM___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_ALARM___INIT___H +#pragma once #include "py/obj.h" @@ -44,5 +43,3 @@ void shared_alarm_save_wake_alarm(mp_obj_t alarm); extern bool common_hal_alarm_woken_from_sleep(void); extern void common_hal_alarm_gc_collect(void); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_ALARM___INIT___H diff --git a/shared-bindings/alarm/pin/PinAlarm.h b/shared-bindings/alarm/pin/PinAlarm.h index 528ea891263e..024199eb9965 100644 --- a/shared-bindings/alarm/pin/PinAlarm.h +++ b/shared-bindings/alarm/pin/PinAlarm.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_PIN_PINALARM_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_PIN_PINALARM_H +#pragma once #include "py/obj.h" #include "py/objtuple.h" @@ -19,5 +18,3 @@ extern const mcu_pin_obj_t *common_hal_alarm_pin_pinalarm_get_pin(alarm_pin_pina extern bool common_hal_alarm_pin_pinalarm_get_value(alarm_pin_pinalarm_obj_t *self); extern bool common_hal_alarm_pin_pinalarm_get_edge(alarm_pin_pinalarm_obj_t *self); extern bool common_hal_alarm_pin_pinalarm_get_pull(alarm_pin_pinalarm_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_PIN_PINALARM_H diff --git a/shared-bindings/alarm/time/TimeAlarm.h b/shared-bindings/alarm/time/TimeAlarm.h index d8cf3ff133f2..f5c3d6923f02 100644 --- a/shared-bindings/alarm/time/TimeAlarm.h +++ b/shared-bindings/alarm/time/TimeAlarm.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_TIME_TIMEALARM_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_TIME_TIMEALARM_H +#pragma once #include "py/obj.h" @@ -15,5 +14,3 @@ extern const mp_obj_type_t alarm_time_timealarm_type; extern void common_hal_alarm_time_timealarm_construct(alarm_time_timealarm_obj_t *self, mp_float_t monotonic_time); extern mp_float_t common_hal_alarm_time_timealarm_get_monotonic_time(alarm_time_timealarm_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_TIME_TIMEALARM_H diff --git a/shared-bindings/alarm/touch/TouchAlarm.h b/shared-bindings/alarm/touch/TouchAlarm.h index e6ca2fda6754..0de58bfe35fb 100644 --- a/shared-bindings/alarm/touch/TouchAlarm.h +++ b/shared-bindings/alarm/touch/TouchAlarm.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_TOUCH_TOUCHALARM_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_TOUCH_TOUCHALARM_H +#pragma once #include "py/obj.h" #include "py/runtime.h" @@ -16,5 +15,3 @@ extern const mp_obj_type_t alarm_touch_touchalarm_type; extern void common_hal_alarm_touch_touchalarm_construct(alarm_touch_touchalarm_obj_t *self, const mcu_pin_obj_t *pin); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_TOUCH_TOUCHALARM_H diff --git a/shared-bindings/analogbufio/BufferedIn.h b/shared-bindings/analogbufio/BufferedIn.h index 014192ee6921..ba8f5576813a 100644 --- a/shared-bindings/analogbufio/BufferedIn.h +++ b/shared-bindings/analogbufio/BufferedIn.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ANALOGBUFIO_BUFFEREDIN_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_ANALOGBUFIO_BUFFEREDIN_H +#pragma once #include "common-hal/microcontroller/Pin.h" #include "common-hal/analogbufio/BufferedIn.h" @@ -16,5 +15,3 @@ void common_hal_analogbufio_bufferedin_construct(analogbufio_bufferedin_obj_t *s void common_hal_analogbufio_bufferedin_deinit(analogbufio_bufferedin_obj_t *self); bool common_hal_analogbufio_bufferedin_deinited(analogbufio_bufferedin_obj_t *self); uint32_t common_hal_analogbufio_bufferedin_readinto(analogbufio_bufferedin_obj_t *self, uint8_t *buffer, uint32_t len, uint8_t bytes_per_sample); - -#endif // __MICROPY_INCLUDED_SHARED_BINDINGS_ANALOGBUFIO_BUFFEREDIN_H__ diff --git a/shared-bindings/analogbufio/__init__.h b/shared-bindings/analogbufio/__init__.h index 122035f4f6ab..752f8d079571 100644 --- a/shared-bindings/analogbufio/__init__.h +++ b/shared-bindings/analogbufio/__init__.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ANALOGBUFIO___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_ANALOGBUFIO___INIT___H +#pragma once #include "py/obj.h" // Nothing now. - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_ANALOGBUFIO___INIT___H diff --git a/shared-bindings/analogio/AnalogIn.h b/shared-bindings/analogio/AnalogIn.h index 60b1f2d322a6..303ef030bf7f 100644 --- a/shared-bindings/analogio/AnalogIn.h +++ b/shared-bindings/analogio/AnalogIn.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ANALOGIO_ANALOGIN_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_ANALOGIO_ANALOGIN_H +#pragma once #include "common-hal/microcontroller/Pin.h" #include "common-hal/analogio/AnalogIn.h" @@ -18,5 +17,3 @@ void common_hal_analogio_analogin_deinit(analogio_analogin_obj_t *self); bool common_hal_analogio_analogin_deinited(analogio_analogin_obj_t *self); uint16_t common_hal_analogio_analogin_get_value(analogio_analogin_obj_t *self); float common_hal_analogio_analogin_get_reference_voltage(analogio_analogin_obj_t *self); - -#endif // __MICROPY_INCLUDED_SHARED_BINDINGS_ANALOGIO_ANALOGIN_H__ diff --git a/shared-bindings/analogio/AnalogOut.h b/shared-bindings/analogio/AnalogOut.h index 4ce5ddf554c5..7992c91d17b3 100644 --- a/shared-bindings/analogio/AnalogOut.h +++ b/shared-bindings/analogio/AnalogOut.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ANALOGIO_ANALOGOUT_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_ANALOGIO_ANALOGOUT_H +#pragma once #include "common-hal/microcontroller/Pin.h" #include "common-hal/analogio/AnalogOut.h" @@ -16,5 +15,3 @@ void common_hal_analogio_analogout_construct(analogio_analogout_obj_t *self, con void common_hal_analogio_analogout_deinit(analogio_analogout_obj_t *self); bool common_hal_analogio_analogout_deinited(analogio_analogout_obj_t *self); void common_hal_analogio_analogout_set_value(analogio_analogout_obj_t *self, uint16_t value); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_ANALOGIO_ANALOGOUT_H diff --git a/shared-bindings/analogio/__init__.h b/shared-bindings/analogio/__init__.h index 05ae726a8845..48f52ceb0f3d 100644 --- a/shared-bindings/analogio/__init__.h +++ b/shared-bindings/analogio/__init__.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ANALOGIO___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_ANALOGIO___INIT___H +#pragma once #include "py/obj.h" // Nothing now. - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_ANALOGIO___INIT___H diff --git a/shared-bindings/audiobusio/I2SOut.h b/shared-bindings/audiobusio/I2SOut.h index d76bf34f4bb5..a53997ef91b6 100644 --- a/shared-bindings/audiobusio/I2SOut.h +++ b/shared-bindings/audiobusio/I2SOut.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOBUSIO_I2SOUT_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOBUSIO_I2SOUT_H +#pragma once #include "common-hal/audiobusio/I2SOut.h" #include "common-hal/microcontroller/Pin.h" @@ -29,5 +28,3 @@ void common_hal_audiobusio_i2sout_resume(audiobusio_i2sout_obj_t *self); bool common_hal_audiobusio_i2sout_get_paused(audiobusio_i2sout_obj_t *self); #endif // CIRCUITPY_AUDIOBUSIO_I2SOUT - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOBUSIO_I2SOUT_H diff --git a/shared-bindings/audiobusio/PDMIn.h b/shared-bindings/audiobusio/PDMIn.h index 6052608c2905..0539db9ff473 100644 --- a/shared-bindings/audiobusio/PDMIn.h +++ b/shared-bindings/audiobusio/PDMIn.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOBUSIO_AUDIOOUT_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOBUSIO_AUDIOOUT_H +#pragma once #include "common-hal/audiobusio/PDMIn.h" #include "common-hal/microcontroller/Pin.h" @@ -25,5 +24,3 @@ uint8_t common_hal_audiobusio_pdmin_get_bit_depth(audiobusio_pdmin_obj_t *self); uint32_t common_hal_audiobusio_pdmin_get_sample_rate(audiobusio_pdmin_obj_t *self); // TODO(tannewt): Add record to file #endif - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOBUSIO_AUDIOOUT_H diff --git a/shared-bindings/audiobusio/__init__.h b/shared-bindings/audiobusio/__init__.h index 7bd805b65f55..889bd8bcd3e3 100644 --- a/shared-bindings/audiobusio/__init__.h +++ b/shared-bindings/audiobusio/__init__.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOBUSIO___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOBUSIO___INIT___H +#pragma once #include "py/obj.h" // Nothing now. - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOBUSIO___INIT___H diff --git a/shared-bindings/audiocore/RawSample.h b/shared-bindings/audiocore/RawSample.h index 301f7f4691d9..ad138c1d362c 100644 --- a/shared-bindings/audiocore/RawSample.h +++ b/shared-bindings/audiocore/RawSample.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_RAWSAMPLE_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_RAWSAMPLE_H +#pragma once #include "shared-module/audiocore/RawSample.h" @@ -21,5 +20,3 @@ uint32_t common_hal_audioio_rawsample_get_sample_rate(audioio_rawsample_obj_t *s uint8_t common_hal_audioio_rawsample_get_bits_per_sample(audioio_rawsample_obj_t *self); uint8_t common_hal_audioio_rawsample_get_channel_count(audioio_rawsample_obj_t *self); void common_hal_audioio_rawsample_set_sample_rate(audioio_rawsample_obj_t *self, uint32_t sample_rate); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_RAWSAMPLE_H diff --git a/shared-bindings/audiocore/WaveFile.h b/shared-bindings/audiocore/WaveFile.h index 3910f0a0cbdd..7c847bbced7f 100644 --- a/shared-bindings/audiocore/WaveFile.h +++ b/shared-bindings/audiocore/WaveFile.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_WAVEFILE_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_WAVEFILE_H +#pragma once #include "py/obj.h" #include "extmod/vfs_fat.h" @@ -23,5 +22,3 @@ uint32_t common_hal_audioio_wavefile_get_sample_rate(audioio_wavefile_obj_t *sel void common_hal_audioio_wavefile_set_sample_rate(audioio_wavefile_obj_t *self, uint32_t sample_rate); uint8_t common_hal_audioio_wavefile_get_bits_per_sample(audioio_wavefile_obj_t *self); uint8_t common_hal_audioio_wavefile_get_channel_count(audioio_wavefile_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_WAVEFILE_H diff --git a/shared-bindings/audiocore/__init__.h b/shared-bindings/audiocore/__init__.h index 7160d629b0e4..889bd8bcd3e3 100644 --- a/shared-bindings/audiocore/__init__.h +++ b/shared-bindings/audiocore/__init__.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOCORE___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOCORE___INIT___H +#pragma once #include "py/obj.h" // Nothing now. - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOCORE___INIT___H diff --git a/shared-bindings/audioio/AudioOut.h b/shared-bindings/audioio/AudioOut.h index bca55dd0502f..0c766233236e 100644 --- a/shared-bindings/audioio/AudioOut.h +++ b/shared-bindings/audioio/AudioOut.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_AUDIOOUT_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_AUDIOOUT_H +#pragma once #include "common-hal/audioio/AudioOut.h" #include "common-hal/microcontroller/Pin.h" @@ -25,5 +24,3 @@ bool common_hal_audioio_audioout_get_playing(audioio_audioout_obj_t *self); void common_hal_audioio_audioout_pause(audioio_audioout_obj_t *self); void common_hal_audioio_audioout_resume(audioio_audioout_obj_t *self); bool common_hal_audioio_audioout_get_paused(audioio_audioout_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_AUDIOOUT_H diff --git a/shared-bindings/audioio/__init__.h b/shared-bindings/audioio/__init__.h index ab70b2fdc67d..889bd8bcd3e3 100644 --- a/shared-bindings/audioio/__init__.h +++ b/shared-bindings/audioio/__init__.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO___INIT___H +#pragma once #include "py/obj.h" // Nothing now. - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO___INIT___H diff --git a/shared-bindings/audiomixer/Mixer.h b/shared-bindings/audiomixer/Mixer.h index 220ccdc29c9a..29577b0a61b8 100644 --- a/shared-bindings/audiomixer/Mixer.h +++ b/shared-bindings/audiomixer/Mixer.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOMIXER_MIXER_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOMIXER_MIXER_H +#pragma once #include "shared-module/audiomixer/Mixer.h" @@ -27,5 +26,3 @@ bool common_hal_audiomixer_mixer_get_playing(audiomixer_mixer_obj_t *self); uint32_t common_hal_audiomixer_mixer_get_sample_rate(audiomixer_mixer_obj_t *self); uint8_t common_hal_audiomixer_mixer_get_channel_count(audiomixer_mixer_obj_t *self); uint8_t common_hal_audiomixer_mixer_get_bits_per_sample(audiomixer_mixer_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOMIXER_MIXER_H diff --git a/shared-bindings/audiomixer/MixerVoice.h b/shared-bindings/audiomixer/MixerVoice.h index 7143884caaee..1f5311edf41e 100644 --- a/shared-bindings/audiomixer/MixerVoice.h +++ b/shared-bindings/audiomixer/MixerVoice.h @@ -3,8 +3,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2018 DeanM for Adafruit Industries // // SPDX-License-Identifier: MIT -#ifndef SHARED_BINDINGS_AUDIOMIXER_MIXERVOICE_H_ -#define SHARED_BINDINGS_AUDIOMIXER_MIXERVOICE_H_ +#pragma once #include "shared-module/audiomixer/MixerVoice.h" #include "shared-module/audiomixer/Mixer.h" @@ -20,5 +19,3 @@ mp_float_t common_hal_audiomixer_mixervoice_get_level(audiomixer_mixervoice_obj_ void common_hal_audiomixer_mixervoice_set_level(audiomixer_mixervoice_obj_t *self, mp_float_t gain); bool common_hal_audiomixer_mixervoice_get_playing(audiomixer_mixervoice_obj_t *self); - -#endif /* SHARED_BINDINGS_AUDIOMIXER_MIXERVOICE_H_ */ diff --git a/shared-bindings/audiomixer/__init__.h b/shared-bindings/audiomixer/__init__.h index acd371501702..3da23ce63582 100644 --- a/shared-bindings/audiomixer/__init__.h +++ b/shared-bindings/audiomixer/__init__.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOMIXER___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOMIXER___INIT___H +#pragma once #include "py/obj.h" // Nothing now. - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOMIXER___INIT___H diff --git a/shared-bindings/audiomp3/MP3Decoder.h b/shared-bindings/audiomp3/MP3Decoder.h index 68166b54ae9e..8095c22b0648 100644 --- a/shared-bindings/audiomp3/MP3Decoder.h +++ b/shared-bindings/audiomp3/MP3Decoder.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_MP3FILE_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_MP3FILE_H +#pragma once #include "py/obj.h" #include "extmod/vfs_fat.h" @@ -27,5 +26,3 @@ uint8_t common_hal_audiomp3_mp3file_get_bits_per_sample(audiomp3_mp3file_obj_t * uint8_t common_hal_audiomp3_mp3file_get_channel_count(audiomp3_mp3file_obj_t *self); float common_hal_audiomp3_mp3file_get_rms_level(audiomp3_mp3file_obj_t *self); uint32_t common_hal_audiomp3_mp3file_get_samples_decoded(audiomp3_mp3file_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_MP3FILE_H diff --git a/shared-bindings/audiomp3/__init__.h b/shared-bindings/audiomp3/__init__.h index c0cac5028b4d..41b0dc84106e 100644 --- a/shared-bindings/audiomp3/__init__.h +++ b/shared-bindings/audiomp3/__init__.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOMP3___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOMP3___INIT___H +#pragma once #include "py/obj.h" // Nothing now. - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOMP3___INIT___H diff --git a/shared-bindings/audiopwmio/PWMAudioOut.h b/shared-bindings/audiopwmio/PWMAudioOut.h index 4ed2f05d1354..23724a788274 100644 --- a/shared-bindings/audiopwmio/PWMAudioOut.h +++ b/shared-bindings/audiopwmio/PWMAudioOut.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOPWMIO_AUDIOOUT_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOPWMIO_AUDIOOUT_H +#pragma once #include "common-hal/audiopwmio/PWMAudioOut.h" #include "common-hal/microcontroller/Pin.h" @@ -25,5 +24,3 @@ bool common_hal_audiopwmio_pwmaudioout_get_playing(audiopwmio_pwmaudioout_obj_t void common_hal_audiopwmio_pwmaudioout_pause(audiopwmio_pwmaudioout_obj_t *self); void common_hal_audiopwmio_pwmaudioout_resume(audiopwmio_pwmaudioout_obj_t *self); bool common_hal_audiopwmio_pwmaudioout_get_paused(audiopwmio_pwmaudioout_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOPWMIO_AUDIOOUT_H diff --git a/shared-bindings/audiopwmio/__init__.h b/shared-bindings/audiopwmio/__init__.h index 73caa67437f8..889bd8bcd3e3 100644 --- a/shared-bindings/audiopwmio/__init__.h +++ b/shared-bindings/audiopwmio/__init__.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOPWMIO___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOPWMIO___INIT___H +#pragma once #include "py/obj.h" // Nothing now. - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOPWMIO___INIT___H diff --git a/shared-bindings/bitbangio/I2C.h b/shared-bindings/bitbangio/I2C.h index ba8d3747d9a1..022be3692a6c 100644 --- a/shared-bindings/bitbangio/I2C.h +++ b/shared-bindings/bitbangio/I2C.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BITBANGIO_I2C_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_BITBANGIO_I2C_H +#pragma once #include "py/obj.h" @@ -41,5 +40,3 @@ extern uint8_t shared_module_bitbangio_i2c_write(bitbangio_i2c_obj_t *self, extern uint8_t shared_module_bitbangio_i2c_read(bitbangio_i2c_obj_t *self, uint16_t address, uint8_t *data, size_t len); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BITBANGIO_I2C_H diff --git a/shared-bindings/bitbangio/SPI.h b/shared-bindings/bitbangio/SPI.h index 3385303d5b86..dbe821683b0a 100644 --- a/shared-bindings/bitbangio/SPI.h +++ b/shared-bindings/bitbangio/SPI.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BITBANGIO_SPI_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_BITBANGIO_SPI_H +#pragma once #include "py/obj.h" @@ -38,5 +37,3 @@ extern bool shared_module_bitbangio_spi_read(bitbangio_spi_obj_t *self, uint8_t // Transfer out len bytes while reading len bytes extern bool shared_module_bitbangio_spi_transfer(bitbangio_spi_obj_t *self, const uint8_t *dout, uint8_t *din, size_t len); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BITBANGIO_SPI_H diff --git a/shared-bindings/bitbangio/__init__.h b/shared-bindings/bitbangio/__init__.h index e902cd3d559b..48f52ceb0f3d 100644 --- a/shared-bindings/bitbangio/__init__.h +++ b/shared-bindings/bitbangio/__init__.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BITBANGIO___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_BITBANGIO___INIT___H +#pragma once #include "py/obj.h" // Nothing now. - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BITBANGIO___INIT___H diff --git a/shared-bindings/bitmaptools/__init__.h b/shared-bindings/bitmaptools/__init__.h index 133ba97458d7..2d9b22e216e5 100644 --- a/shared-bindings/bitmaptools/__init__.h +++ b/shared-bindings/bitmaptools/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BITMAPTOOLS__INIT__H -#define MICROPY_INCLUDED_SHARED_BINDINGS_BITMAPTOOLS__INIT__H +#pragma once #include "shared-module/displayio/Bitmap.h" #include "shared-bindings/displayio/ColorConverter.h" @@ -86,4 +85,3 @@ typedef struct { {MP_QSTR_y2, if_required2 | MP_ARG_OBJ, {.u_obj = MP_ROM_NONE}} bitmaptools_rect_t bitmaptools_validate_coord_range_pair(const mp_arg_val_t in[4], int width, int height); -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BITMAPTOOLS__INIT__H diff --git a/shared-bindings/board/__init__.h b/shared-bindings/board/__init__.h index be7544411432..004ece1eaf34 100644 --- a/shared-bindings/board/__init__.h +++ b/shared-bindings/board/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BOARD___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_BOARD___INIT___H +#pragma once #include "py/obj.h" #include "py/objstr.h" @@ -42,5 +41,3 @@ MP_DECLARE_CONST_FUN_OBJ_0(board_uart_obj); #define CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS \ { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_board) }, \ { MP_ROM_QSTR(MP_QSTR_board_id), MP_ROM_PTR(&board_module_id_obj) }, - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BOARD___INIT___H diff --git a/shared-bindings/busio/SPI.h b/shared-bindings/busio/SPI.h index 0d6210ab79a7..69e582411a16 100644 --- a/shared-bindings/busio/SPI.h +++ b/shared-bindings/busio/SPI.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO_SPI_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO_SPI_H +#pragma once #include "py/obj.h" @@ -51,5 +50,3 @@ uint8_t common_hal_busio_spi_get_polarity(busio_spi_obj_t *self); extern void common_hal_busio_spi_never_reset(busio_spi_obj_t *self); extern busio_spi_obj_t *validate_obj_is_spi_bus(mp_obj_t obj_in, qstr arg_name); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO_SPI_H diff --git a/shared-bindings/busio/UART.h b/shared-bindings/busio/UART.h index c14511cac33d..c8e6755c129f 100644 --- a/shared-bindings/busio/UART.h +++ b/shared-bindings/busio/UART.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO_UART_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO_UART_H +#pragma once #include "common-hal/microcontroller/Pin.h" #include "common-hal/busio/UART.h" @@ -49,5 +48,3 @@ extern void common_hal_busio_uart_clear_rx_buffer(busio_uart_obj_t *self); extern bool common_hal_busio_uart_ready_to_tx(busio_uart_obj_t *self); extern void common_hal_busio_uart_never_reset(busio_uart_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO_UART_H diff --git a/shared-bindings/busio/__init__.h b/shared-bindings/busio/__init__.h index 64db62571ecd..48f52ceb0f3d 100644 --- a/shared-bindings/busio/__init__.h +++ b/shared-bindings/busio/__init__.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO___INIT___H +#pragma once #include "py/obj.h" // Nothing now. - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO___INIT___H diff --git a/shared-bindings/camera/Camera.h b/shared-bindings/camera/Camera.h index 95372804f4e0..df4512910e37 100644 --- a/shared-bindings/camera/Camera.h +++ b/shared-bindings/camera/Camera.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_CAMERA_CAMERA_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_CAMERA_CAMERA_H +#pragma once #include "common-hal/camera/Camera.h" #include "shared-bindings/camera/ImageFormat.h" @@ -16,5 +15,3 @@ void common_hal_camera_construct(camera_obj_t *self); void common_hal_camera_deinit(camera_obj_t *self); bool common_hal_camera_deinited(camera_obj_t *self); size_t common_hal_camera_take_picture(camera_obj_t *self, uint8_t *buffer, size_t len, uint16_t width, uint16_t height, camera_imageformat_t format); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_CAMERA_CAMERA_H diff --git a/shared-bindings/camera/ImageFormat.h b/shared-bindings/camera/ImageFormat.h index b733449e93b6..ce257caa8202 100644 --- a/shared-bindings/camera/ImageFormat.h +++ b/shared-bindings/camera/ImageFormat.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_CAMERA_IMAGEFORMAT_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_CAMERA_IMAGEFORMAT_H +#pragma once #include "py/obj.h" @@ -25,5 +24,3 @@ typedef struct { } camera_imageformat_obj_t; extern const camera_imageformat_obj_t camera_imageformat_jpg_obj; extern const camera_imageformat_obj_t camera_imageformat_rgb565_obj; - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_CAMERA_IMAGEFORMAT_H diff --git a/shared-bindings/countio/Counter.h b/shared-bindings/countio/Counter.h index d9b3c9f0e043..7f275dcb3698 100644 --- a/shared-bindings/countio/Counter.h +++ b/shared-bindings/countio/Counter.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_COUNTIO_COUNTER_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_COUNTIO_COUNTER_H +#pragma once #include "common-hal/microcontroller/Pin.h" #include "common-hal/countio/Counter.h" @@ -21,5 +20,3 @@ extern bool common_hal_countio_counter_deinited(countio_counter_obj_t *self); extern mp_int_t common_hal_countio_counter_get_count(countio_counter_obj_t *self); extern void common_hal_countio_counter_set_count(countio_counter_obj_t *self, mp_int_t new_count); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_COUNTIO_COUNTER_H diff --git a/shared-bindings/countio/Edge.h b/shared-bindings/countio/Edge.h index 7a34bea6a193..48e31d0f9a63 100644 --- a/shared-bindings/countio/Edge.h +++ b/shared-bindings/countio/Edge.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_COUNTIO_EDGE_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_COUNTIO_EDGE_H +#pragma once #include "py/enum.h" #include "py/obj.h" @@ -20,5 +19,3 @@ extern const mp_obj_type_t countio_edge_type; extern const cp_enum_obj_t edge_FALL_obj; countio_edge_t validate_edge(mp_obj_t obj, qstr arg_name); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_COUNTIO_EDGE_H diff --git a/shared-bindings/countio/__init__.h b/shared-bindings/countio/__init__.h index b8d553d62fec..8918616129c7 100644 --- a/shared-bindings/countio/__init__.h +++ b/shared-bindings/countio/__init__.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_COUNTIO___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_COUNTIO___INIT___H +#pragma once #include "py/obj.h" // Nothing now. - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_COUNTIO___INIT___H diff --git a/shared-bindings/digitalio/DigitalInOut.h b/shared-bindings/digitalio/DigitalInOut.h index d1d8efbfa6d8..f030e27a60b9 100644 --- a/shared-bindings/digitalio/DigitalInOut.h +++ b/shared-bindings/digitalio/DigitalInOut.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DIGITALIO_DIGITALINOUT_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_DIGITALIO_DIGITALINOUT_H +#pragma once #include "common-hal/microcontroller/Pin.h" #include "common-hal/digitalio/DigitalInOut.h" @@ -55,5 +54,3 @@ digitalio_digitalinout_obj_t *assert_digitalinout(mp_obj_t obj); volatile uint32_t *common_hal_digitalio_digitalinout_get_reg(digitalio_digitalinout_obj_t *self, digitalinout_reg_op_t op, uint32_t *mask); bool common_hal_digitalio_has_reg_op(digitalinout_reg_op_t op); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_DIGITALIO_DIGITALINOUT_H diff --git a/shared-bindings/digitalio/Direction.h b/shared-bindings/digitalio/Direction.h index 8f2c884942d8..676ad3dc9b83 100644 --- a/shared-bindings/digitalio/Direction.h +++ b/shared-bindings/digitalio/Direction.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DIGITALIO_DIRECTION_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_DIGITALIO_DIRECTION_H +#pragma once #include "py/obj.h" @@ -21,5 +20,3 @@ extern const mp_obj_type_t digitalio_direction_type; extern const digitalio_direction_obj_t digitalio_direction_input_obj; extern const digitalio_direction_obj_t digitalio_direction_output_obj; - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_DIGITALIO_DIRECTION_H diff --git a/shared-bindings/digitalio/DriveMode.h b/shared-bindings/digitalio/DriveMode.h index 7ff8f9f673ee..515b8e4239cb 100644 --- a/shared-bindings/digitalio/DriveMode.h +++ b/shared-bindings/digitalio/DriveMode.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DIGITALIO_DRIVEMODE_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_DIGITALIO_DRIVEMODE_H +#pragma once #include "py/obj.h" @@ -22,5 +21,3 @@ extern const mp_obj_type_t digitalio_drive_mode_type; extern const digitalio_drive_mode_obj_t digitalio_drive_mode_push_pull_obj; extern const digitalio_drive_mode_obj_t digitalio_drive_mode_open_drain_obj; - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_DIGITALIO_DRIVEMODE_H diff --git a/shared-bindings/digitalio/Pull.h b/shared-bindings/digitalio/Pull.h index f027a82e425d..abbc07b89e9e 100644 --- a/shared-bindings/digitalio/Pull.h +++ b/shared-bindings/digitalio/Pull.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DIGITALIO_PULL_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_DIGITALIO_PULL_H +#pragma once #include "py/obj.h" @@ -24,5 +23,3 @@ extern const digitalio_pull_obj_t digitalio_pull_up_obj; extern const digitalio_pull_obj_t digitalio_pull_down_obj; digitalio_pull_t validate_pull(mp_rom_obj_t obj, qstr arg_name); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_DIGITALIO_PULL_H diff --git a/shared-bindings/digitalio/__init__.h b/shared-bindings/digitalio/__init__.h index 186c5bcefa7c..48f52ceb0f3d 100644 --- a/shared-bindings/digitalio/__init__.h +++ b/shared-bindings/digitalio/__init__.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DIGITALIO___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_DIGITALIO___INIT___H +#pragma once #include "py/obj.h" // Nothing now. - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_DIGITALIO___INIT___H diff --git a/shared-bindings/displayio/Bitmap.h b/shared-bindings/displayio/Bitmap.h index 4d0789b24e39..8a6a2b2ee316 100644 --- a/shared-bindings/displayio/Bitmap.h +++ b/shared-bindings/displayio/Bitmap.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_BITMAP_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_BITMAP_H +#pragma once #include "shared-module/displayio/Bitmap.h" @@ -27,5 +26,3 @@ void common_hal_displayio_bitmap_fill(displayio_bitmap_t *bitmap, uint32_t value int common_hal_displayio_bitmap_get_buffer(displayio_bitmap_t *self, mp_buffer_info_t *bufinfo, mp_uint_t flags); void common_hal_displayio_bitmap_deinit(displayio_bitmap_t *self); bool common_hal_displayio_bitmap_deinited(displayio_bitmap_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_BITMAP_H diff --git a/shared-bindings/displayio/ColorConverter.h b/shared-bindings/displayio/ColorConverter.h index 0bd38403d9dd..d5a6816f25ee 100644 --- a/shared-bindings/displayio/ColorConverter.h +++ b/shared-bindings/displayio/ColorConverter.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_COLORCONVERTER_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_COLORCONVERTER_H +#pragma once #include "shared-bindings/displayio/__init__.h" #include "shared-module/displayio/ColorConverter.h" @@ -23,5 +22,3 @@ bool common_hal_displayio_colorconverter_get_dither(displayio_colorconverter_t * void common_hal_displayio_colorconverter_make_transparent(displayio_colorconverter_t *self, uint32_t transparent_color); void common_hal_displayio_colorconverter_make_opaque(displayio_colorconverter_t *self, uint32_t transparent_color); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_COLORCONVERTER_H diff --git a/shared-bindings/displayio/Group.h b/shared-bindings/displayio/Group.h index 43b4dd60a17c..2eb252159614 100644 --- a/shared-bindings/displayio/Group.h +++ b/shared-bindings/displayio/Group.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_GROUP_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_GROUP_H +#pragma once #include "shared-module/displayio/Group.h" @@ -29,5 +28,3 @@ mp_obj_t common_hal_displayio_group_pop(displayio_group_t *self, size_t index); mp_int_t common_hal_displayio_group_index(displayio_group_t *self, mp_obj_t layer); mp_obj_t common_hal_displayio_group_get(displayio_group_t *self, size_t index); void common_hal_displayio_group_set(displayio_group_t *self, size_t index, mp_obj_t layer); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_GROUP_H diff --git a/shared-bindings/displayio/OnDiskBitmap.h b/shared-bindings/displayio/OnDiskBitmap.h index 80edea7b65a9..229b428df85c 100644 --- a/shared-bindings/displayio/OnDiskBitmap.h +++ b/shared-bindings/displayio/OnDiskBitmap.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_ONDISKBITMAP_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_ONDISKBITMAP_H +#pragma once #include "shared-module/displayio/OnDiskBitmap.h" #include "extmod/vfs_fat.h" @@ -20,4 +19,3 @@ uint32_t common_hal_displayio_ondiskbitmap_get_pixel(displayio_ondiskbitmap_t *b uint16_t common_hal_displayio_ondiskbitmap_get_height(displayio_ondiskbitmap_t *self); mp_obj_t common_hal_displayio_ondiskbitmap_get_pixel_shader(displayio_ondiskbitmap_t *self); uint16_t common_hal_displayio_ondiskbitmap_get_width(displayio_ondiskbitmap_t *self); -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_ONDISKBITMAP_H diff --git a/shared-bindings/displayio/Palette.h b/shared-bindings/displayio/Palette.h index 89340a990b96..5e75712108f0 100644 --- a/shared-bindings/displayio/Palette.h +++ b/shared-bindings/displayio/Palette.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_PALETTE_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_PALETTE_H +#pragma once #include "shared-module/displayio/Palette.h" @@ -22,5 +21,3 @@ bool common_hal_displayio_palette_get_dither(displayio_palette_t *self); void common_hal_displayio_palette_make_opaque(displayio_palette_t *self, uint32_t palette_index); void common_hal_displayio_palette_make_transparent(displayio_palette_t *self, uint32_t palette_index); bool common_hal_displayio_palette_is_transparent(displayio_palette_t *self, uint32_t palette_index); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_PALETTE_H diff --git a/shared-bindings/displayio/TileGrid.h b/shared-bindings/displayio/TileGrid.h index 9c3d8966de40..19af39fadeb3 100644 --- a/shared-bindings/displayio/TileGrid.h +++ b/shared-bindings/displayio/TileGrid.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_TILEGRID_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_TILEGRID_H +#pragma once #include "shared-module/displayio/TileGrid.h" @@ -50,5 +49,3 @@ void common_hal_displayio_tilegrid_set_tile(displayio_tilegrid_t *self, uint16_t // Private API for scrolling the TileGrid. void common_hal_displayio_tilegrid_set_top_left(displayio_tilegrid_t *self, uint16_t x, uint16_t y); void common_hal_displayio_tilegrid_set_all_tiles(displayio_tilegrid_t *self, uint8_t tile_index); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_TILEGRID_H diff --git a/shared-bindings/dualbank/__init__.h b/shared-bindings/dualbank/__init__.h index f40529f6cb41..fc06221ca529 100644 --- a/shared-bindings/dualbank/__init__.h +++ b/shared-bindings/dualbank/__init__.h @@ -4,12 +4,9 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DUALBANK___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_DUALBANK___INIT___H +#pragma once #include "py/runtime.h" extern void common_hal_dualbank_switch(void); extern void common_hal_dualbank_flash(const void *buf, const size_t len, const size_t offset); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_DUALBANK___INIT___H diff --git a/shared-bindings/fontio/BuiltinFont.h b/shared-bindings/fontio/BuiltinFont.h index 233b426cccd2..f113629cd345 100644 --- a/shared-bindings/fontio/BuiltinFont.h +++ b/shared-bindings/fontio/BuiltinFont.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_FONTIO_BUILTINFONT_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_FONTIO_BUILTINFONT_H +#pragma once #include "shared-module/fontio/BuiltinFont.h" @@ -14,5 +13,3 @@ extern const mp_obj_type_t fontio_builtinfont_type; mp_obj_t common_hal_fontio_builtinfont_get_bitmap(const fontio_builtinfont_t *self); mp_obj_t common_hal_fontio_builtinfont_get_bounding_box(const fontio_builtinfont_t *self); mp_obj_t common_hal_fontio_builtinfont_get_glyph(const fontio_builtinfont_t *self, mp_uint_t codepoint); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_FONTIO_BUILTINFONT_H diff --git a/shared-bindings/fontio/Glyph.h b/shared-bindings/fontio/Glyph.h index 395705629c90..d7270db52d40 100644 --- a/shared-bindings/fontio/Glyph.h +++ b/shared-bindings/fontio/Glyph.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_FONTIO_GLYPH_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_FONTIO_GLYPH_H +#pragma once #include "py/objnamedtuple.h" extern const mp_obj_namedtuple_type_t fontio_glyph_type; - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_FONTIO_GLYPH_H diff --git a/shared-bindings/framebufferio/FramebufferDisplay.h b/shared-bindings/framebufferio/FramebufferDisplay.h index ce0b5bd3755d..1a3bfa9a0265 100644 --- a/shared-bindings/framebufferio/FramebufferDisplay.h +++ b/shared-bindings/framebufferio/FramebufferDisplay.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_FRAMEBUFFERDISPLAY_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_FRAMEBUFFERDISPLAY_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -40,5 +39,3 @@ mp_obj_t common_hal_framebufferio_framebufferdisplay_framebuffer(framebufferio_f mp_obj_t common_hal_framebufferio_framebufferdisplay_get_root_group(framebufferio_framebufferdisplay_obj_t *self); mp_obj_t common_hal_framebufferio_framebufferdisplay_set_root_group(framebufferio_framebufferdisplay_obj_t *self, displayio_group_t *root_group); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_FRAMEBUFFERDISPLAY_H diff --git a/shared-bindings/frequencyio/FrequencyIn.h b/shared-bindings/frequencyio/FrequencyIn.h index 656f6859d247..dbc68cac91b6 100644 --- a/shared-bindings/frequencyio/FrequencyIn.h +++ b/shared-bindings/frequencyio/FrequencyIn.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_FREQUENCYIO_FREQUENCYIN_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_FREQUENCYIO_FREQUENCYIN_H +#pragma once #include "common-hal/microcontroller/Pin.h" #include "common-hal/frequencyio/FrequencyIn.h" @@ -22,5 +21,3 @@ extern void common_hal_frequencyio_frequencyin_clear(frequencyio_frequencyin_obj extern uint32_t common_hal_frequencyio_frequencyin_get_item(frequencyio_frequencyin_obj_t *self); extern uint16_t common_hal_frequencyio_frequencyin_get_capture_period(frequencyio_frequencyin_obj_t *self); extern void common_hal_frequencyio_frequencyin_set_capture_period(frequencyio_frequencyin_obj_t *self, uint16_t capture_period); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_FREQUENCYIO_FREQUENCYIN_H diff --git a/shared-bindings/frequencyio/__init__.h b/shared-bindings/frequencyio/__init__.h index 02b30030c798..3da23ce63582 100644 --- a/shared-bindings/frequencyio/__init__.h +++ b/shared-bindings/frequencyio/__init__.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_FREQUENCYIO___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_FREQUENCYIO___INIT___H +#pragma once #include "py/obj.h" // Nothing now. - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_FREQUENCYIO___INIT___H diff --git a/shared-bindings/gifio/OnDiskGif.h b/shared-bindings/gifio/OnDiskGif.h index 5a2dc876f5cb..96e4cf083412 100644 --- a/shared-bindings/gifio/OnDiskGif.h +++ b/shared-bindings/gifio/OnDiskGif.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_ONDISKGIF_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_ONDISKGIF_H +#pragma once #include "shared-module/gifio/OnDiskGif.h" #include "extmod/vfs_fat.h" @@ -28,4 +27,3 @@ int32_t common_hal_gifio_ondiskgif_get_min_delay(gifio_ondiskgif_t *self); int32_t common_hal_gifio_ondiskgif_get_max_delay(gifio_ondiskgif_t *self); void common_hal_gifio_ondiskgif_deinit(gifio_ondiskgif_t *self); bool common_hal_gifio_ondiskgif_deinited(gifio_ondiskgif_t *self); -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_ONDISKGIF_H diff --git a/shared-bindings/hashlib/Hash.h b/shared-bindings/hashlib/Hash.h index ceac92158797..f946a52ed19e 100644 --- a/shared-bindings/hashlib/Hash.h +++ b/shared-bindings/hashlib/Hash.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_HASHLIB_HASH_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_HASHLIB_HASH_H +#pragma once #include "py/obj.h" @@ -23,5 +22,3 @@ mp_obj_t hashlib_hash_update(mp_obj_t self_in, mp_obj_t buf_in); void common_hal_hashlib_hash_update(hashlib_hash_obj_t *self, const uint8_t *data, size_t datalen); void common_hal_hashlib_hash_digest(hashlib_hash_obj_t *self, uint8_t *data, size_t datalen); size_t common_hal_hashlib_hash_get_digest_size(hashlib_hash_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_HASHLIB_HASH_H diff --git a/shared-bindings/hashlib/__init__.h b/shared-bindings/hashlib/__init__.h index 811e370f0105..39804d3ed984 100644 --- a/shared-bindings/hashlib/__init__.h +++ b/shared-bindings/hashlib/__init__.h @@ -4,13 +4,10 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_HASHLIB___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_HASHLIB___INIT___H +#pragma once #include #include "shared-bindings/hashlib/Hash.h" bool common_hal_hashlib_new(hashlib_hash_obj_t *self, const char *algorithm); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_HASHLIB___INIT___H diff --git a/shared-bindings/i2ctarget/I2CTarget.h b/shared-bindings/i2ctarget/I2CTarget.h index 1782d0695fb4..6cfa19d3608b 100644 --- a/shared-bindings/i2ctarget/I2CTarget.h +++ b/shared-bindings/i2ctarget/I2CTarget.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO_I2C_TARGET_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO_I2C_TARGET_H +#pragma once #include "py/obj.h" @@ -36,5 +35,3 @@ extern int common_hal_i2ctarget_i2c_target_read_byte(i2ctarget_i2c_target_obj_t extern int common_hal_i2ctarget_i2c_target_write_byte(i2ctarget_i2c_target_obj_t *self, uint8_t data); extern void common_hal_i2ctarget_i2c_target_ack(i2ctarget_i2c_target_obj_t *self, bool ack); extern void common_hal_i2ctarget_i2c_target_close(i2ctarget_i2c_target_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO_I2C_TARGET_H diff --git a/shared-bindings/ipaddress/IPv4Address.h b/shared-bindings/ipaddress/IPv4Address.h index 81e928e6cb6f..4b3d6eb0d2bd 100644 --- a/shared-bindings/ipaddress/IPv4Address.h +++ b/shared-bindings/ipaddress/IPv4Address.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_IPADDRESS_IPV4ADDRESS_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_IPADDRESS_IPV4ADDRESS_H +#pragma once #include "shared-module/ipaddress/IPv4Address.h" @@ -14,5 +13,3 @@ extern const mp_obj_type_t ipaddress_ipv4address_type; mp_obj_t common_hal_ipaddress_new_ipv4address(uint32_t value); void common_hal_ipaddress_ipv4address_construct(ipaddress_ipv4address_obj_t *self, uint8_t *buf, size_t len); mp_obj_t common_hal_ipaddress_ipv4address_get_packed(ipaddress_ipv4address_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_IPADDRESS_IPV4ADDRESS_H diff --git a/shared-bindings/ipaddress/__init__.h b/shared-bindings/ipaddress/__init__.h index 27efa4da65c8..d9202b478d1f 100644 --- a/shared-bindings/ipaddress/__init__.h +++ b/shared-bindings/ipaddress/__init__.h @@ -4,13 +4,10 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_IPADDRESS___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_IPADDRESS___INIT___H +#pragma once #include "shared-module/ipaddress/__init__.h" bool ipaddress_parse_ipv4address(const char *ip_str, size_t len, uint32_t *ip_out); mp_obj_t common_hal_ipaddress_new_ipv4address(uint32_t value); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_IPADDRESS___INIT___H diff --git a/shared-bindings/keypad/Event.h b/shared-bindings/keypad/Event.h index 9f88b7e9aed1..13eefdcdc25e 100644 --- a/shared-bindings/keypad/Event.h +++ b/shared-bindings/keypad/Event.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_EVENT__H -#define MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_EVENT__H +#pragma once #include "py/obj.h" #include "shared-module/keypad/Event.h" @@ -17,5 +16,3 @@ mp_int_t common_hal_keypad_event_get_key_number(keypad_event_obj_t *self); bool common_hal_keypad_event_get_pressed(keypad_event_obj_t *self); bool common_hal_keypad_event_get_released(keypad_event_obj_t *self); mp_obj_t common_hal_keypad_event_get_timestamp(keypad_event_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_EVENT__H diff --git a/shared-bindings/keypad/EventQueue.h b/shared-bindings/keypad/EventQueue.h index 9ab64a2aa4ec..893165e3220f 100644 --- a/shared-bindings/keypad/EventQueue.h +++ b/shared-bindings/keypad/EventQueue.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_EVENTQUEUE_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_EVENTQUEUE_H +#pragma once #include "shared-module/keypad/Event.h" #include "shared-module/keypad/EventQueue.h" @@ -23,5 +22,3 @@ bool common_hal_keypad_eventqueue_get_overflowed(keypad_eventqueue_obj_t *self); void common_hal_keypad_eventqueue_set_overflowed(keypad_eventqueue_obj_t *self, bool overflowed); void common_hal_keypad_eventqueue_set_event_handler(keypad_eventqueue_obj_t *self, void (*event_handler)(keypad_eventqueue_obj_t *)); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_EVENTQUEUE_H diff --git a/shared-bindings/keypad/KeyMatrix.h b/shared-bindings/keypad/KeyMatrix.h index 8d555cabb8af..dfbef53be89b 100644 --- a/shared-bindings/keypad/KeyMatrix.h +++ b/shared-bindings/keypad/KeyMatrix.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_KEYMATRIX_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_KEYMATRIX_H +#pragma once #include "py/objlist.h" #include "shared-module/keypad/KeyMatrix.h" @@ -21,5 +20,3 @@ mp_uint_t common_hal_keypad_keymatrix_row_column_to_key_number(keypad_keymatrix_ size_t common_hal_keypad_keymatrix_get_column_count(keypad_keymatrix_obj_t *self); size_t common_hal_keypad_keymatrix_get_row_count(keypad_keymatrix_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_KEYMATRIX_H diff --git a/shared-bindings/keypad/Keys.h b/shared-bindings/keypad/Keys.h index 4ee4c1078272..b14ee0b6d1b7 100644 --- a/shared-bindings/keypad/Keys.h +++ b/shared-bindings/keypad/Keys.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_KEYS_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_KEYS_H +#pragma once #include "py/objlist.h" #include "shared-module/keypad/Keys.h" @@ -15,5 +14,3 @@ extern const mp_obj_type_t keypad_keys_type; void common_hal_keypad_keys_construct(keypad_keys_obj_t *self, mp_uint_t num_pins, const mcu_pin_obj_t *pins[], bool value_when_pressed, bool pull, mp_float_t interval, size_t max_events, uint8_t debounce_threshold); void common_hal_keypad_keys_deinit(keypad_keys_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_KEYS_H diff --git a/shared-bindings/keypad/ShiftRegisterKeys.h b/shared-bindings/keypad/ShiftRegisterKeys.h index 7c92f98a4fa4..b164672638b7 100644 --- a/shared-bindings/keypad/ShiftRegisterKeys.h +++ b/shared-bindings/keypad/ShiftRegisterKeys.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_SHIFTREGISTERKEYS_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_SHIFTREGISTERKEYS_H +#pragma once #include "py/objlist.h" #include "shared-module/keypad/ShiftRegisterKeys.h" @@ -15,5 +14,3 @@ extern const mp_obj_type_t keypad_shiftregisterkeys_type; void common_hal_keypad_shiftregisterkeys_construct(keypad_shiftregisterkeys_obj_t *self, const mcu_pin_obj_t *clock_pin, mp_uint_t num_data_pins, const mcu_pin_obj_t *data_pins[], const mcu_pin_obj_t *latch_pin, bool value_to_latch, size_t num_key_count, size_t key_counts[], bool value_when_pressed, mp_float_t interval, size_t max_events, uint8_t debounce_threshold); void common_hal_keypad_shiftregisterkeys_deinit(keypad_shiftregisterkeys_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_SHIFTREGISTERKEYS_H diff --git a/shared-bindings/keypad/__init__.h b/shared-bindings/keypad/__init__.h index 05d058353a5d..7f8079ecdc92 100644 --- a/shared-bindings/keypad/__init__.h +++ b/shared-bindings/keypad/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef SHARED_BINDINGS_KEYPAD_H -#define SHARED_BINDINGS_KEYPAD_H +#pragma once #include "py/obj.h" #include "py/objproperty.h" @@ -20,5 +19,3 @@ MP_DECLARE_CONST_FUN_OBJ_1(keypad_generic_reset_obj); extern const mp_obj_property_t keypad_generic_events_obj; extern const mp_obj_property_t keypad_generic_key_count_obj; - -#endif // SHARED_BINDINGS_KEYPAD_H diff --git a/shared-bindings/keypad_demux/DemuxKeyMatrix.h b/shared-bindings/keypad_demux/DemuxKeyMatrix.h index 607365bd223e..fc7a11a0d37f 100644 --- a/shared-bindings/keypad_demux/DemuxKeyMatrix.h +++ b/shared-bindings/keypad_demux/DemuxKeyMatrix.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_DEMUX_DEMUXKEYMATRIX_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_DEMUX_DEMUXKEYMATRIX_H +#pragma once #include "py/objlist.h" #include "shared-module/keypad_demux/DemuxKeyMatrix.h" @@ -21,5 +20,3 @@ mp_uint_t common_hal_keypad_demux_demuxkeymatrix_row_column_to_key_number(keypad size_t common_hal_keypad_demux_demuxkeymatrix_get_column_count(keypad_demux_demuxkeymatrix_obj_t *self); size_t common_hal_keypad_demux_demuxkeymatrix_get_row_count(keypad_demux_demuxkeymatrix_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_KEYPAD_DEMUX_DEMUXKEYMATRIX_H diff --git a/shared-bindings/memorymap/AddressRange.h b/shared-bindings/memorymap/AddressRange.h index cd04f7f68551..32bd0562a88d 100644 --- a/shared-bindings/memorymap/AddressRange.h +++ b/shared-bindings/memorymap/AddressRange.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMAP_ADDRESSRANGE_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMAP_ADDRESSRANGE_H +#pragma once #include "common-hal/memorymap/AddressRange.h" @@ -22,5 +21,3 @@ void common_hal_memorymap_addressrange_set_bytes(const memorymap_addressrange_ob // also leverage the compiler to validate uses are expected. void common_hal_memorymap_addressrange_get_bytes(const memorymap_addressrange_obj_t *self, size_t start_index, size_t len, uint8_t *values); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMAP_ADDRESSRANGE_H diff --git a/shared-bindings/memorymonitor/AllocationAlarm.h b/shared-bindings/memorymonitor/AllocationAlarm.h index 9dbfe8c2a271..7b5904d1315c 100644 --- a/shared-bindings/memorymonitor/AllocationAlarm.h +++ b/shared-bindings/memorymonitor/AllocationAlarm.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMONITOR_ALLOCATIONALARM_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMONITOR_ALLOCATIONALARM_H +#pragma once #include "shared-module/memorymonitor/AllocationAlarm.h" @@ -15,5 +14,3 @@ void common_hal_memorymonitor_allocationalarm_construct(memorymonitor_allocation void common_hal_memorymonitor_allocationalarm_pause(memorymonitor_allocationalarm_obj_t *self); void common_hal_memorymonitor_allocationalarm_resume(memorymonitor_allocationalarm_obj_t *self); void common_hal_memorymonitor_allocationalarm_set_ignore(memorymonitor_allocationalarm_obj_t *self, mp_int_t count); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMONITOR_ALLOCATIONALARM_H diff --git a/shared-bindings/memorymonitor/AllocationSize.h b/shared-bindings/memorymonitor/AllocationSize.h index 9790ae79f046..4ec2f5ebe705 100644 --- a/shared-bindings/memorymonitor/AllocationSize.h +++ b/shared-bindings/memorymonitor/AllocationSize.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMONITOR_ALLOCATIONSIZE_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMONITOR_ALLOCATIONSIZE_H +#pragma once #include "shared-module/memorymonitor/AllocationSize.h" @@ -18,5 +17,3 @@ extern void common_hal_memorymonitor_allocationsize_clear(memorymonitor_allocati extern size_t common_hal_memorymonitor_allocationsize_get_bytes_per_block(memorymonitor_allocationsize_obj_t *self); extern uint16_t common_hal_memorymonitor_allocationsize_get_len(memorymonitor_allocationsize_obj_t *self); extern uint16_t common_hal_memorymonitor_allocationsize_get_item(memorymonitor_allocationsize_obj_t *self, int16_t index); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMONITOR_ALLOCATIONSIZE_H diff --git a/shared-bindings/memorymonitor/__init__.h b/shared-bindings/memorymonitor/__init__.h index 3c9bdd9b4133..28480bea7b52 100644 --- a/shared-bindings/memorymonitor/__init__.h +++ b/shared-bindings/memorymonitor/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMONITOR___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMONITOR___INIT___H +#pragma once #include "py/obj.h" @@ -25,5 +24,3 @@ void memorymonitor_exception_print(const mp_print_t *print, mp_obj_t o_in, mp_pr extern const mp_obj_type_t mp_type_memorymonitor_AllocationError; NORETURN void mp_raise_memorymonitor_AllocationError(mp_rom_error_text_t msg, ...); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_MEMORYMONITOR___INIT___H diff --git a/shared-bindings/microcontroller/Pin.h b/shared-bindings/microcontroller/Pin.h index 7064d81980d3..1245b5f23e4a 100644 --- a/shared-bindings/microcontroller/Pin.h +++ b/shared-bindings/microcontroller/Pin.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_MICROCONTROLLER_PIN_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_MICROCONTROLLER_PIN_H +#pragma once #include "common-hal/microcontroller/Pin.h" #include "py/obj.h" @@ -39,5 +38,3 @@ void common_hal_mcu_pin_reset_number(uint8_t pin_no); void shared_bindings_microcontroller_pin_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind); #define COMMON_HAL_MCU_NO_PIN ((uint8_t)0xff) - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_MICROCONTROLLER_PIN_H diff --git a/shared-bindings/microcontroller/Processor.h b/shared-bindings/microcontroller/Processor.h index 608e6b8f54b9..843bf5620056 100644 --- a/shared-bindings/microcontroller/Processor.h +++ b/shared-bindings/microcontroller/Processor.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_MICROCONTROLLER_PROCESSOR_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_MICROCONTROLLER_PROCESSOR_H +#pragma once #include "py/obj.h" @@ -20,5 +19,3 @@ float common_hal_mcu_processor_get_temperature(void); void common_hal_mcu_processor_get_uid(uint8_t raw_id[]); float common_hal_mcu_processor_get_voltage(void); void common_hal_mcu_processor_set_frequency(mcu_processor_obj_t *self, uint32_t frequency); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_MICROCONTROLLER_PROCESSOR_H diff --git a/shared-bindings/microcontroller/ResetReason.h b/shared-bindings/microcontroller/ResetReason.h index 6c8b2448fe37..61ff80639a62 100644 --- a/shared-bindings/microcontroller/ResetReason.h +++ b/shared-bindings/microcontroller/ResetReason.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_MCU_RESET_REASON__H -#define MICROPY_INCLUDED_SHARED_BINDINGS_MCU_RESET_REASON__H +#pragma once #include "py/obj.h" #include "py/enum.h" @@ -22,5 +21,3 @@ typedef enum { } mcu_reset_reason_t; extern const mp_obj_type_t mcu_reset_reason_type; - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_MCU_RESET_REASON__H diff --git a/shared-bindings/microcontroller/RunMode.h b/shared-bindings/microcontroller/RunMode.h index 0eb81e1eb4e3..2f918fb39faf 100644 --- a/shared-bindings/microcontroller/RunMode.h +++ b/shared-bindings/microcontroller/RunMode.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_MICROCONTROLLER_RUNMODE_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_MICROCONTROLLER_RUNMODE_H +#pragma once #include "py/obj.h" @@ -26,5 +25,3 @@ extern const mcu_runmode_obj_t mcu_runmode_uf2_obj; extern const mcu_runmode_obj_t mcu_runmode_normal_obj; extern const mcu_runmode_obj_t mcu_runmode_safe_mode_obj; extern const mcu_runmode_obj_t mcu_runmode_bootloader_obj; - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_MICROCONTROLLER_RUNMODE_H diff --git a/shared-bindings/microcontroller/__init__.h b/shared-bindings/microcontroller/__init__.h index 3a74b67b38bd..a94cca7b6972 100644 --- a/shared-bindings/microcontroller/__init__.h +++ b/shared-bindings/microcontroller/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_MICROCONTROLLER___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_MICROCONTROLLER___INIT___H +#pragma once #include "py/obj.h" #include "py/mpconfig.h" @@ -44,5 +43,3 @@ extern const nvm_bytearray_obj_t common_hal_mcu_nvm_obj; #include "common-hal/watchdog/WatchDogTimer.h" extern watchdog_watchdogtimer_obj_t common_hal_mcu_watchdogtimer_obj; #endif - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_MICROCONTROLLER___INIT___H diff --git a/shared-bindings/msgpack/ExtType.h b/shared-bindings/msgpack/ExtType.h index 116028b88ee9..97709d46ec6d 100644 --- a/shared-bindings/msgpack/ExtType.h +++ b/shared-bindings/msgpack/ExtType.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_MSGPACK_EXTTYPE___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_MSGPACK_EXTTYPE___INIT___H +#pragma once #include "py/obj.h" @@ -16,5 +15,3 @@ typedef struct { } mod_msgpack_extype_obj_t; extern const mp_obj_type_t mod_msgpack_exttype_type; - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_MSGPACK_EXTTYPE___INIT___H diff --git a/shared-bindings/msgpack/__init__.h b/shared-bindings/msgpack/__init__.h index 78785d7df519..67e79823d7c0 100644 --- a/shared-bindings/msgpack/__init__.h +++ b/shared-bindings/msgpack/__init__.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_MSGPACK___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_MSGPACK___INIT___H +#pragma once #include "py/obj.h" // nothing for now - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_MSGPACK___INIT___H diff --git a/shared-bindings/neopixel_write/__init__.h b/shared-bindings/neopixel_write/__init__.h index 20fdc6eb175e..61e0e82fa304 100644 --- a/shared-bindings/neopixel_write/__init__.h +++ b/shared-bindings/neopixel_write/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_NEOPIXEL_WRITE_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_NEOPIXEL_WRITE_H +#pragma once #include #include @@ -13,5 +12,3 @@ #include "common-hal/digitalio/DigitalInOut.h" extern void common_hal_neopixel_write(const digitalio_digitalinout_obj_t *gpio, uint8_t *pixels, uint32_t numBytes); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_NEOPIXEL_WRITE_H diff --git a/shared-bindings/nvm/ByteArray.h b/shared-bindings/nvm/ByteArray.h index 7855cc8a6d9d..dd2633522b26 100644 --- a/shared-bindings/nvm/ByteArray.h +++ b/shared-bindings/nvm/ByteArray.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_NVM_BYTEARRAY_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_NVM_BYTEARRAY_H +#pragma once #include "common-hal/nvm/ByteArray.h" @@ -19,5 +18,3 @@ bool common_hal_nvm_bytearray_set_bytes(const nvm_bytearray_obj_t *self, // also leverage the compiler to validate uses are expected. void common_hal_nvm_bytearray_get_bytes(const nvm_bytearray_obj_t *self, uint32_t start_index, uint32_t len, uint8_t *values); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_NVM_BYTEARRAY_H diff --git a/shared-bindings/onewireio/OneWire.h b/shared-bindings/onewireio/OneWire.h index 39ccf25e1828..4d3c22dea507 100644 --- a/shared-bindings/onewireio/OneWire.h +++ b/shared-bindings/onewireio/OneWire.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ONEWIREIO_ONEWIRE_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_ONEWIREIO_ONEWIRE_H +#pragma once #include "common-hal/microcontroller/Pin.h" #include "shared-module/onewireio/OneWire.h" @@ -19,5 +18,3 @@ extern bool common_hal_onewireio_onewire_deinited(onewireio_onewire_obj_t *self) extern bool common_hal_onewireio_onewire_reset(onewireio_onewire_obj_t *self); extern bool common_hal_onewireio_onewire_read_bit(onewireio_onewire_obj_t *self); extern void common_hal_onewireio_onewire_write_bit(onewireio_onewire_obj_t *self, bool bit); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_ONEWIREIO_ONEWIRE_H diff --git a/shared-bindings/onewireio/__init__.h b/shared-bindings/onewireio/__init__.h index 370e1d641aef..48f52ceb0f3d 100644 --- a/shared-bindings/onewireio/__init__.h +++ b/shared-bindings/onewireio/__init__.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ONEWIREIO___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_ONEWIREIO___INIT___H +#pragma once #include "py/obj.h" // Nothing now. - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_ONEWIREIO___INIT___H diff --git a/shared-bindings/os/__init__.h b/shared-bindings/os/__init__.h index 228af63199dd..f273708cf4ed 100644 --- a/shared-bindings/os/__init__.h +++ b/shared-bindings/os/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_OS___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_OS___INIT___H +#pragma once #include #include @@ -31,5 +30,3 @@ void common_hal_os_utime(const char *path, mp_obj_t times); // Returns true if data was correctly sourced from a true random number generator. bool common_hal_os_urandom(uint8_t *buffer, mp_uint_t length); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_OS___INIT___H diff --git a/shared-bindings/ps2io/Ps2.h b/shared-bindings/ps2io/Ps2.h index 9cddf86443d0..32580804343a 100644 --- a/shared-bindings/ps2io/Ps2.h +++ b/shared-bindings/ps2io/Ps2.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_PS2IO_PS2_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_PS2IO_PS2_H +#pragma once #include "common-hal/microcontroller/Pin.h" #include "common-hal/ps2io/Ps2.h" @@ -21,5 +20,3 @@ extern uint16_t common_hal_ps2io_ps2_get_len(ps2io_ps2_obj_t *self); extern int16_t common_hal_ps2io_ps2_popleft(ps2io_ps2_obj_t *self); extern int16_t common_hal_ps2io_ps2_sendcmd(ps2io_ps2_obj_t *self, uint8_t b); extern uint16_t common_hal_ps2io_ps2_clear_errors(ps2io_ps2_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_PS2IO_PS2_H diff --git a/shared-bindings/ps2io/__init__.h b/shared-bindings/ps2io/__init__.h index 822e8617cf65..25aceee328c1 100644 --- a/shared-bindings/ps2io/__init__.h +++ b/shared-bindings/ps2io/__init__.h @@ -5,11 +5,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_PS2IO___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_PS2IO___INIT___H +#pragma once #include "py/obj.h" // Nothing now. - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_PS2IO___INIT___H diff --git a/shared-bindings/pulseio/PulseIn.h b/shared-bindings/pulseio/PulseIn.h index 1667f0ccba4f..2ea8a082d369 100644 --- a/shared-bindings/pulseio/PulseIn.h +++ b/shared-bindings/pulseio/PulseIn.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_PULSEIO_PULSEIN_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_PULSEIO_PULSEIN_H +#pragma once #include "common-hal/microcontroller/Pin.h" #include "common-hal/pulseio/PulseIn.h" @@ -24,5 +23,3 @@ extern uint16_t common_hal_pulseio_pulsein_get_maxlen(pulseio_pulsein_obj_t *sel extern bool common_hal_pulseio_pulsein_get_paused(pulseio_pulsein_obj_t *self); extern uint16_t common_hal_pulseio_pulsein_get_len(pulseio_pulsein_obj_t *self); extern uint16_t common_hal_pulseio_pulsein_get_item(pulseio_pulsein_obj_t *self, int16_t index); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_PULSEIO_PULSEIN_H diff --git a/shared-bindings/pulseio/PulseOut.h b/shared-bindings/pulseio/PulseOut.h index 1a13e3adc708..ad332c68ab14 100644 --- a/shared-bindings/pulseio/PulseOut.h +++ b/shared-bindings/pulseio/PulseOut.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_PULSEIO_PULSEOUT_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_PULSEIO_PULSEOUT_H +#pragma once #include "common-hal/microcontroller/Pin.h" #include "common-hal/pulseio/PulseOut.h" @@ -22,5 +21,3 @@ extern void common_hal_pulseio_pulseout_deinit(pulseio_pulseout_obj_t *self); extern bool common_hal_pulseio_pulseout_deinited(pulseio_pulseout_obj_t *self); extern void common_hal_pulseio_pulseout_send(pulseio_pulseout_obj_t *self, uint16_t *pulses, uint16_t len); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_PULSEIO_PULSEOUT_H diff --git a/shared-bindings/pulseio/__init__.h b/shared-bindings/pulseio/__init__.h index 3dfa6cb2de9f..48f52ceb0f3d 100644 --- a/shared-bindings/pulseio/__init__.h +++ b/shared-bindings/pulseio/__init__.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_PULSEIO___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_PULSEIO___INIT___H +#pragma once #include "py/obj.h" // Nothing now. - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_PULSEIO___INIT___H diff --git a/shared-bindings/pwmio/PWMOut.h b/shared-bindings/pwmio/PWMOut.h index c2de5117f18b..d8bab9782283 100644 --- a/shared-bindings/pwmio/PWMOut.h +++ b/shared-bindings/pwmio/PWMOut.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_PWMIO_PWMOUT_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_PWMIO_PWMOUT_H +#pragma once #include "common-hal/microcontroller/Pin.h" #include "common-hal/pwmio/PWMOut.h" @@ -41,5 +40,3 @@ extern void common_hal_pwmio_pwmout_never_reset(pwmio_pwmout_obj_t *self); extern void common_hal_pwmio_pwmout_reset_ok(pwmio_pwmout_obj_t *self); extern void common_hal_pwmio_pwmout_raise_error(pwmout_result_t result); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_PWMIO_PWMOUT_H diff --git a/shared-bindings/pwmio/__init__.h b/shared-bindings/pwmio/__init__.h index 4da28008fad6..48f52ceb0f3d 100644 --- a/shared-bindings/pwmio/__init__.h +++ b/shared-bindings/pwmio/__init__.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_PWMIO___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_PWMIO___INIT___H +#pragma once #include "py/obj.h" // Nothing now. - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_PWMIO___INIT___H diff --git a/shared-bindings/rainbowio/__init__.h b/shared-bindings/rainbowio/__init__.h index 17db6331eb69..d688c1330005 100644 --- a/shared-bindings/rainbowio/__init__.h +++ b/shared-bindings/rainbowio/__init__.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef CP_SHARED_BINDINGS_RAINBOWIO_INIT_H -#define CP_SHARED_BINDINGS_RAINBOWIO_INIT_H +#pragma once #include #include "py/misc.h" int32_t colorwheel(mp_float_t pos); - -#endif // CP_SHARED_BINDINGS_RAINBOWIO_INIT_H diff --git a/shared-bindings/random/__init__.h b/shared-bindings/random/__init__.h index 6006701ae5cd..27f255d5d8b5 100644 --- a/shared-bindings/random/__init__.h +++ b/shared-bindings/random/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_RANDOM___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_RANDOM___INIT___H +#pragma once // This depends on shared_module because nearly all functionality is port // agnostic. The random module only depends on the common_hal_os_urandom or @@ -16,5 +15,3 @@ mp_uint_t shared_modules_random_getrandbits(uint8_t n); mp_int_t shared_modules_random_randrange(mp_int_t start, mp_int_t stop, mp_int_t step); mp_float_t shared_modules_random_random(void); mp_float_t shared_modules_random_uniform(mp_float_t a, mp_float_t b); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_RANDOM___INIT___H diff --git a/shared-bindings/rotaryio/IncrementalEncoder.h b/shared-bindings/rotaryio/IncrementalEncoder.h index e517cdaf8889..1c60dd69a193 100644 --- a/shared-bindings/rotaryio/IncrementalEncoder.h +++ b/shared-bindings/rotaryio/IncrementalEncoder.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ROTARYIO_INCREMENTALENCODER_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_ROTARYIO_INCREMENTALENCODER_H +#pragma once #include "common-hal/microcontroller/Pin.h" #include "common-hal/rotaryio/IncrementalEncoder.h" @@ -22,5 +21,3 @@ extern void common_hal_rotaryio_incrementalencoder_set_position(rotaryio_increme extern mp_int_t common_hal_rotaryio_incrementalencoder_get_divisor(rotaryio_incrementalencoder_obj_t *self); extern void common_hal_rotaryio_incrementalencoder_set_divisor(rotaryio_incrementalencoder_obj_t *self, mp_int_t new_divisor); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_ROTARYIO_INCREMENTALENCODER_H diff --git a/shared-bindings/rotaryio/__init__.h b/shared-bindings/rotaryio/__init__.h index 9e1e032b0dab..f7ea9dc23521 100644 --- a/shared-bindings/rotaryio/__init__.h +++ b/shared-bindings/rotaryio/__init__.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ROTARYIO___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_ROTARYIO___INIT___H +#pragma once #include "py/obj.h" // Nothing now. - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_ROTARYIO___INIT___H diff --git a/shared-bindings/rtc/RTC.h b/shared-bindings/rtc/RTC.h index 720eb9eac99f..4fc67fd919d3 100644 --- a/shared-bindings/rtc/RTC.h +++ b/shared-bindings/rtc/RTC.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_RTC_RTC_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_RTC_RTC_H +#pragma once #include #include @@ -26,5 +25,3 @@ typedef struct _rtc_rtc_obj_t { } rtc_rtc_obj_t; extern const rtc_rtc_obj_t rtc_rtc_obj; - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_RTC_RTC_H diff --git a/shared-bindings/rtc/__init__.h b/shared-bindings/rtc/__init__.h index 13dd2dd32e35..71c642ffde59 100644 --- a/shared-bindings/rtc/__init__.h +++ b/shared-bindings/rtc/__init__.h @@ -4,12 +4,9 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_RTC___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_RTC___INIT___H +#pragma once #include "py/obj.h" extern void rtc_reset(void); extern mp_obj_t rtc_get_time_source_time(void); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_RTC___INIT___H diff --git a/shared-bindings/sdioio/SDCard.h b/shared-bindings/sdioio/SDCard.h index 1a7506209d8b..dfeaf8fca896 100644 --- a/shared-bindings/sdioio/SDCard.h +++ b/shared-bindings/sdioio/SDCard.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO_SDIO_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO_SDIO_H +#pragma once #include "py/obj.h" @@ -42,5 +41,3 @@ int common_hal_sdioio_sdcard_writeblocks(sdioio_sdcard_obj_t *self, uint32_t sta // This is used by the supervisor to claim SDIO devices indefinitely. extern void common_hal_sdioio_sdcard_never_reset(sdioio_sdcard_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_BUSIO_SDIO_H diff --git a/shared-bindings/socketpool/Socket.h b/shared-bindings/socketpool/Socket.h index 25782974f221..25ba7ecff558 100644 --- a/shared-bindings/socketpool/Socket.h +++ b/shared-bindings/socketpool/Socket.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_SOCKETPOOL_SOCKET_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_SOCKETPOOL_SOCKET_H +#pragma once #include "common-hal/socketpool/Socket.h" @@ -44,5 +43,3 @@ void socketpool_socket_move(socketpool_socket_obj_t *self, socketpool_socket_obj // Resets the socket object state so it appears closed and disconnected. This only works on // uninitialized memory. void socketpool_socket_reset(socketpool_socket_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_SOCKETPOOL_SOCKET_H diff --git a/shared-bindings/socketpool/SocketPool.h b/shared-bindings/socketpool/SocketPool.h index fedf2c9e8a50..7088961477f7 100644 --- a/shared-bindings/socketpool/SocketPool.h +++ b/shared-bindings/socketpool/SocketPool.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_SOCKETPOOL_SOCKETPOOL_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_SOCKETPOOL_SOCKETPOOL_H +#pragma once #include "common-hal/socketpool/SocketPool.h" @@ -33,5 +32,3 @@ bool socketpool_socket(socketpool_socketpool_obj_t *self, int proto, socketpool_socket_obj_t *sock); NORETURN void common_hal_socketpool_socketpool_raise_gaierror_noname(void); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_SOCKETPOOL_SOCKETPOOL_H diff --git a/shared-bindings/socketpool/__init__.h b/shared-bindings/socketpool/__init__.h index 4620a736042c..d659e76adc39 100644 --- a/shared-bindings/socketpool/__init__.h +++ b/shared-bindings/socketpool/__init__.h @@ -4,9 +4,6 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_SOCKETPOOL___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_SOCKETPOOL___INIT___H +#pragma once void socketpool_user_reset(void); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_SOCKETPOOL___INIT___H diff --git a/shared-bindings/ssl/SSLContext.h b/shared-bindings/ssl/SSLContext.h index b2bc4d24e2c8..e3654e707c23 100644 --- a/shared-bindings/ssl/SSLContext.h +++ b/shared-bindings/ssl/SSLContext.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_SSL_SSLCONTEXT_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_SSL_SSLCONTEXT_H +#pragma once #if CIRCUITPY_SSL_MBEDTLS #include "shared-module/ssl/SSLContext.h" @@ -30,5 +29,3 @@ void common_hal_ssl_sslcontext_set_default_verify_paths(ssl_sslcontext_obj_t *se bool common_hal_ssl_sslcontext_get_check_hostname(ssl_sslcontext_obj_t *self); void common_hal_ssl_sslcontext_set_check_hostname(ssl_sslcontext_obj_t *self, bool value); void common_hal_ssl_sslcontext_load_cert_chain(ssl_sslcontext_obj_t *self, mp_buffer_info_t *cert_buf, mp_buffer_info_t *key_buf); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_SSL_SSLCONTEXT_H diff --git a/shared-bindings/ssl/__init__.h b/shared-bindings/ssl/__init__.h index 5e185e412f7d..c011e0153795 100644 --- a/shared-bindings/ssl/__init__.h +++ b/shared-bindings/ssl/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_SSL___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_SSL___INIT___H +#pragma once #if CIRCUITPY_SSL_MBEDTLS #include "shared-module/ssl/SSLContext.h" @@ -14,5 +13,3 @@ #endif void common_hal_ssl_create_default_context(ssl_sslcontext_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_SSL___INIT___H diff --git a/shared-bindings/storage/__init__.h b/shared-bindings/storage/__init__.h index 01b09e25debf..7ab5fc97bd7e 100644 --- a/shared-bindings/storage/__init__.h +++ b/shared-bindings/storage/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_STORAGE___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_STORAGE___INIT___H +#pragma once #include #include @@ -21,5 +20,3 @@ void common_hal_storage_erase_filesystem(bool extended); bool common_hal_storage_disable_usb_drive(void); bool common_hal_storage_enable_usb_drive(void); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_STORAGE___INIT___H diff --git a/shared-bindings/struct/__init__.h b/shared-bindings/struct/__init__.h index bae3338157cc..05747214d323 100644 --- a/shared-bindings/struct/__init__.h +++ b/shared-bindings/struct/__init__.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_STRUCT___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_STRUCT___INIT___H +#pragma once void shared_modules_struct_pack_into(mp_obj_t fmt_in, byte *p, byte *end_p, size_t n_args, const mp_obj_t *args); mp_uint_t shared_modules_struct_calcsize(mp_obj_t fmt_in); mp_obj_tuple_t *shared_modules_struct_unpack_from(mp_obj_t fmt_in, byte *p, byte *end_p, bool exact_size); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_RANDOM___INIT___H diff --git a/shared-bindings/supervisor/StatusBar.h b/shared-bindings/supervisor/StatusBar.h index b54ad44972ad..5c25bd0fa796 100644 --- a/shared-bindings/supervisor/StatusBar.h +++ b/shared-bindings/supervisor/StatusBar.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_STATUS_BAR_STATUS_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_STATUS_BAR_STATUS_H +#pragma once #include #include "py/obj.h" @@ -18,5 +17,3 @@ void shared_module_supervisor_status_bar_set_console(supervisor_status_bar_obj_t bool shared_module_supervisor_status_bar_get_display(supervisor_status_bar_obj_t *self); void shared_module_supervisor_status_bar_set_display(supervisor_status_bar_obj_t *self, bool enabled); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_SUPERVISOR_STATUS_BAR_H diff --git a/shared-bindings/terminalio/Terminal.h b/shared-bindings/terminalio/Terminal.h index cd5b22025fe2..893db4d13112 100644 --- a/shared-bindings/terminalio/Terminal.h +++ b/shared-bindings/terminalio/Terminal.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_TERMINALIO_TERMINAL_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_TERMINALIO_TERMINAL_H +#pragma once #include "shared-module/terminalio/Terminal.h" @@ -21,5 +20,3 @@ extern size_t common_hal_terminalio_terminal_write(terminalio_terminal_obj_t *se const uint8_t *data, size_t len, int *errcode); extern bool common_hal_terminalio_terminal_ready_to_tx(terminalio_terminal_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_TERMINALIO_TERMINAL_H diff --git a/shared-bindings/terminalio/__init__.h b/shared-bindings/terminalio/__init__.h index ef81dbd7238e..e23230b3f7b8 100644 --- a/shared-bindings/terminalio/__init__.h +++ b/shared-bindings/terminalio/__init__.h @@ -4,9 +4,6 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_TERMINALIO___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_TERMINALIO___INIT___H +#pragma once // Nothing now. - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_TERMINALIO___INIT___H diff --git a/shared-bindings/time/__init__.h b/shared-bindings/time/__init__.h index e8afaaf2f18a..2d12a8618291 100644 --- a/shared-bindings/time/__init__.h +++ b/shared-bindings/time/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_TIME___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_TIME___INIT___H +#pragma once #include #include @@ -19,5 +18,3 @@ extern void struct_time_to_tm(mp_obj_t t, timeutils_struct_time_t *tm); extern uint64_t common_hal_time_monotonic_ms(void); extern uint64_t common_hal_time_monotonic_ns(void); extern void common_hal_time_delay_ms(uint32_t); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_TIME___INIT___H diff --git a/shared-bindings/touchio/TouchIn.h b/shared-bindings/touchio/TouchIn.h index c8055e9ef519..0ab510394792 100644 --- a/shared-bindings/touchio/TouchIn.h +++ b/shared-bindings/touchio/TouchIn.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_TOUCHIO_TOUCHIN_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_TOUCHIO_TOUCHIN_H +#pragma once #include "common-hal/microcontroller/Pin.h" @@ -24,5 +23,3 @@ bool common_hal_touchio_touchin_get_value(touchio_touchin_obj_t *self); uint16_t common_hal_touchio_touchin_get_raw_value(touchio_touchin_obj_t *self); uint16_t common_hal_touchio_touchin_get_threshold(touchio_touchin_obj_t *self); void common_hal_touchio_touchin_set_threshold(touchio_touchin_obj_t *self, uint16_t new_threshold); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_TOUCHIO_TOUCHIN_H diff --git a/shared-bindings/touchio/__init__.h b/shared-bindings/touchio/__init__.h index 58f21f0860d3..48f52ceb0f3d 100644 --- a/shared-bindings/touchio/__init__.h +++ b/shared-bindings/touchio/__init__.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_TOUCHIO___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_TOUCHIO___INIT___H +#pragma once #include "py/obj.h" // Nothing now. - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_TOUCHIO___INIT___H diff --git a/shared-bindings/uheap/__init__.h b/shared-bindings/uheap/__init__.h index cc57fa026161..82688221d3aa 100644 --- a/shared-bindings/uheap/__init__.h +++ b/shared-bindings/uheap/__init__.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_UHEAP___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_UHEAP___INIT___H +#pragma once #include "py/obj.h" extern uint32_t shared_module_uheap_info(mp_obj_t obj); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_UHEAP___INIT___H diff --git a/shared-bindings/usb/core/Device.h b/shared-bindings/usb/core/Device.h index 3a2b0f55bcb0..232d16bdabf3 100644 --- a/shared-bindings/usb/core/Device.h +++ b/shared-bindings/usb/core/Device.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_USB_CORE_DEVICE_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_USB_CORE_DEVICE_H +#pragma once #include "py/objarray.h" @@ -30,5 +29,3 @@ mp_int_t common_hal_usb_core_device_ctrl_transfer(usb_core_device_obj_t *self, bool common_hal_usb_core_device_is_kernel_driver_active(usb_core_device_obj_t *self, mp_int_t interface); void common_hal_usb_core_device_detach_kernel_driver(usb_core_device_obj_t *self, mp_int_t interface); void common_hal_usb_core_device_attach_kernel_driver(usb_core_device_obj_t *self, mp_int_t interface); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_USB_CORE_DEVICE_H diff --git a/shared-bindings/usb_cdc/Serial.h b/shared-bindings/usb_cdc/Serial.h index a48601cb42b6..30249cef389c 100644 --- a/shared-bindings/usb_cdc/Serial.h +++ b/shared-bindings/usb_cdc/Serial.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_USB_CDC_SERIAL_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_USB_CDC_SERIAL_H +#pragma once #include "shared-module/usb_cdc/Serial.h" @@ -29,5 +28,3 @@ extern void common_hal_usb_cdc_serial_set_timeout(usb_cdc_serial_obj_t *self, mp extern mp_float_t common_hal_usb_cdc_serial_get_write_timeout(usb_cdc_serial_obj_t *self); extern void common_hal_usb_cdc_serial_set_write_timeout(usb_cdc_serial_obj_t *self, mp_float_t write_timeout); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_USB_CDC_SERIAL_H diff --git a/shared-bindings/usb_cdc/__init__.h b/shared-bindings/usb_cdc/__init__.h index c28732e23f7e..34099f7e8fd6 100644 --- a/shared-bindings/usb_cdc/__init__.h +++ b/shared-bindings/usb_cdc/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_USB_CDC___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_USB_CDC___INIT___H +#pragma once #include "shared-module/usb_cdc/__init__.h" @@ -15,5 +14,3 @@ void usb_cdc_set_data(mp_obj_t serial_obj); extern bool common_hal_usb_cdc_disable(void); extern bool common_hal_usb_cdc_enable(bool console, bool data); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_USB_CDC___INIT___H diff --git a/shared-bindings/usb_hid/Device.h b/shared-bindings/usb_hid/Device.h index 6e01890aa014..5519606ec35c 100644 --- a/shared-bindings/usb_hid/Device.h +++ b/shared-bindings/usb_hid/Device.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_USB_HID_DEVICE_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_USB_HID_DEVICE_H +#pragma once #include "py/objarray.h" @@ -19,5 +18,3 @@ mp_obj_t common_hal_usb_hid_device_get_last_received_report(usb_hid_device_obj_t uint16_t common_hal_usb_hid_device_get_usage_page(usb_hid_device_obj_t *self); uint16_t common_hal_usb_hid_device_get_usage(usb_hid_device_obj_t *self); uint8_t common_hal_usb_hid_device_validate_report_id(usb_hid_device_obj_t *self, mp_int_t report_id); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_USB_HID_DEVICE_H diff --git a/shared-bindings/usb_hid/__init__.h b/shared-bindings/usb_hid/__init__.h index 445d939ec9ac..78ac72839129 100644 --- a/shared-bindings/usb_hid/__init__.h +++ b/shared-bindings/usb_hid/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef SHARED_BINDINGS_USB_HID_H -#define SHARED_BINDINGS_USB_HID_H +#pragma once #include "py/obj.h" #include "py/objtuple.h" @@ -18,5 +17,3 @@ void usb_hid_set_devices(mp_obj_t devices); bool common_hal_usb_hid_disable(void); bool common_hal_usb_hid_enable(const mp_obj_t devices_seq, uint8_t boot_device); uint8_t common_hal_usb_hid_get_boot_device(void); - -#endif // SHARED_BINDINGS_USB_HID_H diff --git a/shared-bindings/usb_host/Port.h b/shared-bindings/usb_host/Port.h index 682590cbeb0d..803eae8b59ff 100644 --- a/shared-bindings/usb_host/Port.h +++ b/shared-bindings/usb_host/Port.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_USB_HOST_PORT_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_USB_HOST_PORT_H +#pragma once #include "py/objarray.h" @@ -20,5 +19,3 @@ extern const mp_obj_type_t usb_host_port_type; // method to check the internals of the global object against the given arguments // to determine whether to return the singleton or raise an exception. usb_host_port_obj_t *common_hal_usb_host_port_construct(const mcu_pin_obj_t *dp, const mcu_pin_obj_t *dm); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_USB_HOST_PORT_H diff --git a/shared-bindings/usb_midi/PortIn.h b/shared-bindings/usb_midi/PortIn.h index d5d241e5ab52..3a0b81a7e0b6 100644 --- a/shared-bindings/usb_midi/PortIn.h +++ b/shared-bindings/usb_midi/PortIn.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_USB_MIDI_PORTIN_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_USB_MIDI_PORTIN_H +#pragma once #include "shared-module/usb_midi/PortIn.h" @@ -17,5 +16,3 @@ extern size_t common_hal_usb_midi_portin_read(usb_midi_portin_obj_t *self, extern uint32_t common_hal_usb_midi_portin_bytes_available(usb_midi_portin_obj_t *self); extern void common_hal_usb_midi_portin_clear_buffer(usb_midi_portin_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_USB_MIDI_PORTIN_H diff --git a/shared-bindings/usb_midi/PortOut.h b/shared-bindings/usb_midi/PortOut.h index d60d09dcbbbb..de109b881a79 100644 --- a/shared-bindings/usb_midi/PortOut.h +++ b/shared-bindings/usb_midi/PortOut.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_USB_MIDI_PORTOUT_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_USB_MIDI_PORTOUT_H +#pragma once #include "shared-module/usb_midi/PortOut.h" @@ -16,5 +15,3 @@ extern size_t common_hal_usb_midi_portout_write(usb_midi_portout_obj_t *self, const uint8_t *data, size_t len, int *errcode); extern bool common_hal_usb_midi_portout_ready_to_tx(usb_midi_portout_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_USB_MIDI_PORTOUT_H diff --git a/shared-bindings/usb_midi/__init__.h b/shared-bindings/usb_midi/__init__.h index 7a9c997a2be2..4bb84f2268eb 100644 --- a/shared-bindings/usb_midi/__init__.h +++ b/shared-bindings/usb_midi/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_USB_MIDI___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_USB_MIDI___INIT___H +#pragma once #include "py/obj.h" #include "shared-module/usb_midi/__init__.h" @@ -14,5 +13,3 @@ extern mp_obj_dict_t usb_midi_module_globals; bool common_hal_usb_midi_disable(void); bool common_hal_usb_midi_enable(void); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_USB_MIDI___INIT___H diff --git a/shared-bindings/ustack/__init__.h b/shared-bindings/ustack/__init__.h index 3053b05ac72c..1d152e2bf7d3 100644 --- a/shared-bindings/ustack/__init__.h +++ b/shared-bindings/ustack/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_USTACK___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_USTACK___INIT___H +#pragma once #include "py/obj.h" @@ -14,5 +13,3 @@ extern uint32_t shared_module_ustack_max_stack_usage(void); #endif extern uint32_t shared_module_ustack_stack_size(void); extern uint32_t shared_module_ustack_stack_usage(void); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_USTACK___INIT___H diff --git a/shared-bindings/vectorio/Circle.h b/shared-bindings/vectorio/Circle.h index 33a0cc2e3d1a..2c72e81881cd 100644 --- a/shared-bindings/vectorio/Circle.h +++ b/shared-bindings/vectorio/Circle.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_CIRCLE_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_CIRCLE_H +#pragma once #include "shared-module/vectorio/__init__.h" #include "shared-module/vectorio/Circle.h" @@ -29,5 +28,3 @@ uint16_t common_hal_vectorio_circle_get_color_index(void *obj); void common_hal_vectorio_circle_set_color_index(void *obj, uint16_t color_index); mp_obj_t common_hal_vectorio_circle_get_draw_protocol(void *circle); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_CIRCLE_H diff --git a/shared-bindings/vectorio/Polygon.h b/shared-bindings/vectorio/Polygon.h index 2843c4ba1ad9..c57261f8e375 100644 --- a/shared-bindings/vectorio/Polygon.h +++ b/shared-bindings/vectorio/Polygon.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_POLYGON_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_POLYGON_H +#pragma once #include "shared-module/vectorio/Polygon.h" #include "shared-module/displayio/area.h" @@ -30,6 +29,3 @@ uint16_t common_hal_vectorio_polygon_get_color_index(void *obj); void common_hal_vectorio_polygon_set_color_index(void *obj, uint16_t color_index); mp_obj_t common_hal_vectorio_polygon_get_draw_protocol(void *polygon); - - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_POLYGON_H diff --git a/shared-bindings/vectorio/Rectangle.h b/shared-bindings/vectorio/Rectangle.h index 58435f98c4e3..6831fa21029a 100644 --- a/shared-bindings/vectorio/Rectangle.h +++ b/shared-bindings/vectorio/Rectangle.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_RECTANGLE_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_RECTANGLE_H +#pragma once #include "shared-module/vectorio/Rectangle.h" #include "shared-module/displayio/area.h" @@ -30,5 +29,3 @@ void common_hal_vectorio_rectangle_set_color_index(void *obj, uint16_t color_ind int16_t common_hal_vectorio_rectangle_get_height(void *obj); void common_hal_vectorio_rectangle_set_height(void *obj, int16_t height); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_RECTANGLE_H diff --git a/shared-bindings/vectorio/VectorShape.h b/shared-bindings/vectorio/VectorShape.h index 7f86829076a6..9e06a0c146e8 100644 --- a/shared-bindings/vectorio/VectorShape.h +++ b/shared-bindings/vectorio/VectorShape.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_SHAPE_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_SHAPE_H +#pragma once #include "py/objproperty.h" #include "py/objtuple.h" @@ -53,5 +52,3 @@ extern const mp_obj_property_getset_t vectorio_vector_shape_hidden_obj; extern const mp_obj_property_getset_t vectorio_vector_shape_location_obj; extern const mp_obj_property_getset_t vectorio_vector_shape_pixel_shader_obj; extern const mp_obj_fun_builtin_fixed_t vectorio_vector_shape_contains_obj; - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_VECTORIO_SHAPE_H diff --git a/shared-bindings/vectorio/__init__.h b/shared-bindings/vectorio/__init__.h index bbb01b934b61..c982f63815b4 100644 --- a/shared-bindings/vectorio/__init__.h +++ b/shared-bindings/vectorio/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef SHARED_MODULE_VECTORIO__INIT__H -#define SHARED_MODULE_VECTORIO__INIT__H +#pragma once #include #include @@ -45,5 +44,3 @@ typedef struct _vectorio_draw_protocol_t { // Implementation functions for the draw protocol vectorio_draw_protocol_impl_t *draw_protocol_impl; } vectorio_draw_protocol_t; - -#endif diff --git a/shared-bindings/watchdog/WatchDogMode.h b/shared-bindings/watchdog/WatchDogMode.h index 4bbbe39a78bb..00decbe1360b 100644 --- a/shared-bindings/watchdog/WatchDogMode.h +++ b/shared-bindings/watchdog/WatchDogMode.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_WATCHDOG_WATCHDOGMODE_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_WATCHDOG_WATCHDOGMODE_H +#pragma once #include "py/enum.h" @@ -16,5 +15,3 @@ typedef enum { } watchdog_watchdogmode_t; extern const mp_obj_type_t watchdog_watchdogmode_type; - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_WATCHDOG_WATCHDOGMODE_H diff --git a/shared-bindings/watchdog/WatchDogTimer.h b/shared-bindings/watchdog/WatchDogTimer.h index c336c6866d7a..44fb32dd5220 100644 --- a/shared-bindings/watchdog/WatchDogTimer.h +++ b/shared-bindings/watchdog/WatchDogTimer.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_WATCHDOG_WATCHDOGTIMER_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_WATCHDOG_WATCHDOGTIMER_H +#pragma once #include "py/obj.h" #include "shared-bindings/watchdog/WatchDogMode.h" @@ -24,5 +23,3 @@ extern void common_hal_watchdog_enable(watchdog_watchdogtimer_obj_t *self); extern void common_hal_watchdog_deinit(watchdog_watchdogtimer_obj_t *self); extern const mp_obj_type_t watchdog_watchdogtimer_type; - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_WATCHDOG_WATCHDOGTIMER_H diff --git a/shared-bindings/watchdog/__init__.h b/shared-bindings/watchdog/__init__.h index 8d1c4239b3e9..a80680d25d29 100644 --- a/shared-bindings/watchdog/__init__.h +++ b/shared-bindings/watchdog/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_WATCHDOG___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_WATCHDOG___INIT___H +#pragma once #include "py/obj.h" #include "py/objexcept.h" @@ -13,5 +12,3 @@ extern const mp_obj_module_t watchdog_module; extern mp_obj_exception_t mp_watchdog_timeout_exception; extern const mp_obj_type_t mp_type_WatchDogTimeout; - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_WATCHDOG___INIT___H diff --git a/shared-bindings/wifi/AuthMode.h b/shared-bindings/wifi/AuthMode.h index bc0952870088..ba90648e9312 100644 --- a/shared-bindings/wifi/AuthMode.h +++ b/shared-bindings/wifi/AuthMode.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_AUTHMODE_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_AUTHMODE_H +#pragma once #include "py/enum.h" @@ -21,5 +20,3 @@ typedef enum { extern const mp_obj_type_t wifi_authmode_type; extern const cp_enum_obj_t authmode_OPEN_obj; - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_AUTHMODE_H diff --git a/shared-bindings/wifi/Monitor.h b/shared-bindings/wifi/Monitor.h index 6439ee933f2b..c6a4ae6ecdf0 100644 --- a/shared-bindings/wifi/Monitor.h +++ b/shared-bindings/wifi/Monitor.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_MONITOR_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_MONITOR_H +#pragma once #include "common-hal/wifi/Monitor.h" @@ -26,5 +25,3 @@ mp_obj_t common_hal_wifi_monitor_get_lost(wifi_monitor_obj_t *self); mp_obj_t common_hal_wifi_monitor_get_queued(wifi_monitor_obj_t *self); mp_obj_t common_hal_wifi_monitor_get_packet(wifi_monitor_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_MONITOR_H diff --git a/shared-bindings/wifi/Network.h b/shared-bindings/wifi/Network.h index fc499c3168ca..b60fbe5b1253 100644 --- a/shared-bindings/wifi/Network.h +++ b/shared-bindings/wifi/Network.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_NETWORK_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_NETWORK_H +#pragma once #include @@ -21,5 +20,3 @@ extern mp_obj_t common_hal_wifi_network_get_rssi(wifi_network_obj_t *self); extern mp_obj_t common_hal_wifi_network_get_channel(wifi_network_obj_t *self); extern mp_obj_t common_hal_wifi_network_get_country(wifi_network_obj_t *self); extern mp_obj_t common_hal_wifi_network_get_authmode(wifi_network_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_NETWORK_H diff --git a/shared-bindings/wifi/Packet.h b/shared-bindings/wifi/Packet.h index 1522440ea699..e0d17b3292d9 100644 --- a/shared-bindings/wifi/Packet.h +++ b/shared-bindings/wifi/Packet.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_PACKET_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_PACKET_H +#pragma once #include "py/enum.h" @@ -17,5 +16,3 @@ typedef enum { } wifi_packet_t; extern const mp_obj_type_t wifi_packet_type; - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_PACKET_H diff --git a/shared-bindings/wifi/Radio.h b/shared-bindings/wifi/Radio.h index 4c46205179c0..6c39c5b1861a 100644 --- a/shared-bindings/wifi/Radio.h +++ b/shared-bindings/wifi/Radio.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_RADIO_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_RADIO_H +#pragma once #include @@ -110,5 +109,3 @@ extern void common_hal_wifi_radio_set_ipv4_address(wifi_radio_obj_t *self, mp_ob extern void common_hal_wifi_radio_set_ipv4_address_ap(wifi_radio_obj_t *self, mp_obj_t ipv4, mp_obj_t netmask, mp_obj_t gateway); extern mp_int_t common_hal_wifi_radio_ping(wifi_radio_obj_t *self, mp_obj_t ip_address, mp_float_t timeout); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_RADIO_H diff --git a/shared-bindings/wifi/ScannedNetworks.h b/shared-bindings/wifi/ScannedNetworks.h index 0ecab5a42a72..8c4135c5bcaf 100644 --- a/shared-bindings/wifi/ScannedNetworks.h +++ b/shared-bindings/wifi/ScannedNetworks.h @@ -6,8 +6,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_SCANNEDNETWORKS_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_SCANNEDNETWORKS_H +#pragma once #include "py/obj.h" #include "common-hal/wifi/ScannedNetworks.h" @@ -15,5 +14,3 @@ extern const mp_obj_type_t wifi_scannednetworks_type; mp_obj_t common_hal_wifi_scannednetworks_next(wifi_scannednetworks_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_WIFI_SCANNEDNETWORKS_H diff --git a/shared-bindings/wifi/__init__.h b/shared-bindings/wifi/__init__.h index f4493a2cefd5..a1a606e502c0 100644 --- a/shared-bindings/wifi/__init__.h +++ b/shared-bindings/wifi/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_WIFI___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_WIFI___INIT___H +#pragma once #include "shared-bindings/wifi/Radio.h" @@ -15,5 +14,3 @@ void common_hal_wifi_init(bool user_initiated); void common_hal_wifi_gc_collect(void); void wifi_user_reset(void); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_WIFI___INIT___H diff --git a/shared-bindings/zlib/__init__.h b/shared-bindings/zlib/__init__.h index 9e2146e0e2b9..7fb120427e24 100644 --- a/shared-bindings/zlib/__init__.h +++ b/shared-bindings/zlib/__init__.h @@ -4,9 +4,6 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ZLIB___INIT___H -#define MICROPY_INCLUDED_SHARED_BINDINGS_ZLIB___INIT___H +#pragma once mp_obj_t common_hal_zlib_decompress(mp_obj_t data, mp_int_t wbits); - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_ZLIB___INIT___H diff --git a/shared-module/_bleio/Address.h b/shared-module/_bleio/Address.h index b67c1f68f322..76e7a1177fcb 100644 --- a/shared-module/_bleio/Address.h +++ b/shared-module/_bleio/Address.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_BLEIO_ADDRESS_H -#define MICROPY_INCLUDED_SHARED_MODULE_BLEIO_ADDRESS_H +#pragma once #include "py/obj.h" @@ -17,5 +16,3 @@ typedef struct { uint8_t type; mp_obj_t bytes; // a bytes() object } bleio_address_obj_t; - -#endif // MICROPY_INCLUDED_SHARED_MODULE_BLEIO_ADDRESS_H diff --git a/shared-module/_bleio/Attribute.h b/shared-module/_bleio/Attribute.h index 1cd7bce5881b..e527b879318a 100644 --- a/shared-module/_bleio/Attribute.h +++ b/shared-module/_bleio/Attribute.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_BLEIO_ATTRIBUTE_H -#define MICROPY_INCLUDED_SHARED_MODULE_BLEIO_ATTRIBUTE_H +#pragma once // BLE security modes: 0x typedef enum { @@ -17,5 +16,3 @@ typedef enum { SECURITY_MODE_SIGNED_NO_MITM = 0x12, SECURITY_MODE_SIGNED_WITH_MITM = 0x22, } bleio_attribute_security_mode_t; - -#endif // MICROPY_INCLUDED_SHARED_MODULE_BLEIO_ATTRIBUTE_H diff --git a/shared-module/_bleio/Characteristic.h b/shared-module/_bleio/Characteristic.h index 36d399702dd2..9bd568564b10 100644 --- a/shared-module/_bleio/Characteristic.h +++ b/shared-module/_bleio/Characteristic.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_BLEIO_CHARACTERISTIC_H -#define MICROPY_INCLUDED_SHARED_MODULE_BLEIO_CHARACTERISTIC_H +#pragma once // These are not the Bluetooth spec values. They are what is used by the Nordic SoftDevice. // The bit values are in different positions. @@ -32,5 +31,3 @@ typedef uint8_t bleio_characteristic_properties_t; #define BT_GATT_CHRC_INDICATE 0x20 #define BT_GATT_CHRC_AUTH 0x40 #define BT_GATT_CHRC_EXT_PROP 0x80 - -#endif // MICROPY_INCLUDED_SHARED_MODULE_BLEIO_CHARACTERISTIC_H diff --git a/shared-module/_bleio/ScanEntry.h b/shared-module/_bleio/ScanEntry.h index 80039d092bbc..2a352813a969 100644 --- a/shared-module/_bleio/ScanEntry.h +++ b/shared-module/_bleio/ScanEntry.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_BLEIO_SCANENTRY_H -#define MICROPY_INCLUDED_SHARED_MODULE_BLEIO_SCANENTRY_H +#pragma once #include "py/obj.h" #include "py/objstr.h" @@ -23,5 +22,3 @@ typedef struct { } bleio_scanentry_obj_t; bool bleio_scanentry_data_matches(const uint8_t *data, size_t len, const uint8_t *prefixes, size_t prefix_length, bool any); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_BLEIO_SCANENTRY_H diff --git a/shared-module/_bleio/ScanResults.h b/shared-module/_bleio/ScanResults.h index 51474fa69587..1f47a5941ca4 100644 --- a/shared-module/_bleio/ScanResults.h +++ b/shared-module/_bleio/ScanResults.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_BLEIO_SCANRESULTS_H -#define MICROPY_INCLUDED_SHARED_MODULE_BLEIO_SCANRESULTS_H +#pragma once #include @@ -40,5 +39,3 @@ void shared_module_bleio_scanresults_append(bleio_scanresults_obj_t *self, uint8_t addr_type, const uint8_t *data, uint16_t len); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_BLEIO_SCANRESULTS_H diff --git a/shared-module/_eve/__init__.h b/shared-module/_eve/__init__.h index 27269e96c478..227fe8fc935e 100644 --- a/shared-module/_eve/__init__.h +++ b/shared-module/_eve/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE__EVE___INIT___H -#define MICROPY_INCLUDED_SHARED_MODULE__EVE___INIT___H +#pragma once typedef struct _common_hal__eve_t { mp_obj_t dest[3]; // Own 'write' method, plus argument @@ -13,5 +12,3 @@ typedef struct _common_hal__eve_t { size_t n; // Current size of command buffer uint8_t buf[512]; // Command buffer } common_hal__eve_t; - -#endif // MICROPY_INCLUDED_SHARED_MODULE__EVE___INIT___H diff --git a/shared-module/_stage/Layer.h b/shared-module/_stage/Layer.h index bfe232310128..3776a6622541 100644 --- a/shared-module/_stage/Layer.h +++ b/shared-module/_stage/Layer.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE__STAGE_LAYER_H -#define MICROPY_INCLUDED_SHARED_MODULE__STAGE_LAYER_H +#pragma once #include #include @@ -24,5 +23,3 @@ typedef struct { } layer_obj_t; uint16_t get_layer_pixel(layer_obj_t *layer, int16_t x, int16_t y); - -#endif // MICROPY_INCLUDED_SHARED_MODULE__STAGE_LAYER diff --git a/shared-module/_stage/Text.h b/shared-module/_stage/Text.h index 6db600a1078c..2173e238ca76 100644 --- a/shared-module/_stage/Text.h +++ b/shared-module/_stage/Text.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE__STAGE_TEXT_H -#define MICROPY_INCLUDED_SHARED_MODULE__STAGE_TEXT_H +#pragma once #include #include @@ -22,5 +21,3 @@ typedef struct { } text_obj_t; uint16_t get_text_pixel(text_obj_t *text, int16_t x, int16_t y); - -#endif // MICROPY_INCLUDED_SHARED_MODULE__STAGE_TEXT diff --git a/shared-module/adafruit_bus_device/i2c_device/I2CDevice.h b/shared-module/adafruit_bus_device/i2c_device/I2CDevice.h index 538a9fe027a2..c0af39536f2e 100644 --- a/shared-module/adafruit_bus_device/i2c_device/I2CDevice.h +++ b/shared-module/adafruit_bus_device/i2c_device/I2CDevice.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_SHARED_MODULE_BUSDEVICE_I2CDEVICE_H -#define MICROPY_INCLUDED_ATMEL_SAMD_SHARED_MODULE_BUSDEVICE_I2CDEVICE_H +#pragma once #include "py/obj.h" #include "common-hal/busio/I2C.h" @@ -15,5 +14,3 @@ typedef struct { mp_obj_t *i2c; uint8_t device_address; } adafruit_bus_device_i2cdevice_obj_t; - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_SHARED_MODULE_BUSDEVICE_I2CDEVICE_H diff --git a/shared-module/adafruit_bus_device/spi_device/SPIDevice.h b/shared-module/adafruit_bus_device/spi_device/SPIDevice.h index 8c86cdef84d2..73c0676d08a8 100644 --- a/shared-module/adafruit_bus_device/spi_device/SPIDevice.h +++ b/shared-module/adafruit_bus_device/spi_device/SPIDevice.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_SHARED_MODULE_BUSDEVICE_SPIDEVICE_H -#define MICROPY_INCLUDED_ATMEL_SAMD_SHARED_MODULE_BUSDEVICE_SPIDEVICE_H +#pragma once #include "py/obj.h" #include "common-hal/busio/SPI.h" @@ -21,5 +20,3 @@ typedef struct { digitalio_digitalinout_obj_t *chip_select; bool cs_active_value; } adafruit_bus_device_spidevice_obj_t; - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_SHARED_MODULE_BUSDEVICE_SPIDEVICE_H diff --git a/shared-module/aesio/__init__.h b/shared-module/aesio/__init__.h index 21445e1b73c0..aaf761087ee4 100644 --- a/shared-module/aesio/__init__.h +++ b/shared-module/aesio/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_AESIO__INIT__H -#define MICROPY_INCLUDED_SHARED_MODULE_AESIO__INIT__H +#pragma once #include #include @@ -35,5 +34,3 @@ typedef struct { // Counter for running in CTR mode uint32_t counter; } aesio_aes_obj_t; - -#endif // MICROPY_INCLUDED_SHARED_MODULE_AESIO__INIT__H diff --git a/shared-module/aesio/aes.h b/shared-module/aesio/aes.h index b248ce2eb01b..d46699098d01 100644 --- a/shared-module/aesio/aes.h +++ b/shared-module/aesio/aes.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef _AES_H_ -#define _AES_H_ +#pragma once #include @@ -106,6 +105,3 @@ void AES_CBC_decrypt_buffer(struct AES_ctx *ctx, uint8_t *buf, uint32_t length); void AES_CTR_xcrypt_buffer(struct AES_ctx *ctx, uint8_t *buf, uint32_t length); #endif // #if defined(CTR) && (CTR == 1) - - -#endif // _AES_H_ diff --git a/shared-module/atexit/__init__.h b/shared-module/atexit/__init__.h index dffb2293ab6f..316e41042c82 100644 --- a/shared-module/atexit/__init__.h +++ b/shared-module/atexit/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_ATEXIT___INIT___H -#define MICROPY_INCLUDED_SHARED_MODULE_ATEXIT___INIT___H +#pragma once #include "py/obj.h" #include "shared/runtime/pyexec.h" @@ -22,5 +21,3 @@ extern void shared_module_atexit_register(mp_obj_t *func, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args); extern void shared_module_atexit_unregister(const mp_obj_t *func); extern void shared_module_atexit_execute(pyexec_result_t *result); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_ATEXIT___INIT___H diff --git a/shared-module/audiocore/RawSample.h b/shared-module/audiocore/RawSample.h index b3179a47d025..343cd0bfe848 100644 --- a/shared-module/audiocore/RawSample.h +++ b/shared-module/audiocore/RawSample.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_AUDIOIO_RAWSAMPLE_H -#define MICROPY_INCLUDED_SHARED_MODULE_AUDIOIO_RAWSAMPLE_H +#pragma once #include "py/obj.h" @@ -34,5 +33,3 @@ audioio_get_buffer_result_t audioio_rawsample_get_buffer(audioio_rawsample_obj_t void audioio_rawsample_get_buffer_structure(audioio_rawsample_obj_t *self, bool single_channel_output, bool *single_buffer, bool *samples_signed, uint32_t *max_buffer_length, uint8_t *spacing); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_AUDIOIO_RAWSAMPLE_H diff --git a/shared-module/audiocore/WaveFile.h b/shared-module/audiocore/WaveFile.h index d1b9acd008b7..a86c1409abc9 100644 --- a/shared-module/audiocore/WaveFile.h +++ b/shared-module/audiocore/WaveFile.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_AUDIOIO_WAVEFILE_H -#define MICROPY_INCLUDED_SHARED_MODULE_AUDIOIO_WAVEFILE_H +#pragma once #include "extmod/vfs_fat.h" #include "py/obj.h" @@ -47,5 +46,3 @@ audioio_get_buffer_result_t audioio_wavefile_get_buffer(audioio_wavefile_obj_t * void audioio_wavefile_get_buffer_structure(audioio_wavefile_obj_t *self, bool single_channel_output, bool *single_buffer, bool *samples_signed, uint32_t *max_buffer_length, uint8_t *spacing); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_AUDIOIO_WAVEFILE_H diff --git a/shared-module/audiocore/__init__.h b/shared-module/audiocore/__init__.h index 7888a46d5cae..0e5b38d7b144 100644 --- a/shared-module/audiocore/__init__.h +++ b/shared-module/audiocore/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_AUDIOCORE__INIT__H -#define MICROPY_INCLUDED_SHARED_MODULE_AUDIOCORE__INIT__H +#pragma once #include #include @@ -61,5 +60,3 @@ void audiosample_convert_s8s_s16s(int16_t *buffer_out, const int8_t *buffer_in, void audiosample_convert_u16m_s16s(int16_t *buffer_out, const uint16_t *buffer_in, size_t nframes); void audiosample_convert_u16s_s16s(int16_t *buffer_out, const uint16_t *buffer_in, size_t nframes); void audiosample_convert_s16m_s16s(int16_t *buffer_out, const int16_t *buffer_in, size_t nframes); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_AUDIOCORE__INIT__H diff --git a/shared-module/audioio/__init__.h b/shared-module/audioio/__init__.h index edc15700a1d1..ca404d7b930f 100644 --- a/shared-module/audioio/__init__.h +++ b/shared-module/audioio/__init__.h @@ -4,9 +4,6 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_AUDIOIO__INIT__H -#define MICROPY_INCLUDED_SHARED_MODULE_AUDIOIO__INIT__H +#pragma once #include "shared-module/audiocore/__init__.h" - -#endif // MICROPY_INCLUDED_SHARED_MODULE_AUDIOIO__INIT__H diff --git a/shared-module/audiomixer/Mixer.h b/shared-module/audiomixer/Mixer.h index ec21546397a5..771b3969719c 100644 --- a/shared-module/audiomixer/Mixer.h +++ b/shared-module/audiomixer/Mixer.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_AUDIOMIXER_MIXER_H -#define MICROPY_INCLUDED_SHARED_MODULE_AUDIOMIXER_MIXER_H +#pragma once #include "py/obj.h" #include "py/objtuple.h" @@ -45,5 +44,3 @@ audioio_get_buffer_result_t audiomixer_mixer_get_buffer(audiomixer_mixer_obj_t * void audiomixer_mixer_get_buffer_structure(audiomixer_mixer_obj_t *self, bool single_channel_output, bool *single_buffer, bool *samples_signed, uint32_t *max_buffer_length, uint8_t *spacing); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_AUDIOMIXER_MIXER_H diff --git a/shared-module/audiomixer/MixerVoice.h b/shared-module/audiomixer/MixerVoice.h index 2a272755cc74..ad70f64b6e16 100644 --- a/shared-module/audiomixer/MixerVoice.h +++ b/shared-module/audiomixer/MixerVoice.h @@ -3,8 +3,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2018 DeanM for Adafruit Industries // // SPDX-License-Identifier: MIT -#ifndef SHARED_MODULE_AUDIOMIXER_MIXERVOICE_H_ -#define SHARED_MODULE_AUDIOMIXER_MIXERVOICE_H_ +#pragma once #include "py/obj.h" @@ -21,6 +20,3 @@ typedef struct { uint32_t buffer_length; uint16_t level; } audiomixer_mixervoice_obj_t; - - -#endif /* SHARED_MODULE_AUDIOMIXER_MIXERVOICE_H_ */ diff --git a/shared-module/audiomixer/__init__.h b/shared-module/audiomixer/__init__.h index 1a9dad492e9f..ca404d7b930f 100644 --- a/shared-module/audiomixer/__init__.h +++ b/shared-module/audiomixer/__init__.h @@ -4,9 +4,6 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_AUDIOMIXER__INIT__H -#define MICROPY_INCLUDED_SHARED_MODULE_AUDIOMIXER__INIT__H +#pragma once #include "shared-module/audiocore/__init__.h" - -#endif // MICROPY_INCLUDED_SHARED_MODULE_AUDIOMIXER__INIT__H diff --git a/shared-module/audiomp3/MP3Decoder.h b/shared-module/audiomp3/MP3Decoder.h index c4fa8ac61de2..726974c2641e 100644 --- a/shared-module/audiomp3/MP3Decoder.h +++ b/shared-module/audiomp3/MP3Decoder.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_AUDIOIO_MP3FILE_H -#define MICROPY_INCLUDED_SHARED_MODULE_AUDIOIO_MP3FILE_H +#pragma once #include "supervisor/background_callback.h" #include "extmod/vfs_fat.h" @@ -54,5 +53,3 @@ void audiomp3_mp3file_get_buffer_structure(audiomp3_mp3file_obj_t *self, bool si float audiomp3_mp3file_get_rms_level(audiomp3_mp3file_obj_t *self); uint32_t common_hal_audiomp3_mp3file_get_samples_decoded(audiomp3_mp3file_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_AUDIOIO_MP3FILE_H diff --git a/shared-module/audiopwmio/__init__.h b/shared-module/audiopwmio/__init__.h index 9aa04ce0d2ce..ca404d7b930f 100644 --- a/shared-module/audiopwmio/__init__.h +++ b/shared-module/audiopwmio/__init__.h @@ -4,9 +4,6 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_AUDIOPWMIO__INIT__H -#define MICROPY_INCLUDED_SHARED_MODULE_AUDIOPWMIO__INIT__H +#pragma once #include "shared-module/audiocore/__init__.h" - -#endif // MICROPY_INCLUDED_SHARED_MODULE_AUDIOPWMIO__INIT__H diff --git a/shared-module/bitbangio/I2C.h b/shared-module/bitbangio/I2C.h index a15d29f41fdd..3908a3dd3740 100644 --- a/shared-module/bitbangio/I2C.h +++ b/shared-module/bitbangio/I2C.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_BITBANGIO_I2C_H -#define MICROPY_INCLUDED_SHARED_MODULE_BITBANGIO_I2C_H +#pragma once #include "common-hal/digitalio/DigitalInOut.h" @@ -19,5 +18,3 @@ typedef struct { uint32_t us_timeout; volatile bool locked; } bitbangio_i2c_obj_t; - -#endif // MICROPY_INCLUDED_SHARED_MODULE_BITBANGIO_I2C_H diff --git a/shared-module/bitbangio/SPI.h b/shared-module/bitbangio/SPI.h index dcb760f222e5..c19170af7c46 100644 --- a/shared-module/bitbangio/SPI.h +++ b/shared-module/bitbangio/SPI.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_BITBANGIO_SPI_H -#define MICROPY_INCLUDED_SHARED_MODULE_BITBANGIO_SPI_H +#pragma once #include "common-hal/digitalio/DigitalInOut.h" @@ -23,5 +22,3 @@ typedef struct { uint8_t phase : 1; volatile bool locked : 1; } bitbangio_spi_obj_t; - -#endif // MICROPY_INCLUDED_SHARED_MODULE_BITBANGIO_SPI_H diff --git a/shared-module/board/__init__.h b/shared-module/board/__init__.h index c51533e9b3ec..a179478cd712 100644 --- a/shared-module/board/__init__.h +++ b/shared-module/board/__init__.h @@ -4,9 +4,6 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_BOARD__INIT__H -#define MICROPY_INCLUDED_SHARED_MODULE_BOARD__INIT__H +#pragma once void reset_board_buses(void); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_BOARD__INIT__H diff --git a/shared-module/displayio/Bitmap.h b/shared-module/displayio/Bitmap.h index 1861ee54e30a..a4a57587207d 100644 --- a/shared-module/displayio/Bitmap.h +++ b/shared-module/displayio/Bitmap.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_BITMAP_H -#define MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_BITMAP_H +#pragma once #include #include @@ -32,5 +31,3 @@ void displayio_bitmap_finish_refresh(displayio_bitmap_t *self); displayio_area_t *displayio_bitmap_get_refresh_areas(displayio_bitmap_t *self, displayio_area_t *tail); void displayio_bitmap_set_dirty_area(displayio_bitmap_t *self, const displayio_area_t *area); void displayio_bitmap_write_pixel(displayio_bitmap_t *self, int16_t x, int16_t y, uint32_t value); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_BITMAP_H diff --git a/shared-module/displayio/ColorConverter.h b/shared-module/displayio/ColorConverter.h index e62a86e361c0..60efc132f9ae 100644 --- a/shared-module/displayio/ColorConverter.h +++ b/shared-module/displayio/ColorConverter.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_COLORCONVERTER_H -#define MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_COLORCONVERTER_H +#pragma once #include #include @@ -44,5 +43,3 @@ uint8_t displayio_colorconverter_compute_chroma(uint32_t color_rgb888); uint8_t displayio_colorconverter_compute_hue(uint32_t color_rgb888); uint8_t displayio_colorconverter_compute_sevencolor(uint32_t color_rgb888); void displayio_colorconverter_compute_tricolor(const _displayio_colorspace_t *colorspace, uint8_t pixel_hue, uint32_t *color); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_COLORCONVERTER_H diff --git a/shared-module/displayio/Group.h b/shared-module/displayio/Group.h index a7336c4fb1ee..9ff6c7dca0f5 100644 --- a/shared-module/displayio/Group.h +++ b/shared-module/displayio/Group.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_GROUP_H -#define MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_GROUP_H +#pragma once #include #include @@ -38,5 +37,3 @@ bool displayio_group_fill_area(displayio_group_t *group, const _displayio_colors void displayio_group_update_transform(displayio_group_t *group, const displayio_buffer_transform_t *parent_transform); void displayio_group_finish_refresh(displayio_group_t *self); displayio_area_t *displayio_group_get_refresh_areas(displayio_group_t *self, displayio_area_t *tail); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_GROUP_H diff --git a/shared-module/displayio/OnDiskBitmap.h b/shared-module/displayio/OnDiskBitmap.h index 68421bb4fce8..6fe5b880cd61 100644 --- a/shared-module/displayio/OnDiskBitmap.h +++ b/shared-module/displayio/OnDiskBitmap.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_ONDISKBITMAP_H -#define MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_ONDISKBITMAP_H +#pragma once #include #include @@ -32,5 +31,3 @@ typedef struct { bool bitfield_compressed; uint8_t bits_per_pixel; } displayio_ondiskbitmap_t; - -#endif // MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_ONDISKBITMAP_H diff --git a/shared-module/displayio/Palette.h b/shared-module/displayio/Palette.h index be3eaf80e605..092b934b66a2 100644 --- a/shared-module/displayio/Palette.h +++ b/shared-module/displayio/Palette.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_PALETTE_H -#define MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_PALETTE_H +#pragma once #include #include @@ -63,5 +62,3 @@ void displayio_palette_get_color(displayio_palette_t *palette, const _displayio_ ; bool displayio_palette_needs_refresh(displayio_palette_t *self); void displayio_palette_finish_refresh(displayio_palette_t *self); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_PALLETE_H diff --git a/shared-module/displayio/Shape.h b/shared-module/displayio/Shape.h index 65273e2cb364..20ee182023fe 100644 --- a/shared-module/displayio/Shape.h +++ b/shared-module/displayio/Shape.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_SHAPE_H -#define MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_SHAPE_H +#pragma once #include #include @@ -27,5 +26,3 @@ typedef struct { void displayio_shape_finish_refresh(displayio_shape_t *self); displayio_area_t *displayio_shape_get_refresh_areas(displayio_shape_t *self, displayio_area_t *tail); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_SHAPE_H diff --git a/shared-module/displayio/TileGrid.h b/shared-module/displayio/TileGrid.h index afccc73722cc..c9c31696bf8f 100644 --- a/shared-module/displayio/TileGrid.h +++ b/shared-module/displayio/TileGrid.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_TILEGRID_H -#define MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_TILEGRID_H +#pragma once #include #include @@ -68,5 +67,3 @@ bool displayio_tilegrid_get_previous_area(displayio_tilegrid_t *self, displayio_ void displayio_tilegrid_finish_refresh(displayio_tilegrid_t *self); bool displayio_tilegrid_get_rendered_hidden(displayio_tilegrid_t *self); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_TILEGRID_H diff --git a/shared-module/displayio/area.h b/shared-module/displayio/area.h index 29646ddf8155..eed54613a5a4 100644 --- a/shared-module/displayio/area.h +++ b/shared-module/displayio/area.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_AREA_H -#define MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_AREA_H +#pragma once #include #include @@ -56,5 +55,3 @@ void displayio_area_transform_within(bool mirror_x, bool mirror_y, bool transpos const displayio_area_t *original, const displayio_area_t *whole, displayio_area_t *transformed); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_AREA_H diff --git a/shared-module/displayio/mipi_constants.h b/shared-module/displayio/mipi_constants.h index 30992a807d14..46832f76e7a4 100644 --- a/shared-module/displayio/mipi_constants.h +++ b/shared-module/displayio/mipi_constants.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_MIPI_CONSTANTS_H -#define MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_MIPI_CONSTANTS_H +#pragma once // More info here: https://www.tonylabs.com/wp-content/uploads/MIPI_DCS_specification_v1.02.00.pdf enum mipi_command { @@ -13,5 +12,3 @@ enum mipi_command { MIPI_COMMAND_SET_PAGE_ADDRESS = 0x2b, MIPI_COMMAND_WRITE_MEMORY_START = 0x2c, }; - -#endif // MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_MIPI_CONSTANTS_H diff --git a/shared-module/fontio/BuiltinFont.h b/shared-module/fontio/BuiltinFont.h index 61deb09ffb1d..2e9ddd52a500 100644 --- a/shared-module/fontio/BuiltinFont.h +++ b/shared-module/fontio/BuiltinFont.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_FONTIO_BUILTINFONT_H -#define MICROPY_INCLUDED_SHARED_MODULE_FONTIO_BUILTINFONT_H +#pragma once #include #include @@ -23,5 +22,3 @@ typedef struct { } fontio_builtinfont_t; uint8_t fontio_builtinfont_get_glyph_index(const fontio_builtinfont_t *self, mp_uint_t codepoint); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_FONTIO_BUILTINFONT_H diff --git a/shared-module/framebufferio/FramebufferDisplay.h b/shared-module/framebufferio/FramebufferDisplay.h index eb3875881471..871d34abcbe3 100644 --- a/shared-module/framebufferio/FramebufferDisplay.h +++ b/shared-module/framebufferio/FramebufferDisplay.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_FRAMEBUFFERDISPLAY_H -#define MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_FRAMEBUFFERDISPLAY_H +#pragma once #include "py/obj.h" #include "py/proto.h" @@ -82,5 +81,3 @@ typedef struct _framebuffer_p_t { framebuffer_set_brightness_fun set_brightness; } framebuffer_p_t; - -#endif // MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_FRAMEBUFFERDISPLAY_H diff --git a/shared-module/getpass/__init__.h b/shared-module/getpass/__init__.h index 96a1d3b0051c..0fe91c16f8d0 100644 --- a/shared-module/getpass/__init__.h +++ b/shared-module/getpass/__init__.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_GETPASS___INIT___H -#define MICROPY_INCLUDED_SHARED_MODULE_GETPASS___INIT___H +#pragma once #include "py/runtime.h" extern mp_obj_t shared_module_getpass_getpass(const char *prompt, mp_print_t *print); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_GETPASS___INIT___H diff --git a/shared-module/gifio/OnDiskGif.h b/shared-module/gifio/OnDiskGif.h index b3bcb390b684..ee9c40ad33a0 100644 --- a/shared-module/gifio/OnDiskGif.h +++ b/shared-module/gifio/OnDiskGif.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_ONDISKGIF_H -#define MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_ONDISKGIF_H +#pragma once #include #include @@ -29,5 +28,3 @@ typedef struct { int32_t min_delay; int32_t max_delay; } gifio_ondiskgif_t; - -#endif // MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_ONDISKGIF_H diff --git a/shared-module/ipaddress/IPv4Address.h b/shared-module/ipaddress/IPv4Address.h index a0d3a220ae38..f0f96e6f3486 100644 --- a/shared-module/ipaddress/IPv4Address.h +++ b/shared-module/ipaddress/IPv4Address.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_IPADDRESS_IPV4ADDRESS_H -#define MICROPY_INCLUDED_SHARED_MODULE_IPADDRESS_IPV4ADDRESS_H +#pragma once #include "py/obj.h" @@ -13,5 +12,3 @@ typedef struct { mp_obj_base_t base; mp_obj_t ip_bytes; } ipaddress_ipv4address_obj_t; - -#endif // MICROPY_INCLUDED_SHARED_MODULE_IPADDRESS_IPV4ADDRESS_H diff --git a/shared-module/ipaddress/__init__.h b/shared-module/ipaddress/__init__.h index cd5b996dd0ea..d82c4600b6a3 100644 --- a/shared-module/ipaddress/__init__.h +++ b/shared-module/ipaddress/__init__.h @@ -4,13 +4,10 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_IPADDRESS___INIT___H -#define MICROPY_INCLUDED_SHARED_MODULE_IPADDRESS___INIT___H +#pragma once #include #include "py/obj.h" mp_obj_t common_hal_ipaddress_new_ipv4(uint32_t value); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_IPADDRESS___INIT___H diff --git a/shared-module/keypad/Event.h b/shared-module/keypad/Event.h index b7e004f443d9..62efd7e16371 100644 --- a/shared-module/keypad/Event.h +++ b/shared-module/keypad/Event.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_EVENT_H -#define MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_EVENT_H +#pragma once #include "py/obj.h" @@ -15,6 +14,3 @@ typedef struct { bool pressed; mp_obj_t timestamp; } keypad_event_obj_t; - - -#endif // MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_EVENT_H diff --git a/shared-module/keypad/EventQueue.h b/shared-module/keypad/EventQueue.h index 4477497c6e2a..c0902082f870 100644 --- a/shared-module/keypad/EventQueue.h +++ b/shared-module/keypad/EventQueue.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_EVENTQUEUE_H -#define MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_EVENTQUEUE_H +#pragma once #include "py/obj.h" #include "py/ringbuf.h" @@ -20,5 +19,3 @@ struct _keypad_eventqueue_obj_t { }; bool keypad_eventqueue_record(keypad_eventqueue_obj_t *self, mp_uint_t key_number, bool pressed, mp_obj_t timestamp); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_EVENTQUEUE_H diff --git a/shared-module/keypad/KeyMatrix.h b/shared-module/keypad/KeyMatrix.h index cef5a5a9e36c..f743d637b171 100644 --- a/shared-module/keypad/KeyMatrix.h +++ b/shared-module/keypad/KeyMatrix.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_KEYMATRIX_H -#define MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_KEYMATRIX_H +#pragma once #include "py/obj.h" #include "py/objtuple.h" @@ -22,5 +21,3 @@ typedef struct { } keypad_keymatrix_obj_t; void keypad_keymatrix_scan(keypad_keymatrix_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_KEYMATRIX_H diff --git a/shared-module/keypad/Keys.h b/shared-module/keypad/Keys.h index f8f382923040..81e448f0adf7 100644 --- a/shared-module/keypad/Keys.h +++ b/shared-module/keypad/Keys.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_KEYS_H -#define MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_KEYS_H +#pragma once #include "py/obj.h" #include "py/objtuple.h" @@ -21,5 +20,3 @@ typedef struct { } keypad_keys_obj_t; void keypad_keys_scan(keypad_keys_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_KEYS_H diff --git a/shared-module/keypad/ShiftRegisterKeys.h b/shared-module/keypad/ShiftRegisterKeys.h index b8d5c74a328f..f0d5fa10f9e7 100644 --- a/shared-module/keypad/ShiftRegisterKeys.h +++ b/shared-module/keypad/ShiftRegisterKeys.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_SHIFTREGISTERKEYS_H -#define MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_SHIFTREGISTERKEYS_H +#pragma once #include "py/obj.h" #include "py/objtuple.h" @@ -27,5 +26,3 @@ typedef struct { } keypad_shiftregisterkeys_obj_t; void keypad_shiftregisterkeys_scan(keypad_shiftregisterkeys_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_SHIFTREGISTERKEYS_H diff --git a/shared-module/keypad/__init__.h b/shared-module/keypad/__init__.h index 0bc6f16599f8..a7d21753f662 100644 --- a/shared-module/keypad/__init__.h +++ b/shared-module/keypad/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef SHARED_MODULE_KEYPAD_H -#define SHARED_MODULE_KEYPAD_H +#pragma once #include "py/obj.h" #include "supervisor/shared/lock.h" @@ -46,5 +45,3 @@ void keypad_never_reset(keypad_scanner_obj_t *self); size_t common_hal_keypad_generic_get_key_count(void *scanner); void common_hal_keypad_deinit_core(void *scanner); - -#endif // SHARED_MODULE_KEYPAD_H diff --git a/shared-module/keypad_demux/DemuxKeyMatrix.h b/shared-module/keypad_demux/DemuxKeyMatrix.h index 583e05fa8a5e..45afa93a8442 100644 --- a/shared-module/keypad_demux/DemuxKeyMatrix.h +++ b/shared-module/keypad_demux/DemuxKeyMatrix.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_DEMUX_DEMUXKEYMATRIX_H -#define MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_DEMUX_DEMUXKEYMATRIX_H +#pragma once #include "py/obj.h" #include "py/objtuple.h" @@ -22,5 +21,3 @@ typedef struct { void keypad_demux_demuxkeymatrix_scan(keypad_demux_demuxkeymatrix_obj_t *self); void demuxkeymatrix_never_reset(keypad_demux_demuxkeymatrix_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_KEYPAD_DEMUX_DEMUXKEYMATRIX_H diff --git a/shared-module/memorymonitor/AllocationAlarm.h b/shared-module/memorymonitor/AllocationAlarm.h index b106e76b09c3..84730991b7dc 100644 --- a/shared-module/memorymonitor/AllocationAlarm.h +++ b/shared-module/memorymonitor/AllocationAlarm.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_MEMORYMONITOR_ALLOCATIONALARM_H -#define MICROPY_INCLUDED_SHARED_MODULE_MEMORYMONITOR_ALLOCATIONALARM_H +#pragma once #include #include @@ -27,5 +26,3 @@ typedef struct _memorymonitor_allocationalarm_obj_t { void memorymonitor_allocationalarms_allocation(size_t block_count); void memorymonitor_allocationalarms_reset(void); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_MEMORYMONITOR_ALLOCATIONALARM_H diff --git a/shared-module/memorymonitor/AllocationSize.h b/shared-module/memorymonitor/AllocationSize.h index c4a2255b7323..b5ae6dcee5a3 100644 --- a/shared-module/memorymonitor/AllocationSize.h +++ b/shared-module/memorymonitor/AllocationSize.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_MEMORYMONITOR_ALLOCATIONSIZE_H -#define MICROPY_INCLUDED_SHARED_MODULE_MEMORYMONITOR_ALLOCATIONSIZE_H +#pragma once #include #include @@ -27,5 +26,3 @@ typedef struct _memorymonitor_allocationsize_obj_t { void memorymonitor_allocationsizes_track_allocation(size_t block_count); void memorymonitor_allocationsizes_reset(void); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_MEMORYMONITOR_ALLOCATIONSIZE_H diff --git a/shared-module/memorymonitor/__init__.h b/shared-module/memorymonitor/__init__.h index 38849b857200..936dfe188d4e 100644 --- a/shared-module/memorymonitor/__init__.h +++ b/shared-module/memorymonitor/__init__.h @@ -4,12 +4,9 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_MEMORYMONITOR___INIT___H -#define MICROPY_INCLUDED_MEMORYMONITOR___INIT___H +#pragma once #include void memorymonitor_track_allocation(size_t block_count); void memorymonitor_reset(void); - -#endif // MICROPY_INCLUDED_MEMORYMONITOR___INIT___H diff --git a/shared-module/msgpack/__init__.h b/shared-module/msgpack/__init__.h index ccb5a97b1501..ecdb6b1e066a 100644 --- a/shared-module/msgpack/__init__.h +++ b/shared-module/msgpack/__init__.h @@ -3,12 +3,9 @@ // SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_MSGPACK___INIT___H -#define MICROPY_INCLUDED_SHARED_MODULE_MSGPACK___INIT___H +#pragma once #include "py/stream.h" void common_hal_msgpack_pack(mp_obj_t obj, mp_obj_t stream_obj, mp_obj_t default_handler); mp_obj_t common_hal_msgpack_unpack(mp_obj_t stream_obj, mp_obj_t ext_hook, bool use_list); - -#endif diff --git a/shared-module/onewireio/OneWire.h b/shared-module/onewireio/OneWire.h index a86e209d6b19..334b1a78c40f 100644 --- a/shared-module/onewireio/OneWire.h +++ b/shared-module/onewireio/OneWire.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_ONEWIREIO_ONEWIRE_H -#define MICROPY_INCLUDED_SHARED_MODULE_ONEWIREIO_ONEWIRE_H +#pragma once #include "common-hal/digitalio/DigitalInOut.h" @@ -15,5 +14,3 @@ typedef struct { mp_obj_base_t base; digitalio_digitalinout_obj_t pin; } onewireio_onewire_obj_t; - -#endif // MICROPY_INCLUDED_SHARED_MODULE_ONEWIREIO_ONEWIRE_H diff --git a/shared-module/struct/__init__.h b/shared-module/struct/__init__.h index 9d73a73ecfeb..aa2bda21065b 100644 --- a/shared-module/struct/__init__.h +++ b/shared-module/struct/__init__.h @@ -3,11 +3,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_STRUCT___INIT___H -#define MICROPY_INCLUDED_SHARED_MODULE_STRUCT___INIT___H +#pragma once char get_fmt_type(const char **fmt); mp_uint_t get_fmt_num(const char **p); mp_uint_t calcsize_items(const char *fmt); - -#endif diff --git a/shared-module/supervisor/Runtime.h b/shared-module/supervisor/Runtime.h index 21802da0c30f..71d6fb32c327 100755 --- a/shared-module/supervisor/Runtime.h +++ b/shared-module/supervisor/Runtime.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_SUPERVISOR_RUNTIME_H -#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_SUPERVISOR_RUNTIME_H +#pragma once #include "py/obj.h" @@ -13,5 +12,3 @@ typedef struct { mp_obj_base_t base; // Stores no state currently. } super_runtime_obj_t; - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_SUPERVISOR_RUNTIME_H diff --git a/shared-module/supervisor/StatusBar.h b/shared-module/supervisor/StatusBar.h index f1c00f58fd5e..6afc94ccba39 100644 --- a/shared-module/supervisor/StatusBar.h +++ b/shared-module/supervisor/StatusBar.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_SUPERVISOR_STATUS_BAR_H -#define MICROPY_INCLUDED_SHARED_MODULE_SUPERVISOR_STATUS_BAR_H +#pragma once #include "py/obj.h" @@ -18,5 +17,3 @@ typedef struct { extern void shared_module_supervisor_status_bar_init(supervisor_status_bar_obj_t *self); extern void shared_module_supervisor_status_bar_updated(supervisor_status_bar_obj_t *self); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_SUPERVISOR_STATUS_BAR_H diff --git a/shared-module/synthio/MidiTrack.h b/shared-module/synthio/MidiTrack.h index 1358c8fe0333..816c0be69588 100644 --- a/shared-module/synthio/MidiTrack.h +++ b/shared-module/synthio/MidiTrack.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_SYNTHIO_MIDITRACK_H -#define MICROPY_INCLUDED_SHARED_MODULE_SYNTHIO_MIDITRACK_H +#pragma once #include "py/obj.h" @@ -36,5 +35,3 @@ audioio_get_buffer_result_t synthio_miditrack_get_buffer(synthio_miditrack_obj_t void synthio_miditrack_get_buffer_structure(synthio_miditrack_obj_t *self, bool single_channel_output, bool *single_buffer, bool *samples_signed, uint32_t *max_buffer_length, uint8_t *spacing); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_SYNTHIO_MIDITRACK_H diff --git a/shared-module/terminalio/Terminal.h b/shared-module/terminalio/Terminal.h index df2ee72c99d2..17230a74066c 100644 --- a/shared-module/terminalio/Terminal.h +++ b/shared-module/terminalio/Terminal.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef SHARED_MODULE_TERMINALIO_TERMINAL_H -#define SHARED_MODULE_TERMINALIO_TERMINAL_H +#pragma once #include #include @@ -29,5 +28,3 @@ typedef struct { } terminalio_terminal_obj_t; extern void terminalio_terminal_clear_status_bar(terminalio_terminal_obj_t *self); - -#endif /* SHARED_MODULE_TERMINALIO_TERMINAL_H */ diff --git a/shared-module/touchio/TouchIn.h b/shared-module/touchio/TouchIn.h index 95b17cecb47b..a03811a1823d 100644 --- a/shared-module/touchio/TouchIn.h +++ b/shared-module/touchio/TouchIn.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_TOUCHIO_TOUCHIN_H -#define MICROPY_INCLUDED_SHARED_MODULE_TOUCHIO_TOUCHIN_H +#pragma once #include "common-hal/microcontroller/Pin.h" #include "shared-bindings/digitalio/DigitalInOut.h" @@ -20,5 +19,3 @@ typedef struct { } touchio_touchin_obj_t; void touchin_reset(void); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_TOUCHIO_TOUCHIN_H diff --git a/shared-module/traceback/__init__.h b/shared-module/traceback/__init__.h index 07a758d13396..c87ae3f7b407 100644 --- a/shared-module/traceback/__init__.h +++ b/shared-module/traceback/__init__.h @@ -4,13 +4,10 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_TRACEBACK___INIT___H -#define MICROPY_INCLUDED_SHARED_MODULE_TRACEBACK___INIT___H +#pragma once #include "py/objexcept.h" #include "py/objtraceback.h" extern void shared_module_traceback_print_exception(mp_obj_exception_t *exc, mp_print_t *print, mp_int_t limit); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_TRACEBACK___INIT___H diff --git a/shared-module/usb/core/Device.h b/shared-module/usb/core/Device.h index de7c98fc6463..2b628e05cf64 100644 --- a/shared-module/usb/core/Device.h +++ b/shared-module/usb/core/Device.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_USB_CORE_DEVICE_H -#define MICROPY_INCLUDED_SHARED_MODULE_USB_CORE_DEVICE_H +#pragma once #include "py/obj.h" @@ -17,5 +16,3 @@ typedef struct { uint8_t open_endpoints[8]; uint16_t first_langid; } usb_core_device_obj_t; - -#endif // MICROPY_INCLUDED_SHARED_MODULE_USB_CORE_DEVICE_H diff --git a/shared-module/usb/utf16le.h b/shared-module/usb/utf16le.h index 82ca242087d5..c1a528ca5e6a 100644 --- a/shared-module/usb/utf16le.h +++ b/shared-module/usb/utf16le.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_USB_UTF16LE_H -#define MICROPY_INCLUDED_SHARED_MODULE_USB_UTF16LE_H +#pragma once #include "py/obj.h" mp_obj_t utf16le_to_string(const uint16_t *buf, size_t utf16_len); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_USB_UTF16LE_H diff --git a/shared-module/usb_cdc/Serial.h b/shared-module/usb_cdc/Serial.h index aa7ebab05ab7..64cf8391ac48 100644 --- a/shared-module/usb_cdc/Serial.h +++ b/shared-module/usb_cdc/Serial.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef SHARED_MODULE_USB_CDC_SERIAL_H -#define SHARED_MODULE_USB_CDC_SERIAL_H +#pragma once #include "py/obj.h" @@ -15,5 +14,3 @@ typedef struct { mp_float_t write_timeout; // if negative, wait forever. uint8_t idx; // which CDC device? } usb_cdc_serial_obj_t; - -#endif // SHARED_MODULE_USB_CDC_SERIAL_H diff --git a/shared-module/usb_cdc/__init__.h b/shared-module/usb_cdc/__init__.h index 9638e86f8cd1..33783ae68f57 100644 --- a/shared-module/usb_cdc/__init__.h +++ b/shared-module/usb_cdc/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef SHARED_MODULE_USB_CDC___INIT___H -#define SHARED_MODULE_USB_CDC___INIT___H +#pragma once #include "py/mpconfig.h" #include "py/objtuple.h" @@ -27,5 +26,3 @@ size_t usb_vendor_add_descriptor(uint8_t *descriptor_buf, descriptor_counts_t *d size_t vendor_ms_os_20_descriptor_length(void); uint8_t const *vendor_ms_os_20_descriptor(void); #endif - -#endif /* SHARED_MODULE_USB_CDC___INIT___H */ diff --git a/shared-module/usb_hid/Device.h b/shared-module/usb_hid/Device.h index eec6344dc7b1..97bf1bd9ca2c 100644 --- a/shared-module/usb_hid/Device.h +++ b/shared-module/usb_hid/Device.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef SHARED_MODULE_USB_HID_DEVICE_H -#define SHARED_MODULE_USB_HID_DEVICE_H +#pragma once #include #include @@ -35,5 +34,3 @@ extern const usb_hid_device_obj_t usb_hid_device_consumer_control_obj; void usb_hid_device_create_report_buffers(usb_hid_device_obj_t *self); extern char *custom_usb_hid_interface_name; - -#endif /* SHARED_MODULE_USB_HID_DEVICE_H */ diff --git a/shared-module/usb_hid/__init__.h b/shared-module/usb_hid/__init__.h index 5119c26d13d5..cb40006c78c0 100644 --- a/shared-module/usb_hid/__init__.h +++ b/shared-module/usb_hid/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef SHARED_MODULE_USB_HID___INIT___H -#define SHARED_MODULE_USB_HID___INIT___H +#pragma once #include "shared-module/usb_hid/Device.h" #include "supervisor/usb.h" @@ -27,5 +26,3 @@ void usb_hid_build_report_descriptor(void); bool usb_hid_get_device_with_report_id(uint8_t report_id, usb_hid_device_obj_t **device_out, size_t *id_idx_out); void usb_hid_gc_collect(void); - -#endif // SHARED_MODULE_USB_HID___INIT___H diff --git a/shared-module/usb_midi/PortIn.h b/shared-module/usb_midi/PortIn.h index 3caf1625718c..5080bb73e924 100644 --- a/shared-module/usb_midi/PortIn.h +++ b/shared-module/usb_midi/PortIn.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef SHARED_MODULE_USB_MIDI_PORTIN_H -#define SHARED_MODULE_USB_MIDI_PORTIN_H +#pragma once #include #include @@ -15,5 +14,3 @@ typedef struct { mp_obj_base_t base; } usb_midi_portin_obj_t; - -#endif /* SHARED_MODULE_USB_MIDI_PORTIN_H */ diff --git a/shared-module/usb_midi/PortOut.h b/shared-module/usb_midi/PortOut.h index 196fc9f600a5..2615c5a9ee57 100644 --- a/shared-module/usb_midi/PortOut.h +++ b/shared-module/usb_midi/PortOut.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef SHARED_MODULE_USB_MIDI_PORTOUT_H -#define SHARED_MODULE_USB_MIDI_PORTOUT_H +#pragma once #include #include @@ -15,5 +14,3 @@ typedef struct { mp_obj_base_t base; } usb_midi_portout_obj_t; - -#endif /* SHARED_MODULE_USB_MIDI_PORTOUT_H */ diff --git a/shared-module/usb_midi/__init__.h b/shared-module/usb_midi/__init__.h index 80402fddf87a..73ebc317992f 100644 --- a/shared-module/usb_midi/__init__.h +++ b/shared-module/usb_midi/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef SHARED_MODULE_USB_MIDI___INIT___H -#define SHARED_MODULE_USB_MIDI___INIT___H +#pragma once #include "supervisor/usb.h" @@ -20,5 +19,3 @@ extern char *custom_usb_midi_streaming_interface_name; extern char *custom_usb_midi_audio_control_interface_name; extern char *custom_usb_midi_in_jack_name; extern char *custom_usb_midi_out_jack_name; - -#endif /* SHARED_MODULE_USB_MIDI___INIT___H */ diff --git a/shared-module/usb_video/uvc_usb_descriptors.h b/shared-module/usb_video/uvc_usb_descriptors.h index 808107a9af0b..ad9e5470cdc2 100644 --- a/shared-module/usb_video/uvc_usb_descriptors.h +++ b/shared-module/usb_video/uvc_usb_descriptors.h @@ -5,8 +5,7 @@ // // SPDX-License-Identifier: MIT -#ifndef _USB_DESCRIPTORS_H_ -#define _USB_DESCRIPTORS_H_ +#pragma once #include "class/video/video.h" @@ -243,6 +242,3 @@ TUD_VIDEO_DESC_CS_VS_COLOR_MATCHING(VIDEO_COLOR_PRIMARIES_BT709, VIDEO_COLOR_XFER_CH_BT709, VIDEO_COLOR_COEF_SMPTE170M), \ /* EP */ \ TUD_VIDEO_DESC_EP_BULK(_epin, _epsize, 1) - - -#endif diff --git a/shared-module/vectorio/Circle.h b/shared-module/vectorio/Circle.h index 0536a9ba57b6..48d20b28d5cd 100644 --- a/shared-module/vectorio/Circle.h +++ b/shared-module/vectorio/Circle.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_CIRCLE_H -#define MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_CIRCLE_H +#pragma once #include @@ -20,5 +19,3 @@ typedef struct { vectorio_event_t on_dirty; mp_obj_t draw_protocol_instance; } vectorio_circle_t; - -#endif // MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_CIRCLE_H diff --git a/shared-module/vectorio/Polygon.h b/shared-module/vectorio/Polygon.h index c1eb3f3b67d7..ea11109db731 100644 --- a/shared-module/vectorio/Polygon.h +++ b/shared-module/vectorio/Polygon.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_POLYGON_H -#define MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_POLYGON_H +#pragma once #include @@ -21,5 +20,3 @@ typedef struct { vectorio_event_t on_dirty; mp_obj_t draw_protocol_instance; } vectorio_polygon_t; - -#endif // MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_POLYGON_H diff --git a/shared-module/vectorio/Rectangle.h b/shared-module/vectorio/Rectangle.h index 42983e791cb4..6733f74d1708 100644 --- a/shared-module/vectorio/Rectangle.h +++ b/shared-module/vectorio/Rectangle.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_RECTANGLE_H -#define MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_RECTANGLE_H +#pragma once #include @@ -20,5 +19,3 @@ typedef struct { vectorio_event_t on_dirty; mp_obj_t draw_protocol_instance; } vectorio_rectangle_t; - -#endif // MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_RECTANGLE_H diff --git a/shared-module/vectorio/VectorShape.h b/shared-module/vectorio/VectorShape.h index 427768395cc3..db77fc0acb94 100644 --- a/shared-module/vectorio/VectorShape.h +++ b/shared-module/vectorio/VectorShape.h @@ -5,8 +5,7 @@ // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_SHAPE_H -#define MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_SHAPE_H +#pragma once #include #include @@ -57,5 +56,3 @@ bool vectorio_vector_shape_fill_area(vectorio_vector_shape_t *self, const _displ // false if the vector shape wasn't rendered in the last frame. bool vectorio_vector_shape_get_previous_area(vectorio_vector_shape_t *self, displayio_area_t *out_area); void vectorio_vector_shape_finish_refresh(vectorio_vector_shape_t *self); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_SHAPE_H diff --git a/shared-module/vectorio/__init__.h b/shared-module/vectorio/__init__.h index 879fb577a878..3db1071653c0 100644 --- a/shared-module/vectorio/__init__.h +++ b/shared-module/vectorio/__init__.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_INIT_H -#define MICROPY_INCLUDED_SHARED_MODULE_VECTORIO_INIT_H +#pragma once #include "py/obj.h" @@ -15,6 +14,3 @@ typedef struct { mp_obj_t obj; event_function *event; } vectorio_event_t; - - -#endif diff --git a/shared-module/watchdog/__init__.h b/shared-module/watchdog/__init__.h index 112af3b0863f..12f2d241a167 100644 --- a/shared-module/watchdog/__init__.h +++ b/shared-module/watchdog/__init__.h @@ -4,9 +4,6 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SHARED_MODULE_WATCHDOG___INIT___H -#define MICROPY_INCLUDED_SHARED_MODULE_WATCHDOG___INIT___H +#pragma once extern void watchdog_reset(void); - -#endif // MICROPY_INCLUDED_SHARED_MODULE_WATCHDOG___INIT___H diff --git a/shared/runtime/buffer_helper.h b/shared/runtime/buffer_helper.h index 86271bd3012b..6d6f43243db5 100644 --- a/shared/runtime/buffer_helper.h +++ b/shared/runtime/buffer_helper.h @@ -4,12 +4,9 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_LIB_UTILS_BUFFER_HELPER_H -#define MICROPY_INCLUDED_LIB_UTILS_BUFFER_HELPER_H +#pragma once #include #include void normalize_buffer_bounds(int32_t *start, int32_t end, size_t *length); - -#endif // MICROPY_INCLUDED_LIB_UTILS_BUFFER_HELPER_H diff --git a/shared/runtime/context_manager_helpers.h b/shared/runtime/context_manager_helpers.h index 3dd14e759f31..d8ec102ac5a5 100644 --- a/shared/runtime/context_manager_helpers.h +++ b/shared/runtime/context_manager_helpers.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_LIB_UTILS_CONTEXT_MANAGER_HELPERS_H -#define MICROPY_INCLUDED_LIB_UTILS_CONTEXT_MANAGER_HELPERS_H +#pragma once #include "py/obj.h" MP_DECLARE_CONST_FUN_OBJ_1(default___enter___obj); - -#endif // MICROPY_INCLUDED_LIB_UTILS_CONTEXT_MANAGER_HELPERS_H diff --git a/supervisor/background_callback.h b/supervisor/background_callback.h index dec5f442c1b7..b26a683ad206 100644 --- a/supervisor/background_callback.h +++ b/supervisor/background_callback.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef CIRCUITPY_INCLUDED_SUPERVISOR_BACKGROUND_CALLBACK_H -#define CIRCUITPY_INCLUDED_SUPERVISOR_BACKGROUND_CALLBACK_H +#pragma once #include @@ -76,5 +75,3 @@ void background_callback_allow(void); * Background callbacks may stop objects from being collected */ void background_callback_gc_collect(void); - -#endif diff --git a/supervisor/board.h b/supervisor/board.h index 89de01d490a4..0920bf4e5777 100644 --- a/supervisor/board.h +++ b/supervisor/board.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SUPERVISOR_BOARD_H -#define MICROPY_INCLUDED_SUPERVISOR_BOARD_H +#pragma once #include @@ -26,5 +25,3 @@ void reset_board(void); // state. It should not prevent the user access method from working (such as // disabling USB, BLE or flash) because CircuitPython may continue to run. void board_deinit(void); - -#endif // MICROPY_INCLUDED_SUPERVISOR_BOARD_H diff --git a/supervisor/cpu.h b/supervisor/cpu.h index cd7bf9385055..c9b2b474ff24 100755 --- a/supervisor/cpu.h +++ b/supervisor/cpu.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SUPERVISOR_CPU_H -#define MICROPY_INCLUDED_SUPERVISOR_CPU_H +#pragma once // Adds up to 10 pointers from the CPUs registers to regs. This is used to make sure no actively // used heap memory is freed. Its usually implemented in assembly. mp_uint_t cpu_get_regs_and_sp(mp_uint_t *regs); - -#endif // MICROPY_INCLUDED_SUPERVISOR_CPU_H diff --git a/supervisor/fatfs.h b/supervisor/fatfs.h index cd5605d8a423..e212664210da 100644 --- a/supervisor/fatfs.h +++ b/supervisor/fatfs.h @@ -4,11 +4,8 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SUPERVISOR_FATFS_H -#define MICROPY_INCLUDED_SUPERVISOR_FATFS_H +#pragma once #include "lib/oofatfs/ff.h" void override_fattime(DWORD time); - -#endif // MICROPY_INCLUDED_SUPERVISOR_FATFS_H diff --git a/supervisor/flash.h b/supervisor/flash.h index ab527d4d54dc..ca3e42735ffa 100644 --- a/supervisor/flash.h +++ b/supervisor/flash.h @@ -3,8 +3,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SUPERVISOR_FLASH_H -#define MICROPY_INCLUDED_SUPERVISOR_FLASH_H +#pragma once #include #include @@ -33,5 +32,3 @@ void supervisor_flash_release_cache(void); void supervisor_flash_set_extended(bool extended); bool supervisor_flash_get_extended(void); void supervisor_flash_update_extended(void); - -#endif // MICROPY_INCLUDED_SUPERVISOR_FLASH_H diff --git a/supervisor/linker.h b/supervisor/linker.h index 06633b342de2..5b6895d5b492 100644 --- a/supervisor/linker.h +++ b/supervisor/linker.h @@ -6,8 +6,7 @@ // These macros are used to place code and data into different linking sections. -#ifndef MICROPY_INCLUDED_SUPERVISOR_LINKER_H -#define MICROPY_INCLUDED_SUPERVISOR_LINKER_H +#pragma once #if defined(IMXRT1XXX) || defined(FOMU) || defined(STM32H7) || defined(RASPBERRYPI) #define PLACE_IN_DTCM_DATA(name) name __attribute__((section(".dtcm_data." #name))) @@ -19,5 +18,3 @@ #define PLACE_IN_DTCM_BSS(name) name #define PLACE_IN_ITCM(name) name #endif - -#endif // MICROPY_INCLUDED_SUPERVISOR_LINKER_H diff --git a/supervisor/shared/bluetooth/bluetooth.h b/supervisor/shared/bluetooth/bluetooth.h index 357dd6869ce2..14e74a07c736 100644 --- a/supervisor/shared/bluetooth/bluetooth.h +++ b/supervisor/shared/bluetooth/bluetooth.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_BLUETOOTH_H -#define MICROPY_INCLUDED_SUPERVISOR_SHARED_BLUETOOTH_H +#pragma once #include @@ -22,5 +21,3 @@ bool supervisor_bluetooth_workflow_is_enabled(void); // Title bar status bool supervisor_bluetooth_status_dirty(void); void supervisor_bluetooth_status(void); - -#endif // MICROPY_INCLUDED_SUPERVISOR_SHARED_BLUETOOTH_H diff --git a/supervisor/shared/bluetooth/file_transfer.h b/supervisor/shared/bluetooth/file_transfer.h index d6b2d2dc8439..12c75e1f548c 100644 --- a/supervisor/shared/bluetooth/file_transfer.h +++ b/supervisor/shared/bluetooth/file_transfer.h @@ -4,13 +4,10 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_BLUETOOTH_FILE_TRANSFER_H -#define MICROPY_INCLUDED_SUPERVISOR_SHARED_BLUETOOTH_FILE_TRANSFER_H +#pragma once #include void supervisor_bluetooth_file_transfer_background(void); void supervisor_start_bluetooth_file_transfer(void); void supervisor_bluetooth_file_transfer_disconnected(void); - -#endif // MICROPY_INCLUDED_SUPERVISOR_SHARED_BLUETOOTH_FILE_TRANSFER_H diff --git a/supervisor/shared/bluetooth/file_transfer_protocol.h b/supervisor/shared/bluetooth/file_transfer_protocol.h index f1b7126f2ac3..2672787d001e 100644 --- a/supervisor/shared/bluetooth/file_transfer_protocol.h +++ b/supervisor/shared/bluetooth/file_transfer_protocol.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_BLUETOOTH_FILE_TRANSFER_PROTOCOL_H -#define MICROPY_INCLUDED_SUPERVISOR_SHARED_BLUETOOTH_FILE_TRANSFER_PROTOCOL_H +#pragma once #include @@ -155,6 +154,3 @@ struct move_status { #define STATUS_ERROR_NO_FILE 0x03 #define STATUS_ERROR_PROTOCOL 0x04 #define STATUS_ERROR_READONLY 0x05 - - -#endif // MICROPY_INCLUDED_SUPERVISOR_SHARED_BLUETOOTH_FILE_TRANSFER_PROTOCOL_H diff --git a/supervisor/shared/bluetooth/serial.h b/supervisor/shared/bluetooth/serial.h index ac5c21c92004..0e6450b678f5 100644 --- a/supervisor/shared/bluetooth/serial.h +++ b/supervisor/shared/bluetooth/serial.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_BLUETOOTH_SERIAL_H -#define MICROPY_INCLUDED_SUPERVISOR_SHARED_BLUETOOTH_SERIAL_H +#pragma once #include #include @@ -19,5 +18,3 @@ char ble_serial_read_char(void); void ble_serial_write(const char *text, size_t len); void ble_serial_enable(void); void ble_serial_disable(void); - -#endif // MICROPY_INCLUDED_SUPERVISOR_SHARED_BLUETOOTH_SERIAL_H diff --git a/supervisor/shared/board.h b/supervisor/shared/board.h index 589bd517f966..14fb5812c396 100644 --- a/supervisor/shared/board.h +++ b/supervisor/shared/board.h @@ -4,13 +4,10 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_BOARD_H -#define MICROPY_INCLUDED_SUPERVISOR_SHARED_BOARD_H +#pragma once #include #include "shared-bindings/microcontroller/Pin.h" void board_reset_user_neopixels(const mcu_pin_obj_t *pin, size_t count); - -#endif // MICROPY_INCLUDED_SUPERVISOR_SHARED_BOARD_H diff --git a/supervisor/shared/cpu.h b/supervisor/shared/cpu.h index 3555fe18024b..830d2a082747 100644 --- a/supervisor/shared/cpu.h +++ b/supervisor/shared/cpu.h @@ -4,13 +4,10 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_CPU_H -#define MICROPY_INCLUDED_SUPERVISOR_SHARED_CPU_H +#pragma once #include #include // True when we're in an interrupt handler. bool cpu_interrupt_active(void); - -#endif // MICROPY_INCLUDED_SUPERVISOR_SHARED_CPU_H diff --git a/supervisor/shared/display.h b/supervisor/shared/display.h index 017a02fefdbb..f4b09ce30b60 100644 --- a/supervisor/shared/display.h +++ b/supervisor/shared/display.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_DISPLAY_H -#define MICROPY_INCLUDED_SUPERVISOR_SHARED_DISPLAY_H +#pragma once #include @@ -35,5 +34,3 @@ extern displayio_tilegrid_t supervisor_blinka_sprite; void supervisor_start_terminal(uint16_t width_px, uint16_t height_px); void supervisor_stop_terminal(void); bool supervisor_terminal_started(void); - -#endif // MICROPY_INCLUDED_SUPERVISOR_SHARED_DISPLAY_H diff --git a/supervisor/shared/external_flash/common_commands.h b/supervisor/shared/external_flash/common_commands.h index f95dbee9f46b..539f679d766e 100644 --- a/supervisor/shared/external_flash/common_commands.h +++ b/supervisor/shared/external_flash/common_commands.h @@ -3,8 +3,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_ATMEL_SAMD_EXTERNAL_FLASH_COMMON_COMMANDS_H -#define MICROPY_INCLUDED_ATMEL_SAMD_EXTERNAL_FLASH_COMMON_COMMANDS_H +#pragma once #define CMD_READ_JEDEC_ID 0x9f #define CMD_READ_DATA 0x03 @@ -24,5 +23,3 @@ #define CMD_ENABLE_RESET 0x66 #define CMD_RESET 0x99 #define CMD_WAKE 0xab - -#endif // MICROPY_INCLUDED_ATMEL_SAMD_EXTERNAL_FLASH_COMMON_COMMANDS_H diff --git a/supervisor/shared/external_flash/device.h b/supervisor/shared/external_flash/device.h index fae0dfbd31d2..869f7b7a2443 100644 --- a/supervisor/shared/external_flash/device.h +++ b/supervisor/shared/external_flash/device.h @@ -3,8 +3,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries LLC // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_EXTERNAL_FLASH_DEVICE_H -#define MICROPY_INCLUDED_SUPERVISOR_SHARED_EXTERNAL_FLASH_DEVICE_H +#pragma once #include #include @@ -54,5 +53,3 @@ typedef struct { // Device does not have a reset command bool no_reset_cmd : 1; } external_flash_device; - -#endif // MICROPY_INCLUDED_SUPERVISOR_SHARED_EXTERNAL_FLASH_DEVICE_H diff --git a/supervisor/shared/external_flash/external_flash.h b/supervisor/shared/external_flash/external_flash.h index 25ca2f017a22..4c1409aba8f6 100644 --- a/supervisor/shared/external_flash/external_flash.h +++ b/supervisor/shared/external_flash/external_flash.h @@ -3,8 +3,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries LLC // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_EXTERNAL_FLASH_EXTERNAL_FLASH_H -#define MICROPY_INCLUDED_SUPERVISOR_SHARED_EXTERNAL_FLASH_EXTERNAL_FLASH_H +#pragma once #include #include @@ -31,5 +30,3 @@ void supervisor_external_flash_flush(void); // is init'ed. For example, if GPIO needs to be configured to enable the // flash chip, as is the case on some boards. void external_flash_setup(void); - -#endif // MICROPY_INCLUDED_SUPERVISOR_SHARED_EXTERNAL_FLASH_EXTERNAL_FLASH_H diff --git a/supervisor/shared/external_flash/qspi_flash.h b/supervisor/shared/external_flash/qspi_flash.h index 6f77ef047f26..51f67305a283 100644 --- a/supervisor/shared/external_flash/qspi_flash.h +++ b/supervisor/shared/external_flash/qspi_flash.h @@ -3,9 +3,6 @@ // SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries LLC // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_EXTERNAL_FLASH_QSPI_FLASH_H -#define MICROPY_INCLUDED_SUPERVISOR_SHARED_EXTERNAL_FLASH_QSPI_FLASH_H +#pragma once void check_quad_enable(const external_flash_device *device); - -#endif // MICROPY_INCLUDED_SUPERVISOR_SHARED_EXTERNAL_FLASH_QSPI_FLASH_H diff --git a/supervisor/shared/internal_flash.h b/supervisor/shared/internal_flash.h index 1809bc24f493..139e86cf49bf 100644 --- a/supervisor/shared/internal_flash.h +++ b/supervisor/shared/internal_flash.h @@ -3,11 +3,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft, for Adafruit Industries LLC // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_INTERNAL_FLASH_H -#define MICROPY_INCLUDED_SUPERVISOR_SHARED_INTERNAL_FLASH_H +#pragma once #include "supervisor/internal_flash.h" // This is per-port. void port_internal_flash_flush(void); - -#endif // MICROPY_INCLUDED_SUPERVISOR_SHARED_INTERNAL_FLASH_H diff --git a/supervisor/shared/lock.h b/supervisor/shared/lock.h index e89eb0f22d2f..fcaf91b63ad3 100644 --- a/supervisor/shared/lock.h +++ b/supervisor/shared/lock.h @@ -4,13 +4,10 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SUPERVISOR_LOCK_H -#define MICROPY_INCLUDED_SUPERVISOR_LOCK_H +#pragma once typedef volatile bool supervisor_lock_t; void supervisor_acquire_lock(supervisor_lock_t *lock); bool supervisor_try_lock(supervisor_lock_t *lock); void supervisor_release_lock(supervisor_lock_t *lock); - -#endif // MICROPY_INCLUDED_SUPERVISOR_LOCK_H diff --git a/supervisor/shared/reload.h b/supervisor/shared/reload.h index 7800cf6fd4c0..9d65270bd4a2 100644 --- a/supervisor/shared/reload.h +++ b/supervisor/shared/reload.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SUPERVISOR_AUTORELOAD_H -#define MICROPY_INCLUDED_SUPERVISOR_AUTORELOAD_H +#pragma once #include "py/obj.h" #include "shared-bindings/supervisor/RunReason.h" @@ -53,5 +52,3 @@ bool autoreload_pending(void); void autoreload_suspend(uint32_t suspend_reason_mask); // Allow autoreloads again, for the given reason(s). void autoreload_resume(uint32_t suspend_reason_mask); - -#endif // MICROPY_INCLUDED_SUPERVISOR_AUTORELOAD_H diff --git a/supervisor/shared/safe_mode.h b/supervisor/shared/safe_mode.h index 63db2a4c0ba6..8f4037cbe20c 100644 --- a/supervisor/shared/safe_mode.h +++ b/supervisor/shared/safe_mode.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SUPERVISOR_SAFE_MODE_H -#define MICROPY_INCLUDED_SUPERVISOR_SAFE_MODE_H +#pragma once #include "py/mpconfig.h" @@ -42,5 +41,3 @@ void safe_mode_on_next_reset(safe_mode_t reason); void reset_into_safe_mode(safe_mode_t reason) NORETURN; void print_safe_mode_message(safe_mode_t reason); - -#endif // MICROPY_INCLUDED_SUPERVISOR_SAFE_MODE_H diff --git a/supervisor/shared/serial.h b/supervisor/shared/serial.h index 9620b12443a9..b2af28066c62 100644 --- a/supervisor/shared/serial.h +++ b/supervisor/shared/serial.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SUPERVISOR_SERIAL_H -#define MICROPY_INCLUDED_SUPERVISOR_SERIAL_H +#pragma once #include #include @@ -49,5 +48,3 @@ uint32_t board_serial_bytes_available(void); void board_serial_write_substring(const char *text, uint32_t length); int console_uart_printf(const char *fmt, ...) __attribute__((format(printf, 1, 2))); - -#endif // MICROPY_INCLUDED_SUPERVISOR_SERIAL_H diff --git a/supervisor/shared/status_leds.h b/supervisor/shared/status_leds.h index 26d3f264fe20..1fd752d31fda 100644 --- a/supervisor/shared/status_leds.h +++ b/supervisor/shared/status_leds.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SUPERVISOR_STATUS_LEDS_H -#define MICROPY_INCLUDED_SUPERVISOR_STATUS_LEDS_H +#pragma once #include #include @@ -39,5 +38,3 @@ void init_rxtx_leds(void); void deinit_rxtx_leds(void); void toggle_rx_led(void); void toggle_tx_led(void); - -#endif // MICROPY_INCLUDED_SUPERVISOR_STATUS_LEDS_H diff --git a/supervisor/shared/tick.h b/supervisor/shared/tick.h index 9840d6ffdd21..fc18e8f762f5 100644 --- a/supervisor/shared/tick.h +++ b/supervisor/shared/tick.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef __INCLUDED_SUPERVISOR_TICK_H -#define __INCLUDED_SUPERVISOR_TICK_H +#pragma once #include #include @@ -44,5 +43,3 @@ extern void supervisor_disable_tick(void); * intended. */ extern bool supervisor_background_ticks_ok(void); - -#endif diff --git a/supervisor/shared/usb/usb_vendor_descriptors.h b/supervisor/shared/usb/usb_vendor_descriptors.h index 0849075dae4c..ad398db99f5c 100644 --- a/supervisor/shared/usb/usb_vendor_descriptors.h +++ b/supervisor/shared/usb/usb_vendor_descriptors.h @@ -4,8 +4,7 @@ // // SPDX-License-Identifier: MIT -#ifndef USB_DESCRIPTORS_H_ -#define USB_DESCRIPTORS_H_ +#pragma once #include @@ -17,5 +16,3 @@ enum size_t vendor_ms_os_20_descriptor_length(void); uint8_t const *vendor_ms_os_20_descriptor(void); - -#endif /* USB_DESCRIPTORS_H_ */ diff --git a/supervisor/spi_flash_api.h b/supervisor/spi_flash_api.h index deba3794e1f4..eeb2ac68835e 100644 --- a/supervisor/spi_flash_api.h +++ b/supervisor/spi_flash_api.h @@ -3,8 +3,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2018 Scott Shawcroft for Adafruit Industries LLC // // SPDX-License-Identifier: MIT -#ifndef MICROPY_INCLUDED_SUPERVISOR_SPI_FLASH_H -#define MICROPY_INCLUDED_SUPERVISOR_SPI_FLASH_H +#pragma once #include #include @@ -25,5 +24,3 @@ bool spi_flash_write_data(uint32_t address, uint8_t *data, uint32_t data_length) bool spi_flash_read_data(uint32_t address, uint8_t *data, uint32_t data_length); void spi_flash_init(void); void spi_flash_init_device(const external_flash_device *device); - -#endif // MICROPY_INCLUDED_SUPERVISOR_SPI_FLASH_H From 296ad5096ade9c3c39084fb0487358854d50f7f2 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Mon, 20 May 2024 08:35:32 -0400 Subject: [PATCH 047/227] qstrdefport.h: remove #pragma once --- ports/atmel-samd/qstrdefsport.h | 2 +- ports/broadcom/qstrdefsport.h | 2 +- ports/cxd56/qstrdefsport.h | 2 +- ports/espressif/qstrdefsport.h | 2 +- ports/litex/qstrdefsport.h | 2 +- ports/mimxrt10xx/qstrdefsport.h | 2 +- ports/nordic/qstrdefsport.h | 2 +- ports/raspberrypi/qstrdefsport.h | 2 +- ports/renode/qstrdefsport.h | 2 +- ports/stm/qstrdefsport.h | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/ports/atmel-samd/qstrdefsport.h b/ports/atmel-samd/qstrdefsport.h index 9ff78060068f..2d2c26092348 100644 --- a/ports/atmel-samd/qstrdefsport.h +++ b/ports/atmel-samd/qstrdefsport.h @@ -4,7 +4,7 @@ // // SPDX-License-Identifier: MIT -#pragma once +// Do not use #pragma once in this file; it will cause a warning during qstr generation. // qstrs specific to this port // *FORMAT-OFF* diff --git a/ports/broadcom/qstrdefsport.h b/ports/broadcom/qstrdefsport.h index 738a4500f902..79d7f33276ef 100644 --- a/ports/broadcom/qstrdefsport.h +++ b/ports/broadcom/qstrdefsport.h @@ -4,7 +4,7 @@ // // SPDX-License-Identifier: MIT -#pragma once +// Do not use #pragma once in this file; it will cause a warning during qstr generation. // qstrs specific to this port, only needed if they aren't auto-generated diff --git a/ports/cxd56/qstrdefsport.h b/ports/cxd56/qstrdefsport.h index 9ff78060068f..2d2c26092348 100644 --- a/ports/cxd56/qstrdefsport.h +++ b/ports/cxd56/qstrdefsport.h @@ -4,7 +4,7 @@ // // SPDX-License-Identifier: MIT -#pragma once +// Do not use #pragma once in this file; it will cause a warning during qstr generation. // qstrs specific to this port // *FORMAT-OFF* diff --git a/ports/espressif/qstrdefsport.h b/ports/espressif/qstrdefsport.h index 9ff78060068f..2d2c26092348 100644 --- a/ports/espressif/qstrdefsport.h +++ b/ports/espressif/qstrdefsport.h @@ -4,7 +4,7 @@ // // SPDX-License-Identifier: MIT -#pragma once +// Do not use #pragma once in this file; it will cause a warning during qstr generation. // qstrs specific to this port // *FORMAT-OFF* diff --git a/ports/litex/qstrdefsport.h b/ports/litex/qstrdefsport.h index 9ff78060068f..2d2c26092348 100644 --- a/ports/litex/qstrdefsport.h +++ b/ports/litex/qstrdefsport.h @@ -4,7 +4,7 @@ // // SPDX-License-Identifier: MIT -#pragma once +// Do not use #pragma once in this file; it will cause a warning during qstr generation. // qstrs specific to this port // *FORMAT-OFF* diff --git a/ports/mimxrt10xx/qstrdefsport.h b/ports/mimxrt10xx/qstrdefsport.h index 9ff78060068f..2d2c26092348 100644 --- a/ports/mimxrt10xx/qstrdefsport.h +++ b/ports/mimxrt10xx/qstrdefsport.h @@ -4,7 +4,7 @@ // // SPDX-License-Identifier: MIT -#pragma once +// Do not use #pragma once in this file; it will cause a warning during qstr generation. // qstrs specific to this port // *FORMAT-OFF* diff --git a/ports/nordic/qstrdefsport.h b/ports/nordic/qstrdefsport.h index b8cd1fd9af90..a754f55f42af 100644 --- a/ports/nordic/qstrdefsport.h +++ b/ports/nordic/qstrdefsport.h @@ -4,6 +4,6 @@ // // SPDX-License-Identifier: MIT -#pragma once +// Do not use #pragma once in this file; it will cause a warning during qstr generation. // qstrs specific to this port diff --git a/ports/raspberrypi/qstrdefsport.h b/ports/raspberrypi/qstrdefsport.h index b8cd1fd9af90..a754f55f42af 100644 --- a/ports/raspberrypi/qstrdefsport.h +++ b/ports/raspberrypi/qstrdefsport.h @@ -4,6 +4,6 @@ // // SPDX-License-Identifier: MIT -#pragma once +// Do not use #pragma once in this file; it will cause a warning during qstr generation. // qstrs specific to this port diff --git a/ports/renode/qstrdefsport.h b/ports/renode/qstrdefsport.h index b8cd1fd9af90..a754f55f42af 100644 --- a/ports/renode/qstrdefsport.h +++ b/ports/renode/qstrdefsport.h @@ -4,6 +4,6 @@ // // SPDX-License-Identifier: MIT -#pragma once +// Do not use #pragma once in this file; it will cause a warning during qstr generation. // qstrs specific to this port diff --git a/ports/stm/qstrdefsport.h b/ports/stm/qstrdefsport.h index b8cd1fd9af90..a754f55f42af 100644 --- a/ports/stm/qstrdefsport.h +++ b/ports/stm/qstrdefsport.h @@ -4,6 +4,6 @@ // // SPDX-License-Identifier: MIT -#pragma once +// Do not use #pragma once in this file; it will cause a warning during qstr generation. // qstrs specific to this port From 3f4d9310fff29091eb8f4a735fe919ec3398a071 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Mon, 20 May 2024 11:02:17 -0400 Subject: [PATCH 048/227] CircuitPython files: replace STATIC with static --- devices/ble_hci/common-hal/_bleio/Adapter.c | 16 +- .../common-hal/_bleio/CharacteristicBuffer.c | 2 +- .../ble_hci/common-hal/_bleio/Connection.c | 16 +- .../ble_hci/common-hal/_bleio/PacketBuffer.c | 4 +- devices/ble_hci/common-hal/_bleio/att.c | 66 ++--- devices/ble_hci/common-hal/_bleio/hci.c | 34 +-- devices/ble_hci/common-hal/_bleio/hci_debug.c | 14 +- main.c | 34 +-- ports/atmel-samd/audio_dma.c | 2 +- ports/atmel-samd/bindings/samd/Clock.c | 20 +- ports/atmel-samd/bindings/samd/__init__.c | 4 +- ports/atmel-samd/boards/8086_commander/pins.c | 2 +- .../boards/adafruit_neokey_trinkey_m0/pins.c | 2 +- .../boards/adafruit_pixel_trinkey_m0/pins.c | 2 +- .../adafruit_proxlight_trinkey_m0/pins.c | 2 +- .../boards/adafruit_rotary_trinkey_m0/pins.c | 2 +- .../boards/adafruit_sht4x_trinkey_m0/pins.c | 2 +- .../boards/adafruit_slide_trinkey_m0/pins.c | 2 +- .../boards/adafruit_trrs_trinkey_m0/pins.c | 2 +- .../boards/aloriumtech_evo_m51/pins.c | 2 +- .../atmel-samd/boards/arduino_mkr1300/pins.c | 2 +- .../atmel-samd/boards/arduino_mkrzero/pins.c | 2 +- .../boards/arduino_nano_33_iot/pins.c | 2 +- ports/atmel-samd/boards/arduino_zero/pins.c | 2 +- .../atmel-samd/boards/bast_pro_mini_m0/pins.c | 2 +- .../atmel-samd/boards/bdmicro_vina_d21/pins.c | 2 +- .../atmel-samd/boards/bdmicro_vina_d51/pins.c | 2 +- .../boards/bdmicro_vina_d51_pcb7/pins.c | 2 +- ports/atmel-samd/boards/blm_badge/pins.c | 2 +- .../boards/capablerobot_usbhub/pins.c | 2 +- .../atmel-samd/boards/catwan_usbstick/pins.c | 2 +- .../boards/circuitbrains_basic_m0/pins.c | 2 +- .../boards/circuitbrains_deluxe_m4/pins.c | 2 +- .../boards/circuitplayground_express/pins.c | 2 +- .../circuitplayground_express_crickit/pins.c | 2 +- .../pins.c | 2 +- ports/atmel-samd/boards/cp32-m4/pins.c | 2 +- ports/atmel-samd/boards/cp_sapling_m0/pins.c | 2 +- .../boards/cp_sapling_m0_revb/pins.c | 2 +- .../boards/cp_sapling_m0_spiflash/pins.c | 2 +- ports/atmel-samd/boards/datalore_ip_m4/pins.c | 2 +- ports/atmel-samd/boards/datum_distance/pins.c | 2 +- ports/atmel-samd/boards/datum_imu/pins.c | 2 +- ports/atmel-samd/boards/datum_light/pins.c | 2 +- ports/atmel-samd/boards/datum_weather/pins.c | 2 +- ports/atmel-samd/boards/dynalora_usb/pins.c | 2 +- .../atmel-samd/boards/dynossat_edu_eps/pins.c | 2 +- .../atmel-samd/boards/dynossat_edu_obc/pins.c | 2 +- .../boards/escornabot_makech/pins.c | 2 +- .../boards/feather_m0_adalogger/pins.c | 2 +- .../atmel-samd/boards/feather_m0_basic/pins.c | 2 +- .../boards/feather_m0_express/pins.c | 2 +- .../boards/feather_m0_express_crickit/pins.c | 2 +- .../atmel-samd/boards/feather_m0_rfm69/pins.c | 2 +- .../atmel-samd/boards/feather_m0_rfm9x/pins.c | 2 +- .../boards/feather_m0_supersized/pins.c | 2 +- ports/atmel-samd/boards/feather_m4_can/pins.c | 2 +- .../boards/feather_m4_express/pins.c | 2 +- ports/atmel-samd/boards/fluff_m0/pins.c | 2 +- ports/atmel-samd/boards/gemma_m0/pins.c | 2 +- .../boards/grandcentral_m4_express/pins.c | 4 +- .../boards/hallowing_m0_express/pins.c | 2 +- .../boards/hallowing_m4_express/pins.c | 2 +- ports/atmel-samd/boards/huntercat_nfc/pins.c | 2 +- .../boards/itsybitsy_m0_express/pins.c | 2 +- .../boards/itsybitsy_m4_express/pins.c | 2 +- ports/atmel-samd/boards/kicksat-sprite/pins.c | 2 +- .../boards/loc_ber_m4_base_board/pins.c | 2 +- .../atmel-samd/boards/matrixportal_m4/pins.c | 8 +- ports/atmel-samd/boards/meowmeow/pins.c | 2 +- .../atmel-samd/boards/metro_m0_express/pins.c | 2 +- .../boards/metro_m4_airlift_lite/pins.c | 2 +- .../atmel-samd/boards/metro_m4_express/pins.c | 2 +- ports/atmel-samd/boards/mini_sam_m4/pins.c | 2 +- ports/atmel-samd/boards/monster_m4sk/pins.c | 2 +- .../atmel-samd/boards/ndgarage_ndbit6/pins.c | 2 +- .../boards/ndgarage_ndbit6_v2/pins.c | 2 +- .../boards/neopixel_trinkey_m0/pins.c | 2 +- ports/atmel-samd/boards/nfc_copy_cat/pins.c | 2 +- ports/atmel-samd/boards/openbook_m4/pins.c | 2 +- ports/atmel-samd/boards/p1am_200/pins.c | 2 +- ports/atmel-samd/boards/pewpew10/pins.c | 2 +- ports/atmel-samd/boards/pewpew_lcd/pins.c | 2 +- ports/atmel-samd/boards/pewpew_m4/board.c | 2 +- ports/atmel-samd/boards/pewpew_m4/pins.c | 2 +- ports/atmel-samd/boards/picoplanet/pins.c | 2 +- ports/atmel-samd/boards/pybadge/pins.c | 2 +- ports/atmel-samd/boards/pycubed/pins.c | 2 +- ports/atmel-samd/boards/pycubed_mram/pins.c | 2 +- .../atmel-samd/boards/pycubed_mram_v05/pins.c | 2 +- ports/atmel-samd/boards/pycubed_v05/pins.c | 2 +- ports/atmel-samd/boards/pygamer/pins.c | 2 +- ports/atmel-samd/boards/pyportal/pins.c | 2 +- .../atmel-samd/boards/pyportal_titano/pins.c | 2 +- ports/atmel-samd/boards/pyruler/pins.c | 2 +- ports/atmel-samd/boards/qtpy_m0/pins.c | 2 +- .../atmel-samd/boards/qtpy_m0_haxpress/pins.c | 2 +- ports/atmel-samd/boards/robohatmm1_m4/pins.c | 2 +- ports/atmel-samd/boards/sam32/pins.c | 2 +- .../atmel-samd/boards/same54_xplained/pins.c | 4 +- .../boards/seeeduino_wio_terminal/pins.c | 2 +- ports/atmel-samd/boards/seeeduino_xiao/pins.c | 2 +- .../boards/seeeduino_xiao_kb/pins.c | 2 +- ports/atmel-samd/boards/sensebox_mcu/pins.c | 2 +- ports/atmel-samd/boards/serpente/pins.c | 2 +- ports/atmel-samd/boards/shirtty/pins.c | 2 +- .../boards/silicognition-m4-shim/pins.c | 2 +- ports/atmel-samd/boards/snekboard/pins.c | 2 +- .../boards/sparkfun_lumidrive/pins.c | 2 +- .../sparkfun_qwiic_micro_no_flash/pins.c | 2 +- .../sparkfun_qwiic_micro_with_flash/pins.c | 2 +- .../boards/sparkfun_redboard_turbo/pins.c | 2 +- .../boards/sparkfun_samd21_dev/pins.c | 2 +- .../boards/sparkfun_samd21_mini/pins.c | 2 +- .../boards/sparkfun_samd51_micromod/pins.c | 2 +- .../boards/sparkfun_samd51_thing_plus/pins.c | 2 +- .../boards/stackrduino_m0_pro/pins.c | 2 +- .../boards/stringcar_m0_express/pins.c | 2 +- .../boards/trellis_m4_express/pins.c | 2 +- ports/atmel-samd/boards/trinket_m0/pins.c | 2 +- .../boards/trinket_m0_haxpress/pins.c | 2 +- ports/atmel-samd/boards/uartlogger2/pins.c | 2 +- ports/atmel-samd/boards/uchip/pins.c | 2 +- ports/atmel-samd/boards/ugame10/pins.c | 2 +- .../winterbloom_big_honking_button/pins.c | 2 +- .../usermods/_bhb/bhb.c | 14 +- .../atmel-samd/boards/winterbloom_sol/pins.c | 2 +- ports/atmel-samd/boards/xinabox_cc03/pins.c | 2 +- ports/atmel-samd/boards/xinabox_cs11/pins.c | 2 +- ports/atmel-samd/common-hal/alarm/__init__.c | 4 +- .../common-hal/alarm/pin/PinAlarm.c | 4 +- .../common-hal/alarm/time/TimeAlarm.c | 4 +- ports/atmel-samd/common-hal/busio/I2C.c | 2 +- ports/atmel-samd/common-hal/canio/CAN.c | 8 +- ports/atmel-samd/common-hal/canio/Listener.c | 28 +- .../common-hal/microcontroller/Pin.c | 2 +- .../common-hal/microcontroller/Processor.c | 6 +- .../common-hal/microcontroller/__init__.c | 2 +- .../common-hal/neopixel_write/__init__.c | 2 +- ports/atmel-samd/common-hal/os/__init__.c | 18 +- .../atmel-samd/common-hal/pulseio/PulseOut.c | 2 +- ports/atmel-samd/common-hal/pwmio/PWMOut.c | 2 +- ports/atmel-samd/common-hal/sdioio/SDCard.c | 8 +- ports/atmel-samd/supervisor/internal_flash.c | 4 +- .../broadcom/bindings/videocore/Framebuffer.c | 34 +-- ports/broadcom/bindings/videocore/__init__.c | 4 +- .../boards/diodes_delight_piunora/pins.c | 2 +- ports/broadcom/boards/raspberrypi_cm4/pins.c | 2 +- .../broadcom/boards/raspberrypi_cm4io/pins.c | 2 +- ports/broadcom/boards/raspberrypi_pi4b/pins.c | 2 +- ports/broadcom/boards/raspberrypi_zero/pins.c | 2 +- .../broadcom/boards/raspberrypi_zero2w/pins.c | 2 +- .../broadcom/boards/raspberrypi_zero_w/pins.c | 2 +- ports/broadcom/common-hal/busio/I2C.c | 10 +- ports/broadcom/common-hal/busio/SPI.c | 16 +- ports/broadcom/common-hal/busio/UART.c | 10 +- .../broadcom/common-hal/microcontroller/Pin.c | 4 +- ports/broadcom/common-hal/os/__init__.c | 14 +- ports/broadcom/common-hal/sdioio/SDCard.c | 14 +- ports/broadcom/supervisor/internal_flash.c | 8 +- ports/broadcom/supervisor/port.c | 2 +- ports/cxd56/boards/spresense/pins.c | 4 +- ports/cxd56/common-hal/analogio/AnalogIn.c | 2 +- ports/cxd56/common-hal/busio/I2C.c | 2 +- ports/cxd56/common-hal/busio/UART.c | 2 +- ports/cxd56/common-hal/camera/Camera.c | 6 +- ports/cxd56/common-hal/gnss/GNSS.c | 2 +- ports/cxd56/common-hal/microcontroller/Pin.c | 2 +- .../common-hal/microcontroller/__init__.c | 2 +- ports/cxd56/common-hal/os/__init__.c | 14 +- ports/cxd56/common-hal/pwmio/PWMOut.c | 2 +- ports/cxd56/common-hal/sdioio/SDCard.c | 2 +- ports/espressif/bindings/espcamera/Camera.c | 266 +++++++++--------- ports/espressif/bindings/espcamera/__init__.c | 12 +- ports/espressif/bindings/espidf/__init__.c | 16 +- ports/espressif/bindings/espnow/ESPNow.c | 50 ++-- ports/espressif/bindings/espnow/Peer.c | 26 +- ports/espressif/bindings/espnow/Peers.c | 20 +- ports/espressif/bindings/espnow/__init__.c | 4 +- .../espressif/bindings/espulp/Architecture.c | 2 +- ports/espressif/bindings/espulp/ULP.c | 26 +- ports/espressif/bindings/espulp/ULPAlarm.c | 2 +- ports/espressif/bindings/espulp/__init__.c | 6 +- .../boards/01space_lcd042_esp32c3/pins.c | 2 +- .../boards/adafruit_esp32s3_camera/pins.c | 4 +- .../boards/adafruit_feather_esp32_v2/pins.c | 2 +- .../pins.c | 2 +- .../boards/adafruit_feather_esp32s2/pins.c | 2 +- .../pins.c | 2 +- .../adafruit_feather_esp32s2_tft/pins.c | 2 +- .../pins.c | 2 +- .../adafruit_feather_esp32s3_nopsram/pins.c | 2 +- .../pins.c | 2 +- .../adafruit_feather_esp32s3_tft/pins.c | 2 +- .../boards/adafruit_feather_huzzah32/pins.c | 2 +- .../espressif/boards/adafruit_funhouse/pins.c | 2 +- .../boards/adafruit_huzzah32_breakout/pins.c | 2 +- .../boards/adafruit_itsybitsy_esp32/pins.c | 2 +- .../adafruit_magtag_2.9_grayscale/pins.c | 2 +- .../boards/adafruit_matrixportal_s3/pins.c | 8 +- .../boards/adafruit_metro_esp32s2/pins.c | 2 +- .../boards/adafruit_metro_esp32s3/pins.c | 2 +- .../boards/adafruit_qtpy_esp32_pico/pins.c | 2 +- .../boards/adafruit_qtpy_esp32c3/pins.c | 2 +- .../boards/adafruit_qtpy_esp32s2/pins.c | 2 +- .../pins.c | 2 +- .../adafruit_qtpy_esp32s3_nopsram/pins.c | 2 +- .../boards/adafruit_qualia_s3_rgb666/pins.c | 14 +- .../boards/ai-thinker-esp32-cam/pins.c | 4 +- .../boards/ai_thinker_esp32-c3s-2m/pins.c | 2 +- .../boards/ai_thinker_esp32-c3s/pins.c | 2 +- .../boards/ai_thinker_esp_12k_nodemcu/pins.c | 2 +- .../boards/arduino_nano_esp32s3/pins.c | 2 +- .../pins.c | 2 +- ports/espressif/boards/artisense_rd00/pins.c | 2 +- .../boards/atmegazero_esp32s2/pins.c | 2 +- ports/espressif/boards/beetle-esp32-c3/pins.c | 2 +- ports/espressif/boards/bpi_bit_s2/pins.c | 2 +- ports/espressif/boards/bpi_leaf_s3/pins.c | 2 +- ports/espressif/boards/bpi_picow_s3/pins.c | 2 +- .../boards/brainboardz_neuron/pins.c | 2 +- .../boards/columbia-dsl-sensor/pins.c | 2 +- .../boards/crcibernetica-ideaboard/pins.c | 2 +- .../boards/crumpspace_crumps2/pins.c | 2 +- .../cytron_maker_feather_aiot_s3/pins.c | 2 +- ports/espressif/boards/deneyap_kart/pins.c | 2 +- ports/espressif/boards/deneyap_kart_1a/pins.c | 2 +- .../boards/deneyap_kart_1a_v2/pins.c | 2 +- ports/espressif/boards/deneyap_kart_g/pins.c | 2 +- ports/espressif/boards/deneyap_mini/pins.c | 2 +- ports/espressif/boards/deneyap_mini_v2/pins.c | 2 +- .../boards/doit_esp32_devkit_v1/pins.c | 2 +- .../boards/electroniccats_bastwifi/pins.c | 2 +- ports/espressif/boards/es3ink/pins.c | 2 +- .../pins.c | 2 +- .../espressif_esp32_devkitc_v4_wrover/pins.c | 2 +- .../boards/espressif_esp32_eye/pins.c | 4 +- .../boards/espressif_esp32_lyrat/pins.c | 2 +- .../espressif_esp32c3_devkitm_1_n4/pins.c | 2 +- .../espressif_esp32c6_devkitc_1_n8/pins.c | 2 +- .../espressif_esp32c6_devkitm_1_n4/pins.c | 2 +- .../espressif_esp32h2_devkitm_1_n4/pins.c | 2 +- .../espressif_esp32s2_devkitc_1_n4/pins.c | 2 +- .../espressif_esp32s2_devkitc_1_n4r2/pins.c | 2 +- .../espressif_esp32s2_devkitc_1_n8r2/pins.c | 2 +- .../boards/espressif_esp32s3_box/pins.c | 2 +- .../boards/espressif_esp32s3_box_lite/pins.c | 2 +- .../espressif_esp32s3_devkitc_1_n32r8/pins.c | 2 +- .../espressif_esp32s3_devkitc_1_n8/pins.c | 2 +- .../espressif_esp32s3_devkitc_1_n8r2/pins.c | 2 +- .../espressif_esp32s3_devkitc_1_n8r8/pins.c | 2 +- .../pins.c | 12 +- .../espressif_esp32s3_devkitm_1_n8/pins.c | 2 +- .../boards/espressif_esp32s3_eye/pins.c | 4 +- .../boards/espressif_esp32s3_lcd_ev/pins.c | 14 +- .../espressif_esp32s3_usb_otg_n8/pins.c | 2 +- .../boards/espressif_hmi_devkit_1/pins.c | 4 +- .../boards/espressif_kaluga_1.3/pins.c | 4 +- .../boards/espressif_kaluga_1/pins.c | 4 +- .../boards/espressif_saola_1_wroom/pins.c | 2 +- .../boards/espressif_saola_1_wrover/pins.c | 2 +- .../boards/firebeetle2_esp32s3/pins.c | 4 +- .../boards/flipperzero_wifi_dev/pins.c | 2 +- .../boards/franzininho_wifi_wroom/pins.c | 2 +- .../boards/franzininho_wifi_wrover/pins.c | 2 +- .../boards/gravitech_cucumber_m/pins.c | 2 +- .../boards/gravitech_cucumber_ms/pins.c | 2 +- .../boards/gravitech_cucumber_r/pins.c | 2 +- .../boards/gravitech_cucumber_rs/pins.c | 2 +- .../boards/hardkernel_odroid_go/pins.c | 2 +- .../boards/heltec_esp32s3_wifi_lora_v3/pins.c | 2 +- ports/espressif/boards/hexky_s2/pins.c | 2 +- ports/espressif/boards/hiibot_iots2/pins.c | 2 +- ports/espressif/boards/lilygo_tdeck/pins.c | 2 +- .../boards/lilygo_tdisplay_s3/pins.c | 2 +- .../boards/lilygo_tembed_esp32s3/pins.c | 2 +- .../boards/lilygo_ttgo_t-01c3/pins.c | 2 +- .../boards/lilygo_ttgo_t-oi-plus/pins.c | 2 +- .../lilygo_ttgo_t8_esp32_s2_wroom/pins.c | 2 +- .../espressif/boards/lilygo_ttgo_t8_s2/pins.c | 2 +- .../boards/lilygo_ttgo_t8_s2_st7789/pins.c | 2 +- .../lilygo_ttgo_tdisplay_esp32_16m/pins.c | 2 +- .../lilygo_ttgo_tdisplay_esp32_4m/pins.c | 2 +- .../boards/lilygo_twatch_2020_v3/pins.c | 2 +- ports/espressif/boards/lolin_c3_mini/pins.c | 2 +- ports/espressif/boards/lolin_c3_pico/pins.c | 2 +- ports/espressif/boards/lolin_s2_mini/pins.c | 2 +- ports/espressif/boards/lolin_s2_pico/pins.c | 2 +- ports/espressif/boards/lolin_s3/pins.c | 2 +- ports/espressif/boards/lolin_s3_mini/pins.c | 2 +- ports/espressif/boards/lolin_s3_pro/pins.c | 2 +- .../boards/luatos_core_esp32c3/pins.c | 2 +- .../boards/luatos_core_esp32c3_ch343/pins.c | 2 +- .../espressif/boards/m5stack_atom_echo/pins.c | 2 +- .../espressif/boards/m5stack_atom_lite/pins.c | 2 +- .../boards/m5stack_atom_matrix/pins.c | 2 +- ports/espressif/boards/m5stack_atom_u/pins.c | 2 +- ports/espressif/boards/m5stack_atoms3/pins.c | 2 +- .../boards/m5stack_atoms3_lite/pins.c | 2 +- ports/espressif/boards/m5stack_atoms3u/pins.c | 2 +- .../espressif/boards/m5stack_cardputer/pins.c | 2 +- ports/espressif/boards/m5stack_core2/pins.c | 2 +- .../boards/m5stack_core_basic/pins.c | 2 +- .../espressif/boards/m5stack_core_fire/pins.c | 2 +- ports/espressif/boards/m5stack_cores3/pins.c | 4 +- ports/espressif/boards/m5stack_dial/pins.c | 2 +- ports/espressif/boards/m5stack_m5paper/pins.c | 2 +- .../espressif/boards/m5stack_stamp_c3/pins.c | 2 +- ports/espressif/boards/m5stack_stick_c/pins.c | 2 +- .../boards/m5stack_stick_c_plus/pins.c | 2 +- .../boards/m5stack_timer_camera_x/pins.c | 4 +- .../espressif/boards/magiclick_s3_n4r2/pins.c | 2 +- ports/espressif/boards/maker_badge/pins.c | 2 +- ports/espressif/boards/makerfabs_tft7/pins.c | 14 +- .../boards/makergo_esp32c3_supermini/pins.c | 2 +- .../espressif/boards/microdev_micro_c3/pins.c | 2 +- .../espressif/boards/microdev_micro_s2/pins.c | 2 +- ports/espressif/boards/mixgo_ce_serial/pins.c | 2 +- ports/espressif/boards/mixgo_ce_udisk/pins.c | 2 +- .../boards/morpheans_morphesp-240/pins.c | 2 +- .../boards/muselab_nanoesp32_s2_wroom/pins.c | 2 +- .../boards/muselab_nanoesp32_s2_wrover/pins.c | 2 +- .../boards/odt_pixelwing_esp32_s2/pins.c | 2 +- ports/espressif/boards/oxocard_artwork/pins.c | 2 +- ports/espressif/boards/oxocard_connect/pins.c | 2 +- ports/espressif/boards/oxocard_galaxy/pins.c | 2 +- ports/espressif/boards/oxocard_science/pins.c | 2 +- .../boards/seeed_xiao_esp32c3/pins.c | 2 +- .../boards/sensebox_mcu_esp32s2/pins.c | 2 +- .../smartbeedesigns_bee_data_logger/pins.c | 2 +- .../smartbeedesigns_bee_motion_s3/pins.c | 2 +- .../boards/smartbeedesigns_bee_s3/pins.c | 2 +- .../boards/spotpear_esp32c3_lcd_1_44/pins.c | 2 +- ports/espressif/boards/sqfmi_watchy/pins.c | 2 +- .../boards/sunton_esp32_2424S012/pins.c | 2 +- .../boards/sunton_esp32_2432S028/pins.c | 2 +- .../boards/sunton_esp32_8048S070/pins.c | 12 +- .../boards/targett_module_clip_wroom/pins.c | 2 +- .../boards/targett_module_clip_wrover/pins.c | 2 +- .../boards/unexpectedmaker_bling/pins.c | 2 +- .../boards/unexpectedmaker_blizzard_s3/pins.c | 2 +- .../boards/unexpectedmaker_feathers2/pins.c | 2 +- .../unexpectedmaker_feathers2_neo/pins.c | 2 +- .../pins.c | 2 +- .../boards/unexpectedmaker_feathers3/pins.c | 2 +- .../boards/unexpectedmaker_nanos3/pins.c | 2 +- .../boards/unexpectedmaker_pros3/pins.c | 2 +- .../boards/unexpectedmaker_tinyc6/pins.c | 2 +- .../boards/unexpectedmaker_tinypico/pins.c | 2 +- .../unexpectedmaker_tinypico_nano/pins.c | 2 +- .../boards/unexpectedmaker_tinys2/pins.c | 2 +- .../boards/unexpectedmaker_tinys3/pins.c | 2 +- .../unexpectedmaker_tinywatch_s3/pins.c | 2 +- .../boards/waveshare_esp32_s2_pico_lcd/pins.c | 2 +- .../boards/waveshare_esp32_s3_geek/pins.c | 2 +- .../boards/waveshare_esp32_s3_lcd_1_28/pins.c | 2 +- .../boards/waveshare_esp32_s3_pico/pins.c | 2 +- .../boards/waveshare_esp32_s3_zero/pins.c | 2 +- .../boards/waveshare_esp32s2_pico/pins.c | 2 +- .../espressif/boards/weact_esp32c6_n4/pins.c | 2 +- .../espressif/boards/weact_esp32c6_n8/pins.c | 2 +- .../boards/wemos_lolin32_lite/pins.c | 2 +- .../espressif/boards/yd_esp32_s3_n16r8/pins.c | 2 +- .../espressif/boards/yd_esp32_s3_n8r8/pins.c | 2 +- ports/espressif/common-hal/_bleio/Adapter.c | 10 +- .../common-hal/_bleio/Characteristic.c | 8 +- .../espressif/common-hal/_bleio/Connection.c | 10 +- .../common-hal/_bleio/PacketBuffer.c | 10 +- ports/espressif/common-hal/_bleio/bonding.c | 18 +- ports/espressif/common-hal/alarm/__init__.c | 4 +- .../espressif/common-hal/alarm/pin/PinAlarm.c | 2 +- .../common-hal/alarm/time/TimeAlarm.c | 4 +- .../common-hal/alarm/touch/TouchAlarm.c | 2 +- ports/espressif/common-hal/canio/CAN.c | 6 +- ports/espressif/common-hal/canio/Listener.c | 8 +- .../common-hal/digitalio/DigitalInOut.c | 2 +- ports/espressif/common-hal/espulp/ULP.c | 4 +- ports/espressif/common-hal/espulp/ULPAlarm.c | 2 +- .../espressif/common-hal/max3421e/Max3421E.c | 2 +- ports/espressif/common-hal/mdns/Server.c | 2 +- .../common-hal/microcontroller/Pin.c | 18 +- .../common-hal/microcontroller/Processor.c | 2 +- .../common-hal/microcontroller/__init__.c | 2 +- ports/espressif/common-hal/os/__init__.c | 14 +- .../paralleldisplaybus/ParallelBus.c | 2 +- ports/espressif/common-hal/pwmio/PWMOut.c | 8 +- .../espressif/common-hal/socketpool/Socket.c | 14 +- ports/espressif/common-hal/wifi/__init__.c | 2 +- ports/espressif/supervisor/internal_flash.c | 16 +- ports/espressif/supervisor/port.c | 8 +- ports/espressif/supervisor/usb.c | 2 +- ports/espressif/supervisor/usb_serial_jtag.c | 6 +- ports/litex/boards/fomu/pins.c | 2 +- ports/litex/common-hal/microcontroller/Pin.c | 2 +- .../common-hal/microcontroller/__init__.c | 2 +- ports/litex/common-hal/os/__init__.c | 14 +- .../boards/adafruit_metro_m7_1011_sd/pins.c | 2 +- .../mimxrt10xx/boards/feather_m7_1011/pins.c | 2 +- .../boards/feather_mimxrt1011/pins.c | 2 +- .../boards/feather_mimxrt1062/pins.c | 2 +- ports/mimxrt10xx/boards/imxrt1010_evk/pins.c | 2 +- ports/mimxrt10xx/boards/imxrt1015_evk/pins.c | 2 +- ports/mimxrt10xx/boards/imxrt1020_evk/pins.c | 2 +- ports/mimxrt10xx/boards/imxrt1040_evk/pins.c | 2 +- ports/mimxrt10xx/boards/imxrt1050_evkb/pins.c | 2 +- ports/mimxrt10xx/boards/imxrt1060_evk/pins.c | 2 +- ports/mimxrt10xx/boards/imxrt1060_evkb/pins.c | 2 +- ports/mimxrt10xx/boards/metro_m7_1011/pins.c | 2 +- .../boards/sparkfun_teensy_micromod/pins.c | 2 +- ports/mimxrt10xx/boards/teensy40/pins.c | 2 +- ports/mimxrt10xx/boards/teensy41/pins.c | 2 +- .../mimxrt10xx/common-hal/audiobusio/I2SOut.c | 2 +- .../common-hal/audiopwmio/PWMAudioOut.c | 2 +- ports/mimxrt10xx/common-hal/busio/I2C.c | 6 +- ports/mimxrt10xx/common-hal/busio/SPI.c | 8 +- ports/mimxrt10xx/common-hal/busio/UART.c | 4 +- .../common-hal/microcontroller/Pin.c | 6 +- .../common-hal/microcontroller/__init__.c | 2 +- ports/mimxrt10xx/common-hal/os/__init__.c | 14 +- ports/mimxrt10xx/common-hal/pwmio/PWMOut.c | 2 +- ports/nordic/boards/ADM_B_NRF52840_1/pins.c | 2 +- .../boards/Seeed_XIAO_nRF52840_Sense/pins.c | 2 +- ports/nordic/boards/TG-Watch/pins.c | 2 +- .../adafruit_led_glasses_nrf52840/pins.c | 2 +- ports/nordic/boards/aramcon2_badge/pins.c | 2 +- ports/nordic/boards/aramcon_badge_2019/pins.c | 2 +- .../nordic/boards/arduino_nano_33_ble/pins.c | 2 +- ports/nordic/boards/bastble/pins.c | 2 +- .../bless_dev_board_multi_sensor/pins.c | 2 +- ports/nordic/boards/bluemicro833/pins.c | 2 +- ports/nordic/boards/bluemicro840/pins.c | 2 +- ports/nordic/boards/challenger_840/pins.c | 2 +- .../boards/circuitplayground_bluefruit/pins.c | 2 +- .../boards/clue_nrf52840_express/pins.c | 2 +- .../nordic/boards/electronut_labs_blip/pins.c | 2 +- .../boards/electronut_labs_papyr/pins.c | 2 +- ports/nordic/boards/espruino_banglejs2/pins.c | 2 +- .../boards/feather_bluefruit_sense/pins.c | 2 +- .../boards/feather_nrf52840_express/pins.c | 2 +- ports/nordic/boards/hiibot_bluefi/pins.c | 2 +- ports/nordic/boards/ikigaisense_vita/pins.c | 2 +- .../boards/itsybitsy_nrf52840_express/pins.c | 2 +- .../boards/makerdiary_m60_keyboard/pins.c | 2 +- .../makerdiary_nrf52840_connectkit/pins.c | 2 +- .../makerdiary_nrf52840_m2_devkit/pins.c | 2 +- .../boards/makerdiary_nrf52840_mdk/pins.c | 2 +- .../makerdiary_nrf52840_mdk_usb_dongle/pins.c | 2 +- .../boards/metro_nrf52840_express/pins.c | 2 +- ports/nordic/boards/microbit_v2/pins.c | 2 +- ports/nordic/boards/nice_nano/pins.c | 2 +- ports/nordic/boards/ohs2020_badge/pins.c | 2 +- ports/nordic/boards/particle_argon/pins.c | 2 +- ports/nordic/boards/particle_boron/pins.c | 2 +- ports/nordic/boards/particle_xenon/pins.c | 2 +- ports/nordic/boards/pca10056/pins.c | 2 +- ports/nordic/boards/pca10059/pins.c | 2 +- ports/nordic/boards/pca10100/pins.c | 2 +- ports/nordic/boards/pctel_wsc_1450/pins.c | 2 +- ports/nordic/boards/pillbug/pins.c | 2 +- ports/nordic/boards/pitaya_go/pins.c | 2 +- .../nordic/boards/raytac_mdbt50q-db-40/pins.c | 2 +- ports/nordic/boards/raytac_mdbt50q-rx/pins.c | 2 +- ports/nordic/boards/simmel/pins.c | 2 +- .../boards/sparkfun_nrf52840_micromod/pins.c | 2 +- .../boards/sparkfun_nrf52840_mini/pins.c | 2 +- .../boards/ssci_isp1807_dev_board/pins.c | 2 +- .../boards/ssci_isp1807_micro_board/pins.c | 2 +- ports/nordic/boards/supermini_nrf52840/pins.c | 2 +- ports/nordic/boards/teknikio_bluebird/pins.c | 2 +- .../tinkeringtech_scoutmakes_azul/pins.c | 2 +- ports/nordic/boards/warmbit_bluepixel/pins.c | 2 +- ports/nordic/common-hal/_bleio/Adapter.c | 22 +- .../nordic/common-hal/_bleio/Characteristic.c | 4 +- .../common-hal/_bleio/CharacteristicBuffer.c | 4 +- ports/nordic/common-hal/_bleio/Connection.c | 16 +- ports/nordic/common-hal/_bleio/PacketBuffer.c | 8 +- ports/nordic/common-hal/_bleio/Service.c | 4 +- ports/nordic/common-hal/_bleio/__init__.c | 2 +- ports/nordic/common-hal/_bleio/bonding.c | 18 +- ports/nordic/common-hal/alarm/__init__.c | 6 +- ports/nordic/common-hal/audiobusio/I2SOut.c | 2 +- .../common-hal/audiopwmio/PWMAudioOut.c | 12 +- ports/nordic/common-hal/busio/I2C.c | 8 +- ports/nordic/common-hal/busio/SPI.c | 6 +- ports/nordic/common-hal/microcontroller/Pin.c | 6 +- .../common-hal/microcontroller/__init__.c | 2 +- ports/nordic/common-hal/os/__init__.c | 14 +- ports/nordic/common-hal/pwmio/PWMOut.c | 10 +- .../common-hal/watchdog/WatchDogTimer.c | 12 +- ports/nordic/peripherals/nrf/nvm.c | 6 +- ports/nordic/peripherals/nrf/timers.c | 2 +- ports/nordic/supervisor/port.c | 6 +- ports/nordic/supervisor/qspi_flash.c | 2 +- ports/raspberrypi/audio_dma.c | 6 +- ports/raspberrypi/bindings/cyw43/__init__.c | 12 +- .../bindings/picodvi/Framebuffer.c | 36 +-- ports/raspberrypi/bindings/picodvi/__init__.c | 4 +- .../bindings/rp2pio/StateMachine.c | 50 ++-- ports/raspberrypi/bindings/rp2pio/__init__.c | 8 +- ports/raspberrypi/boards/0xcb_helios/pins.c | 2 +- ports/raspberrypi/boards/42keebs_frood/pins.c | 2 +- .../boards/adafruit_feather_rp2040/pins.c | 2 +- .../boards/adafruit_feather_rp2040_can/pins.c | 2 +- .../boards/adafruit_feather_rp2040_dvi/pins.c | 2 +- .../adafruit_feather_rp2040_prop_maker/pins.c | 2 +- .../boards/adafruit_feather_rp2040_rfm/pins.c | 2 +- .../adafruit_feather_rp2040_scorpio/pins.c | 2 +- .../adafruit_feather_rp2040_thinkink/pins.c | 2 +- .../adafruit_feather_rp2040_usb_host/pins.c | 2 +- .../boards/adafruit_floppsy_rp2040/pins.c | 2 +- .../boards/adafruit_itsybitsy_rp2040/pins.c | 2 +- .../raspberrypi/boards/adafruit_kb2040/pins.c | 2 +- .../boards/adafruit_macropad_rp2040/pins.c | 2 +- .../boards/adafruit_metro_rp2040/pins.c | 2 +- .../boards/adafruit_qt2040_trinkey/pins.c | 2 +- .../boards/adafruit_qtpy_rp2040/pins.c | 2 +- .../boards/arduino_nano_rp2040_connect/pins.c | 2 +- .../boards/boardsource_blok/pins.c | 2 +- .../bradanlanestudio_explorer_rp2040/pins.c | 6 +- .../boards/breadstick_raspberry/pins.c | 2 +- .../boards/bwshockley_figpi/pins.c | 2 +- .../boards/challenger_nb_rp2040_wifi/pins.c | 2 +- .../boards/challenger_rp2040_lora/pins.c | 2 +- .../boards/challenger_rp2040_lte/pins.c | 2 +- .../boards/challenger_rp2040_sdrtc/pins.c | 2 +- .../boards/challenger_rp2040_subghz/pins.c | 2 +- .../boards/challenger_rp2040_wifi/pins.c | 2 +- .../boards/challenger_rp2040_wifi_ble/pins.c | 2 +- ports/raspberrypi/boards/cosmo_pico/pins.c | 2 +- .../boards/cytron_edu_pico_w/pins.c | 2 +- .../boards/cytron_maker_nano_rp2040/pins.c | 2 +- .../boards/cytron_maker_pi_rp2040/pins.c | 2 +- .../boards/cytron_maker_uno_rp2040/pins.c | 2 +- .../boards/datanoise_picoadk/pins.c | 2 +- ports/raspberrypi/boards/e_fidget/pins.c | 2 +- .../boards/elecfreaks_picoed/pins.c | 2 +- .../boards/electrolama_minik/pins.c | 2 +- .../raspberrypi/boards/hack_club_sprig/pins.c | 2 +- .../boards/heiafr_picomo_v2/pins.c | 2 +- .../jpconstantineau_encoderpad_rp2040/pins.c | 2 +- .../boards/jpconstantineau_pykey18/pins.c | 2 +- .../boards/jpconstantineau_pykey44/pins.c | 2 +- .../boards/jpconstantineau_pykey60/pins.c | 2 +- .../boards/jpconstantineau_pykey87/pins.c | 2 +- .../boards/lilygo_t_display_rp2040/pins.c | 2 +- .../raspberrypi/boards/maple_elite_pi/pins.c | 2 +- .../boards/melopero_shake_rp2040/pins.c | 2 +- .../boards/nullbits_bit_c_pro/pins.c | 2 +- .../raspberrypi/boards/odt_bread_2040/pins.c | 2 +- .../boards/odt_cast_away_rp2040/pins.c | 2 +- .../boards/pajenicko_picopad/pins.c | 2 +- .../boards/pimoroni_badger2040/pins.c | 2 +- .../boards/pimoroni_badger2040w/pins.c | 2 +- .../boards/pimoroni_inky_frame_5_7/pins.c | 6 +- .../boards/pimoroni_inky_frame_7_3/pins.c | 6 +- .../boards/pimoroni_interstate75/pins.c | 2 +- .../boards/pimoroni_keybow2040/pins.c | 2 +- .../boards/pimoroni_motor2040/pins.c | 2 +- .../boards/pimoroni_pga2040/pins.c | 2 +- .../boards/pimoroni_pico_dv_base/pins.c | 2 +- .../boards/pimoroni_pico_dv_base_w/pins.c | 2 +- .../boards/pimoroni_picolipo_16mb/pins.c | 2 +- .../boards/pimoroni_picolipo_4mb/pins.c | 2 +- .../boards/pimoroni_picosystem/pins.c | 2 +- .../boards/pimoroni_plasma2040/pins.c | 2 +- .../boards/pimoroni_plasma2040w/pins.c | 2 +- .../boards/pimoroni_servo2040/pins.c | 2 +- .../boards/pimoroni_tiny2040/pins.c | 2 +- .../boards/pimoroni_tiny2040_2mb/pins.c | 2 +- .../boards/raspberry_pi_pico/pins.c | 2 +- .../boards/raspberry_pi_pico_w/pins.c | 2 +- ports/raspberrypi/boards/rfguru_rp2040/pins.c | 2 +- .../boards/seeeduino_xiao_rp2040/pins.c | 2 +- .../boards/silicognition_rp2040_shim/pins.c | 2 +- .../boards/solderparty_bbq20kbd/pins.c | 2 +- .../boards/solderparty_rp2040_stamp/pins.c | 2 +- .../boards/sparkfun_micromod_rp2040/pins.c | 2 +- .../boards/sparkfun_pro_micro_rp2040/pins.c | 2 +- .../boards/sparkfun_thing_plus_rp2040/pins.c | 2 +- .../raspberrypi/boards/splitkb_liatris/pins.c | 2 +- .../takayoshiotake_octave_rp2040/pins.c | 2 +- ports/raspberrypi/boards/ugame22/pins.c | 2 +- .../boards/vcc_gnd_yd_rp2040/pins.c | 2 +- .../boards/waveshare_rp2040_geek/pins.c | 2 +- .../boards/waveshare_rp2040_lcd_0_96/pins.c | 2 +- .../boards/waveshare_rp2040_lcd_1_28/pins.c | 2 +- .../boards/waveshare_rp2040_plus_16mb/pins.c | 2 +- .../boards/waveshare_rp2040_plus_4mb/pins.c | 2 +- .../boards/waveshare_rp2040_tiny/pins.c | 2 +- .../waveshare_rp2040_touch_lcd_1_28/pins.c | 2 +- .../boards/waveshare_rp2040_zero/pins.c | 2 +- .../boards/weact_studio_pico/pins.c | 2 +- .../boards/weact_studio_pico_16mb/pins.c | 2 +- .../boards/wisdpi_ardu2040m/pins.c | 2 +- .../boards/wisdpi_tiny_rp2040/pins.c | 2 +- .../boards/wiznet_w5100s_evb_pico/pins.c | 2 +- .../boards/wiznet_w5500_evb_pico/pins.c | 2 +- .../boards/zrichard_rp2.65-f/pins.c | 2 +- ports/raspberrypi/common-hal/alarm/__init__.c | 8 +- .../common-hal/alarm/pin/PinAlarm.c | 10 +- .../common-hal/alarm/time/TimeAlarm.c | 6 +- ports/raspberrypi/common-hal/busio/I2C.c | 6 +- ports/raspberrypi/common-hal/busio/SPI.c | 4 +- ports/raspberrypi/common-hal/busio/UART.c | 2 +- .../common-hal/i2ctarget/I2CTarget.c | 2 +- .../imagecapture/ParallelImageCapture.c | 2 +- ports/raspberrypi/common-hal/mdns/Server.c | 14 +- .../common-hal/microcontroller/Pin.c | 2 +- ports/raspberrypi/common-hal/os/__init__.c | 14 +- .../common-hal/picodvi/Framebuffer.c | 4 +- .../common-hal/rotaryio/IncrementalEncoder.c | 8 +- .../common-hal/rp2pio/StateMachine.c | 34 +-- .../common-hal/socketpool/Socket.c | 44 +-- .../common-hal/socketpool/SocketPool.c | 4 +- ports/raspberrypi/common-hal/usb_host/Port.c | 6 +- ports/raspberrypi/supervisor/internal_flash.c | 6 +- ports/raspberrypi/supervisor/port.c | 6 +- ports/raspberrypi/supervisor/usb.c | 2 +- .../renode/boards/renode_cortex_m0plus/pins.c | 2 +- ports/renode/common-hal/os/__init__.c | 14 +- ports/stm/boards/espruino_pico/pins.c | 2 +- ports/stm/boards/espruino_wifi/pins.c | 2 +- .../boards/feather_stm32f405_express/pins.c | 4 +- ports/stm/boards/meowbit_v121/pins.c | 2 +- ports/stm/boards/nucleo_f446re/pins.c | 2 +- ports/stm/boards/nucleo_f746zg/pins.c | 2 +- ports/stm/boards/nucleo_f767zi/pins.c | 2 +- ports/stm/boards/nucleo_h743zi_2/pins.c | 2 +- ports/stm/boards/openmv_h7/pins.c | 2 +- ports/stm/boards/pyb_nano_v2/pins.c | 2 +- ports/stm/boards/pyboard_v11/pins.c | 2 +- .../boards/sparkfun_stm32_thing_plus/pins.c | 4 +- .../boards/sparkfun_stm32f405_micromod/pins.c | 2 +- ports/stm/boards/stm32f411ce_blackpill/pins.c | 2 +- .../stm32f411ce_blackpill_with_flash/pins.c | 2 +- ports/stm/boards/stm32f411ve_discovery/pins.c | 2 +- ports/stm/boards/stm32f412zg_discovery/pins.c | 2 +- ports/stm/boards/stm32f4_discovery/pins.c | 2 +- ports/stm/boards/stm32f746g_discovery/pins.c | 2 +- ports/stm/boards/swan_r5/pins.c | 4 +- ports/stm/boards/thunderpack_v11/pins.c | 2 +- ports/stm/boards/thunderpack_v12/pins.c | 2 +- ports/stm/common-hal/alarm/SleepMemory.c | 4 +- ports/stm/common-hal/alarm/__init__.c | 4 +- ports/stm/common-hal/alarm/pin/PinAlarm.c | 10 +- ports/stm/common-hal/alarm/time/TimeAlarm.c | 6 +- ports/stm/common-hal/analogio/AnalogOut.c | 2 +- ports/stm/common-hal/audiopwmio/PWMAudioOut.c | 20 +- ports/stm/common-hal/busio/I2C.c | 20 +- ports/stm/common-hal/busio/SPI.c | 20 +- ports/stm/common-hal/busio/UART.c | 20 +- ports/stm/common-hal/canio/CAN.c | 4 +- ports/stm/common-hal/canio/Listener.c | 20 +- ports/stm/common-hal/microcontroller/Pin.c | 4 +- .../common-hal/microcontroller/Processor.c | 4 +- ports/stm/common-hal/os/__init__.c | 14 +- ports/stm/common-hal/pulseio/PulseIn.c | 10 +- ports/stm/common-hal/pulseio/PulseOut.c | 20 +- ports/stm/common-hal/pwmio/PWMOut.c | 8 +- ports/stm/common-hal/sdioio/SDCard.c | 18 +- ports/stm/packages/TFBGA216.c | 2 +- ports/stm/peripherals/exti.c | 6 +- ports/stm/peripherals/rtc.c | 8 +- ports/stm/peripherals/timers.c | 2 +- ports/stm/supervisor/internal_flash.c | 20 +- ports/stm/supervisor/usb.c | 2 +- ports/unix/displayio_min.c | 6 +- py/enum.h | 2 +- shared-bindings/__future__/__init__.c | 4 +- shared-bindings/_bleio/Adapter.c | 48 ++-- shared-bindings/_bleio/Address.c | 16 +- shared-bindings/_bleio/Attribute.c | 4 +- shared-bindings/_bleio/Characteristic.c | 44 +-- shared-bindings/_bleio/CharacteristicBuffer.c | 28 +- shared-bindings/_bleio/Connection.c | 36 +-- shared-bindings/_bleio/Descriptor.c | 26 +- shared-bindings/_bleio/PacketBuffer.c | 28 +- shared-bindings/_bleio/ScanEntry.c | 28 +- shared-bindings/_bleio/ScanResults.c | 2 +- shared-bindings/_bleio/Service.c | 28 +- shared-bindings/_bleio/UUID.c | 20 +- shared-bindings/_bleio/__init__.c | 14 +- shared-bindings/_eve/__init__.c | 234 +++++++-------- shared-bindings/_pew/PewPew.c | 6 +- shared-bindings/_pew/__init__.c | 12 +- shared-bindings/_pixelmap/PixelMap.c | 26 +- shared-bindings/_pixelmap/__init__.c | 4 +- shared-bindings/_stage/Layer.c | 14 +- shared-bindings/_stage/Text.c | 10 +- shared-bindings/_stage/__init__.c | 6 +- .../adafruit_bus_device/__init__.c | 12 +- .../i2c_device/I2CDevice.c | 22 +- .../spi_device/SPIDevice.c | 14 +- shared-bindings/adafruit_pixelbuf/PixelBuf.c | 30 +- shared-bindings/adafruit_pixelbuf/__init__.c | 4 +- shared-bindings/aesio/__init__.c | 6 +- shared-bindings/aesio/aes.c | 22 +- shared-bindings/alarm/SleepMemory.c | 8 +- shared-bindings/alarm/__init__.c | 28 +- shared-bindings/alarm/pin/PinAlarm.c | 10 +- shared-bindings/alarm/time/TimeAlarm.c | 8 +- shared-bindings/alarm/touch/TouchAlarm.c | 8 +- shared-bindings/analogbufio/BufferedIn.c | 16 +- shared-bindings/analogbufio/__init__.c | 4 +- shared-bindings/analogio/AnalogIn.c | 18 +- shared-bindings/analogio/AnalogOut.c | 16 +- shared-bindings/analogio/__init__.c | 4 +- shared-bindings/atexit/__init__.c | 12 +- shared-bindings/audiobusio/I2SOut.c | 28 +- shared-bindings/audiobusio/PDMIn.c | 20 +- shared-bindings/audiobusio/__init__.c | 4 +- shared-bindings/audiocore/RawSample.c | 22 +- shared-bindings/audiocore/WaveFile.c | 26 +- shared-bindings/audiocore/__init__.c | 16 +- shared-bindings/audioio/AudioOut.c | 28 +- shared-bindings/audioio/__init__.c | 4 +- shared-bindings/audiomixer/Mixer.c | 28 +- shared-bindings/audiomixer/MixerVoice.c | 16 +- shared-bindings/audiomixer/__init__.c | 4 +- shared-bindings/audiomp3/MP3Decoder.c | 36 +-- shared-bindings/audiomp3/__init__.c | 4 +- shared-bindings/audiopwmio/PWMAudioOut.c | 28 +- shared-bindings/audiopwmio/__init__.c | 4 +- shared-bindings/bitbangio/I2C.c | 32 +-- shared-bindings/bitbangio/SPI.c | 26 +- shared-bindings/bitbangio/__init__.c | 4 +- shared-bindings/bitmapfilter/__init__.c | 24 +- shared-bindings/bitmaptools/__init__.c | 38 +-- shared-bindings/bitops/__init__.c | 8 +- shared-bindings/board/__init__.c | 12 +- shared-bindings/board/__init__.h | 4 +- shared-bindings/busdisplay/BusDisplay.c | 34 +-- shared-bindings/busdisplay/__init__.c | 4 +- shared-bindings/busio/I2C.c | 28 +- shared-bindings/busio/SPI.c | 30 +- shared-bindings/busio/UART.c | 48 ++-- shared-bindings/busio/__init__.c | 4 +- shared-bindings/camera/Camera.c | 12 +- shared-bindings/camera/ImageFormat.c | 6 +- shared-bindings/camera/__init__.c | 4 +- shared-bindings/canio/CAN.c | 42 +-- shared-bindings/canio/Listener.c | 34 +-- shared-bindings/canio/Match.c | 12 +- shared-bindings/canio/Message.c | 18 +- .../canio/RemoteTransmissionRequest.c | 18 +- shared-bindings/canio/__init__.c | 6 +- shared-bindings/codeop/__init__.c | 8 +- shared-bindings/countio/Counter.c | 22 +- shared-bindings/countio/Edge.c | 2 +- shared-bindings/countio/__init__.c | 4 +- shared-bindings/digitalio/DigitalInOut.c | 36 +-- shared-bindings/digitalio/Direction.c | 6 +- shared-bindings/digitalio/DriveMode.c | 6 +- shared-bindings/digitalio/Pull.c | 6 +- shared-bindings/digitalio/__init__.c | 4 +- shared-bindings/displayio/Bitmap.c | 24 +- shared-bindings/displayio/ColorConverter.c | 16 +- shared-bindings/displayio/Colorspace.c | 2 +- shared-bindings/displayio/Group.c | 38 +-- shared-bindings/displayio/OnDiskBitmap.c | 12 +- shared-bindings/displayio/Palette.c | 20 +- shared-bindings/displayio/TileGrid.c | 50 ++-- shared-bindings/displayio/__init__.c | 6 +- .../dotclockframebuffer/DotClockFramebuffer.c | 48 ++-- .../dotclockframebuffer/__init__.c | 8 +- shared-bindings/dualbank/__init__.c | 14 +- shared-bindings/epaperdisplay/EPaperDisplay.c | 30 +- shared-bindings/epaperdisplay/__init__.c | 4 +- shared-bindings/floppyio/__init__.c | 8 +- shared-bindings/fontio/BuiltinFont.c | 10 +- shared-bindings/fontio/__init__.c | 4 +- shared-bindings/fourwire/FourWire.c | 10 +- shared-bindings/fourwire/__init__.c | 4 +- .../framebufferio/FramebufferDisplay.c | 34 +-- shared-bindings/framebufferio/__init__.c | 2 +- shared-bindings/frequencyio/FrequencyIn.c | 28 +- shared-bindings/frequencyio/__init__.c | 4 +- shared-bindings/getpass/__init__.c | 8 +- shared-bindings/gifio/GifWriter.c | 4 +- shared-bindings/gifio/OnDiskGif.c | 32 +-- shared-bindings/gifio/__init__.c | 4 +- shared-bindings/hashlib/Hash.c | 12 +- shared-bindings/hashlib/__init__.c | 8 +- shared-bindings/i2cdisplaybus/I2CDisplayBus.c | 10 +- shared-bindings/i2cdisplaybus/__init__.c | 4 +- shared-bindings/i2ctarget/I2CTarget.c | 46 +-- shared-bindings/i2ctarget/__init__.c | 4 +- .../imagecapture/ParallelImageCapture.c | 30 +- shared-bindings/imagecapture/__init__.c | 4 +- shared-bindings/ipaddress/IPv4Address.c | 16 +- shared-bindings/ipaddress/__init__.c | 6 +- shared-bindings/is31fl3741/FrameBuffer.c | 44 +-- shared-bindings/is31fl3741/IS31FL3741.c | 20 +- shared-bindings/is31fl3741/__init__.c | 4 +- shared-bindings/jpegio/JpegDecoder.c | 12 +- shared-bindings/jpegio/__init__.c | 4 +- shared-bindings/keypad/Event.c | 20 +- shared-bindings/keypad/EventQueue.c | 18 +- shared-bindings/keypad/KeyMatrix.c | 18 +- shared-bindings/keypad/Keys.c | 12 +- shared-bindings/keypad/ShiftRegisterKeys.c | 12 +- shared-bindings/keypad/__init__.c | 12 +- shared-bindings/keypad_demux/DemuxKeyMatrix.c | 18 +- shared-bindings/keypad_demux/__init__.c | 4 +- shared-bindings/locale/__init__.c | 6 +- shared-bindings/math/__init__.c | 46 +-- shared-bindings/max3421e/Max3421E.c | 8 +- shared-bindings/max3421e/__init__.c | 4 +- shared-bindings/mdns/RemoteService.c | 30 +- shared-bindings/mdns/Server.c | 28 +- shared-bindings/mdns/__init__.c | 4 +- shared-bindings/memorymap/AddressRange.c | 10 +- shared-bindings/memorymap/__init__.c | 4 +- .../memorymonitor/AllocationAlarm.c | 14 +- .../memorymonitor/AllocationSize.c | 18 +- shared-bindings/memorymonitor/__init__.c | 4 +- shared-bindings/microcontroller/Processor.c | 16 +- shared-bindings/microcontroller/ResetReason.c | 2 +- shared-bindings/microcontroller/RunMode.c | 6 +- shared-bindings/microcontroller/__init__.c | 24 +- shared-bindings/msgpack/ExtType.c | 14 +- shared-bindings/msgpack/__init__.c | 12 +- shared-bindings/neopixel_write/__init__.c | 10 +- shared-bindings/nvm/ByteArray.c | 8 +- shared-bindings/nvm/__init__.c | 4 +- shared-bindings/onewireio/OneWire.c | 22 +- shared-bindings/onewireio/__init__.c | 4 +- shared-bindings/os/__init__.c | 36 +-- .../paralleldisplaybus/ParallelBus.c | 10 +- shared-bindings/paralleldisplaybus/__init__.c | 4 +- shared-bindings/ps2io/Ps2.c | 24 +- shared-bindings/ps2io/__init__.c | 4 +- shared-bindings/pulseio/PulseIn.c | 32 +-- shared-bindings/pulseio/PulseOut.c | 16 +- shared-bindings/pulseio/__init__.c | 4 +- shared-bindings/pwmio/PWMOut.c | 24 +- shared-bindings/pwmio/__init__.c | 4 +- shared-bindings/qrio/PixelPolicy.c | 2 +- shared-bindings/qrio/QRDecoder.c | 20 +- shared-bindings/qrio/__init__.c | 4 +- shared-bindings/rainbowio/__init__.c | 8 +- shared-bindings/random/__init__.c | 32 +-- shared-bindings/rgbmatrix/RGBMatrix.c | 52 ++-- shared-bindings/rgbmatrix/__init__.c | 4 +- shared-bindings/rotaryio/IncrementalEncoder.c | 24 +- shared-bindings/rotaryio/__init__.c | 4 +- shared-bindings/rtc/RTC.c | 14 +- shared-bindings/rtc/__init__.c | 6 +- shared-bindings/sdcardio/SDCard.c | 16 +- shared-bindings/sdcardio/__init__.c | 4 +- shared-bindings/sdioio/SDCard.c | 26 +- shared-bindings/sdioio/__init__.c | 4 +- .../sharpdisplay/SharpMemoryFramebuffer.c | 12 +- shared-bindings/sharpdisplay/__init__.c | 4 +- shared-bindings/socketpool/Socket.c | 70 ++--- shared-bindings/socketpool/SocketPool.c | 12 +- shared-bindings/socketpool/__init__.c | 4 +- shared-bindings/ssl/SSLContext.c | 32 +-- shared-bindings/ssl/SSLSocket.c | 48 ++-- shared-bindings/ssl/__init__.c | 6 +- shared-bindings/storage/__init__.c | 18 +- shared-bindings/struct/__init__.c | 14 +- shared-bindings/supervisor/RunReason.c | 2 +- shared-bindings/supervisor/Runtime.c | 28 +- shared-bindings/supervisor/SafeModeReason.c | 2 +- shared-bindings/supervisor/StatusBar.c | 12 +- shared-bindings/supervisor/__init__.c | 14 +- shared-bindings/synthio/Biquad.c | 2 +- shared-bindings/synthio/LFO.c | 42 +-- shared-bindings/synthio/Math.c | 34 +-- shared-bindings/synthio/MidiTrack.c | 22 +- shared-bindings/synthio/Note.c | 62 ++-- shared-bindings/synthio/Synthesizer.c | 56 ++-- shared-bindings/synthio/__init__.c | 16 +- shared-bindings/terminalio/Terminal.c | 12 +- shared-bindings/terminalio/__init__.c | 4 +- shared-bindings/time/__init__.c | 20 +- shared-bindings/touchio/TouchIn.c | 24 +- shared-bindings/touchio/__init__.c | 4 +- shared-bindings/traceback/__init__.c | 14 +- shared-bindings/uheap/__init__.c | 8 +- shared-bindings/usb/__init__.c | 4 +- shared-bindings/usb/core/Device.c | 28 +- shared-bindings/usb/core/__init__.c | 10 +- shared-bindings/usb_cdc/Serial.c | 30 +- shared-bindings/usb_cdc/__init__.c | 4 +- shared-bindings/usb_hid/Device.c | 14 +- shared-bindings/usb_hid/__init__.c | 12 +- shared-bindings/usb_host/Port.c | 6 +- shared-bindings/usb_host/__init__.c | 6 +- shared-bindings/usb_midi/PortIn.c | 10 +- shared-bindings/usb_midi/PortOut.c | 10 +- shared-bindings/usb_midi/__init__.c | 6 +- shared-bindings/usb_video/USBFramebuffer.c | 30 +- shared-bindings/usb_video/__init__.c | 4 +- shared-bindings/ustack/__init__.c | 16 +- shared-bindings/vectorio/Circle.c | 14 +- shared-bindings/vectorio/Polygon.c | 14 +- shared-bindings/vectorio/Rectangle.c | 18 +- shared-bindings/vectorio/VectorShape.c | 26 +- shared-bindings/vectorio/__init__.c | 4 +- shared-bindings/warnings/__init__.c | 10 +- shared-bindings/watchdog/WatchDogMode.c | 2 +- shared-bindings/watchdog/WatchDogTimer.c | 20 +- shared-bindings/watchdog/__init__.c | 4 +- shared-bindings/wifi/AuthMode.c | 2 +- shared-bindings/wifi/Monitor.c | 22 +- shared-bindings/wifi/Network.c | 16 +- shared-bindings/wifi/Packet.c | 2 +- shared-bindings/wifi/Radio.c | 94 +++---- shared-bindings/wifi/ScannedNetworks.c | 2 +- shared-bindings/wifi/__init__.c | 8 +- shared-bindings/zlib/__init__.c | 8 +- shared-module/_eve/__init__.c | 2 +- shared-module/adafruit_pixelbuf/PixelBuf.c | 4 +- shared-module/audiomp3/MP3Decoder.c | 12 +- shared-module/bitbangio/I2C.c | 20 +- shared-module/bitmaptools/__init__.c | 8 +- shared-module/busdisplay/BusDisplay.c | 8 +- shared-module/displayio/TileGrid.c | 4 +- shared-module/displayio/__init__.c | 2 +- shared-module/epaperdisplay/EPaperDisplay.c | 14 +- .../framebufferio/FramebufferDisplay.c | 8 +- shared-module/msgpack/__init__.c | 50 ++-- shared-module/os/__init__.c | 6 +- shared-module/os/getenv.c | 42 +-- shared-module/qrio/QRDecoder.c | 4 +- shared-module/random/__init__.c | 10 +- shared-module/rgbmatrix/RGBMatrix.c | 10 +- shared-module/sdcardio/SDCard.c | 30 +- .../sharpdisplay/SharpMemoryFramebuffer.c | 34 +-- shared-module/ssl/SSLSocket.c | 12 +- shared-module/storage/__init__.c | 4 +- shared-module/struct/__init__.c | 8 +- shared-module/synthio/Biquad.c | 2 +- shared-module/synthio/MidiTrack.c | 6 +- shared-module/synthio/Note.c | 4 +- shared-module/synthio/Synthesizer.c | 4 +- shared-module/synthio/__init__.c | 26 +- shared-module/usb/core/Device.c | 18 +- shared-module/usb/utf16le.c | 8 +- shared-module/usb_hid/Device.c | 2 +- shared-module/usb_video/__init__.c | 2 +- shared/runtime/context_manager_helpers.c | 2 +- supervisor/shared/background_callback.c | 2 +- supervisor/shared/bluetooth/bluetooth.c | 18 +- supervisor/shared/bluetooth/file_transfer.c | 64 ++--- supervisor/shared/bluetooth/serial.c | 36 +-- .../shared/external_flash/external_flash.c | 2 +- supervisor/shared/flash.c | 22 +- supervisor/shared/serial.c | 2 +- supervisor/shared/translate/translate.c | 4 +- supervisor/shared/usb/host_keyboard.c | 42 +-- supervisor/shared/usb/usb_msc_flash.c | 2 +- supervisor/shared/web_workflow/web_workflow.c | 10 +- supervisor/shared/web_workflow/websocket.c | 6 +- supervisor/shared/workflow.c | 2 +- 957 files changed, 3880 insertions(+), 3880 deletions(-) diff --git a/devices/ble_hci/common-hal/_bleio/Adapter.c b/devices/ble_hci/common-hal/_bleio/Adapter.c index fd28f09a5e55..fac7eb9f5fdd 100644 --- a/devices/ble_hci/common-hal/_bleio/Adapter.c +++ b/devices/ble_hci/common-hal/_bleio/Adapter.c @@ -57,7 +57,7 @@ bleio_connection_internal_t bleio_connections[BLEIO_TOTAL_CONNECTION_COUNT]; -STATIC void add_generic_services(bleio_adapter_obj_t *adapter) { +static void add_generic_services(bleio_adapter_obj_t *adapter) { // Create Generic Access UUID, Service, and Characteristics. // Generic Access Service setup. @@ -158,13 +158,13 @@ STATIC void add_generic_services(bleio_adapter_obj_t *adapter) { } -STATIC void check_enabled(bleio_adapter_obj_t *adapter) { +static void check_enabled(bleio_adapter_obj_t *adapter) { if (!common_hal_bleio_adapter_get_enabled(adapter)) { mp_raise_bleio_BluetoothError(MP_ERROR_TEXT("Adapter not enabled")); } } -// STATIC bool adapter_on_ble_evt(ble_evt_t *ble_evt, void *self_in) { +// static bool adapter_on_ble_evt(ble_evt_t *ble_evt, void *self_in) { // bleio_adapter_obj_t *self = (bleio_adapter_obj_t*)self_in; // // For debugging. @@ -258,7 +258,7 @@ static void _adapter_set_name(bleio_adapter_obj_t *self, mp_obj_str_t *name_obj) // Get various values and limits set by the adapter. // Set event mask. -STATIC void bleio_adapter_hci_init(bleio_adapter_obj_t *self) { +static void bleio_adapter_hci_init(bleio_adapter_obj_t *self) { mp_int_t name_len = 0; #if CIRCUITPY_OS_GETENV @@ -418,7 +418,7 @@ void common_hal_bleio_adapter_set_name(bleio_adapter_obj_t *self, const char *na } -// STATIC bool scan_on_ble_evt(ble_evt_t *ble_evt, void *scan_results_in) { +// static bool scan_on_ble_evt(ble_evt_t *ble_evt, void *scan_results_in) { // bleio_scanresults_obj_t *scan_results = (bleio_scanresults_obj_t*)scan_results_in; // if (ble_evt->header.evt_id == BLE_GAP_EVT_TIMEOUT && @@ -516,7 +516,7 @@ void common_hal_bleio_adapter_stop_scan(bleio_adapter_obj_t *self) { // volatile bool done; // } connect_info_t; -// STATIC bool connect_on_ble_evt(ble_evt_t *ble_evt, void *info_in) { +// static bool connect_on_ble_evt(ble_evt_t *ble_evt, void *info_in) { // connect_info_t *info = (connect_info_t*)info_in; // switch (ble_evt->header.evt_id) { @@ -613,13 +613,13 @@ mp_obj_t common_hal_bleio_adapter_connect(bleio_adapter_obj_t *self, bleio_addre return mp_const_none; } -STATIC void check_data_fit(size_t data_len, bool connectable) { +static void check_data_fit(size_t data_len, bool connectable) { if (data_len > MAX_ADVERTISEMENT_SIZE) { mp_raise_ValueError(MP_ERROR_TEXT("Data too large for advertisement packet")); } } -// STATIC bool advertising_on_ble_evt(ble_evt_t *ble_evt, void *self_in) { +// static bool advertising_on_ble_evt(ble_evt_t *ble_evt, void *self_in) { // bleio_adapter_obj_t *self = (bleio_adapter_obj_t*)self_in; // switch (ble_evt->header.evt_id) { diff --git a/devices/ble_hci/common-hal/_bleio/CharacteristicBuffer.c b/devices/ble_hci/common-hal/_bleio/CharacteristicBuffer.c index e7c6ec9817b4..9692e5f72427 100644 --- a/devices/ble_hci/common-hal/_bleio/CharacteristicBuffer.c +++ b/devices/ble_hci/common-hal/_bleio/CharacteristicBuffer.c @@ -18,7 +18,7 @@ #include "common-hal/_bleio/CharacteristicBuffer.h" // Push all the data onto the ring buffer. When the buffer is full, new bytes will be dropped. -STATIC void write_to_ringbuf(bleio_characteristic_buffer_obj_t *self, uint8_t *data, uint16_t len) { +static void write_to_ringbuf(bleio_characteristic_buffer_obj_t *self, uint8_t *data, uint16_t len) { ringbuf_put_n(&self->ringbuf, data, len); } diff --git a/devices/ble_hci/common-hal/_bleio/Connection.c b/devices/ble_hci/common-hal/_bleio/Connection.c index 4bd44ce2ba79..30ed0af575c5 100644 --- a/devices/ble_hci/common-hal/_bleio/Connection.c +++ b/devices/ble_hci/common-hal/_bleio/Connection.c @@ -368,7 +368,7 @@ void common_hal_bleio_connection_set_connection_interval(bleio_connection_intern } // service_uuid may be NULL, to discover all services. -// STATIC bool discover_next_services(bleio_connection_internal_t* connection, uint16_t start_handle, ble_uuid_t *service_uuid) { +// static bool discover_next_services(bleio_connection_internal_t* connection, uint16_t start_handle, ble_uuid_t *service_uuid) { // m_discovery_successful = false; // m_discovery_in_process = true; @@ -385,7 +385,7 @@ void common_hal_bleio_connection_set_connection_interval(bleio_connection_intern // return m_discovery_successful; // } -// STATIC bool discover_next_characteristics(bleio_connection_internal_t* connection, bleio_service_obj_t *service, uint16_t start_handle) { +// static bool discover_next_characteristics(bleio_connection_internal_t* connection, bleio_service_obj_t *service, uint16_t start_handle) { // m_char_discovery_service = service; // ble_gattc_handle_range_t handle_range; @@ -407,7 +407,7 @@ void common_hal_bleio_connection_set_connection_interval(bleio_connection_intern // return m_discovery_successful; // } -// STATIC bool discover_next_descriptors(bleio_connection_internal_t* connection, bleio_characteristic_obj_t *characteristic, uint16_t start_handle, uint16_t end_handle) { +// static bool discover_next_descriptors(bleio_connection_internal_t* connection, bleio_characteristic_obj_t *characteristic, uint16_t start_handle, uint16_t end_handle) { // m_desc_discovery_characteristic = characteristic; // ble_gattc_handle_range_t handle_range; @@ -429,7 +429,7 @@ void common_hal_bleio_connection_set_connection_interval(bleio_connection_intern // return m_discovery_successful; // } -// STATIC void on_primary_srv_discovery_rsp(ble_gattc_evt_prim_srvc_disc_rsp_t *response, bleio_connection_internal_t* connection) { +// static void on_primary_srv_discovery_rsp(ble_gattc_evt_prim_srvc_disc_rsp_t *response, bleio_connection_internal_t* connection) { // for (size_t i = 0; i < response->count; ++i) { // ble_gattc_service_t *gattc_service = &response->services[i]; @@ -465,7 +465,7 @@ void common_hal_bleio_connection_set_connection_interval(bleio_connection_intern // m_discovery_in_process = false; // } -// STATIC void on_char_discovery_rsp(ble_gattc_evt_char_disc_rsp_t *response, bleio_connection_internal_t* connection) { +// static void on_char_discovery_rsp(ble_gattc_evt_char_disc_rsp_t *response, bleio_connection_internal_t* connection) { // for (size_t i = 0; i < response->count; ++i) { // ble_gattc_char_t *gattc_char = &response->chars[i]; @@ -509,7 +509,7 @@ void common_hal_bleio_connection_set_connection_interval(bleio_connection_intern // m_discovery_in_process = false; // } -// STATIC void on_desc_discovery_rsp(ble_gattc_evt_desc_disc_rsp_t *response, bleio_connection_internal_t* connection) { +// static void on_desc_discovery_rsp(ble_gattc_evt_desc_disc_rsp_t *response, bleio_connection_internal_t* connection) { // for (size_t i = 0; i < response->count; ++i) { // ble_gattc_desc_t *gattc_desc = &response->descs[i]; @@ -564,7 +564,7 @@ void common_hal_bleio_connection_set_connection_interval(bleio_connection_intern // m_discovery_in_process = false; // } -// STATIC bool discovery_on_ble_evt(ble_evt_t *ble_evt, mp_obj_t payload) { +// static bool discovery_on_ble_evt(ble_evt_t *ble_evt, mp_obj_t payload) { // bleio_connection_internal_t* connection = MP_OBJ_TO_PTR(payload); // switch (ble_evt->header.evt_id) { // case BLE_GAP_EVT_DISCONNECTED: @@ -592,7 +592,7 @@ void common_hal_bleio_connection_set_connection_interval(bleio_connection_intern // return true; // } -// STATIC void discover_remote_services(bleio_connection_internal_t *self, mp_obj_t service_uuids_whitelist) { +// static void discover_remote_services(bleio_connection_internal_t *self, mp_obj_t service_uuids_whitelist) { // ble_drv_add_event_handler(discovery_on_ble_evt, self); // // Start over with an empty list. diff --git a/devices/ble_hci/common-hal/_bleio/PacketBuffer.c b/devices/ble_hci/common-hal/_bleio/PacketBuffer.c index d4836700afa5..97626205a62f 100644 --- a/devices/ble_hci/common-hal/_bleio/PacketBuffer.c +++ b/devices/ble_hci/common-hal/_bleio/PacketBuffer.c @@ -16,7 +16,7 @@ #include "shared-bindings/_bleio/PacketBuffer.h" #include "supervisor/shared/tick.h" -STATIC void write_to_ringbuf(bleio_packet_buffer_obj_t *self, uint8_t *data, uint16_t len) { +static void write_to_ringbuf(bleio_packet_buffer_obj_t *self, uint8_t *data, uint16_t len) { if (len + sizeof(uint16_t) > ringbuf_size(&self->ringbuf)) { // This shouldn't happen. return; @@ -35,7 +35,7 @@ STATIC void write_to_ringbuf(bleio_packet_buffer_obj_t *self, uint8_t *data, uin ringbuf_put_n(&self->ringbuf, data, len); } -STATIC uint32_t queue_next_write(bleio_packet_buffer_obj_t *self) { +static uint32_t queue_next_write(bleio_packet_buffer_obj_t *self) { // Queue up the next outgoing buffer. We use two, one that has been passed to the SD for // transmission (when packet_queued is true) and the other is `pending` and can still be // modified. By primarily appending to the `pending` buffer we can reduce the protocol overhead diff --git a/devices/ble_hci/common-hal/_bleio/att.c b/devices/ble_hci/common-hal/_bleio/att.c index 57f7b0549ccc..930b4793161c 100644 --- a/devices/ble_hci/common-hal/_bleio/att.c +++ b/devices/ble_hci/common-hal/_bleio/att.c @@ -51,18 +51,18 @@ #include "shared-bindings/_bleio/UUID.h" #include "supervisor/shared/tick.h" -STATIC uint16_t max_mtu = BT_ATT_DEFAULT_LE_MTU; // 23 -STATIC unsigned long timeout = 5000; +static uint16_t max_mtu = BT_ATT_DEFAULT_LE_MTU; // 23 +static unsigned long timeout = 5000; -STATIC volatile bool confirm; +static volatile bool confirm; -STATIC uint16_t long_write_handle = BLE_GATT_HANDLE_INVALID; -STATIC uint8_t *long_write_value = NULL; -STATIC uint16_t long_write_value_length = 0; +static uint16_t long_write_handle = BLE_GATT_HANDLE_INVALID; +static uint8_t *long_write_value = NULL; +static uint16_t long_write_value_length = 0; // When we send a request, fill this struct with info about the expected response. // We check this against the actual received response. -STATIC struct { +static struct { uint16_t conn_handle; // Expected handle. uint8_t opcode; // Expected RSP opcode. uint8_t *buffer; // Pointer to response packet @@ -77,7 +77,7 @@ typedef struct __packed { uint8_t uuid[]; // 2 or 16 bytes } characteristic_declaration_t; -STATIC uint8_t bleio_properties_to_ble_spec_properties(uint8_t bleio_properties) { +static uint8_t bleio_properties_to_ble_spec_properties(uint8_t bleio_properties) { uint8_t ble_spec_properties = 0; if (bleio_properties & CHAR_PROP_BROADCAST) { ble_spec_properties |= BT_GATT_CHRC_BROADCAST; @@ -103,7 +103,7 @@ STATIC uint8_t bleio_properties_to_ble_spec_properties(uint8_t bleio_properties) // FIX not currently used; re-enable when used. #if 0 -STATIC uint8_t ble_spec_properties_to_bleio_properties(uint8_t ble_spec_properties) { +static uint8_t ble_spec_properties_to_bleio_properties(uint8_t ble_spec_properties) { uint8_t bleio_properties = 0; if (ble_spec_properties & BT_GATT_CHRC_BROADCAST) { bleio_properties |= CHAR_PROP_BROADCAST; @@ -128,7 +128,7 @@ STATIC uint8_t ble_spec_properties_to_bleio_properties(uint8_t ble_spec_properti } #endif // #if 0 -STATIC void send_error(uint16_t conn_handle, uint8_t opcode, uint16_t handle, uint8_t code) { +static void send_error(uint16_t conn_handle, uint8_t opcode, uint16_t handle, uint8_t code) { struct __packed { struct bt_att_hdr h; struct bt_att_error_rsp r; @@ -141,11 +141,11 @@ STATIC void send_error(uint16_t conn_handle, uint8_t opcode, uint16_t handle, ui hci_send_acl_pkt(conn_handle, BT_L2CAP_CID_ATT, sizeof(rsp), (uint8_t *)&rsp); } -STATIC void send_req(uint16_t conn_handle, size_t request_length, uint8_t *request_buffer) { +static void send_req(uint16_t conn_handle, size_t request_length, uint8_t *request_buffer) { hci_send_acl_pkt(conn_handle, BT_L2CAP_CID_ATT, request_length, request_buffer); } -STATIC int send_req_wait_for_rsp(uint16_t conn_handle, size_t request_length, uint8_t *request_buffer, uint8_t response_buffer[]) { +static int send_req_wait_for_rsp(uint16_t conn_handle, size_t request_length, uint8_t *request_buffer, uint8_t response_buffer[]) { // We expect a particular kind of response after this request. expected_rsp.conn_handle = conn_handle; // The response opcode is the request opcode + 1. @@ -179,7 +179,7 @@ STATIC int send_req_wait_for_rsp(uint16_t conn_handle, size_t request_length, ui } // If a response matches what is in expected_rsp, copy the rest of it into the buffer. -STATIC void check_and_save_expected_rsp(uint16_t conn_handle, uint8_t opcode, uint8_t dlen, uint8_t data[]) { +static void check_and_save_expected_rsp(uint16_t conn_handle, uint8_t opcode, uint8_t dlen, uint8_t data[]) { if (conn_handle == expected_rsp.conn_handle && expected_rsp.opcode == opcode) { expected_rsp.buffer[0] = opcode; memcpy(&expected_rsp.buffer[1], data, dlen); @@ -242,7 +242,7 @@ bool att_disconnect(uint16_t conn_handle) { } // FIX -// STATIC bool discover_services(uint16_t conn_handle, BLERemoteDevice* device, const char* serviceUuidFilter) { +// static bool discover_services(uint16_t conn_handle, BLERemoteDevice* device, const char* serviceUuidFilter) { // uint16_t reqStart_handle = 0x0001; // uint16_t reqEnd_handle = 0xffff; @@ -297,7 +297,7 @@ bool att_disconnect(uint16_t conn_handle) { // return true; // } -// STATIC bool discover_characteristics(uint16_t conn_handle, BLERemoteDevice* device) { +// static bool discover_characteristics(uint16_t conn_handle, BLERemoteDevice* device) { // uint16_t reqStart_handle = 0x0001; // uint16_t reqEnd_handle = 0xffff; @@ -353,7 +353,7 @@ bool att_disconnect(uint16_t conn_handle) { // return true; // } -// STATIC bool discover_descriptors(uint16_t conn_handle, BLERemoteDevice* device) { +// static bool discover_descriptors(uint16_t conn_handle, BLERemoteDevice* device) { // uint16_t reqStart_handle = 0x0001; // uint16_t reqEnd_handle = 0xffff; @@ -711,7 +711,7 @@ bool att_indicate(uint16_t handle, const uint8_t *value, int length) { return num_indications > 0; } -STATIC void process_error(uint16_t conn_handle, uint8_t dlen, uint8_t data[]) { +static void process_error(uint16_t conn_handle, uint8_t dlen, uint8_t data[]) { struct bt_att_error_rsp *rsp = (struct bt_att_error_rsp *)data; if (dlen != sizeof(struct bt_att_error_rsp)) { @@ -727,7 +727,7 @@ STATIC void process_error(uint16_t conn_handle, uint8_t dlen, uint8_t data[]) { } } -STATIC void process_mtu_req(uint16_t conn_handle, uint8_t dlen, uint8_t data[]) { +static void process_mtu_req(uint16_t conn_handle, uint8_t dlen, uint8_t data[]) { struct bt_att_exchange_mtu_req *req = (struct bt_att_exchange_mtu_req *)data; if (dlen != sizeof(struct bt_att_exchange_mtu_req)) { @@ -760,7 +760,7 @@ STATIC void process_mtu_req(uint16_t conn_handle, uint8_t dlen, uint8_t data[]) hci_send_acl_pkt(conn_handle, BT_L2CAP_CID_ATT, sizeof(rsp), (uint8_t *)&rsp); } -STATIC void process_mtu_rsp(uint16_t conn_handle, uint8_t dlen, uint8_t data[]) { +static void process_mtu_rsp(uint16_t conn_handle, uint8_t dlen, uint8_t data[]) { struct bt_att_exchange_mtu_rsp *rsp = (struct bt_att_exchange_mtu_rsp *)data; if (dlen != sizeof(struct bt_att_exchange_mtu_rsp)) { @@ -777,7 +777,7 @@ STATIC void process_mtu_rsp(uint16_t conn_handle, uint8_t dlen, uint8_t data[]) check_and_save_expected_rsp(conn_handle, BT_ATT_OP_MTU_RSP, dlen, data); } -STATIC void process_find_info_req(uint16_t conn_handle, uint16_t mtu, uint8_t dlen, uint8_t data[]) { +static void process_find_info_req(uint16_t conn_handle, uint16_t mtu, uint8_t dlen, uint8_t data[]) { struct bt_att_find_info_req *req = (struct bt_att_find_info_req *)data; if (dlen != sizeof(struct bt_att_find_info_req)) { @@ -883,7 +883,7 @@ static int att_find_info_req(uint16_t conn_handle, uint16_t start_handle, uint16 return send_req_wait_for_rsp(conn_handle, sizeof(req), (uint8_t *)&req, response_buffer); } -STATIC void process_find_info_rsp(uint16_t conn_handle, uint8_t dlen, uint8_t data[]) { +static void process_find_info_rsp(uint16_t conn_handle, uint8_t dlen, uint8_t data[]) { if (dlen < 2) { return; // invalid, drop } @@ -891,7 +891,7 @@ STATIC void process_find_info_rsp(uint16_t conn_handle, uint8_t dlen, uint8_t da check_and_save_expected_rsp(conn_handle, BT_ATT_OP_FIND_INFO_RSP, dlen, data); } -STATIC void process_find_type_req(uint16_t conn_handle, uint16_t mtu, uint8_t dlen, uint8_t data[]) { +static void process_find_type_req(uint16_t conn_handle, uint16_t mtu, uint8_t dlen, uint8_t data[]) { struct bt_att_find_type_req *req = (struct bt_att_find_type_req *)data; if (dlen < sizeof(struct bt_att_find_type_req)) { @@ -1040,7 +1040,7 @@ static int att_read_group_req(uint16_t conn_handle, uint16_t start_handle, uint1 return send_req_wait_for_rsp(conn_handle, sizeof(req_bytes), req_bytes, response_buffer); } -STATIC void process_read_group_rsp(uint16_t conn_handle, uint8_t dlen, uint8_t data[]) { +static void process_read_group_rsp(uint16_t conn_handle, uint8_t dlen, uint8_t data[]) { if (dlen < 2) { return; // invalid, drop } @@ -1048,7 +1048,7 @@ STATIC void process_read_group_rsp(uint16_t conn_handle, uint8_t dlen, uint8_t d check_and_save_expected_rsp(conn_handle, BT_ATT_OP_READ_GROUP_RSP, dlen, data); } -STATIC void process_read_or_read_blob_req(uint16_t conn_handle, uint16_t mtu, uint8_t opcode, uint8_t dlen, uint8_t data[]) { +static void process_read_or_read_blob_req(uint16_t conn_handle, uint16_t mtu, uint8_t opcode, uint8_t dlen, uint8_t data[]) { uint16_t handle; uint16_t offset = 0; uint8_t response_opcode; @@ -1167,11 +1167,11 @@ STATIC void process_read_or_read_blob_req(uint16_t conn_handle, uint16_t mtu, ui hci_send_acl_pkt(conn_handle, BT_L2CAP_CID_ATT, rsp_length, rsp_bytes); } -STATIC void process_read_rsp(uint16_t conn_handle, uint8_t dlen, uint8_t data[]) { +static void process_read_rsp(uint16_t conn_handle, uint8_t dlen, uint8_t data[]) { check_and_save_expected_rsp(conn_handle, BT_ATT_OP_READ_RSP, dlen, data); } -STATIC void process_read_type_req(uint16_t conn_handle, uint16_t mtu, uint8_t dlen, uint8_t data[]) { +static void process_read_type_req(uint16_t conn_handle, uint16_t mtu, uint8_t dlen, uint8_t data[]) { struct bt_att_read_type_req *req = (struct bt_att_read_type_req *)data; uint16_t type_uuid = req->uuid[0] | (req->uuid[1] << 8); @@ -1335,7 +1335,7 @@ static int att_read_type_req(uint16_t conn_handle, uint16_t start_handle, uint16 return send_req_wait_for_rsp(conn_handle, sizeof(req_bytes), req_bytes, response_buffer); } -STATIC void process_read_type_rsp(uint16_t conn_handle, uint8_t dlen, uint8_t data[]) { +static void process_read_type_rsp(uint16_t conn_handle, uint8_t dlen, uint8_t data[]) { if (dlen < 1) { return; // invalid, drop } @@ -1344,7 +1344,7 @@ STATIC void process_read_type_rsp(uint16_t conn_handle, uint8_t dlen, uint8_t da } // Handles BT_ATT_OP_WRITE_REQ or BT_ATT_OP_WRITE_ -STATIC void process_write_req_or_cmd(uint16_t conn_handle, uint16_t mtu, uint8_t op, uint8_t dlen, uint8_t data[]) { +static void process_write_req_or_cmd(uint16_t conn_handle, uint16_t mtu, uint8_t op, uint8_t dlen, uint8_t data[]) { // struct bt_att_write_cmd is identical, so don't bother to split code paths based on opcode. struct bt_att_write_req *req = (struct bt_att_write_req *)data; @@ -1413,7 +1413,7 @@ STATIC void process_write_req_or_cmd(uint16_t conn_handle, uint16_t mtu, uint8_t } } -STATIC void process_write_rsp(uint16_t conn_handle, uint8_t dlen, uint8_t data[]) { +static void process_write_rsp(uint16_t conn_handle, uint8_t dlen, uint8_t data[]) { if (dlen != 0) { return; // drop } @@ -1421,7 +1421,7 @@ STATIC void process_write_rsp(uint16_t conn_handle, uint8_t dlen, uint8_t data[] check_and_save_expected_rsp(conn_handle, BT_ATT_OP_WRITE_RSP, dlen, data); } -STATIC void process_prepare_write_req(uint16_t conn_handle, uint16_t mtu, uint8_t dlen, uint8_t data[]) { +static void process_prepare_write_req(uint16_t conn_handle, uint16_t mtu, uint8_t dlen, uint8_t data[]) { struct bt_att_prepare_write_req *req = (struct bt_att_prepare_write_req *)data; if (dlen < sizeof(struct bt_att_prepare_write_req)) { @@ -1491,7 +1491,7 @@ STATIC void process_prepare_write_req(uint16_t conn_handle, uint16_t mtu, uint8_ // hci_send_acl_pkt(conn_handle, BT_L2CAP_CID_ATT, response_length, response); } -STATIC void process_exec_write_req(uint16_t conn_handle, uint16_t mtu, uint8_t dlen, uint8_t data[]) { +static void process_exec_write_req(uint16_t conn_handle, uint16_t mtu, uint8_t dlen, uint8_t data[]) { struct bt_att_exec_write_req *req = (struct bt_att_exec_write_req *)data; if (dlen != sizeof(struct bt_att_exec_write_req)) { @@ -1522,7 +1522,7 @@ STATIC void process_exec_write_req(uint16_t conn_handle, uint16_t mtu, uint8_t d hci_send_acl_pkt(conn_handle, BT_L2CAP_CID_ATT, response_length, response); } -STATIC void process_notify_or_indicate(uint16_t conn_handle, uint8_t opcode, uint8_t dlen, uint8_t data[]) { +static void process_notify_or_indicate(uint16_t conn_handle, uint8_t opcode, uint8_t dlen, uint8_t data[]) { if (dlen < 2) { return; // drop } @@ -1573,7 +1573,7 @@ STATIC void process_notify_or_indicate(uint16_t conn_handle, uint8_t opcode, uin } } -STATIC void process_confirm(uint16_t conn_handle, uint8_t dlen, uint8_t data[]) { +static void process_confirm(uint16_t conn_handle, uint8_t dlen, uint8_t data[]) { (void)conn_handle; (void)dlen; (void)data; diff --git a/devices/ble_hci/common-hal/_bleio/hci.c b/devices/ble_hci/common-hal/_bleio/hci.c index e3f74421e51f..126f05fbae2a 100644 --- a/devices/ble_hci/common-hal/_bleio/hci.c +++ b/devices/ble_hci/common-hal/_bleio/hci.c @@ -101,23 +101,23 @@ typedef struct __attribute__ ((packed)) { #define RX_BUFFER_SIZE (3 + 255) #define ACL_DATA_BUFFER_SIZE (255) -STATIC uint8_t rx_buffer[RX_BUFFER_SIZE]; -STATIC size_t rx_idx; +static uint8_t rx_buffer[RX_BUFFER_SIZE]; +static size_t rx_idx; -STATIC uint8_t acl_data_buffer[ACL_DATA_BUFFER_SIZE]; -STATIC size_t acl_data_len; +static uint8_t acl_data_buffer[ACL_DATA_BUFFER_SIZE]; +static size_t acl_data_len; -STATIC size_t num_command_packets_allowed; -STATIC volatile size_t pending_pkt; +static size_t num_command_packets_allowed; +static volatile size_t pending_pkt; // Results from parsing a command response packet. -STATIC bool cmd_response_received; -STATIC uint16_t cmd_response_opcode; -STATIC uint8_t cmd_response_status; -STATIC size_t cmd_response_len; -STATIC uint8_t *cmd_response_data; +static bool cmd_response_received; +static uint16_t cmd_response_opcode; +static uint8_t cmd_response_status; +static size_t cmd_response_len; +static uint8_t *cmd_response_data; -STATIC volatile bool hci_poll_in_progress = false; +static volatile bool hci_poll_in_progress = false; ////////////////////////////////////////////////////////////////////// @@ -126,7 +126,7 @@ STATIC volatile bool hci_poll_in_progress = false; #include "hci_debug.c" #endif // HCI_DEBUG -STATIC void process_acl_data_pkt(uint8_t pkt_len, uint8_t pkt_data[]) { +static void process_acl_data_pkt(uint8_t pkt_len, uint8_t pkt_data[]) { h4_hci_acl_pkt_t *pkt = (h4_hci_acl_pkt_t *)pkt_data; if (pkt->pb != ACL_DATA_PB_MIDDLE) { @@ -167,7 +167,7 @@ STATIC void process_acl_data_pkt(uint8_t pkt_len, uint8_t pkt_data[]) { // Process number of completed packets. Reduce number of pending packets by reported // number of completed. -STATIC void process_num_comp_pkts(uint16_t handle, uint16_t num_pkts) { +static void process_num_comp_pkts(uint16_t handle, uint16_t num_pkts) { if (num_pkts && pending_pkt > num_pkts) { pending_pkt -= num_pkts; } else { @@ -175,7 +175,7 @@ STATIC void process_num_comp_pkts(uint16_t handle, uint16_t num_pkts) { } } -STATIC void process_evt_pkt(size_t pkt_len, uint8_t pkt_data[]) { +static void process_evt_pkt(size_t pkt_len, uint8_t pkt_data[]) { h4_hci_evt_pkt_t *pkt = (h4_hci_evt_pkt_t *)pkt_data; switch (pkt->evt) { @@ -412,7 +412,7 @@ hci_result_t hci_poll_for_incoming_pkt(void) { } -STATIC hci_result_t write_pkt(uint8_t *buffer, size_t len) { +static hci_result_t write_pkt(uint8_t *buffer, size_t len) { // Wait for CTS to go low before writing to HCI adapter. uint64_t start = supervisor_ticks_ms64(); @@ -432,7 +432,7 @@ STATIC hci_result_t write_pkt(uint8_t *buffer, size_t len) { return HCI_OK; } -STATIC hci_result_t send_command(uint16_t opcode, uint8_t params_len, void *params) { +static hci_result_t send_command(uint16_t opcode, uint8_t params_len, void *params) { uint8_t cmd_pkt_len = sizeof(h4_hci_cmd_pkt_t) + params_len; uint8_t tx_buffer[cmd_pkt_len]; diff --git a/devices/ble_hci/common-hal/_bleio/hci_debug.c b/devices/ble_hci/common-hal/_bleio/hci_debug.c index 162dd386e726..74824d104166 100644 --- a/devices/ble_hci/common-hal/_bleio/hci_debug.c +++ b/devices/ble_hci/common-hal/_bleio/hci_debug.c @@ -6,7 +6,7 @@ // This file is #include'd in hci.c when HCI_DEBUG is non-zero. -STATIC const char *att_opcode_name(uint16_t opcode) { +static const char *att_opcode_name(uint16_t opcode) { switch (opcode) { case BT_ATT_OP_ERROR_RSP: return "ERROR_RSP"; @@ -75,7 +75,7 @@ STATIC const char *att_opcode_name(uint16_t opcode) { } } -STATIC const char *hci_evt_name(uint8_t evt) { +static const char *hci_evt_name(uint8_t evt) { switch (evt) { case BT_HCI_EVT_UNKNOWN: return "UNKNOWN"; @@ -146,7 +146,7 @@ STATIC const char *hci_evt_name(uint8_t evt) { } } -STATIC const char *hci_evt_le_name(uint8_t evt_le) { +static const char *hci_evt_le_name(uint8_t evt_le) { switch (evt_le) { case BT_HCI_EVT_LE_CONN_COMPLETE: return "LE_CONN_COMPLETE"; @@ -191,7 +191,7 @@ STATIC const char *hci_evt_le_name(uint8_t evt_le) { } } -STATIC const char *hci_opcode_name(uint16_t opcode) { +static const char *hci_opcode_name(uint16_t opcode) { switch (opcode) { case BT_OP_NOP: return "NOP"; @@ -455,7 +455,7 @@ STATIC const char *hci_opcode_name(uint16_t opcode) { } -STATIC void dump_cmd_pkt(bool tx, uint8_t pkt_len, uint8_t pkt_data[]) { +static void dump_cmd_pkt(bool tx, uint8_t pkt_len, uint8_t pkt_data[]) { h4_hci_cmd_pkt_t *pkt = (h4_hci_cmd_pkt_t *)pkt_data; mp_printf(&mp_plat_print, "%s HCI COMMAND (%x) op: %s (%04x), len: %d, data: ", @@ -471,7 +471,7 @@ STATIC void dump_cmd_pkt(bool tx, uint8_t pkt_len, uint8_t pkt_data[]) { mp_printf(&mp_plat_print, "\n"); } -STATIC void dump_acl_pkt(bool tx, uint8_t pkt_len, uint8_t pkt_data[]) { +static void dump_acl_pkt(bool tx, uint8_t pkt_len, uint8_t pkt_data[]) { h4_hci_acl_pkt_t *pkt = (h4_hci_acl_pkt_t *)pkt_data; acl_data_t *acl = (acl_data_t *)pkt->data; @@ -509,7 +509,7 @@ STATIC void dump_acl_pkt(bool tx, uint8_t pkt_len, uint8_t pkt_data[]) { mp_printf(&mp_plat_print, "\n"); } -STATIC void dump_evt_pkt(bool tx, uint8_t pkt_len, uint8_t pkt_data[]) { +static void dump_evt_pkt(bool tx, uint8_t pkt_len, uint8_t pkt_data[]) { h4_hci_evt_pkt_t *pkt = (h4_hci_evt_pkt_t *)pkt_data; mp_printf(&mp_plat_print, "%s HCI EVENT (%x) evt: %s (%02x), param_len: %d, data: ", diff --git a/main.c b/main.c index 3dbd8327a0af..3988bc9e7dc0 100644 --- a/main.c +++ b/main.c @@ -121,13 +121,13 @@ static void reset_devices(void) { #endif } -STATIC uint8_t *_heap; -STATIC uint8_t *_pystack; +static uint8_t *_heap; +static uint8_t *_pystack; -STATIC const char line_clear[] = "\x1b[2K\x1b[0G"; +static const char line_clear[] = "\x1b[2K\x1b[0G"; #if MICROPY_ENABLE_PYSTACK || MICROPY_ENABLE_GC -STATIC uint8_t *_allocate_memory(safe_mode_t safe_mode, const char *env_key, size_t default_size, size_t *final_size) { +static uint8_t *_allocate_memory(safe_mode_t safe_mode, const char *env_key, size_t default_size, size_t *final_size) { *final_size = default_size; #if CIRCUITPY_OS_GETENV if (safe_mode == SAFE_MODE_NONE) { @@ -152,7 +152,7 @@ STATIC uint8_t *_allocate_memory(safe_mode_t safe_mode, const char *env_key, siz } #endif -STATIC void start_mp(safe_mode_t safe_mode) { +static void start_mp(safe_mode_t safe_mode) { supervisor_workflow_reset(); // Stack limit should be less than real stack size, so we have a chance @@ -205,7 +205,7 @@ STATIC void start_mp(safe_mode_t safe_mode) { mp_obj_list_init((mp_obj_list_t *)mp_sys_argv, 0); } -STATIC void stop_mp(void) { +static void stop_mp(void) { #if MICROPY_VFS mp_vfs_mount_t *vfs = MP_STATE_VM(vfs_mount_table); @@ -237,9 +237,9 @@ STATIC void stop_mp(void) { #endif } -STATIC const char *_current_executing_filename = NULL; +static const char *_current_executing_filename = NULL; -STATIC pyexec_result_t _exec_result = {0, MP_OBJ_NULL, 0}; +static pyexec_result_t _exec_result = {0, MP_OBJ_NULL, 0}; #if CIRCUITPY_STATUS_BAR void supervisor_execution_status(void) { @@ -264,7 +264,7 @@ pyexec_result_t *pyexec_result(void) { // Look for the first file that exists in the list of filenames, using mp_import_stat(). // Return its index. If no file found, return -1. -STATIC const char *first_existing_file_in_list(const char *const *filenames, size_t n_filenames) { +static const char *first_existing_file_in_list(const char *const *filenames, size_t n_filenames) { for (size_t i = 0; i < n_filenames; i++) { mp_import_stat_t stat = mp_import_stat(filenames[i]); if (stat == MP_IMPORT_STAT_FILE) { @@ -274,7 +274,7 @@ STATIC const char *first_existing_file_in_list(const char *const *filenames, siz return NULL; } -STATIC bool maybe_run_list(const char *const *filenames, size_t n_filenames) { +static bool maybe_run_list(const char *const *filenames, size_t n_filenames) { _exec_result.return_code = 0; _exec_result.exception = MP_OBJ_NULL; _exec_result.exception_line = 0; @@ -309,11 +309,11 @@ STATIC bool maybe_run_list(const char *const *filenames, size_t n_filenames) { return true; } -STATIC void count_strn(void *data, const char *str, size_t len) { +static void count_strn(void *data, const char *str, size_t len) { *(size_t *)data += len; } -STATIC void cleanup_after_vm(mp_obj_t exception) { +static void cleanup_after_vm(mp_obj_t exception) { // Get the traceback of any exception from this run off the heap. // MP_OBJ_SENTINEL means "this run does not contribute to traceback storage, don't touch it" // MP_OBJ_NULL (=0) means "this run completed successfully, clear any stored traceback" @@ -399,7 +399,7 @@ STATIC void cleanup_after_vm(mp_obj_t exception) { supervisor_workflow_reset(); } -STATIC void print_code_py_status_message(safe_mode_t safe_mode) { +static void print_code_py_status_message(safe_mode_t safe_mode) { mp_hal_stdout_tx_str(line_clear); if (autoreload_is_enabled()) { serial_write_compressed( @@ -412,7 +412,7 @@ STATIC void print_code_py_status_message(safe_mode_t safe_mode) { } } -STATIC bool __attribute__((noinline)) run_code_py(safe_mode_t safe_mode, bool *simulate_reset) { +static bool __attribute__((noinline)) run_code_py(safe_mode_t safe_mode, bool *simulate_reset) { bool serial_connected_at_start = serial_connected(); bool printed_safe_mode_message = false; #if CIRCUITPY_AUTORELOAD_DELAY_MS > 0 @@ -783,7 +783,7 @@ STATIC bool __attribute__((noinline)) run_code_py(safe_mode_t safe_mode, bool *s vstr_t *boot_output; #if CIRCUITPY_SAFEMODE_PY -STATIC void __attribute__ ((noinline)) run_safemode_py(safe_mode_t safe_mode) { +static void __attribute__ ((noinline)) run_safemode_py(safe_mode_t safe_mode) { // Don't run if we aren't in safe mode or we won't be able to find safemode.py. // Also don't run if it's a user-initiated safemode (pressing button(s) during boot), // since that's deliberate. @@ -807,7 +807,7 @@ STATIC void __attribute__ ((noinline)) run_safemode_py(safe_mode_t safe_mode) { } #endif -STATIC void __attribute__ ((noinline)) run_boot_py(safe_mode_t safe_mode) { +static void __attribute__ ((noinline)) run_boot_py(safe_mode_t safe_mode) { if (safe_mode == SAFE_MODE_NO_HEAP) { return; } @@ -904,7 +904,7 @@ STATIC void __attribute__ ((noinline)) run_boot_py(safe_mode_t safe_mode) { port_post_boot_py(false); } -STATIC int run_repl(safe_mode_t safe_mode) { +static int run_repl(safe_mode_t safe_mode) { int exit_code = PYEXEC_FORCED_EXIT; filesystem_flush(); diff --git a/ports/atmel-samd/audio_dma.c b/ports/atmel-samd/audio_dma.c index c31461a41117..39c9dde648e1 100644 --- a/ports/atmel-samd/audio_dma.c +++ b/ports/atmel-samd/audio_dma.c @@ -358,7 +358,7 @@ bool audio_dma_get_playing(audio_dma_t *dma) { // WARN(tannewt): DO NOT print from here, or anything it calls. Printing calls // background tasks such as this and causes a stack overflow. -STATIC void dma_callback_fun(void *arg) { +static void dma_callback_fun(void *arg) { audio_dma_t *dma = arg; if (dma == NULL) { return; diff --git a/ports/atmel-samd/bindings/samd/Clock.c b/ports/atmel-samd/bindings/samd/Clock.c index ee879cb66e60..1564d65fc8c4 100644 --- a/ports/atmel-samd/bindings/samd/Clock.c +++ b/ports/atmel-samd/bindings/samd/Clock.c @@ -17,7 +17,7 @@ //| ``samd.clock`` to reference the desired clock.""" //| -STATIC void samd_clock_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { +static void samd_clock_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { samd_clock_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_printf(print, "%q.%q.%q", MP_QSTR_samd, MP_QSTR_clock, self->name); @@ -25,7 +25,7 @@ STATIC void samd_clock_print(const mp_print_t *print, mp_obj_t self_in, mp_print //| enabled: bool //| """Is the clock enabled? (read-only)""" -STATIC mp_obj_t samd_clock_get_enabled(mp_obj_t self_in) { +static mp_obj_t samd_clock_get_enabled(mp_obj_t self_in) { samd_clock_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bool(clock_get_enabled(self->type, self->index)); } @@ -37,7 +37,7 @@ MP_PROPERTY_GETTER(samd_clock_enabled_obj, //| parent: Union[Clock, None] //| """Clock parent. (read-only)""" -STATIC mp_obj_t samd_clock_get_parent(mp_obj_t self_in) { +static mp_obj_t samd_clock_get_parent(mp_obj_t self_in) { samd_clock_obj_t *self = MP_OBJ_TO_PTR(self_in); uint8_t p_type, p_index; if (!clock_get_parent(self->type, self->index, &p_type, &p_index)) { @@ -61,7 +61,7 @@ MP_PROPERTY_GETTER(samd_clock_parent_obj, //| frequency: int //| """Clock frequency in Herz. (read-only)""" -STATIC mp_obj_t samd_clock_get_frequency(mp_obj_t self_in) { +static mp_obj_t samd_clock_get_frequency(mp_obj_t self_in) { samd_clock_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_int_from_uint(clock_get_frequency(self->type, self->index)); } @@ -74,14 +74,14 @@ MP_PROPERTY_GETTER(samd_clock_frequency_obj, //| calibration: int //| """Clock calibration. Not all clocks can be calibrated.""" //| -STATIC mp_obj_t samd_clock_get_calibration(mp_obj_t self_in) { +static mp_obj_t samd_clock_get_calibration(mp_obj_t self_in) { samd_clock_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_int_from_uint(clock_get_calibration(self->type, self->index)); } MP_DEFINE_CONST_FUN_OBJ_1(samd_clock_get_calibration_obj, samd_clock_get_calibration); -STATIC mp_obj_t samd_clock_set_calibration(mp_obj_t self_in, mp_obj_t calibration) { +static mp_obj_t samd_clock_set_calibration(mp_obj_t self_in, mp_obj_t calibration) { samd_clock_obj_t *self = MP_OBJ_TO_PTR(self_in); int ret = clock_set_calibration(self->type, self->index, mp_obj_get_int(calibration)); if (ret == -2) { @@ -99,14 +99,14 @@ MP_PROPERTY_GETSET(samd_clock_calibration_obj, (mp_obj_t)&samd_clock_get_calibration_obj, (mp_obj_t)&samd_clock_set_calibration_obj); -STATIC const mp_rom_map_elem_t samd_clock_locals_dict_table[] = { +static const mp_rom_map_elem_t samd_clock_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_enabled), MP_ROM_PTR(&samd_clock_enabled_obj) }, { MP_ROM_QSTR(MP_QSTR_parent), MP_ROM_PTR(&samd_clock_parent_obj) }, { MP_ROM_QSTR(MP_QSTR_frequency), MP_ROM_PTR(&samd_clock_frequency_obj) }, { MP_ROM_QSTR(MP_QSTR_calibration), MP_ROM_PTR(&samd_clock_calibration_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(samd_clock_locals_dict, samd_clock_locals_dict_table); +static MP_DEFINE_CONST_DICT(samd_clock_locals_dict, samd_clock_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( samd_clock_type, @@ -174,7 +174,7 @@ CLOCK_GCLK_(I2S, 1); CLOCK(SYSTICK, 2, 0); #endif -STATIC const mp_rom_map_elem_t samd_clock_global_dict_table[] = { +static const mp_rom_map_elem_t samd_clock_global_dict_table[] = { #ifdef SAMD21_EXPOSE_ALL_CLOCKS CLOCK_ENTRY(XOSC), CLOCK_ENTRY(GCLKIN), @@ -310,7 +310,7 @@ CLOCK(CPU, 2, 1); CLOCK(RTC, 2, 2); -STATIC const mp_rom_map_elem_t samd_clock_global_dict_table[] = { +static const mp_rom_map_elem_t samd_clock_global_dict_table[] = { CLOCK_ENTRY(XOSC0), CLOCK_ENTRY(XOSC1), CLOCK_ENTRY(GCLKIN), diff --git a/ports/atmel-samd/bindings/samd/__init__.c b/ports/atmel-samd/bindings/samd/__init__.c index 76e7a3b2e0ee..9f3ad1c3dd0a 100644 --- a/ports/atmel-samd/bindings/samd/__init__.c +++ b/ports/atmel-samd/bindings/samd/__init__.c @@ -25,12 +25,12 @@ const mp_obj_module_t samd_clock_module = { .globals = (mp_obj_dict_t *)&samd_clock_globals, }; -STATIC const mp_rom_map_elem_t samd_module_globals_table[] = { +static const mp_rom_map_elem_t samd_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_samd) }, { MP_ROM_QSTR(MP_QSTR_clock), MP_ROM_PTR(&samd_clock_module) }, }; -STATIC MP_DEFINE_CONST_DICT(samd_module_globals, samd_module_globals_table); +static MP_DEFINE_CONST_DICT(samd_module_globals, samd_module_globals_table); const mp_obj_module_t samd_module = { .base = { &mp_type_module }, diff --git a/ports/atmel-samd/boards/8086_commander/pins.c b/ports/atmel-samd/boards/8086_commander/pins.c index 09dbe751d981..c39872d87066 100644 --- a/ports/atmel-samd/boards/8086_commander/pins.c +++ b/ports/atmel-samd/boards/8086_commander/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS diff --git a/ports/atmel-samd/boards/adafruit_neokey_trinkey_m0/pins.c b/ports/atmel-samd/boards/adafruit_neokey_trinkey_m0/pins.c index a69b45efbbbe..12e05331d90f 100644 --- a/ports/atmel-samd/boards/adafruit_neokey_trinkey_m0/pins.c +++ b/ports/atmel-samd/boards/adafruit_neokey_trinkey_m0/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_TOUCH), MP_ROM_PTR(&pin_PA07) }, diff --git a/ports/atmel-samd/boards/adafruit_pixel_trinkey_m0/pins.c b/ports/atmel-samd/boards/adafruit_pixel_trinkey_m0/pins.c index 20b5a2edfe0e..2020a526b808 100644 --- a/ports/atmel-samd/boards/adafruit_pixel_trinkey_m0/pins.c +++ b/ports/atmel-samd/boards/adafruit_pixel_trinkey_m0/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_PA01) }, diff --git a/ports/atmel-samd/boards/adafruit_proxlight_trinkey_m0/pins.c b/ports/atmel-samd/boards/adafruit_proxlight_trinkey_m0/pins.c index 03cbbd3baa5a..ff994cf46abf 100644 --- a/ports/atmel-samd/boards/adafruit_proxlight_trinkey_m0/pins.c +++ b/ports/atmel-samd/boards/adafruit_proxlight_trinkey_m0/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_INTERRUPT), MP_ROM_PTR(&pin_PA00) }, diff --git a/ports/atmel-samd/boards/adafruit_rotary_trinkey_m0/pins.c b/ports/atmel-samd/boards/adafruit_rotary_trinkey_m0/pins.c index 39001c43904a..fe7e1dc2b50f 100644 --- a/ports/atmel-samd/boards/adafruit_rotary_trinkey_m0/pins.c +++ b/ports/atmel-samd/boards/adafruit_rotary_trinkey_m0/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_PA01) }, diff --git a/ports/atmel-samd/boards/adafruit_sht4x_trinkey_m0/pins.c b/ports/atmel-samd/boards/adafruit_sht4x_trinkey_m0/pins.c index 67209ad9be90..41e4e4c5f5ae 100644 --- a/ports/atmel-samd/boards/adafruit_sht4x_trinkey_m0/pins.c +++ b/ports/atmel-samd/boards/adafruit_sht4x_trinkey_m0/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_TOUCH), MP_ROM_PTR(&pin_PA07) }, diff --git a/ports/atmel-samd/boards/adafruit_slide_trinkey_m0/pins.c b/ports/atmel-samd/boards/adafruit_slide_trinkey_m0/pins.c index 14e9739af82a..3b5f58010cbc 100644 --- a/ports/atmel-samd/boards/adafruit_slide_trinkey_m0/pins.c +++ b/ports/atmel-samd/boards/adafruit_slide_trinkey_m0/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_PA04) }, diff --git a/ports/atmel-samd/boards/adafruit_trrs_trinkey_m0/pins.c b/ports/atmel-samd/boards/adafruit_trrs_trinkey_m0/pins.c index e8d56789907e..fc1214140460 100644 --- a/ports/atmel-samd/boards/adafruit_trrs_trinkey_m0/pins.c +++ b/ports/atmel-samd/boards/adafruit_trrs_trinkey_m0/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_PA01) }, diff --git a/ports/atmel-samd/boards/aloriumtech_evo_m51/pins.c b/ports/atmel-samd/boards/aloriumtech_evo_m51/pins.c index cbef4ed83e7c..04e863cbb49f 100644 --- a/ports/atmel-samd/boards/aloriumtech_evo_m51/pins.c +++ b/ports/atmel-samd/boards/aloriumtech_evo_m51/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/arduino_mkr1300/pins.c b/ports/atmel-samd/boards/arduino_mkr1300/pins.c index b2819e2f8bdb..23e607a52646 100644 --- a/ports/atmel-samd/boards/arduino_mkr1300/pins.c +++ b/ports/atmel-samd/boards/arduino_mkr1300/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/arduino_mkrzero/pins.c b/ports/atmel-samd/boards/arduino_mkrzero/pins.c index b751373aa05e..8bad471e3fe7 100644 --- a/ports/atmel-samd/boards/arduino_mkrzero/pins.c +++ b/ports/atmel-samd/boards/arduino_mkrzero/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/arduino_nano_33_iot/pins.c b/ports/atmel-samd/boards/arduino_nano_33_iot/pins.c index 2b4749c13e01..bb93227d19e4 100644 --- a/ports/atmel-samd/boards/arduino_nano_33_iot/pins.c +++ b/ports/atmel-samd/boards/arduino_nano_33_iot/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/arduino_zero/pins.c b/ports/atmel-samd/boards/arduino_zero/pins.c index d5f2545dd6f4..776cf6d4f222 100644 --- a/ports/atmel-samd/boards/arduino_zero/pins.c +++ b/ports/atmel-samd/boards/arduino_zero/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/bast_pro_mini_m0/pins.c b/ports/atmel-samd/boards/bast_pro_mini_m0/pins.c index d93ad0701054..5b41572e8d68 100644 --- a/ports/atmel-samd/boards/bast_pro_mini_m0/pins.c +++ b/ports/atmel-samd/boards/bast_pro_mini_m0/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/bdmicro_vina_d21/pins.c b/ports/atmel-samd/boards/bdmicro_vina_d21/pins.c index 5f50a44e8922..d80b6df00df9 100644 --- a/ports/atmel-samd/boards/bdmicro_vina_d21/pins.c +++ b/ports/atmel-samd/boards/bdmicro_vina_d21/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/bdmicro_vina_d51/pins.c b/ports/atmel-samd/boards/bdmicro_vina_d51/pins.c index 907cc24e0673..42297190c96b 100644 --- a/ports/atmel-samd/boards/bdmicro_vina_d51/pins.c +++ b/ports/atmel-samd/boards/bdmicro_vina_d51/pins.c @@ -9,7 +9,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA04) }, diff --git a/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/pins.c b/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/pins.c index 43a77af8ab4a..f1500d4ee856 100644 --- a/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/pins.c +++ b/ports/atmel-samd/boards/bdmicro_vina_d51_pcb7/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA04) }, diff --git a/ports/atmel-samd/boards/blm_badge/pins.c b/ports/atmel-samd/boards/blm_badge/pins.c index f7d3289e6b74..ed38a6b9f89e 100644 --- a/ports/atmel-samd/boards/blm_badge/pins.c +++ b/ports/atmel-samd/boards/blm_badge/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PA01) }, diff --git a/ports/atmel-samd/boards/capablerobot_usbhub/pins.c b/ports/atmel-samd/boards/capablerobot_usbhub/pins.c index 7ff959f10ab2..d6c7e8516a86 100644 --- a/ports/atmel-samd/boards/capablerobot_usbhub/pins.c +++ b/ports/atmel-samd/boards/capablerobot_usbhub/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_ANMB), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/catwan_usbstick/pins.c b/ports/atmel-samd/boards/catwan_usbstick/pins.c index bc0d437960a0..91d5cf39a295 100644 --- a/ports/atmel-samd/boards/catwan_usbstick/pins.c +++ b/ports/atmel-samd/boards/catwan_usbstick/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA30) }, diff --git a/ports/atmel-samd/boards/circuitbrains_basic_m0/pins.c b/ports/atmel-samd/boards/circuitbrains_basic_m0/pins.c index 376d3ed11cf0..f119e0a6069e 100644 --- a/ports/atmel-samd/boards/circuitbrains_basic_m0/pins.c +++ b/ports/atmel-samd/boards/circuitbrains_basic_m0/pins.c @@ -10,7 +10,7 @@ // This mapping only includes functional names because pins broken // out on connectors are labeled with their MCU name available from // microcontroller.pin. -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/circuitbrains_deluxe_m4/pins.c b/ports/atmel-samd/boards/circuitbrains_deluxe_m4/pins.c index 4e8bcc171d0f..f9eb15d988d8 100644 --- a/ports/atmel-samd/boards/circuitbrains_deluxe_m4/pins.c +++ b/ports/atmel-samd/boards/circuitbrains_deluxe_m4/pins.c @@ -10,7 +10,7 @@ // This mapping only includes functional names because pins broken // out on connectors are labeled with their MCU name available from // microcontroller.pin. -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/circuitplayground_express/pins.c b/ports/atmel-samd/boards/circuitplayground_express/pins.c index 60cfeac1c1f7..3de93ced59a9 100644 --- a/ports/atmel-samd/boards/circuitplayground_express/pins.c +++ b/ports/atmel-samd/boards/circuitplayground_express/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/circuitplayground_express_crickit/pins.c b/ports/atmel-samd/boards/circuitplayground_express_crickit/pins.c index 60cfeac1c1f7..3de93ced59a9 100644 --- a/ports/atmel-samd/boards/circuitplayground_express_crickit/pins.c +++ b/ports/atmel-samd/boards/circuitplayground_express_crickit/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/circuitplayground_express_displayio/pins.c b/ports/atmel-samd/boards/circuitplayground_express_displayio/pins.c index 60cfeac1c1f7..3de93ced59a9 100644 --- a/ports/atmel-samd/boards/circuitplayground_express_displayio/pins.c +++ b/ports/atmel-samd/boards/circuitplayground_express_displayio/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/cp32-m4/pins.c b/ports/atmel-samd/boards/cp32-m4/pins.c index 784acb235e87..1b9277d31a04 100644 --- a/ports/atmel-samd/boards/cp32-m4/pins.c +++ b/ports/atmel-samd/boards/cp32-m4/pins.c @@ -9,7 +9,7 @@ // This mapping only includes functional names because pins broken // out on connectors are labeled with their MCU name available from // microcontroller.pin. -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_SPEAKER_P), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/cp_sapling_m0/pins.c b/ports/atmel-samd/boards/cp_sapling_m0/pins.c index 229d575fd7ad..2e3b51f7710b 100644 --- a/ports/atmel-samd/boards/cp_sapling_m0/pins.c +++ b/ports/atmel-samd/boards/cp_sapling_m0/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS diff --git a/ports/atmel-samd/boards/cp_sapling_m0_revb/pins.c b/ports/atmel-samd/boards/cp_sapling_m0_revb/pins.c index b0fcf5c621d2..aef1a3ee6628 100644 --- a/ports/atmel-samd/boards/cp_sapling_m0_revb/pins.c +++ b/ports/atmel-samd/boards/cp_sapling_m0_revb/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS diff --git a/ports/atmel-samd/boards/cp_sapling_m0_spiflash/pins.c b/ports/atmel-samd/boards/cp_sapling_m0_spiflash/pins.c index 229d575fd7ad..2e3b51f7710b 100644 --- a/ports/atmel-samd/boards/cp_sapling_m0_spiflash/pins.c +++ b/ports/atmel-samd/boards/cp_sapling_m0_spiflash/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS diff --git a/ports/atmel-samd/boards/datalore_ip_m4/pins.c b/ports/atmel-samd/boards/datalore_ip_m4/pins.c index 65a0c9c22b20..8a9168b2e02b 100644 --- a/ports/atmel-samd/boards/datalore_ip_m4/pins.c +++ b/ports/atmel-samd/boards/datalore_ip_m4/pins.c @@ -9,7 +9,7 @@ // This mapping only includes functional names because pins broken // out on connectors are labeled with their MCU name available from // microcontroller.pin. -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/datum_distance/pins.c b/ports/atmel-samd/boards/datum_distance/pins.c index e922829682a4..695ce6162ee4 100644 --- a/ports/atmel-samd/boards/datum_distance/pins.c +++ b/ports/atmel-samd/boards/datum_distance/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PB11) }, diff --git a/ports/atmel-samd/boards/datum_imu/pins.c b/ports/atmel-samd/boards/datum_imu/pins.c index a9cef252b237..2fa76c57ef5f 100644 --- a/ports/atmel-samd/boards/datum_imu/pins.c +++ b/ports/atmel-samd/boards/datum_imu/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/datum_light/pins.c b/ports/atmel-samd/boards/datum_light/pins.c index e922829682a4..695ce6162ee4 100644 --- a/ports/atmel-samd/boards/datum_light/pins.c +++ b/ports/atmel-samd/boards/datum_light/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PB11) }, diff --git a/ports/atmel-samd/boards/datum_weather/pins.c b/ports/atmel-samd/boards/datum_weather/pins.c index fe40cdff068d..583e75aadab8 100644 --- a/ports/atmel-samd/boards/datum_weather/pins.c +++ b/ports/atmel-samd/boards/datum_weather/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PB11) }, diff --git a/ports/atmel-samd/boards/dynalora_usb/pins.c b/ports/atmel-samd/boards/dynalora_usb/pins.c index 8efe68762fb3..644555b64be5 100644 --- a/ports/atmel-samd/boards/dynalora_usb/pins.c +++ b/ports/atmel-samd/boards/dynalora_usb/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA00) }, diff --git a/ports/atmel-samd/boards/dynossat_edu_eps/pins.c b/ports/atmel-samd/boards/dynossat_edu_eps/pins.c index 943d477e65e8..fdf2618f7bed 100644 --- a/ports/atmel-samd/boards/dynossat_edu_eps/pins.c +++ b/ports/atmel-samd/boards/dynossat_edu_eps/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PB11) }, diff --git a/ports/atmel-samd/boards/dynossat_edu_obc/pins.c b/ports/atmel-samd/boards/dynossat_edu_obc/pins.c index c225af8fbdf6..eac7824b46e8 100644 --- a/ports/atmel-samd/boards/dynossat_edu_obc/pins.c +++ b/ports/atmel-samd/boards/dynossat_edu_obc/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA07) }, diff --git a/ports/atmel-samd/boards/escornabot_makech/pins.c b/ports/atmel-samd/boards/escornabot_makech/pins.c index 5d274a88a243..bac77c55aa69 100644 --- a/ports/atmel-samd/boards/escornabot_makech/pins.c +++ b/ports/atmel-samd/boards/escornabot_makech/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // LEDs diff --git a/ports/atmel-samd/boards/feather_m0_adalogger/pins.c b/ports/atmel-samd/boards/feather_m0_adalogger/pins.c index 3a5234da77c9..1f18c8dc01b4 100644 --- a/ports/atmel-samd/boards/feather_m0_adalogger/pins.c +++ b/ports/atmel-samd/boards/feather_m0_adalogger/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/feather_m0_basic/pins.c b/ports/atmel-samd/boards/feather_m0_basic/pins.c index 24f5a839d140..21e0de72438c 100644 --- a/ports/atmel-samd/boards/feather_m0_basic/pins.c +++ b/ports/atmel-samd/boards/feather_m0_basic/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/feather_m0_express/pins.c b/ports/atmel-samd/boards/feather_m0_express/pins.c index c52a03af8a65..96ca061eb18d 100644 --- a/ports/atmel-samd/boards/feather_m0_express/pins.c +++ b/ports/atmel-samd/boards/feather_m0_express/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/feather_m0_express_crickit/pins.c b/ports/atmel-samd/boards/feather_m0_express_crickit/pins.c index c52a03af8a65..96ca061eb18d 100644 --- a/ports/atmel-samd/boards/feather_m0_express_crickit/pins.c +++ b/ports/atmel-samd/boards/feather_m0_express_crickit/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/feather_m0_rfm69/pins.c b/ports/atmel-samd/boards/feather_m0_rfm69/pins.c index 9d58e52a4db3..ae37f8d9a279 100644 --- a/ports/atmel-samd/boards/feather_m0_rfm69/pins.c +++ b/ports/atmel-samd/boards/feather_m0_rfm69/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/feather_m0_rfm9x/pins.c b/ports/atmel-samd/boards/feather_m0_rfm9x/pins.c index 5b01f214c4ec..67a84112a534 100644 --- a/ports/atmel-samd/boards/feather_m0_rfm9x/pins.c +++ b/ports/atmel-samd/boards/feather_m0_rfm9x/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/feather_m0_supersized/pins.c b/ports/atmel-samd/boards/feather_m0_supersized/pins.c index c52a03af8a65..96ca061eb18d 100644 --- a/ports/atmel-samd/boards/feather_m0_supersized/pins.c +++ b/ports/atmel-samd/boards/feather_m0_supersized/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/feather_m4_can/pins.c b/ports/atmel-samd/boards/feather_m4_can/pins.c index 579474479ef3..ce6b61657fb0 100644 --- a/ports/atmel-samd/boards/feather_m4_can/pins.c +++ b/ports/atmel-samd/boards/feather_m4_can/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/feather_m4_express/pins.c b/ports/atmel-samd/boards/feather_m4_express/pins.c index 90f455090d28..06eba8895944 100644 --- a/ports/atmel-samd/boards/feather_m4_express/pins.c +++ b/ports/atmel-samd/boards/feather_m4_express/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/fluff_m0/pins.c b/ports/atmel-samd/boards/fluff_m0/pins.c index 080b31a85821..7ff9b664e959 100644 --- a/ports/atmel-samd/boards/fluff_m0/pins.c +++ b/ports/atmel-samd/boards/fluff_m0/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_AREF), MP_ROM_PTR(&pin_PA03) }, diff --git a/ports/atmel-samd/boards/gemma_m0/pins.c b/ports/atmel-samd/boards/gemma_m0/pins.c index a5ed8fc33ecb..69d7300296ee 100644 --- a/ports/atmel-samd/boards/gemma_m0/pins.c +++ b/ports/atmel-samd/boards/gemma_m0/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PA05) }, // pad 1 diff --git a/ports/atmel-samd/boards/grandcentral_m4_express/pins.c b/ports/atmel-samd/boards/grandcentral_m4_express/pins.c index 6bf7b45a7544..a8965e3bd3bc 100644 --- a/ports/atmel-samd/boards/grandcentral_m4_express/pins.c +++ b/ports/atmel-samd/boards/grandcentral_m4_express/pins.c @@ -7,7 +7,7 @@ #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_obj_tuple_t sdio_data_tuple = { +static const mp_rom_obj_tuple_t sdio_data_tuple = { {&mp_type_tuple}, 4, { @@ -22,7 +22,7 @@ STATIC const mp_rom_obj_tuple_t sdio_data_tuple = { // This mapping only includes functional names because pins broken // out on connectors are labeled with their MCU name available from // microcontroller.pin. -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_AREF), MP_ROM_PTR(&pin_PA03) }, diff --git a/ports/atmel-samd/boards/hallowing_m0_express/pins.c b/ports/atmel-samd/boards/hallowing_m0_express/pins.c index 43cffa6cbfc6..276ae938f3ac 100644 --- a/ports/atmel-samd/boards/hallowing_m0_express/pins.c +++ b/ports/atmel-samd/boards/hallowing_m0_express/pins.c @@ -9,7 +9,7 @@ #include "supervisor/board.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/hallowing_m4_express/pins.c b/ports/atmel-samd/boards/hallowing_m4_express/pins.c index eb3044bb65b7..3db56be90db8 100644 --- a/ports/atmel-samd/boards/hallowing_m4_express/pins.c +++ b/ports/atmel-samd/boards/hallowing_m4_express/pins.c @@ -8,7 +8,7 @@ #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/huntercat_nfc/pins.c b/ports/atmel-samd/boards/huntercat_nfc/pins.c index 4ed56b244be7..8a42a3a22b76 100644 --- a/ports/atmel-samd/boards/huntercat_nfc/pins.c +++ b/ports/atmel-samd/boards/huntercat_nfc/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA03) }, diff --git a/ports/atmel-samd/boards/itsybitsy_m0_express/pins.c b/ports/atmel-samd/boards/itsybitsy_m0_express/pins.c index ff51363861ca..78f55835c3cd 100644 --- a/ports/atmel-samd/boards/itsybitsy_m0_express/pins.c +++ b/ports/atmel-samd/boards/itsybitsy_m0_express/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA11) }, diff --git a/ports/atmel-samd/boards/itsybitsy_m4_express/pins.c b/ports/atmel-samd/boards/itsybitsy_m4_express/pins.c index 404292a6a1a8..029fa7c5ba87 100644 --- a/ports/atmel-samd/boards/itsybitsy_m4_express/pins.c +++ b/ports/atmel-samd/boards/itsybitsy_m4_express/pins.c @@ -9,7 +9,7 @@ // This mapping only includes functional names because pins broken // out on connectors are labeled with their MCU name available from // microcontroller.pin. -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/kicksat-sprite/pins.c b/ports/atmel-samd/boards/kicksat-sprite/pins.c index ea914681eb59..8fbd02434029 100644 --- a/ports/atmel-samd/boards/kicksat-sprite/pins.c +++ b/ports/atmel-samd/boards/kicksat-sprite/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PA05) }, diff --git a/ports/atmel-samd/boards/loc_ber_m4_base_board/pins.c b/ports/atmel-samd/boards/loc_ber_m4_base_board/pins.c index 642823167088..52908720522d 100644 --- a/ports/atmel-samd/boards/loc_ber_m4_base_board/pins.c +++ b/ports/atmel-samd/boards/loc_ber_m4_base_board/pins.c @@ -9,7 +9,7 @@ // This mapping only includes functional names because pins broken // out on connectors are labeled with their MCU name available from // microcontroller.pin. -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/matrixportal_m4/pins.c b/ports/atmel-samd/boards/matrixportal_m4/pins.c index f2748d7f45a4..4233704d1392 100644 --- a/ports/atmel-samd/boards/matrixportal_m4/pins.c +++ b/ports/atmel-samd/boards/matrixportal_m4/pins.c @@ -7,7 +7,7 @@ #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_obj_tuple_t matrix_addr_tuple = { +static const mp_rom_obj_tuple_t matrix_addr_tuple = { {&mp_type_tuple}, 5, { @@ -19,7 +19,7 @@ STATIC const mp_rom_obj_tuple_t matrix_addr_tuple = { } }; -STATIC const mp_rom_obj_tuple_t matrix_data_tuple = { +static const mp_rom_obj_tuple_t matrix_data_tuple = { {&mp_type_tuple}, 6, { @@ -33,7 +33,7 @@ STATIC const mp_rom_obj_tuple_t matrix_data_tuple = { } }; -STATIC const mp_rom_map_elem_t matrix_common_table[] = { +static const mp_rom_map_elem_t matrix_common_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR_rgb_pins), MP_ROM_PTR(&matrix_data_tuple) }, { MP_OBJ_NEW_QSTR(MP_QSTR_clock_pin), MP_ROM_PTR(&pin_PB06) }, { MP_OBJ_NEW_QSTR(MP_QSTR_latch_pin), MP_ROM_PTR(&pin_PB14) }, @@ -42,7 +42,7 @@ STATIC const mp_rom_map_elem_t matrix_common_table[] = { MP_DEFINE_CONST_DICT(matrix_common_dict, matrix_common_table); -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/meowmeow/pins.c b/ports/atmel-samd/boards/meowmeow/pins.c index d92f0d86125e..a94a33b8c867 100644 --- a/ports/atmel-samd/boards/meowmeow/pins.c +++ b/ports/atmel-samd/boards/meowmeow/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/metro_m0_express/pins.c b/ports/atmel-samd/boards/metro_m0_express/pins.c index 8b00c7329e26..323aa1e91c84 100644 --- a/ports/atmel-samd/boards/metro_m0_express/pins.c +++ b/ports/atmel-samd/boards/metro_m0_express/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/metro_m4_airlift_lite/pins.c b/ports/atmel-samd/boards/metro_m4_airlift_lite/pins.c index e52042721e88..3e56a6f76c93 100644 --- a/ports/atmel-samd/boards/metro_m4_airlift_lite/pins.c +++ b/ports/atmel-samd/boards/metro_m4_airlift_lite/pins.c @@ -9,7 +9,7 @@ // This mapping only includes functional names because pins broken // out on connectors are labeled with their MCU name available from // microcontroller.pin. -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/metro_m4_express/pins.c b/ports/atmel-samd/boards/metro_m4_express/pins.c index 73a36156618b..045d0165bd72 100644 --- a/ports/atmel-samd/boards/metro_m4_express/pins.c +++ b/ports/atmel-samd/boards/metro_m4_express/pins.c @@ -9,7 +9,7 @@ // This mapping only includes functional names because pins broken // out on connectors are labeled with their MCU name available from // microcontroller.pin. -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/mini_sam_m4/pins.c b/ports/atmel-samd/boards/mini_sam_m4/pins.c index 6edc837a39c1..5dfd6bb8f0a2 100644 --- a/ports/atmel-samd/boards/mini_sam_m4/pins.c +++ b/ports/atmel-samd/boards/mini_sam_m4/pins.c @@ -9,7 +9,7 @@ // This mapping only includes functional names because pins broken // out on connectors are labeled with their MCU name available from // microcontroller.pin. -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/monster_m4sk/pins.c b/ports/atmel-samd/boards/monster_m4sk/pins.c index 7b91ac0b6ee0..a96732a55966 100644 --- a/ports/atmel-samd/boards/monster_m4sk/pins.c +++ b/ports/atmel-samd/boards/monster_m4sk/pins.c @@ -9,7 +9,7 @@ #include "supervisor/board.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_SPEAKER), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/ndgarage_ndbit6/pins.c b/ports/atmel-samd/boards/ndgarage_ndbit6/pins.c index f6755dc5bb8c..7dce61096e0f 100644 --- a/ports/atmel-samd/boards/ndgarage_ndbit6/pins.c +++ b/ports/atmel-samd/boards/ndgarage_ndbit6/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PA05) }, diff --git a/ports/atmel-samd/boards/ndgarage_ndbit6_v2/pins.c b/ports/atmel-samd/boards/ndgarage_ndbit6_v2/pins.c index 96a5a0cc2139..b99d57ed9f93 100644 --- a/ports/atmel-samd/boards/ndgarage_ndbit6_v2/pins.c +++ b/ports/atmel-samd/boards/ndgarage_ndbit6_v2/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/neopixel_trinkey_m0/pins.c b/ports/atmel-samd/boards/neopixel_trinkey_m0/pins.c index af4edfbd1d77..6a6d0673ce8b 100644 --- a/ports/atmel-samd/boards/neopixel_trinkey_m0/pins.c +++ b/ports/atmel-samd/boards/neopixel_trinkey_m0/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_TOUCH1), MP_ROM_PTR(&pin_PA03) }, diff --git a/ports/atmel-samd/boards/nfc_copy_cat/pins.c b/ports/atmel-samd/boards/nfc_copy_cat/pins.c index 2829e382a44d..cb4e227bdc43 100644 --- a/ports/atmel-samd/boards/nfc_copy_cat/pins.c +++ b/ports/atmel-samd/boards/nfc_copy_cat/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PA02) }, // IRQ diff --git a/ports/atmel-samd/boards/openbook_m4/pins.c b/ports/atmel-samd/boards/openbook_m4/pins.c index c8cdfe351e91..250773c6c33d 100644 --- a/ports/atmel-samd/boards/openbook_m4/pins.c +++ b/ports/atmel-samd/boards/openbook_m4/pins.c @@ -9,7 +9,7 @@ #include "supervisor/board.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, // A0 = audio right channel diff --git a/ports/atmel-samd/boards/p1am_200/pins.c b/ports/atmel-samd/boards/p1am_200/pins.c index d7dbaee64cbc..91864e3fc511 100644 --- a/ports/atmel-samd/boards/p1am_200/pins.c +++ b/ports/atmel-samd/boards/p1am_200/pins.c @@ -9,7 +9,7 @@ // This mapping only includes functional names because pins broken // out on connectors are labeled with their MCU name available from // microcontroller.pin. -STATIC const mp_rom_map_elem_t board_global_dict_table[] = { +static const mp_rom_map_elem_t board_global_dict_table[] = { // Left side header // Analog Pins { MP_OBJ_NEW_QSTR(MP_QSTR_AREF), MP_ROM_PTR(&pin_PA03) }, diff --git a/ports/atmel-samd/boards/pewpew10/pins.c b/ports/atmel-samd/boards/pewpew10/pins.c index 846b0c85dafb..68aab74f449c 100644 --- a/ports/atmel-samd/boards/pewpew10/pins.c +++ b/ports/atmel-samd/boards/pewpew10/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // Pins for internal use. diff --git a/ports/atmel-samd/boards/pewpew_lcd/pins.c b/ports/atmel-samd/boards/pewpew_lcd/pins.c index 36d92a39bc6e..4ad72a1ebb68 100644 --- a/ports/atmel-samd/boards/pewpew_lcd/pins.c +++ b/ports/atmel-samd/boards/pewpew_lcd/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_global_dict_table[] = { +static const mp_rom_map_elem_t board_global_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PA23) }, { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PA22) }, { MP_ROM_QSTR(MP_QSTR_CS), MP_ROM_PTR(&pin_PA17) }, diff --git a/ports/atmel-samd/boards/pewpew_m4/board.c b/ports/atmel-samd/boards/pewpew_m4/board.c index 30ccf86ce5c6..6ba7155867a9 100644 --- a/ports/atmel-samd/boards/pewpew_m4/board.c +++ b/ports/atmel-samd/boards/pewpew_m4/board.c @@ -29,7 +29,7 @@ typedef struct { #define DELAY 0x80 -STATIC uint32_t lookupCfg(uint32_t key, uint32_t defl) { +static uint32_t lookupCfg(uint32_t key, uint32_t defl) { const uint32_t *ptr = UF2_BINFO->config_data; if (!ptr || (((uint32_t)ptr) & 3) || *ptr != CFG_MAGIC0) { // no config data! diff --git a/ports/atmel-samd/boards/pewpew_m4/pins.c b/ports/atmel-samd/boards/pewpew_m4/pins.c index d5cc79305dcc..71a2d5e1f934 100644 --- a/ports/atmel-samd/boards/pewpew_m4/pins.c +++ b/ports/atmel-samd/boards/pewpew_m4/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_BUTTON_LEFT), MP_ROM_PTR(&pin_PB23) }, diff --git a/ports/atmel-samd/boards/picoplanet/pins.c b/ports/atmel-samd/boards/picoplanet/pins.c index 745a481962ad..cd49da547baf 100644 --- a/ports/atmel-samd/boards/picoplanet/pins.c +++ b/ports/atmel-samd/boards/picoplanet/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/pybadge/pins.c b/ports/atmel-samd/boards/pybadge/pins.c index ba5902a57d74..6c81b537c956 100644 --- a/ports/atmel-samd/boards/pybadge/pins.c +++ b/ports/atmel-samd/boards/pybadge/pins.c @@ -9,7 +9,7 @@ #include "supervisor/board.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/pycubed/pins.c b/ports/atmel-samd/boards/pycubed/pins.c index cfb40b06b43e..7bda1a2e30ec 100644 --- a/ports/atmel-samd/boards/pycubed/pins.c +++ b/ports/atmel-samd/boards/pycubed/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PA13) }, diff --git a/ports/atmel-samd/boards/pycubed_mram/pins.c b/ports/atmel-samd/boards/pycubed_mram/pins.c index cfb40b06b43e..7bda1a2e30ec 100644 --- a/ports/atmel-samd/boards/pycubed_mram/pins.c +++ b/ports/atmel-samd/boards/pycubed_mram/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PA13) }, diff --git a/ports/atmel-samd/boards/pycubed_mram_v05/pins.c b/ports/atmel-samd/boards/pycubed_mram_v05/pins.c index 473e2e52e496..32b640c232d7 100644 --- a/ports/atmel-samd/boards/pycubed_mram_v05/pins.c +++ b/ports/atmel-samd/boards/pycubed_mram_v05/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "supervisor/board.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PA13) }, diff --git a/ports/atmel-samd/boards/pycubed_v05/pins.c b/ports/atmel-samd/boards/pycubed_v05/pins.c index f513523fc2fb..07a8190efa80 100644 --- a/ports/atmel-samd/boards/pycubed_v05/pins.c +++ b/ports/atmel-samd/boards/pycubed_v05/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PA13) }, diff --git a/ports/atmel-samd/boards/pygamer/pins.c b/ports/atmel-samd/boards/pygamer/pins.c index 959be3aca8aa..f2aed3d6527b 100644 --- a/ports/atmel-samd/boards/pygamer/pins.c +++ b/ports/atmel-samd/boards/pygamer/pins.c @@ -9,7 +9,7 @@ #include "supervisor/board.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/pyportal/pins.c b/ports/atmel-samd/boards/pyportal/pins.c index f502613c04d8..50cda39e85cb 100644 --- a/ports/atmel-samd/boards/pyportal/pins.c +++ b/ports/atmel-samd/boards/pyportal/pins.c @@ -12,7 +12,7 @@ // This mapping only includes functional names because pins broken // out on connectors are labeled with their MCU name available from // microcontroller.pin. -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_SPEAKER), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/pyportal_titano/pins.c b/ports/atmel-samd/boards/pyportal_titano/pins.c index f502613c04d8..50cda39e85cb 100644 --- a/ports/atmel-samd/boards/pyportal_titano/pins.c +++ b/ports/atmel-samd/boards/pyportal_titano/pins.c @@ -12,7 +12,7 @@ // This mapping only includes functional names because pins broken // out on connectors are labeled with their MCU name available from // microcontroller.pin. -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_SPEAKER), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/pyruler/pins.c b/ports/atmel-samd/boards/pyruler/pins.c index af78aa245b0f..5eff2a9b5141 100644 --- a/ports/atmel-samd/boards/pyruler/pins.c +++ b/ports/atmel-samd/boards/pyruler/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA08) }, diff --git a/ports/atmel-samd/boards/qtpy_m0/pins.c b/ports/atmel-samd/boards/qtpy_m0/pins.c index 4618ed5108fe..e23ab2b2a774 100644 --- a/ports/atmel-samd/boards/qtpy_m0/pins.c +++ b/ports/atmel-samd/boards/qtpy_m0/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/qtpy_m0_haxpress/pins.c b/ports/atmel-samd/boards/qtpy_m0_haxpress/pins.c index 4618ed5108fe..e23ab2b2a774 100644 --- a/ports/atmel-samd/boards/qtpy_m0_haxpress/pins.c +++ b/ports/atmel-samd/boards/qtpy_m0_haxpress/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/robohatmm1_m4/pins.c b/ports/atmel-samd/boards/robohatmm1_m4/pins.c index 793aa352e0c4..f5bc7f42f021 100644 --- a/ports/atmel-samd/boards/robohatmm1_m4/pins.c +++ b/ports/atmel-samd/boards/robohatmm1_m4/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" // Version 2.4 -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // SERVO Pins diff --git a/ports/atmel-samd/boards/sam32/pins.c b/ports/atmel-samd/boards/sam32/pins.c index 160c9a10775d..d7ed30453ee8 100644 --- a/ports/atmel-samd/boards/sam32/pins.c +++ b/ports/atmel-samd/boards/sam32/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO39), MP_ROM_PTR(&pin_PB08) }, diff --git a/ports/atmel-samd/boards/same54_xplained/pins.c b/ports/atmel-samd/boards/same54_xplained/pins.c index 25a3f5fad101..3a5883fd8631 100644 --- a/ports/atmel-samd/boards/same54_xplained/pins.c +++ b/ports/atmel-samd/boards/same54_xplained/pins.c @@ -7,7 +7,7 @@ #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_obj_tuple_t sdio_data_tuple = { +static const mp_rom_obj_tuple_t sdio_data_tuple = { {&mp_type_tuple}, 4, { @@ -22,7 +22,7 @@ STATIC const mp_rom_obj_tuple_t sdio_data_tuple = { // This mapping only includes functional names because pins broken // out on connectors are labeled with their MCU name available from // microcontroller.pin. -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PD08) }, diff --git a/ports/atmel-samd/boards/seeeduino_wio_terminal/pins.c b/ports/atmel-samd/boards/seeeduino_wio_terminal/pins.c index e45e2dd55778..fb908f930d99 100644 --- a/ports/atmel-samd/boards/seeeduino_wio_terminal/pins.c +++ b/ports/atmel-samd/boards/seeeduino_wio_terminal/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS diff --git a/ports/atmel-samd/boards/seeeduino_xiao/pins.c b/ports/atmel-samd/boards/seeeduino_xiao/pins.c index 4da8ef047350..09a63159597a 100644 --- a/ports/atmel-samd/boards/seeeduino_xiao/pins.c +++ b/ports/atmel-samd/boards/seeeduino_xiao/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS diff --git a/ports/atmel-samd/boards/seeeduino_xiao_kb/pins.c b/ports/atmel-samd/boards/seeeduino_xiao_kb/pins.c index 4da8ef047350..09a63159597a 100644 --- a/ports/atmel-samd/boards/seeeduino_xiao_kb/pins.c +++ b/ports/atmel-samd/boards/seeeduino_xiao_kb/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS diff --git a/ports/atmel-samd/boards/sensebox_mcu/pins.c b/ports/atmel-samd/boards/sensebox_mcu/pins.c index 6a498ef34c42..91e123ea7eb8 100644 --- a/ports/atmel-samd/boards/sensebox_mcu/pins.c +++ b/ports/atmel-samd/boards/sensebox_mcu/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS diff --git a/ports/atmel-samd/boards/serpente/pins.c b/ports/atmel-samd/boards/serpente/pins.c index 3158f5964c9c..d4b23b3ad78e 100644 --- a/ports/atmel-samd/boards/serpente/pins.c +++ b/ports/atmel-samd/boards/serpente/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA04) }, diff --git a/ports/atmel-samd/boards/shirtty/pins.c b/ports/atmel-samd/boards/shirtty/pins.c index 0c3f599cac5c..c1a75b809a2f 100644 --- a/ports/atmel-samd/boards/shirtty/pins.c +++ b/ports/atmel-samd/boards/shirtty/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA08) }, diff --git a/ports/atmel-samd/boards/silicognition-m4-shim/pins.c b/ports/atmel-samd/boards/silicognition-m4-shim/pins.c index e593c6c45316..ec564e3cb1c7 100644 --- a/ports/atmel-samd/boards/silicognition-m4-shim/pins.c +++ b/ports/atmel-samd/boards/silicognition-m4-shim/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/snekboard/pins.c b/ports/atmel-samd/boards/snekboard/pins.c index 2c07e14c4d78..3fc559cf2243 100644 --- a/ports/atmel-samd/boards/snekboard/pins.c +++ b/ports/atmel-samd/boards/snekboard/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PB08) }, diff --git a/ports/atmel-samd/boards/sparkfun_lumidrive/pins.c b/ports/atmel-samd/boards/sparkfun_lumidrive/pins.c index 3494fb20d742..65396f228c00 100755 --- a/ports/atmel-samd/boards/sparkfun_lumidrive/pins.c +++ b/ports/atmel-samd/boards/sparkfun_lumidrive/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_PA04) }, diff --git a/ports/atmel-samd/boards/sparkfun_qwiic_micro_no_flash/pins.c b/ports/atmel-samd/boards/sparkfun_qwiic_micro_no_flash/pins.c index 804514ddf24f..4e2ce7ed24d0 100644 --- a/ports/atmel-samd/boards/sparkfun_qwiic_micro_no_flash/pins.c +++ b/ports/atmel-samd/boards/sparkfun_qwiic_micro_no_flash/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS diff --git a/ports/atmel-samd/boards/sparkfun_qwiic_micro_with_flash/pins.c b/ports/atmel-samd/boards/sparkfun_qwiic_micro_with_flash/pins.c index 804514ddf24f..4e2ce7ed24d0 100644 --- a/ports/atmel-samd/boards/sparkfun_qwiic_micro_with_flash/pins.c +++ b/ports/atmel-samd/boards/sparkfun_qwiic_micro_with_flash/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS diff --git a/ports/atmel-samd/boards/sparkfun_redboard_turbo/pins.c b/ports/atmel-samd/boards/sparkfun_redboard_turbo/pins.c index 00784c16ce4a..211d1f0daf31 100755 --- a/ports/atmel-samd/boards/sparkfun_redboard_turbo/pins.c +++ b/ports/atmel-samd/boards/sparkfun_redboard_turbo/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/sparkfun_samd21_dev/pins.c b/ports/atmel-samd/boards/sparkfun_samd21_dev/pins.c index 1e6898b5f45c..8fd73a307f8e 100644 --- a/ports/atmel-samd/boards/sparkfun_samd21_dev/pins.c +++ b/ports/atmel-samd/boards/sparkfun_samd21_dev/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS diff --git a/ports/atmel-samd/boards/sparkfun_samd21_mini/pins.c b/ports/atmel-samd/boards/sparkfun_samd21_mini/pins.c index ed068ed1bacb..f5f46f97fc40 100644 --- a/ports/atmel-samd/boards/sparkfun_samd21_mini/pins.c +++ b/ports/atmel-samd/boards/sparkfun_samd21_mini/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS diff --git a/ports/atmel-samd/boards/sparkfun_samd51_micromod/pins.c b/ports/atmel-samd/boards/sparkfun_samd51_micromod/pins.c index d79b00223074..9424ee83debe 100644 --- a/ports/atmel-samd/boards/sparkfun_samd51_micromod/pins.c +++ b/ports/atmel-samd/boards/sparkfun_samd51_micromod/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // The SparkFun MicroMod spec uses a zero-based peripheral numbering scheme. // The 0th peripheral is the default and the "0" is omitted from the diff --git a/ports/atmel-samd/boards/sparkfun_samd51_thing_plus/pins.c b/ports/atmel-samd/boards/sparkfun_samd51_thing_plus/pins.c index cca6a4881749..f22314676f2e 100644 --- a/ports/atmel-samd/boards/sparkfun_samd51_thing_plus/pins.c +++ b/ports/atmel-samd/boards/sparkfun_samd51_thing_plus/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/stackrduino_m0_pro/pins.c b/ports/atmel-samd/boards/stackrduino_m0_pro/pins.c index 163697b730a5..287fa853fb82 100644 --- a/ports/atmel-samd/boards/stackrduino_m0_pro/pins.c +++ b/ports/atmel-samd/boards/stackrduino_m0_pro/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/stringcar_m0_express/pins.c b/ports/atmel-samd/boards/stringcar_m0_express/pins.c index bb650ea86d9c..09a816722ddc 100644 --- a/ports/atmel-samd/boards/stringcar_m0_express/pins.c +++ b/ports/atmel-samd/boards/stringcar_m0_express/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_PIEZO), MP_ROM_PTR(&pin_PA08) }, diff --git a/ports/atmel-samd/boards/trellis_m4_express/pins.c b/ports/atmel-samd/boards/trellis_m4_express/pins.c index a8c45f09160a..f1277f09e7af 100644 --- a/ports/atmel-samd/boards/trellis_m4_express/pins.c +++ b/ports/atmel-samd/boards/trellis_m4_express/pins.c @@ -9,7 +9,7 @@ // This mapping only includes functional names because pins broken // out on connectors are labeled with their MCU name available from // microcontroller.pin. -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/trinket_m0/pins.c b/ports/atmel-samd/boards/trinket_m0/pins.c index 7f9e319faa9d..ac990dc50176 100644 --- a/ports/atmel-samd/boards/trinket_m0/pins.c +++ b/ports/atmel-samd/boards/trinket_m0/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA08) }, diff --git a/ports/atmel-samd/boards/trinket_m0_haxpress/pins.c b/ports/atmel-samd/boards/trinket_m0_haxpress/pins.c index 7f9e319faa9d..ac990dc50176 100644 --- a/ports/atmel-samd/boards/trinket_m0_haxpress/pins.c +++ b/ports/atmel-samd/boards/trinket_m0_haxpress/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA08) }, diff --git a/ports/atmel-samd/boards/uartlogger2/pins.c b/ports/atmel-samd/boards/uartlogger2/pins.c index b6ce568a4959..bf66e71597a9 100644 --- a/ports/atmel-samd/boards/uartlogger2/pins.c +++ b/ports/atmel-samd/boards/uartlogger2/pins.c @@ -9,7 +9,7 @@ // This mapping only includes functional names because pins broken // out on connectors are labeled with their MCU name available from // microcontroller.pin. -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) }, diff --git a/ports/atmel-samd/boards/uchip/pins.c b/ports/atmel-samd/boards/uchip/pins.c index 4ad74392846f..edbeed91c82d 100644 --- a/ports/atmel-samd/boards/uchip/pins.c +++ b/ports/atmel-samd/boards/uchip/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_PA07) }, diff --git a/ports/atmel-samd/boards/ugame10/pins.c b/ports/atmel-samd/boards/ugame10/pins.c index 9cd38dd30ecd..612640abdf9a 100644 --- a/ports/atmel-samd/boards/ugame10/pins.c +++ b/ports/atmel-samd/boards/ugame10/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_X), MP_ROM_PTR(&pin_PA00) }, diff --git a/ports/atmel-samd/boards/winterbloom_big_honking_button/pins.c b/ports/atmel-samd/boards/winterbloom_big_honking_button/pins.c index 9daaed174fea..8ffb17211c98 100644 --- a/ports/atmel-samd/boards/winterbloom_big_honking_button/pins.c +++ b/ports/atmel-samd/boards/winterbloom_big_honking_button/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_PA07) }, diff --git a/ports/atmel-samd/boards/winterbloom_big_honking_button/usermods/_bhb/bhb.c b/ports/atmel-samd/boards/winterbloom_big_honking_button/usermods/_bhb/bhb.c index b5c162b14dc4..9b8c6b64e99c 100644 --- a/ports/atmel-samd/boards/winterbloom_big_honking_button/usermods/_bhb/bhb.c +++ b/ports/atmel-samd/boards/winterbloom_big_honking_button/usermods/_bhb/bhb.c @@ -10,9 +10,9 @@ #include "samd/pins.h" #include "sam.h" -STATIC mp_obj_t _bhb_read_adc(void); +static mp_obj_t _bhb_read_adc(void); -STATIC mp_obj_t _bhb_init_adc(void) { +static mp_obj_t _bhb_init_adc(void) { claim_pin(&pin_PB08); common_hal_never_reset_pin(&pin_PB08); @@ -93,7 +93,7 @@ STATIC mp_obj_t _bhb_init_adc(void) { return mp_const_none; } -STATIC mp_obj_t _bhb_read_adc(void) { +static mp_obj_t _bhb_read_adc(void) { /* Wait for bus synchronization. */ while (ADC->STATUS.bit.SYNCBUSY) { } @@ -117,16 +117,16 @@ STATIC mp_obj_t _bhb_read_adc(void) { } -STATIC MP_DEFINE_CONST_FUN_OBJ_0(_bhb_init_adc_obj, _bhb_init_adc); -STATIC MP_DEFINE_CONST_FUN_OBJ_0(_bhb_read_adc_obj, _bhb_read_adc); +static MP_DEFINE_CONST_FUN_OBJ_0(_bhb_init_adc_obj, _bhb_init_adc); +static MP_DEFINE_CONST_FUN_OBJ_0(_bhb_read_adc_obj, _bhb_read_adc); -STATIC const mp_rom_map_elem_t _bhb_module_globals_table[] = { +static const mp_rom_map_elem_t _bhb_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR__bhb) }, { MP_ROM_QSTR(MP_QSTR_init_adc), MP_ROM_PTR(&_bhb_init_adc_obj) }, { MP_ROM_QSTR(MP_QSTR_read_adc), MP_ROM_PTR(&_bhb_read_adc_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(_bhb_module_globals, _bhb_module_globals_table); +static MP_DEFINE_CONST_DICT(_bhb_module_globals, _bhb_module_globals_table); const mp_obj_module_t _bhb_user_cmodule = { .base = { &mp_type_module }, diff --git a/ports/atmel-samd/boards/winterbloom_sol/pins.c b/ports/atmel-samd/boards/winterbloom_sol/pins.c index 7a9e1bf1a578..5a7f24b6ce54 100644 --- a/ports/atmel-samd/boards/winterbloom_sol/pins.c +++ b/ports/atmel-samd/boards/winterbloom_sol/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PA17) }, diff --git a/ports/atmel-samd/boards/xinabox_cc03/pins.c b/ports/atmel-samd/boards/xinabox_cc03/pins.c index 7c87d30f8c77..8dc337fbc5b4 100644 --- a/ports/atmel-samd/boards/xinabox_cc03/pins.c +++ b/ports/atmel-samd/boards/xinabox_cc03/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PA11) }, diff --git a/ports/atmel-samd/boards/xinabox_cs11/pins.c b/ports/atmel-samd/boards/xinabox_cs11/pins.c index a462ea5ac1d2..3f70af530906 100644 --- a/ports/atmel-samd/boards/xinabox_cs11/pins.c +++ b/ports/atmel-samd/boards/xinabox_cs11/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PA11) }, diff --git a/ports/atmel-samd/common-hal/alarm/__init__.c b/ports/atmel-samd/common-hal/alarm/__init__.c index 38ad44fb5788..483aa1a9679a 100644 --- a/ports/atmel-samd/common-hal/alarm/__init__.c +++ b/ports/atmel-samd/common-hal/alarm/__init__.c @@ -19,7 +19,7 @@ #include "supervisor/port.h" #include "supervisor/workflow.h" -STATIC uint32_t TAMPID = 0; +static uint32_t TAMPID = 0; // Singleton instance of SleepMemory. const alarm_sleep_memory_obj_t alarm_sleep_memory_obj = { @@ -72,7 +72,7 @@ mp_obj_t common_hal_alarm_record_wake_alarm(void) { } // Set up light sleep or deep sleep alarms. -STATIC void _setup_sleep_alarms(bool deep_sleep, size_t n_alarms, const mp_obj_t *alarms) { +static void _setup_sleep_alarms(bool deep_sleep, size_t n_alarms, const mp_obj_t *alarms) { alarm_pin_pinalarm_set_alarms(deep_sleep, n_alarms, alarms); alarm_time_timealarm_set_alarms(deep_sleep, n_alarms, alarms); } diff --git a/ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c b/ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c index 9c83d96f3f05..cd537a66fea8 100644 --- a/ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c +++ b/ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c @@ -18,8 +18,8 @@ // This variable stores whether a PinAlarm woke in light sleep or fake deep sleep // It CANNOT detect if the program woke from deep sleep. -STATIC volatile bool woke_up = false; -STATIC alarm_pin_pinalarm_obj_t *trig_alarm = NULL; +static volatile bool woke_up = false; +static alarm_pin_pinalarm_obj_t *trig_alarm = NULL; // Tamper Pins for deep sleep: IN0:PB00; IN1:PB02; IN2:PA02; IN3:PC00; IN4:PC01; // wakeup from deep sleep seems to be triggered when these pins go from Hi/Lo to Hi-Z state. diff --git a/ports/atmel-samd/common-hal/alarm/time/TimeAlarm.c b/ports/atmel-samd/common-hal/alarm/time/TimeAlarm.c index e8a4bca5c1d9..7194daf38e50 100644 --- a/ports/atmel-samd/common-hal/alarm/time/TimeAlarm.c +++ b/ports/atmel-samd/common-hal/alarm/time/TimeAlarm.c @@ -12,8 +12,8 @@ #include "shared-bindings/time/__init__.h" #include "supervisor/port.h" -STATIC volatile bool woke_up = false; -STATIC mp_float_t wakeup_time; +static volatile bool woke_up = false; +static mp_float_t wakeup_time; void common_hal_alarm_time_timealarm_construct(alarm_time_timealarm_obj_t *self, mp_float_t monotonic_time) { // TODO: when issuing light/seep sleep, throw a ValueError if the diff --git a/ports/atmel-samd/common-hal/busio/I2C.c b/ports/atmel-samd/common-hal/busio/I2C.c index d8136c1ef967..033c74c0a1ab 100644 --- a/ports/atmel-samd/common-hal/busio/I2C.c +++ b/ports/atmel-samd/common-hal/busio/I2C.c @@ -165,7 +165,7 @@ void common_hal_busio_i2c_unlock(busio_i2c_obj_t *self) { self->has_lock = false; } -STATIC uint8_t _common_hal_busio_i2c_write(busio_i2c_obj_t *self, uint16_t addr, +static uint8_t _common_hal_busio_i2c_write(busio_i2c_obj_t *self, uint16_t addr, const uint8_t *data, size_t len, bool transmit_stop_bit) { uint16_t attempts = ATTEMPTS; diff --git a/ports/atmel-samd/common-hal/canio/CAN.c b/ports/atmel-samd/common-hal/canio/CAN.c index 324345ec9984..3321d0abdbc8 100644 --- a/ports/atmel-samd/common-hal/canio/CAN.c +++ b/ports/atmel-samd/common-hal/canio/CAN.c @@ -20,12 +20,12 @@ #include "genhdr/candata.h" -STATIC Can *const can_insts[] = CAN_INSTS; +static Can *const can_insts[] = CAN_INSTS; -STATIC canio_can_obj_t *can_objs[MP_ARRAY_SIZE(can_insts)]; +static canio_can_obj_t *can_objs[MP_ARRAY_SIZE(can_insts)]; // This must be placed in the first 64kB of RAM -STATIC COMPILER_SECTION(".canram") canio_can_state_t can_state[MP_ARRAY_SIZE(can_insts)]; +static COMPILER_SECTION(".canram") canio_can_state_t can_state[MP_ARRAY_SIZE(can_insts)]; void common_hal_canio_can_construct(canio_can_obj_t *self, const mcu_pin_obj_t *tx, const mcu_pin_obj_t *rx, int baudrate, bool loopback, bool silent) { mcu_pin_function_t *tx_function = mcu_find_pin_function(can_tx, tx, -1, MP_QSTR_tx); @@ -371,7 +371,7 @@ void common_hal_canio_reset(void) { } -STATIC void can_handler(int i) { +static void can_handler(int i) { canio_can_obj_t *self = can_objs[i]; (void)self; diff --git a/ports/atmel-samd/common-hal/canio/Listener.c b/ports/atmel-samd/common-hal/canio/Listener.c index 2c044ad4af11..23f7710d6cb2 100644 --- a/ports/atmel-samd/common-hal/canio/Listener.c +++ b/ports/atmel-samd/common-hal/canio/Listener.c @@ -19,14 +19,14 @@ #include "supervisor/shared/tick.h" #include "component/can.h" -STATIC void allow_config_change(canio_can_obj_t *can) { +static void allow_config_change(canio_can_obj_t *can) { can->hw->CCCR.bit.INIT = 1; while (!can->hw->CCCR.bit.INIT) { } can->hw->CCCR.bit.CCE = 1; } -STATIC void prevent_config_change(canio_can_obj_t *can) { +static void prevent_config_change(canio_can_obj_t *can) { can->hw->CCCR.bit.CCE = 0; can->hw->CCCR.bit.INIT = 0; while (can->hw->CCCR.bit.INIT) { @@ -34,26 +34,26 @@ STATIC void prevent_config_change(canio_can_obj_t *can) { } __attribute__((unused)) -STATIC void static_assertions(void) { +static void static_assertions(void) { MP_STATIC_ASSERT(CAN_GFC_ANFE_RXF0_Val + 1 == CAN_GFC_ANFE_RXF1_Val); MP_STATIC_ASSERT(CAN_GFC_ANFS_RXF0_Val + 1 == CAN_GFC_ANFS_RXF1_Val); MP_STATIC_ASSERT(CAN_SIDFE_0_SFEC_STF0M_Val + 1 == CAN_SIDFE_0_SFEC_STF1M_Val); MP_STATIC_ASSERT(CAN_XIDFE_0_EFEC_STF0M_Val + 1 == CAN_XIDFE_0_EFEC_STF1M_Val); } -STATIC bool single_id_filter(canio_match_obj_t *match) { +static bool single_id_filter(canio_match_obj_t *match) { return match->mask == 0 || match->mask == match->id; } -STATIC bool standard_filter_in_use(CanMramSidfe *filter) { +static bool standard_filter_in_use(CanMramSidfe *filter) { return filter->SIDFE_0.bit.SFEC != CAN_SIDFE_0_SFEC_DISABLE_Val; } -STATIC bool extended_filter_in_use(CanMramXidfe *filter) { +static bool extended_filter_in_use(CanMramXidfe *filter) { return filter->XIDFE_0.bit.EFEC != CAN_XIDFE_0_EFEC_DISABLE_Val; } -STATIC size_t num_filters_needed(size_t nmatch, canio_match_obj_t **matches, bool extended) { +static size_t num_filters_needed(size_t nmatch, canio_match_obj_t **matches, bool extended) { size_t num_half_filters_needed = 1; for (size_t i = 0; i < nmatch; i++) { if (extended != matches[i]->extended) { @@ -68,7 +68,7 @@ STATIC size_t num_filters_needed(size_t nmatch, canio_match_obj_t **matches, boo return num_half_filters_needed / 2; } -STATIC size_t num_filters_available(canio_can_obj_t *can, bool extended) { +static size_t num_filters_available(canio_can_obj_t *can, bool extended) { size_t available = 0; if (extended) { for (size_t i = 0; i < MP_ARRAY_SIZE(can->state->extended_rx_filter); i++) { @@ -86,7 +86,7 @@ STATIC size_t num_filters_available(canio_can_obj_t *can, bool extended) { return available; } -STATIC void clear_filters(canio_listener_obj_t *self) { +static void clear_filters(canio_listener_obj_t *self) { canio_can_obj_t *can = self->can; int fifo = self->fifo_idx; @@ -115,7 +115,7 @@ STATIC void clear_filters(canio_listener_obj_t *self) { } } -STATIC CanMramXidfe *next_extended_filter(canio_listener_obj_t *self, CanMramXidfe *start) { +static CanMramXidfe *next_extended_filter(canio_listener_obj_t *self, CanMramXidfe *start) { CanMramXidfe *end = &self->can->state->extended_rx_filter[MP_ARRAY_SIZE(self->can->state->extended_rx_filter)]; if (start == NULL) { start = self->can->state->extended_rx_filter; @@ -131,7 +131,7 @@ STATIC CanMramXidfe *next_extended_filter(canio_listener_obj_t *self, CanMramXid return start; } -STATIC CanMramSidfe *next_standard_filter(canio_listener_obj_t *self, CanMramSidfe *start) { +static CanMramSidfe *next_standard_filter(canio_listener_obj_t *self, CanMramSidfe *start) { CanMramSidfe *end = &self->can->state->standard_rx_filter[MP_ARRAY_SIZE(self->can->state->standard_rx_filter)]; if (start == NULL) { start = self->can->state->standard_rx_filter; @@ -147,7 +147,7 @@ STATIC CanMramSidfe *next_standard_filter(canio_listener_obj_t *self, CanMramSid return start; } -STATIC void install_standard_filter(CanMramSidfe *standard, int id1, int id2, int sfec, int sft) { +static void install_standard_filter(CanMramSidfe *standard, int id1, int id2, int sfec, int sft) { assert(standard); CAN_SIDFE_0_Type val = { .bit.SFID1 = id1, @@ -158,7 +158,7 @@ STATIC void install_standard_filter(CanMramSidfe *standard, int id1, int id2, in standard->SIDFE_0 = val; } -STATIC void install_extended_filter(CanMramXidfe *extended, int id1, int id2, int efec, int eft) { +static void install_extended_filter(CanMramXidfe *extended, int id1, int id2, int efec, int eft) { assert(extended); CAN_XIDFE_0_Type val0 = { .bit.EFID1 = id1, @@ -175,7 +175,7 @@ STATIC void install_extended_filter(CanMramXidfe *extended, int id1, int id2, in #define NO_ID (-1) -STATIC void set_filters(canio_listener_obj_t *self, size_t nmatch, canio_match_obj_t **matches) { +static void set_filters(canio_listener_obj_t *self, size_t nmatch, canio_match_obj_t **matches) { int fifo = self->fifo_idx; if (!nmatch) { diff --git a/ports/atmel-samd/common-hal/microcontroller/Pin.c b/ports/atmel-samd/common-hal/microcontroller/Pin.c index 16fce15a594f..bbf3957818e7 100644 --- a/ports/atmel-samd/common-hal/microcontroller/Pin.c +++ b/ports/atmel-samd/common-hal/microcontroller/Pin.c @@ -26,7 +26,7 @@ bool speaker_enable_in_use; #define SWD_MUX GPIO_PIN_FUNCTION_G #endif -STATIC uint32_t never_reset_pins[PORT_COUNT]; +static uint32_t never_reset_pins[PORT_COUNT]; void reset_all_pins(void) { uint32_t pin_mask[PORT_COUNT] = PORT_OUT_IMPLEMENTED; diff --git a/ports/atmel-samd/common-hal/microcontroller/Processor.c b/ports/atmel-samd/common-hal/microcontroller/Processor.c index dd78c3f7e58f..95ecde815e6f 100644 --- a/ports/atmel-samd/common-hal/microcontroller/Processor.c +++ b/ports/atmel-samd/common-hal/microcontroller/Processor.c @@ -75,7 +75,7 @@ // (by computing (a + b/2) / b instead of just a / b) actually didn't help // accuracy anyway. #ifdef SAMD21 -STATIC float calculate_temperature(uint16_t raw_value) { +static float calculate_temperature(uint16_t raw_value) { uint32_t val1; /* Temperature Log Row Content first 32 bits */ uint32_t val2; /* Temperature Log Row Content another 32 bits */ int room_temp_val_int; /* Integer part of room temperature in °C */ @@ -143,10 +143,10 @@ STATIC float calculate_temperature(uint16_t raw_value) { #ifdef SAM_D5X_E5X // Decimal to fraction conversion. (adapted from ASF sample). -STATIC float convert_dec_to_frac(uint8_t val) { +static float convert_dec_to_frac(uint8_t val) { return val / MICROPY_FLOAT_CONST(10.); } -STATIC float calculate_temperature(uint16_t TP, uint16_t TC) { +static float calculate_temperature(uint16_t TP, uint16_t TC) { uint32_t TLI = (*(uint32_t *)FUSES_ROOM_TEMP_VAL_INT_ADDR & FUSES_ROOM_TEMP_VAL_INT_Msk) >> FUSES_ROOM_TEMP_VAL_INT_Pos; uint32_t TLD = (*(uint32_t *)FUSES_ROOM_TEMP_VAL_DEC_ADDR & FUSES_ROOM_TEMP_VAL_DEC_Msk) >> FUSES_ROOM_TEMP_VAL_DEC_Pos; float TL = TLI + convert_dec_to_frac(TLD); diff --git a/ports/atmel-samd/common-hal/microcontroller/__init__.c b/ports/atmel-samd/common-hal/microcontroller/__init__.c index 505cd078e3b2..693b92638cad 100644 --- a/ports/atmel-samd/common-hal/microcontroller/__init__.c +++ b/ports/atmel-samd/common-hal/microcontroller/__init__.c @@ -93,7 +93,7 @@ watchdog_watchdogtimer_obj_t common_hal_mcu_watchdogtimer_obj = { #endif // This maps MCU pin names to pin objects. -STATIC const mp_rom_map_elem_t mcu_pin_global_dict_table[] = { +static const mp_rom_map_elem_t mcu_pin_global_dict_table[] = { #if defined(PIN_PA00) && !defined(IGNORE_PIN_PA00) { MP_ROM_QSTR(MP_QSTR_PA00), MP_ROM_PTR(&pin_PA00) }, #endif diff --git a/ports/atmel-samd/common-hal/neopixel_write/__init__.c b/ports/atmel-samd/common-hal/neopixel_write/__init__.c index 5599a4b9e25d..2a5857bfbfc2 100644 --- a/ports/atmel-samd/common-hal/neopixel_write/__init__.c +++ b/ports/atmel-samd/common-hal/neopixel_write/__init__.c @@ -91,7 +91,7 @@ static void neopixel_send_buffer_core(volatile uint32_t *clraddr, uint32_t pinMa ""); } -STATIC uint64_t next_start_raw_ticks = 0; +static uint64_t next_start_raw_ticks = 0; void common_hal_neopixel_write(const digitalio_digitalinout_obj_t *digitalinout, uint8_t *pixels, uint32_t numBytes) { // This is adapted directly from the Adafruit NeoPixel library SAMD21G18A code: diff --git a/ports/atmel-samd/common-hal/os/__init__.c b/ports/atmel-samd/common-hal/os/__init__.c index 4d3d8d96fa5e..2c1de431c663 100644 --- a/ports/atmel-samd/common-hal/os/__init__.c +++ b/ports/atmel-samd/common-hal/os/__init__.c @@ -16,24 +16,24 @@ #include "hal/include/hal_rand_sync.h" #endif -STATIC const qstr os_uname_info_fields[] = { +static const qstr os_uname_info_fields[] = { MP_QSTR_sysname, MP_QSTR_nodename, MP_QSTR_release, MP_QSTR_version, MP_QSTR_machine }; #ifdef SAMD21 -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_sysname_obj, "samd21"); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_nodename_obj, "samd21"); +static const MP_DEFINE_STR_OBJ(os_uname_info_sysname_obj, "samd21"); +static const MP_DEFINE_STR_OBJ(os_uname_info_nodename_obj, "samd21"); #endif #ifdef SAM_D5X_E5X -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_sysname_obj, "samd51"); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_nodename_obj, "samd51"); +static const MP_DEFINE_STR_OBJ(os_uname_info_sysname_obj, "samd51"); +static const MP_DEFINE_STR_OBJ(os_uname_info_nodename_obj, "samd51"); #endif -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_release_obj, MICROPY_VERSION_STRING); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_version_obj, MICROPY_GIT_TAG " on " MICROPY_BUILD_DATE); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_machine_obj, MICROPY_HW_BOARD_NAME " with " MICROPY_HW_MCU_NAME); +static const MP_DEFINE_STR_OBJ(os_uname_info_release_obj, MICROPY_VERSION_STRING); +static const MP_DEFINE_STR_OBJ(os_uname_info_version_obj, MICROPY_GIT_TAG " on " MICROPY_BUILD_DATE); +static const MP_DEFINE_STR_OBJ(os_uname_info_machine_obj, MICROPY_HW_BOARD_NAME " with " MICROPY_HW_MCU_NAME); -STATIC MP_DEFINE_ATTRTUPLE( +static MP_DEFINE_ATTRTUPLE( os_uname_info_obj, os_uname_info_fields, 5, diff --git a/ports/atmel-samd/common-hal/pulseio/PulseOut.c b/ports/atmel-samd/common-hal/pulseio/PulseOut.c index dabc9c02b7a8..a345405533a3 100644 --- a/ports/atmel-samd/common-hal/pulseio/PulseOut.c +++ b/ports/atmel-samd/common-hal/pulseio/PulseOut.c @@ -39,7 +39,7 @@ static void turn_off(__IO PORT_PINCFG_Type *pincfg) { pincfg->reg = PORT_PINCFG_RESETVALUE; } -STATIC void pulse_finish(void) { +static void pulse_finish(void) { pulse_index++; if (active_pincfg == NULL) { diff --git a/ports/atmel-samd/common-hal/pwmio/PWMOut.c b/ports/atmel-samd/common-hal/pwmio/PWMOut.c index 1b8afbc516a0..71d6f38d502a 100644 --- a/ports/atmel-samd/common-hal/pwmio/PWMOut.c +++ b/ports/atmel-samd/common-hal/pwmio/PWMOut.c @@ -49,7 +49,7 @@ static uint8_t tcc_channel(const pin_timer_t *t) { return t->wave_output % tcc_cc_num[t->index]; } -STATIC bool channel_ok(const pin_timer_t *t) { +static bool channel_ok(const pin_timer_t *t) { uint8_t channel_bit = 1 << tcc_channel(t); return (!t->is_tc && ((tcc_channels[t->index] & channel_bit) == 0)) || t->is_tc; diff --git a/ports/atmel-samd/common-hal/sdioio/SDCard.c b/ports/atmel-samd/common-hal/sdioio/SDCard.c index e5a02bd29c99..071aada4962a 100644 --- a/ports/atmel-samd/common-hal/sdioio/SDCard.c +++ b/ports/atmel-samd/common-hal/sdioio/SDCard.c @@ -148,23 +148,23 @@ uint8_t common_hal_sdioio_sdcard_get_width(sdioio_sdcard_obj_t *self) { return self->num_data; // self->width; } -STATIC void check_for_deinit(sdioio_sdcard_obj_t *self) { +static void check_for_deinit(sdioio_sdcard_obj_t *self) { } -STATIC void check_whole_block(mp_buffer_info_t *bufinfo) { +static void check_whole_block(mp_buffer_info_t *bufinfo) { if (bufinfo->len % 512) { mp_raise_ValueError(MP_ERROR_TEXT("Buffer length must be a multiple of 512")); } } -STATIC void wait_write_complete(sdioio_sdcard_obj_t *self) { +static void wait_write_complete(sdioio_sdcard_obj_t *self) { if (self->state_programming) { sd_mmc_wait_end_of_write_blocks(0); self->state_programming = 0; } } -STATIC void debug_print_state(sdioio_sdcard_obj_t *self, const char *what, sd_mmc_err_t r) { +static void debug_print_state(sdioio_sdcard_obj_t *self, const char *what, sd_mmc_err_t r) { #if DEBUG_SDIO DEBUG_PRINT("%s: %d\n", what, r); #endif diff --git a/ports/atmel-samd/supervisor/internal_flash.c b/ports/atmel-samd/supervisor/internal_flash.c index 02ad1cb4f7f3..af821e3b4d0d 100644 --- a/ports/atmel-samd/supervisor/internal_flash.c +++ b/ports/atmel-samd/supervisor/internal_flash.c @@ -67,7 +67,7 @@ static int32_t convert_block_to_flash_addr(uint32_t block) { return -1; } -STATIC bool supervisor_flash_read_block(uint8_t *dest, uint32_t block) { +static bool supervisor_flash_read_block(uint8_t *dest, uint32_t block) { // non-MBR block, get data from flash memory int32_t src = convert_block_to_flash_addr(block); if (src == -1) { @@ -78,7 +78,7 @@ STATIC bool supervisor_flash_read_block(uint8_t *dest, uint32_t block) { return error_code == ERR_NONE; } -STATIC bool supervisor_flash_write_block(const uint8_t *src, uint32_t block) { +static bool supervisor_flash_write_block(const uint8_t *src, uint32_t block) { // non-MBR block, copy to cache int32_t dest = convert_block_to_flash_addr(block); if (dest == -1) { diff --git a/ports/broadcom/bindings/videocore/Framebuffer.c b/ports/broadcom/bindings/videocore/Framebuffer.c index 9c2278400930..f5d8ab8d34b3 100644 --- a/ports/broadcom/bindings/videocore/Framebuffer.c +++ b/ports/broadcom/bindings/videocore/Framebuffer.c @@ -27,7 +27,7 @@ //| A Framebuffer is often used in conjunction with a //| `framebufferio.FramebufferDisplay`.""" -STATIC mp_obj_t videocore_framebuffer_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t videocore_framebuffer_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_width, ARG_height, }; static const mp_arg_t allowed_args[] = { { MP_QSTR_width, MP_ARG_INT | MP_ARG_REQUIRED }, @@ -51,13 +51,13 @@ STATIC mp_obj_t videocore_framebuffer_make_new(const mp_obj_type_t *type, size_t //| rgbmatrix instance. After deinitialization, no further operations //| may be performed.""" //| ... -STATIC mp_obj_t videocore_framebuffer_deinit(mp_obj_t self_in) { +static mp_obj_t videocore_framebuffer_deinit(mp_obj_t self_in) { videocore_framebuffer_obj_t *self = (videocore_framebuffer_obj_t *)self_in; common_hal_videocore_framebuffer_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(videocore_framebuffer_deinit_obj, videocore_framebuffer_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(videocore_framebuffer_deinit_obj, videocore_framebuffer_deinit); static void check_for_deinit(videocore_framebuffer_obj_t *self) { if (common_hal_videocore_framebuffer_deinited(self)) { @@ -67,7 +67,7 @@ static void check_for_deinit(videocore_framebuffer_obj_t *self) { //| width: int //| """The width of the display, in pixels""" -STATIC mp_obj_t videocore_framebuffer_get_width(mp_obj_t self_in) { +static mp_obj_t videocore_framebuffer_get_width(mp_obj_t self_in) { videocore_framebuffer_obj_t *self = (videocore_framebuffer_obj_t *)self_in; check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_videocore_framebuffer_get_width(self)); @@ -79,7 +79,7 @@ MP_PROPERTY_GETTER(videocore_framebuffer_width_obj, //| height: int //| """The height of the display, in pixels""" //| -STATIC mp_obj_t videocore_framebuffer_get_height(mp_obj_t self_in) { +static mp_obj_t videocore_framebuffer_get_height(mp_obj_t self_in) { videocore_framebuffer_obj_t *self = (videocore_framebuffer_obj_t *)self_in; check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_videocore_framebuffer_get_height(self)); @@ -89,54 +89,54 @@ MP_DEFINE_CONST_FUN_OBJ_1(videocore_framebuffer_get_height_obj, videocore_frameb MP_PROPERTY_GETTER(videocore_framebuffer_height_obj, (mp_obj_t)&videocore_framebuffer_get_height_obj); -STATIC const mp_rom_map_elem_t videocore_framebuffer_locals_dict_table[] = { +static const mp_rom_map_elem_t videocore_framebuffer_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&videocore_framebuffer_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR_width), MP_ROM_PTR(&videocore_framebuffer_width_obj) }, { MP_ROM_QSTR(MP_QSTR_height), MP_ROM_PTR(&videocore_framebuffer_height_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(videocore_framebuffer_locals_dict, videocore_framebuffer_locals_dict_table); +static MP_DEFINE_CONST_DICT(videocore_framebuffer_locals_dict, videocore_framebuffer_locals_dict_table); -STATIC void videocore_framebuffer_get_bufinfo(mp_obj_t self_in, mp_buffer_info_t *bufinfo) { +static void videocore_framebuffer_get_bufinfo(mp_obj_t self_in, mp_buffer_info_t *bufinfo) { common_hal_videocore_framebuffer_get_buffer(self_in, bufinfo, 0); } // These versions exist so that the prototype matches the protocol, // avoiding a type cast that can hide errors -STATIC void videocore_framebuffer_swapbuffers(mp_obj_t self_in, uint8_t *dirty_row_bitmap) { +static void videocore_framebuffer_swapbuffers(mp_obj_t self_in, uint8_t *dirty_row_bitmap) { (void)dirty_row_bitmap; common_hal_videocore_framebuffer_refresh(self_in); } -STATIC void videocore_framebuffer_deinit_proto(mp_obj_t self_in) { +static void videocore_framebuffer_deinit_proto(mp_obj_t self_in) { common_hal_videocore_framebuffer_deinit(self_in); } -STATIC int videocore_framebuffer_get_width_proto(mp_obj_t self_in) { +static int videocore_framebuffer_get_width_proto(mp_obj_t self_in) { return common_hal_videocore_framebuffer_get_width(self_in); } -STATIC int videocore_framebuffer_get_height_proto(mp_obj_t self_in) { +static int videocore_framebuffer_get_height_proto(mp_obj_t self_in) { return common_hal_videocore_framebuffer_get_height(self_in); } -STATIC int videocore_framebuffer_get_color_depth_proto(mp_obj_t self_in) { +static int videocore_framebuffer_get_color_depth_proto(mp_obj_t self_in) { return 32; } -STATIC int videocore_framebuffer_get_bytes_per_cell_proto(mp_obj_t self_in) { +static int videocore_framebuffer_get_bytes_per_cell_proto(mp_obj_t self_in) { return 1; } -STATIC int videocore_framebuffer_get_native_frames_per_second_proto(mp_obj_t self_in) { +static int videocore_framebuffer_get_native_frames_per_second_proto(mp_obj_t self_in) { return 30; } -STATIC int videocore_framebuffer_get_row_stride_proto(mp_obj_t self_in) { +static int videocore_framebuffer_get_row_stride_proto(mp_obj_t self_in) { return common_hal_videocore_framebuffer_get_row_stride(self_in); } -STATIC const framebuffer_p_t videocore_framebuffer_proto = { +static const framebuffer_p_t videocore_framebuffer_proto = { MP_PROTO_IMPLEMENT(MP_QSTR_protocol_framebuffer) .get_bufinfo = videocore_framebuffer_get_bufinfo, .get_width = videocore_framebuffer_get_width_proto, diff --git a/ports/broadcom/bindings/videocore/__init__.c b/ports/broadcom/bindings/videocore/__init__.c index 34cee303af40..3c83ba2ac783 100644 --- a/ports/broadcom/bindings/videocore/__init__.c +++ b/ports/broadcom/bindings/videocore/__init__.c @@ -13,12 +13,12 @@ //| """Low-level routines for interacting with the Broadcom VideoCore GPU""" -STATIC const mp_rom_map_elem_t videocore_module_globals_table[] = { +static const mp_rom_map_elem_t videocore_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_videocore) }, { MP_ROM_QSTR(MP_QSTR_Framebuffer), MP_ROM_PTR(&videocore_framebuffer_type) }, }; -STATIC MP_DEFINE_CONST_DICT(videocore_module_globals, videocore_module_globals_table); +static MP_DEFINE_CONST_DICT(videocore_module_globals, videocore_module_globals_table); const mp_obj_module_t videocore_module = { .base = { &mp_type_module }, diff --git a/ports/broadcom/boards/diodes_delight_piunora/pins.c b/ports/broadcom/boards/diodes_delight_piunora/pins.c index ea410bf247eb..27bbe93e1eec 100644 --- a/ports/broadcom/boards/diodes_delight_piunora/pins.c +++ b/ports/broadcom/boards/diodes_delight_piunora/pins.c @@ -8,7 +8,7 @@ #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_global_dict_table[] = { +static const mp_rom_map_elem_t board_global_dict_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GPIO5), MP_ROM_PTR(&pin_GPIO5) }, diff --git a/ports/broadcom/boards/raspberrypi_cm4/pins.c b/ports/broadcom/boards/raspberrypi_cm4/pins.c index 0d1e8e4abeb8..83f781eea97a 100644 --- a/ports/broadcom/boards/raspberrypi_cm4/pins.c +++ b/ports/broadcom/boards/raspberrypi_cm4/pins.c @@ -8,7 +8,7 @@ #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_global_dict_table[] = { +static const mp_rom_map_elem_t board_global_dict_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // These match the names used in the CM4 datasheet diff --git a/ports/broadcom/boards/raspberrypi_cm4io/pins.c b/ports/broadcom/boards/raspberrypi_cm4io/pins.c index 7c40a17369b2..d9666eafda32 100644 --- a/ports/broadcom/boards/raspberrypi_cm4io/pins.c +++ b/ports/broadcom/boards/raspberrypi_cm4io/pins.c @@ -8,7 +8,7 @@ #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_global_dict_table[] = { +static const mp_rom_map_elem_t board_global_dict_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // These match the names used in Blinka diff --git a/ports/broadcom/boards/raspberrypi_pi4b/pins.c b/ports/broadcom/boards/raspberrypi_pi4b/pins.c index 7c40a17369b2..d9666eafda32 100644 --- a/ports/broadcom/boards/raspberrypi_pi4b/pins.c +++ b/ports/broadcom/boards/raspberrypi_pi4b/pins.c @@ -8,7 +8,7 @@ #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_global_dict_table[] = { +static const mp_rom_map_elem_t board_global_dict_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // These match the names used in Blinka diff --git a/ports/broadcom/boards/raspberrypi_zero/pins.c b/ports/broadcom/boards/raspberrypi_zero/pins.c index 362675216b43..4b3cf2281358 100644 --- a/ports/broadcom/boards/raspberrypi_zero/pins.c +++ b/ports/broadcom/boards/raspberrypi_zero/pins.c @@ -8,7 +8,7 @@ #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_global_dict_table[] = { +static const mp_rom_map_elem_t board_global_dict_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // These match the names used in Blinka { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/broadcom/boards/raspberrypi_zero2w/pins.c b/ports/broadcom/boards/raspberrypi_zero2w/pins.c index 77295b2152fe..1d8f247487e6 100644 --- a/ports/broadcom/boards/raspberrypi_zero2w/pins.c +++ b/ports/broadcom/boards/raspberrypi_zero2w/pins.c @@ -8,7 +8,7 @@ #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_global_dict_table[] = { +static const mp_rom_map_elem_t board_global_dict_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // These match the names used in Blinka { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/broadcom/boards/raspberrypi_zero_w/pins.c b/ports/broadcom/boards/raspberrypi_zero_w/pins.c index 362675216b43..4b3cf2281358 100644 --- a/ports/broadcom/boards/raspberrypi_zero_w/pins.c +++ b/ports/broadcom/boards/raspberrypi_zero_w/pins.c @@ -8,7 +8,7 @@ #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_global_dict_table[] = { +static const mp_rom_map_elem_t board_global_dict_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // These match the names used in Blinka { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/broadcom/common-hal/busio/I2C.c b/ports/broadcom/common-hal/busio/I2C.c index c0e40a681120..19f346595f73 100644 --- a/ports/broadcom/common-hal/busio/I2C.c +++ b/ports/broadcom/common-hal/busio/I2C.c @@ -17,14 +17,14 @@ #if BCM_VERSION == 2711 #define NUM_I2C (8) -STATIC BSC0_Type *i2c[NUM_I2C] = {BSC0, BSC1, NULL, BSC3, BSC4, BSC5, BSC6, NULL}; +static BSC0_Type *i2c[NUM_I2C] = {BSC0, BSC1, NULL, BSC3, BSC4, BSC5, BSC6, NULL}; #else #define NUM_I2C (3) -STATIC BSC0_Type *i2c[NUM_I2C] = {BSC0, BSC1, NULL}; +static BSC0_Type *i2c[NUM_I2C] = {BSC0, BSC1, NULL}; #endif -STATIC bool never_reset_i2c[NUM_I2C]; -STATIC bool i2c_in_use[NUM_I2C]; +static bool never_reset_i2c[NUM_I2C]; +static bool i2c_in_use[NUM_I2C]; void reset_i2c(void) { // BSC2 is dedicated to the first HDMI output. @@ -127,7 +127,7 @@ void common_hal_busio_i2c_unlock(busio_i2c_obj_t *self) { // Discussion of I2C implementation is here: https://github.com/raspberrypi/linux/issues/254 -STATIC uint8_t _common_hal_busio_i2c_write(busio_i2c_obj_t *self, uint16_t addr, +static uint8_t _common_hal_busio_i2c_write(busio_i2c_obj_t *self, uint16_t addr, const uint8_t *data, size_t len, bool transmit_stop_bit) { COMPLETE_MEMORY_READS; self->peripheral->S_b.DONE = true; diff --git a/ports/broadcom/common-hal/busio/SPI.c b/ports/broadcom/common-hal/busio/SPI.c index 5169470de84b..f573d7b03299 100644 --- a/ports/broadcom/common-hal/busio/SPI.c +++ b/ports/broadcom/common-hal/busio/SPI.c @@ -22,16 +22,16 @@ #if BCM_VERSION == 2711 #define NUM_SPI (7) -STATIC SPI0_Type *spi[NUM_SPI] = {SPI0, NULL, NULL, SPI3, SPI4, SPI5, SPI6}; -STATIC SPI1_Type *aux_spi[NUM_SPI] = {NULL, SPI1, SPI2, NULL, NULL, NULL, NULL}; +static SPI0_Type *spi[NUM_SPI] = {SPI0, NULL, NULL, SPI3, SPI4, SPI5, SPI6}; +static SPI1_Type *aux_spi[NUM_SPI] = {NULL, SPI1, SPI2, NULL, NULL, NULL, NULL}; #else #define NUM_SPI (3) -STATIC SPI0_Type *spi[NUM_SPI] = {SPI0, NULL, NULL}; -STATIC SPI1_Type *aux_spi[NUM_SPI] = {NULL, SPI1, SPI2}; +static SPI0_Type *spi[NUM_SPI] = {SPI0, NULL, NULL}; +static SPI1_Type *aux_spi[NUM_SPI] = {NULL, SPI1, SPI2}; #endif -STATIC bool never_reset_spi[NUM_SPI]; -STATIC bool spi_in_use[NUM_SPI]; +static bool never_reset_spi[NUM_SPI]; +static bool spi_in_use[NUM_SPI]; void reset_spi(void) { for (size_t i = 0; i < NUM_SPI; i++) { @@ -216,7 +216,7 @@ void common_hal_busio_spi_unlock(busio_spi_obj_t *self) { self->has_lock = false; } -STATIC void _spi_transfer(SPI0_Type *p, +static void _spi_transfer(SPI0_Type *p, const uint8_t *data_out, size_t out_len, uint8_t *data_in, size_t in_len) { size_t len = MAX(out_len, in_len); @@ -252,7 +252,7 @@ STATIC void _spi_transfer(SPI0_Type *p, COMPLETE_MEMORY_READS; } -STATIC void _aux_spi_transfer(SPI1_Type *p, +static void _aux_spi_transfer(SPI1_Type *p, const uint8_t *data_out, size_t out_len, uint8_t *data_in, size_t in_len) { size_t len = MAX(out_len, in_len); diff --git a/ports/broadcom/common-hal/busio/UART.c b/ports/broadcom/common-hal/busio/UART.c index a5dc2732b698..55c890475eb6 100644 --- a/ports/broadcom/common-hal/busio/UART.c +++ b/ports/broadcom/common-hal/busio/UART.c @@ -24,10 +24,10 @@ // UART1 is a different peripheral than the rest so it is hardcoded below. #if BCM_VERSION == 2711 #define NUM_UART (6) -STATIC ARM_UART_PL011_Type *uart[NUM_UART] = {UART0, NULL, UART2, UART3, UART4, UART5}; +static ARM_UART_PL011_Type *uart[NUM_UART] = {UART0, NULL, UART2, UART3, UART4, UART5}; #else #define NUM_UART (2) -STATIC ARM_UART_PL011_Type *uart[NUM_UART] = {UART0, NULL}; +static ARM_UART_PL011_Type *uart[NUM_UART] = {UART0, NULL}; #endif typedef enum { @@ -67,7 +67,7 @@ void reset_uart(void) { } } -STATIC void fetch_all_from_fifo(busio_uart_obj_t *self) { +static void fetch_all_from_fifo(busio_uart_obj_t *self) { if (self->uart_id == 1) { while (UART1->STAT_b.DATA_READY && ringbuf_num_empty(&self->ringbuf) > 0) { int c = UART1->IO_b.DATA; @@ -359,13 +359,13 @@ size_t common_hal_busio_uart_write(busio_uart_obj_t *self, const uint8_t *data, return len; } -STATIC void disable_interrupt(busio_uart_obj_t *self) { +static void disable_interrupt(busio_uart_obj_t *self) { if (self->uart_id == 1) { UART1->IER_b.DATA_READY = false; } } -STATIC void enable_interrupt(busio_uart_obj_t *self) { +static void enable_interrupt(busio_uart_obj_t *self) { if (self->uart_id == 1) { UART1->IER_b.DATA_READY = true; } diff --git a/ports/broadcom/common-hal/microcontroller/Pin.c b/ports/broadcom/common-hal/microcontroller/Pin.c index 758256f21cf4..be5c0ff62108 100644 --- a/ports/broadcom/common-hal/microcontroller/Pin.c +++ b/ports/broadcom/common-hal/microcontroller/Pin.c @@ -8,8 +8,8 @@ #include "peripherals/broadcom/gpio.h" -STATIC bool pin_in_use[BCM_PIN_COUNT]; -STATIC bool never_reset_pin[BCM_PIN_COUNT]; +static bool pin_in_use[BCM_PIN_COUNT]; +static bool never_reset_pin[BCM_PIN_COUNT]; void reset_all_pins(void) { for (size_t i = 0; i < BCM_PIN_COUNT; i++) { diff --git a/ports/broadcom/common-hal/os/__init__.c b/ports/broadcom/common-hal/os/__init__.c index eaf402deb14d..72a9a07e9077 100644 --- a/ports/broadcom/common-hal/os/__init__.c +++ b/ports/broadcom/common-hal/os/__init__.c @@ -10,19 +10,19 @@ #include "py/objtuple.h" #include "py/qstr.h" -STATIC const qstr os_uname_info_fields[] = { +static const qstr os_uname_info_fields[] = { MP_QSTR_sysname, MP_QSTR_nodename, MP_QSTR_release, MP_QSTR_version, MP_QSTR_machine }; -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_sysname_obj, MICROPY_HW_MCU_NAME); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_nodename_obj, MICROPY_HW_MCU_NAME); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_release_obj, MICROPY_VERSION_STRING); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_version_obj, MICROPY_GIT_TAG " on " MICROPY_BUILD_DATE); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_machine_obj, MICROPY_HW_BOARD_NAME " with " MICROPY_HW_MCU_NAME); +static const MP_DEFINE_STR_OBJ(os_uname_info_sysname_obj, MICROPY_HW_MCU_NAME); +static const MP_DEFINE_STR_OBJ(os_uname_info_nodename_obj, MICROPY_HW_MCU_NAME); +static const MP_DEFINE_STR_OBJ(os_uname_info_release_obj, MICROPY_VERSION_STRING); +static const MP_DEFINE_STR_OBJ(os_uname_info_version_obj, MICROPY_GIT_TAG " on " MICROPY_BUILD_DATE); +static const MP_DEFINE_STR_OBJ(os_uname_info_machine_obj, MICROPY_HW_BOARD_NAME " with " MICROPY_HW_MCU_NAME); -STATIC MP_DEFINE_ATTRTUPLE( +static MP_DEFINE_ATTRTUPLE( os_uname_info_obj, os_uname_info_fields, 5, diff --git a/ports/broadcom/common-hal/sdioio/SDCard.c b/ports/broadcom/common-hal/sdioio/SDCard.c index cd523ff4373f..f87d40cd8dca 100644 --- a/ports/broadcom/common-hal/sdioio/SDCard.c +++ b/ports/broadcom/common-hal/sdioio/SDCard.c @@ -27,12 +27,12 @@ void osal_task_delay(uint32_t msec) { } /*!< Host function to initialize the driver */ -STATIC sdmmc_err_t _init(void) { +static sdmmc_err_t _init(void) { return SDMMC_OK; } /*!< host function to set bus width */ -STATIC sdmmc_err_t _set_bus_width(int slot, size_t width) { +static sdmmc_err_t _set_bus_width(int slot, size_t width) { if (width == 4) { EMMC->CONTROL0_b.HCTL_DWIDTH = true; } else if (width == 8) { @@ -42,12 +42,12 @@ STATIC sdmmc_err_t _set_bus_width(int slot, size_t width) { } /*!< host function to get the maximum bus width of a particular slot */ -STATIC size_t _get_bus_width(int slot) { +static size_t _get_bus_width(int slot) { return 4; } /*!< host function to set card clock frequency */ -STATIC sdmmc_err_t _set_card_clk(int slot, uint32_t freq_khz) { +static sdmmc_err_t _set_card_clk(int slot, uint32_t freq_khz) { uint32_t base_clock = 125000000; uint32_t frequency = freq_khz * 1000; uint64_t start_ticks = port_get_raw_ticks(NULL); @@ -85,7 +85,7 @@ STATIC sdmmc_err_t _set_card_clk(int slot, uint32_t freq_khz) { } /*!< host function to do a transaction */ -STATIC sdmmc_err_t _do_transaction(int slot, sdmmc_command_t *cmdinfo) { +static sdmmc_err_t _do_transaction(int slot, sdmmc_command_t *cmdinfo) { if (EMMC->STATUS_b.CMD_INHIBIT) { return SDMMC_ERR_BUSY; } @@ -204,7 +204,7 @@ STATIC sdmmc_err_t _do_transaction(int slot, sdmmc_command_t *cmdinfo) { } /*!< host function to deinitialize the driver, called with the `slot` */ -STATIC sdmmc_err_t _deinit(int slot) { +static sdmmc_err_t _deinit(int slot) { return SDMMC_OK; } @@ -298,7 +298,7 @@ uint8_t common_hal_sdioio_sdcard_get_width(sdioio_sdcard_obj_t *self) { return self->num_data; } -STATIC void check_whole_block(mp_buffer_info_t *bufinfo) { +static void check_whole_block(mp_buffer_info_t *bufinfo) { if (bufinfo->len % 512) { mp_raise_ValueError(MP_ERROR_TEXT("Buffer length must be a multiple of 512")); } diff --git a/ports/broadcom/supervisor/internal_flash.c b/ports/broadcom/supervisor/internal_flash.c index 0fa8f1e157ae..2e75154ea359 100644 --- a/ports/broadcom/supervisor/internal_flash.c +++ b/ports/broadcom/supervisor/internal_flash.c @@ -12,12 +12,12 @@ #include "shared-bindings/digitalio/DigitalInOut.h" #include "shared-bindings/sdioio/SDCard.h" -STATIC sdioio_sdcard_obj_t sd; +static sdioio_sdcard_obj_t sd; -STATIC uint32_t first_lba = 0; -STATIC uint32_t sector_count = 0; +static uint32_t first_lba = 0; +static uint32_t sector_count = 0; -STATIC bool inited = false; +static bool inited = false; void supervisor_flash_init(void) { if (inited) { diff --git a/ports/broadcom/supervisor/port.c b/ports/broadcom/supervisor/port.c index 6a936586995d..33b20b7c8647 100644 --- a/ports/broadcom/supervisor/port.c +++ b/ports/broadcom/supervisor/port.c @@ -35,7 +35,7 @@ extern volatile bool mp_msc_enabled; -STATIC uint32_t board_revision; +static uint32_t board_revision; safe_mode_t port_init(void) { board_revision = vcmailbox_get_board_revision(); diff --git a/ports/cxd56/boards/spresense/pins.c b/ports/cxd56/boards/spresense/pins.c index a552307e268f..48a7ce209769 100644 --- a/ports/cxd56/boards/spresense/pins.c +++ b/ports/cxd56/boards/spresense/pins.c @@ -8,7 +8,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_obj_tuple_t sdio_data_tuple = { +static const mp_rom_obj_tuple_t sdio_data_tuple = { {&mp_type_tuple}, 4, { @@ -19,7 +19,7 @@ STATIC const mp_rom_obj_tuple_t sdio_data_tuple = { } }; -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_UART2_RXD) }, diff --git a/ports/cxd56/common-hal/analogio/AnalogIn.c b/ports/cxd56/common-hal/analogio/AnalogIn.c index ca27afe83f78..b124f1bac801 100644 --- a/ports/cxd56/common-hal/analogio/AnalogIn.c +++ b/ports/cxd56/common-hal/analogio/AnalogIn.c @@ -22,7 +22,7 @@ typedef struct { int fd; } analogin_dev_t; -STATIC analogin_dev_t analogin_dev[] = { +static analogin_dev_t analogin_dev[] = { {"/dev/lpadc0", &pin_LPADC0, -1}, {"/dev/lpadc1", &pin_LPADC1, -1}, {"/dev/lpadc2", &pin_LPADC2, -1}, diff --git a/ports/cxd56/common-hal/busio/I2C.c b/ports/cxd56/common-hal/busio/I2C.c index ca7e4476c3e2..4cfa3f8467df 100644 --- a/ports/cxd56/common-hal/busio/I2C.c +++ b/ports/cxd56/common-hal/busio/I2C.c @@ -78,7 +78,7 @@ bool common_hal_busio_i2c_probe(busio_i2c_obj_t *self, uint8_t addr) { return I2C_TRANSFER(self->i2c_dev, &msg, 1) < 0 ? false : true; } -STATIC uint8_t _common_hal_busio_i2c_write(busio_i2c_obj_t *self, uint16_t address, const uint8_t *data, size_t len, bool stop) { +static uint8_t _common_hal_busio_i2c_write(busio_i2c_obj_t *self, uint16_t address, const uint8_t *data, size_t len, bool stop) { struct i2c_msg_s msg; msg.frequency = self->frequency; diff --git a/ports/cxd56/common-hal/busio/UART.c b/ports/cxd56/common-hal/busio/UART.c index 12325d94cba3..0b6a5dbd622e 100644 --- a/ports/cxd56/common-hal/busio/UART.c +++ b/ports/cxd56/common-hal/busio/UART.c @@ -29,7 +29,7 @@ typedef struct { int fd; } busio_uart_dev_t; -STATIC busio_uart_dev_t busio_uart_dev[] = { +static busio_uart_dev_t busio_uart_dev[] = { {"/dev/ttyS2", &pin_UART2_TXD, &pin_UART2_RXD, -1}, }; diff --git a/ports/cxd56/common-hal/camera/Camera.c b/ports/cxd56/common-hal/camera/Camera.c index 239460ab07ea..c3c935a168d4 100644 --- a/ports/cxd56/common-hal/camera/Camera.c +++ b/ports/cxd56/common-hal/camera/Camera.c @@ -20,14 +20,14 @@ typedef struct { int fd; } camera_dev_t; -STATIC camera_dev_t camera_dev = {"/dev/video", -1}; +static camera_dev_t camera_dev = {"/dev/video", -1}; typedef struct { uint16_t width; uint16_t height; } image_size_t; -STATIC const image_size_t isx012_image_size_table[] = { +static const image_size_t isx012_image_size_table[] = { { VIDEO_HSIZE_QVGA, VIDEO_VSIZE_QVGA }, { VIDEO_HSIZE_VGA, VIDEO_VSIZE_VGA }, { VIDEO_HSIZE_HD, VIDEO_VSIZE_HD }, @@ -37,7 +37,7 @@ STATIC const image_size_t isx012_image_size_table[] = { { VIDEO_HSIZE_5M, VIDEO_VSIZE_5M }, }; -STATIC const image_size_t isx019_image_size_table[] = { +static const image_size_t isx019_image_size_table[] = { { VIDEO_HSIZE_QVGA, VIDEO_VSIZE_QVGA }, { VIDEO_HSIZE_VGA, VIDEO_VSIZE_VGA }, { VIDEO_HSIZE_HD, VIDEO_VSIZE_HD }, diff --git a/ports/cxd56/common-hal/gnss/GNSS.c b/ports/cxd56/common-hal/gnss/GNSS.c index bb16b1ad822e..c33202349350 100644 --- a/ports/cxd56/common-hal/gnss/GNSS.c +++ b/ports/cxd56/common-hal/gnss/GNSS.c @@ -18,7 +18,7 @@ typedef struct { int fd; } gnss_dev_t; -STATIC gnss_dev_t gnss_dev = {"/dev/gps", -1}; +static gnss_dev_t gnss_dev = {"/dev/gps", -1}; static gnss_positionfix_t fix_to_positionfix_type(uint8_t fix) { switch (fix) { diff --git a/ports/cxd56/common-hal/microcontroller/Pin.c b/ports/cxd56/common-hal/microcontroller/Pin.c index 5ac185d7cc22..0f9d6b1f3bd8 100644 --- a/ports/cxd56/common-hal/microcontroller/Pin.c +++ b/ports/cxd56/common-hal/microcontroller/Pin.c @@ -65,7 +65,7 @@ const mcu_pin_obj_t pin_LPADC3 = PIN(3, true); const mcu_pin_obj_t pin_HPADC0 = PIN(4, true); const mcu_pin_obj_t pin_HPADC1 = PIN(5, true); -STATIC pin_status_t pins[] = { +static pin_status_t pins[] = { { &pin_UART2_RXD, true, true }, { &pin_UART2_TXD, true, true }, { &pin_HIF_IRQ_OUT, true, true }, diff --git a/ports/cxd56/common-hal/microcontroller/__init__.c b/ports/cxd56/common-hal/microcontroller/__init__.c index 9240d7309d9b..fa872f2807ba 100644 --- a/ports/cxd56/common-hal/microcontroller/__init__.c +++ b/ports/cxd56/common-hal/microcontroller/__init__.c @@ -63,7 +63,7 @@ void common_hal_mcu_reset(void) { boardctl(BOARDIOC_RESET, 0); } -STATIC const mp_rom_map_elem_t mcu_pin_globals_table[] = { +static const mp_rom_map_elem_t mcu_pin_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_UART2_RXD), MP_ROM_PTR(&pin_UART2_RXD) }, { MP_ROM_QSTR(MP_QSTR_UART2_TXD), MP_ROM_PTR(&pin_UART2_TXD) }, { MP_ROM_QSTR(MP_QSTR_HIF_IRQ_OUT), MP_ROM_PTR(&pin_HIF_IRQ_OUT) }, diff --git a/ports/cxd56/common-hal/os/__init__.c b/ports/cxd56/common-hal/os/__init__.c index 0cb374f60aa6..7d211b3a79d0 100644 --- a/ports/cxd56/common-hal/os/__init__.c +++ b/ports/cxd56/common-hal/os/__init__.c @@ -10,18 +10,18 @@ #include "py/objstr.h" #include "py/objtuple.h" -STATIC const qstr os_uname_info_fields[] = { +static const qstr os_uname_info_fields[] = { MP_QSTR_sysname, MP_QSTR_nodename, MP_QSTR_release, MP_QSTR_version, MP_QSTR_machine }; -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_sysname_obj, "spresense"); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_nodename_obj, "spresense"); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_release_obj, MICROPY_VERSION_STRING); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_version_obj, MICROPY_GIT_TAG " on " MICROPY_BUILD_DATE); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_machine_obj, MICROPY_HW_BOARD_NAME " with " MICROPY_HW_MCU_NAME); +static const MP_DEFINE_STR_OBJ(os_uname_info_sysname_obj, "spresense"); +static const MP_DEFINE_STR_OBJ(os_uname_info_nodename_obj, "spresense"); +static const MP_DEFINE_STR_OBJ(os_uname_info_release_obj, MICROPY_VERSION_STRING); +static const MP_DEFINE_STR_OBJ(os_uname_info_version_obj, MICROPY_GIT_TAG " on " MICROPY_BUILD_DATE); +static const MP_DEFINE_STR_OBJ(os_uname_info_machine_obj, MICROPY_HW_BOARD_NAME " with " MICROPY_HW_MCU_NAME); -STATIC MP_DEFINE_ATTRTUPLE( +static MP_DEFINE_ATTRTUPLE( os_uname_info_obj, os_uname_info_fields, 5, diff --git a/ports/cxd56/common-hal/pwmio/PWMOut.c b/ports/cxd56/common-hal/pwmio/PWMOut.c index ee87f2ce71b0..f754858f306d 100644 --- a/ports/cxd56/common-hal/pwmio/PWMOut.c +++ b/ports/cxd56/common-hal/pwmio/PWMOut.c @@ -19,7 +19,7 @@ typedef struct { bool reset; } pwmout_dev_t; -STATIC pwmout_dev_t pwmout_dev[] = { +static pwmout_dev_t pwmout_dev[] = { {"/dev/pwm0", &pin_PWM0, -1, true}, {"/dev/pwm1", &pin_PWM1, -1, true}, {"/dev/pwm2", &pin_PWM2, -1, true}, diff --git a/ports/cxd56/common-hal/sdioio/SDCard.c b/ports/cxd56/common-hal/sdioio/SDCard.c index 5497ea152dea..05cc0fa1efe9 100644 --- a/ports/cxd56/common-hal/sdioio/SDCard.c +++ b/ports/cxd56/common-hal/sdioio/SDCard.c @@ -89,7 +89,7 @@ uint32_t common_hal_sdioio_sdcard_get_count(sdioio_sdcard_obj_t *self) { return self->count; } -STATIC void check_whole_block(mp_buffer_info_t *bufinfo) { +static void check_whole_block(mp_buffer_info_t *bufinfo) { if (bufinfo->len % 512) { mp_raise_ValueError(MP_ERROR_TEXT("Buffer length must be a multiple of 512")); } diff --git a/ports/espressif/bindings/espcamera/Camera.c b/ports/espressif/bindings/espcamera/Camera.c index 9e3c6d9c7851..69bb6282e698 100644 --- a/ports/espressif/bindings/espcamera/Camera.c +++ b/ports/espressif/bindings/espcamera/Camera.c @@ -70,7 +70,7 @@ //| :param framebuffer_count: The number of framebuffers (1 for single-buffered and 2 for double-buffered) //| :param grab_mode: When to grab a new frame //| """ -STATIC mp_obj_t espcamera_camera_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t espcamera_camera_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_data_pins, ARG_pixel_clock_pin, ARG_vsync_pin, ARG_href_pin, ARG_i2c, ARG_external_clock_pin, ARG_external_clock_frequency, ARG_powerdown_pin, ARG_reset_pin, ARG_pixel_format, ARG_frame_size, ARG_jpeg_quality, ARG_framebuffer_count, ARG_grab_mode, NUM_ARGS }; static const mp_arg_t allowed_args[] = { { MP_QSTR_data_pins, MP_ARG_OBJ | MP_ARG_KW_ONLY | MP_ARG_REQUIRED }, @@ -144,14 +144,14 @@ STATIC mp_obj_t espcamera_camera_make_new(const mp_obj_type_t *type, size_t n_ar //| def deinit(self) -> None: //| """Deinitialises the camera and releases all memory resources for reuse.""" //| ... -STATIC mp_obj_t espcamera_camera_deinit(mp_obj_t self_in) { +static mp_obj_t espcamera_camera_deinit(mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_espcamera_camera_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_deinit_obj, espcamera_camera_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_deinit_obj, espcamera_camera_deinit); -STATIC void check_for_deinit(espcamera_camera_obj_t *self) { +static void check_for_deinit(espcamera_camera_obj_t *self) { if (common_hal_espcamera_camera_deinited(self)) { raise_deinited_error(); } @@ -166,21 +166,21 @@ STATIC void check_for_deinit(espcamera_camera_obj_t *self) { //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t espcamera_camera_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t espcamera_camera_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; return espcamera_camera_deinit(args[0]); } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(espcamera_camera___exit___obj, 4, 4, espcamera_camera_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(espcamera_camera___exit___obj, 4, 4, espcamera_camera_obj___exit__); //| frame_available: bool //| """True if a frame is available, False otherwise""" -STATIC mp_obj_t espcamera_camera_frame_available_get(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_frame_available_get(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return mp_obj_new_bool(esp_camera_fb_available()); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_frame_available_get_obj, espcamera_camera_frame_available_get); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_frame_available_get_obj, espcamera_camera_frame_available_get); MP_PROPERTY_GETTER(espcamera_camera_frame_available_obj, (mp_obj_t)&espcamera_camera_frame_available_get_obj); @@ -194,7 +194,7 @@ MP_PROPERTY_GETTER(espcamera_camera_frame_available_obj, //| If `pixel_format` is `PixelFormat.JPEG`, the returned value is a read-only `memoryview`. //| Otherwise, the returned value is a read-only `displayio.Bitmap`. //| """ -STATIC mp_obj_t espcamera_camera_take(size_t n_args, const mp_obj_t *args) { +static mp_obj_t espcamera_camera_take(size_t n_args, const mp_obj_t *args) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(args[0]); mp_float_t timeout = n_args < 2 ? MICROPY_FLOAT_CONST(0.25) : mp_obj_get_float(args[1]); check_for_deinit(self); @@ -214,7 +214,7 @@ STATIC mp_obj_t espcamera_camera_take(size_t n_args, const mp_obj_t *args) { return bitmap; } } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(espcamera_camera_take_obj, 1, 2, espcamera_camera_take); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(espcamera_camera_take_obj, 1, 2, espcamera_camera_take); //| def reconfigure( @@ -231,7 +231,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(espcamera_camera_take_obj, 1, 2, espc //| //| If an argument is unspecified or None, then the setting is unchanged.""" -STATIC mp_obj_t espcamera_camera_reconfigure(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t espcamera_camera_reconfigure(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); check_for_deinit(self); @@ -272,12 +272,12 @@ MP_DEFINE_CONST_FUN_OBJ_KW(espcamera_camera_reconfigure_obj, 1, espcamera_camera //| pixel_format: PixelFormat //| """The pixel format of captured frames""" -STATIC mp_obj_t espcamera_camera_get_pixel_format(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_pixel_format(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return cp_enum_find(&espcamera_pixel_format_type, common_hal_espcamera_camera_get_pixel_format(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_pixel_format_obj, espcamera_camera_get_pixel_format); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_pixel_format_obj, espcamera_camera_get_pixel_format); MP_PROPERTY_GETTER(espcamera_camera_pixel_format_obj, (mp_obj_t)&espcamera_camera_get_pixel_format_obj); @@ -286,12 +286,12 @@ MP_PROPERTY_GETTER(espcamera_camera_pixel_format_obj, //| frame_size: FrameSize //| """The size of captured frames""" -STATIC mp_obj_t espcamera_camera_get_frame_size(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_frame_size(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return cp_enum_find(&espcamera_frame_size_type, common_hal_espcamera_camera_get_frame_size(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_frame_size_obj, espcamera_camera_get_frame_size); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_frame_size_obj, espcamera_camera_get_frame_size); MP_PROPERTY_GETTER(espcamera_camera_frame_size_obj, (mp_obj_t)&espcamera_camera_get_frame_size_obj); @@ -299,20 +299,20 @@ MP_PROPERTY_GETTER(espcamera_camera_frame_size_obj, //| contrast: int //| """The sensor contrast. Positive values increase contrast, negative values lower it. The total range is device-specific but is often from -2 to +2 inclusive.""" -STATIC mp_obj_t espcamera_camera_get_contrast(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_contrast(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_espcamera_camera_get_contrast(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_contrast_obj, espcamera_camera_get_contrast); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_contrast_obj, espcamera_camera_get_contrast); -STATIC mp_obj_t espcamera_camera_set_contrast(const mp_obj_t self_in, const mp_obj_t arg) { +static mp_obj_t espcamera_camera_set_contrast(const mp_obj_t self_in, const mp_obj_t arg) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_espcamera_camera_set_contrast(self, mp_obj_get_int(arg)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_contrast_obj, espcamera_camera_set_contrast); +static MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_contrast_obj, espcamera_camera_set_contrast); MP_PROPERTY_GETSET(espcamera_camera_contrast_obj, (mp_obj_t)&espcamera_camera_get_contrast_obj, (mp_obj_t)&espcamera_camera_set_contrast_obj); @@ -320,20 +320,20 @@ MP_PROPERTY_GETSET(espcamera_camera_contrast_obj, //| brightness: int //| """The sensor brightness. Positive values increase brightness, negative values lower it. The total range is device-specific but is often from -2 to +2 inclusive.""" -STATIC mp_obj_t espcamera_camera_get_brightness(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_brightness(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_espcamera_camera_get_brightness(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_brightness_obj, espcamera_camera_get_brightness); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_brightness_obj, espcamera_camera_get_brightness); -STATIC mp_obj_t espcamera_camera_set_brightness(const mp_obj_t self_in, const mp_obj_t arg) { +static mp_obj_t espcamera_camera_set_brightness(const mp_obj_t self_in, const mp_obj_t arg) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_espcamera_camera_set_brightness(self, mp_obj_get_int(arg)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_brightness_obj, espcamera_camera_set_brightness); +static MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_brightness_obj, espcamera_camera_set_brightness); MP_PROPERTY_GETSET(espcamera_camera_brightness_obj, (mp_obj_t)&espcamera_camera_get_brightness_obj, (mp_obj_t)&espcamera_camera_set_brightness_obj); @@ -341,20 +341,20 @@ MP_PROPERTY_GETSET(espcamera_camera_brightness_obj, //| saturation: int //| """The sensor saturation. Positive values increase saturation (more vibrant colors), negative values lower it (more muted colors). The total range is device-specific but the value is often from -2 to +2 inclusive.""" -STATIC mp_obj_t espcamera_camera_get_saturation(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_saturation(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_espcamera_camera_get_saturation(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_saturation_obj, espcamera_camera_get_saturation); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_saturation_obj, espcamera_camera_get_saturation); -STATIC mp_obj_t espcamera_camera_set_saturation(const mp_obj_t self_in, const mp_obj_t arg) { +static mp_obj_t espcamera_camera_set_saturation(const mp_obj_t self_in, const mp_obj_t arg) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_espcamera_camera_set_saturation(self, mp_obj_get_int(arg)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_saturation_obj, espcamera_camera_set_saturation); +static MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_saturation_obj, espcamera_camera_set_saturation); MP_PROPERTY_GETSET(espcamera_camera_saturation_obj, (mp_obj_t)&espcamera_camera_get_saturation_obj, (mp_obj_t)&espcamera_camera_set_saturation_obj); @@ -362,20 +362,20 @@ MP_PROPERTY_GETSET(espcamera_camera_saturation_obj, //| sharpness: int //| """The sensor sharpness. Positive values increase sharpness (more defined edges), negative values lower it (softer edges). The total range is device-specific but the value is often from -2 to +2 inclusive.""" -STATIC mp_obj_t espcamera_camera_get_sharpness(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_sharpness(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_espcamera_camera_get_sharpness(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_sharpness_obj, espcamera_camera_get_sharpness); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_sharpness_obj, espcamera_camera_get_sharpness); -STATIC mp_obj_t espcamera_camera_set_sharpness(const mp_obj_t self_in, const mp_obj_t arg) { +static mp_obj_t espcamera_camera_set_sharpness(const mp_obj_t self_in, const mp_obj_t arg) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_espcamera_camera_set_sharpness(self, mp_obj_get_int(arg)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_sharpness_obj, espcamera_camera_set_sharpness); +static MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_sharpness_obj, espcamera_camera_set_sharpness); MP_PROPERTY_GETSET(espcamera_camera_sharpness_obj, (mp_obj_t)&espcamera_camera_get_sharpness_obj, (mp_obj_t)&espcamera_camera_set_sharpness_obj); @@ -383,20 +383,20 @@ MP_PROPERTY_GETSET(espcamera_camera_sharpness_obj, //| denoise: int //| """The sensor 'denoise' setting. Any camera sensor has inherent 'noise', especially in low brightness environments. Software algorithms can decrease noise at the expense of fine detail. A larger value increases the amount of software noise removal. The total range is device-specific but the value is often from 0 to 10.""" -STATIC mp_obj_t espcamera_camera_get_denoise(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_denoise(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_espcamera_camera_get_denoise(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_denoise_obj, espcamera_camera_get_denoise); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_denoise_obj, espcamera_camera_get_denoise); -STATIC mp_obj_t espcamera_camera_set_denoise(const mp_obj_t self_in, const mp_obj_t arg) { +static mp_obj_t espcamera_camera_set_denoise(const mp_obj_t self_in, const mp_obj_t arg) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_espcamera_camera_set_denoise(self, mp_obj_get_int(arg)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_denoise_obj, espcamera_camera_set_denoise); +static MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_denoise_obj, espcamera_camera_set_denoise); MP_PROPERTY_GETSET(espcamera_camera_denoise_obj, (mp_obj_t)&espcamera_camera_get_denoise_obj, (mp_obj_t)&espcamera_camera_set_denoise_obj); @@ -404,20 +404,20 @@ MP_PROPERTY_GETSET(espcamera_camera_denoise_obj, //| gain_ceiling: GainCeiling //| """The sensor 'gain ceiling' setting. "Gain" is an analog multiplier applied to the raw sensor data. The 'ceiling' is the maximum gain value that the sensor will use. A higher gain means that the sensor has a greater response to light, but also makes sensor noise more visible.""" -STATIC mp_obj_t espcamera_camera_get_gain_ceiling(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_gain_ceiling(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return cp_enum_find(&espcamera_gain_ceiling_type, common_hal_espcamera_camera_get_gainceiling(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_gain_ceiling_obj, espcamera_camera_get_gain_ceiling); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_gain_ceiling_obj, espcamera_camera_get_gain_ceiling); -STATIC mp_obj_t espcamera_camera_set_gain_ceiling(const mp_obj_t self_in, const mp_obj_t arg) { +static mp_obj_t espcamera_camera_set_gain_ceiling(const mp_obj_t self_in, const mp_obj_t arg) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_espcamera_camera_set_gainceiling(self, validate_gain_ceiling(arg, MP_QSTR_gain_ceiling)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_gain_ceiling_obj, espcamera_camera_set_gain_ceiling); +static MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_gain_ceiling_obj, espcamera_camera_set_gain_ceiling); MP_PROPERTY_GETSET(espcamera_camera_gain_ceiling_obj, (mp_obj_t)&espcamera_camera_get_gain_ceiling_obj, (mp_obj_t)&espcamera_camera_set_gain_ceiling_obj); @@ -425,20 +425,20 @@ MP_PROPERTY_GETSET(espcamera_camera_gain_ceiling_obj, //| quality: int //| """The 'quality' setting when capturing JPEG images. This is similar to the quality setting when exporting a jpeg image from photo editing software. Typical values range from 5 to 40, with higher numbers leading to larger image sizes and better overall image quality. However, when the quality is set to a high number, the total size of the JPEG data can exceed the size of an internal buffer, causing image capture to fail.""" -STATIC mp_obj_t espcamera_camera_get_quality(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_quality(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_espcamera_camera_get_quality(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_quality_obj, espcamera_camera_get_quality); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_quality_obj, espcamera_camera_get_quality); -STATIC mp_obj_t espcamera_camera_set_quality(const mp_obj_t self_in, const mp_obj_t arg) { +static mp_obj_t espcamera_camera_set_quality(const mp_obj_t self_in, const mp_obj_t arg) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_espcamera_camera_set_quality(self, mp_obj_get_int(arg)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_quality_obj, espcamera_camera_set_quality); +static MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_quality_obj, espcamera_camera_set_quality); MP_PROPERTY_GETSET(espcamera_camera_quality_obj, (mp_obj_t)&espcamera_camera_get_quality_obj, (mp_obj_t)&espcamera_camera_set_quality_obj); @@ -446,20 +446,20 @@ MP_PROPERTY_GETSET(espcamera_camera_quality_obj, //| colorbar: bool //| """When `True`, a test pattern image is captured and the real sensor data is not used.""" -STATIC mp_obj_t espcamera_camera_get_colorbar(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_colorbar(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return mp_obj_new_bool(common_hal_espcamera_camera_get_colorbar(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_colorbar_obj, espcamera_camera_get_colorbar); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_colorbar_obj, espcamera_camera_get_colorbar); -STATIC mp_obj_t espcamera_camera_set_colorbar(const mp_obj_t self_in, const mp_obj_t arg) { +static mp_obj_t espcamera_camera_set_colorbar(const mp_obj_t self_in, const mp_obj_t arg) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_espcamera_camera_set_colorbar(self, mp_obj_is_true(arg)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_colorbar_obj, espcamera_camera_set_colorbar); +static MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_colorbar_obj, espcamera_camera_set_colorbar); MP_PROPERTY_GETSET(espcamera_camera_colorbar_obj, (mp_obj_t)&espcamera_camera_get_colorbar_obj, (mp_obj_t)&espcamera_camera_set_colorbar_obj); @@ -467,20 +467,20 @@ MP_PROPERTY_GETSET(espcamera_camera_colorbar_obj, //| whitebal: bool //| """When `True`, the camera attempts to automatically control white balance. When `False`, the `wb_mode` setting is used instead.""" -STATIC mp_obj_t espcamera_camera_get_whitebal(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_whitebal(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return mp_obj_new_bool(common_hal_espcamera_camera_get_whitebal(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_whitebal_obj, espcamera_camera_get_whitebal); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_whitebal_obj, espcamera_camera_get_whitebal); -STATIC mp_obj_t espcamera_camera_set_whitebal(const mp_obj_t self_in, const mp_obj_t arg) { +static mp_obj_t espcamera_camera_set_whitebal(const mp_obj_t self_in, const mp_obj_t arg) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_espcamera_camera_set_whitebal(self, mp_obj_is_true(arg)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_whitebal_obj, espcamera_camera_set_whitebal); +static MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_whitebal_obj, espcamera_camera_set_whitebal); MP_PROPERTY_GETSET(espcamera_camera_whitebal_obj, (mp_obj_t)&espcamera_camera_get_whitebal_obj, (mp_obj_t)&espcamera_camera_set_whitebal_obj); @@ -488,20 +488,20 @@ MP_PROPERTY_GETSET(espcamera_camera_whitebal_obj, //| gain_ctrl: bool //| """When `True`, the camera attempts to automatically control the sensor gain, up to the value in the `gain_ceiling` property. When `False`, the `agc_gain` setting is used instead.""" -STATIC mp_obj_t espcamera_camera_get_gain_ctrl(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_gain_ctrl(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return mp_obj_new_bool(common_hal_espcamera_camera_get_gain_ctrl(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_gain_ctrl_obj, espcamera_camera_get_gain_ctrl); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_gain_ctrl_obj, espcamera_camera_get_gain_ctrl); -STATIC mp_obj_t espcamera_camera_set_gain_ctrl(const mp_obj_t self_in, const mp_obj_t arg) { +static mp_obj_t espcamera_camera_set_gain_ctrl(const mp_obj_t self_in, const mp_obj_t arg) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_espcamera_camera_set_gain_ctrl(self, mp_obj_is_true(arg)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_gain_ctrl_obj, espcamera_camera_set_gain_ctrl); +static MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_gain_ctrl_obj, espcamera_camera_set_gain_ctrl); MP_PROPERTY_GETSET(espcamera_camera_gain_ctrl_obj, (mp_obj_t)&espcamera_camera_get_gain_ctrl_obj, (mp_obj_t)&espcamera_camera_set_gain_ctrl_obj); @@ -509,20 +509,20 @@ MP_PROPERTY_GETSET(espcamera_camera_gain_ctrl_obj, //| exposure_ctrl: bool //| """When `True` the camera attempts to automatically control the exposure. When `False`, the `aec_value` setting is used instead.""" -STATIC mp_obj_t espcamera_camera_get_exposure_ctrl(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_exposure_ctrl(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return mp_obj_new_bool(common_hal_espcamera_camera_get_exposure_ctrl(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_exposure_ctrl_obj, espcamera_camera_get_exposure_ctrl); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_exposure_ctrl_obj, espcamera_camera_get_exposure_ctrl); -STATIC mp_obj_t espcamera_camera_set_exposure_ctrl(const mp_obj_t self_in, const mp_obj_t arg) { +static mp_obj_t espcamera_camera_set_exposure_ctrl(const mp_obj_t self_in, const mp_obj_t arg) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_espcamera_camera_set_exposure_ctrl(self, mp_obj_is_true(arg)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_exposure_ctrl_obj, espcamera_camera_set_exposure_ctrl); +static MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_exposure_ctrl_obj, espcamera_camera_set_exposure_ctrl); MP_PROPERTY_GETSET(espcamera_camera_exposure_ctrl_obj, (mp_obj_t)&espcamera_camera_get_exposure_ctrl_obj, (mp_obj_t)&espcamera_camera_set_exposure_ctrl_obj); @@ -530,20 +530,20 @@ MP_PROPERTY_GETSET(espcamera_camera_exposure_ctrl_obj, //| hmirror: bool //| """When `True` the camera image is mirrored left-to-right""" -STATIC mp_obj_t espcamera_camera_get_hmirror(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_hmirror(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return mp_obj_new_bool(common_hal_espcamera_camera_get_hmirror(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_hmirror_obj, espcamera_camera_get_hmirror); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_hmirror_obj, espcamera_camera_get_hmirror); -STATIC mp_obj_t espcamera_camera_set_hmirror(const mp_obj_t self_in, const mp_obj_t arg) { +static mp_obj_t espcamera_camera_set_hmirror(const mp_obj_t self_in, const mp_obj_t arg) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_espcamera_camera_set_hmirror(self, mp_obj_is_true(arg)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_hmirror_obj, espcamera_camera_set_hmirror); +static MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_hmirror_obj, espcamera_camera_set_hmirror); MP_PROPERTY_GETSET(espcamera_camera_hmirror_obj, (mp_obj_t)&espcamera_camera_get_hmirror_obj, (mp_obj_t)&espcamera_camera_set_hmirror_obj); @@ -551,20 +551,20 @@ MP_PROPERTY_GETSET(espcamera_camera_hmirror_obj, //| vflip: bool //| """When `True` the camera image is flipped top-to-bottom""" -STATIC mp_obj_t espcamera_camera_get_vflip(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_vflip(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return mp_obj_new_bool(common_hal_espcamera_camera_get_vflip(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_vflip_obj, espcamera_camera_get_vflip); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_vflip_obj, espcamera_camera_get_vflip); -STATIC mp_obj_t espcamera_camera_set_vflip(const mp_obj_t self_in, const mp_obj_t arg) { +static mp_obj_t espcamera_camera_set_vflip(const mp_obj_t self_in, const mp_obj_t arg) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_espcamera_camera_set_vflip(self, mp_obj_is_true(arg)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_vflip_obj, espcamera_camera_set_vflip); +static MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_vflip_obj, espcamera_camera_set_vflip); MP_PROPERTY_GETSET(espcamera_camera_vflip_obj, (mp_obj_t)&espcamera_camera_get_vflip_obj, (mp_obj_t)&espcamera_camera_set_vflip_obj); @@ -572,20 +572,20 @@ MP_PROPERTY_GETSET(espcamera_camera_vflip_obj, //| aec2: bool //| """When `True` the sensor's "night mode" is enabled, extending the range of automatic gain control.""" -STATIC mp_obj_t espcamera_camera_get_aec2(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_aec2(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return mp_obj_new_bool(common_hal_espcamera_camera_get_aec2(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_aec2_obj, espcamera_camera_get_aec2); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_aec2_obj, espcamera_camera_get_aec2); -STATIC mp_obj_t espcamera_camera_set_aec2(const mp_obj_t self_in, const mp_obj_t arg) { +static mp_obj_t espcamera_camera_set_aec2(const mp_obj_t self_in, const mp_obj_t arg) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_espcamera_camera_set_aec2(self, mp_obj_is_true(arg)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_aec2_obj, espcamera_camera_set_aec2); +static MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_aec2_obj, espcamera_camera_set_aec2); MP_PROPERTY_GETSET(espcamera_camera_aec2_obj, (mp_obj_t)&espcamera_camera_get_aec2_obj, (mp_obj_t)&espcamera_camera_set_aec2_obj); @@ -593,20 +593,20 @@ MP_PROPERTY_GETSET(espcamera_camera_aec2_obj, //| awb_gain: bool //| """Access the awb_gain property of the camera sensor""" -STATIC mp_obj_t espcamera_camera_get_awb_gain(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_awb_gain(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return mp_obj_new_bool(common_hal_espcamera_camera_get_awb_gain(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_awb_gain_obj, espcamera_camera_get_awb_gain); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_awb_gain_obj, espcamera_camera_get_awb_gain); -STATIC mp_obj_t espcamera_camera_set_awb_gain(const mp_obj_t self_in, const mp_obj_t arg) { +static mp_obj_t espcamera_camera_set_awb_gain(const mp_obj_t self_in, const mp_obj_t arg) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_espcamera_camera_set_awb_gain(self, mp_obj_is_true(arg)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_awb_gain_obj, espcamera_camera_set_awb_gain); +static MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_awb_gain_obj, espcamera_camera_set_awb_gain); MP_PROPERTY_GETSET(espcamera_camera_awb_gain_obj, (mp_obj_t)&espcamera_camera_get_awb_gain_obj, (mp_obj_t)&espcamera_camera_set_awb_gain_obj); @@ -614,20 +614,20 @@ MP_PROPERTY_GETSET(espcamera_camera_awb_gain_obj, //| agc_gain: int //| """Access the gain level of the sensor. Higher values produce brighter images. Typical settings range from 0 to 30. """ -STATIC mp_obj_t espcamera_camera_get_agc_gain(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_agc_gain(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_espcamera_camera_get_agc_gain(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_agc_gain_obj, espcamera_camera_get_agc_gain); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_agc_gain_obj, espcamera_camera_get_agc_gain); -STATIC mp_obj_t espcamera_camera_set_agc_gain(const mp_obj_t self_in, const mp_obj_t arg) { +static mp_obj_t espcamera_camera_set_agc_gain(const mp_obj_t self_in, const mp_obj_t arg) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_espcamera_camera_set_agc_gain(self, mp_obj_get_int(arg)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_agc_gain_obj, espcamera_camera_set_agc_gain); +static MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_agc_gain_obj, espcamera_camera_set_agc_gain); MP_PROPERTY_GETSET(espcamera_camera_agc_gain_obj, (mp_obj_t)&espcamera_camera_get_agc_gain_obj, (mp_obj_t)&espcamera_camera_set_agc_gain_obj); @@ -635,20 +635,20 @@ MP_PROPERTY_GETSET(espcamera_camera_agc_gain_obj, //| aec_value: int //| """Access the exposure value of the camera. Higher values produce brighter images. Typical settings range from 0 to 1200.""" -STATIC mp_obj_t espcamera_camera_get_aec_value(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_aec_value(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_espcamera_camera_get_aec_value(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_aec_value_obj, espcamera_camera_get_aec_value); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_aec_value_obj, espcamera_camera_get_aec_value); -STATIC mp_obj_t espcamera_camera_set_aec_value(const mp_obj_t self_in, const mp_obj_t arg) { +static mp_obj_t espcamera_camera_set_aec_value(const mp_obj_t self_in, const mp_obj_t arg) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_espcamera_camera_set_aec_value(self, mp_obj_get_int(arg)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_aec_value_obj, espcamera_camera_set_aec_value); +static MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_aec_value_obj, espcamera_camera_set_aec_value); MP_PROPERTY_GETSET(espcamera_camera_aec_value_obj, (mp_obj_t)&espcamera_camera_get_aec_value_obj, (mp_obj_t)&espcamera_camera_set_aec_value_obj); @@ -656,20 +656,20 @@ MP_PROPERTY_GETSET(espcamera_camera_aec_value_obj, //| special_effect: int //| """Enable a "special effect". Zero is no special effect. On OV5640, special effects range from 0 to 6 inclusive and select various color modes.""" -STATIC mp_obj_t espcamera_camera_get_special_effect(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_special_effect(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_espcamera_camera_get_special_effect(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_special_effect_obj, espcamera_camera_get_special_effect); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_special_effect_obj, espcamera_camera_get_special_effect); -STATIC mp_obj_t espcamera_camera_set_special_effect(const mp_obj_t self_in, const mp_obj_t arg) { +static mp_obj_t espcamera_camera_set_special_effect(const mp_obj_t self_in, const mp_obj_t arg) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_espcamera_camera_set_special_effect(self, mp_obj_get_int(arg)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_special_effect_obj, espcamera_camera_set_special_effect); +static MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_special_effect_obj, espcamera_camera_set_special_effect); MP_PROPERTY_GETSET(espcamera_camera_special_effect_obj, (mp_obj_t)&espcamera_camera_get_special_effect_obj, (mp_obj_t)&espcamera_camera_set_special_effect_obj); @@ -677,20 +677,20 @@ MP_PROPERTY_GETSET(espcamera_camera_special_effect_obj, //| wb_mode: int //| """The white balance mode. 0 is automatic white balance. Typical values range from 0 to 4 inclusive.""" -STATIC mp_obj_t espcamera_camera_get_wb_mode(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_wb_mode(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_espcamera_camera_get_wb_mode(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_wb_mode_obj, espcamera_camera_get_wb_mode); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_wb_mode_obj, espcamera_camera_get_wb_mode); -STATIC mp_obj_t espcamera_camera_set_wb_mode(const mp_obj_t self_in, const mp_obj_t arg) { +static mp_obj_t espcamera_camera_set_wb_mode(const mp_obj_t self_in, const mp_obj_t arg) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_espcamera_camera_set_wb_mode(self, mp_obj_get_int(arg)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_wb_mode_obj, espcamera_camera_set_wb_mode); +static MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_wb_mode_obj, espcamera_camera_set_wb_mode); MP_PROPERTY_GETSET(espcamera_camera_wb_mode_obj, (mp_obj_t)&espcamera_camera_get_wb_mode_obj, (mp_obj_t)&espcamera_camera_set_wb_mode_obj); @@ -698,20 +698,20 @@ MP_PROPERTY_GETSET(espcamera_camera_wb_mode_obj, //| ae_level: int //| """The exposure offset for automatic exposure. Typical values range from -2 to +2.""" -STATIC mp_obj_t espcamera_camera_get_ae_level(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_ae_level(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_espcamera_camera_get_ae_level(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_ae_level_obj, espcamera_camera_get_ae_level); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_ae_level_obj, espcamera_camera_get_ae_level); -STATIC mp_obj_t espcamera_camera_set_ae_level(const mp_obj_t self_in, const mp_obj_t arg) { +static mp_obj_t espcamera_camera_set_ae_level(const mp_obj_t self_in, const mp_obj_t arg) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_espcamera_camera_set_ae_level(self, mp_obj_get_int(arg)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_ae_level_obj, espcamera_camera_set_ae_level); +static MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_ae_level_obj, espcamera_camera_set_ae_level); MP_PROPERTY_GETSET(espcamera_camera_ae_level_obj, (mp_obj_t)&espcamera_camera_get_ae_level_obj, (mp_obj_t)&espcamera_camera_set_ae_level_obj); @@ -719,20 +719,20 @@ MP_PROPERTY_GETSET(espcamera_camera_ae_level_obj, //| dcw: bool //| """When `True` an advanced white balance mode is selected.""" -STATIC mp_obj_t espcamera_camera_get_dcw(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_dcw(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return mp_obj_new_bool(common_hal_espcamera_camera_get_dcw(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_dcw_obj, espcamera_camera_get_dcw); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_dcw_obj, espcamera_camera_get_dcw); -STATIC mp_obj_t espcamera_camera_set_dcw(const mp_obj_t self_in, const mp_obj_t arg) { +static mp_obj_t espcamera_camera_set_dcw(const mp_obj_t self_in, const mp_obj_t arg) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_espcamera_camera_set_dcw(self, mp_obj_is_true(arg)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_dcw_obj, espcamera_camera_set_dcw); +static MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_dcw_obj, espcamera_camera_set_dcw); MP_PROPERTY_GETSET(espcamera_camera_dcw_obj, (mp_obj_t)&espcamera_camera_get_dcw_obj, (mp_obj_t)&espcamera_camera_set_dcw_obj); @@ -740,20 +740,20 @@ MP_PROPERTY_GETSET(espcamera_camera_dcw_obj, //| bpc: bool //| """When `True`, "black point compensation" is enabled. This can make black parts of the image darker.""" -STATIC mp_obj_t espcamera_camera_get_bpc(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_bpc(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return mp_obj_new_bool(common_hal_espcamera_camera_get_bpc(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_bpc_obj, espcamera_camera_get_bpc); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_bpc_obj, espcamera_camera_get_bpc); -STATIC mp_obj_t espcamera_camera_set_bpc(const mp_obj_t self_in, const mp_obj_t arg) { +static mp_obj_t espcamera_camera_set_bpc(const mp_obj_t self_in, const mp_obj_t arg) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_espcamera_camera_set_bpc(self, mp_obj_is_true(arg)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_bpc_obj, espcamera_camera_set_bpc); +static MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_bpc_obj, espcamera_camera_set_bpc); MP_PROPERTY_GETSET(espcamera_camera_bpc_obj, (mp_obj_t)&espcamera_camera_get_bpc_obj, (mp_obj_t)&espcamera_camera_set_bpc_obj); @@ -761,20 +761,20 @@ MP_PROPERTY_GETSET(espcamera_camera_bpc_obj, //| wpc: bool //| """When `True`, "white point compensation" is enabled. This can make white parts of the image whiter.""" -STATIC mp_obj_t espcamera_camera_get_wpc(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_wpc(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return mp_obj_new_bool(common_hal_espcamera_camera_get_wpc(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_wpc_obj, espcamera_camera_get_wpc); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_wpc_obj, espcamera_camera_get_wpc); -STATIC mp_obj_t espcamera_camera_set_wpc(const mp_obj_t self_in, const mp_obj_t arg) { +static mp_obj_t espcamera_camera_set_wpc(const mp_obj_t self_in, const mp_obj_t arg) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_espcamera_camera_set_wpc(self, mp_obj_is_true(arg)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_wpc_obj, espcamera_camera_set_wpc); +static MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_wpc_obj, espcamera_camera_set_wpc); MP_PROPERTY_GETSET(espcamera_camera_wpc_obj, (mp_obj_t)&espcamera_camera_get_wpc_obj, (mp_obj_t)&espcamera_camera_set_wpc_obj); @@ -782,20 +782,20 @@ MP_PROPERTY_GETSET(espcamera_camera_wpc_obj, //| raw_gma: bool //| """When `True`, raw gamma mode is enabled.""" -STATIC mp_obj_t espcamera_camera_get_raw_gma(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_raw_gma(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return mp_obj_new_bool(common_hal_espcamera_camera_get_raw_gma(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_raw_gma_obj, espcamera_camera_get_raw_gma); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_raw_gma_obj, espcamera_camera_get_raw_gma); -STATIC mp_obj_t espcamera_camera_set_raw_gma(const mp_obj_t self_in, const mp_obj_t arg) { +static mp_obj_t espcamera_camera_set_raw_gma(const mp_obj_t self_in, const mp_obj_t arg) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_espcamera_camera_set_raw_gma(self, mp_obj_is_true(arg)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_raw_gma_obj, espcamera_camera_set_raw_gma); +static MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_raw_gma_obj, espcamera_camera_set_raw_gma); MP_PROPERTY_GETSET(espcamera_camera_raw_gma_obj, (mp_obj_t)&espcamera_camera_get_raw_gma_obj, (mp_obj_t)&espcamera_camera_set_raw_gma_obj); @@ -803,32 +803,32 @@ MP_PROPERTY_GETSET(espcamera_camera_raw_gma_obj, //| lenc: bool //| """Enable "lens correction". This can help compensate for light fall-off at the edge of the sensor area.""" -STATIC mp_obj_t espcamera_camera_get_lenc(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_lenc(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return mp_obj_new_bool(common_hal_espcamera_camera_get_lenc(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_lenc_obj, espcamera_camera_get_lenc); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_lenc_obj, espcamera_camera_get_lenc); -STATIC mp_obj_t espcamera_camera_set_lenc(const mp_obj_t self_in, const mp_obj_t arg) { +static mp_obj_t espcamera_camera_set_lenc(const mp_obj_t self_in, const mp_obj_t arg) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_espcamera_camera_set_lenc(self, mp_obj_is_true(arg)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_lenc_obj, espcamera_camera_set_lenc); +static MP_DEFINE_CONST_FUN_OBJ_2(espcamera_camera_set_lenc_obj, espcamera_camera_set_lenc); MP_PROPERTY_GETSET(espcamera_camera_lenc_obj, (mp_obj_t)&espcamera_camera_get_lenc_obj, (mp_obj_t)&espcamera_camera_set_lenc_obj); //| max_frame_size: FrameSize //| """The maximum frame size that can be captured""" -STATIC mp_obj_t espcamera_camera_get_max_frame_size(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_max_frame_size(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return cp_enum_find(&espcamera_frame_size_type, common_hal_espcamera_camera_get_max_frame_size(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_max_frame_size_obj, espcamera_camera_get_max_frame_size); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_max_frame_size_obj, espcamera_camera_get_max_frame_size); MP_PROPERTY_GETTER(espcamera_camera_max_frame_size_obj, (mp_obj_t)&espcamera_camera_get_max_frame_size_obj); @@ -836,12 +836,12 @@ MP_PROPERTY_GETTER(espcamera_camera_max_frame_size_obj, //| address: int //| """The I2C (SCCB) address of the sensor""" -STATIC mp_obj_t espcamera_camera_get_address(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_address(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_espcamera_camera_get_address(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_address_obj, espcamera_camera_get_address); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_address_obj, espcamera_camera_get_address); MP_PROPERTY_GETTER(espcamera_camera_address_obj, (mp_obj_t)&espcamera_camera_get_address_obj); @@ -849,13 +849,13 @@ MP_PROPERTY_GETTER(espcamera_camera_address_obj, //| sensor_name: str //| """The name of the sensor""" -STATIC mp_obj_t espcamera_camera_get_sensor_name(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_sensor_name(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); const char *sensor_name = common_hal_espcamera_camera_get_sensor_name(self); return mp_obj_new_str(sensor_name, strlen(sensor_name)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_sensor_name_obj, espcamera_camera_get_sensor_name); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_sensor_name_obj, espcamera_camera_get_sensor_name); MP_PROPERTY_GETTER(espcamera_camera_sensor_name_obj, (mp_obj_t)&espcamera_camera_get_sensor_name_obj); @@ -863,48 +863,48 @@ MP_PROPERTY_GETTER(espcamera_camera_sensor_name_obj, //| supports_jpeg: bool //| """True if the sensor can capture images in JPEG format""" -STATIC mp_obj_t espcamera_camera_get_supports_jpeg(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_supports_jpeg(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return mp_obj_new_bool(common_hal_espcamera_camera_get_supports_jpeg(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_supports_jpeg_obj, espcamera_camera_get_supports_jpeg); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_supports_jpeg_obj, espcamera_camera_get_supports_jpeg); MP_PROPERTY_GETTER(espcamera_camera_supports_jpeg_obj, (mp_obj_t)&espcamera_camera_get_supports_jpeg_obj); //| height: int //| """The height of the image being captured""" -STATIC mp_obj_t espcamera_camera_get_height(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_height(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_espcamera_camera_get_height(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_height_obj, espcamera_camera_get_height); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_height_obj, espcamera_camera_get_height); MP_PROPERTY_GETTER(espcamera_camera_height_obj, (mp_obj_t)&espcamera_camera_get_height_obj); //| width: int //| """The width of the image being captured""" -STATIC mp_obj_t espcamera_camera_get_width(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_width(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_espcamera_camera_get_width(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_width_obj, espcamera_camera_get_width); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_width_obj, espcamera_camera_get_width); MP_PROPERTY_GETTER(espcamera_camera_width_obj, (mp_obj_t)&espcamera_camera_get_width_obj); //| grab_mode: GrabMode //| """The grab mode of the camera""" -STATIC mp_obj_t espcamera_camera_get_grab_mode(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_grab_mode(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return cp_enum_find(&espcamera_grab_mode_type, common_hal_espcamera_camera_get_grab_mode(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_grab_mode_obj, espcamera_camera_get_grab_mode); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_grab_mode_obj, espcamera_camera_get_grab_mode); MP_PROPERTY_GETTER(espcamera_camera_grab_mode_obj, (mp_obj_t)&espcamera_camera_get_grab_mode_obj); @@ -913,18 +913,18 @@ MP_PROPERTY_GETTER(espcamera_camera_grab_mode_obj, //| framebuffer_count: int //| """True if double buffering is used""" //| -STATIC mp_obj_t espcamera_camera_get_framebuffer_count(const mp_obj_t self_in) { +static mp_obj_t espcamera_camera_get_framebuffer_count(const mp_obj_t self_in) { espcamera_camera_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_espcamera_camera_get_framebuffer_count(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_framebuffer_count_obj, espcamera_camera_get_framebuffer_count); +static MP_DEFINE_CONST_FUN_OBJ_1(espcamera_camera_get_framebuffer_count_obj, espcamera_camera_get_framebuffer_count); MP_PROPERTY_GETTER(espcamera_camera_framebuffer_count_obj, (mp_obj_t)&espcamera_camera_get_framebuffer_count_obj); -STATIC const mp_rom_map_elem_t espcamera_camera_locals_table[] = { +static const mp_rom_map_elem_t espcamera_camera_locals_table[] = { { MP_ROM_QSTR(MP_QSTR_address), MP_ROM_PTR(&espcamera_camera_address_obj) }, { MP_ROM_QSTR(MP_QSTR_aec2), MP_ROM_PTR(&espcamera_camera_aec2_obj) }, { MP_ROM_QSTR(MP_QSTR_aec_value), MP_ROM_PTR(&espcamera_camera_aec_value_obj) }, @@ -969,7 +969,7 @@ STATIC const mp_rom_map_elem_t espcamera_camera_locals_table[] = { { MP_ROM_QSTR(MP_QSTR_wpc), MP_ROM_PTR(&espcamera_camera_wpc_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(espcamera_camera_locals_dict, espcamera_camera_locals_table); +static MP_DEFINE_CONST_DICT(espcamera_camera_locals_dict, espcamera_camera_locals_table); MP_DEFINE_CONST_OBJ_TYPE( espcamera_camera_type, diff --git a/ports/espressif/bindings/espcamera/__init__.c b/ports/espressif/bindings/espcamera/__init__.c index 8cef1fb0dfe7..3443ccee42ba 100644 --- a/ports/espressif/bindings/espcamera/__init__.c +++ b/ports/espressif/bindings/espcamera/__init__.c @@ -45,7 +45,7 @@ MAKE_ENUM_MAP(espcamera_grab_mode) { MAKE_ENUM_MAP_ENTRY(grab_mode, LATEST), }; -STATIC MP_DEFINE_CONST_DICT(espcamera_grab_mode_locals_dict, espcamera_grab_mode_locals_table); +static MP_DEFINE_CONST_DICT(espcamera_grab_mode_locals_dict, espcamera_grab_mode_locals_table); MAKE_PRINTER(espcamera, espcamera_grab_mode); MAKE_ENUM_TYPE(espcamera, GrabMode, espcamera_grab_mode); @@ -76,7 +76,7 @@ MAKE_ENUM_MAP(espcamera_pixel_format) { MAKE_ENUM_MAP_ENTRY(pixel_format, JPEG), }; -STATIC MP_DEFINE_CONST_DICT(espcamera_pixel_format_locals_dict, espcamera_pixel_format_locals_table); +static MP_DEFINE_CONST_DICT(espcamera_pixel_format_locals_dict, espcamera_pixel_format_locals_table); MAKE_PRINTER(espcamera, espcamera_pixel_format); MAKE_ENUM_TYPE(espcamera, PixelFormat, espcamera_pixel_format); @@ -201,7 +201,7 @@ MAKE_ENUM_MAP(espcamera_frame_size) { MAKE_ENUM_MAP_ENTRY(frame_size, QSXGA), }; -STATIC MP_DEFINE_CONST_DICT(espcamera_frame_size_locals_dict, espcamera_frame_size_locals_table); +static MP_DEFINE_CONST_DICT(espcamera_frame_size_locals_dict, espcamera_frame_size_locals_table); MAKE_PRINTER(espcamera, espcamera_frame_size); MAKE_ENUM_TYPE(espcamera, FrameSize, espcamera_frame_size); @@ -241,7 +241,7 @@ MAKE_ENUM_MAP(espcamera_gain_ceiling) { MAKE_ENUM_MAP_ENTRY(gain_ceiling, GAIN_128X) }; -STATIC MP_DEFINE_CONST_DICT(espcamera_gain_ceiling_locals_dict, espcamera_gain_ceiling_locals_table); +static MP_DEFINE_CONST_DICT(espcamera_gain_ceiling_locals_dict, espcamera_gain_ceiling_locals_table); MAKE_PRINTER(espcamera, espcamera_gain_ceiling); MAKE_ENUM_TYPE(espcamera, GainCeiling, espcamera_gain_ceiling); @@ -249,7 +249,7 @@ gainceiling_t validate_gain_ceiling(mp_obj_t obj, qstr arg_name) { return cp_enum_value(&espcamera_gain_ceiling_type, obj, arg_name); } -STATIC const mp_rom_map_elem_t espcamera_module_globals_table[] = { +static const mp_rom_map_elem_t espcamera_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_espcamera) }, { MP_ROM_QSTR(MP_QSTR_Camera), MP_ROM_PTR(&espcamera_camera_type), }, { MP_ROM_QSTR(MP_QSTR_FrameSize), &espcamera_frame_size_type }, @@ -258,7 +258,7 @@ STATIC const mp_rom_map_elem_t espcamera_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_PixelFormat), &espcamera_pixel_format_type }, }; -STATIC MP_DEFINE_CONST_DICT(espcamera_module_globals, espcamera_module_globals_table); +static MP_DEFINE_CONST_DICT(espcamera_module_globals, espcamera_module_globals_table); const mp_obj_module_t espcamera_module = { .base = { &mp_type_module }, diff --git a/ports/espressif/bindings/espidf/__init__.c b/ports/espressif/bindings/espidf/__init__.c index e0373eaa6112..3d6321017f2e 100644 --- a/ports/espressif/bindings/espidf/__init__.c +++ b/ports/espressif/bindings/espidf/__init__.c @@ -26,7 +26,7 @@ //| ... //| -STATIC mp_obj_t espidf_heap_caps_get_total_size(void) { +static mp_obj_t espidf_heap_caps_get_total_size(void) { return MP_OBJ_NEW_SMALL_INT(heap_caps_get_total_size(MALLOC_CAP_8BIT)); } MP_DEFINE_CONST_FUN_OBJ_0(espidf_heap_caps_get_total_size_obj, espidf_heap_caps_get_total_size); @@ -36,7 +36,7 @@ MP_DEFINE_CONST_FUN_OBJ_0(espidf_heap_caps_get_total_size_obj, espidf_heap_caps_ //| ... //| -STATIC mp_obj_t espidf_heap_caps_get_free_size(void) { +static mp_obj_t espidf_heap_caps_get_free_size(void) { return MP_OBJ_NEW_SMALL_INT(heap_caps_get_free_size(MALLOC_CAP_8BIT)); } MP_DEFINE_CONST_FUN_OBJ_0(espidf_heap_caps_get_free_size_obj, espidf_heap_caps_get_free_size); @@ -46,7 +46,7 @@ MP_DEFINE_CONST_FUN_OBJ_0(espidf_heap_caps_get_free_size_obj, espidf_heap_caps_g //| ... //| -STATIC mp_obj_t espidf_heap_caps_get_largest_free_block(void) { +static mp_obj_t espidf_heap_caps_get_largest_free_block(void) { return MP_OBJ_NEW_SMALL_INT(heap_caps_get_largest_free_block(MALLOC_CAP_8BIT)); } MP_DEFINE_CONST_FUN_OBJ_0(espidf_heap_caps_get_largest_free_block_obj, espidf_heap_caps_get_largest_free_block); @@ -58,7 +58,7 @@ MP_DEFINE_CONST_FUN_OBJ_0(espidf_heap_caps_get_largest_free_block_obj, espidf_he //| layout of data in nvs has changed. The old data will be lost when you perform this operation. //| """ //| -STATIC mp_obj_t espidf_erase_nvs(void) { +static mp_obj_t espidf_erase_nvs(void) { ESP_ERROR_CHECK(nvs_flash_deinit()); ESP_ERROR_CHECK(nvs_flash_erase()); ESP_ERROR_CHECK(nvs_flash_init()); @@ -67,7 +67,7 @@ STATIC mp_obj_t espidf_erase_nvs(void) { MP_DEFINE_CONST_FUN_OBJ_0(espidf_erase_nvs_obj, espidf_erase_nvs); -STATIC void espidf_exception_print(const mp_print_t *print, mp_obj_t o_in, mp_print_kind_t kind) { +static void espidf_exception_print(const mp_print_t *print, mp_obj_t o_in, mp_print_kind_t kind) { mp_print_kind_t k = kind & ~PRINT_EXC_SUBCLASS; bool is_subclass = kind & PRINT_EXC_SUBCLASS; if (!is_subclass && (k == PRINT_EXC)) { @@ -116,12 +116,12 @@ MP_DEFINE_CONST_OBJ_TYPE( //| def get_total_psram() -> int: //| """Returns the number of bytes of psram detected, or 0 if psram is not present or not configured""" //| -STATIC mp_obj_t espidf_get_total_psram(void) { +static mp_obj_t espidf_get_total_psram(void) { return MP_OBJ_NEW_SMALL_INT(common_hal_espidf_get_total_psram()); } MP_DEFINE_CONST_FUN_OBJ_0(espidf_get_total_psram_obj, espidf_get_total_psram); -STATIC const mp_rom_map_elem_t espidf_module_globals_table[] = { +static const mp_rom_map_elem_t espidf_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_espidf) }, { MP_ROM_QSTR(MP_QSTR_heap_caps_get_total_size), MP_ROM_PTR(&espidf_heap_caps_get_total_size_obj)}, @@ -135,7 +135,7 @@ STATIC const mp_rom_map_elem_t espidf_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_MemoryError), MP_ROM_PTR(&mp_type_espidf_MemoryError) }, }; -STATIC MP_DEFINE_CONST_DICT(espidf_module_globals, espidf_module_globals_table); +static MP_DEFINE_CONST_DICT(espidf_module_globals, espidf_module_globals_table); const mp_obj_module_t espidf_module = { .base = { &mp_type_module }, diff --git a/ports/espressif/bindings/espnow/ESPNow.c b/ports/espressif/bindings/espnow/ESPNow.c index 6c8d2b50a537..80dfac93c12f 100644 --- a/ports/espressif/bindings/espnow/ESPNow.c +++ b/ports/espressif/bindings/espnow/ESPNow.c @@ -41,7 +41,7 @@ static void espnow_check_for_deinit(espnow_obj_t *self) { //| `wifi_phy_rate_t `_ //| """ //| ... -STATIC mp_obj_t espnow_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t espnow_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_buffer_size, ARG_phy_rate }; static const mp_arg_t allowed_args[] = { { MP_QSTR_buffer_size, MP_ARG_INT, { .u_int = 526 } }, @@ -71,13 +71,13 @@ STATIC mp_obj_t espnow_make_new(const mp_obj_type_t *type, size_t n_args, size_t //| def deinit(self) -> None: //| """Deinitializes ESP-NOW and releases it for another program.""" //| ... -STATIC mp_obj_t espnow_deinit(mp_obj_t self_in) { +static mp_obj_t espnow_deinit(mp_obj_t self_in) { espnow_obj_t *self = MP_OBJ_TO_PTR(self_in); espnow_check_for_deinit(self); common_hal_espnow_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espnow_deinit_obj, espnow_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(espnow_deinit_obj, espnow_deinit); //| def __enter__(self) -> ESPNow: //| """No-op used by Context Managers.""" @@ -88,11 +88,11 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(espnow_deinit_obj, espnow_deinit); //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t espnow_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t espnow_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; return espnow_deinit(args[0]); } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(espnow___exit___obj, 4, 4, espnow_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(espnow___exit___obj, 4, 4, espnow_obj___exit__); // --- Send and Read messages --- @@ -109,7 +109,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(espnow___exit___obj, 4, 4, espnow_obj //| :param Peer peer: Send message to this peer. If `None`, send to all registered peers. //| """ //| ... -STATIC mp_obj_t espnow_send(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t espnow_send(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_message, ARG_peer }; static const mp_arg_t allowed_args[] = { { MP_QSTR_message, MP_ARG_OBJ | MP_ARG_REQUIRED }, @@ -134,7 +134,7 @@ STATIC mp_obj_t espnow_send(size_t n_args, const mp_obj_t *pos_args, mp_map_t *k return common_hal_espnow_send(self, &message, mac); } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(espnow_send_obj, 2, espnow_send); +static MP_DEFINE_CONST_FUN_OBJ_KW(espnow_send_obj, 2, espnow_send); //| def read(self) -> Optional[ESPNowPacket]: //| """Read a packet from the receive buffer. @@ -143,18 +143,18 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_KW(espnow_send_obj, 2, espnow_send); //| //| :returns: An `ESPNowPacket` if available in the buffer, otherwise `None`.""" //| ... -STATIC mp_obj_t espnow_read(mp_obj_t self_in) { +static mp_obj_t espnow_read(mp_obj_t self_in) { espnow_obj_t *self = MP_OBJ_TO_PTR(self_in); espnow_check_for_deinit(self); return common_hal_espnow_read(self); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espnow_read_obj, espnow_read); +static MP_DEFINE_CONST_FUN_OBJ_1(espnow_read_obj, espnow_read); //| send_success: int //| """The number of tx packets received by the peer(s) ``ESP_NOW_SEND_SUCCESS``. (read-only)""" //| -STATIC mp_obj_t espnow_get_send_success(const mp_obj_t self_in) { +static mp_obj_t espnow_get_send_success(const mp_obj_t self_in) { espnow_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_int_from_uint(self->send_success); } @@ -166,7 +166,7 @@ MP_PROPERTY_GETTER(espnow_send_success_obj, //| send_failure: int //| """The number of failed tx packets ``ESP_NOW_SEND_FAIL``. (read-only)""" //| -STATIC mp_obj_t espnow_send_get_failure(const mp_obj_t self_in) { +static mp_obj_t espnow_send_get_failure(const mp_obj_t self_in) { espnow_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_int_from_uint(self->send_failure); } @@ -178,7 +178,7 @@ MP_PROPERTY_GETTER(espnow_send_failure_obj, //| read_success: int //| """The number of rx packets captured in the buffer. (read-only)""" //| -STATIC mp_obj_t espnow_get_read_success(const mp_obj_t self_in) { +static mp_obj_t espnow_get_read_success(const mp_obj_t self_in) { espnow_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_int_from_uint(self->read_success); } @@ -190,7 +190,7 @@ MP_PROPERTY_GETTER(espnow_read_success_obj, //| read_failure: int //| """The number of dropped rx packets due to buffer overflow. (read-only)""" //| -STATIC mp_obj_t espnow_read_get_failure(const mp_obj_t self_in) { +static mp_obj_t espnow_read_get_failure(const mp_obj_t self_in) { espnow_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_int_from_uint(self->read_failure); } @@ -204,18 +204,18 @@ MP_PROPERTY_GETTER(espnow_read_failure_obj, //| //| :param ReadableBuffer pmk: The ESP-NOW Primary Master Key (length = 16 bytes).""" //| ... -STATIC mp_obj_t espnow_set_pmk(mp_obj_t self_in, mp_obj_t key) { +static mp_obj_t espnow_set_pmk(mp_obj_t self_in, mp_obj_t key) { espnow_obj_t *self = MP_OBJ_TO_PTR(self_in); espnow_check_for_deinit(self); common_hal_espnow_set_pmk(self, common_hal_espnow_get_bytes_len(key, ESP_NOW_KEY_LEN)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espnow_set_pmk_obj, espnow_set_pmk); +static MP_DEFINE_CONST_FUN_OBJ_2(espnow_set_pmk_obj, espnow_set_pmk); //| buffer_size: int //| """The size of the internal ring buffer. (read-only)""" //| -STATIC mp_obj_t espnow_get_buffer_size(const mp_obj_t self_in) { +static mp_obj_t espnow_get_buffer_size(const mp_obj_t self_in) { espnow_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_int_from_uint(self->recv_buffer_size); } @@ -229,13 +229,13 @@ MP_PROPERTY_GETTER(espnow_buffer_size_obj, //| `wifi_phy_rate_t `_ //| """ //| -STATIC mp_obj_t espnow_get_phy_rate(const mp_obj_t self_in) { +static mp_obj_t espnow_get_phy_rate(const mp_obj_t self_in) { espnow_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_NEW_SMALL_INT(self->phy_rate); } MP_DEFINE_CONST_FUN_OBJ_1(espnow_get_phy_rate_obj, espnow_get_phy_rate); -STATIC mp_obj_t espnow_set_phy_rate(const mp_obj_t self_in, const mp_obj_t value) { +static mp_obj_t espnow_set_phy_rate(const mp_obj_t self_in, const mp_obj_t value) { espnow_obj_t *self = MP_OBJ_TO_PTR(self_in); espnow_check_for_deinit(self); common_hal_espnow_set_phy_rate(self, mp_obj_get_int(value)); @@ -252,16 +252,16 @@ MP_PROPERTY_GETSET(espnow_phy_rate_obj, //| peers: Peers //| """The peer info records for all registered `ESPNow` peers. (read-only)""" //| -STATIC mp_obj_t espnow_get_peers(mp_obj_t self_in) { +static mp_obj_t espnow_get_peers(mp_obj_t self_in) { espnow_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_FROM_PTR(self->peers); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espnow_get_peers_obj, espnow_get_peers); +static MP_DEFINE_CONST_FUN_OBJ_1(espnow_get_peers_obj, espnow_get_peers); MP_PROPERTY_GETTER(espnow_peers_obj, (mp_obj_t)&espnow_get_peers_obj); -STATIC const mp_rom_map_elem_t espnow_locals_dict_table[] = { +static const mp_rom_map_elem_t espnow_locals_dict_table[] = { // Context managers { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&mp_identity_obj) }, { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&espnow___exit___obj) }, @@ -287,13 +287,13 @@ STATIC const mp_rom_map_elem_t espnow_locals_dict_table[] = { // Peer related properties { MP_ROM_QSTR(MP_QSTR_peers), MP_ROM_PTR(&espnow_peers_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(espnow_locals_dict, espnow_locals_dict_table); +static MP_DEFINE_CONST_DICT(espnow_locals_dict, espnow_locals_dict_table); // --- Dummy Buffer Protocol support --- // ...so asyncio can poll.ipoll() on this device // Support ioctl(MP_STREAM_POLL, ) for asyncio -STATIC mp_uint_t espnow_stream_ioctl(mp_obj_t self_in, mp_uint_t request, uintptr_t arg, int *errcode) { +static mp_uint_t espnow_stream_ioctl(mp_obj_t self_in, mp_uint_t request, uintptr_t arg, int *errcode) { espnow_obj_t *self = MP_OBJ_TO_PTR(self_in); espnow_check_for_deinit(self); switch (request) { @@ -311,7 +311,7 @@ STATIC mp_uint_t espnow_stream_ioctl(mp_obj_t self_in, mp_uint_t request, uintpt } } -STATIC const mp_stream_p_t espnow_stream_p = { +static const mp_stream_p_t espnow_stream_p = { .ioctl = espnow_stream_ioctl, }; @@ -325,7 +325,7 @@ STATIC const mp_stream_p_t espnow_stream_p = { //| """Return the number of `bytes` available to read. Used to implement ``len()``.""" //| ... //| -STATIC mp_obj_t espnow_unary_op(mp_unary_op_t op, mp_obj_t self_in) { +static mp_obj_t espnow_unary_op(mp_unary_op_t op, mp_obj_t self_in) { espnow_obj_t *self = MP_OBJ_TO_PTR(self_in); espnow_check_for_deinit(self); size_t len = ringbuf_num_filled(self->recv_buffer); diff --git a/ports/espressif/bindings/espnow/Peer.c b/ports/espressif/bindings/espnow/Peer.c index 35f18e44bec4..70600a4fb1d4 100644 --- a/ports/espressif/bindings/espnow/Peer.c +++ b/ports/espressif/bindings/espnow/Peer.c @@ -32,7 +32,7 @@ //| :param bool encrypted: Whether or not to use encryption. //| """ //| ... -STATIC mp_obj_t espnow_peer_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t espnow_peer_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_mac, ARG_lmk, ARG_channel, ARG_interface, ARG_encrypted }; static const mp_arg_t allowed_args[] = { { MP_QSTR_mac, MP_ARG_OBJ | MP_ARG_REQUIRED }, @@ -75,13 +75,13 @@ STATIC mp_obj_t espnow_peer_make_new(const mp_obj_type_t *type, size_t n_args, s //| mac: ReadableBuffer //| """The WiFi mac to use.""" //| -STATIC mp_obj_t espnow_peer_get_mac(const mp_obj_t self_in) { +static mp_obj_t espnow_peer_get_mac(const mp_obj_t self_in) { espnow_peer_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bytes(self->peer_info.peer_addr, MP_ARRAY_SIZE(self->peer_info.peer_addr)); } MP_DEFINE_CONST_FUN_OBJ_1(espnow_peer_get_mac_obj, espnow_peer_get_mac); -STATIC mp_obj_t espnow_peer_set_mac(const mp_obj_t self_in, const mp_obj_t value) { +static mp_obj_t espnow_peer_set_mac(const mp_obj_t self_in, const mp_obj_t value) { espnow_peer_obj_t *self = MP_OBJ_TO_PTR(self_in); memcpy(self->peer_info.peer_addr, common_hal_espnow_get_bytes_len(value, ESP_NOW_ETH_ALEN), ESP_NOW_ETH_ALEN); @@ -98,13 +98,13 @@ MP_PROPERTY_GETSET(espnow_peer_mac_obj, //| lmk: ReadableBuffer //| """The WiFi lmk to use.""" //| -STATIC mp_obj_t espnow_peer_get_lmk(const mp_obj_t self_in) { +static mp_obj_t espnow_peer_get_lmk(const mp_obj_t self_in) { espnow_peer_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bytes(self->peer_info.lmk, MP_ARRAY_SIZE(self->peer_info.lmk)); } MP_DEFINE_CONST_FUN_OBJ_1(espnow_peer_get_lmk_obj, espnow_peer_get_lmk); -STATIC mp_obj_t espnow_peer_set_lmk(const mp_obj_t self_in, const mp_obj_t value) { +static mp_obj_t espnow_peer_set_lmk(const mp_obj_t self_in, const mp_obj_t value) { espnow_peer_obj_t *self = MP_OBJ_TO_PTR(self_in); memcpy(self->peer_info.lmk, common_hal_espnow_get_bytes_len(value, ESP_NOW_KEY_LEN), ESP_NOW_KEY_LEN); @@ -121,13 +121,13 @@ MP_PROPERTY_GETSET(espnow_peer_lmk_obj, //| channel: int //| """The WiFi channel to use.""" //| -STATIC mp_obj_t espnow_peer_get_channel(const mp_obj_t self_in) { +static mp_obj_t espnow_peer_get_channel(const mp_obj_t self_in) { espnow_peer_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_NEW_SMALL_INT(self->peer_info.channel); } MP_DEFINE_CONST_FUN_OBJ_1(espnow_peer_get_channel_obj, espnow_peer_get_channel); -STATIC mp_obj_t espnow_peer_set_channel(const mp_obj_t self_in, const mp_obj_t value) { +static mp_obj_t espnow_peer_set_channel(const mp_obj_t self_in, const mp_obj_t value) { espnow_peer_obj_t *self = MP_OBJ_TO_PTR(self_in); self->peer_info.channel = mp_arg_validate_int_range(mp_obj_get_int(value), 0, 14, MP_QSTR_channel); @@ -144,13 +144,13 @@ MP_PROPERTY_GETSET(espnow_peer_channel_obj, //| interface: int //| """The WiFi interface to use.""" //| -STATIC mp_obj_t espnow_peer_get_interface(const mp_obj_t self_in) { +static mp_obj_t espnow_peer_get_interface(const mp_obj_t self_in) { espnow_peer_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_NEW_SMALL_INT(self->peer_info.ifidx); } MP_DEFINE_CONST_FUN_OBJ_1(espnow_peer_get_interface_obj, espnow_peer_get_interface); -STATIC mp_obj_t espnow_peer_set_interface(const mp_obj_t self_in, const mp_obj_t value) { +static mp_obj_t espnow_peer_set_interface(const mp_obj_t self_in, const mp_obj_t value) { espnow_peer_obj_t *self = MP_OBJ_TO_PTR(self_in); self->peer_info.ifidx = (wifi_interface_t)mp_arg_validate_int_range(mp_obj_get_int(value), 0, 1, MP_QSTR_interface); @@ -167,13 +167,13 @@ MP_PROPERTY_GETSET(espnow_peer_interface_obj, //| encrypted: bool //| """Whether or not to use encryption.""" //| -STATIC mp_obj_t espnow_peer_get_encrypted(const mp_obj_t self_in) { +static mp_obj_t espnow_peer_get_encrypted(const mp_obj_t self_in) { espnow_peer_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bool(self->peer_info.encrypt); } MP_DEFINE_CONST_FUN_OBJ_1(espnow_peer_get_encrypted_obj, espnow_peer_get_encrypted); -STATIC mp_obj_t espnow_peer_set_encrypted(const mp_obj_t self_in, const mp_obj_t value) { +static mp_obj_t espnow_peer_set_encrypted(const mp_obj_t self_in, const mp_obj_t value) { espnow_peer_obj_t *self = MP_OBJ_TO_PTR(self_in); self->peer_info.encrypt = mp_obj_is_true(value); @@ -192,7 +192,7 @@ MP_PROPERTY_GETSET(espnow_peer_encrypted_obj, (mp_obj_t)&espnow_peer_get_encrypted_obj, (mp_obj_t)&espnow_peer_set_encrypted_obj); -STATIC const mp_rom_map_elem_t espnow_peer_locals_dict_table[] = { +static const mp_rom_map_elem_t espnow_peer_locals_dict_table[] = { // Peer parameters { MP_ROM_QSTR(MP_QSTR_mac), MP_ROM_PTR(&espnow_peer_mac_obj) }, { MP_ROM_QSTR(MP_QSTR_lmk), MP_ROM_PTR(&espnow_peer_lmk_obj) }, @@ -200,7 +200,7 @@ STATIC const mp_rom_map_elem_t espnow_peer_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_interface), MP_ROM_PTR(&espnow_peer_interface_obj) }, { MP_ROM_QSTR(MP_QSTR_encrypted), MP_ROM_PTR(&espnow_peer_encrypted_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(espnow_peer_locals_dict, espnow_peer_locals_dict_table); +static MP_DEFINE_CONST_DICT(espnow_peer_locals_dict, espnow_peer_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( espnow_peer_type, diff --git a/ports/espressif/bindings/espnow/Peers.c b/ports/espressif/bindings/espnow/Peers.c index f3965b04ed8b..2f168768c917 100644 --- a/ports/espressif/bindings/espnow/Peers.c +++ b/ports/espressif/bindings/espnow/Peers.c @@ -28,13 +28,13 @@ //| :param Peer peer: The peer object to append. //| """ //| ... -STATIC mp_obj_t espnow_peers_append(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t espnow_peers_append(mp_obj_t self_in, mp_obj_t arg) { espnow_peer_obj_t *peer = MP_OBJ_TO_PTR(mp_arg_validate_type(arg, &espnow_peer_type, MP_QSTR_Peer)); CHECK_ESP_RESULT(esp_now_add_peer(&peer->peer_info)); espnow_peers_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_list_append(self->list, arg); } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espnow_peers_append_obj, espnow_peers_append); +static MP_DEFINE_CONST_FUN_OBJ_2(espnow_peers_append_obj, espnow_peers_append); //| def remove(self, peer: Peer) -> None: //| """Remove peer. @@ -43,25 +43,25 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(espnow_peers_append_obj, espnow_peers_append); //| """ //| ... //| -STATIC mp_obj_t espnow_peers_remove(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t espnow_peers_remove(mp_obj_t self_in, mp_obj_t arg) { espnow_peer_obj_t *peer = MP_OBJ_TO_PTR(mp_arg_validate_type(arg, &espnow_peer_type, MP_QSTR_Peer)); CHECK_ESP_RESULT(esp_now_del_peer(peer->peer_info.peer_addr)); espnow_peers_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_list_remove(self->list, arg); } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(espnow_peers_remove_obj, espnow_peers_remove); +static MP_DEFINE_CONST_FUN_OBJ_2(espnow_peers_remove_obj, espnow_peers_remove); -STATIC const mp_rom_map_elem_t espnow_peers_locals_dict_table[] = { +static const mp_rom_map_elem_t espnow_peers_locals_dict_table[] = { // Peer management functions { MP_ROM_QSTR(MP_QSTR_append), MP_ROM_PTR(&espnow_peers_append_obj) }, { MP_ROM_QSTR(MP_QSTR_remove), MP_ROM_PTR(&espnow_peers_remove_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(espnow_peers_locals_dict, espnow_peers_locals_dict_table); +static MP_DEFINE_CONST_DICT(espnow_peers_locals_dict, espnow_peers_locals_dict_table); /******************************************************************************/ /* peers print */ -STATIC void espnow_peers_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { +static void espnow_peers_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { espnow_peers_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_TYPE_GET_SLOT(mp_obj_get_type(self->list), print)(print, self->list, kind); } @@ -69,7 +69,7 @@ STATIC void espnow_peers_print(const mp_print_t *print, mp_obj_t self_in, mp_pri /******************************************************************************/ /* peers unary_op */ -STATIC mp_obj_t espnow_peers_unary_op(mp_unary_op_t op, mp_obj_t self_in) { +static mp_obj_t espnow_peers_unary_op(mp_unary_op_t op, mp_obj_t self_in) { espnow_peers_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_TYPE_GET_SLOT(mp_obj_get_type(self->list), unary_op)(op, self->list); } @@ -77,7 +77,7 @@ STATIC mp_obj_t espnow_peers_unary_op(mp_unary_op_t op, mp_obj_t self_in) { /******************************************************************************/ /* peers subscript */ -STATIC mp_obj_t espnow_peers_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) { +static mp_obj_t espnow_peers_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) { if (value != MP_OBJ_SENTINEL) { return MP_OBJ_NULL; // op not supported } @@ -88,7 +88,7 @@ STATIC mp_obj_t espnow_peers_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t v /******************************************************************************/ /* peers iterator */ -STATIC mp_obj_t espnow_peers_getiter(mp_obj_t self_in, mp_obj_iter_buf_t *iter_buf) { +static mp_obj_t espnow_peers_getiter(mp_obj_t self_in, mp_obj_iter_buf_t *iter_buf) { espnow_peers_obj_t *self = MP_OBJ_TO_PTR(self_in); return ((mp_getiter_fun_t)MP_OBJ_TYPE_GET_SLOT(mp_obj_get_type(self->list), iter))(self->list, iter_buf); } diff --git a/ports/espressif/bindings/espnow/__init__.c b/ports/espressif/bindings/espnow/__init__.c index 67c768df1b9d..79bc0b0f3a63 100644 --- a/ports/espressif/bindings/espnow/__init__.c +++ b/ports/espressif/bindings/espnow/__init__.c @@ -54,7 +54,7 @@ //| ... //| -STATIC const mp_rom_map_elem_t espnow_module_globals_table[] = { +static const mp_rom_map_elem_t espnow_module_globals_table[] = { // module name { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_espnow) }, @@ -64,7 +64,7 @@ STATIC const mp_rom_map_elem_t espnow_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_Peer), MP_ROM_PTR(&espnow_peer_type) }, { MP_ROM_QSTR(MP_QSTR_Peers), MP_ROM_PTR(&espnow_peers_type) }, }; -STATIC MP_DEFINE_CONST_DICT(espnow_module_globals, espnow_module_globals_table); +static MP_DEFINE_CONST_DICT(espnow_module_globals, espnow_module_globals_table); const mp_obj_module_t espnow_module = { .base = { &mp_type_module }, diff --git a/ports/espressif/bindings/espulp/Architecture.c b/ports/espressif/bindings/espulp/Architecture.c index fd657a9ac30e..ee45035e89df 100644 --- a/ports/espressif/bindings/espulp/Architecture.c +++ b/ports/espressif/bindings/espulp/Architecture.c @@ -24,7 +24,7 @@ MAKE_ENUM_MAP(espulp_architecture) { MAKE_ENUM_MAP_ENTRY(architecture, FSM), MAKE_ENUM_MAP_ENTRY(architecture, RISCV), }; -STATIC MP_DEFINE_CONST_DICT(espulp_architecture_locals_dict, espulp_architecture_locals_table); +static MP_DEFINE_CONST_DICT(espulp_architecture_locals_dict, espulp_architecture_locals_table); MAKE_PRINTER(espulp, espulp_architecture); diff --git a/ports/espressif/bindings/espulp/ULP.c b/ports/espressif/bindings/espulp/ULP.c index 41c0c10b223b..44d573df061e 100644 --- a/ports/espressif/bindings/espulp/ULP.c +++ b/ports/espressif/bindings/espulp/ULP.c @@ -21,7 +21,7 @@ //| //| :param Architecture arch: The ulp arch""" //| ... -STATIC mp_obj_t espulp_ulp_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t espulp_ulp_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_arch }; static const mp_arg_t allowed_args[] = { { MP_QSTR_arch, MP_ARG_OBJ, {.u_obj = (void *)&architecture_FSM_obj} }, @@ -39,7 +39,7 @@ STATIC mp_obj_t espulp_ulp_make_new(const mp_obj_type_t *type, size_t n_args, si return MP_OBJ_FROM_PTR(self); } -STATIC void check_for_deinit(espulp_ulp_obj_t *self) { +static void check_for_deinit(espulp_ulp_obj_t *self) { if (common_hal_espulp_ulp_deinited(self)) { raise_deinited_error(); } @@ -48,12 +48,12 @@ STATIC void check_for_deinit(espulp_ulp_obj_t *self) { //| def deinit(self) -> None: //| """Deinitialises the ULP and releases it for another program.""" //| ... -STATIC mp_obj_t espulp_ulp_deinit(mp_obj_t self_in) { +static mp_obj_t espulp_ulp_deinit(mp_obj_t self_in) { espulp_ulp_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_espulp_ulp_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espulp_ulp_deinit_obj, espulp_ulp_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(espulp_ulp_deinit_obj, espulp_ulp_deinit); //| def __enter__(self) -> ULP: //| """No-op used by Context Managers.""" @@ -64,11 +64,11 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(espulp_ulp_deinit_obj, espulp_ulp_deinit); //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t espulp_ulp_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t espulp_ulp_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; return espulp_ulp_deinit(args[0]); } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(espulp_ulp___exit___obj, 4, 4, espulp_ulp_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(espulp_ulp___exit___obj, 4, 4, espulp_ulp_obj___exit__); //| def run( //| self, program: ReadableBuffer, *, pins: Sequence[microcontroller.Pin] = () @@ -78,7 +78,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(espulp_ulp___exit___obj, 4, 4, espulp //| //| The program will continue to run even when the running Python is halted.""" //| ... -STATIC mp_obj_t espulp_ulp_run(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t espulp_ulp_run(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { espulp_ulp_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); check_for_deinit(self); @@ -114,24 +114,24 @@ STATIC mp_obj_t espulp_ulp_run(size_t n_args, const mp_obj_t *pos_args, mp_map_t common_hal_espulp_ulp_run(self, bufinfo.buf, bufinfo.len, pin_mask); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(espulp_ulp_run_obj, 2, espulp_ulp_run); +static MP_DEFINE_CONST_FUN_OBJ_KW(espulp_ulp_run_obj, 2, espulp_ulp_run); //| def halt(self) -> None: //| """Halts the running program and releases the pins given in `run()`.""" //| ... -STATIC mp_obj_t espulp_ulp_halt(mp_obj_t self_in) { +static mp_obj_t espulp_ulp_halt(mp_obj_t self_in) { espulp_ulp_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_espulp_ulp_halt(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(espulp_ulp_halt_obj, espulp_ulp_halt); +static MP_DEFINE_CONST_FUN_OBJ_1(espulp_ulp_halt_obj, espulp_ulp_halt); //| arch: Architecture //| """The ulp architecture. (read-only)""" //| -STATIC mp_obj_t espulp_ulp_get_arch(mp_obj_t self_in) { +static mp_obj_t espulp_ulp_get_arch(mp_obj_t self_in) { espulp_ulp_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -142,7 +142,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(espulp_ulp_get_arch_obj, espulp_ulp_get_arch); MP_PROPERTY_GETTER(espulp_ulp_arch_obj, (mp_obj_t)&espulp_ulp_get_arch_obj); -STATIC const mp_rom_map_elem_t espulp_ulp_locals_table[] = { +static const mp_rom_map_elem_t espulp_ulp_locals_table[] = { { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&espulp_ulp_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&mp_identity_obj) }, { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&espulp_ulp___exit___obj) }, @@ -150,7 +150,7 @@ STATIC const mp_rom_map_elem_t espulp_ulp_locals_table[] = { { MP_ROM_QSTR(MP_QSTR_halt), MP_ROM_PTR(&espulp_ulp_halt_obj) }, { MP_ROM_QSTR(MP_QSTR_arch), MP_ROM_PTR(&espulp_ulp_arch_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(espulp_ulp_locals_dict, espulp_ulp_locals_table); +static MP_DEFINE_CONST_DICT(espulp_ulp_locals_dict, espulp_ulp_locals_table); MP_DEFINE_CONST_OBJ_TYPE( espulp_ulp_type, diff --git a/ports/espressif/bindings/espulp/ULPAlarm.c b/ports/espressif/bindings/espulp/ULPAlarm.c index cef898d83ef6..edff8e44b8e2 100644 --- a/ports/espressif/bindings/espulp/ULPAlarm.c +++ b/ports/espressif/bindings/espulp/ULPAlarm.c @@ -20,7 +20,7 @@ //| :param ULP ulp: The ulp instance""" //| ... //| -STATIC mp_obj_t espulp_ulpalarm_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t espulp_ulpalarm_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_ulp }; static const mp_arg_t allowed_args[] = { { MP_QSTR_ulp, MP_ARG_REQUIRED | MP_ARG_OBJ }, diff --git a/ports/espressif/bindings/espulp/__init__.c b/ports/espressif/bindings/espulp/__init__.c index dbbdf8dd2698..59a3519868ce 100644 --- a/ports/espressif/bindings/espulp/__init__.c +++ b/ports/espressif/bindings/espulp/__init__.c @@ -42,7 +42,7 @@ //| ... //| -STATIC mp_obj_t espulp_get_rtc_gpio_number(mp_obj_t pin_obj) { +static mp_obj_t espulp_get_rtc_gpio_number(mp_obj_t pin_obj) { const mcu_pin_obj_t *pin = validate_obj_is_pin(pin_obj, MP_QSTR_pin); mp_int_t number = common_hal_espulp_get_rtc_gpio_number(pin); if (number < 0) { @@ -52,7 +52,7 @@ STATIC mp_obj_t espulp_get_rtc_gpio_number(mp_obj_t pin_obj) { } MP_DEFINE_CONST_FUN_OBJ_1(espulp_get_rtc_gpio_number_obj, espulp_get_rtc_gpio_number); -STATIC const mp_rom_map_elem_t espulp_module_globals_table[] = { +static const mp_rom_map_elem_t espulp_module_globals_table[] = { // module name { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_espulp) }, @@ -64,7 +64,7 @@ STATIC const mp_rom_map_elem_t espulp_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_ULPAlarm), MP_OBJ_FROM_PTR(&espulp_ulpalarm_type) }, { MP_ROM_QSTR(MP_QSTR_Architecture), MP_ROM_PTR(&espulp_architecture_type) }, }; -STATIC MP_DEFINE_CONST_DICT(espulp_module_globals, espulp_module_globals_table); +static MP_DEFINE_CONST_DICT(espulp_module_globals, espulp_module_globals_table); const mp_obj_module_t espulp_module = { .base = { &mp_type_module }, diff --git a/ports/espressif/boards/01space_lcd042_esp32c3/pins.c b/ports/espressif/boards/01space_lcd042_esp32c3/pins.c index 2942fc304fa0..1518fdecafb4 100644 --- a/ports/espressif/boards/01space_lcd042_esp32c3/pins.c +++ b/ports/espressif/boards/01space_lcd042_esp32c3/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/adafruit_esp32s3_camera/pins.c b/ports/espressif/boards/adafruit_esp32s3_camera/pins.c index 72d8a9729e24..9745626da021 100644 --- a/ports/espressif/boards/adafruit_esp32s3_camera/pins.c +++ b/ports/espressif/boards/adafruit_esp32s3_camera/pins.c @@ -8,7 +8,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_obj_tuple_t camera_data_tuple = { +static const mp_rom_obj_tuple_t camera_data_tuple = { {&mp_type_tuple}, 8, { @@ -24,7 +24,7 @@ STATIC const mp_rom_obj_tuple_t camera_data_tuple = { }; -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO35) }, diff --git a/ports/espressif/boards/adafruit_feather_esp32_v2/pins.c b/ports/espressif/boards/adafruit_feather_esp32_v2/pins.c index c985cc505746..a244bacd39fc 100644 --- a/ports/espressif/boards/adafruit_feather_esp32_v2/pins.c +++ b/ports/espressif/boards/adafruit_feather_esp32_v2/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // External pins are in silkscreen order, from top to bottom, left side, then right side diff --git a/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/pins.c b/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/pins.c index 36e859867105..f12c49323590 100644 --- a/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/pins.c +++ b/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // External pins are in silkscreen order, from top to bottom, left side, then right side diff --git a/ports/espressif/boards/adafruit_feather_esp32s2/pins.c b/ports/espressif/boards/adafruit_feather_esp32s2/pins.c index 860e19292428..7d4d1a801ab4 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s2/pins.c +++ b/ports/espressif/boards/adafruit_feather_esp32s2/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/pins.c b/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/pins.c index 597b31639299..7eeffa79da48 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/pins.c +++ b/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/pins.c @@ -8,7 +8,7 @@ #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO39) }, diff --git a/ports/espressif/boards/adafruit_feather_esp32s2_tft/pins.c b/ports/espressif/boards/adafruit_feather_esp32s2_tft/pins.c index a6ee350588b9..97dd1029d994 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s2_tft/pins.c +++ b/ports/espressif/boards/adafruit_feather_esp32s2_tft/pins.c @@ -8,7 +8,7 @@ #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO1) }, diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/pins.c b/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/pins.c index 860e19292428..7d4d1a801ab4 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/pins.c +++ b/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/pins.c b/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/pins.c index 860e19292428..7d4d1a801ab4 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/pins.c +++ b/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/pins.c b/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/pins.c index 597b31639299..7eeffa79da48 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/pins.c +++ b/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/pins.c @@ -8,7 +8,7 @@ #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO39) }, diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_tft/pins.c b/ports/espressif/boards/adafruit_feather_esp32s3_tft/pins.c index a6ee350588b9..97dd1029d994 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_tft/pins.c +++ b/ports/espressif/boards/adafruit_feather_esp32s3_tft/pins.c @@ -8,7 +8,7 @@ #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO1) }, diff --git a/ports/espressif/boards/adafruit_feather_huzzah32/pins.c b/ports/espressif/boards/adafruit_feather_huzzah32/pins.c index 204d505550ac..1e941ecdfff5 100644 --- a/ports/espressif/boards/adafruit_feather_huzzah32/pins.c +++ b/ports/espressif/boards/adafruit_feather_huzzah32/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // External pins are in silkscreen order, from top to bottom, left side, then right side diff --git a/ports/espressif/boards/adafruit_funhouse/pins.c b/ports/espressif/boards/adafruit_funhouse/pins.c index 03c1cde14591..b6d419f32e27 100644 --- a/ports/espressif/boards/adafruit_funhouse/pins.c +++ b/ports/espressif/boards/adafruit_funhouse/pins.c @@ -8,7 +8,7 @@ #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS diff --git a/ports/espressif/boards/adafruit_huzzah32_breakout/pins.c b/ports/espressif/boards/adafruit_huzzah32_breakout/pins.c index 8c4b9a599945..e79f4c609677 100644 --- a/ports/espressif/boards/adafruit_huzzah32_breakout/pins.c +++ b/ports/espressif/boards/adafruit_huzzah32_breakout/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/adafruit_itsybitsy_esp32/pins.c b/ports/espressif/boards/adafruit_itsybitsy_esp32/pins.c index d1e48ff9d9e0..8ea74a0cbb22 100644 --- a/ports/espressif/boards/adafruit_itsybitsy_esp32/pins.c +++ b/ports/espressif/boards/adafruit_itsybitsy_esp32/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // External pins are in silkscreen order, from top to bottom, left side, then right side diff --git a/ports/espressif/boards/adafruit_magtag_2.9_grayscale/pins.c b/ports/espressif/boards/adafruit_magtag_2.9_grayscale/pins.c index b154ba0df345..746a2cad4478 100644 --- a/ports/espressif/boards/adafruit_magtag_2.9_grayscale/pins.c +++ b/ports/espressif/boards/adafruit_magtag_2.9_grayscale/pins.c @@ -8,7 +8,7 @@ #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO10) }, diff --git a/ports/espressif/boards/adafruit_matrixportal_s3/pins.c b/ports/espressif/boards/adafruit_matrixportal_s3/pins.c index 2ab8d3755917..d303529bdd77 100644 --- a/ports/espressif/boards/adafruit_matrixportal_s3/pins.c +++ b/ports/espressif/boards/adafruit_matrixportal_s3/pins.c @@ -7,7 +7,7 @@ #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_obj_tuple_t matrix_addr_tuple = { +static const mp_rom_obj_tuple_t matrix_addr_tuple = { {&mp_type_tuple}, 5, { @@ -19,7 +19,7 @@ STATIC const mp_rom_obj_tuple_t matrix_addr_tuple = { } }; -STATIC const mp_rom_obj_tuple_t matrix_data_tuple = { +static const mp_rom_obj_tuple_t matrix_data_tuple = { {&mp_type_tuple}, 6, { @@ -33,7 +33,7 @@ STATIC const mp_rom_obj_tuple_t matrix_data_tuple = { } }; -STATIC const mp_rom_map_elem_t matrix_common_table[] = { +static const mp_rom_map_elem_t matrix_common_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR_rgb_pins), MP_ROM_PTR(&matrix_data_tuple) }, { MP_OBJ_NEW_QSTR(MP_QSTR_clock_pin), MP_ROM_PTR(&pin_GPIO2) }, { MP_OBJ_NEW_QSTR(MP_QSTR_latch_pin), MP_ROM_PTR(&pin_GPIO47) }, @@ -41,7 +41,7 @@ STATIC const mp_rom_map_elem_t matrix_common_table[] = { }; MP_DEFINE_CONST_DICT(matrix_common_dict, matrix_common_table); -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/adafruit_metro_esp32s2/pins.c b/ports/espressif/boards/adafruit_metro_esp32s2/pins.c index 6fcfeb51fa90..64664966d470 100644 --- a/ports/espressif/boards/adafruit_metro_esp32s2/pins.c +++ b/ports/espressif/boards/adafruit_metro_esp32s2/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO17) }, diff --git a/ports/espressif/boards/adafruit_metro_esp32s3/pins.c b/ports/espressif/boards/adafruit_metro_esp32s3/pins.c index b6f860b45631..0bc14bedf471 100644 --- a/ports/espressif/boards/adafruit_metro_esp32s3/pins.c +++ b/ports/espressif/boards/adafruit_metro_esp32s3/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO14) }, diff --git a/ports/espressif/boards/adafruit_qtpy_esp32_pico/pins.c b/ports/espressif/boards/adafruit_qtpy_esp32_pico/pins.c index c6da266296ee..fba81ee3562f 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32_pico/pins.c +++ b/ports/espressif/boards/adafruit_qtpy_esp32_pico/pins.c @@ -8,7 +8,7 @@ CIRCUITPY_BOARD_BUS_SINGLETON(stemma_i2c, i2c, 1) -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/adafruit_qtpy_esp32c3/pins.c b/ports/espressif/boards/adafruit_qtpy_esp32c3/pins.c index 87b818a4b1f7..a35205bbb514 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32c3/pins.c +++ b/ports/espressif/boards/adafruit_qtpy_esp32c3/pins.c @@ -9,7 +9,7 @@ CIRCUITPY_BOARD_BUS_SINGLETON(stemma_i2c, i2c, 1) -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO9) }, diff --git a/ports/espressif/boards/adafruit_qtpy_esp32s2/pins.c b/ports/espressif/boards/adafruit_qtpy_esp32s2/pins.c index e16bfb90aa51..446164fdef19 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32s2/pins.c +++ b/ports/espressif/boards/adafruit_qtpy_esp32s2/pins.c @@ -8,7 +8,7 @@ CIRCUITPY_BOARD_BUS_SINGLETON(stemma_i2c, i2c, 1) -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/pins.c b/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/pins.c index ed717c4ed99b..b98a7209e8d9 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/pins.c +++ b/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/pins.c @@ -8,7 +8,7 @@ CIRCUITPY_BOARD_BUS_SINGLETON(stemma_i2c, i2c, 1) -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/pins.c b/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/pins.c index ed717c4ed99b..b98a7209e8d9 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/pins.c +++ b/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/pins.c @@ -8,7 +8,7 @@ CIRCUITPY_BOARD_BUS_SINGLETON(stemma_i2c, i2c, 1) -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/adafruit_qualia_s3_rgb666/pins.c b/ports/espressif/boards/adafruit_qualia_s3_rgb666/pins.c index 116e83376152..524182126a16 100644 --- a/ports/espressif/boards/adafruit_qualia_s3_rgb666/pins.c +++ b/ports/espressif/boards/adafruit_qualia_s3_rgb666/pins.c @@ -14,9 +14,9 @@ static const char i2c_bus_init_sequence[] = { 2, 2, 0, // disable all output inversion 0, // trailing NUL for python bytes() representation }; -STATIC MP_DEFINE_BYTES_OBJ(i2c_init_byte_obj, i2c_bus_init_sequence); +static MP_DEFINE_BYTES_OBJ(i2c_init_byte_obj, i2c_bus_init_sequence); -STATIC const mp_rom_map_elem_t tft_io_expander_table[] = { +static const mp_rom_map_elem_t tft_io_expander_table[] = { { MP_ROM_QSTR(MP_QSTR_i2c_address), MP_ROM_INT(0x3f)}, { MP_ROM_QSTR(MP_QSTR_gpio_address), MP_ROM_INT(1)}, { MP_ROM_QSTR(MP_QSTR_gpio_data_len), MP_ROM_INT(1)}, @@ -29,7 +29,7 @@ STATIC const mp_rom_map_elem_t tft_io_expander_table[] = { }; MP_DEFINE_CONST_DICT(tft_io_expander_dict, tft_io_expander_table); -STATIC const mp_rom_obj_tuple_t tft_r_pins = { +static const mp_rom_obj_tuple_t tft_r_pins = { {&mp_type_tuple}, 5, { @@ -41,7 +41,7 @@ STATIC const mp_rom_obj_tuple_t tft_r_pins = { } }; -STATIC const mp_rom_obj_tuple_t tft_g_pins = { +static const mp_rom_obj_tuple_t tft_g_pins = { {&mp_type_tuple}, 6, { @@ -54,7 +54,7 @@ STATIC const mp_rom_obj_tuple_t tft_g_pins = { } }; -STATIC const mp_rom_obj_tuple_t tft_b_pins = { +static const mp_rom_obj_tuple_t tft_b_pins = { {&mp_type_tuple}, 5, { @@ -66,7 +66,7 @@ STATIC const mp_rom_obj_tuple_t tft_b_pins = { } }; -STATIC const mp_rom_map_elem_t tft_table[] = { +static const mp_rom_map_elem_t tft_table[] = { { MP_ROM_QSTR(MP_QSTR_de), MP_ROM_PTR(&pin_GPIO2) }, { MP_ROM_QSTR(MP_QSTR_vsync), MP_ROM_PTR(&pin_GPIO42) }, { MP_ROM_QSTR(MP_QSTR_hsync), MP_ROM_PTR(&pin_GPIO41) }, @@ -77,7 +77,7 @@ STATIC const mp_rom_map_elem_t tft_table[] = { }; MP_DEFINE_CONST_DICT(tft_dict, tft_table); -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_TFT_PINS), MP_ROM_PTR(&tft_dict) }, diff --git a/ports/espressif/boards/ai-thinker-esp32-cam/pins.c b/ports/espressif/boards/ai-thinker-esp32-cam/pins.c index 22126fa9fe45..2003fd4d8a38 100755 --- a/ports/espressif/boards/ai-thinker-esp32-cam/pins.c +++ b/ports/espressif/boards/ai-thinker-esp32-cam/pins.c @@ -9,7 +9,7 @@ CIRCUITPY_BOARD_BUS_SINGLETON(sscb_i2c, i2c, 2) // Camera sensor -STATIC const mp_rom_obj_tuple_t camera_data_tuple = { +static const mp_rom_obj_tuple_t camera_data_tuple = { // The order matters. They must be ordered from low to high (Y2, Y3 .. Y9). Do not include any of the control pins in here. {&mp_type_tuple}, 8, @@ -25,7 +25,7 @@ STATIC const mp_rom_obj_tuple_t camera_data_tuple = { } }; -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // Red LED on the back of the board diff --git a/ports/espressif/boards/ai_thinker_esp32-c3s-2m/pins.c b/ports/espressif/boards/ai_thinker_esp32-c3s-2m/pins.c index 544498baf5f4..6f3b27c3a4e6 100644 --- a/ports/espressif/boards/ai_thinker_esp32-c3s-2m/pins.c +++ b/ports/espressif/boards/ai_thinker_esp32-c3s-2m/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/ai_thinker_esp32-c3s/pins.c b/ports/espressif/boards/ai_thinker_esp32-c3s/pins.c index 544498baf5f4..6f3b27c3a4e6 100644 --- a/ports/espressif/boards/ai_thinker_esp32-c3s/pins.c +++ b/ports/espressif/boards/ai_thinker_esp32-c3s/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/pins.c b/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/pins.c index e0d12c035ad7..108c40f1636f 100644 --- a/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/pins.c +++ b/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/arduino_nano_esp32s3/pins.c b/ports/espressif/boards/arduino_nano_esp32s3/pins.c index d2d77ed8249e..6b901ba3c77f 100644 --- a/ports/espressif/boards/arduino_nano_esp32s3/pins.c +++ b/ports/espressif/boards/arduino_nano_esp32s3/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_B0), MP_ROM_PTR(&pin_GPIO46) }, diff --git a/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/pins.c b/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/pins.c index d583818196ce..76afa127c06a 100644 --- a/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/pins.c +++ b/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_B0), MP_ROM_PTR(&pin_GPIO46) }, diff --git a/ports/espressif/boards/artisense_rd00/pins.c b/ports/espressif/boards/artisense_rd00/pins.c index e6d43d058058..55bed8bb3ebe 100644 --- a/ports/espressif/boards/artisense_rd00/pins.c +++ b/ports/espressif/boards/artisense_rd00/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO1) }, diff --git a/ports/espressif/boards/atmegazero_esp32s2/pins.c b/ports/espressif/boards/atmegazero_esp32s2/pins.c index 45c2cfcb687d..8264b4aa3a2c 100644 --- a/ports/espressif/boards/atmegazero_esp32s2/pins.c +++ b/ports/espressif/boards/atmegazero_esp32s2/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/beetle-esp32-c3/pins.c b/ports/espressif/boards/beetle-esp32-c3/pins.c index aa6579677f8a..3bc3a1e905f9 100644 --- a/ports/espressif/boards/beetle-esp32-c3/pins.c +++ b/ports/espressif/boards/beetle-esp32-c3/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS diff --git a/ports/espressif/boards/bpi_bit_s2/pins.c b/ports/espressif/boards/bpi_bit_s2/pins.c index 577287efbe84..9e504730f17c 100644 --- a/ports/espressif/boards/bpi_bit_s2/pins.c +++ b/ports/espressif/boards/bpi_bit_s2/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO17) }, diff --git a/ports/espressif/boards/bpi_leaf_s3/pins.c b/ports/espressif/boards/bpi_leaf_s3/pins.c index 3327cddf964d..8a3355d919cb 100644 --- a/ports/espressif/boards/bpi_leaf_s3/pins.c +++ b/ports/espressif/boards/bpi_leaf_s3/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/bpi_picow_s3/pins.c b/ports/espressif/boards/bpi_picow_s3/pins.c index 5e25d760a7b9..8a7f8af12946 100644 --- a/ports/espressif/boards/bpi_picow_s3/pins.c +++ b/ports/espressif/boards/bpi_picow_s3/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO43) }, diff --git a/ports/espressif/boards/brainboardz_neuron/pins.c b/ports/espressif/boards/brainboardz_neuron/pins.c index e7490397ee0f..5b8ad1f2a9f9 100755 --- a/ports/espressif/boards/brainboardz_neuron/pins.c +++ b/ports/espressif/boards/brainboardz_neuron/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/columbia-dsl-sensor/pins.c b/ports/espressif/boards/columbia-dsl-sensor/pins.c index 4a9f3811ce66..ed09416a78a1 100644 --- a/ports/espressif/boards/columbia-dsl-sensor/pins.c +++ b/ports/espressif/boards/columbia-dsl-sensor/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/crcibernetica-ideaboard/pins.c b/ports/espressif/boards/crcibernetica-ideaboard/pins.c index a07312181f47..380f6c5e95f7 100644 --- a/ports/espressif/boards/crcibernetica-ideaboard/pins.c +++ b/ports/espressif/boards/crcibernetica-ideaboard/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/crumpspace_crumps2/pins.c b/ports/espressif/boards/crumpspace_crumps2/pins.c index 8523d872546d..809f58a79724 100644 --- a/ports/espressif/boards/crumpspace_crumps2/pins.c +++ b/ports/espressif/boards/crumpspace_crumps2/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/cytron_maker_feather_aiot_s3/pins.c b/ports/espressif/boards/cytron_maker_feather_aiot_s3/pins.c index e479cd73e53b..69441fdd1db8 100644 --- a/ports/espressif/boards/cytron_maker_feather_aiot_s3/pins.c +++ b/ports/espressif/boards/cytron_maker_feather_aiot_s3/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BOOT), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/deneyap_kart/pins.c b/ports/espressif/boards/deneyap_kart/pins.c index 77bb28819227..338056d1e6ab 100644 --- a/ports/espressif/boards/deneyap_kart/pins.c +++ b/ports/espressif/boards/deneyap_kart/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // External pins are in silkscreen order, from top to bottom, right side, then left side diff --git a/ports/espressif/boards/deneyap_kart_1a/pins.c b/ports/espressif/boards/deneyap_kart_1a/pins.c index c01dcb9dde60..edac9958e818 100644 --- a/ports/espressif/boards/deneyap_kart_1a/pins.c +++ b/ports/espressif/boards/deneyap_kart_1a/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // External pins are in silkscreen order, from top to bottom, right side, then left side diff --git a/ports/espressif/boards/deneyap_kart_1a_v2/pins.c b/ports/espressif/boards/deneyap_kart_1a_v2/pins.c index 860e19292428..7d4d1a801ab4 100644 --- a/ports/espressif/boards/deneyap_kart_1a_v2/pins.c +++ b/ports/espressif/boards/deneyap_kart_1a_v2/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/deneyap_kart_g/pins.c b/ports/espressif/boards/deneyap_kart_g/pins.c index d3f8877c3e07..0fb41ad1cc20 100644 --- a/ports/espressif/boards/deneyap_kart_g/pins.c +++ b/ports/espressif/boards/deneyap_kart_g/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO20) }, diff --git a/ports/espressif/boards/deneyap_mini/pins.c b/ports/espressif/boards/deneyap_mini/pins.c index a05ccfdab20a..4e720400843a 100644 --- a/ports/espressif/boards/deneyap_mini/pins.c +++ b/ports/espressif/boards/deneyap_mini/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO44) }, diff --git a/ports/espressif/boards/deneyap_mini_v2/pins.c b/ports/espressif/boards/deneyap_mini_v2/pins.c index b2fd066f4461..95c4fa50e530 100644 --- a/ports/espressif/boards/deneyap_mini_v2/pins.c +++ b/ports/espressif/boards/deneyap_mini_v2/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO44) }, diff --git a/ports/espressif/boards/doit_esp32_devkit_v1/pins.c b/ports/espressif/boards/doit_esp32_devkit_v1/pins.c index 04fa5766450f..19affa7c732f 100644 --- a/ports/espressif/boards/doit_esp32_devkit_v1/pins.c +++ b/ports/espressif/boards/doit_esp32_devkit_v1/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // External pins are in silkscreen order, from top to bottom, left side diff --git a/ports/espressif/boards/electroniccats_bastwifi/pins.c b/ports/espressif/boards/electroniccats_bastwifi/pins.c index 9ae589cf0c39..7884c2831b71 100644 --- a/ports/espressif/boards/electroniccats_bastwifi/pins.c +++ b/ports/espressif/boards/electroniccats_bastwifi/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/es3ink/pins.c b/ports/espressif/boards/es3ink/pins.c index 1d3f279853af..60127e0ac3c7 100644 --- a/ports/espressif/boards/es3ink/pins.c +++ b/ports/espressif/boards/es3ink/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/pins.c b/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/pins.c index 4d6f45d4bedd..7c5ac13e15e1 100644 --- a/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/pins.c +++ b/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // External pins are in silkscreen order, from top to bottom, left side, then right side diff --git a/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/pins.c b/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/pins.c index c867e474800f..49c704454918 100644 --- a/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/pins.c +++ b/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // External pins are in silkscreen order, from top to bottom, left side, then right side diff --git a/ports/espressif/boards/espressif_esp32_eye/pins.c b/ports/espressif/boards/espressif_esp32_eye/pins.c index 5871f0a941f6..6d1e45541799 100644 --- a/ports/espressif/boards/espressif_esp32_eye/pins.c +++ b/ports/espressif/boards/espressif_esp32_eye/pins.c @@ -7,7 +7,7 @@ #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_obj_tuple_t camera_data_tuple = { +static const mp_rom_obj_tuple_t camera_data_tuple = { {&mp_type_tuple}, 8, { @@ -22,7 +22,7 @@ STATIC const mp_rom_obj_tuple_t camera_data_tuple = { } }; -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_I2S_SCK), MP_ROM_PTR(&pin_GPIO26) }, diff --git a/ports/espressif/boards/espressif_esp32_lyrat/pins.c b/ports/espressif/boards/espressif_esp32_lyrat/pins.c index dccf1d99d324..20defb0b6e39 100644 --- a/ports/espressif/boards/espressif_esp32_lyrat/pins.c +++ b/ports/espressif/boards/espressif_esp32_lyrat/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // External pins are in silkscreen order, from top to bottom, left side, then right side diff --git a/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/pins.c b/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/pins.c index 99446214074f..2956db92a874 100644 --- a/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/pins.c +++ b/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/pins.c b/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/pins.c index 00b294ccc57c..53689f9177f9 100644 --- a/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/pins.c +++ b/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/pins.c b/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/pins.c index 99446214074f..2956db92a874 100644 --- a/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/pins.c +++ b/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/pins.c b/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/pins.c index 933e0fa5e072..34aa40f599f5 100644 --- a/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/pins.c +++ b/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/pins.c b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/pins.c index fef4e99ffc60..1f386ccbb224 100644 --- a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/pins.c +++ b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/pins.c b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/pins.c index fef4e99ffc60..1f386ccbb224 100644 --- a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/pins.c +++ b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/pins.c b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/pins.c index fef4e99ffc60..1f386ccbb224 100644 --- a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/pins.c +++ b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/espressif_esp32s3_box/pins.c b/ports/espressif/boards/espressif_esp32s3_box/pins.c index 477956c503e3..a2c6651087f5 100644 --- a/ports/espressif/boards/espressif_esp32s3_box/pins.c +++ b/ports/espressif/boards/espressif_esp32s3_box/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // First PMOD connector diff --git a/ports/espressif/boards/espressif_esp32s3_box_lite/pins.c b/ports/espressif/boards/espressif_esp32s3_box_lite/pins.c index 477956c503e3..a2c6651087f5 100644 --- a/ports/espressif/boards/espressif_esp32s3_box_lite/pins.c +++ b/ports/espressif/boards/espressif_esp32s3_box_lite/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // First PMOD connector diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/pins.c b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/pins.c index 0ab3e57cbc57..3bb64f434d02 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/pins.c +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/pins.c b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/pins.c index 0ab3e57cbc57..3bb64f434d02 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/pins.c +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/pins.c b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/pins.c index 0ab3e57cbc57..3bb64f434d02 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/pins.c +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/pins.c b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/pins.c index 0ab3e57cbc57..3bb64f434d02 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/pins.c +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8_hacktablet/pins.c b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8_hacktablet/pins.c index 5ded13d1a098..ca2439e1d40a 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8_hacktablet/pins.c +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8_hacktablet/pins.c @@ -8,7 +8,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_obj_tuple_t tft_r_pins = { +static const mp_rom_obj_tuple_t tft_r_pins = { {&mp_type_tuple}, 5, { @@ -20,7 +20,7 @@ STATIC const mp_rom_obj_tuple_t tft_r_pins = { } }; -STATIC const mp_rom_obj_tuple_t tft_g_pins = { +static const mp_rom_obj_tuple_t tft_g_pins = { {&mp_type_tuple}, 6, { @@ -33,7 +33,7 @@ STATIC const mp_rom_obj_tuple_t tft_g_pins = { } }; -STATIC const mp_rom_obj_tuple_t tft_b_pins = { +static const mp_rom_obj_tuple_t tft_b_pins = { {&mp_type_tuple}, 5, { @@ -45,7 +45,7 @@ STATIC const mp_rom_obj_tuple_t tft_b_pins = { } }; -STATIC const mp_rom_map_elem_t tft_table[] = { +static const mp_rom_map_elem_t tft_table[] = { { MP_ROM_QSTR(MP_QSTR_de), MP_ROM_PTR(&pin_GPIO45) }, { MP_ROM_QSTR(MP_QSTR_vsync), MP_ROM_PTR(&pin_GPIO48) }, { MP_ROM_QSTR(MP_QSTR_hsync), MP_ROM_PTR(&pin_GPIO47) }, @@ -56,7 +56,7 @@ STATIC const mp_rom_map_elem_t tft_table[] = { }; MP_DEFINE_CONST_DICT(tft_dict, tft_table); -STATIC const mp_rom_map_elem_t timings800_table[] = { +static const mp_rom_map_elem_t timings800_table[] = { { MP_ROM_QSTR(MP_QSTR_frequency), MP_ROM_INT(6500000) }, // nominal 16MHz, but display is unstable/tears at that frequency { MP_ROM_QSTR(MP_QSTR_width), MP_ROM_INT(800) }, { MP_ROM_QSTR(MP_QSTR_height), MP_ROM_INT(480) }, @@ -75,7 +75,7 @@ STATIC const mp_rom_map_elem_t timings800_table[] = { MP_DEFINE_CONST_DICT(timings800_dict, timings800_table); -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_TFT_PINS), MP_ROM_PTR(&tft_dict) }, diff --git a/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/pins.c b/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/pins.c index bad7079457df..0a30b6614a1d 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/pins.c +++ b/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/espressif_esp32s3_eye/pins.c b/ports/espressif/boards/espressif_esp32s3_eye/pins.c index cff9827ef567..d756886f9917 100644 --- a/ports/espressif/boards/espressif_esp32s3_eye/pins.c +++ b/ports/espressif/boards/espressif_esp32s3_eye/pins.c @@ -8,7 +8,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_obj_tuple_t camera_data_tuple = { +static const mp_rom_obj_tuple_t camera_data_tuple = { {&mp_type_tuple}, 8, { @@ -24,7 +24,7 @@ STATIC const mp_rom_obj_tuple_t camera_data_tuple = { }; -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BOOT), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/espressif_esp32s3_lcd_ev/pins.c b/ports/espressif/boards/espressif_esp32s3_lcd_ev/pins.c index a1469a291ad6..b20fed522e3e 100644 --- a/ports/espressif/boards/espressif_esp32s3_lcd_ev/pins.c +++ b/ports/espressif/boards/espressif_esp32s3_lcd_ev/pins.c @@ -9,7 +9,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t tft_io_expander_table[] = { +static const mp_rom_map_elem_t tft_io_expander_table[] = { { MP_ROM_QSTR(MP_QSTR_i2c_address), MP_ROM_INT(0x20)}, { MP_ROM_QSTR(MP_QSTR_gpio_address), MP_ROM_INT(1)}, { MP_ROM_QSTR(MP_QSTR_gpio_data_len), MP_ROM_INT(1)}, @@ -21,7 +21,7 @@ STATIC const mp_rom_map_elem_t tft_io_expander_table[] = { }; MP_DEFINE_CONST_DICT(tft_io_expander_dict, tft_io_expander_table); -STATIC const mp_rom_obj_tuple_t tft_r_pins = { +static const mp_rom_obj_tuple_t tft_r_pins = { {&mp_type_tuple}, 5, { @@ -33,7 +33,7 @@ STATIC const mp_rom_obj_tuple_t tft_r_pins = { } }; -STATIC const mp_rom_obj_tuple_t tft_g_pins = { +static const mp_rom_obj_tuple_t tft_g_pins = { {&mp_type_tuple}, 6, { @@ -46,7 +46,7 @@ STATIC const mp_rom_obj_tuple_t tft_g_pins = { } }; -STATIC const mp_rom_obj_tuple_t tft_b_pins = { +static const mp_rom_obj_tuple_t tft_b_pins = { {&mp_type_tuple}, 5, { @@ -58,7 +58,7 @@ STATIC const mp_rom_obj_tuple_t tft_b_pins = { } }; -STATIC const mp_rom_map_elem_t tft_pins_table[] = { +static const mp_rom_map_elem_t tft_pins_table[] = { { MP_ROM_QSTR(MP_QSTR_de), MP_ROM_PTR(&pin_GPIO17) }, { MP_ROM_QSTR(MP_QSTR_vsync), MP_ROM_PTR(&pin_GPIO3) }, { MP_ROM_QSTR(MP_QSTR_hsync), MP_ROM_PTR(&pin_GPIO46) }, @@ -69,7 +69,7 @@ STATIC const mp_rom_map_elem_t tft_pins_table[] = { }; MP_DEFINE_CONST_DICT(tft_pins_dict, tft_pins_table); -STATIC const mp_rom_map_elem_t tft_timings_table[] = { +static const mp_rom_map_elem_t tft_timings_table[] = { { MP_ROM_QSTR(MP_QSTR_frequency), MP_ROM_INT(6500000) }, // nominal 16MHz, but display is unstable/tears at that frequency { MP_ROM_QSTR(MP_QSTR_width), MP_ROM_INT(480) }, { MP_ROM_QSTR(MP_QSTR_height), MP_ROM_INT(480) }, @@ -87,7 +87,7 @@ STATIC const mp_rom_map_elem_t tft_timings_table[] = { }; MP_DEFINE_CONST_DICT(tft_timings_dict, tft_timings_table); -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_TFT_PINS), MP_ROM_PTR(&tft_pins_dict) }, diff --git a/ports/espressif/boards/espressif_esp32s3_usb_otg_n8/pins.c b/ports/espressif/boards/espressif_esp32s3_usb_otg_n8/pins.c index 9cbc3ee3abe3..0713000b6ff6 100644 --- a/ports/espressif/boards/espressif_esp32s3_usb_otg_n8/pins.c +++ b/ports/espressif/boards/espressif_esp32s3_usb_otg_n8/pins.c @@ -11,7 +11,7 @@ // Pin names from: // https://espressif-docs.readthedocs-hosted.com/projects/espressif-esp-dev-kits/en/latest/esp32s3/esp32-s3-usb-otg/user_guide.html#pin-layout -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_USB_SEL), MP_ROM_PTR(&pin_GPIO18) }, diff --git a/ports/espressif/boards/espressif_hmi_devkit_1/pins.c b/ports/espressif/boards/espressif_hmi_devkit_1/pins.c index e29129bc74af..339ec60b8def 100644 --- a/ports/espressif/boards/espressif_hmi_devkit_1/pins.c +++ b/ports/espressif/boards/espressif_hmi_devkit_1/pins.c @@ -7,7 +7,7 @@ #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_obj_tuple_t lcd_data_tuple = { +static const mp_rom_obj_tuple_t lcd_data_tuple = { {&mp_type_tuple}, 16, { @@ -30,7 +30,7 @@ STATIC const mp_rom_obj_tuple_t lcd_data_tuple = { } }; -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/espressif_kaluga_1.3/pins.c b/ports/espressif/boards/espressif_kaluga_1.3/pins.c index a48f11402e85..993ba3c4f5a2 100644 --- a/ports/espressif/boards/espressif_kaluga_1.3/pins.c +++ b/ports/espressif/boards/espressif_kaluga_1.3/pins.c @@ -7,7 +7,7 @@ #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_obj_tuple_t camera_data_tuple = { +static const mp_rom_obj_tuple_t camera_data_tuple = { {&mp_type_tuple}, 8, { @@ -22,7 +22,7 @@ STATIC const mp_rom_obj_tuple_t camera_data_tuple = { } }; -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/espressif_kaluga_1/pins.c b/ports/espressif/boards/espressif_kaluga_1/pins.c index 98be2b4d291d..dd2f9e9de84a 100644 --- a/ports/espressif/boards/espressif_kaluga_1/pins.c +++ b/ports/espressif/boards/espressif_kaluga_1/pins.c @@ -7,7 +7,7 @@ #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_obj_tuple_t camera_data_tuple = { +static const mp_rom_obj_tuple_t camera_data_tuple = { {&mp_type_tuple}, 8, { @@ -22,7 +22,7 @@ STATIC const mp_rom_obj_tuple_t camera_data_tuple = { } }; -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/espressif_saola_1_wroom/pins.c b/ports/espressif/boards/espressif_saola_1_wroom/pins.c index 272ad8b3c95f..1ace83376358 100644 --- a/ports/espressif/boards/espressif_saola_1_wroom/pins.c +++ b/ports/espressif/boards/espressif_saola_1_wroom/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/espressif_saola_1_wrover/pins.c b/ports/espressif/boards/espressif_saola_1_wrover/pins.c index 272ad8b3c95f..1ace83376358 100644 --- a/ports/espressif/boards/espressif_saola_1_wrover/pins.c +++ b/ports/espressif/boards/espressif_saola_1_wrover/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/firebeetle2_esp32s3/pins.c b/ports/espressif/boards/firebeetle2_esp32s3/pins.c index 6ae7611d6160..b611924a8983 100644 --- a/ports/espressif/boards/firebeetle2_esp32s3/pins.c +++ b/ports/espressif/boards/firebeetle2_esp32s3/pins.c @@ -8,7 +8,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_obj_tuple_t camera_data_tuple = { +static const mp_rom_obj_tuple_t camera_data_tuple = { // The order matters. // They must be ordered from low to high (Y2, Y3 .. Y9). @@ -28,7 +28,7 @@ STATIC const mp_rom_obj_tuple_t camera_data_tuple = { }; -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // Left header, module facing down. diff --git a/ports/espressif/boards/flipperzero_wifi_dev/pins.c b/ports/espressif/boards/flipperzero_wifi_dev/pins.c index edb43953e513..68520bac73e6 100644 --- a/ports/espressif/boards/flipperzero_wifi_dev/pins.c +++ b/ports/espressif/boards/flipperzero_wifi_dev/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/franzininho_wifi_wroom/pins.c b/ports/espressif/boards/franzininho_wifi_wroom/pins.c index 272ad8b3c95f..1ace83376358 100644 --- a/ports/espressif/boards/franzininho_wifi_wroom/pins.c +++ b/ports/espressif/boards/franzininho_wifi_wroom/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/franzininho_wifi_wrover/pins.c b/ports/espressif/boards/franzininho_wifi_wrover/pins.c index 272ad8b3c95f..1ace83376358 100644 --- a/ports/espressif/boards/franzininho_wifi_wrover/pins.c +++ b/ports/espressif/boards/franzininho_wifi_wrover/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/gravitech_cucumber_m/pins.c b/ports/espressif/boards/gravitech_cucumber_m/pins.c index 96d99fd3b808..742fa545a0c3 100644 --- a/ports/espressif/boards/gravitech_cucumber_m/pins.c +++ b/ports/espressif/boards/gravitech_cucumber_m/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/gravitech_cucumber_ms/pins.c b/ports/espressif/boards/gravitech_cucumber_ms/pins.c index f1bfc0dc4ee4..1d11ede8918a 100644 --- a/ports/espressif/boards/gravitech_cucumber_ms/pins.c +++ b/ports/espressif/boards/gravitech_cucumber_ms/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/gravitech_cucumber_r/pins.c b/ports/espressif/boards/gravitech_cucumber_r/pins.c index 96d99fd3b808..742fa545a0c3 100644 --- a/ports/espressif/boards/gravitech_cucumber_r/pins.c +++ b/ports/espressif/boards/gravitech_cucumber_r/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/gravitech_cucumber_rs/pins.c b/ports/espressif/boards/gravitech_cucumber_rs/pins.c index f1bfc0dc4ee4..1d11ede8918a 100644 --- a/ports/espressif/boards/gravitech_cucumber_rs/pins.c +++ b/ports/espressif/boards/gravitech_cucumber_rs/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/hardkernel_odroid_go/pins.c b/ports/espressif/boards/hardkernel_odroid_go/pins.c index de80fe22f999..bfb893af9c2c 100644 --- a/ports/espressif/boards/hardkernel_odroid_go/pins.c +++ b/ports/espressif/boards/hardkernel_odroid_go/pins.c @@ -10,7 +10,7 @@ // Pin names from: https://wiki.odroid.com/odroid_go/odroid_go -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // Left side diff --git a/ports/espressif/boards/heltec_esp32s3_wifi_lora_v3/pins.c b/ports/espressif/boards/heltec_esp32s3_wifi_lora_v3/pins.c index 2833ca06032a..fd0fdaba6ecc 100644 --- a/ports/espressif/boards/heltec_esp32s3_wifi_lora_v3/pins.c +++ b/ports/espressif/boards/heltec_esp32s3_wifi_lora_v3/pins.c @@ -8,7 +8,7 @@ #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/hexky_s2/pins.c b/ports/espressif/boards/hexky_s2/pins.c index 13c979e29298..e340a645f6a5 100644 --- a/ports/espressif/boards/hexky_s2/pins.c +++ b/ports/espressif/boards/hexky_s2/pins.c @@ -8,7 +8,7 @@ #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // ANALOG PINS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO1) }, diff --git a/ports/espressif/boards/hiibot_iots2/pins.c b/ports/espressif/boards/hiibot_iots2/pins.c index c011f056edd9..c1203abdb315 100644 --- a/ports/espressif/boards/hiibot_iots2/pins.c +++ b/ports/espressif/boards/hiibot_iots2/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_global_dict_table[] = { +static const mp_rom_map_elem_t board_global_dict_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/lilygo_tdeck/pins.c b/ports/espressif/boards/lilygo_tdeck/pins.c index 50c368dd6f23..256c1453149f 100644 --- a/ports/espressif/boards/lilygo_tdeck/pins.c +++ b/ports/espressif/boards/lilygo_tdeck/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/lilygo_tdisplay_s3/pins.c b/ports/espressif/boards/lilygo_tdisplay_s3/pins.c index 04530b4c9a1f..55df1e6988c3 100644 --- a/ports/espressif/boards/lilygo_tdisplay_s3/pins.c +++ b/ports/espressif/boards/lilygo_tdisplay_s3/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BUTTON0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/lilygo_tembed_esp32s3/pins.c b/ports/espressif/boards/lilygo_tembed_esp32s3/pins.c index 414a42a358c0..58cf8a71e27a 100644 --- a/ports/espressif/boards/lilygo_tembed_esp32s3/pins.c +++ b/ports/espressif/boards/lilygo_tembed_esp32s3/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/lilygo_ttgo_t-01c3/pins.c b/ports/espressif/boards/lilygo_ttgo_t-01c3/pins.c index af37ae12ab58..85037490ce2c 100644 --- a/ports/espressif/boards/lilygo_ttgo_t-01c3/pins.c +++ b/ports/espressif/boards/lilygo_ttgo_t-01c3/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO2), MP_ROM_PTR(&pin_GPIO2) }, diff --git a/ports/espressif/boards/lilygo_ttgo_t-oi-plus/pins.c b/ports/espressif/boards/lilygo_ttgo_t-oi-plus/pins.c index 6149a862bc94..5941337ccbdc 100644 --- a/ports/espressif/boards/lilygo_ttgo_t-oi-plus/pins.c +++ b/ports/espressif/boards/lilygo_ttgo_t-oi-plus/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO2), MP_ROM_PTR(&pin_GPIO2) }, { MP_ROM_QSTR(MP_QSTR_BATTERY), MP_ROM_PTR(&pin_GPIO2) }, diff --git a/ports/espressif/boards/lilygo_ttgo_t8_esp32_s2_wroom/pins.c b/ports/espressif/boards/lilygo_ttgo_t8_esp32_s2_wroom/pins.c index 3b48b4000252..4bf9d604fefa 100644 --- a/ports/espressif/boards/lilygo_ttgo_t8_esp32_s2_wroom/pins.c +++ b/ports/espressif/boards/lilygo_ttgo_t8_esp32_s2_wroom/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/lilygo_ttgo_t8_s2/pins.c b/ports/espressif/boards/lilygo_ttgo_t8_s2/pins.c index f3daa6fa4ea2..13cbaba7f1a4 100644 --- a/ports/espressif/boards/lilygo_ttgo_t8_s2/pins.c +++ b/ports/espressif/boards/lilygo_ttgo_t8_s2/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/pins.c b/ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/pins.c index 36ebf6325b0e..8e11cd070fac 100644 --- a/ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/pins.c +++ b/ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_16m/pins.c b/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_16m/pins.c index cc9c7240f55c..199b675fe5d7 100644 --- a/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_16m/pins.c +++ b/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_16m/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BUTTON0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/pins.c b/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/pins.c index 1181147f9212..e241d8480e88 100644 --- a/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/pins.c +++ b/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BUTTON0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/lilygo_twatch_2020_v3/pins.c b/ports/espressif/boards/lilygo_twatch_2020_v3/pins.c index c3dc1e137af2..9942a9e3f31c 100644 --- a/ports/espressif/boards/lilygo_twatch_2020_v3/pins.c +++ b/ports/espressif/boards/lilygo_twatch_2020_v3/pins.c @@ -9,7 +9,7 @@ CIRCUITPY_BOARD_BUS_SINGLETON(touch_i2c, i2c, 1) -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // buzz buzz diff --git a/ports/espressif/boards/lolin_c3_mini/pins.c b/ports/espressif/boards/lolin_c3_mini/pins.c index fa9acef968ed..b4661100072f 100644 --- a/ports/espressif/boards/lolin_c3_mini/pins.c +++ b/ports/espressif/boards/lolin_c3_mini/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // C3 Mini Board diff --git a/ports/espressif/boards/lolin_c3_pico/pins.c b/ports/espressif/boards/lolin_c3_pico/pins.c index 687fa443cf77..00fc01a6de86 100644 --- a/ports/espressif/boards/lolin_c3_pico/pins.c +++ b/ports/espressif/boards/lolin_c3_pico/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // C3 Mini Board diff --git a/ports/espressif/boards/lolin_s2_mini/pins.c b/ports/espressif/boards/lolin_s2_mini/pins.c index 066c906b55bc..55057d0db8f6 100644 --- a/ports/espressif/boards/lolin_s2_mini/pins.c +++ b/ports/espressif/boards/lolin_s2_mini/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // S2 Mini Board bottom, right, top-bottom diff --git a/ports/espressif/boards/lolin_s2_pico/pins.c b/ports/espressif/boards/lolin_s2_pico/pins.c index 61e8ac49e5f8..b182639d5658 100644 --- a/ports/espressif/boards/lolin_s2_pico/pins.c +++ b/ports/espressif/boards/lolin_s2_pico/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // Not broken out - Button diff --git a/ports/espressif/boards/lolin_s3/pins.c b/ports/espressif/boards/lolin_s3/pins.c index 155b1970118b..a256c5f79b18 100644 --- a/ports/espressif/boards/lolin_s3/pins.c +++ b/ports/espressif/boards/lolin_s3/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/lolin_s3_mini/pins.c b/ports/espressif/boards/lolin_s3_mini/pins.c index 3d3cca2cc7a6..a4f8f4e2e104 100644 --- a/ports/espressif/boards/lolin_s3_mini/pins.c +++ b/ports/espressif/boards/lolin_s3_mini/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/lolin_s3_pro/pins.c b/ports/espressif/boards/lolin_s3_pro/pins.c index 61546d5bf12a..7c56ae4da52f 100644 --- a/ports/espressif/boards/lolin_s3_pro/pins.c +++ b/ports/espressif/boards/lolin_s3_pro/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/luatos_core_esp32c3/pins.c b/ports/espressif/boards/luatos_core_esp32c3/pins.c index d933e8f55c55..d0d82fff085e 100644 --- a/ports/espressif/boards/luatos_core_esp32c3/pins.c +++ b/ports/espressif/boards/luatos_core_esp32c3/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // Luatos Core ESP32-C3 diff --git a/ports/espressif/boards/luatos_core_esp32c3_ch343/pins.c b/ports/espressif/boards/luatos_core_esp32c3_ch343/pins.c index d933e8f55c55..d0d82fff085e 100644 --- a/ports/espressif/boards/luatos_core_esp32c3_ch343/pins.c +++ b/ports/espressif/boards/luatos_core_esp32c3_ch343/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // Luatos Core ESP32-C3 diff --git a/ports/espressif/boards/m5stack_atom_echo/pins.c b/ports/espressif/boards/m5stack_atom_echo/pins.c index 54115bf17298..3a78c5ead72c 100644 --- a/ports/espressif/boards/m5stack_atom_echo/pins.c +++ b/ports/espressif/boards/m5stack_atom_echo/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // External pins are in silkscreen order, from top to bottom, left side, then right side diff --git a/ports/espressif/boards/m5stack_atom_lite/pins.c b/ports/espressif/boards/m5stack_atom_lite/pins.c index e0b26d97e8ec..4afb92f3bceb 100644 --- a/ports/espressif/boards/m5stack_atom_lite/pins.c +++ b/ports/espressif/boards/m5stack_atom_lite/pins.c @@ -9,7 +9,7 @@ CIRCUITPY_BOARD_BUS_SINGLETON(porta_i2c, i2c, 1) -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // External pins are in silkscreen order, from top to bottom, left side, then right side diff --git a/ports/espressif/boards/m5stack_atom_matrix/pins.c b/ports/espressif/boards/m5stack_atom_matrix/pins.c index 4868976d4182..f1d62abee108 100644 --- a/ports/espressif/boards/m5stack_atom_matrix/pins.c +++ b/ports/espressif/boards/m5stack_atom_matrix/pins.c @@ -9,7 +9,7 @@ CIRCUITPY_BOARD_BUS_SINGLETON(porta_i2c, i2c, 1) -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // External pins are in silkscreen order, from top to bottom, left side, then right side diff --git a/ports/espressif/boards/m5stack_atom_u/pins.c b/ports/espressif/boards/m5stack_atom_u/pins.c index 9cc7e80e0c50..e0d2a251bbbd 100644 --- a/ports/espressif/boards/m5stack_atom_u/pins.c +++ b/ports/espressif/boards/m5stack_atom_u/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // External pins are in silkscreen order, from top to bottom, left side, then right side diff --git a/ports/espressif/boards/m5stack_atoms3/pins.c b/ports/espressif/boards/m5stack_atoms3/pins.c index db5dec3e18d2..e369ffffd3d8 100644 --- a/ports/espressif/boards/m5stack_atoms3/pins.c +++ b/ports/espressif/boards/m5stack_atoms3/pins.c @@ -9,7 +9,7 @@ CIRCUITPY_BOARD_BUS_SINGLETON(porta_i2c, i2c, 1) -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_PORTA_SCL), MP_ROM_PTR(&pin_GPIO1) }, diff --git a/ports/espressif/boards/m5stack_atoms3_lite/pins.c b/ports/espressif/boards/m5stack_atoms3_lite/pins.c index c533de59c730..24274539306c 100644 --- a/ports/espressif/boards/m5stack_atoms3_lite/pins.c +++ b/ports/espressif/boards/m5stack_atoms3_lite/pins.c @@ -8,7 +8,7 @@ CIRCUITPY_BOARD_BUS_SINGLETON(porta_i2c, i2c, 1) -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_PORTA_SCL), MP_ROM_PTR(&pin_GPIO1) }, diff --git a/ports/espressif/boards/m5stack_atoms3u/pins.c b/ports/espressif/boards/m5stack_atoms3u/pins.c index 137b93b1d03e..ad4b16e6d026 100644 --- a/ports/espressif/boards/m5stack_atoms3u/pins.c +++ b/ports/espressif/boards/m5stack_atoms3u/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_PORTA_SCL), MP_ROM_PTR(&pin_GPIO1) }, diff --git a/ports/espressif/boards/m5stack_cardputer/pins.c b/ports/espressif/boards/m5stack_cardputer/pins.c index 52079bfff922..7fff3e11e5e7 100644 --- a/ports/espressif/boards/m5stack_cardputer/pins.c +++ b/ports/espressif/boards/m5stack_cardputer/pins.c @@ -8,7 +8,7 @@ #include "shared-module/displayio/__init__.h" CIRCUITPY_BOARD_BUS_SINGLETON(sd_spi, spi, 1) -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // Port A diff --git a/ports/espressif/boards/m5stack_core2/pins.c b/ports/espressif/boards/m5stack_core2/pins.c index 029e80fce997..5deaba82f4f7 100644 --- a/ports/espressif/boards/m5stack_core2/pins.c +++ b/ports/espressif/boards/m5stack_core2/pins.c @@ -9,7 +9,7 @@ CIRCUITPY_BOARD_BUS_SINGLETON(porta_i2c, i2c, 1) -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // External pins are in silkscreen order, from top to bottom, left side, then right side diff --git a/ports/espressif/boards/m5stack_core_basic/pins.c b/ports/espressif/boards/m5stack_core_basic/pins.c index 1ef887dfde66..c56375242f35 100644 --- a/ports/espressif/boards/m5stack_core_basic/pins.c +++ b/ports/espressif/boards/m5stack_core_basic/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // External pins are in silkscreen order, from top to bottom, left side, then right side diff --git a/ports/espressif/boards/m5stack_core_fire/pins.c b/ports/espressif/boards/m5stack_core_fire/pins.c index e0ae325b516e..700b20c91ec3 100644 --- a/ports/espressif/boards/m5stack_core_fire/pins.c +++ b/ports/espressif/boards/m5stack_core_fire/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // External pins are in silkscreen order, from top to bottom, left side, then right side diff --git a/ports/espressif/boards/m5stack_cores3/pins.c b/ports/espressif/boards/m5stack_cores3/pins.c index 5735f54cf09f..2ebb225277de 100644 --- a/ports/espressif/boards/m5stack_cores3/pins.c +++ b/ports/espressif/boards/m5stack_cores3/pins.c @@ -8,7 +8,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_obj_tuple_t camera_data_tuple = { +static const mp_rom_obj_tuple_t camera_data_tuple = { {&mp_type_tuple}, 8, { @@ -25,7 +25,7 @@ STATIC const mp_rom_obj_tuple_t camera_data_tuple = { CIRCUITPY_BOARD_BUS_SINGLETON(porta_i2c, i2c, 1) -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // M5 Bus (except I2S & PORT B) diff --git a/ports/espressif/boards/m5stack_dial/pins.c b/ports/espressif/boards/m5stack_dial/pins.c index b33486aa3349..27f40064a09b 100644 --- a/ports/espressif/boards/m5stack_dial/pins.c +++ b/ports/espressif/boards/m5stack_dial/pins.c @@ -10,7 +10,7 @@ CIRCUITPY_BOARD_BUS_SINGLETON(porta_i2c, i2c, 1) -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // Port A diff --git a/ports/espressif/boards/m5stack_m5paper/pins.c b/ports/espressif/boards/m5stack_m5paper/pins.c index 8a0d1a6c5d7e..f474a993e185 100644 --- a/ports/espressif/boards/m5stack_m5paper/pins.c +++ b/ports/espressif/boards/m5stack_m5paper/pins.c @@ -9,7 +9,7 @@ CIRCUITPY_BOARD_BUS_SINGLETON(porta_i2c, i2c, 1) -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // Power MAIN diff --git a/ports/espressif/boards/m5stack_stamp_c3/pins.c b/ports/espressif/boards/m5stack_stamp_c3/pins.c index 55d52488f361..e3e38e6e9613 100644 --- a/ports/espressif/boards/m5stack_stamp_c3/pins.c +++ b/ports/espressif/boards/m5stack_stamp_c3/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // port A diff --git a/ports/espressif/boards/m5stack_stick_c/pins.c b/ports/espressif/boards/m5stack_stick_c/pins.c index 55c88fafe7c0..6386004156b8 100644 --- a/ports/espressif/boards/m5stack_stick_c/pins.c +++ b/ports/espressif/boards/m5stack_stick_c/pins.c @@ -9,7 +9,7 @@ CIRCUITPY_BOARD_BUS_SINGLETON(porta_i2c, i2c, 1) -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // External pins are in silkscreen order, from top to bottom, left side, then right side diff --git a/ports/espressif/boards/m5stack_stick_c_plus/pins.c b/ports/espressif/boards/m5stack_stick_c_plus/pins.c index af3f2eb531c5..53fd6a731cfa 100644 --- a/ports/espressif/boards/m5stack_stick_c_plus/pins.c +++ b/ports/espressif/boards/m5stack_stick_c_plus/pins.c @@ -9,7 +9,7 @@ CIRCUITPY_BOARD_BUS_SINGLETON(porta_i2c, i2c, 1) -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // External pins are in silkscreen order, from top to bottom, left side, then right side diff --git a/ports/espressif/boards/m5stack_timer_camera_x/pins.c b/ports/espressif/boards/m5stack_timer_camera_x/pins.c index ccba5c06abef..44c7ac02a397 100644 --- a/ports/espressif/boards/m5stack_timer_camera_x/pins.c +++ b/ports/espressif/boards/m5stack_timer_camera_x/pins.c @@ -11,7 +11,7 @@ CIRCUITPY_BOARD_BUS_SINGLETON(bm8563_i2c, i2c, 1) // RTC CIRCUITPY_BOARD_BUS_SINGLETON(sscb_i2c, i2c, 2) // Camera sensor -STATIC const mp_rom_obj_tuple_t camera_data_tuple = { +static const mp_rom_obj_tuple_t camera_data_tuple = { // The order matters. // They must be ordered from low to high (Y2, Y3 .. Y9). @@ -30,7 +30,7 @@ STATIC const mp_rom_obj_tuple_t camera_data_tuple = { } }; -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO2) }, diff --git a/ports/espressif/boards/magiclick_s3_n4r2/pins.c b/ports/espressif/boards/magiclick_s3_n4r2/pins.c index 3628dd949861..38fa2f897335 100644 --- a/ports/espressif/boards/magiclick_s3_n4r2/pins.c +++ b/ports/espressif/boards/magiclick_s3_n4r2/pins.c @@ -5,7 +5,7 @@ // SPDX-License-Identifier: MIT #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, { MP_ROM_QSTR(MP_QSTR_IO1), MP_ROM_PTR(&pin_GPIO1) }, diff --git a/ports/espressif/boards/maker_badge/pins.c b/ports/espressif/boards/maker_badge/pins.c index d0dfd057baac..7b9be5b07c47 100644 --- a/ports/espressif/boards/maker_badge/pins.c +++ b/ports/espressif/boards/maker_badge/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/makerfabs_tft7/pins.c b/ports/espressif/boards/makerfabs_tft7/pins.c index 0d4ade4aa78e..9f9730c94239 100644 --- a/ports/espressif/boards/makerfabs_tft7/pins.c +++ b/ports/espressif/boards/makerfabs_tft7/pins.c @@ -7,7 +7,7 @@ #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_obj_tuple_t tft_r_pins = { +static const mp_rom_obj_tuple_t tft_r_pins = { {&mp_type_tuple}, 5, { @@ -19,7 +19,7 @@ STATIC const mp_rom_obj_tuple_t tft_r_pins = { } }; -STATIC const mp_rom_obj_tuple_t tft_g_pins = { +static const mp_rom_obj_tuple_t tft_g_pins = { {&mp_type_tuple}, 6, { @@ -32,7 +32,7 @@ STATIC const mp_rom_obj_tuple_t tft_g_pins = { } }; -STATIC const mp_rom_obj_tuple_t tft_b_pins = { +static const mp_rom_obj_tuple_t tft_b_pins = { {&mp_type_tuple}, 5, { @@ -44,7 +44,7 @@ STATIC const mp_rom_obj_tuple_t tft_b_pins = { } }; -STATIC const mp_rom_map_elem_t tft_pins_table[] = { +static const mp_rom_map_elem_t tft_pins_table[] = { { MP_ROM_QSTR(MP_QSTR_de), MP_ROM_PTR(&pin_GPIO40) }, { MP_ROM_QSTR(MP_QSTR_vsync), MP_ROM_PTR(&pin_GPIO41) }, { MP_ROM_QSTR(MP_QSTR_hsync), MP_ROM_PTR(&pin_GPIO39) }, @@ -55,7 +55,7 @@ STATIC const mp_rom_map_elem_t tft_pins_table[] = { }; MP_DEFINE_CONST_DICT(tft_pins_dict, tft_pins_table); -STATIC const mp_rom_map_elem_t timings800_table[] = { +static const mp_rom_map_elem_t timings800_table[] = { { MP_ROM_QSTR(MP_QSTR_frequency), MP_ROM_INT(6500000) }, // nominal 16MHz, but display is unstable/tears at that frequency { MP_ROM_QSTR(MP_QSTR_width), MP_ROM_INT(800) }, { MP_ROM_QSTR(MP_QSTR_height), MP_ROM_INT(480) }, @@ -73,7 +73,7 @@ STATIC const mp_rom_map_elem_t timings800_table[] = { }; MP_DEFINE_CONST_DICT(timings800_dict, timings800_table); -STATIC const mp_rom_map_elem_t timings1024_table[] = { +static const mp_rom_map_elem_t timings1024_table[] = { { MP_ROM_QSTR(MP_QSTR_frequency), MP_ROM_INT(10000000) }, // nominal 16MHz, but display is unstable/tears at that frequency { MP_ROM_QSTR(MP_QSTR_width), MP_ROM_INT(1024) }, { MP_ROM_QSTR(MP_QSTR_height), MP_ROM_INT(600) }, @@ -91,7 +91,7 @@ STATIC const mp_rom_map_elem_t timings1024_table[] = { }; MP_DEFINE_CONST_DICT(timings1024_dict, timings1024_table); -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_TFT_PINS), MP_ROM_PTR(&tft_pins_dict) }, diff --git a/ports/espressif/boards/makergo_esp32c3_supermini/pins.c b/ports/espressif/boards/makergo_esp32c3_supermini/pins.c index e858c703ed9d..bc599c313bb2 100644 --- a/ports/espressif/boards/makergo_esp32c3_supermini/pins.c +++ b/ports/espressif/boards/makergo_esp32c3_supermini/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // GPIO diff --git a/ports/espressif/boards/microdev_micro_c3/pins.c b/ports/espressif/boards/microdev_micro_c3/pins.c index 80d691f875ec..75915f184cad 100644 --- a/ports/espressif/boards/microdev_micro_c3/pins.c +++ b/ports/espressif/boards/microdev_micro_c3/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/microdev_micro_s2/pins.c b/ports/espressif/boards/microdev_micro_s2/pins.c index b4c389ccb24a..9fd67575e214 100644 --- a/ports/espressif/boards/microdev_micro_s2/pins.c +++ b/ports/espressif/boards/microdev_micro_s2/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/mixgo_ce_serial/pins.c b/ports/espressif/boards/mixgo_ce_serial/pins.c index 76e77ec44dec..4555a7702601 100644 --- a/ports/espressif/boards/mixgo_ce_serial/pins.c +++ b/ports/espressif/boards/mixgo_ce_serial/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/mixgo_ce_udisk/pins.c b/ports/espressif/boards/mixgo_ce_udisk/pins.c index 76e77ec44dec..4555a7702601 100644 --- a/ports/espressif/boards/mixgo_ce_udisk/pins.c +++ b/ports/espressif/boards/mixgo_ce_udisk/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/morpheans_morphesp-240/pins.c b/ports/espressif/boards/morpheans_morphesp-240/pins.c index 2bfc33067456..cbdccfd32583 100644 --- a/ports/espressif/boards/morpheans_morphesp-240/pins.c +++ b/ports/espressif/boards/morpheans_morphesp-240/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/muselab_nanoesp32_s2_wroom/pins.c b/ports/espressif/boards/muselab_nanoesp32_s2_wroom/pins.c index 272ad8b3c95f..1ace83376358 100644 --- a/ports/espressif/boards/muselab_nanoesp32_s2_wroom/pins.c +++ b/ports/espressif/boards/muselab_nanoesp32_s2_wroom/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/muselab_nanoesp32_s2_wrover/pins.c b/ports/espressif/boards/muselab_nanoesp32_s2_wrover/pins.c index 272ad8b3c95f..1ace83376358 100644 --- a/ports/espressif/boards/muselab_nanoesp32_s2_wrover/pins.c +++ b/ports/espressif/boards/muselab_nanoesp32_s2_wrover/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/odt_pixelwing_esp32_s2/pins.c b/ports/espressif/boards/odt_pixelwing_esp32_s2/pins.c index b4ccf3b067c5..76b2aaf45f1d 100644 --- a/ports/espressif/boards/odt_pixelwing_esp32_s2/pins.c +++ b/ports/espressif/boards/odt_pixelwing_esp32_s2/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO21) }, diff --git a/ports/espressif/boards/oxocard_artwork/pins.c b/ports/espressif/boards/oxocard_artwork/pins.c index f72c4722e451..39036909ef80 100644 --- a/ports/espressif/boards/oxocard_artwork/pins.c +++ b/ports/espressif/boards/oxocard_artwork/pins.c @@ -9,7 +9,7 @@ CIRCUITPY_BOARD_BUS_SINGLETON(stemma_i2c, i2c, 1) -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BTN5), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/oxocard_connect/pins.c b/ports/espressif/boards/oxocard_connect/pins.c index c589f3a2f4a6..dbee3e0c435e 100644 --- a/ports/espressif/boards/oxocard_connect/pins.c +++ b/ports/espressif/boards/oxocard_connect/pins.c @@ -9,7 +9,7 @@ CIRCUITPY_BOARD_BUS_SINGLETON(stemma_i2c, i2c, 1) -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BTN5), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/oxocard_galaxy/pins.c b/ports/espressif/boards/oxocard_galaxy/pins.c index ed26a79a25f1..2aab9629dec6 100644 --- a/ports/espressif/boards/oxocard_galaxy/pins.c +++ b/ports/espressif/boards/oxocard_galaxy/pins.c @@ -9,7 +9,7 @@ CIRCUITPY_BOARD_BUS_SINGLETON(stemma_i2c, i2c, 1) -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BTN5), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/oxocard_science/pins.c b/ports/espressif/boards/oxocard_science/pins.c index 43b5e4392655..b47cdf38d8ea 100644 --- a/ports/espressif/boards/oxocard_science/pins.c +++ b/ports/espressif/boards/oxocard_science/pins.c @@ -9,7 +9,7 @@ CIRCUITPY_BOARD_BUS_SINGLETON(stemma_i2c, i2c, 1) -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BTN5), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/seeed_xiao_esp32c3/pins.c b/ports/espressif/boards/seeed_xiao_esp32c3/pins.c index 11d4d536de00..f274add0c224 100644 --- a/ports/espressif/boards/seeed_xiao_esp32c3/pins.c +++ b/ports/espressif/boards/seeed_xiao_esp32c3/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO2) }, diff --git a/ports/espressif/boards/sensebox_mcu_esp32s2/pins.c b/ports/espressif/boards/sensebox_mcu_esp32s2/pins.c index c2504df4ba8b..0325ae7d7ae7 100644 --- a/ports/espressif/boards/sensebox_mcu_esp32s2/pins.c +++ b/ports/espressif/boards/sensebox_mcu_esp32s2/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/smartbeedesigns_bee_data_logger/pins.c b/ports/espressif/boards/smartbeedesigns_bee_data_logger/pins.c index adf5bc0c2f52..8eefc7fd055f 100644 --- a/ports/espressif/boards/smartbeedesigns_bee_data_logger/pins.c +++ b/ports/espressif/boards/smartbeedesigns_bee_data_logger/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO3), MP_ROM_PTR(&pin_GPIO3) }, diff --git a/ports/espressif/boards/smartbeedesigns_bee_motion_s3/pins.c b/ports/espressif/boards/smartbeedesigns_bee_motion_s3/pins.c index c4371a480a44..0fb9decd87a4 100644 --- a/ports/espressif/boards/smartbeedesigns_bee_motion_s3/pins.c +++ b/ports/espressif/boards/smartbeedesigns_bee_motion_s3/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS diff --git a/ports/espressif/boards/smartbeedesigns_bee_s3/pins.c b/ports/espressif/boards/smartbeedesigns_bee_s3/pins.c index de714028c29c..9f8fde4d7d51 100644 --- a/ports/espressif/boards/smartbeedesigns_bee_s3/pins.c +++ b/ports/espressif/boards/smartbeedesigns_bee_s3/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO3), MP_ROM_PTR(&pin_GPIO3) }, diff --git a/ports/espressif/boards/spotpear_esp32c3_lcd_1_44/pins.c b/ports/espressif/boards/spotpear_esp32c3_lcd_1_44/pins.c index ec65b6fe70e9..a811f9fa7669 100644 --- a/ports/espressif/boards/spotpear_esp32c3_lcd_1_44/pins.c +++ b/ports/espressif/boards/spotpear_esp32c3_lcd_1_44/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // buttons diff --git a/ports/espressif/boards/sqfmi_watchy/pins.c b/ports/espressif/boards/sqfmi_watchy/pins.c index 86583d86cf48..e37ff7d5a1d3 100644 --- a/ports/espressif/boards/sqfmi_watchy/pins.c +++ b/ports/espressif/boards/sqfmi_watchy/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_VBAT), MP_ROM_PTR(&pin_GPIO34) }, diff --git a/ports/espressif/boards/sunton_esp32_2424S012/pins.c b/ports/espressif/boards/sunton_esp32_2424S012/pins.c index 049236512730..8843fbdb7c1d 100644 --- a/ports/espressif/boards/sunton_esp32_2424S012/pins.c +++ b/ports/espressif/boards/sunton_esp32_2424S012/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // User button diff --git a/ports/espressif/boards/sunton_esp32_2432S028/pins.c b/ports/espressif/boards/sunton_esp32_2432S028/pins.c index 25c9b50f0066..b852ab11e04c 100644 --- a/ports/espressif/boards/sunton_esp32_2432S028/pins.c +++ b/ports/espressif/boards/sunton_esp32_2432S028/pins.c @@ -11,7 +11,7 @@ CIRCUITPY_BOARD_BUS_SINGLETON(sd_spi, spi, 0) CIRCUITPY_BOARD_BUS_SINGLETON(touch_spi, spi, 1) CIRCUITPY_BOARD_BUS_SINGLETON(lcd_spi, spi, 2) -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // Boot button diff --git a/ports/espressif/boards/sunton_esp32_8048S070/pins.c b/ports/espressif/boards/sunton_esp32_8048S070/pins.c index 1597b90e3bcd..697eff9b8ef6 100644 --- a/ports/espressif/boards/sunton_esp32_8048S070/pins.c +++ b/ports/espressif/boards/sunton_esp32_8048S070/pins.c @@ -8,7 +8,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_obj_tuple_t tft_r_pins = { +static const mp_rom_obj_tuple_t tft_r_pins = { {&mp_type_tuple}, 5, { @@ -20,7 +20,7 @@ STATIC const mp_rom_obj_tuple_t tft_r_pins = { } }; -STATIC const mp_rom_obj_tuple_t tft_g_pins = { +static const mp_rom_obj_tuple_t tft_g_pins = { {&mp_type_tuple}, 6, { @@ -33,7 +33,7 @@ STATIC const mp_rom_obj_tuple_t tft_g_pins = { } }; -STATIC const mp_rom_obj_tuple_t tft_b_pins = { +static const mp_rom_obj_tuple_t tft_b_pins = { {&mp_type_tuple}, 5, { @@ -45,7 +45,7 @@ STATIC const mp_rom_obj_tuple_t tft_b_pins = { } }; -STATIC const mp_rom_map_elem_t tft_pins_table[] = { +static const mp_rom_map_elem_t tft_pins_table[] = { { MP_ROM_QSTR(MP_QSTR_de), MP_ROM_PTR(&pin_GPIO41) }, { MP_ROM_QSTR(MP_QSTR_vsync), MP_ROM_PTR(&pin_GPIO40) }, { MP_ROM_QSTR(MP_QSTR_hsync), MP_ROM_PTR(&pin_GPIO39) }, @@ -56,7 +56,7 @@ STATIC const mp_rom_map_elem_t tft_pins_table[] = { }; MP_DEFINE_CONST_DICT(tft_pins_dict, tft_pins_table); -STATIC const mp_rom_map_elem_t timings_table[] = { +static const mp_rom_map_elem_t timings_table[] = { { MP_ROM_QSTR(MP_QSTR_frequency), MP_ROM_INT(12500000) }, { MP_ROM_QSTR(MP_QSTR_width), MP_ROM_INT(800) }, { MP_ROM_QSTR(MP_QSTR_height), MP_ROM_INT(480) }, @@ -75,7 +75,7 @@ STATIC const mp_rom_map_elem_t timings_table[] = { }; MP_DEFINE_CONST_DICT(timings_dict, timings_table); -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // Display constructs diff --git a/ports/espressif/boards/targett_module_clip_wroom/pins.c b/ports/espressif/boards/targett_module_clip_wroom/pins.c index e0d12c035ad7..108c40f1636f 100644 --- a/ports/espressif/boards/targett_module_clip_wroom/pins.c +++ b/ports/espressif/boards/targett_module_clip_wroom/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/targett_module_clip_wrover/pins.c b/ports/espressif/boards/targett_module_clip_wrover/pins.c index e0d12c035ad7..108c40f1636f 100644 --- a/ports/espressif/boards/targett_module_clip_wrover/pins.c +++ b/ports/espressif/boards/targett_module_clip_wrover/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/unexpectedmaker_bling/pins.c b/ports/espressif/boards/unexpectedmaker_bling/pins.c index 7de9b5fb5778..ae53c1fae951 100644 --- a/ports/espressif/boards/unexpectedmaker_bling/pins.c +++ b/ports/espressif/boards/unexpectedmaker_bling/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/unexpectedmaker_blizzard_s3/pins.c b/ports/espressif/boards/unexpectedmaker_blizzard_s3/pins.c index d451c77d2bb9..24730cf4fa9e 100644 --- a/ports/espressif/boards/unexpectedmaker_blizzard_s3/pins.c +++ b/ports/espressif/boards/unexpectedmaker_blizzard_s3/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/unexpectedmaker_feathers2/pins.c b/ports/espressif/boards/unexpectedmaker_feathers2/pins.c index 66932c527e27..c0e8f931faf5 100644 --- a/ports/espressif/boards/unexpectedmaker_feathers2/pins.c +++ b/ports/espressif/boards/unexpectedmaker_feathers2/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO18), MP_ROM_PTR(&pin_GPIO18) }, diff --git a/ports/espressif/boards/unexpectedmaker_feathers2_neo/pins.c b/ports/espressif/boards/unexpectedmaker_feathers2_neo/pins.c index 5d004a163eef..37b64938a992 100644 --- a/ports/espressif/boards/unexpectedmaker_feathers2_neo/pins.c +++ b/ports/espressif/boards/unexpectedmaker_feathers2_neo/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/unexpectedmaker_feathers2_prerelease/pins.c b/ports/espressif/boards/unexpectedmaker_feathers2_prerelease/pins.c index bafa643cde69..30281a1e784f 100644 --- a/ports/espressif/boards/unexpectedmaker_feathers2_prerelease/pins.c +++ b/ports/espressif/boards/unexpectedmaker_feathers2_prerelease/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO17), MP_ROM_PTR(&pin_GPIO17) }, diff --git a/ports/espressif/boards/unexpectedmaker_feathers3/pins.c b/ports/espressif/boards/unexpectedmaker_feathers3/pins.c index 17078c078cc2..e611348caa0b 100644 --- a/ports/espressif/boards/unexpectedmaker_feathers3/pins.c +++ b/ports/espressif/boards/unexpectedmaker_feathers3/pins.c @@ -8,7 +8,7 @@ CIRCUITPY_BOARD_BUS_SINGLETON(stemma_i2c, i2c, 1) -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/unexpectedmaker_nanos3/pins.c b/ports/espressif/boards/unexpectedmaker_nanos3/pins.c index 9f7212806163..b144c611b3f4 100644 --- a/ports/espressif/boards/unexpectedmaker_nanos3/pins.c +++ b/ports/espressif/boards/unexpectedmaker_nanos3/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/unexpectedmaker_pros3/pins.c b/ports/espressif/boards/unexpectedmaker_pros3/pins.c index 861e73b28890..60a29af7208f 100644 --- a/ports/espressif/boards/unexpectedmaker_pros3/pins.c +++ b/ports/espressif/boards/unexpectedmaker_pros3/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/unexpectedmaker_tinyc6/pins.c b/ports/espressif/boards/unexpectedmaker_tinyc6/pins.c index 252cea123ac9..0f38eedeb2ed 100644 --- a/ports/espressif/boards/unexpectedmaker_tinyc6/pins.c +++ b/ports/espressif/boards/unexpectedmaker_tinyc6/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/unexpectedmaker_tinypico/pins.c b/ports/espressif/boards/unexpectedmaker_tinypico/pins.c index 5292f2c28ebf..5aa4b4bdad50 100644 --- a/ports/espressif/boards/unexpectedmaker_tinypico/pins.c +++ b/ports/espressif/boards/unexpectedmaker_tinypico/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO4), MP_ROM_PTR(&pin_GPIO4) }, diff --git a/ports/espressif/boards/unexpectedmaker_tinypico_nano/pins.c b/ports/espressif/boards/unexpectedmaker_tinypico_nano/pins.c index aeaa285ba478..32d57398685f 100644 --- a/ports/espressif/boards/unexpectedmaker_tinypico_nano/pins.c +++ b/ports/espressif/boards/unexpectedmaker_tinypico_nano/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/unexpectedmaker_tinys2/pins.c b/ports/espressif/boards/unexpectedmaker_tinys2/pins.c index 12e7c371b3d9..0da1f6ce392a 100644 --- a/ports/espressif/boards/unexpectedmaker_tinys2/pins.c +++ b/ports/espressif/boards/unexpectedmaker_tinys2/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/unexpectedmaker_tinys3/pins.c b/ports/espressif/boards/unexpectedmaker_tinys3/pins.c index 0cc756de6933..23b8b960bf66 100644 --- a/ports/espressif/boards/unexpectedmaker_tinys3/pins.c +++ b/ports/espressif/boards/unexpectedmaker_tinys3/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/unexpectedmaker_tinywatch_s3/pins.c b/ports/espressif/boards/unexpectedmaker_tinywatch_s3/pins.c index 2345fbfb5c02..12a78b253998 100644 --- a/ports/espressif/boards/unexpectedmaker_tinywatch_s3/pins.c +++ b/ports/espressif/boards/unexpectedmaker_tinywatch_s3/pins.c @@ -8,7 +8,7 @@ CIRCUITPY_BOARD_BUS_SINGLETON(touch_i2c, i2c, 1) -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/waveshare_esp32_s2_pico_lcd/pins.c b/ports/espressif/boards/waveshare_esp32_s2_pico_lcd/pins.c index e9b743c45830..6e7b08b2d646 100644 --- a/ports/espressif/boards/waveshare_esp32_s2_pico_lcd/pins.c +++ b/ports/espressif/boards/waveshare_esp32_s2_pico_lcd/pins.c @@ -8,7 +8,7 @@ #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/waveshare_esp32_s3_geek/pins.c b/ports/espressif/boards/waveshare_esp32_s3_geek/pins.c index 83ad1905853d..01c3baf8c9f8 100644 --- a/ports/espressif/boards/waveshare_esp32_s3_geek/pins.c +++ b/ports/espressif/boards/waveshare_esp32_s3_geek/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // Boot button (can also be used as regular button) diff --git a/ports/espressif/boards/waveshare_esp32_s3_lcd_1_28/pins.c b/ports/espressif/boards/waveshare_esp32_s3_lcd_1_28/pins.c index eb59636dedad..51943badf03e 100644 --- a/ports/espressif/boards/waveshare_esp32_s3_lcd_1_28/pins.c +++ b/ports/espressif/boards/waveshare_esp32_s3_lcd_1_28/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // User accessible GPIO diff --git a/ports/espressif/boards/waveshare_esp32_s3_pico/pins.c b/ports/espressif/boards/waveshare_esp32_s3_pico/pins.c index bc563ae3c957..1cf578a1aaab 100644 --- a/ports/espressif/boards/waveshare_esp32_s3_pico/pins.c +++ b/ports/espressif/boards/waveshare_esp32_s3_pico/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/waveshare_esp32_s3_zero/pins.c b/ports/espressif/boards/waveshare_esp32_s3_zero/pins.c index 00159363b868..c4cd4ab82195 100644 --- a/ports/espressif/boards/waveshare_esp32_s3_zero/pins.c +++ b/ports/espressif/boards/waveshare_esp32_s3_zero/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // Top side of the board - left column diff --git a/ports/espressif/boards/waveshare_esp32s2_pico/pins.c b/ports/espressif/boards/waveshare_esp32s2_pico/pins.c index 5542ff468ba9..6d0515c45411 100644 --- a/ports/espressif/boards/waveshare_esp32s2_pico/pins.c +++ b/ports/espressif/boards/waveshare_esp32s2_pico/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/espressif/boards/weact_esp32c6_n4/pins.c b/ports/espressif/boards/weact_esp32c6_n4/pins.c index 7c996e457111..4a890ef7156d 100644 --- a/ports/espressif/boards/weact_esp32c6_n4/pins.c +++ b/ports/espressif/boards/weact_esp32c6_n4/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BOOT), MP_ROM_PTR(&pin_GPIO9) }, diff --git a/ports/espressif/boards/weact_esp32c6_n8/pins.c b/ports/espressif/boards/weact_esp32c6_n8/pins.c index 51161d9aba88..2d53022f3439 100644 --- a/ports/espressif/boards/weact_esp32c6_n8/pins.c +++ b/ports/espressif/boards/weact_esp32c6_n8/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_IO9), MP_ROM_PTR(&pin_GPIO9) }, diff --git a/ports/espressif/boards/wemos_lolin32_lite/pins.c b/ports/espressif/boards/wemos_lolin32_lite/pins.c index d3ebafffec65..f0b82787479a 100644 --- a/ports/espressif/boards/wemos_lolin32_lite/pins.c +++ b/ports/espressif/boards/wemos_lolin32_lite/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // External pins are in silkscreen order, from top to bottom, left side, then right side diff --git a/ports/espressif/boards/yd_esp32_s3_n16r8/pins.c b/ports/espressif/boards/yd_esp32_s3_n16r8/pins.c index 71df308ecd89..eb1e79c1f68d 100644 --- a/ports/espressif/boards/yd_esp32_s3_n16r8/pins.c +++ b/ports/espressif/boards/yd_esp32_s3_n16r8/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // Left header, module facing up. diff --git a/ports/espressif/boards/yd_esp32_s3_n8r8/pins.c b/ports/espressif/boards/yd_esp32_s3_n8r8/pins.c index 71df308ecd89..eb1e79c1f68d 100644 --- a/ports/espressif/boards/yd_esp32_s3_n8r8/pins.c +++ b/ports/espressif/boards/yd_esp32_s3_n8r8/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // Left header, module facing up. diff --git a/ports/espressif/common-hal/_bleio/Adapter.c b/ports/espressif/common-hal/_bleio/Adapter.c index 45a4581fd27c..1120c7b914cf 100644 --- a/ports/espressif/common-hal/_bleio/Adapter.c +++ b/ports/espressif/common-hal/_bleio/Adapter.c @@ -266,14 +266,14 @@ void common_hal_bleio_adapter_stop_scan(bleio_adapter_obj_t *self) { self->scan_results = NULL; } -STATIC void _convert_address(const bleio_address_obj_t *address, ble_addr_t *nimble_address) { +static void _convert_address(const bleio_address_obj_t *address, ble_addr_t *nimble_address) { nimble_address->type = address->type; mp_buffer_info_t address_buf_info; mp_get_buffer_raise(address->bytes, &address_buf_info, MP_BUFFER_READ); memcpy(nimble_address->val, (uint8_t *)address_buf_info.buf, NUM_BLEIO_ADDRESS_BYTES); } -STATIC int _mtu_reply(uint16_t conn_handle, +static int _mtu_reply(uint16_t conn_handle, const struct ble_gatt_error *error, uint16_t mtu, void *arg) { bleio_connection_internal_t *connection = (bleio_connection_internal_t *)arg; @@ -284,7 +284,7 @@ STATIC int _mtu_reply(uint16_t conn_handle, return 0; } -STATIC void _new_connection(uint16_t conn_handle) { +static void _new_connection(uint16_t conn_handle) { // Set the tx_power for the connection higher than the advertisement. esp_ble_tx_power_set(conn_handle, ESP_PWR_LVL_N0); @@ -411,7 +411,7 @@ typedef struct { struct os_mbuf_pkthdr hdr; } os_mbuf_t; -STATIC void _wrap_in_mbuf(const uint8_t *data, uint16_t len, os_mbuf_t *buf) { +static void _wrap_in_mbuf(const uint8_t *data, uint16_t len, os_mbuf_t *buf) { struct os_mbuf *mbuf = &buf->mbuf; mbuf->om_data = (uint8_t *)data, mbuf->om_flags = 0; @@ -585,7 +585,7 @@ uint32_t _common_hal_bleio_adapter_start_advertising(bleio_adapter_obj_t *self, return rc; } -STATIC void check_data_fit(size_t data_len, bool connectable) { +static void check_data_fit(size_t data_len, bool connectable) { if (data_len > MYNEWT_VAL(BLE_EXT_ADV_MAX_SIZE) || (connectable && data_len > MYNEWT_VAL(BLE_EXT_ADV_MAX_SIZE))) { mp_raise_ValueError(MP_ERROR_TEXT("Data too large for advertisement packet")); diff --git a/ports/espressif/common-hal/_bleio/Characteristic.c b/ports/espressif/common-hal/_bleio/Characteristic.c index 7e96cfe05be2..4df80a53d991 100644 --- a/ports/espressif/common-hal/_bleio/Characteristic.c +++ b/ports/espressif/common-hal/_bleio/Characteristic.c @@ -20,7 +20,7 @@ // #include "common-hal/_bleio/bonding.h" -STATIC int characteristic_on_ble_gap_evt(struct ble_gap_event *event, void *param); +static int characteristic_on_ble_gap_evt(struct ble_gap_event *event, void *param); void common_hal_bleio_characteristic_construct(bleio_characteristic_obj_t *self, bleio_service_obj_t *service, uint16_t handle, bleio_uuid_obj_t *uuid, bleio_characteristic_properties_t props, @@ -109,7 +109,7 @@ typedef struct { uint16_t len; } _read_info_t; -STATIC int _read_cb(uint16_t conn_handle, +static int _read_cb(uint16_t conn_handle, const struct ble_gatt_error *error, struct ble_gatt_attr *attr, void *arg) { @@ -164,7 +164,7 @@ size_t common_hal_bleio_characteristic_get_max_length(bleio_characteristic_obj_t return self->max_length; } -STATIC int _write_cb(uint16_t conn_handle, +static int _write_cb(uint16_t conn_handle, const struct ble_gatt_error *error, struct ble_gatt_attr *attr, void *arg) { @@ -223,7 +223,7 @@ void common_hal_bleio_characteristic_set_value(bleio_characteristic_obj_t *self, } // Used when we're the client. -STATIC int characteristic_on_ble_gap_evt(struct ble_gap_event *event, void *param) { +static int characteristic_on_ble_gap_evt(struct ble_gap_event *event, void *param) { bleio_characteristic_obj_t *self = (bleio_characteristic_obj_t *)param; switch (event->type) { case BLE_GAP_EVENT_NOTIFY_RX: { diff --git a/ports/espressif/common-hal/_bleio/Connection.c b/ports/espressif/common-hal/_bleio/Connection.c index 3704ce88b378..be416b2fe02f 100644 --- a/ports/espressif/common-hal/_bleio/Connection.c +++ b/ports/espressif/common-hal/_bleio/Connection.c @@ -134,10 +134,10 @@ void common_hal_bleio_connection_set_connection_interval(bleio_connection_intern // TODO: Implement this. } -STATIC volatile int _last_discovery_status; +static volatile int _last_discovery_status; static TaskHandle_t discovery_task = NULL; -STATIC int _discovered_service_cb(uint16_t conn_handle, +static int _discovered_service_cb(uint16_t conn_handle, const struct ble_gatt_error *error, const struct ble_gatt_svc *svc, void *arg) { @@ -177,7 +177,7 @@ STATIC int _discovered_service_cb(uint16_t conn_handle, return 0; } -STATIC int _discovered_characteristic_cb(uint16_t conn_handle, +static int _discovered_characteristic_cb(uint16_t conn_handle, const struct ble_gatt_error *error, const struct ble_gatt_chr *chr, void *arg) { @@ -231,7 +231,7 @@ STATIC int _discovered_characteristic_cb(uint16_t conn_handle, return 0; } -STATIC int _discovered_descriptor_cb(uint16_t conn_handle, +static int _discovered_descriptor_cb(uint16_t conn_handle, const struct ble_gatt_error *error, uint16_t chr_val_handle, const struct ble_gatt_dsc *dsc, @@ -286,7 +286,7 @@ STATIC int _discovered_descriptor_cb(uint16_t conn_handle, return 0; } -STATIC void discover_remote_services(bleio_connection_internal_t *self, mp_obj_t service_uuids_whitelist) { +static void discover_remote_services(bleio_connection_internal_t *self, mp_obj_t service_uuids_whitelist) { // Start over with an empty list. self->remote_service_list = mp_obj_new_list(0, NULL); diff --git a/ports/espressif/common-hal/_bleio/PacketBuffer.c b/ports/espressif/common-hal/_bleio/PacketBuffer.c index 8cee74f15417..e6886811966d 100644 --- a/ports/espressif/common-hal/_bleio/PacketBuffer.c +++ b/ports/espressif/common-hal/_bleio/PacketBuffer.c @@ -46,10 +46,10 @@ void bleio_packet_buffer_extend(bleio_packet_buffer_obj_t *self, uint16_t conn_h ringbuf_put_n(&self->ringbuf, data, len); } -STATIC int packet_buffer_on_ble_client_evt(struct ble_gap_event *event, void *param); -STATIC int queue_next_write(bleio_packet_buffer_obj_t *self); +static int packet_buffer_on_ble_client_evt(struct ble_gap_event *event, void *param); +static int queue_next_write(bleio_packet_buffer_obj_t *self); -STATIC int _write_cb(uint16_t conn_handle, +static int _write_cb(uint16_t conn_handle, const struct ble_gatt_error *error, struct ble_gatt_attr *attr, void *arg) { @@ -62,7 +62,7 @@ STATIC int _write_cb(uint16_t conn_handle, return 0; } -STATIC int queue_next_write(bleio_packet_buffer_obj_t *self) { +static int queue_next_write(bleio_packet_buffer_obj_t *self) { // Queue up the next outgoing buffer. We use two, one that has been passed to the SD for // transmission (when packet_queued is true) and the other is `pending` and can still be // modified. By primarily appending to the `pending` buffer we can reduce the protocol overhead @@ -125,7 +125,7 @@ STATIC int queue_next_write(bleio_packet_buffer_obj_t *self) { } // This is called from the nimble task. *Not* CircuitPython's. -STATIC int packet_buffer_on_ble_client_evt(struct ble_gap_event *event, void *param) { +static int packet_buffer_on_ble_client_evt(struct ble_gap_event *event, void *param) { bleio_packet_buffer_obj_t *self = (bleio_packet_buffer_obj_t *)param; if (event->type == BLE_GAP_EVENT_DISCONNECT && self->conn_handle == event->disconnect.conn.conn_handle) { self->conn_handle = BLEIO_HANDLE_INVALID; diff --git a/ports/espressif/common-hal/_bleio/bonding.c b/ports/espressif/common-hal/_bleio/bonding.c index 29ada04cceac..a20b609fb133 100644 --- a/ports/espressif/common-hal/_bleio/bonding.c +++ b/ports/espressif/common-hal/_bleio/bonding.c @@ -46,7 +46,7 @@ void bonding_print_keys(bonding_keys_t *keys) { } #endif -STATIC size_t compute_block_size(uint16_t data_length) { +static size_t compute_block_size(uint16_t data_length) { // Round data size up to the nearest 32-bit address. return sizeof(bonding_block_t) + ((data_length + 3) & ~0x3); } @@ -69,7 +69,7 @@ void bonding_erase_storage(void) { // The last block returned is the unused block at the end. // Return NULL if we have run off the end of the bonding space. -STATIC bonding_block_t *next_block(bonding_block_t *block) { +static bonding_block_t *next_block(bonding_block_t *block) { while (1) { // Advance to next block. if (block == NULL) { @@ -97,7 +97,7 @@ STATIC bonding_block_t *next_block(bonding_block_t *block) { // Find the block with given is_central, type and ediv value. // If type == BLOCK_UNUSED, ediv is ignored and the the sole unused block at the end is returned. // If not found, return NULL. -STATIC bonding_block_t *find_existing_block(bool is_central, bonding_block_type_t type, uint16_t ediv) { +static bonding_block_t *find_existing_block(bool is_central, bonding_block_type_t type, uint16_t ediv) { bonding_block_t *block = NULL; while (1) { block = next_block(block); @@ -130,7 +130,7 @@ size_t bonding_peripheral_bond_count(void) { } // Get an empty block large enough to store data_length data. -STATIC bonding_block_t *find_unused_block(uint16_t data_length) { +static bonding_block_t *find_unused_block(uint16_t data_length) { bonding_block_t *unused_block = find_existing_block(true, BLOCK_UNUSED, EDIV_INVALID); // If no more room, erase all existing blocks and start over. if (!unused_block || @@ -143,18 +143,18 @@ STATIC bonding_block_t *find_unused_block(uint16_t data_length) { // Set the header word to all 0's, to mark the block as invalid. // We don't change data_length, so we can still skip over this block. -STATIC void invalidate_block(bonding_block_t *block) { +static void invalidate_block(bonding_block_t *block) { uint32_t zero = 0; sd_flash_write_sync((uint32_t *)block, &zero, 1); } // Write bonding block header. -STATIC void write_block_header(bonding_block_t *dest_block, bonding_block_t *source_block_header) { +static void write_block_header(bonding_block_t *dest_block, bonding_block_t *source_block_header) { sd_flash_write_sync((uint32_t *)dest_block, (uint32_t *)source_block_header, sizeof(bonding_block_t) / 4); } // Write variable-length data at end of bonding block. -STATIC void write_block_data(bonding_block_t *dest_block, uint8_t *data, uint16_t data_length) { +static void write_block_data(bonding_block_t *dest_block, uint8_t *data, uint16_t data_length) { // Minimize the number of writes. Datasheet says no more than two writes per word before erasing again. // Start writing after the current header. @@ -173,7 +173,7 @@ STATIC void write_block_data(bonding_block_t *dest_block, uint8_t *data, uint16_ } } -STATIC void write_sys_attr_block(bleio_connection_internal_t *connection) { +static void write_sys_attr_block(bleio_connection_internal_t *connection) { uint16_t length = 0; // First find out how big a buffer we need, then fetch the data. if (sd_ble_gatts_sys_attr_get(connection->conn_handle, NULL, &length, SYS_ATTR_FLAGS) != NRF_SUCCESS) { @@ -210,7 +210,7 @@ STATIC void write_sys_attr_block(bleio_connection_internal_t *connection) { return; } -STATIC void write_keys_block(bleio_connection_internal_t *connection) { +static void write_keys_block(bleio_connection_internal_t *connection) { uint16_t const ediv = connection->is_central ? connection->bonding_keys.peer_enc.master_id.ediv : connection->bonding_keys.own_enc.master_id.ediv; diff --git a/ports/espressif/common-hal/alarm/__init__.c b/ports/espressif/common-hal/alarm/__init__.c index b0037e961125..d5c4d7625adc 100644 --- a/ports/espressif/common-hal/alarm/__init__.c +++ b/ports/espressif/common-hal/alarm/__init__.c @@ -56,7 +56,7 @@ void alarm_reset(void) { esp_sleep_disable_wakeup_source(ESP_SLEEP_WAKEUP_ALL); } -STATIC esp_sleep_wakeup_cause_t _get_wakeup_cause(bool deep_sleep) { +static esp_sleep_wakeup_cause_t _get_wakeup_cause(bool deep_sleep) { // First check if the modules remember what last woke up if (alarm_pin_pinalarm_woke_this_cycle()) { return ESP_SLEEP_WAKEUP_GPIO; @@ -118,7 +118,7 @@ mp_obj_t common_hal_alarm_record_wake_alarm(void) { } // Set up light sleep or deep sleep alarms. -STATIC void _setup_sleep_alarms(bool deep_sleep, size_t n_alarms, const mp_obj_t *alarms) { +static void _setup_sleep_alarms(bool deep_sleep, size_t n_alarms, const mp_obj_t *alarms) { alarm_pin_pinalarm_set_alarms(deep_sleep, n_alarms, alarms); alarm_time_timealarm_set_alarms(deep_sleep, n_alarms, alarms); alarm_touch_touchalarm_set_alarm(deep_sleep, n_alarms, alarms); diff --git a/ports/espressif/common-hal/alarm/pin/PinAlarm.c b/ports/espressif/common-hal/alarm/pin/PinAlarm.c index bb38edf75d82..302f5afca85f 100644 --- a/ports/espressif/common-hal/alarm/pin/PinAlarm.c +++ b/ports/espressif/common-hal/alarm/pin/PinAlarm.c @@ -52,7 +52,7 @@ gpio_isr_handle_t gpio_interrupt_handle; // Low and high are relative to pin number. 32+ is high. <32 is low. static volatile uint32_t pin_31_0_status = 0; static volatile uint32_t pin_63_32_status = 0; -STATIC void gpio_interrupt(void *arg) { +static void gpio_interrupt(void *arg) { (void)arg; gpio_ll_get_intr_status(&GPIO, xPortGetCoreID(), (uint32_t *)&pin_31_0_status); diff --git a/ports/espressif/common-hal/alarm/time/TimeAlarm.c b/ports/espressif/common-hal/alarm/time/TimeAlarm.c index 8e25b42fd268..e029336b1411 100644 --- a/ports/espressif/common-hal/alarm/time/TimeAlarm.c +++ b/ports/espressif/common-hal/alarm/time/TimeAlarm.c @@ -42,10 +42,10 @@ mp_obj_t alarm_time_timealarm_record_wake_alarm(void) { } esp_timer_handle_t pretend_sleep_timer; -STATIC bool woke_up = false; +static bool woke_up = false; // This is run in the timer task. We use it to wake the main CircuitPython task. -STATIC void timer_callback(void *arg) { +static void timer_callback(void *arg) { (void)arg; woke_up = true; port_wake_main_task(); diff --git a/ports/espressif/common-hal/alarm/touch/TouchAlarm.c b/ports/espressif/common-hal/alarm/touch/TouchAlarm.c index 545041a19cc7..9aaa7b0a7333 100644 --- a/ports/espressif/common-hal/alarm/touch/TouchAlarm.c +++ b/ports/espressif/common-hal/alarm/touch/TouchAlarm.c @@ -65,7 +65,7 @@ mp_obj_t alarm_touch_touchalarm_record_wake_alarm(void) { } // This is used to wake the main CircuitPython task. -STATIC void touch_interrupt(void *arg) { +static void touch_interrupt(void *arg) { (void)arg; woke_up = true; port_wake_main_task_from_isr(); diff --git a/ports/espressif/common-hal/canio/CAN.c b/ports/espressif/common-hal/canio/CAN.c index 72cac7801567..941e454b124b 100644 --- a/ports/espressif/common-hal/canio/CAN.c +++ b/ports/espressif/common-hal/canio/CAN.c @@ -16,9 +16,9 @@ #include "hal/twai_types.h" -STATIC bool reserved_can; +static bool reserved_can; -STATIC twai_timing_config_t get_t_config(int baudrate) { +static twai_timing_config_t get_t_config(int baudrate) { switch (baudrate) { case 1000000: { // TWAI_TIMING_CONFIG_abc expands to a C designated initializer list @@ -196,7 +196,7 @@ static void can_restart(void) { } while (port_get_raw_ticks(NULL) < deadline && (info.state == TWAI_STATE_BUS_OFF || info.state == TWAI_STATE_RECOVERING)); } -STATIC void canio_maybe_auto_restart(canio_can_obj_t *self) { +static void canio_maybe_auto_restart(canio_can_obj_t *self) { if (self->auto_restart) { can_restart(); } diff --git a/ports/espressif/common-hal/canio/Listener.c b/ports/espressif/common-hal/canio/Listener.c index 1b9c4711e64d..22a2e82dca9c 100644 --- a/ports/espressif/common-hal/canio/Listener.c +++ b/ports/espressif/common-hal/canio/Listener.c @@ -29,26 +29,26 @@ #define FILTER16_IDE (1 << 3) #define FILTER32_IDE (1 << 2) -STATIC void install_standard_filter(canio_listener_obj_t *self, canio_match_obj_t *match) { +static void install_standard_filter(canio_listener_obj_t *self, canio_match_obj_t *match) { twai_ll_set_acc_filter(&TWAI, match->id << 21, ~(match->mask << 21), true); self->extended = false; self->standard = true; } -STATIC void install_extended_filter(canio_listener_obj_t *self, canio_match_obj_t *match) { +static void install_extended_filter(canio_listener_obj_t *self, canio_match_obj_t *match) { twai_ll_set_acc_filter(&TWAI, match->id << 3, ~(match->mask << 3), true); self->extended = true; self->standard = false; } -STATIC void install_all_match_filter(canio_listener_obj_t *self) { +static void install_all_match_filter(canio_listener_obj_t *self) { twai_ll_set_acc_filter(&TWAI, 0u, ~0u, true); self->extended = true; self->standard = true; } __attribute__((noinline, optimize("O0"))) -STATIC void set_filters(canio_listener_obj_t *self, size_t nmatch, canio_match_obj_t **matches) { +static void set_filters(canio_listener_obj_t *self, size_t nmatch, canio_match_obj_t **matches) { twai_ll_enter_reset_mode(&TWAI); if (!nmatch) { diff --git a/ports/espressif/common-hal/digitalio/DigitalInOut.c b/ports/espressif/common-hal/digitalio/DigitalInOut.c index 8d700251a776..567f82711a5d 100644 --- a/ports/espressif/common-hal/digitalio/DigitalInOut.c +++ b/ports/espressif/common-hal/digitalio/DigitalInOut.c @@ -11,7 +11,7 @@ #include "components/hal/include/hal/gpio_hal.h" -STATIC bool _pin_is_input(uint8_t pin_number) { +static bool _pin_is_input(uint8_t pin_number) { const uint32_t iomux = READ_PERI_REG(GPIO_PIN_MUX_REG[pin_number]); return (iomux & FUN_IE) != 0; } diff --git a/ports/espressif/common-hal/espulp/ULP.c b/ports/espressif/common-hal/espulp/ULP.c index 435506bec7fa..b7cbf578aef8 100644 --- a/ports/espressif/common-hal/espulp/ULP.c +++ b/ports/espressif/common-hal/espulp/ULP.c @@ -26,8 +26,8 @@ // To-do idf v5.0: remove following include #include "soc/rtc_cntl_reg.h" -STATIC bool ulp_used = false; -STATIC uint32_t pins_used = 0; +static bool ulp_used = false; +static uint32_t pins_used = 0; void espulp_reset(void) { // NOTE: This *doesn't* disable the ULP. It'll keep running even when CircuitPython isn't. diff --git a/ports/espressif/common-hal/espulp/ULPAlarm.c b/ports/espressif/common-hal/espulp/ULPAlarm.c index 4bbd6dfcad28..16cd905ea253 100644 --- a/ports/espressif/common-hal/espulp/ULPAlarm.c +++ b/ports/espressif/common-hal/espulp/ULPAlarm.c @@ -37,7 +37,7 @@ mp_obj_t espulp_ulpalarm_record_wake_alarm(void) { } // This is used to wake the main CircuitPython task. -STATIC void ulp_interrupt(void *arg) { +static void ulp_interrupt(void *arg) { (void)arg; woke_up = true; port_wake_main_task_from_isr(); diff --git a/ports/espressif/common-hal/max3421e/Max3421E.c b/ports/espressif/common-hal/max3421e/Max3421E.c index ba707749f4a9..2e0149b2b46d 100644 --- a/ports/espressif/common-hal/max3421e/Max3421E.c +++ b/ports/espressif/common-hal/max3421e/Max3421E.c @@ -29,7 +29,7 @@ // task is started. TaskHandle_t usb_host_task_handle; -STATIC void usb_host_task(void *param) { +static void usb_host_task(void *param) { (void)param; // RTOS forever loop while (1) { diff --git a/ports/espressif/common-hal/mdns/Server.c b/ports/espressif/common-hal/mdns/Server.c index 2525db8720cf..81a4415cecd8 100644 --- a/ports/espressif/common-hal/mdns/Server.c +++ b/ports/espressif/common-hal/mdns/Server.c @@ -16,7 +16,7 @@ // Track whether the underlying IDF mdns has been started so that we only // create a single inited MDNS object to CircuitPython. (After deinit, another // could be created.) -STATIC mdns_server_obj_t *_active_object = NULL; +static mdns_server_obj_t *_active_object = NULL; void mdns_server_construct(mdns_server_obj_t *self, bool workflow) { if (_active_object != NULL) { diff --git a/ports/espressif/common-hal/microcontroller/Pin.c b/ports/espressif/common-hal/microcontroller/Pin.c index 720e43404153..b5ab0a89cb43 100644 --- a/ports/espressif/common-hal/microcontroller/Pin.c +++ b/ports/espressif/common-hal/microcontroller/Pin.c @@ -13,10 +13,10 @@ #include "components/driver/gpio/include/driver/gpio.h" #include "components/hal/include/hal/gpio_hal.h" -STATIC uint64_t _never_reset_pin_mask; -STATIC uint64_t _skip_reset_once_pin_mask; -STATIC uint64_t _preserved_pin_mask; -STATIC uint64_t _in_use_pin_mask; +static uint64_t _never_reset_pin_mask; +static uint64_t _skip_reset_once_pin_mask; +static uint64_t _preserved_pin_mask; +static uint64_t _in_use_pin_mask; #define GPIO_SEL_0 (BIT(0)) /*!< Pin 0 selected */ #define GPIO_SEL_1 (BIT(1)) /*!< Pin 1 selected */ @@ -237,23 +237,23 @@ MP_WEAK bool espressif_board_reset_pin_number(gpio_num_t pin_number) { return false; } -STATIC bool _reset_forbidden(gpio_num_t pin_number) { +static bool _reset_forbidden(gpio_num_t pin_number) { return pin_mask_reset_forbidden & PIN_BIT(pin_number); } -STATIC bool _never_reset(gpio_num_t pin_number) { +static bool _never_reset(gpio_num_t pin_number) { return _never_reset_pin_mask & PIN_BIT(pin_number); } -STATIC bool _skip_reset_once(gpio_num_t pin_number) { +static bool _skip_reset_once(gpio_num_t pin_number) { return _skip_reset_once_pin_mask & PIN_BIT(pin_number); } -STATIC bool _preserved_pin(gpio_num_t pin_number) { +static bool _preserved_pin(gpio_num_t pin_number) { return _preserved_pin_mask & PIN_BIT(pin_number); } -STATIC void _reset_pin(gpio_num_t pin_number) { +static void _reset_pin(gpio_num_t pin_number) { // Never ever reset pins used for flash, RAM, and basic communication. if (_reset_forbidden(pin_number)) { return; diff --git a/ports/espressif/common-hal/microcontroller/Processor.c b/ports/espressif/common-hal/microcontroller/Processor.c index 857ed9b36db1..5cd3ed86d081 100644 --- a/ports/espressif/common-hal/microcontroller/Processor.c +++ b/ports/espressif/common-hal/microcontroller/Processor.c @@ -47,7 +47,7 @@ uint32_t common_hal_mcu_processor_get_frequency(void) { return CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ * 1000000; } -STATIC uint8_t swap_nibbles(uint8_t v) { +static uint8_t swap_nibbles(uint8_t v) { return ((v << 4) | (v >> 4)) & 0xff; } diff --git a/ports/espressif/common-hal/microcontroller/__init__.c b/ports/espressif/common-hal/microcontroller/__init__.c index 1dc63a4814ee..5220230765ae 100644 --- a/ports/espressif/common-hal/microcontroller/__init__.c +++ b/ports/espressif/common-hal/microcontroller/__init__.c @@ -166,7 +166,7 @@ watchdog_watchdogtimer_obj_t common_hal_mcu_watchdogtimer_obj = { #endif // This maps MCU pin names to pin objects. -STATIC const mp_rom_map_elem_t mcu_pin_global_dict_table[] = { +static const mp_rom_map_elem_t mcu_pin_global_dict_table[] = { #ifdef GPIO0_EXISTS { MP_ROM_QSTR(MP_QSTR_GPIO0), MP_ROM_PTR(&pin_GPIO0) }, #endif diff --git a/ports/espressif/common-hal/os/__init__.c b/ports/espressif/common-hal/os/__init__.c index 862176ff3b22..4063090fe1f9 100644 --- a/ports/espressif/common-hal/os/__init__.c +++ b/ports/espressif/common-hal/os/__init__.c @@ -15,18 +15,18 @@ #include "esp_system.h" #include "esp_random.h" -STATIC const qstr os_uname_info_fields[] = { +static const qstr os_uname_info_fields[] = { MP_QSTR_sysname, MP_QSTR_nodename, MP_QSTR_release, MP_QSTR_version, MP_QSTR_machine }; -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_sysname_obj, MICROPY_HW_MCU_NAME); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_nodename_obj, MICROPY_HW_MCU_NAME); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_release_obj, MICROPY_VERSION_STRING); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_version_obj, MICROPY_GIT_TAG " on " MICROPY_BUILD_DATE); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_machine_obj, MICROPY_HW_BOARD_NAME " with " MICROPY_HW_MCU_NAME); +static const MP_DEFINE_STR_OBJ(os_uname_info_sysname_obj, MICROPY_HW_MCU_NAME); +static const MP_DEFINE_STR_OBJ(os_uname_info_nodename_obj, MICROPY_HW_MCU_NAME); +static const MP_DEFINE_STR_OBJ(os_uname_info_release_obj, MICROPY_VERSION_STRING); +static const MP_DEFINE_STR_OBJ(os_uname_info_version_obj, MICROPY_GIT_TAG " on " MICROPY_BUILD_DATE); +static const MP_DEFINE_STR_OBJ(os_uname_info_machine_obj, MICROPY_HW_BOARD_NAME " with " MICROPY_HW_MCU_NAME); -STATIC MP_DEFINE_ATTRTUPLE( +static MP_DEFINE_ATTRTUPLE( os_uname_info_obj, os_uname_info_fields, 5, diff --git a/ports/espressif/common-hal/paralleldisplaybus/ParallelBus.c b/ports/espressif/common-hal/paralleldisplaybus/ParallelBus.c index 000a01865bec..17ec77700c20 100644 --- a/ports/espressif/common-hal/paralleldisplaybus/ParallelBus.c +++ b/ports/espressif/common-hal/paralleldisplaybus/ParallelBus.c @@ -24,7 +24,7 @@ * Current pin limitations for ESP32-S2 ParallelBus: * - data0 pin must be byte aligned */ -STATIC bool _transfer_done(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_io_event_data_t *edata, void *user_ctx) { +static bool _transfer_done(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_io_event_data_t *edata, void *user_ctx) { paralleldisplaybus_parallelbus_obj_t *self = user_ctx; self->transfer_done = true; return false; diff --git a/ports/espressif/common-hal/pwmio/PWMOut.c b/ports/espressif/common-hal/pwmio/PWMOut.c index 81040aa22abb..e3560df60b81 100644 --- a/ports/espressif/common-hal/pwmio/PWMOut.c +++ b/ports/espressif/common-hal/pwmio/PWMOut.c @@ -13,11 +13,11 @@ #define INDEX_EMPTY 0xFF -STATIC uint32_t reserved_timer_freq[LEDC_TIMER_MAX]; -STATIC bool varfreq_timers[LEDC_TIMER_MAX]; -STATIC uint8_t reserved_channels[LEDC_CHANNEL_MAX] = { [0 ... LEDC_CHANNEL_MAX - 1] = INDEX_EMPTY}; +static uint32_t reserved_timer_freq[LEDC_TIMER_MAX]; +static bool varfreq_timers[LEDC_TIMER_MAX]; +static uint8_t reserved_channels[LEDC_CHANNEL_MAX] = { [0 ... LEDC_CHANNEL_MAX - 1] = INDEX_EMPTY}; -STATIC uint32_t calculate_duty_cycle(uint32_t frequency) { +static uint32_t calculate_duty_cycle(uint32_t frequency) { uint32_t duty_bits = 0; uint32_t interval = APB_CLK_FREQ / frequency; for (size_t i = 0; i < 32; i++) { diff --git a/ports/espressif/common-hal/socketpool/Socket.c b/ports/espressif/common-hal/socketpool/Socket.c index 56a350833c47..7a4634af495a 100644 --- a/ports/espressif/common-hal/socketpool/Socket.c +++ b/ports/espressif/common-hal/socketpool/Socket.c @@ -36,17 +36,17 @@ StackType_t socket_select_stack[2 * configMINIMAL_STACK_SIZE]; #define FDSTATE_CLOSED 0 #define FDSTATE_OPEN 1 #define FDSTATE_CLOSING 2 -STATIC uint8_t socket_fd_state[CONFIG_LWIP_MAX_SOCKETS]; +static uint8_t socket_fd_state[CONFIG_LWIP_MAX_SOCKETS]; // How long to wait between checks for a socket to connect. #define SOCKET_CONNECT_POLL_INTERVAL_MS 100 -STATIC socketpool_socket_obj_t *user_socket[CONFIG_LWIP_MAX_SOCKETS]; +static socketpool_socket_obj_t *user_socket[CONFIG_LWIP_MAX_SOCKETS]; StaticTask_t socket_select_task_buffer; TaskHandle_t socket_select_task_handle; -STATIC int socket_change_fd = -1; +static int socket_change_fd = -1; -STATIC void socket_select_task(void *arg) { +static void socket_select_task(void *arg) { uint64_t signal; fd_set readfds; fd_set excptfds; @@ -146,7 +146,7 @@ void socketpool_socket_poll_resume(void) { // The writes below send an event to the socket select task so that it redoes the // select with the new open socket set. -STATIC bool register_open_socket(int fd) { +static bool register_open_socket(int fd) { if (fd < FD_SETSIZE) { socket_fd_state[fd - LWIP_SOCKET_OFFSET] = FDSTATE_OPEN; user_socket[fd - LWIP_SOCKET_OFFSET] = NULL; @@ -159,13 +159,13 @@ STATIC bool register_open_socket(int fd) { return false; } -STATIC void mark_user_socket(int fd, socketpool_socket_obj_t *obj) { +static void mark_user_socket(int fd, socketpool_socket_obj_t *obj) { socket_fd_state[fd - LWIP_SOCKET_OFFSET] = FDSTATE_OPEN; user_socket[fd - LWIP_SOCKET_OFFSET] = obj; // No need to wakeup select task } -STATIC bool _socketpool_socket(socketpool_socketpool_obj_t *self, +static bool _socketpool_socket(socketpool_socketpool_obj_t *self, socketpool_socketpool_addressfamily_t family, socketpool_socketpool_sock_t type, int proto, socketpool_socket_obj_t *sock) { diff --git a/ports/espressif/common-hal/wifi/__init__.c b/ports/espressif/common-hal/wifi/__init__.c index 9ed7f12a6c6e..ddebc41a9738 100644 --- a/ports/espressif/common-hal/wifi/__init__.c +++ b/ports/espressif/common-hal/wifi/__init__.c @@ -39,7 +39,7 @@ wifi_radio_obj_t common_hal_wifi_radio_obj; static const char *TAG = "CP wifi"; -STATIC void schedule_background_on_cp_core(void *arg) { +static void schedule_background_on_cp_core(void *arg) { #if CIRCUITPY_STATUS_BAR supervisor_status_bar_request_update(false); #endif diff --git a/ports/espressif/supervisor/internal_flash.c b/ports/espressif/supervisor/internal_flash.c index 68fdb76393af..a18d3fe0a0ff 100644 --- a/ports/espressif/supervisor/internal_flash.c +++ b/ports/espressif/supervisor/internal_flash.c @@ -33,8 +33,8 @@ // TODO: Split the caching out of supervisor/shared/external_flash so we can use it. #define SECTOR_SIZE 4096 -STATIC uint8_t _cache[SECTOR_SIZE]; -STATIC uint32_t _cache_lba = 0xffffffff; +static uint8_t _cache[SECTOR_SIZE]; +static uint32_t _cache_lba = 0xffffffff; #if CIRCUITPY_STORAGE_EXTEND #if FF_MAX_SS == FF_MIN_SS @@ -42,15 +42,15 @@ STATIC uint32_t _cache_lba = 0xffffffff; #else #define SECSIZE(fs) ((fs)->ssize) #endif // FF_MAX_SS == FF_MIN_SS -STATIC DWORD fatfs_bytes(void) { +static DWORD fatfs_bytes(void) { fs_user_mount_t *fs_mount = filesystem_circuitpy(); FATFS *fatfs = &fs_mount->fatfs; return (fatfs->csize * SECSIZE(fatfs)) * (fatfs->n_fatent - 2); } -STATIC bool storage_extended = true; -STATIC const esp_partition_t *_partition[2]; +static bool storage_extended = true; +static const esp_partition_t *_partition[2]; #else -STATIC const esp_partition_t *_partition[1]; +static const esp_partition_t *_partition[1]; #endif // CIRCUITPY_STORAGE_EXTEND void supervisor_flash_init(void) { @@ -80,7 +80,7 @@ uint32_t supervisor_flash_get_block_count(void) { void port_internal_flash_flush(void) { } -STATIC void single_partition_rw(const esp_partition_t *partition, uint8_t *data, +static void single_partition_rw(const esp_partition_t *partition, uint8_t *data, const uint32_t offset, const uint32_t size_total, const bool op) { if (op == OP_READ) { esp_partition_read(partition, offset, data, size_total); @@ -91,7 +91,7 @@ STATIC void single_partition_rw(const esp_partition_t *partition, uint8_t *data, } #if CIRCUITPY_STORAGE_EXTEND -STATIC void multi_partition_rw(uint8_t *data, +static void multi_partition_rw(uint8_t *data, const uint32_t offset, const uint32_t size_total, const bool op) { if (offset > _partition[0]->size) { // only r/w partition 1 diff --git a/ports/espressif/supervisor/port.c b/ports/espressif/supervisor/port.c index e35f293db974..694a10669e33 100644 --- a/ports/espressif/supervisor/port.c +++ b/ports/espressif/supervisor/port.c @@ -82,14 +82,14 @@ #include "esp_log.h" #define TAG "port" -STATIC esp_timer_handle_t _tick_timer; -STATIC esp_timer_handle_t _sleep_timer; +static esp_timer_handle_t _tick_timer; +static esp_timer_handle_t _sleep_timer; TaskHandle_t circuitpython_task = NULL; extern void esp_restart(void) NORETURN; -STATIC void tick_on_cp_core(void *arg) { +static void tick_on_cp_core(void *arg) { supervisor_tick(); // CircuitPython's VM is run in a separate FreeRTOS task from timer callbacks. So, we have to @@ -99,7 +99,7 @@ STATIC void tick_on_cp_core(void *arg) { // This function may happen on the PRO core when CP is on the APP core. So, make // sure we run on the CP core. -STATIC void tick_timer_cb(void *arg) { +static void tick_timer_cb(void *arg) { #if defined(CONFIG_FREERTOS_UNICORE) && CONFIG_FREERTOS_UNICORE tick_on_cp_core(arg); #else diff --git a/ports/espressif/supervisor/usb.c b/ports/espressif/supervisor/usb.c index 52ee510ee64d..8719a925ce7b 100644 --- a/ports/espressif/supervisor/usb.c +++ b/ports/espressif/supervisor/usb.c @@ -47,7 +47,7 @@ static usb_phy_handle_t phy_hdl; // USB Device Driver task // This top level thread process all usb events and invoke callbacks -STATIC void usb_device_task(void *param) { +static void usb_device_task(void *param) { (void)param; // RTOS forever loop diff --git a/ports/espressif/supervisor/usb_serial_jtag.c b/ports/espressif/supervisor/usb_serial_jtag.c index 741d587d578a..ab1e9ff41a11 100644 --- a/ports/espressif/supervisor/usb_serial_jtag.c +++ b/ports/espressif/supervisor/usb_serial_jtag.c @@ -18,9 +18,9 @@ #define USB_SERIAL_JTAG_BUF_SIZE (64) -STATIC ringbuf_t ringbuf; -STATIC uint8_t buf[128]; -STATIC volatile bool connected; +static ringbuf_t ringbuf; +static uint8_t buf[128]; +static volatile bool connected; #if CIRCUITPY_ESP_USB_SERIAL_JTAG && defined(SOC_WIFI_PHY_NEEDS_USB_WORKAROUND) && !defined(CONFIG_ESP_PHY_ENABLE_USB) #error "CONFIG_ESP_PHY_ENABLE_USB must be enabled in sdkconfig" diff --git a/ports/litex/boards/fomu/pins.c b/ports/litex/boards/fomu/pins.c index 0b4d8aa3e7e8..a462c31528f5 100644 --- a/ports/litex/boards/fomu/pins.c +++ b/ports/litex/boards/fomu/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_TOUCH1), MP_ROM_PTR(&pin_TOUCH1) }, diff --git a/ports/litex/common-hal/microcontroller/Pin.c b/ports/litex/common-hal/microcontroller/Pin.c index d3ba437b586c..dea848f1ec3f 100644 --- a/ports/litex/common-hal/microcontroller/Pin.c +++ b/ports/litex/common-hal/microcontroller/Pin.c @@ -9,7 +9,7 @@ #include "py/mphal.h" -STATIC uint8_t claimed_pins[1]; +static uint8_t claimed_pins[1]; // Mark pin as free and return it to a quiescent state. void reset_pin_number(uint8_t pin_port, uint8_t pin_number) { diff --git a/ports/litex/common-hal/microcontroller/__init__.c b/ports/litex/common-hal/microcontroller/__init__.c index 9d125b90e502..02f3372c392c 100644 --- a/ports/litex/common-hal/microcontroller/__init__.c +++ b/ports/litex/common-hal/microcontroller/__init__.c @@ -87,7 +87,7 @@ const mcu_pin_obj_t pin_TOUCH2 = PIN(1); const mcu_pin_obj_t pin_TOUCH3 = PIN(2); const mcu_pin_obj_t pin_TOUCH4 = PIN(3); -STATIC const mp_rom_map_elem_t mcu_pin_globals_table[] = { +static const mp_rom_map_elem_t mcu_pin_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_TOUCH1), MP_ROM_PTR(&pin_TOUCH1) }, { MP_ROM_QSTR(MP_QSTR_TOUCH2), MP_ROM_PTR(&pin_TOUCH2) }, { MP_ROM_QSTR(MP_QSTR_TOUCH3), MP_ROM_PTR(&pin_TOUCH3) }, diff --git a/ports/litex/common-hal/os/__init__.c b/ports/litex/common-hal/os/__init__.c index 247ec0010a11..e6da1904da52 100644 --- a/ports/litex/common-hal/os/__init__.c +++ b/ports/litex/common-hal/os/__init__.c @@ -12,18 +12,18 @@ #include "shared-bindings/os/__init__.h" -STATIC const qstr os_uname_info_fields[] = { +static const qstr os_uname_info_fields[] = { MP_QSTR_sysname, MP_QSTR_nodename, MP_QSTR_release, MP_QSTR_version, MP_QSTR_machine }; -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_sysname_obj, "litex"); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_nodename_obj, "litex"); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_release_obj, MICROPY_VERSION_STRING); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_version_obj, MICROPY_GIT_TAG " on " MICROPY_BUILD_DATE); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_machine_obj, MICROPY_HW_BOARD_NAME " with " MICROPY_HW_MCU_NAME); +static const MP_DEFINE_STR_OBJ(os_uname_info_sysname_obj, "litex"); +static const MP_DEFINE_STR_OBJ(os_uname_info_nodename_obj, "litex"); +static const MP_DEFINE_STR_OBJ(os_uname_info_release_obj, MICROPY_VERSION_STRING); +static const MP_DEFINE_STR_OBJ(os_uname_info_version_obj, MICROPY_GIT_TAG " on " MICROPY_BUILD_DATE); +static const MP_DEFINE_STR_OBJ(os_uname_info_machine_obj, MICROPY_HW_BOARD_NAME " with " MICROPY_HW_MCU_NAME); -STATIC MP_DEFINE_ATTRTUPLE( +static MP_DEFINE_ATTRTUPLE( os_uname_info_obj, os_uname_info_fields, 5, diff --git a/ports/mimxrt10xx/boards/adafruit_metro_m7_1011_sd/pins.c b/ports/mimxrt10xx/boards/adafruit_metro_m7_1011_sd/pins.c index c7db231eb022..285c6efb2c50 100644 --- a/ports/mimxrt10xx/boards/adafruit_metro_m7_1011_sd/pins.c +++ b/ports/mimxrt10xx/boards/adafruit_metro_m7_1011_sd/pins.c @@ -9,7 +9,7 @@ #include "supervisor/board.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // Analog diff --git a/ports/mimxrt10xx/boards/feather_m7_1011/pins.c b/ports/mimxrt10xx/boards/feather_m7_1011/pins.c index 0757bd2df210..7c3de8f58c1d 100644 --- a/ports/mimxrt10xx/boards/feather_m7_1011/pins.c +++ b/ports/mimxrt10xx/boards/feather_m7_1011/pins.c @@ -9,7 +9,7 @@ #include "supervisor/board.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // Analog diff --git a/ports/mimxrt10xx/boards/feather_mimxrt1011/pins.c b/ports/mimxrt10xx/boards/feather_mimxrt1011/pins.c index 3698f6bdb253..24caa9e7f900 100644 --- a/ports/mimxrt10xx/boards/feather_mimxrt1011/pins.c +++ b/ports/mimxrt10xx/boards/feather_mimxrt1011/pins.c @@ -9,7 +9,7 @@ #include "supervisor/board.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // Analog diff --git a/ports/mimxrt10xx/boards/feather_mimxrt1062/pins.c b/ports/mimxrt10xx/boards/feather_mimxrt1062/pins.c index 2f666289d5b5..e227fb84e12b 100644 --- a/ports/mimxrt10xx/boards/feather_mimxrt1062/pins.c +++ b/ports/mimxrt10xx/boards/feather_mimxrt1062/pins.c @@ -9,7 +9,7 @@ #include "supervisor/board.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // Analog diff --git a/ports/mimxrt10xx/boards/imxrt1010_evk/pins.c b/ports/mimxrt10xx/boards/imxrt1010_evk/pins.c index 42122b88e0ad..156577456b33 100644 --- a/ports/mimxrt10xx/boards/imxrt1010_evk/pins.c +++ b/ports/mimxrt10xx/boards/imxrt1010_evk/pins.c @@ -9,7 +9,7 @@ #include "supervisor/board.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO_09) }, diff --git a/ports/mimxrt10xx/boards/imxrt1015_evk/pins.c b/ports/mimxrt10xx/boards/imxrt1015_evk/pins.c index 6ae8c1e5092b..b8dd2251ea4f 100644 --- a/ports/mimxrt10xx/boards/imxrt1015_evk/pins.c +++ b/ports/mimxrt10xx/boards/imxrt1015_evk/pins.c @@ -9,7 +9,7 @@ #include "supervisor/board.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO_EMC_33) }, diff --git a/ports/mimxrt10xx/boards/imxrt1020_evk/pins.c b/ports/mimxrt10xx/boards/imxrt1020_evk/pins.c index e69540c254cd..2800d5957da9 100644 --- a/ports/mimxrt10xx/boards/imxrt1020_evk/pins.c +++ b/ports/mimxrt10xx/boards/imxrt1020_evk/pins.c @@ -9,7 +9,7 @@ #include "supervisor/board.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO_AD_B1_09) }, diff --git a/ports/mimxrt10xx/boards/imxrt1040_evk/pins.c b/ports/mimxrt10xx/boards/imxrt1040_evk/pins.c index 3c5a3549c9df..d2100906ee9f 100644 --- a/ports/mimxrt10xx/boards/imxrt1040_evk/pins.c +++ b/ports/mimxrt10xx/boards/imxrt1040_evk/pins.c @@ -9,7 +9,7 @@ #include "supervisor/board.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO_SD_B1_01) }, diff --git a/ports/mimxrt10xx/boards/imxrt1050_evkb/pins.c b/ports/mimxrt10xx/boards/imxrt1050_evkb/pins.c index 16c5fbc0c3e1..436f75bcf330 100644 --- a/ports/mimxrt10xx/boards/imxrt1050_evkb/pins.c +++ b/ports/mimxrt10xx/boards/imxrt1050_evkb/pins.c @@ -9,7 +9,7 @@ #include "supervisor/board.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO_AD_B1_07) }, diff --git a/ports/mimxrt10xx/boards/imxrt1060_evk/pins.c b/ports/mimxrt10xx/boards/imxrt1060_evk/pins.c index 73e743733721..7cc5d1e9c16f 100644 --- a/ports/mimxrt10xx/boards/imxrt1060_evk/pins.c +++ b/ports/mimxrt10xx/boards/imxrt1060_evk/pins.c @@ -9,7 +9,7 @@ #include "supervisor/board.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO_AD_B1_07) }, diff --git a/ports/mimxrt10xx/boards/imxrt1060_evkb/pins.c b/ports/mimxrt10xx/boards/imxrt1060_evkb/pins.c index 4ac2ea98e983..f81acd86aa4f 100644 --- a/ports/mimxrt10xx/boards/imxrt1060_evkb/pins.c +++ b/ports/mimxrt10xx/boards/imxrt1060_evkb/pins.c @@ -9,7 +9,7 @@ #include "supervisor/board.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO_AD_B1_07) }, diff --git a/ports/mimxrt10xx/boards/metro_m7_1011/pins.c b/ports/mimxrt10xx/boards/metro_m7_1011/pins.c index b14c23f37f1f..94db1d921021 100644 --- a/ports/mimxrt10xx/boards/metro_m7_1011/pins.c +++ b/ports/mimxrt10xx/boards/metro_m7_1011/pins.c @@ -9,7 +9,7 @@ #include "supervisor/board.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // Analog diff --git a/ports/mimxrt10xx/boards/sparkfun_teensy_micromod/pins.c b/ports/mimxrt10xx/boards/sparkfun_teensy_micromod/pins.c index c70501b35de4..7b70e5ae54a9 100644 --- a/ports/mimxrt10xx/boards/sparkfun_teensy_micromod/pins.c +++ b/ports/mimxrt10xx/boards/sparkfun_teensy_micromod/pins.c @@ -9,7 +9,7 @@ #include "supervisor/board.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // Micromod pins mapped to logical Teensy pins diff --git a/ports/mimxrt10xx/boards/teensy40/pins.c b/ports/mimxrt10xx/boards/teensy40/pins.c index 820eee5d2781..7aacdf95e15f 100644 --- a/ports/mimxrt10xx/boards/teensy40/pins.c +++ b/ports/mimxrt10xx/boards/teensy40/pins.c @@ -9,7 +9,7 @@ #include "supervisor/board.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // With USB on left. Bottom edge. diff --git a/ports/mimxrt10xx/boards/teensy41/pins.c b/ports/mimxrt10xx/boards/teensy41/pins.c index b42e44d6e537..64eac9e4b70c 100644 --- a/ports/mimxrt10xx/boards/teensy41/pins.c +++ b/ports/mimxrt10xx/boards/teensy41/pins.c @@ -9,7 +9,7 @@ #include "supervisor/board.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // With USB on left. Bottom edge. diff --git a/ports/mimxrt10xx/common-hal/audiobusio/I2SOut.c b/ports/mimxrt10xx/common-hal/audiobusio/I2SOut.c index fdd66f03ef66..c785f4e090ef 100644 --- a/ports/mimxrt10xx/common-hal/audiobusio/I2SOut.c +++ b/ports/mimxrt10xx/common-hal/audiobusio/I2SOut.c @@ -26,7 +26,7 @@ // strives to adhere to. https://www.adafruit.com/blacklivesmatter #include "sdk/drivers/sai/fsl_sai.h" -STATIC void config_periph_pin(const mcu_periph_obj_t *periph) { +static void config_periph_pin(const mcu_periph_obj_t *periph) { if (!periph) { return; } diff --git a/ports/mimxrt10xx/common-hal/audiopwmio/PWMAudioOut.c b/ports/mimxrt10xx/common-hal/audiopwmio/PWMAudioOut.c index ca2188132d6e..430d1779817c 100644 --- a/ports/mimxrt10xx/common-hal/audiopwmio/PWMAudioOut.c +++ b/ports/mimxrt10xx/common-hal/audiopwmio/PWMAudioOut.c @@ -23,7 +23,7 @@ // strives to adhere to. https://www.adafruit.com/blacklivesmatter #include "sdk/drivers/sai/fsl_sai.h" -STATIC void config_periph_pin(const mcu_periph_obj_t *periph) { +static void config_periph_pin(const mcu_periph_obj_t *periph) { if (!periph) { return; } diff --git a/ports/mimxrt10xx/common-hal/busio/I2C.c b/ports/mimxrt10xx/common-hal/busio/I2C.c index b95002b785c3..10394a3908c7 100644 --- a/ports/mimxrt10xx/common-hal/busio/I2C.c +++ b/ports/mimxrt10xx/common-hal/busio/I2C.c @@ -26,8 +26,8 @@ #define IOMUXC_SW_MUX_CTL_PAD_MUX_MODE_ALT5 5U // arrays use 0 based numbering: I2C1 is stored at index 0 -STATIC bool reserved_i2c[MP_ARRAY_SIZE(mcu_i2c_banks)]; -STATIC bool never_reset_i2c[MP_ARRAY_SIZE(mcu_i2c_banks)]; +static bool reserved_i2c[MP_ARRAY_SIZE(mcu_i2c_banks)]; +static bool never_reset_i2c[MP_ARRAY_SIZE(mcu_i2c_banks)]; void i2c_reset(void) { for (uint i = 0; i < MP_ARRAY_SIZE(mcu_i2c_banks); i++) { @@ -205,7 +205,7 @@ void common_hal_busio_i2c_unlock(busio_i2c_obj_t *self) { self->has_lock = false; } -STATIC uint8_t _common_hal_busio_i2c_write(busio_i2c_obj_t *self, uint16_t addr, +static uint8_t _common_hal_busio_i2c_write(busio_i2c_obj_t *self, uint16_t addr, const uint8_t *data, size_t len, bool transmit_stop_bit) { lpi2c_master_transfer_t xfer = { 0 }; diff --git a/ports/mimxrt10xx/common-hal/busio/SPI.c b/ports/mimxrt10xx/common-hal/busio/SPI.c index 6318a14cb1a9..118638af1388 100644 --- a/ports/mimxrt10xx/common-hal/busio/SPI.c +++ b/ports/mimxrt10xx/common-hal/busio/SPI.c @@ -25,14 +25,14 @@ #define MAX_SPI_BUSY_RETRIES 100 // arrays use 0 based numbering: SPI1 is stored at index 0 -STATIC bool reserved_spi[MP_ARRAY_SIZE(mcu_spi_banks)]; -STATIC bool never_reset_spi[MP_ARRAY_SIZE(mcu_spi_banks)]; +static bool reserved_spi[MP_ARRAY_SIZE(mcu_spi_banks)]; +static bool never_reset_spi[MP_ARRAY_SIZE(mcu_spi_banks)]; #if IMXRT11XX -STATIC const clock_ip_name_t s_lpspiClocks[] = LPSPI_CLOCKS; +static const clock_ip_name_t s_lpspiClocks[] = LPSPI_CLOCKS; #endif -STATIC void config_periph_pin(const mcu_periph_obj_t *periph) { +static void config_periph_pin(const mcu_periph_obj_t *periph) { IOMUXC_SetPinMux( periph->pin->mux_reg, periph->mux_mode, periph->input_reg, periph->input_idx, diff --git a/ports/mimxrt10xx/common-hal/busio/UART.c b/ports/mimxrt10xx/common-hal/busio/UART.c index 752b7a4ffc06..d372865e8a1c 100644 --- a/ports/mimxrt10xx/common-hal/busio/UART.c +++ b/ports/mimxrt10xx/common-hal/busio/UART.c @@ -32,8 +32,8 @@ // arrays use 0 based numbering: UART1 is stored at index 0 -STATIC bool reserved_uart[MP_ARRAY_SIZE(mcu_uart_banks)]; -STATIC bool never_reset_uart[MP_ARRAY_SIZE(mcu_uart_banks)]; +static bool reserved_uart[MP_ARRAY_SIZE(mcu_uart_banks)]; +static bool never_reset_uart[MP_ARRAY_SIZE(mcu_uart_banks)]; #if IMXRT11XX #define UART_CLOCK_FREQ (24000000) diff --git a/ports/mimxrt10xx/common-hal/microcontroller/Pin.c b/ports/mimxrt10xx/common-hal/microcontroller/Pin.c index 9474258f06e4..c20a1738af0c 100644 --- a/ports/mimxrt10xx/common-hal/microcontroller/Pin.c +++ b/ports/mimxrt10xx/common-hal/microcontroller/Pin.c @@ -13,15 +13,15 @@ #include "py/gc.h" -STATIC bool claimed_pins[PAD_COUNT]; -STATIC bool never_reset_pins[PAD_COUNT]; +static bool claimed_pins[PAD_COUNT]; +static bool never_reset_pins[PAD_COUNT]; // Default is that no pins are forbidden to reset. MP_WEAK const mcu_pin_obj_t *mimxrt10xx_reset_forbidden_pins[] = { NULL, }; -STATIC bool _reset_forbidden(const mcu_pin_obj_t *pin) { +static bool _reset_forbidden(const mcu_pin_obj_t *pin) { const mcu_pin_obj_t **forbidden_pin = &mimxrt10xx_reset_forbidden_pins[0]; while (*forbidden_pin) { if (pin == *forbidden_pin) { diff --git a/ports/mimxrt10xx/common-hal/microcontroller/__init__.c b/ports/mimxrt10xx/common-hal/microcontroller/__init__.c index 3ab7e61265ae..98f92c9389f1 100644 --- a/ports/mimxrt10xx/common-hal/microcontroller/__init__.c +++ b/ports/mimxrt10xx/common-hal/microcontroller/__init__.c @@ -87,7 +87,7 @@ const nvm_bytearray_obj_t common_hal_mcu_nvm_obj = { // This maps MCU pin names to pin objects. // NOTE: for all i.MX chips, order MUST match _iomuxc_sw_mux_ctl_pad enum -STATIC const mp_rom_map_elem_t mcu_pin_global_dict_table[PIN_COUNT] = { +static const mp_rom_map_elem_t mcu_pin_global_dict_table[PIN_COUNT] = { #define FORMAT_PIN(pin_name) { MP_ROM_QSTR(MP_QSTR_##pin_name), MP_ROM_PTR(&pin_##pin_name) }, #include "pin_names.h" diff --git a/ports/mimxrt10xx/common-hal/os/__init__.c b/ports/mimxrt10xx/common-hal/os/__init__.c index 36c8c15024f5..79ae228dc424 100644 --- a/ports/mimxrt10xx/common-hal/os/__init__.c +++ b/ports/mimxrt10xx/common-hal/os/__init__.c @@ -17,17 +17,17 @@ #include "sdk/drivers/trng/fsl_trng.h" #endif -STATIC const qstr os_uname_info_fields[] = { +static const qstr os_uname_info_fields[] = { MP_QSTR_sysname, MP_QSTR_nodename, MP_QSTR_release, MP_QSTR_version, MP_QSTR_machine }; -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_sysname_obj, "mimxrt10xx"); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_nodename_obj, "mimxrt10xx"); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_release_obj, MICROPY_VERSION_STRING); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_version_obj, MICROPY_GIT_TAG " on " MICROPY_BUILD_DATE); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_machine_obj, MICROPY_HW_BOARD_NAME " with " MICROPY_HW_MCU_NAME); +static const MP_DEFINE_STR_OBJ(os_uname_info_sysname_obj, "mimxrt10xx"); +static const MP_DEFINE_STR_OBJ(os_uname_info_nodename_obj, "mimxrt10xx"); +static const MP_DEFINE_STR_OBJ(os_uname_info_release_obj, MICROPY_VERSION_STRING); +static const MP_DEFINE_STR_OBJ(os_uname_info_version_obj, MICROPY_GIT_TAG " on " MICROPY_BUILD_DATE); +static const MP_DEFINE_STR_OBJ(os_uname_info_machine_obj, MICROPY_HW_BOARD_NAME " with " MICROPY_HW_MCU_NAME); -STATIC MP_DEFINE_ATTRTUPLE( +static MP_DEFINE_ATTRTUPLE( os_uname_info_obj, os_uname_info_fields, 5, diff --git a/ports/mimxrt10xx/common-hal/pwmio/PWMOut.c b/ports/mimxrt10xx/common-hal/pwmio/PWMOut.c index 1bcd6da4dccf..e1507c7fc02b 100644 --- a/ports/mimxrt10xx/common-hal/pwmio/PWMOut.c +++ b/ports/mimxrt10xx/common-hal/pwmio/PWMOut.c @@ -69,7 +69,7 @@ void common_hal_pwmio_pwmout_never_reset(pwmio_pwmout_obj_t *self) { common_hal_never_reset_pin(self->pin); } -STATIC void _maybe_disable_clock(uint8_t instance) { +static void _maybe_disable_clock(uint8_t instance) { if ((_flexpwms[instance]->MCTRL & PWM_MCTRL_RUN_MASK) == 0) { CLOCK_DisableClock(_flexpwm_clocks[instance][0]); } diff --git a/ports/nordic/boards/ADM_B_NRF52840_1/pins.c b/ports/nordic/boards/ADM_B_NRF52840_1/pins.c index 5eeebc5fca20..da4bdcea8f36 100644 --- a/ports/nordic/boards/ADM_B_NRF52840_1/pins.c +++ b/ports/nordic/boards/ADM_B_NRF52840_1/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS diff --git a/ports/nordic/boards/Seeed_XIAO_nRF52840_Sense/pins.c b/ports/nordic/boards/Seeed_XIAO_nRF52840_Sense/pins.c index 2e54074179c4..eeb572426f5c 100644 --- a/ports/nordic/boards/Seeed_XIAO_nRF52840_Sense/pins.c +++ b/ports/nordic/boards/Seeed_XIAO_nRF52840_Sense/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_P0_02) }, diff --git a/ports/nordic/boards/TG-Watch/pins.c b/ports/nordic/boards/TG-Watch/pins.c index 674abbfa02b8..10eeb1f21cbc 100644 --- a/ports/nordic/boards/TG-Watch/pins.c +++ b/ports/nordic/boards/TG-Watch/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS diff --git a/ports/nordic/boards/adafruit_led_glasses_nrf52840/pins.c b/ports/nordic/boards/adafruit_led_glasses_nrf52840/pins.c index a88eafe2042e..af682f823a8a 100644 --- a/ports/nordic/boards/adafruit_led_glasses_nrf52840/pins.c +++ b/ports/nordic/boards/adafruit_led_glasses_nrf52840/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_MICROPHONE_CLOCK), MP_ROM_PTR(&pin_P0_00) }, diff --git a/ports/nordic/boards/aramcon2_badge/pins.c b/ports/nordic/boards/aramcon2_badge/pins.c index 7013d7587916..e9dbf43f4865 100644 --- a/ports/nordic/boards/aramcon2_badge/pins.c +++ b/ports/nordic/boards/aramcon2_badge/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_UP_BUTTON), MP_ROM_PTR(&pin_P0_31) }, diff --git a/ports/nordic/boards/aramcon_badge_2019/pins.c b/ports/nordic/boards/aramcon_badge_2019/pins.c index fc359f93edc9..db55a3a23e5e 100644 --- a/ports/nordic/boards/aramcon_badge_2019/pins.c +++ b/ports/nordic/boards/aramcon_badge_2019/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_LEFT_BUTTON), MP_ROM_PTR(&pin_P0_02) }, diff --git a/ports/nordic/boards/arduino_nano_33_ble/pins.c b/ports/nordic/boards/arduino_nano_33_ble/pins.c index 6b25feb2ba4d..10037c05c0d3 100644 --- a/ports/nordic/boards/arduino_nano_33_ble/pins.c +++ b/ports/nordic/boards/arduino_nano_33_ble/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_P1_11) }, diff --git a/ports/nordic/boards/bastble/pins.c b/ports/nordic/boards/bastble/pins.c index 76ce1022128c..bebecda1c275 100644 --- a/ports/nordic/boards/bastble/pins.c +++ b/ports/nordic/boards/bastble/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_P1_11) }, diff --git a/ports/nordic/boards/bless_dev_board_multi_sensor/pins.c b/ports/nordic/boards/bless_dev_board_multi_sensor/pins.c index 65c35882959e..93cf7ee4033a 100644 --- a/ports/nordic/boards/bless_dev_board_multi_sensor/pins.c +++ b/ports/nordic/boards/bless_dev_board_multi_sensor/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_P0_02) }, // TP7 diff --git a/ports/nordic/boards/bluemicro833/pins.c b/ports/nordic/boards/bluemicro833/pins.c index a39c92fd2c5f..e83cd1512386 100644 --- a/ports/nordic/boards/bluemicro833/pins.c +++ b/ports/nordic/boards/bluemicro833/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_P0_02), MP_ROM_PTR(&pin_P0_02) }, { MP_ROM_QSTR(MP_QSTR_P0_03), MP_ROM_PTR(&pin_P0_03) }, diff --git a/ports/nordic/boards/bluemicro840/pins.c b/ports/nordic/boards/bluemicro840/pins.c index 2679c1e2e2f1..888d0c95e421 100644 --- a/ports/nordic/boards/bluemicro840/pins.c +++ b/ports/nordic/boards/bluemicro840/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_P0_02), MP_ROM_PTR(&pin_P0_02) }, diff --git a/ports/nordic/boards/challenger_840/pins.c b/ports/nordic/boards/challenger_840/pins.c index 4dee03208aa8..ad31c10a4286 100644 --- a/ports/nordic/boards/challenger_840/pins.c +++ b/ports/nordic/boards/challenger_840/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_P0_04) }, diff --git a/ports/nordic/boards/circuitplayground_bluefruit/pins.c b/ports/nordic/boards/circuitplayground_bluefruit/pins.c index 965fbbbf6890..65a461c9af36 100644 --- a/ports/nordic/boards/circuitplayground_bluefruit/pins.c +++ b/ports/nordic/boards/circuitplayground_bluefruit/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_AUDIO), MP_ROM_PTR(&pin_P0_26) }, diff --git a/ports/nordic/boards/clue_nrf52840_express/pins.c b/ports/nordic/boards/clue_nrf52840_express/pins.c index fc6c63ac1f0f..f05ce0d37187 100644 --- a/ports/nordic/boards/clue_nrf52840_express/pins.c +++ b/ports/nordic/boards/clue_nrf52840_express/pins.c @@ -9,7 +9,7 @@ #include "supervisor/board.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_P0), MP_ROM_PTR(&pin_P0_04) }, diff --git a/ports/nordic/boards/electronut_labs_blip/pins.c b/ports/nordic/boards/electronut_labs_blip/pins.c index db68e7e365bc..5cca89a3350b 100644 --- a/ports/nordic/boards/electronut_labs_blip/pins.c +++ b/ports/nordic/boards/electronut_labs_blip/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_P0_03) }, diff --git a/ports/nordic/boards/electronut_labs_papyr/pins.c b/ports/nordic/boards/electronut_labs_papyr/pins.c index a6bdf5e68150..8179f9cfeb48 100644 --- a/ports/nordic/boards/electronut_labs_papyr/pins.c +++ b/ports/nordic/boards/electronut_labs_papyr/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_P0_05) }, diff --git a/ports/nordic/boards/espruino_banglejs2/pins.c b/ports/nordic/boards/espruino_banglejs2/pins.c index d739f178c6eb..c84f7430161a 100644 --- a/ports/nordic/boards/espruino_banglejs2/pins.c +++ b/ports/nordic/boards/espruino_banglejs2/pins.c @@ -9,7 +9,7 @@ #include "supervisor/board.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_PRESSURE_SCL), MP_ROM_PTR(&pin_P0_02) }, diff --git a/ports/nordic/boards/feather_bluefruit_sense/pins.c b/ports/nordic/boards/feather_bluefruit_sense/pins.c index 3c4c1fe6b940..9c748e75b072 100644 --- a/ports/nordic/boards/feather_bluefruit_sense/pins.c +++ b/ports/nordic/boards/feather_bluefruit_sense/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_P0_04) }, diff --git a/ports/nordic/boards/feather_nrf52840_express/pins.c b/ports/nordic/boards/feather_nrf52840_express/pins.c index 4eb371dc19ed..24f3eafe2ac4 100644 --- a/ports/nordic/boards/feather_nrf52840_express/pins.c +++ b/ports/nordic/boards/feather_nrf52840_express/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_P0_04) }, diff --git a/ports/nordic/boards/hiibot_bluefi/pins.c b/ports/nordic/boards/hiibot_bluefi/pins.c index 1114d18a2d3d..73f046bffad4 100644 --- a/ports/nordic/boards/hiibot_bluefi/pins.c +++ b/ports/nordic/boards/hiibot_bluefi/pins.c @@ -9,7 +9,7 @@ #include "supervisor/board.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_P0), MP_ROM_PTR(&pin_P0_28) }, diff --git a/ports/nordic/boards/ikigaisense_vita/pins.c b/ports/nordic/boards/ikigaisense_vita/pins.c index 010fc8ec901a..f15dea8870b4 100644 --- a/ports/nordic/boards/ikigaisense_vita/pins.c +++ b/ports/nordic/boards/ikigaisense_vita/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_P0_29) }, diff --git a/ports/nordic/boards/itsybitsy_nrf52840_express/pins.c b/ports/nordic/boards/itsybitsy_nrf52840_express/pins.c index ef5018bce9f5..ce01c12f9e08 100644 --- a/ports/nordic/boards/itsybitsy_nrf52840_express/pins.c +++ b/ports/nordic/boards/itsybitsy_nrf52840_express/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_P0_04) }, diff --git a/ports/nordic/boards/makerdiary_m60_keyboard/pins.c b/ports/nordic/boards/makerdiary_m60_keyboard/pins.c index b92c81e11ab6..27b25d62d3f3 100644 --- a/ports/nordic/boards/makerdiary_m60_keyboard/pins.c +++ b/ports/nordic/boards/makerdiary_m60_keyboard/pins.c @@ -9,7 +9,7 @@ #include "supervisor/board.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_R1), MP_ROM_PTR(&pin_P0_05) }, diff --git a/ports/nordic/boards/makerdiary_nrf52840_connectkit/pins.c b/ports/nordic/boards/makerdiary_nrf52840_connectkit/pins.c index 57030c5a25ef..6c89d74a0681 100644 --- a/ports/nordic/boards/makerdiary_nrf52840_connectkit/pins.c +++ b/ports/nordic/boards/makerdiary_nrf52840_connectkit/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_P3), MP_ROM_PTR(&pin_P0_03) }, diff --git a/ports/nordic/boards/makerdiary_nrf52840_m2_devkit/pins.c b/ports/nordic/boards/makerdiary_nrf52840_m2_devkit/pins.c index 9321be129b3b..bd2b6800afd1 100644 --- a/ports/nordic/boards/makerdiary_nrf52840_m2_devkit/pins.c +++ b/ports/nordic/boards/makerdiary_nrf52840_m2_devkit/pins.c @@ -10,7 +10,7 @@ #include "supervisor/board.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_AIN0), MP_ROM_PTR(&pin_P0_02) }, diff --git a/ports/nordic/boards/makerdiary_nrf52840_mdk/pins.c b/ports/nordic/boards/makerdiary_nrf52840_mdk/pins.c index 4a8e6be919f5..d6583b1cfb06 100644 --- a/ports/nordic/boards/makerdiary_nrf52840_mdk/pins.c +++ b/ports/nordic/boards/makerdiary_nrf52840_mdk/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_AIN0), MP_ROM_PTR(&pin_P0_02) }, diff --git a/ports/nordic/boards/makerdiary_nrf52840_mdk_usb_dongle/pins.c b/ports/nordic/boards/makerdiary_nrf52840_mdk_usb_dongle/pins.c index 783b3aac927c..92638869bb21 100644 --- a/ports/nordic/boards/makerdiary_nrf52840_mdk_usb_dongle/pins.c +++ b/ports/nordic/boards/makerdiary_nrf52840_mdk_usb_dongle/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_AIN0), MP_ROM_PTR(&pin_P0_02) }, diff --git a/ports/nordic/boards/metro_nrf52840_express/pins.c b/ports/nordic/boards/metro_nrf52840_express/pins.c index 0576656111e5..7c3eb3557eff 100644 --- a/ports/nordic/boards/metro_nrf52840_express/pins.c +++ b/ports/nordic/boards/metro_nrf52840_express/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_P0_04) }, diff --git a/ports/nordic/boards/microbit_v2/pins.c b/ports/nordic/boards/microbit_v2/pins.c index 647221a62e27..b3b00338df14 100644 --- a/ports/nordic/boards/microbit_v2/pins.c +++ b/ports/nordic/boards/microbit_v2/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_P0), MP_ROM_PTR(&pin_P0_02) }, // RING0 diff --git a/ports/nordic/boards/nice_nano/pins.c b/ports/nordic/boards/nice_nano/pins.c index 831c142b3ad5..c3e3d3376538 100644 --- a/ports/nordic/boards/nice_nano/pins.c +++ b/ports/nordic/boards/nice_nano/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_P0_02), MP_ROM_PTR(&pin_P0_02) }, diff --git a/ports/nordic/boards/ohs2020_badge/pins.c b/ports/nordic/boards/ohs2020_badge/pins.c index bbc6530600cc..8817a3fada92 100644 --- a/ports/nordic/boards/ohs2020_badge/pins.c +++ b/ports/nordic/boards/ohs2020_badge/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_MICROPHONE_CLOCK), MP_ROM_PTR(&pin_P0_25) }, diff --git a/ports/nordic/boards/particle_argon/pins.c b/ports/nordic/boards/particle_argon/pins.c index d65b34a7112c..2f39968371b4 100644 --- a/ports/nordic/boards/particle_argon/pins.c +++ b/ports/nordic/boards/particle_argon/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_P0_03) }, diff --git a/ports/nordic/boards/particle_boron/pins.c b/ports/nordic/boards/particle_boron/pins.c index adeca976e141..ede07b900b65 100644 --- a/ports/nordic/boards/particle_boron/pins.c +++ b/ports/nordic/boards/particle_boron/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_P0_03) }, diff --git a/ports/nordic/boards/particle_xenon/pins.c b/ports/nordic/boards/particle_xenon/pins.c index e57056e1ea78..428a86936464 100644 --- a/ports/nordic/boards/particle_xenon/pins.c +++ b/ports/nordic/boards/particle_xenon/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_P0_03) }, diff --git a/ports/nordic/boards/pca10056/pins.c b/ports/nordic/boards/pca10056/pins.c index 00c91699513d..897df64eabe5 100644 --- a/ports/nordic/boards/pca10056/pins.c +++ b/ports/nordic/boards/pca10056/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_P0_00), MP_ROM_PTR(&pin_P0_00) }, diff --git a/ports/nordic/boards/pca10059/pins.c b/ports/nordic/boards/pca10059/pins.c index a8dee4a40d98..a0f46634bbc8 100644 --- a/ports/nordic/boards/pca10059/pins.c +++ b/ports/nordic/boards/pca10059/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_P0_02), MP_ROM_PTR(&pin_P0_02) }, diff --git a/ports/nordic/boards/pca10100/pins.c b/ports/nordic/boards/pca10100/pins.c index e31bfdd1e565..1cd6529051e5 100644 --- a/ports/nordic/boards/pca10100/pins.c +++ b/ports/nordic/boards/pca10100/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_NFC1), MP_ROM_PTR(&pin_P0_09) }, diff --git a/ports/nordic/boards/pctel_wsc_1450/pins.c b/ports/nordic/boards/pctel_wsc_1450/pins.c index 809c0ba42973..6e839cc89acb 100644 --- a/ports/nordic/boards/pctel_wsc_1450/pins.c +++ b/ports/nordic/boards/pctel_wsc_1450/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS {MP_ROM_QSTR(MP_QSTR_32KHZ_XTAL1), MP_ROM_PTR(&pin_P0_00)}, diff --git a/ports/nordic/boards/pillbug/pins.c b/ports/nordic/boards/pillbug/pins.c index 89d0007dc0dc..8338da1eb6c8 100644 --- a/ports/nordic/boards/pillbug/pins.c +++ b/ports/nordic/boards/pillbug/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_P0_02), MP_ROM_PTR(&pin_P0_02) }, diff --git a/ports/nordic/boards/pitaya_go/pins.c b/ports/nordic/boards/pitaya_go/pins.c index 6fef0b37e75c..0ae8788e786e 100644 --- a/ports/nordic/boards/pitaya_go/pins.c +++ b/ports/nordic/boards/pitaya_go/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_AIN0), MP_ROM_PTR(&pin_P0_02) }, diff --git a/ports/nordic/boards/raytac_mdbt50q-db-40/pins.c b/ports/nordic/boards/raytac_mdbt50q-db-40/pins.c index c299d0f68616..1578c213f1f0 100644 --- a/ports/nordic/boards/raytac_mdbt50q-db-40/pins.c +++ b/ports/nordic/boards/raytac_mdbt50q-db-40/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_P0_02), MP_ROM_PTR(&pin_P0_02) }, diff --git a/ports/nordic/boards/raytac_mdbt50q-rx/pins.c b/ports/nordic/boards/raytac_mdbt50q-rx/pins.c index abb34a2b180e..f7f86da91456 100644 --- a/ports/nordic/boards/raytac_mdbt50q-rx/pins.c +++ b/ports/nordic/boards/raytac_mdbt50q-rx/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_P0_15), MP_ROM_PTR(&pin_P0_15) }, diff --git a/ports/nordic/boards/simmel/pins.c b/ports/nordic/boards/simmel/pins.c index 554c6d8a8b3e..72a99148cdd3 100644 --- a/ports/nordic/boards/simmel/pins.c +++ b/ports/nordic/boards/simmel/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_SPI_CSN), MP_ROM_PTR(&pin_P1_06) }, diff --git a/ports/nordic/boards/sparkfun_nrf52840_micromod/pins.c b/ports/nordic/boards/sparkfun_nrf52840_micromod/pins.c index 0e073dbc14d2..c2bbf238257c 100644 --- a/ports/nordic/boards/sparkfun_nrf52840_micromod/pins.c +++ b/ports/nordic/boards/sparkfun_nrf52840_micromod/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // The SparkFun MicroMod spec uses a zero-based peripheral numbering scheme. // The 0th peripheral is the default and the "0" is omitted from the diff --git a/ports/nordic/boards/sparkfun_nrf52840_mini/pins.c b/ports/nordic/boards/sparkfun_nrf52840_mini/pins.c index 278cdfd67166..492358ed5a55 100644 --- a/ports/nordic/boards/sparkfun_nrf52840_mini/pins.c +++ b/ports/nordic/boards/sparkfun_nrf52840_mini/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_P1_15) }, // D1/TX diff --git a/ports/nordic/boards/ssci_isp1807_dev_board/pins.c b/ports/nordic/boards/ssci_isp1807_dev_board/pins.c index 3beaec955193..4736b4588c18 100644 --- a/ports/nordic/boards/ssci_isp1807_dev_board/pins.c +++ b/ports/nordic/boards/ssci_isp1807_dev_board/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_P0_02), MP_ROM_PTR(&pin_P0_02) }, diff --git a/ports/nordic/boards/ssci_isp1807_micro_board/pins.c b/ports/nordic/boards/ssci_isp1807_micro_board/pins.c index 8e80199b72bf..007de78f4da1 100644 --- a/ports/nordic/boards/ssci_isp1807_micro_board/pins.c +++ b/ports/nordic/boards/ssci_isp1807_micro_board/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_P0_19) }, diff --git a/ports/nordic/boards/supermini_nrf52840/pins.c b/ports/nordic/boards/supermini_nrf52840/pins.c index 831c142b3ad5..c3e3d3376538 100644 --- a/ports/nordic/boards/supermini_nrf52840/pins.c +++ b/ports/nordic/boards/supermini_nrf52840/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_P0_02), MP_ROM_PTR(&pin_P0_02) }, diff --git a/ports/nordic/boards/teknikio_bluebird/pins.c b/ports/nordic/boards/teknikio_bluebird/pins.c index 880174db3dfa..af25e83ca73a 100644 --- a/ports/nordic/boards/teknikio_bluebird/pins.c +++ b/ports/nordic/boards/teknikio_bluebird/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS diff --git a/ports/nordic/boards/tinkeringtech_scoutmakes_azul/pins.c b/ports/nordic/boards/tinkeringtech_scoutmakes_azul/pins.c index 2d35a27ebf99..ac5e7ba57fbf 100644 --- a/ports/nordic/boards/tinkeringtech_scoutmakes_azul/pins.c +++ b/ports/nordic/boards/tinkeringtech_scoutmakes_azul/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_P0_04) }, diff --git a/ports/nordic/boards/warmbit_bluepixel/pins.c b/ports/nordic/boards/warmbit_bluepixel/pins.c index b96da73c39f5..6ac7eeecdc5b 100644 --- a/ports/nordic/boards/warmbit_bluepixel/pins.c +++ b/ports/nordic/boards/warmbit_bluepixel/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_P0_29) }, diff --git a/ports/nordic/common-hal/_bleio/Adapter.c b/ports/nordic/common-hal/_bleio/Adapter.c index 35e6fca2449a..82d56b9c1b81 100644 --- a/ports/nordic/common-hal/_bleio/Adapter.c +++ b/ports/nordic/common-hal/_bleio/Adapter.c @@ -70,7 +70,7 @@ const nvm_bytearray_obj_t common_hal_bleio_nvm_obj = { .len = CIRCUITPY_BLE_CONFIG_SIZE, }; -STATIC void softdevice_assert_handler(uint32_t id, uint32_t pc, uint32_t info) { +static void softdevice_assert_handler(uint32_t id, uint32_t pc, uint32_t info) { reset_into_safe_mode(SAFE_MODE_SDK_FATAL_ERROR); } @@ -78,7 +78,7 @@ bleio_connection_internal_t bleio_connections[BLEIO_TOTAL_CONNECTION_COUNT]; // Linker script provided ram start. extern uint32_t _ram_start; -STATIC uint32_t ble_stack_enable(void) { +static uint32_t ble_stack_enable(void) { nrf_clock_lf_cfg_t clock_config = { #if BOARD_HAS_32KHZ_XTAL .source = NRF_CLOCK_LF_SRC_XTAL, @@ -221,7 +221,7 @@ STATIC uint32_t ble_stack_enable(void) { return err_code; } -STATIC bool adapter_on_ble_evt(ble_evt_t *ble_evt, void *self_in) { +static bool adapter_on_ble_evt(ble_evt_t *ble_evt, void *self_in) { bleio_adapter_obj_t *self = (bleio_adapter_obj_t *)self_in; // For debugging. @@ -307,13 +307,13 @@ STATIC bool adapter_on_ble_evt(ble_evt_t *ble_evt, void *self_in) { return true; } -STATIC void get_address(bleio_adapter_obj_t *self, ble_gap_addr_t *address) { +static void get_address(bleio_adapter_obj_t *self, ble_gap_addr_t *address) { check_nrf_error(sd_ble_gap_addr_get(address)); } char default_ble_name[] = { 'C', 'I', 'R', 'C', 'U', 'I', 'T', 'P', 'Y', 0, 0, 0, 0, 0}; -STATIC void bleio_adapter_reset_name(bleio_adapter_obj_t *self) { +static void bleio_adapter_reset_name(bleio_adapter_obj_t *self) { // setup the default name ble_gap_addr_t addr; // local_address get_address(self, &addr); @@ -456,7 +456,7 @@ void common_hal_bleio_adapter_set_name(bleio_adapter_obj_t *self, const char *na sd_ble_gap_device_name_set(&sec, (const uint8_t *)name, len); } -STATIC uint32_t _update_identities(bool is_central) { +static uint32_t _update_identities(bool is_central) { const ble_gap_id_key_t *keys[BLE_GAP_DEVICE_IDENTITIES_MAX_COUNT]; // TODO: Make sure we don't store more than BLE_GAP_DEVICE_IDENTITIES_MAX_COUNT identities of // each type. Right now, we'll silently ignore those keys. @@ -472,7 +472,7 @@ STATIC uint32_t _update_identities(bool is_central) { return status; }; -STATIC bool scan_on_ble_evt(ble_evt_t *ble_evt, void *scan_results_in) { +static bool scan_on_ble_evt(ble_evt_t *ble_evt, void *scan_results_in) { bleio_scanresults_obj_t *scan_results = (bleio_scanresults_obj_t *)scan_results_in; if (ble_evt->header.evt_id == BLE_GAP_EVT_TIMEOUT && @@ -586,7 +586,7 @@ typedef struct { volatile bool done; } connect_info_t; -STATIC bool connect_on_ble_evt(ble_evt_t *ble_evt, void *info_in) { +static bool connect_on_ble_evt(ble_evt_t *ble_evt, void *info_in) { connect_info_t *info = (connect_info_t *)info_in; switch (ble_evt->header.evt_id) { @@ -609,7 +609,7 @@ STATIC bool connect_on_ble_evt(ble_evt_t *ble_evt, void *info_in) { return true; } -STATIC void _convert_address(const bleio_address_obj_t *address, ble_gap_addr_t *sd_address) { +static void _convert_address(const bleio_address_obj_t *address, ble_gap_addr_t *sd_address) { sd_address->addr_type = address->type; mp_buffer_info_t address_buf_info; mp_get_buffer_raise(address->bytes, &address_buf_info, MP_BUFFER_READ); @@ -694,7 +694,7 @@ mp_obj_t common_hal_bleio_adapter_connect(bleio_adapter_obj_t *self, bleio_addre } -STATIC void check_data_fit(size_t data_len, bool connectable) { +static void check_data_fit(size_t data_len, bool connectable) { if (data_len > BLE_GAP_ADV_SET_DATA_SIZE_EXTENDED_MAX_SUPPORTED || (connectable && data_len > BLE_GAP_ADV_SET_DATA_SIZE_EXTENDED_CONNECTABLE_MAX_SUPPORTED)) { mp_raise_ValueError(MP_ERROR_TEXT("Data too large for advertisement packet")); @@ -704,7 +704,7 @@ STATIC void check_data_fit(size_t data_len, bool connectable) { // The nRF SD 6.1.0 can only do one concurrent advertisement so share the advertising handle. uint8_t adv_handle = BLE_GAP_ADV_SET_HANDLE_NOT_SET; -STATIC bool advertising_on_ble_evt(ble_evt_t *ble_evt, void *self_in) { +static bool advertising_on_ble_evt(ble_evt_t *ble_evt, void *self_in) { bleio_adapter_obj_t *self = (bleio_adapter_obj_t *)self_in; switch (ble_evt->header.evt_id) { diff --git a/ports/nordic/common-hal/_bleio/Characteristic.c b/ports/nordic/common-hal/_bleio/Characteristic.c index 23c861e1f19c..f3238f2fd501 100644 --- a/ports/nordic/common-hal/_bleio/Characteristic.c +++ b/ports/nordic/common-hal/_bleio/Characteristic.c @@ -14,7 +14,7 @@ #include "common-hal/_bleio/Adapter.h" #include "common-hal/_bleio/bonding.h" -STATIC uint16_t characteristic_get_cccd(uint16_t cccd_handle, uint16_t conn_handle) { +static uint16_t characteristic_get_cccd(uint16_t cccd_handle, uint16_t conn_handle) { uint16_t cccd; ble_gatts_value_t value = { .p_value = (uint8_t *)&cccd, @@ -34,7 +34,7 @@ STATIC uint16_t characteristic_get_cccd(uint16_t cccd_handle, uint16_t conn_hand } -STATIC void characteristic_gatts_notify_indicate(uint16_t handle, uint16_t conn_handle, mp_buffer_info_t *bufinfo, uint16_t hvx_type) { +static void characteristic_gatts_notify_indicate(uint16_t handle, uint16_t conn_handle, mp_buffer_info_t *bufinfo, uint16_t hvx_type) { uint16_t hvx_len = bufinfo->len; ble_gatts_hvx_params_t hvx_params = { diff --git a/ports/nordic/common-hal/_bleio/CharacteristicBuffer.c b/ports/nordic/common-hal/_bleio/CharacteristicBuffer.c index 66987aac12b6..4374907adf4e 100644 --- a/ports/nordic/common-hal/_bleio/CharacteristicBuffer.c +++ b/ports/nordic/common-hal/_bleio/CharacteristicBuffer.c @@ -22,7 +22,7 @@ #include "shared-bindings/_bleio/CharacteristicBuffer.h" // Push all the data onto the ring buffer. When the buffer is full, new bytes will be dropped. -STATIC void write_to_ringbuf(bleio_characteristic_buffer_obj_t *self, uint8_t *data, uint16_t len) { +static void write_to_ringbuf(bleio_characteristic_buffer_obj_t *self, uint8_t *data, uint16_t len) { uint8_t is_nested_critical_region; sd_nvic_critical_region_enter(&is_nested_critical_region); if (self->watch_for_interrupt_char) { @@ -39,7 +39,7 @@ STATIC void write_to_ringbuf(bleio_characteristic_buffer_obj_t *self, uint8_t *d sd_nvic_critical_region_exit(is_nested_critical_region); } -STATIC bool characteristic_buffer_on_ble_evt(ble_evt_t *ble_evt, void *param) { +static bool characteristic_buffer_on_ble_evt(ble_evt_t *ble_evt, void *param) { bleio_characteristic_buffer_obj_t *self = (bleio_characteristic_buffer_obj_t *)param; switch (ble_evt->header.evt_id) { case BLE_GATTS_EVT_WRITE: { diff --git a/ports/nordic/common-hal/_bleio/Connection.c b/ports/nordic/common-hal/_bleio/Connection.c index 227f2e2afbb4..7d5988abeeb1 100644 --- a/ports/nordic/common-hal/_bleio/Connection.c +++ b/ports/nordic/common-hal/_bleio/Connection.c @@ -381,7 +381,7 @@ void common_hal_bleio_connection_set_connection_interval(bleio_connection_intern } // service_uuid may be NULL, to discover all services. -STATIC bool discover_next_services(bleio_connection_internal_t *connection, uint16_t start_handle, ble_uuid_t *service_uuid) { +static bool discover_next_services(bleio_connection_internal_t *connection, uint16_t start_handle, ble_uuid_t *service_uuid) { m_discovery_successful = false; m_discovery_in_process = true; @@ -398,7 +398,7 @@ STATIC bool discover_next_services(bleio_connection_internal_t *connection, uint return m_discovery_successful; } -STATIC bool discover_next_characteristics(bleio_connection_internal_t *connection, bleio_service_obj_t *service, uint16_t start_handle) { +static bool discover_next_characteristics(bleio_connection_internal_t *connection, bleio_service_obj_t *service, uint16_t start_handle) { m_char_discovery_service = service; ble_gattc_handle_range_t handle_range; @@ -420,7 +420,7 @@ STATIC bool discover_next_characteristics(bleio_connection_internal_t *connectio return m_discovery_successful; } -STATIC bool discover_next_descriptors(bleio_connection_internal_t *connection, bleio_characteristic_obj_t *characteristic, uint16_t start_handle, uint16_t end_handle) { +static bool discover_next_descriptors(bleio_connection_internal_t *connection, bleio_characteristic_obj_t *characteristic, uint16_t start_handle, uint16_t end_handle) { m_desc_discovery_characteristic = characteristic; ble_gattc_handle_range_t handle_range; @@ -442,7 +442,7 @@ STATIC bool discover_next_descriptors(bleio_connection_internal_t *connection, b return m_discovery_successful; } -STATIC void on_primary_srv_discovery_rsp(ble_gattc_evt_prim_srvc_disc_rsp_t *response, bleio_connection_internal_t *connection) { +static void on_primary_srv_discovery_rsp(ble_gattc_evt_prim_srvc_disc_rsp_t *response, bleio_connection_internal_t *connection) { for (size_t i = 0; i < response->count; ++i) { ble_gattc_service_t *gattc_service = &response->services[i]; @@ -478,7 +478,7 @@ STATIC void on_primary_srv_discovery_rsp(ble_gattc_evt_prim_srvc_disc_rsp_t *res m_discovery_in_process = false; } -STATIC void on_char_discovery_rsp(ble_gattc_evt_char_disc_rsp_t *response, bleio_connection_internal_t *connection) { +static void on_char_discovery_rsp(ble_gattc_evt_char_disc_rsp_t *response, bleio_connection_internal_t *connection) { for (size_t i = 0; i < response->count; ++i) { ble_gattc_char_t *gattc_char = &response->chars[i]; @@ -523,7 +523,7 @@ STATIC void on_char_discovery_rsp(ble_gattc_evt_char_disc_rsp_t *response, bleio m_discovery_in_process = false; } -STATIC void on_desc_discovery_rsp(ble_gattc_evt_desc_disc_rsp_t *response, bleio_connection_internal_t *connection) { +static void on_desc_discovery_rsp(ble_gattc_evt_desc_disc_rsp_t *response, bleio_connection_internal_t *connection) { for (size_t i = 0; i < response->count; ++i) { ble_gattc_desc_t *gattc_desc = &response->descs[i]; @@ -578,7 +578,7 @@ STATIC void on_desc_discovery_rsp(ble_gattc_evt_desc_disc_rsp_t *response, bleio m_discovery_in_process = false; } -STATIC bool discovery_on_ble_evt(ble_evt_t *ble_evt, mp_obj_t payload) { +static bool discovery_on_ble_evt(ble_evt_t *ble_evt, mp_obj_t payload) { bleio_connection_internal_t *connection = MP_OBJ_TO_PTR(payload); switch (ble_evt->header.evt_id) { case BLE_GAP_EVT_DISCONNECTED: @@ -606,7 +606,7 @@ STATIC bool discovery_on_ble_evt(ble_evt_t *ble_evt, mp_obj_t payload) { return true; } -STATIC void discover_remote_services(bleio_connection_internal_t *self, mp_obj_t service_uuids_whitelist) { +static void discover_remote_services(bleio_connection_internal_t *self, mp_obj_t service_uuids_whitelist) { ble_drv_add_event_handler(discovery_on_ble_evt, self); // Start over with an empty list. diff --git a/ports/nordic/common-hal/_bleio/PacketBuffer.c b/ports/nordic/common-hal/_bleio/PacketBuffer.c index c12a5268676e..3e0a0a56a4f8 100644 --- a/ports/nordic/common-hal/_bleio/PacketBuffer.c +++ b/ports/nordic/common-hal/_bleio/PacketBuffer.c @@ -22,7 +22,7 @@ #include "supervisor/shared/bluetooth/serial.h" -STATIC void write_to_ringbuf(bleio_packet_buffer_obj_t *self, uint8_t *data, uint16_t len) { +static void write_to_ringbuf(bleio_packet_buffer_obj_t *self, uint8_t *data, uint16_t len) { if (len + sizeof(uint16_t) > ringbuf_size(&self->ringbuf)) { // This shouldn't happen but can if our buffer size was much smaller than // the writes the client actually makes. @@ -45,7 +45,7 @@ STATIC void write_to_ringbuf(bleio_packet_buffer_obj_t *self, uint8_t *data, uin sd_nvic_critical_region_exit(is_nested_critical_region); } -STATIC uint32_t queue_next_write(bleio_packet_buffer_obj_t *self) { +static uint32_t queue_next_write(bleio_packet_buffer_obj_t *self) { // Queue up the next outgoing buffer. We use two, one that has been passed to the SD for // transmission (when packet_queued is true) and the other is `pending` and can still be // modified. By primarily appending to the `pending` buffer we can reduce the protocol overhead @@ -87,7 +87,7 @@ STATIC uint32_t queue_next_write(bleio_packet_buffer_obj_t *self) { return NRF_SUCCESS; } -STATIC bool packet_buffer_on_ble_client_evt(ble_evt_t *ble_evt, void *param) { +static bool packet_buffer_on_ble_client_evt(ble_evt_t *ble_evt, void *param) { const uint16_t evt_id = ble_evt->header.evt_id; bleio_packet_buffer_obj_t *self = (bleio_packet_buffer_obj_t *)param; if (evt_id == BLE_GAP_EVT_DISCONNECTED && self->conn_handle == ble_evt->evt.gap_evt.conn_handle) { @@ -128,7 +128,7 @@ STATIC bool packet_buffer_on_ble_client_evt(ble_evt_t *ble_evt, void *param) { return true; } -STATIC bool packet_buffer_on_ble_server_evt(ble_evt_t *ble_evt, void *param) { +static bool packet_buffer_on_ble_server_evt(ble_evt_t *ble_evt, void *param) { bleio_packet_buffer_obj_t *self = (bleio_packet_buffer_obj_t *)param; switch (ble_evt->header.evt_id) { case BLE_GATTS_EVT_WRITE: { diff --git a/ports/nordic/common-hal/_bleio/Service.c b/ports/nordic/common-hal/_bleio/Service.c index 59c09453a252..edd67a5fe739 100644 --- a/ports/nordic/common-hal/_bleio/Service.c +++ b/ports/nordic/common-hal/_bleio/Service.c @@ -15,7 +15,7 @@ #include "shared-bindings/_bleio/Adapter.h" -STATIC void _indicate_service_change(uint16_t start, uint16_t end) { +static void _indicate_service_change(uint16_t start, uint16_t end) { for (size_t i = 0; i < BLEIO_TOTAL_CONNECTION_COUNT; i++) { bleio_connection_internal_t *connection = &bleio_connections[i]; uint16_t conn_handle = connection->conn_handle; @@ -85,7 +85,7 @@ bool common_hal_bleio_service_get_is_secondary(bleio_service_obj_t *self) { return self->is_secondary; } -STATIC void _expand_range(uint16_t new_value, uint16_t *start, uint16_t *end) { +static void _expand_range(uint16_t new_value, uint16_t *start, uint16_t *end) { if (new_value == 0) { return; } diff --git a/ports/nordic/common-hal/_bleio/__init__.c b/ports/nordic/common-hal/_bleio/__init__.c index 563da0a97200..1f4b81f74d80 100644 --- a/ports/nordic/common-hal/_bleio/__init__.c +++ b/ports/nordic/common-hal/_bleio/__init__.c @@ -146,7 +146,7 @@ typedef struct { volatile bool done; } read_info_t; -STATIC bool _on_gattc_read_rsp_evt(ble_evt_t *ble_evt, void *param) { +static bool _on_gattc_read_rsp_evt(ble_evt_t *ble_evt, void *param) { read_info_t *read = param; switch (ble_evt->header.evt_id) { diff --git a/ports/nordic/common-hal/_bleio/bonding.c b/ports/nordic/common-hal/_bleio/bonding.c index a4a9a8b87f0c..a1cf0b94f0c3 100644 --- a/ports/nordic/common-hal/_bleio/bonding.c +++ b/ports/nordic/common-hal/_bleio/bonding.c @@ -50,7 +50,7 @@ void bonding_print_keys(bonding_keys_t *keys) { } #endif -STATIC size_t compute_block_size(uint16_t data_length) { +static size_t compute_block_size(uint16_t data_length) { // Round data size up to the nearest 32-bit address. return sizeof(bonding_block_t) + ((data_length + 3) & ~0x3); } @@ -73,7 +73,7 @@ void bonding_erase_storage(void) { // The last block returned is the unused block at the end. // Return NULL if we have run off the end of the bonding space. -STATIC bonding_block_t *next_block(bonding_block_t *block) { +static bonding_block_t *next_block(bonding_block_t *block) { while (1) { // Advance to next block. if (block == NULL) { @@ -101,7 +101,7 @@ STATIC bonding_block_t *next_block(bonding_block_t *block) { // Find the block with given is_central, type and ediv value. // If type == BLOCK_UNUSED, ediv is ignored and the the sole unused block at the end is returned. // If not found, return NULL. -STATIC bonding_block_t *find_existing_block(bool is_central, bonding_block_type_t type, uint16_t ediv) { +static bonding_block_t *find_existing_block(bool is_central, bonding_block_type_t type, uint16_t ediv) { bonding_block_t *block = NULL; while (1) { block = next_block(block); @@ -134,7 +134,7 @@ size_t bonding_peripheral_bond_count(void) { } // Get an empty block large enough to store data_length data. -STATIC bonding_block_t *find_unused_block(uint16_t data_length) { +static bonding_block_t *find_unused_block(uint16_t data_length) { bonding_block_t *unused_block = find_existing_block(true, BLOCK_UNUSED, EDIV_INVALID); // If no more room, erase all existing blocks and start over. if (!unused_block || @@ -147,18 +147,18 @@ STATIC bonding_block_t *find_unused_block(uint16_t data_length) { // Set the header word to all 0's, to mark the block as invalid. // We don't change data_length, so we can still skip over this block. -STATIC void invalidate_block(bonding_block_t *block) { +static void invalidate_block(bonding_block_t *block) { uint32_t zero = 0; sd_flash_write_sync((uint32_t *)block, &zero, 1); } // Write bonding block header. -STATIC void write_block_header(bonding_block_t *dest_block, bonding_block_t *source_block_header) { +static void write_block_header(bonding_block_t *dest_block, bonding_block_t *source_block_header) { sd_flash_write_sync((uint32_t *)dest_block, (uint32_t *)source_block_header, sizeof(bonding_block_t) / 4); } // Write variable-length data at end of bonding block. -STATIC void write_block_data(bonding_block_t *dest_block, uint8_t *data, uint16_t data_length) { +static void write_block_data(bonding_block_t *dest_block, uint8_t *data, uint16_t data_length) { // Minimize the number of writes. Datasheet says no more than two writes per word before erasing again. // Start writing after the current header. @@ -177,7 +177,7 @@ STATIC void write_block_data(bonding_block_t *dest_block, uint8_t *data, uint16_ } } -STATIC void write_sys_attr_block(bleio_connection_internal_t *connection) { +static void write_sys_attr_block(bleio_connection_internal_t *connection) { uint16_t length = 0; // First find out how big a buffer we need, then fetch the data. if (sd_ble_gatts_sys_attr_get(connection->conn_handle, NULL, &length, SYS_ATTR_FLAGS) != NRF_SUCCESS) { @@ -214,7 +214,7 @@ STATIC void write_sys_attr_block(bleio_connection_internal_t *connection) { return; } -STATIC void write_keys_block(bleio_connection_internal_t *connection) { +static void write_keys_block(bleio_connection_internal_t *connection) { uint16_t const ediv = connection->is_central ? connection->bonding_keys.peer_enc.master_id.ediv : connection->bonding_keys.own_enc.master_id.ediv; diff --git a/ports/nordic/common-hal/alarm/__init__.c b/ports/nordic/common-hal/alarm/__init__.c index 34e4d27f544f..9753b0321fd0 100644 --- a/ports/nordic/common-hal/alarm/__init__.c +++ b/ports/nordic/common-hal/alarm/__init__.c @@ -48,7 +48,7 @@ void alarm_reset(void) { } extern uint32_t reset_reason_saved; -STATIC nrf_sleep_source_t _get_wakeup_cause(void) { +static nrf_sleep_source_t _get_wakeup_cause(void) { // First check if the modules remember what last woke up if (alarm_pin_pinalarm_woke_this_cycle()) { return NRF_SLEEP_WAKEUP_GPIO; @@ -120,7 +120,7 @@ mp_obj_t common_hal_alarm_record_wake_alarm(void) { } // Set up light sleep or deep sleep alarms. -STATIC void _setup_sleep_alarms(bool deep_sleep, size_t n_alarms, const mp_obj_t *alarms) { +static void _setup_sleep_alarms(bool deep_sleep, size_t n_alarms, const mp_obj_t *alarms) { sleepmem_wakeup_event = SLEEPMEM_WAKEUP_BY_NONE; sleepmem_wakeup_pin = WAKEUP_PIN_UNDEF; alarm_pin_pinalarm_set_alarms(deep_sleep, n_alarms, alarms); @@ -131,7 +131,7 @@ STATIC void _setup_sleep_alarms(bool deep_sleep, size_t n_alarms, const mp_obj_t // TODO: this handles all possible types of wakeup, which is redundant with main. // revise to extract all parts essential to enabling sleep wakeup, but leave the // alarm/non-alarm sorting to the existing main loop. -STATIC void system_on_idle_until_alarm(int64_t timediff_ms, bool wake_from_serial, uint32_t prescaler) { +static void system_on_idle_until_alarm(int64_t timediff_ms, bool wake_from_serial, uint32_t prescaler) { bool have_timeout = false; uint64_t start_tick = 0, end_tick = 0; int64_t tickdiff; diff --git a/ports/nordic/common-hal/audiobusio/I2SOut.c b/ports/nordic/common-hal/audiobusio/I2SOut.c index fc84927909b5..6e8fc2088134 100644 --- a/ports/nordic/common-hal/audiobusio/I2SOut.c +++ b/ports/nordic/common-hal/audiobusio/I2SOut.c @@ -71,7 +71,7 @@ static void calculate_ratio_info(uint32_t target_sample_rate, struct frequency_i / target_sample_rate; } -STATIC void choose_i2s_clocking(audiobusio_i2sout_obj_t *self, uint32_t sample_rate) { +static void choose_i2s_clocking(audiobusio_i2sout_obj_t *self, uint32_t sample_rate) { struct frequency_info best = {0, 0, 0, 1.0}; for (size_t ri = 0; ri < sizeof(ratios) / sizeof(ratios[0]); ri++) { if (NRF_I2S->CONFIG.SWIDTH == I2S_CONFIG_SWIDTH_SWIDTH_16Bit diff --git a/ports/nordic/common-hal/audiopwmio/PWMAudioOut.c b/ports/nordic/common-hal/audiopwmio/PWMAudioOut.c index 6476bcbc8c17..89c83bc0669f 100644 --- a/ports/nordic/common-hal/audiopwmio/PWMAudioOut.c +++ b/ports/nordic/common-hal/audiopwmio/PWMAudioOut.c @@ -19,7 +19,7 @@ #include "supervisor/shared/tick.h" // TODO: This should be the same size as PWMOut.c:pwms[], but there's no trivial way to accomplish that -STATIC audiopwmio_pwmaudioout_obj_t *active_audio[4]; +static audiopwmio_pwmaudioout_obj_t *active_audio[4]; #define F_TARGET (62500) #define F_PWM (16000000) @@ -30,7 +30,7 @@ STATIC audiopwmio_pwmaudioout_obj_t *active_audio[4]; // 24000: top = 222 refresh = 2 [24024.0] // 44100: top = 181 refresh = 1 [44198.8] // 48000: top = 167 refresh = 1 [47904.1] -STATIC uint32_t calculate_pwm_parameters(uint32_t sample_rate, uint32_t *top_out) { +static uint32_t calculate_pwm_parameters(uint32_t sample_rate, uint32_t *top_out) { // the desired frequency is the closest integer multiple of sample_rate not less than F_TARGET uint32_t desired_frequency = (F_TARGET + sample_rate - 1) / sample_rate * sample_rate; // The top value is the PWM frequency divided by the desired frequency (round to nearest) @@ -43,7 +43,7 @@ STATIC uint32_t calculate_pwm_parameters(uint32_t sample_rate, uint32_t *top_out return multiplier - 1; } -STATIC void activate_audiopwmout_obj(audiopwmio_pwmaudioout_obj_t *self) { +static void activate_audiopwmout_obj(audiopwmio_pwmaudioout_obj_t *self) { for (size_t i = 0; i < MP_ARRAY_SIZE(active_audio); i++) { if (!active_audio[i]) { active_audio[i] = self; @@ -52,7 +52,7 @@ STATIC void activate_audiopwmout_obj(audiopwmio_pwmaudioout_obj_t *self) { } } } -STATIC void deactivate_audiopwmout_obj(audiopwmio_pwmaudioout_obj_t *self) { +static void deactivate_audiopwmout_obj(audiopwmio_pwmaudioout_obj_t *self) { // Turn off the interrupts to the CPU. self->pwm->INTENCLR = PWM_INTENSET_SEQSTARTED0_Msk | PWM_INTENSET_SEQSTARTED1_Msk; for (size_t i = 0; i < MP_ARRAY_SIZE(active_audio); i++) { @@ -63,7 +63,7 @@ STATIC void deactivate_audiopwmout_obj(audiopwmio_pwmaudioout_obj_t *self) { } } -STATIC void fill_buffers(audiopwmio_pwmaudioout_obj_t *self, int buf) { +static void fill_buffers(audiopwmio_pwmaudioout_obj_t *self, int buf) { uint16_t *dev_buffer = self->buffers[buf]; uint8_t *buffer; uint32_t buffer_length; @@ -112,7 +112,7 @@ STATIC void fill_buffers(audiopwmio_pwmaudioout_obj_t *self, int buf) { } } -STATIC void audiopwmout_background_obj(audiopwmio_pwmaudioout_obj_t *self) { +static void audiopwmout_background_obj(audiopwmio_pwmaudioout_obj_t *self) { if (!common_hal_audiopwmio_pwmaudioout_get_playing(self)) { return; } diff --git a/ports/nordic/common-hal/busio/I2C.c b/ports/nordic/common-hal/busio/I2C.c index a71e320377c2..b0956e7d20ab 100644 --- a/ports/nordic/common-hal/busio/I2C.c +++ b/ports/nordic/common-hal/busio/I2C.c @@ -23,7 +23,7 @@ #define I2C_MAX_XFER_LEN MIN(((1UL << TWIM0_EASYDMA_MAXCNT_SIZE) - 1), 1024) #define I2C_TIMEOUT 1000 // 1 second timeout -STATIC twim_peripheral_t twim_peripherals[] = { +static twim_peripheral_t twim_peripherals[] = { #if NRFX_CHECK(NRFX_TWIM0_ENABLED) // SPIM0 and TWIM0 share an address. { .twim = NRFX_TWIM_INSTANCE(0), @@ -40,7 +40,7 @@ STATIC twim_peripheral_t twim_peripherals[] = { #endif }; -STATIC bool never_reset[MP_ARRAY_SIZE(twim_peripherals)]; +static bool never_reset[MP_ARRAY_SIZE(twim_peripherals)]; void i2c_reset(void) { for (size_t i = 0; i < MP_ARRAY_SIZE(twim_peripherals); i++) { @@ -234,7 +234,7 @@ void common_hal_busio_i2c_unlock(busio_i2c_obj_t *self) { self->has_lock = false; } -STATIC nrfx_err_t _twim_xfer_with_timeout(busio_i2c_obj_t *self, nrfx_twim_xfer_desc_t const *p_xfer_desc, uint32_t flags) { +static nrfx_err_t _twim_xfer_with_timeout(busio_i2c_obj_t *self, nrfx_twim_xfer_desc_t const *p_xfer_desc, uint32_t flags) { // does non-blocking transfer and raises and exception if it takes longer than I2C_TIMEOUT ms to complete uint64_t deadline = supervisor_ticks_ms64() + I2C_TIMEOUT; nrfx_err_t err = NRFX_SUCCESS; @@ -265,7 +265,7 @@ STATIC nrfx_err_t _twim_xfer_with_timeout(busio_i2c_obj_t *self, nrfx_twim_xfer_ } } -STATIC uint8_t _common_hal_busio_i2c_write(busio_i2c_obj_t *self, uint16_t addr, const uint8_t *data, size_t len, bool stopBit) { +static uint8_t _common_hal_busio_i2c_write(busio_i2c_obj_t *self, uint16_t addr, const uint8_t *data, size_t len, bool stopBit) { if (len == 0) { return common_hal_busio_i2c_probe(self, addr) ? 0 : MP_ENODEV; } diff --git a/ports/nordic/common-hal/busio/SPI.c b/ports/nordic/common-hal/busio/SPI.c index f2613b677610..23e06c6481d1 100644 --- a/ports/nordic/common-hal/busio/SPI.c +++ b/ports/nordic/common-hal/busio/SPI.c @@ -31,7 +31,7 @@ #endif // These are in order from highest available frequency to lowest (32MHz first, then 8MHz). -STATIC const spim_peripheral_t spim_peripherals[] = { +static const spim_peripheral_t spim_peripherals[] = { #if NRFX_CHECK(NRFX_SPIM3_ENABLED) // SPIM3 exists only on nRF52840 and supports 32MHz max. All other SPIM's are only 8MHz max. // Allocate SPIM3 first. @@ -59,11 +59,11 @@ STATIC const spim_peripheral_t spim_peripherals[] = { #endif }; -STATIC bool never_reset[MP_ARRAY_SIZE(spim_peripherals)]; +static bool never_reset[MP_ARRAY_SIZE(spim_peripherals)]; // Separate RAM area for SPIM3 transmit buffer to avoid SPIM3 hardware errata. // https://infocenter.nordicsemi.com/index.jsp?topic=%2Ferrata_nRF52840_Rev2%2FERR%2FnRF52840%2FRev2%2Flatest%2Fanomaly_840_198.html -STATIC uint8_t *spim3_transmit_buffer = (uint8_t *)SPIM3_BUFFER_RAM_START_ADDR; +static uint8_t *spim3_transmit_buffer = (uint8_t *)SPIM3_BUFFER_RAM_START_ADDR; void spi_reset(void) { for (size_t i = 0; i < MP_ARRAY_SIZE(spim_peripherals); i++) { diff --git a/ports/nordic/common-hal/microcontroller/Pin.c b/ports/nordic/common-hal/microcontroller/Pin.c index c5b687d80a36..8043d2dfd4d6 100644 --- a/ports/nordic/common-hal/microcontroller/Pin.c +++ b/ports/nordic/common-hal/microcontroller/Pin.c @@ -17,10 +17,10 @@ bool speaker_enable_in_use; #endif // Bit mask of claimed pins on each of up to two ports. nrf52832 has one port; nrf52840 has two. -STATIC uint32_t claimed_pins[GPIO_COUNT]; -STATIC uint32_t never_reset_pins[GPIO_COUNT]; +static uint32_t claimed_pins[GPIO_COUNT]; +static uint32_t never_reset_pins[GPIO_COUNT]; -STATIC void reset_speaker_enable_pin(void) { +static void reset_speaker_enable_pin(void) { #ifdef SPEAKER_ENABLE_PIN speaker_enable_in_use = false; nrf_gpio_cfg(SPEAKER_ENABLE_PIN->number, diff --git a/ports/nordic/common-hal/microcontroller/__init__.c b/ports/nordic/common-hal/microcontroller/__init__.c index ca5b82ff6bb8..69024cbb296e 100644 --- a/ports/nordic/common-hal/microcontroller/__init__.c +++ b/ports/nordic/common-hal/microcontroller/__init__.c @@ -106,7 +106,7 @@ watchdog_watchdogtimer_obj_t common_hal_mcu_watchdogtimer_obj = { }; #endif -STATIC const mp_rom_map_elem_t mcu_pin_globals_table[] = { +static const mp_rom_map_elem_t mcu_pin_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_P0_00), MP_ROM_PTR(&pin_P0_00) }, { MP_ROM_QSTR(MP_QSTR_P0_01), MP_ROM_PTR(&pin_P0_01) }, { MP_ROM_QSTR(MP_QSTR_P0_02), MP_ROM_PTR(&pin_P0_02) }, diff --git a/ports/nordic/common-hal/os/__init__.c b/ports/nordic/common-hal/os/__init__.c index d3b589521307..78aa1e040cf8 100644 --- a/ports/nordic/common-hal/os/__init__.c +++ b/ports/nordic/common-hal/os/__init__.c @@ -17,18 +17,18 @@ #include "nrf_rng.h" -STATIC const qstr os_uname_info_fields[] = { +static const qstr os_uname_info_fields[] = { MP_QSTR_sysname, MP_QSTR_nodename, MP_QSTR_release, MP_QSTR_version, MP_QSTR_machine }; -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_sysname_obj, "nrf52"); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_nodename_obj, "nrf52"); +static const MP_DEFINE_STR_OBJ(os_uname_info_sysname_obj, "nrf52"); +static const MP_DEFINE_STR_OBJ(os_uname_info_nodename_obj, "nrf52"); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_release_obj, MICROPY_VERSION_STRING); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_version_obj, MICROPY_GIT_TAG " on " MICROPY_BUILD_DATE); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_machine_obj, MICROPY_HW_BOARD_NAME " with " MICROPY_HW_MCU_NAME); +static const MP_DEFINE_STR_OBJ(os_uname_info_release_obj, MICROPY_VERSION_STRING); +static const MP_DEFINE_STR_OBJ(os_uname_info_version_obj, MICROPY_GIT_TAG " on " MICROPY_BUILD_DATE); +static const MP_DEFINE_STR_OBJ(os_uname_info_machine_obj, MICROPY_HW_BOARD_NAME " with " MICROPY_HW_MCU_NAME); -STATIC MP_DEFINE_ATTRTUPLE( +static MP_DEFINE_ATTRTUPLE( os_uname_info_obj, os_uname_info_fields, 5, diff --git a/ports/nordic/common-hal/pwmio/PWMOut.c b/ports/nordic/common-hal/pwmio/PWMOut.c index 2deb946aec00..6dc7ff56c712 100644 --- a/ports/nordic/common-hal/pwmio/PWMOut.c +++ b/ports/nordic/common-hal/pwmio/PWMOut.c @@ -15,7 +15,7 @@ #define PWM_MAX_FREQ (16000000) -STATIC NRF_PWM_Type *pwms[] = { +static NRF_PWM_Type *pwms[] = { #if NRFX_CHECK(NRFX_PWM0_ENABLED) NRF_PWM0, #endif @@ -32,11 +32,11 @@ STATIC NRF_PWM_Type *pwms[] = { #define CHANNELS_PER_PWM 4 -STATIC uint16_t pwm_seq[MP_ARRAY_SIZE(pwms)][CHANNELS_PER_PWM]; +static uint16_t pwm_seq[MP_ARRAY_SIZE(pwms)][CHANNELS_PER_PWM]; static uint8_t never_reset_pwm[MP_ARRAY_SIZE(pwms)]; -STATIC int pwm_idx(NRF_PWM_Type *pwm) { +static int pwm_idx(NRF_PWM_Type *pwm) { for (size_t i = 0; i < MP_ARRAY_SIZE(pwms); i++) { if (pwms[i] == pwm) { return i; @@ -51,7 +51,7 @@ void common_hal_pwmio_pwmout_never_reset(pwmio_pwmout_obj_t *self) { common_hal_never_reset_pin(self->pin); } -STATIC void reset_single_pwmout(uint8_t i) { +static void reset_single_pwmout(uint8_t i) { NRF_PWM_Type *pwm = pwms[i]; pwm->ENABLE = 0; @@ -79,7 +79,7 @@ STATIC void reset_single_pwmout(uint8_t i) { // Find the smallest prescaler value that will allow the divisor to be in range. // This allows the most accuracy. -STATIC bool convert_frequency(uint32_t frequency, uint16_t *countertop, nrf_pwm_clk_t *base_clock) { +static bool convert_frequency(uint32_t frequency, uint16_t *countertop, nrf_pwm_clk_t *base_clock) { uint32_t divisor = 1; // Use a 32-bit number so we don't overflow the uint16_t; uint32_t tentative_countertop; diff --git a/ports/nordic/common-hal/watchdog/WatchDogTimer.c b/ports/nordic/common-hal/watchdog/WatchDogTimer.c index 86d844c38fcb..b20aa0c06294 100644 --- a/ports/nordic/common-hal/watchdog/WatchDogTimer.c +++ b/ports/nordic/common-hal/watchdog/WatchDogTimer.c @@ -26,12 +26,12 @@ #include "nrfx_wdt.h" #include "nrfx_timer.h" -STATIC uint8_t timer_refcount = 0; -STATIC nrfx_timer_t *timer = NULL; -STATIC nrfx_wdt_t wdt = NRFX_WDT_INSTANCE(0); -STATIC nrfx_wdt_channel_id wdt_channel_id; +static uint8_t timer_refcount = 0; +static nrfx_timer_t *timer = NULL; +static nrfx_wdt_t wdt = NRFX_WDT_INSTANCE(0); +static nrfx_wdt_channel_id wdt_channel_id; -STATIC void watchdogtimer_timer_event_handler(nrf_timer_event_t event_type, void *p_context) { +static void watchdogtimer_timer_event_handler(nrf_timer_event_t event_type, void *p_context) { watchdog_watchdogtimer_obj_t *self = MP_OBJ_TO_PTR(p_context); if (event_type != NRF_TIMER_EVENT_COMPARE0) { // Spurious event. @@ -61,7 +61,7 @@ static void timer_free(void) { // This function is called if the timer expires. The system will reboot // in 1/16384 of a second. Issue a reboot ourselves so we can do any // cleanup necessary. -STATIC void watchdogtimer_watchdog_event_handler(void) { +static void watchdogtimer_watchdog_event_handler(void) { reset_cpu(); } diff --git a/ports/nordic/peripherals/nrf/nvm.c b/ports/nordic/peripherals/nrf/nvm.c index 408c6a26c6b0..61a517f11523 100644 --- a/ports/nordic/peripherals/nrf/nvm.c +++ b/ports/nordic/peripherals/nrf/nvm.c @@ -18,7 +18,7 @@ #include "ble_drv.h" #include "nrf_sdm.h" -STATIC bool sd_is_enabled(void) { +static bool sd_is_enabled(void) { uint8_t sd_en = 0; if (__get_PRIMASK()) { return false; @@ -27,11 +27,11 @@ STATIC bool sd_is_enabled(void) { return sd_en; } -STATIC void sd_flash_operation_start(void) { +static void sd_flash_operation_start(void) { sd_flash_operation_status = SD_FLASH_OPERATION_IN_PROGRESS; } -STATIC sd_flash_operation_status_t sd_flash_operation_wait_until_done(void) { +static sd_flash_operation_status_t sd_flash_operation_wait_until_done(void) { // If the SD is not enabled, no events are generated, so just return immediately. if (sd_is_enabled()) { while (sd_flash_operation_status == SD_FLASH_OPERATION_IN_PROGRESS) { diff --git a/ports/nordic/peripherals/nrf/timers.c b/ports/nordic/peripherals/nrf/timers.c index bec70b6cb778..ec1bde658770 100644 --- a/ports/nordic/peripherals/nrf/timers.c +++ b/ports/nordic/peripherals/nrf/timers.c @@ -15,7 +15,7 @@ #include "py/mpconfig.h" #include "py/runtime.h" -STATIC nrfx_timer_t nrfx_timers[] = { +static nrfx_timer_t nrfx_timers[] = { #if NRFX_CHECK(NRFX_TIMER0_ENABLED) #error NRFX_TIMER0_ENABLED should not be on: TIMER0 is used by the SoftDevice NRFX_TIMER_INSTANCE(0), diff --git a/ports/nordic/supervisor/port.c b/ports/nordic/supervisor/port.c index 5722a9863f97..759cb8ed4259 100644 --- a/ports/nordic/supervisor/port.c +++ b/ports/nordic/supervisor/port.c @@ -75,7 +75,7 @@ static volatile struct { uint32_t suffix; } overflow_tracker __attribute__((section(".uninitialized"))); -STATIC void rtc_handler(nrfx_rtc_int_type_t int_type) { +static void rtc_handler(nrfx_rtc_int_type_t int_type) { if (int_type == NRFX_RTC_INT_OVERFLOW) { // Our RTC is 24 bits and we're clocking it at 32.768khz which is 32 (2 ** 5) subticks per // tick. @@ -94,7 +94,7 @@ STATIC void rtc_handler(nrfx_rtc_int_type_t int_type) { } } -STATIC void tick_init(void) { +static void tick_init(void) { if (!nrf_clock_lf_is_running(NRF_CLOCK)) { nrf_clock_task_trigger(NRF_CLOCK, NRF_CLOCK_TASK_LFCLKSTART); } @@ -115,7 +115,7 @@ STATIC void tick_init(void) { } } -STATIC void tick_uninit(void) { +static void tick_uninit(void) { nrfx_rtc_counter_clear(&rtc_instance); nrfx_rtc_disable(&rtc_instance); nrfx_rtc_uninit(&rtc_instance); diff --git a/ports/nordic/supervisor/qspi_flash.c b/ports/nordic/supervisor/qspi_flash.c index 83c8fd30a91a..3cff8b21a155 100644 --- a/ports/nordic/supervisor/qspi_flash.c +++ b/ports/nordic/supervisor/qspi_flash.c @@ -50,7 +50,7 @@ void qspi_disable(void) { } } -STATIC void qspi_enable(void) { +static void qspi_enable(void) { if (NRF_QSPI->ENABLE) { return; } diff --git a/ports/raspberrypi/audio_dma.c b/ports/raspberrypi/audio_dma.c index 8ea45ae8409a..66a0d98627c6 100644 --- a/ports/raspberrypi/audio_dma.c +++ b/ports/raspberrypi/audio_dma.c @@ -30,7 +30,7 @@ void audio_dma_reset(void) { } -STATIC size_t audio_dma_convert_samples(audio_dma_t *dma, uint8_t *input, uint32_t input_length, uint8_t *output, uint32_t output_length) { +static size_t audio_dma_convert_samples(audio_dma_t *dma, uint8_t *input, uint32_t input_length, uint8_t *output, uint32_t output_length) { #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wcast-align" @@ -115,7 +115,7 @@ STATIC size_t audio_dma_convert_samples(audio_dma_t *dma, uint8_t *input, uint32 } // buffer_idx is 0 or 1. -STATIC void audio_dma_load_next_block(audio_dma_t *dma, size_t buffer_idx) { +static void audio_dma_load_next_block(audio_dma_t *dma, size_t buffer_idx) { size_t dma_channel = dma->channel[buffer_idx]; audioio_get_buffer_result_t get_buffer_result; @@ -432,7 +432,7 @@ bool audio_dma_get_playing(audio_dma_t *dma) { // background tasks such as this and causes a stack overflow. // NOTE(dhalbert): I successfully printed from here while debugging. // So it's possible, but be careful. -STATIC void dma_callback_fun(void *arg) { +static void dma_callback_fun(void *arg) { audio_dma_t *dma = arg; if (dma == NULL) { return; diff --git a/ports/raspberrypi/bindings/cyw43/__init__.c b/ports/raspberrypi/bindings/cyw43/__init__.c index 6f3d8163d27b..83aacdc48aed 100644 --- a/ports/raspberrypi/bindings/cyw43/__init__.c +++ b/ports/raspberrypi/bindings/cyw43/__init__.c @@ -80,21 +80,21 @@ MP_DEFINE_CONST_OBJ_TYPE( //| usage. //| """ //| -STATIC mp_obj_t cyw43_set_power_management(const mp_obj_t value_in) { +static mp_obj_t cyw43_set_power_management(const mp_obj_t value_in) { mp_int_t value = mp_obj_get_int(value_in); power_management_value = value; bindings_cyw43_wifi_enforce_pm(); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(cyw43_set_power_management_obj, cyw43_set_power_management); +static MP_DEFINE_CONST_FUN_OBJ_1(cyw43_set_power_management_obj, cyw43_set_power_management); //| def get_power_management() -> int: //| """Retrieve the power management register""" //| -STATIC mp_obj_t cyw43_get_power_management() { +static mp_obj_t cyw43_get_power_management() { return mp_obj_new_int(power_management_value); } -STATIC MP_DEFINE_CONST_FUN_OBJ_0(cyw43_get_power_management_obj, cyw43_get_power_management); +static MP_DEFINE_CONST_FUN_OBJ_0(cyw43_get_power_management_obj, cyw43_get_power_management); const mcu_pin_obj_t *validate_obj_is_pin_including_cyw43(mp_obj_t obj, qstr arg_name) { if (!mp_obj_is_type(obj, &mcu_pin_type) && !mp_obj_is_type(obj, &cyw43_pin_type)) { @@ -117,7 +117,7 @@ const mcu_pin_obj_t *validate_obj_is_free_pin_including_cyw43(mp_obj_t obj, qstr return pin; } -STATIC const mp_rom_map_elem_t cyw43_module_globals_table[] = { +static const mp_rom_map_elem_t cyw43_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_cyw43) }, { MP_ROM_QSTR(MP_QSTR_CywPin), MP_ROM_PTR(&cyw43_pin_type) }, { MP_ROM_QSTR(MP_QSTR_set_power_management), &cyw43_set_power_management_obj }, @@ -128,7 +128,7 @@ STATIC const mp_rom_map_elem_t cyw43_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_PM_DISABLED), MP_ROM_INT(PM_DISABLED) }, }; -STATIC MP_DEFINE_CONST_DICT(cyw43_module_globals, cyw43_module_globals_table); +static MP_DEFINE_CONST_DICT(cyw43_module_globals, cyw43_module_globals_table); const mp_obj_module_t cyw43_module = { .base = { &mp_type_module }, diff --git a/ports/raspberrypi/bindings/picodvi/Framebuffer.c b/ports/raspberrypi/bindings/picodvi/Framebuffer.c index e13dccb013c4..b0ea6ef43f82 100644 --- a/ports/raspberrypi/bindings/picodvi/Framebuffer.c +++ b/ports/raspberrypi/bindings/picodvi/Framebuffer.c @@ -74,7 +74,7 @@ //| and 8 or 16 for color //| """ -STATIC mp_obj_t picodvi_framebuffer_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t picodvi_framebuffer_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_width, ARG_height, ARG_clk_dp, ARG_clk_dn, ARG_red_dp, ARG_red_dn, ARG_green_dp, ARG_green_dn, ARG_blue_dp, ARG_blue_dn, ARG_color_depth }; static const mp_arg_t allowed_args[] = { @@ -124,13 +124,13 @@ STATIC mp_obj_t picodvi_framebuffer_make_new(const mp_obj_type_t *type, size_t n //| `picodvi.Framebuffer` instance. After deinitialization, no further operations //| may be performed.""" //| ... -STATIC mp_obj_t picodvi_framebuffer_deinit(mp_obj_t self_in) { +static mp_obj_t picodvi_framebuffer_deinit(mp_obj_t self_in) { picodvi_framebuffer_obj_t *self = (picodvi_framebuffer_obj_t *)self_in; common_hal_picodvi_framebuffer_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(picodvi_framebuffer_deinit_obj, picodvi_framebuffer_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(picodvi_framebuffer_deinit_obj, picodvi_framebuffer_deinit); static void check_for_deinit(picodvi_framebuffer_obj_t *self) { if (common_hal_picodvi_framebuffer_deinited(self)) { @@ -140,7 +140,7 @@ static void check_for_deinit(picodvi_framebuffer_obj_t *self) { //| width: int //| """The width of the framebuffer, in pixels. It may be doubled for output.""" -STATIC mp_obj_t picodvi_framebuffer_get_width(mp_obj_t self_in) { +static mp_obj_t picodvi_framebuffer_get_width(mp_obj_t self_in) { picodvi_framebuffer_obj_t *self = (picodvi_framebuffer_obj_t *)self_in; check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_picodvi_framebuffer_get_width(self)); @@ -152,7 +152,7 @@ MP_PROPERTY_GETTER(picodvi_framebuffer_width_obj, //| height: int //| """The width of the framebuffer, in pixels. It may be doubled for output.""" //| -STATIC mp_obj_t picodvi_framebuffer_get_height(mp_obj_t self_in) { +static mp_obj_t picodvi_framebuffer_get_height(mp_obj_t self_in) { picodvi_framebuffer_obj_t *self = (picodvi_framebuffer_obj_t *)self_in; check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_picodvi_framebuffer_get_height(self)); @@ -162,59 +162,59 @@ MP_DEFINE_CONST_FUN_OBJ_1(picodvi_framebuffer_get_height_obj, picodvi_framebuffe MP_PROPERTY_GETTER(picodvi_framebuffer_height_obj, (mp_obj_t)&picodvi_framebuffer_get_height_obj); -STATIC const mp_rom_map_elem_t picodvi_framebuffer_locals_dict_table[] = { +static const mp_rom_map_elem_t picodvi_framebuffer_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&picodvi_framebuffer_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR_width), MP_ROM_PTR(&picodvi_framebuffer_width_obj) }, { MP_ROM_QSTR(MP_QSTR_height), MP_ROM_PTR(&picodvi_framebuffer_height_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(picodvi_framebuffer_locals_dict, picodvi_framebuffer_locals_dict_table); +static MP_DEFINE_CONST_DICT(picodvi_framebuffer_locals_dict, picodvi_framebuffer_locals_dict_table); -STATIC void picodvi_framebuffer_get_bufinfo(mp_obj_t self_in, mp_buffer_info_t *bufinfo) { +static void picodvi_framebuffer_get_bufinfo(mp_obj_t self_in, mp_buffer_info_t *bufinfo) { common_hal_picodvi_framebuffer_get_buffer(self_in, bufinfo, 0); } // These versions exist so that the prototype matches the protocol, // avoiding a type cast that can hide errors -STATIC void picodvi_framebuffer_swapbuffers(mp_obj_t self_in, uint8_t *dirty_row_bitmap) { +static void picodvi_framebuffer_swapbuffers(mp_obj_t self_in, uint8_t *dirty_row_bitmap) { (void)dirty_row_bitmap; common_hal_picodvi_framebuffer_refresh(self_in); } -STATIC void picodvi_framebuffer_deinit_proto(mp_obj_t self_in) { +static void picodvi_framebuffer_deinit_proto(mp_obj_t self_in) { common_hal_picodvi_framebuffer_deinit(self_in); } -STATIC int picodvi_framebuffer_get_width_proto(mp_obj_t self_in) { +static int picodvi_framebuffer_get_width_proto(mp_obj_t self_in) { return common_hal_picodvi_framebuffer_get_width(self_in); } -STATIC int picodvi_framebuffer_get_height_proto(mp_obj_t self_in) { +static int picodvi_framebuffer_get_height_proto(mp_obj_t self_in) { return common_hal_picodvi_framebuffer_get_height(self_in); } -STATIC int picodvi_framebuffer_get_color_depth_proto(mp_obj_t self_in) { +static int picodvi_framebuffer_get_color_depth_proto(mp_obj_t self_in) { return common_hal_picodvi_framebuffer_get_color_depth(self_in); ; } -STATIC int picodvi_framebuffer_get_bytes_per_cell_proto(mp_obj_t self_in) { +static int picodvi_framebuffer_get_bytes_per_cell_proto(mp_obj_t self_in) { return 1; } -STATIC int picodvi_framebuffer_get_native_frames_per_second_proto(mp_obj_t self_in) { +static int picodvi_framebuffer_get_native_frames_per_second_proto(mp_obj_t self_in) { return 60; } -STATIC bool picodvi_framebuffer_get_pixels_in_byte_share_row_proto(mp_obj_t self_in) { +static bool picodvi_framebuffer_get_pixels_in_byte_share_row_proto(mp_obj_t self_in) { return true; } -STATIC int picodvi_framebuffer_get_row_stride_proto(mp_obj_t self_in) { +static int picodvi_framebuffer_get_row_stride_proto(mp_obj_t self_in) { return common_hal_picodvi_framebuffer_get_row_stride(self_in); } -STATIC const framebuffer_p_t picodvi_framebuffer_proto = { +static const framebuffer_p_t picodvi_framebuffer_proto = { MP_PROTO_IMPLEMENT(MP_QSTR_protocol_framebuffer) .get_bufinfo = picodvi_framebuffer_get_bufinfo, .get_width = picodvi_framebuffer_get_width_proto, diff --git a/ports/raspberrypi/bindings/picodvi/__init__.c b/ports/raspberrypi/bindings/picodvi/__init__.c index 0db3d29044d5..43617de1a8b0 100644 --- a/ports/raspberrypi/bindings/picodvi/__init__.c +++ b/ports/raspberrypi/bindings/picodvi/__init__.c @@ -13,12 +13,12 @@ //| """Low-level routines for interacting with PicoDVI Output""" -STATIC const mp_rom_map_elem_t picodvi_module_globals_table[] = { +static const mp_rom_map_elem_t picodvi_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_picodvi) }, { MP_ROM_QSTR(MP_QSTR_Framebuffer), MP_ROM_PTR(&picodvi_framebuffer_type) }, }; -STATIC MP_DEFINE_CONST_DICT(picodvi_module_globals, picodvi_module_globals_table); +static MP_DEFINE_CONST_DICT(picodvi_module_globals, picodvi_module_globals_table); const mp_obj_module_t picodvi_module = { .base = { &mp_type_module }, diff --git a/ports/raspberrypi/bindings/rp2pio/StateMachine.c b/ports/raspberrypi/bindings/rp2pio/StateMachine.c index 14d79f1507f0..032b67db1594 100644 --- a/ports/raspberrypi/bindings/rp2pio/StateMachine.c +++ b/ports/raspberrypi/bindings/rp2pio/StateMachine.c @@ -137,7 +137,7 @@ //| """ //| ... -STATIC mp_obj_t rp2pio_statemachine_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t rp2pio_statemachine_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { rp2pio_statemachine_obj_t *self = mp_obj_malloc(rp2pio_statemachine_obj_t, &rp2pio_statemachine_type); enum { ARG_program, ARG_frequency, ARG_init, ARG_may_exec, ARG_first_out_pin, ARG_out_pin_count, ARG_initial_out_pin_state, ARG_initial_out_pin_direction, @@ -278,7 +278,7 @@ STATIC mp_obj_t rp2pio_statemachine_make_new(const mp_obj_type_t *type, size_t n //| def deinit(self) -> None: //| """Turn off the state machine and release its resources.""" //| ... -STATIC mp_obj_t rp2pio_statemachine_obj_deinit(mp_obj_t self_in) { +static mp_obj_t rp2pio_statemachine_obj_deinit(mp_obj_t self_in) { rp2pio_statemachine_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_rp2pio_statemachine_deinit(self); return mp_const_none; @@ -294,15 +294,15 @@ MP_DEFINE_CONST_FUN_OBJ_1(rp2pio_statemachine_deinit_obj, rp2pio_statemachine_ob //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t rp2pio_statemachine_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t rp2pio_statemachine_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_rp2pio_statemachine_deinit(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(rp2pio_statemachine_obj___exit___obj, 4, 4, rp2pio_statemachine_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(rp2pio_statemachine_obj___exit___obj, 4, 4, rp2pio_statemachine_obj___exit__); -STATIC void check_for_deinit(rp2pio_statemachine_obj_t *self) { +static void check_for_deinit(rp2pio_statemachine_obj_t *self) { if (common_hal_rp2pio_statemachine_deinited(self)) { raise_deinited_error(); } @@ -312,7 +312,7 @@ STATIC void check_for_deinit(rp2pio_statemachine_obj_t *self) { //| """Resets this state machine, runs any init and enables the clock.""" //| ... // TODO: "and any others given. They must share an underlying PIO. An exception will be raised otherwise."" -STATIC mp_obj_t rp2pio_statemachine_restart(mp_obj_t self_obj) { +static mp_obj_t rp2pio_statemachine_restart(mp_obj_t self_obj) { rp2pio_statemachine_obj_t *self = MP_OBJ_TO_PTR(self_obj); check_for_deinit(self); @@ -329,7 +329,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(rp2pio_statemachine_restart_obj, rp2pio_statemachine_r //| This can be used to output internal state to the RX FIFO and then //| read with `readinto`.""" //| ... -STATIC mp_obj_t rp2pio_statemachine_run(mp_obj_t self_obj, mp_obj_t instruction_obj) { +static mp_obj_t rp2pio_statemachine_run(mp_obj_t self_obj, mp_obj_t instruction_obj) { rp2pio_statemachine_obj_t *self = MP_OBJ_TO_PTR(self_obj); check_for_deinit(self); @@ -347,7 +347,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(rp2pio_statemachine_run_obj, rp2pio_statemachine_run); //| def stop(self) -> None: //| """Stops the state machine clock. Use `restart` to enable it.""" //| ... -STATIC mp_obj_t rp2pio_statemachine_stop(mp_obj_t self_obj) { +static mp_obj_t rp2pio_statemachine_stop(mp_obj_t self_obj) { rp2pio_statemachine_obj_t *self = MP_OBJ_TO_PTR(self_obj); check_for_deinit(self); @@ -378,7 +378,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(rp2pio_statemachine_stop_obj, rp2pio_statemachine_stop //| :param int end: End of the slice; this index is not included. Defaults to ``len(buffer)`` //| :param bool swap: For 2- and 4-byte elements, swap (reverse) the byte order""" //| ... -STATIC mp_obj_t rp2pio_statemachine_write(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t rp2pio_statemachine_write(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_buffer, ARG_start, ARG_end, ARG_swap }; static const mp_arg_t allowed_args[] = { { MP_QSTR_buffer, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} }, @@ -465,7 +465,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(rp2pio_statemachine_write_obj, 2, rp2pio_statemachine //| """ //| ... -STATIC void fill_buf_info(sm_buf_info *info, mp_obj_t obj, size_t *stride_in_bytes) { +static void fill_buf_info(sm_buf_info *info, mp_obj_t obj, size_t *stride_in_bytes) { if (obj != mp_const_none) { info->obj = obj; mp_get_buffer_raise(obj, &info->info, MP_BUFFER_READ); @@ -482,7 +482,7 @@ STATIC void fill_buf_info(sm_buf_info *info, mp_obj_t obj, size_t *stride_in_byt } } -STATIC mp_obj_t rp2pio_statemachine_background_write(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t rp2pio_statemachine_background_write(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_once, ARG_loop, ARG_swap }; static const mp_arg_t allowed_args[] = { { MP_QSTR_once, MP_ARG_OBJ, {.u_obj = mp_const_none} }, @@ -519,7 +519,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(rp2pio_statemachine_background_write_obj, 1, rp2pio_s //| """Immediately stop a background write, if one is in progress. Any //| DMA in progress is halted, but items already in the TX FIFO are not //| affected.""" -STATIC mp_obj_t rp2pio_statemachine_obj_stop_background_write(mp_obj_t self_in) { +static mp_obj_t rp2pio_statemachine_obj_stop_background_write(mp_obj_t self_in) { rp2pio_statemachine_obj_t *self = MP_OBJ_TO_PTR(self_in); bool ok = common_hal_rp2pio_statemachine_stop_background_write(self); if (mp_hal_is_interrupted()) { @@ -534,7 +534,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(rp2pio_statemachine_stop_background_write_obj, rp2pio_ //| writing: bool //| """Returns True if a background write is in progress""" -STATIC mp_obj_t rp2pio_statemachine_obj_get_writing(mp_obj_t self_in) { +static mp_obj_t rp2pio_statemachine_obj_get_writing(mp_obj_t self_in) { rp2pio_statemachine_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bool(common_hal_rp2pio_statemachine_get_writing(self)); } @@ -552,7 +552,7 @@ const mp_obj_property_t rp2pio_statemachine_writing_obj = { //| """Returns the number of pending buffers for background writing. //| //| If the number is 0, then a `StateMachine.background_write` call will not block.""" -STATIC mp_obj_t rp2pio_statemachine_obj_get_pending(mp_obj_t self_in) { +static mp_obj_t rp2pio_statemachine_obj_get_pending(mp_obj_t self_in) { rp2pio_statemachine_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_int(common_hal_rp2pio_statemachine_get_pending(self)); } @@ -590,7 +590,7 @@ const mp_obj_property_t rp2pio_statemachine_pending_obj = { //| :param bool swap: For 2- and 4-byte elements, swap (reverse) the byte order""" //| ... -STATIC mp_obj_t rp2pio_statemachine_readinto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t rp2pio_statemachine_readinto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_buffer, ARG_start, ARG_end, ARG_swap }; static const mp_arg_t allowed_args[] = { { MP_QSTR_buffer, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} }, @@ -660,7 +660,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(rp2pio_statemachine_readinto_obj, 2, rp2pio_statemach //| """ //| ... -STATIC mp_obj_t rp2pio_statemachine_write_readinto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t rp2pio_statemachine_write_readinto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_buffer_out, ARG_buffer_in, ARG_out_start, ARG_out_end, ARG_in_start, ARG_in_end, ARG_swap_out, ARG_swap_in }; static const mp_arg_t allowed_args[] = { { MP_QSTR_buffer_out, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} }, @@ -724,7 +724,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(rp2pio_statemachine_write_readinto_obj, 2, rp2pio_sta //| def clear_rxfifo(self) -> None: //| """Clears any unread bytes in the rxfifo.""" //| ... -STATIC mp_obj_t rp2pio_statemachine_obj_clear_rxfifo(mp_obj_t self_in) { +static mp_obj_t rp2pio_statemachine_obj_clear_rxfifo(mp_obj_t self_in) { rp2pio_statemachine_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_rp2pio_statemachine_clear_rxfifo(self); return mp_const_none; @@ -734,7 +734,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(rp2pio_statemachine_clear_rxfifo_obj, rp2pio_statemach //| def clear_txstall(self) -> None: //| """Clears the txstall flag.""" //| ... -STATIC mp_obj_t rp2pio_statemachine_obj_clear_txstall(mp_obj_t self_in) { +static mp_obj_t rp2pio_statemachine_obj_clear_txstall(mp_obj_t self_in) { rp2pio_statemachine_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_rp2pio_statemachine_clear_txstall(self); return mp_const_none; @@ -746,14 +746,14 @@ MP_DEFINE_CONST_FUN_OBJ_1(rp2pio_statemachine_clear_txstall_obj, rp2pio_statemac //| """The actual state machine frequency. This may not match the frequency requested //| due to internal limitations.""" -STATIC mp_obj_t rp2pio_statemachine_obj_get_frequency(mp_obj_t self_in) { +static mp_obj_t rp2pio_statemachine_obj_get_frequency(mp_obj_t self_in) { rp2pio_statemachine_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_rp2pio_statemachine_get_frequency(self)); } MP_DEFINE_CONST_FUN_OBJ_1(rp2pio_statemachine_get_frequency_obj, rp2pio_statemachine_obj_get_frequency); -STATIC mp_obj_t rp2pio_statemachine_obj_set_frequency(mp_obj_t self_in, mp_obj_t frequency) { +static mp_obj_t rp2pio_statemachine_obj_set_frequency(mp_obj_t self_in, mp_obj_t frequency) { rp2pio_statemachine_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -770,7 +770,7 @@ MP_PROPERTY_GETSET(rp2pio_statemachine_frequency_obj, //| """True when the state machine has stalled due to a full TX FIFO since the last //| `clear_txstall` call.""" -STATIC mp_obj_t rp2pio_statemachine_obj_get_txstall(mp_obj_t self_in) { +static mp_obj_t rp2pio_statemachine_obj_get_txstall(mp_obj_t self_in) { rp2pio_statemachine_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_rp2pio_statemachine_get_txstall(self)); @@ -789,7 +789,7 @@ const mp_obj_property_t rp2pio_statemachine_txstall_obj = { //| """True when the state machine has stalled due to a full RX FIFO since the last //| `clear_rxfifo` call.""" -STATIC mp_obj_t rp2pio_statemachine_obj_get_rxstall(mp_obj_t self_in) { +static mp_obj_t rp2pio_statemachine_obj_get_rxstall(mp_obj_t self_in) { rp2pio_statemachine_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_rp2pio_statemachine_get_rxstall(self)); @@ -803,7 +803,7 @@ MP_PROPERTY_GETTER(rp2pio_statemachine_rxstall_obj, //| """The number of words available to readinto""" //| -STATIC mp_obj_t rp2pio_statemachine_obj_get_in_waiting(mp_obj_t self_in) { +static mp_obj_t rp2pio_statemachine_obj_get_in_waiting(mp_obj_t self_in) { rp2pio_statemachine_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_rp2pio_statemachine_get_in_waiting(self)); @@ -813,7 +813,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(rp2pio_statemachine_get_in_waiting_obj, rp2pio_statema MP_PROPERTY_GETTER(rp2pio_statemachine_in_waiting_obj, (mp_obj_t)&rp2pio_statemachine_get_in_waiting_obj); -STATIC const mp_rom_map_elem_t rp2pio_statemachine_locals_dict_table[] = { +static const mp_rom_map_elem_t rp2pio_statemachine_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&rp2pio_statemachine_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&rp2pio_statemachine_obj___exit___obj) }, @@ -837,7 +837,7 @@ STATIC const mp_rom_map_elem_t rp2pio_statemachine_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_txstall), MP_ROM_PTR(&rp2pio_statemachine_txstall_obj) }, { MP_ROM_QSTR(MP_QSTR_in_waiting), MP_ROM_PTR(&rp2pio_statemachine_in_waiting_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(rp2pio_statemachine_locals_dict, rp2pio_statemachine_locals_dict_table); +static MP_DEFINE_CONST_DICT(rp2pio_statemachine_locals_dict, rp2pio_statemachine_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( rp2pio_statemachine_type, diff --git a/ports/raspberrypi/bindings/rp2pio/__init__.c b/ports/raspberrypi/bindings/rp2pio/__init__.c index e9702cd8a7ea..285919e0fd87 100644 --- a/ports/raspberrypi/bindings/rp2pio/__init__.c +++ b/ports/raspberrypi/bindings/rp2pio/__init__.c @@ -24,7 +24,7 @@ //| """Return True if the pins have sequential GPIO numbers, False otherwise""" //| ... //| -STATIC mp_obj_t rp2pio_pins_are_sequential(mp_obj_t pins_obj) { +static mp_obj_t rp2pio_pins_are_sequential(mp_obj_t pins_obj) { size_t len; mp_obj_t *items; mp_obj_get_array(pins_obj, &len, &items); @@ -37,15 +37,15 @@ STATIC mp_obj_t rp2pio_pins_are_sequential(mp_obj_t pins_obj) { return mp_obj_new_bool(common_hal_rp2pio_pins_are_sequential(len, pins)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(rp2pio_pins_are_sequential_obj, rp2pio_pins_are_sequential); +static MP_DEFINE_CONST_FUN_OBJ_1(rp2pio_pins_are_sequential_obj, rp2pio_pins_are_sequential); -STATIC const mp_rom_map_elem_t rp2pio_module_globals_table[] = { +static const mp_rom_map_elem_t rp2pio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_rp2pio) }, { MP_ROM_QSTR(MP_QSTR_StateMachine), MP_ROM_PTR(&rp2pio_statemachine_type) }, { MP_ROM_QSTR(MP_QSTR_pins_are_sequential), MP_ROM_PTR(&rp2pio_pins_are_sequential_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(rp2pio_module_globals, rp2pio_module_globals_table); +static MP_DEFINE_CONST_DICT(rp2pio_module_globals, rp2pio_module_globals_table); const mp_obj_module_t rp2pio_module = { .base = { &mp_type_module }, diff --git a/ports/raspberrypi/boards/0xcb_helios/pins.c b/ports/raspberrypi/boards/0xcb_helios/pins.c index 2c3f663a6d00..4982d5b0bd17 100644 --- a/ports/raspberrypi/boards/0xcb_helios/pins.c +++ b/ports/raspberrypi/boards/0xcb_helios/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // Left side top to bottom diff --git a/ports/raspberrypi/boards/42keebs_frood/pins.c b/ports/raspberrypi/boards/42keebs_frood/pins.c index 9b774c63d805..454362505186 100644 --- a/ports/raspberrypi/boards/42keebs_frood/pins.c +++ b/ports/raspberrypi/boards/42keebs_frood/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) }, diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040/pins.c b/ports/raspberrypi/boards/adafruit_feather_rp2040/pins.c index 9ec97cb38dc8..02addc9aa351 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040/pins.c +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) }, diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_can/pins.c b/ports/raspberrypi/boards/adafruit_feather_rp2040_can/pins.c index 17eeb3d5bd32..a856a1f5211f 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_can/pins.c +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_can/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) }, diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/pins.c b/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/pins.c index 6e8dd5f0d106..82cbb7322e49 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/pins.c +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_dvi/pins.c @@ -8,7 +8,7 @@ #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) }, diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/pins.c b/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/pins.c index 91d3129d07a3..6691b408ad26 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/pins.c +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_prop_maker/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) }, diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/pins.c b/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/pins.c index fef18b262d5b..20077900dec1 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/pins.c +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_rfm/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) }, diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/pins.c b/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/pins.c index 0b7bf005b60a..5ee869e07555 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/pins.c +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_scorpio/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) }, diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/pins.c b/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/pins.c index 798f9e161922..465b7e51f468 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/pins.c +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_thinkink/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) }, diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/pins.c b/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/pins.c index b342597c9c54..ac4fbd595d65 100644 --- a/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/pins.c +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_usb_host/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) }, diff --git a/ports/raspberrypi/boards/adafruit_floppsy_rp2040/pins.c b/ports/raspberrypi/boards/adafruit_floppsy_rp2040/pins.c index 546a9a869ae8..800962637e5f 100644 --- a/ports/raspberrypi/boards/adafruit_floppsy_rp2040/pins.c +++ b/ports/raspberrypi/boards/adafruit_floppsy_rp2040/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_DENSITY), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/pins.c b/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/pins.c index 1be725d6f77f..96b797a44c3d 100644 --- a/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/pins.c +++ b/ports/raspberrypi/boards/adafruit_itsybitsy_rp2040/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) }, diff --git a/ports/raspberrypi/boards/adafruit_kb2040/pins.c b/ports/raspberrypi/boards/adafruit_kb2040/pins.c index ebdcff884b29..95d493b838fe 100644 --- a/ports/raspberrypi/boards/adafruit_kb2040/pins.c +++ b/ports/raspberrypi/boards/adafruit_kb2040/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) }, diff --git a/ports/raspberrypi/boards/adafruit_macropad_rp2040/pins.c b/ports/raspberrypi/boards/adafruit_macropad_rp2040/pins.c index 8b1698c5ad66..f5330dd9de0f 100644 --- a/ports/raspberrypi/boards/adafruit_macropad_rp2040/pins.c +++ b/ports/raspberrypi/boards/adafruit_macropad_rp2040/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_KEY1), MP_ROM_PTR(&pin_GPIO1) }, diff --git a/ports/raspberrypi/boards/adafruit_metro_rp2040/pins.c b/ports/raspberrypi/boards/adafruit_metro_rp2040/pins.c index 9e8e0b869ce0..859e7cacb08b 100644 --- a/ports/raspberrypi/boards/adafruit_metro_rp2040/pins.c +++ b/ports/raspberrypi/boards/adafruit_metro_rp2040/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) }, diff --git a/ports/raspberrypi/boards/adafruit_qt2040_trinkey/pins.c b/ports/raspberrypi/boards/adafruit_qt2040_trinkey/pins.c index 7de4a94529fa..966b7d4630f0 100644 --- a/ports/raspberrypi/boards/adafruit_qt2040_trinkey/pins.c +++ b/ports/raspberrypi/boards/adafruit_qt2040_trinkey/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO16) }, diff --git a/ports/raspberrypi/boards/adafruit_qtpy_rp2040/pins.c b/ports/raspberrypi/boards/adafruit_qtpy_rp2040/pins.c index a7f5351502c3..9018eebae783 100644 --- a/ports/raspberrypi/boards/adafruit_qtpy_rp2040/pins.c +++ b/ports/raspberrypi/boards/adafruit_qtpy_rp2040/pins.c @@ -8,7 +8,7 @@ CIRCUITPY_BOARD_BUS_SINGLETON(stemma_i2c, i2c, 1) -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO29) }, diff --git a/ports/raspberrypi/boards/arduino_nano_rp2040_connect/pins.c b/ports/raspberrypi/boards/arduino_nano_rp2040_connect/pins.c index b691015b7dec..91e44176daed 100644 --- a/ports/raspberrypi/boards/arduino_nano_rp2040_connect/pins.c +++ b/ports/raspberrypi/boards/arduino_nano_rp2040_connect/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/boardsource_blok/pins.c b/ports/raspberrypi/boards/boardsource_blok/pins.c index 8f62ad898715..e2594d9fcdb3 100644 --- a/ports/raspberrypi/boards/boardsource_blok/pins.c +++ b/ports/raspberrypi/boards/boardsource_blok/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS {MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO0)}, diff --git a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pins.c b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pins.c index 9ca4cbdfa282..e0cb2c151b9a 100644 --- a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pins.c +++ b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pins.c @@ -18,7 +18,7 @@ uint16_t vid_setting = 123; //| """Return a value set in board.c""" //| ... //| -STATIC mp_obj_t board_vid(void) { +static mp_obj_t board_vid(void) { return mp_obj_new_int(vid_setting); } MP_DEFINE_CONST_FUN_OBJ_0(board_vid_obj, board_vid); @@ -26,14 +26,14 @@ MP_DEFINE_CONST_FUN_OBJ_0(board_vid_obj, board_vid); #if 0 extern int dck01_vid_value; // will hold a computed value to identify any board variations (like different e-paper displays) -STATIC mp_obj_t board_vid(void) { +static mp_obj_t board_vid(void) { return mp_obj_new_int(dck01_vid_value); } MP_DEFINE_CONST_FUN_OBJ_0(board_vid_obj, board_vid); #endif -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/breadstick_raspberry/pins.c b/ports/raspberrypi/boards/breadstick_raspberry/pins.c index b067375b511c..b8b005b9ccca 100644 --- a/ports/raspberrypi/boards/breadstick_raspberry/pins.c +++ b/ports/raspberrypi/boards/breadstick_raspberry/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_D1_A1), MP_ROM_PTR(&pin_GPIO27) }, diff --git a/ports/raspberrypi/boards/bwshockley_figpi/pins.c b/ports/raspberrypi/boards/bwshockley_figpi/pins.c index 885b34085c75..abace6cc485a 100644 --- a/ports/raspberrypi/boards/bwshockley_figpi/pins.c +++ b/ports/raspberrypi/boards/bwshockley_figpi/pins.c @@ -8,7 +8,7 @@ CIRCUITPY_BOARD_BUS_SINGLETON(stemma_i2c, i2c, 1) -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO29) }, diff --git a/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/pins.c b/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/pins.c index 8f06debeff4d..2e3f3b418a52 100644 --- a/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/pins.c +++ b/ports/raspberrypi/boards/challenger_nb_rp2040_wifi/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // I2C diff --git a/ports/raspberrypi/boards/challenger_rp2040_lora/pins.c b/ports/raspberrypi/boards/challenger_rp2040_lora/pins.c index efe76e48b013..343e476c805b 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_lora/pins.c +++ b/ports/raspberrypi/boards/challenger_rp2040_lora/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/challenger_rp2040_lte/pins.c b/ports/raspberrypi/boards/challenger_rp2040_lte/pins.c index 3214d430f917..e2908a49143b 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_lte/pins.c +++ b/ports/raspberrypi/boards/challenger_rp2040_lte/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // I2C diff --git a/ports/raspberrypi/boards/challenger_rp2040_sdrtc/pins.c b/ports/raspberrypi/boards/challenger_rp2040_sdrtc/pins.c index 2bc6669c1661..23e84b4c0fa3 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_sdrtc/pins.c +++ b/ports/raspberrypi/boards/challenger_rp2040_sdrtc/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/challenger_rp2040_subghz/pins.c b/ports/raspberrypi/boards/challenger_rp2040_subghz/pins.c index e520deb45537..05b652977ac0 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_subghz/pins.c +++ b/ports/raspberrypi/boards/challenger_rp2040_subghz/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/challenger_rp2040_wifi/pins.c b/ports/raspberrypi/boards/challenger_rp2040_wifi/pins.c index a8aeabeb1473..222a645c16a2 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_wifi/pins.c +++ b/ports/raspberrypi/boards/challenger_rp2040_wifi/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/pins.c b/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/pins.c index 1a69bfd395fd..6a6d745ab579 100644 --- a/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/pins.c +++ b/ports/raspberrypi/boards/challenger_rp2040_wifi_ble/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/cosmo_pico/pins.c b/ports/raspberrypi/boards/cosmo_pico/pins.c index 246949c652cf..4e09dddfb169 100644 --- a/ports/raspberrypi/boards/cosmo_pico/pins.c +++ b/ports/raspberrypi/boards/cosmo_pico/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, { MP_ROM_QSTR(MP_QSTR_GP1), MP_ROM_PTR(&pin_GPIO1) }, diff --git a/ports/raspberrypi/boards/cytron_edu_pico_w/pins.c b/ports/raspberrypi/boards/cytron_edu_pico_w/pins.c index 5d044a9a2d28..9ce13b8518ce 100644 --- a/ports/raspberrypi/boards/cytron_edu_pico_w/pins.c +++ b/ports/raspberrypi/boards/cytron_edu_pico_w/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/cytron_maker_nano_rp2040/pins.c b/ports/raspberrypi/boards/cytron_maker_nano_rp2040/pins.c index bfbb72ab805c..fc29fad50a66 100644 --- a/ports/raspberrypi/boards/cytron_maker_nano_rp2040/pins.c +++ b/ports/raspberrypi/boards/cytron_maker_nano_rp2040/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/cytron_maker_pi_rp2040/pins.c b/ports/raspberrypi/boards/cytron_maker_pi_rp2040/pins.c index 7d4e42bf0254..53fae76ac1b4 100644 --- a/ports/raspberrypi/boards/cytron_maker_pi_rp2040/pins.c +++ b/ports/raspberrypi/boards/cytron_maker_pi_rp2040/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/cytron_maker_uno_rp2040/pins.c b/ports/raspberrypi/boards/cytron_maker_uno_rp2040/pins.c index 9f42d20c72e7..44dcc23b46cd 100644 --- a/ports/raspberrypi/boards/cytron_maker_uno_rp2040/pins.c +++ b/ports/raspberrypi/boards/cytron_maker_uno_rp2040/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/datanoise_picoadk/pins.c b/ports/raspberrypi/boards/datanoise_picoadk/pins.c index 8ca28c4df0fb..9f8e009e46b9 100644 --- a/ports/raspberrypi/boards/datanoise_picoadk/pins.c +++ b/ports/raspberrypi/boards/datanoise_picoadk/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO22) }, diff --git a/ports/raspberrypi/boards/e_fidget/pins.c b/ports/raspberrypi/boards/e_fidget/pins.c index ffbd5765a412..d478da0a6b58 100644 --- a/ports/raspberrypi/boards/e_fidget/pins.c +++ b/ports/raspberrypi/boards/e_fidget/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS {MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0)}, diff --git a/ports/raspberrypi/boards/elecfreaks_picoed/pins.c b/ports/raspberrypi/boards/elecfreaks_picoed/pins.c index 85869e85eafb..56f34922b3ef 100644 --- a/ports/raspberrypi/boards/elecfreaks_picoed/pins.c +++ b/ports/raspberrypi/boards/elecfreaks_picoed/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_BUZZER_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/electrolama_minik/pins.c b/ports/raspberrypi/boards/electrolama_minik/pins.c index f762d0010f76..75d94185c554 100644 --- a/ports/raspberrypi/boards/electrolama_minik/pins.c +++ b/ports/raspberrypi/boards/electrolama_minik/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/hack_club_sprig/pins.c b/ports/raspberrypi/boards/hack_club_sprig/pins.c index 592d7f0ae540..e5ce14783989 100644 --- a/ports/raspberrypi/boards/hack_club_sprig/pins.c +++ b/ports/raspberrypi/boards/hack_club_sprig/pins.c @@ -9,7 +9,7 @@ #include "supervisor/board.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/heiafr_picomo_v2/pins.c b/ports/raspberrypi/boards/heiafr_picomo_v2/pins.c index 082494d65874..139c5c40952f 100644 --- a/ports/raspberrypi/boards/heiafr_picomo_v2/pins.c +++ b/ports/raspberrypi/boards/heiafr_picomo_v2/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/pins.c b/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/pins.c index e53f8a063e82..5c85d9f17ad0 100644 --- a/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/pins.c +++ b/ports/raspberrypi/boards/jpconstantineau_encoderpad_rp2040/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_KEY1), MP_ROM_PTR(&pin_GPIO14) }, diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey18/pins.c b/ports/raspberrypi/boards/jpconstantineau_pykey18/pins.c index 3656f1c378c1..e094a165e938 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey18/pins.c +++ b/ports/raspberrypi/boards/jpconstantineau_pykey18/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_COL1), MP_ROM_PTR(&pin_GPIO0) }, { MP_ROM_QSTR(MP_QSTR_COL2), MP_ROM_PTR(&pin_GPIO1) }, diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey44/pins.c b/ports/raspberrypi/boards/jpconstantineau_pykey44/pins.c index 454f942048eb..c80b8ed8e71b 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey44/pins.c +++ b/ports/raspberrypi/boards/jpconstantineau_pykey44/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_COL1), MP_ROM_PTR(&pin_GPIO0) }, { MP_ROM_QSTR(MP_QSTR_COL2), MP_ROM_PTR(&pin_GPIO1) }, diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey60/pins.c b/ports/raspberrypi/boards/jpconstantineau_pykey60/pins.c index 01ef5ce6ee81..0912fac92330 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey60/pins.c +++ b/ports/raspberrypi/boards/jpconstantineau_pykey60/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_COL1), MP_ROM_PTR(&pin_GPIO0) }, { MP_ROM_QSTR(MP_QSTR_COL2), MP_ROM_PTR(&pin_GPIO1) }, diff --git a/ports/raspberrypi/boards/jpconstantineau_pykey87/pins.c b/ports/raspberrypi/boards/jpconstantineau_pykey87/pins.c index 7ad659cf94a5..7e7ad63191e4 100644 --- a/ports/raspberrypi/boards/jpconstantineau_pykey87/pins.c +++ b/ports/raspberrypi/boards/jpconstantineau_pykey87/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_COL1), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/lilygo_t_display_rp2040/pins.c b/ports/raspberrypi/boards/lilygo_t_display_rp2040/pins.c index 2dcca5c656dd..8b8f7ce09db9 100644 --- a/ports/raspberrypi/boards/lilygo_t_display_rp2040/pins.c +++ b/ports/raspberrypi/boards/lilygo_t_display_rp2040/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO1) }, diff --git a/ports/raspberrypi/boards/maple_elite_pi/pins.c b/ports/raspberrypi/boards/maple_elite_pi/pins.c index 2354cac54111..5158e5666ebb 100644 --- a/ports/raspberrypi/boards/maple_elite_pi/pins.c +++ b/ports/raspberrypi/boards/maple_elite_pi/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS {MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO0)}, diff --git a/ports/raspberrypi/boards/melopero_shake_rp2040/pins.c b/ports/raspberrypi/boards/melopero_shake_rp2040/pins.c index a51856624445..3a9169804055 100644 --- a/ports/raspberrypi/boards/melopero_shake_rp2040/pins.c +++ b/ports/raspberrypi/boards/melopero_shake_rp2040/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_global_dict_table[] = { +static const mp_rom_map_elem_t board_global_dict_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) }, diff --git a/ports/raspberrypi/boards/nullbits_bit_c_pro/pins.c b/ports/raspberrypi/boards/nullbits_bit_c_pro/pins.c index 12c170eed2e1..81813816fdd3 100644 --- a/ports/raspberrypi/boards/nullbits_bit_c_pro/pins.c +++ b/ports/raspberrypi/boards/nullbits_bit_c_pro/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) }, diff --git a/ports/raspberrypi/boards/odt_bread_2040/pins.c b/ports/raspberrypi/boards/odt_bread_2040/pins.c index 7041a217491a..9a0388d5004c 100644 --- a/ports/raspberrypi/boards/odt_bread_2040/pins.c +++ b/ports/raspberrypi/boards/odt_bread_2040/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_global_dict_table[] = { +static const mp_rom_map_elem_t board_global_dict_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/odt_cast_away_rp2040/pins.c b/ports/raspberrypi/boards/odt_cast_away_rp2040/pins.c index 63db93c15297..672abe1bc837 100644 --- a/ports/raspberrypi/boards/odt_cast_away_rp2040/pins.c +++ b/ports/raspberrypi/boards/odt_cast_away_rp2040/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_global_dict_table[] = { +static const mp_rom_map_elem_t board_global_dict_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/pajenicko_picopad/pins.c b/ports/raspberrypi/boards/pajenicko_picopad/pins.c index ca9c8580501c..4bd6d1411c70 100644 --- a/ports/raspberrypi/boards/pajenicko_picopad/pins.c +++ b/ports/raspberrypi/boards/pajenicko_picopad/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // Default RPi Pico Pins {MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0)}, diff --git a/ports/raspberrypi/boards/pimoroni_badger2040/pins.c b/ports/raspberrypi/boards/pimoroni_badger2040/pins.c index 3ea0cc2bff06..081cda866910 100644 --- a/ports/raspberrypi/boards/pimoroni_badger2040/pins.c +++ b/ports/raspberrypi/boards/pimoroni_badger2040/pins.c @@ -9,7 +9,7 @@ #include "shared-module/displayio/__init__.h" #include "badger-shared.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/pimoroni_badger2040w/pins.c b/ports/raspberrypi/boards/pimoroni_badger2040w/pins.c index 7708222838ce..5b35a48a2858 100644 --- a/ports/raspberrypi/boards/pimoroni_badger2040w/pins.c +++ b/ports/raspberrypi/boards/pimoroni_badger2040w/pins.c @@ -9,7 +9,7 @@ #include "shared-module/displayio/__init__.h" #include "badger-shared.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c index 49ee7d2dc3a0..8ff1cad58bfa 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_5_7/pins.c @@ -18,7 +18,7 @@ // N.B.: labels and bit-numbers in the schematic are reversed, i.e. // SW_A on D0 has bit-number 7 -STATIC const qstr board_keycodes_fields[] = { +static const qstr board_keycodes_fields[] = { MP_QSTR_SW_A, MP_QSTR_SW_B, MP_QSTR_SW_C, @@ -29,7 +29,7 @@ STATIC const qstr board_keycodes_fields[] = { MP_QSTR_INKY_BUS }; -STATIC MP_DEFINE_ATTRTUPLE( +static MP_DEFINE_ATTRTUPLE( board_keycodes_obj, board_keycodes_fields, 8, @@ -43,7 +43,7 @@ STATIC MP_DEFINE_ATTRTUPLE( MP_ROM_INT(0) ); -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/pins.c b/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/pins.c index e696429540ad..f615be4d413c 100644 --- a/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/pins.c +++ b/ports/raspberrypi/boards/pimoroni_inky_frame_7_3/pins.c @@ -18,7 +18,7 @@ // N.B.: labels and bit-numbers in the schematic are reversed, i.e. // BUTTON_A on D0 has bit-number 7 -STATIC const qstr board_keycodes_fields[] = { +static const qstr board_keycodes_fields[] = { MP_QSTR_BUTTON_A, MP_QSTR_BUTTON_B, MP_QSTR_BUTTON_C, @@ -29,7 +29,7 @@ STATIC const qstr board_keycodes_fields[] = { MP_QSTR_INKY_BUS }; -STATIC MP_DEFINE_ATTRTUPLE( +static MP_DEFINE_ATTRTUPLE( board_keycodes_obj, board_keycodes_fields, 8, @@ -43,7 +43,7 @@ STATIC MP_DEFINE_ATTRTUPLE( MP_ROM_INT(0) ); -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/pimoroni_interstate75/pins.c b/ports/raspberrypi/boards/pimoroni_interstate75/pins.c index 75135427df7d..d5b4fd9804fe 100644 --- a/ports/raspberrypi/boards/pimoroni_interstate75/pins.c +++ b/ports/raspberrypi/boards/pimoroni_interstate75/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_R0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/pimoroni_keybow2040/pins.c b/ports/raspberrypi/boards/pimoroni_keybow2040/pins.c index 6a0bb8cecb4b..c069e1fb536d 100644 --- a/ports/raspberrypi/boards/pimoroni_keybow2040/pins.c +++ b/ports/raspberrypi/boards/pimoroni_keybow2040/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/pimoroni_motor2040/pins.c b/ports/raspberrypi/boards/pimoroni_motor2040/pins.c index ea1b8e0de4c0..6c077366ee0d 100644 --- a/ports/raspberrypi/boards/pimoroni_motor2040/pins.c +++ b/ports/raspberrypi/boards/pimoroni_motor2040/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_MOTOR_A_P), MP_ROM_PTR(&pin_GPIO4) }, diff --git a/ports/raspberrypi/boards/pimoroni_pga2040/pins.c b/ports/raspberrypi/boards/pimoroni_pga2040/pins.c index b99ba2421ea6..47b41a6089f2 100644 --- a/ports/raspberrypi/boards/pimoroni_pga2040/pins.c +++ b/ports/raspberrypi/boards/pimoroni_pga2040/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/pimoroni_pico_dv_base/pins.c b/ports/raspberrypi/boards/pimoroni_pico_dv_base/pins.c index a952f7f680cc..7fde8f33e874 100644 --- a/ports/raspberrypi/boards/pimoroni_pico_dv_base/pins.c +++ b/ports/raspberrypi/boards/pimoroni_pico_dv_base/pins.c @@ -8,7 +8,7 @@ #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/pins.c b/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/pins.c index 776f09ead8d4..f8a5a6ba6f7d 100644 --- a/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/pins.c +++ b/ports/raspberrypi/boards/pimoroni_pico_dv_base_w/pins.c @@ -8,7 +8,7 @@ #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/pimoroni_picolipo_16mb/pins.c b/ports/raspberrypi/boards/pimoroni_picolipo_16mb/pins.c index 5e149c10d551..19c774c8d863 100644 --- a/ports/raspberrypi/boards/pimoroni_picolipo_16mb/pins.c +++ b/ports/raspberrypi/boards/pimoroni_picolipo_16mb/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/pimoroni_picolipo_4mb/pins.c b/ports/raspberrypi/boards/pimoroni_picolipo_4mb/pins.c index 5e149c10d551..19c774c8d863 100644 --- a/ports/raspberrypi/boards/pimoroni_picolipo_4mb/pins.c +++ b/ports/raspberrypi/boards/pimoroni_picolipo_4mb/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/pimoroni_picosystem/pins.c b/ports/raspberrypi/boards/pimoroni_picosystem/pins.c index 71c045a6e89c..2d00646c607b 100644 --- a/ports/raspberrypi/boards/pimoroni_picosystem/pins.c +++ b/ports/raspberrypi/boards/pimoroni_picosystem/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/pimoroni_plasma2040/pins.c b/ports/raspberrypi/boards/pimoroni_plasma2040/pins.c index 1131180d53a7..d087a6f8dd40 100644 --- a/ports/raspberrypi/boards/pimoroni_plasma2040/pins.c +++ b/ports/raspberrypi/boards/pimoroni_plasma2040/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_SW_A), MP_ROM_PTR(&pin_GPIO12) }, diff --git a/ports/raspberrypi/boards/pimoroni_plasma2040w/pins.c b/ports/raspberrypi/boards/pimoroni_plasma2040w/pins.c index 5c505862c3d6..e3638469dc39 100644 --- a/ports/raspberrypi/boards/pimoroni_plasma2040w/pins.c +++ b/ports/raspberrypi/boards/pimoroni_plasma2040w/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/pimoroni_servo2040/pins.c b/ports/raspberrypi/boards/pimoroni_servo2040/pins.c index d8f1102d2459..2cf0c94c0402 100644 --- a/ports/raspberrypi/boards/pimoroni_servo2040/pins.c +++ b/ports/raspberrypi/boards/pimoroni_servo2040/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_SERVO_1), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/pimoroni_tiny2040/pins.c b/ports/raspberrypi/boards/pimoroni_tiny2040/pins.c index 4bffe100c1c0..2d9eff9f850a 100644 --- a/ports/raspberrypi/boards/pimoroni_tiny2040/pins.c +++ b/ports/raspberrypi/boards/pimoroni_tiny2040/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/pins.c b/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/pins.c index 4bffe100c1c0..2d9eff9f850a 100644 --- a/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/pins.c +++ b/ports/raspberrypi/boards/pimoroni_tiny2040_2mb/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/raspberry_pi_pico/pins.c b/ports/raspberrypi/boards/raspberry_pi_pico/pins.c index 6582c11da838..5ce8ae818eb8 100644 --- a/ports/raspberrypi/boards/raspberry_pi_pico/pins.c +++ b/ports/raspberrypi/boards/raspberry_pi_pico/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/raspberry_pi_pico_w/pins.c b/ports/raspberrypi/boards/raspberry_pi_pico_w/pins.c index b1d6a0fd07e8..ce0a07233987 100644 --- a/ports/raspberrypi/boards/raspberry_pi_pico_w/pins.c +++ b/ports/raspberrypi/boards/raspberry_pi_pico_w/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/rfguru_rp2040/pins.c b/ports/raspberrypi/boards/rfguru_rp2040/pins.c index ae6ba7526429..dbc1dd418408 100644 --- a/ports/raspberrypi/boards/rfguru_rp2040/pins.c +++ b/ports/raspberrypi/boards/rfguru_rp2040/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, { MP_ROM_QSTR(MP_QSTR_GP1), MP_ROM_PTR(&pin_GPIO1) }, diff --git a/ports/raspberrypi/boards/seeeduino_xiao_rp2040/pins.c b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/pins.c index 597b4ec70447..cf9f954dd8be 100644 --- a/ports/raspberrypi/boards/seeeduino_xiao_rp2040/pins.c +++ b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) }, diff --git a/ports/raspberrypi/boards/silicognition_rp2040_shim/pins.c b/ports/raspberrypi/boards/silicognition_rp2040_shim/pins.c index dff7d51c875a..880327c7b189 100644 --- a/ports/raspberrypi/boards/silicognition_rp2040_shim/pins.c +++ b/ports/raspberrypi/boards/silicognition_rp2040_shim/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO29) }, diff --git a/ports/raspberrypi/boards/solderparty_bbq20kbd/pins.c b/ports/raspberrypi/boards/solderparty_bbq20kbd/pins.c index c055b3ab7512..ebcf6585f380 100644 --- a/ports/raspberrypi/boards/solderparty_bbq20kbd/pins.c +++ b/ports/raspberrypi/boards/solderparty_bbq20kbd/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_INT), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/solderparty_rp2040_stamp/pins.c b/ports/raspberrypi/boards/solderparty_rp2040_stamp/pins.c index 73be3662d4dc..b15fef8eb2af 100644 --- a/ports/raspberrypi/boards/solderparty_rp2040_stamp/pins.c +++ b/ports/raspberrypi/boards/solderparty_rp2040_stamp/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/sparkfun_micromod_rp2040/pins.c b/ports/raspberrypi/boards/sparkfun_micromod_rp2040/pins.c index f45682a55dbe..7f1a0be8da3c 100644 --- a/ports/raspberrypi/boards/sparkfun_micromod_rp2040/pins.c +++ b/ports/raspberrypi/boards/sparkfun_micromod_rp2040/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // The SparkFun MicroMod spec uses a zero-based peripheral numbering scheme. // The 0th peripheral is the default and the "0" is omitted from the diff --git a/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/pins.c b/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/pins.c index bf079e01999e..4fc7fc371c9e 100644 --- a/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/pins.c +++ b/ports/raspberrypi/boards/sparkfun_pro_micro_rp2040/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) }, diff --git a/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/pins.c b/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/pins.c index 77b753982012..6599b921cde2 100644 --- a/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/pins.c +++ b/ports/raspberrypi/boards/sparkfun_thing_plus_rp2040/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // Left side breakouts, top-to-bottom, as labeled diff --git a/ports/raspberrypi/boards/splitkb_liatris/pins.c b/ports/raspberrypi/boards/splitkb_liatris/pins.c index 23770fa309ed..2efe60ddbc41 100644 --- a/ports/raspberrypi/boards/splitkb_liatris/pins.c +++ b/ports/raspberrypi/boards/splitkb_liatris/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // Left, top->bottom diff --git a/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/pins.c b/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/pins.c index b68d5632ce3a..4a33b13c4503 100644 --- a/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/pins.c +++ b/ports/raspberrypi/boards/takayoshiotake_octave_rp2040/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GPIO0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/ugame22/pins.c b/ports/raspberrypi/boards/ugame22/pins.c index d2270a937cfe..3ca97e921a92 100644 --- a/ports/raspberrypi/boards/ugame22/pins.c +++ b/ports/raspberrypi/boards/ugame22/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_TFT_RST), MP_ROM_PTR(&pin_GPIO1) }, diff --git a/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/pins.c b/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/pins.c index 64b497915746..ec36bcff0156 100644 --- a/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/pins.c +++ b/ports/raspberrypi/boards/vcc_gnd_yd_rp2040/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/waveshare_rp2040_geek/pins.c b/ports/raspberrypi/boards/waveshare_rp2040_geek/pins.c index 33d813a1f68a..8fa4f56051e4 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_geek/pins.c +++ b/ports/raspberrypi/boards/waveshare_rp2040_geek/pins.c @@ -8,7 +8,7 @@ #include "shared-module/displayio/__init__.h" CIRCUITPY_BOARD_BUS_SINGLETON(sd_spi, spi, 1) -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // 2-3 DEBUG diff --git a/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/pins.c b/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/pins.c index 916988beb07d..bd3a83103450 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/pins.c +++ b/ports/raspberrypi/boards/waveshare_rp2040_lcd_0_96/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" #include "shared-module/displayio/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/pins.c b/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/pins.c index 315cdce888df..78e40ad32653 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/pins.c +++ b/ports/raspberrypi/boards/waveshare_rp2040_lcd_1_28/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/pins.c b/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/pins.c index 3cfbf76ebfe5..1263586686ba 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/pins.c +++ b/ports/raspberrypi/boards/waveshare_rp2040_plus_16mb/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/pins.c b/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/pins.c index 3cfbf76ebfe5..1263586686ba 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/pins.c +++ b/ports/raspberrypi/boards/waveshare_rp2040_plus_4mb/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/waveshare_rp2040_tiny/pins.c b/ports/raspberrypi/boards/waveshare_rp2040_tiny/pins.c index 2540f0325f9b..9b6f5331336c 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_tiny/pins.c +++ b/ports/raspberrypi/boards/waveshare_rp2040_tiny/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/pins.c b/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/pins.c index bae058c4cc14..c14fdb6e23b4 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/pins.c +++ b/ports/raspberrypi/boards/waveshare_rp2040_touch_lcd_1_28/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/waveshare_rp2040_zero/pins.c b/ports/raspberrypi/boards/waveshare_rp2040_zero/pins.c index a431564c20b8..5b172616aba2 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_zero/pins.c +++ b/ports/raspberrypi/boards/waveshare_rp2040_zero/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/weact_studio_pico/pins.c b/ports/raspberrypi/boards/weact_studio_pico/pins.c index a82e31c90330..53e1b97f43c4 100644 --- a/ports/raspberrypi/boards/weact_studio_pico/pins.c +++ b/ports/raspberrypi/boards/weact_studio_pico/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/weact_studio_pico_16mb/pins.c b/ports/raspberrypi/boards/weact_studio_pico_16mb/pins.c index a82e31c90330..53e1b97f43c4 100644 --- a/ports/raspberrypi/boards/weact_studio_pico_16mb/pins.c +++ b/ports/raspberrypi/boards/weact_studio_pico_16mb/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/wisdpi_ardu2040m/pins.c b/ports/raspberrypi/boards/wisdpi_ardu2040m/pins.c index 9128b67c56ed..20a4cdb7d562 100644 --- a/ports/raspberrypi/boards/wisdpi_ardu2040m/pins.c +++ b/ports/raspberrypi/boards/wisdpi_ardu2040m/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/wisdpi_tiny_rp2040/pins.c b/ports/raspberrypi/boards/wisdpi_tiny_rp2040/pins.c index 224a4fd9f394..e39c682b063c 100644 --- a/ports/raspberrypi/boards/wisdpi_tiny_rp2040/pins.c +++ b/ports/raspberrypi/boards/wisdpi_tiny_rp2040/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/pins.c b/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/pins.c index 3cfbf76ebfe5..1263586686ba 100644 --- a/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/pins.c +++ b/ports/raspberrypi/boards/wiznet_w5100s_evb_pico/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/wiznet_w5500_evb_pico/pins.c b/ports/raspberrypi/boards/wiznet_w5500_evb_pico/pins.c index aee673a312d9..a24ff3f3a609 100644 --- a/ports/raspberrypi/boards/wiznet_w5500_evb_pico/pins.c +++ b/ports/raspberrypi/boards/wiznet_w5500_evb_pico/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/boards/zrichard_rp2.65-f/pins.c b/ports/raspberrypi/boards/zrichard_rp2.65-f/pins.c index 7b1ff92f2931..46695b273a28 100644 --- a/ports/raspberrypi/boards/zrichard_rp2.65-f/pins.c +++ b/ports/raspberrypi/boards/zrichard_rp2.65-f/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_ROW0), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/raspberrypi/common-hal/alarm/__init__.c b/ports/raspberrypi/common-hal/alarm/__init__.c index 54bbfdce2beb..35af16551008 100644 --- a/ports/raspberrypi/common-hal/alarm/__init__.c +++ b/ports/raspberrypi/common-hal/alarm/__init__.c @@ -67,7 +67,7 @@ const uint32_t RP_LIGHTSLEEP_EN0_MASK_HARSH = ( ); const uint32_t RP_LIGHTSLEEP_EN1_MASK_HARSH = 0x0; -STATIC void prepare_for_dormant_xosc(void); +static void prepare_for_dormant_xosc(void); // Singleton instance of SleepMemory. const alarm_sleep_memory_obj_t alarm_sleep_memory_obj = { @@ -89,7 +89,7 @@ void alarm_reset(void) { watchdog_hw->scratch[RP_WKUP_SCRATCH_REG] = RP_SLEEP_WAKEUP_UNDEF; } -STATIC uint8_t _get_wakeup_cause(void) { +static uint8_t _get_wakeup_cause(void) { // First check if the modules remember what last woke up if (alarm_pin_pinalarm_woke_this_cycle()) { return RP_SLEEP_WAKEUP_GPIO; @@ -106,7 +106,7 @@ STATIC uint8_t _get_wakeup_cause(void) { } // Set up light sleep or deep sleep alarms. -STATIC void _setup_sleep_alarms(bool deep_sleep, size_t n_alarms, const mp_obj_t *alarms) { +static void _setup_sleep_alarms(bool deep_sleep, size_t n_alarms, const mp_obj_t *alarms) { alarm_pin_pinalarm_set_alarms(deep_sleep, n_alarms, alarms); alarm_time_timealarm_set_alarms(deep_sleep, n_alarms, alarms); } @@ -224,7 +224,7 @@ void common_hal_alarm_gc_collect(void) { gc_collect_ptr(shared_alarm_get_wake_alarm()); } -STATIC void prepare_for_dormant_xosc(void) { +static void prepare_for_dormant_xosc(void) { // TODO: add ROSC support with sleep_run_from_dormant_source when it's added to SDK uint src_hz = XOSC_MHZ * MHZ; uint clk_ref_src = CLOCKS_CLK_REF_CTRL_SRC_VALUE_XOSC_CLKSRC; diff --git a/ports/raspberrypi/common-hal/alarm/pin/PinAlarm.c b/ports/raspberrypi/common-hal/alarm/pin/PinAlarm.c index 203def52b226..ecebb072775e 100644 --- a/ports/raspberrypi/common-hal/alarm/pin/PinAlarm.c +++ b/ports/raspberrypi/common-hal/alarm/pin/PinAlarm.c @@ -15,14 +15,14 @@ #include "hardware/gpio.h" #include "hardware/structs/iobank0.h" -STATIC bool woke_up; -STATIC uint64_t alarm_triggered_pins; // 36 actual pins -STATIC uint64_t alarm_reserved_pins; // 36 actual pins -STATIC bool _not_yet_deep_sleeping = false; +static bool woke_up; +static uint64_t alarm_triggered_pins; // 36 actual pins +static uint64_t alarm_reserved_pins; // 36 actual pins +static bool _not_yet_deep_sleeping = false; #define GPIO_IRQ_ALL_EVENTS 0x15u -STATIC void gpio_callback(uint gpio, uint32_t events) { +static void gpio_callback(uint gpio, uint32_t events) { alarm_triggered_pins |= (1 << gpio); woke_up = true; diff --git a/ports/raspberrypi/common-hal/alarm/time/TimeAlarm.c b/ports/raspberrypi/common-hal/alarm/time/TimeAlarm.c index ae4ad9f2aa06..1f7c3f9edaba 100644 --- a/ports/raspberrypi/common-hal/alarm/time/TimeAlarm.c +++ b/ports/raspberrypi/common-hal/alarm/time/TimeAlarm.c @@ -15,10 +15,10 @@ #include "hardware/gpio.h" #include "hardware/rtc.h" -STATIC bool woke_up = false; -STATIC bool _timealarm_set = false; +static bool woke_up = false; +static bool _timealarm_set = false; -STATIC void timer_callback(void) { +static void timer_callback(void) { woke_up = true; } diff --git a/ports/raspberrypi/common-hal/busio/I2C.c b/ports/raspberrypi/common-hal/busio/I2C.c index 8d0a52b68ff3..b7db4064b15d 100644 --- a/ports/raspberrypi/common-hal/busio/I2C.c +++ b/ports/raspberrypi/common-hal/busio/I2C.c @@ -22,8 +22,8 @@ // One second #define BUS_TIMEOUT_US 1000000 -STATIC bool never_reset_i2c[2]; -STATIC i2c_inst_t *i2c[2] = {i2c0, i2c1}; +static bool never_reset_i2c[2]; +static i2c_inst_t *i2c[2] = {i2c0, i2c1}; void reset_i2c(void) { for (size_t i = 0; i < 2; i++) { @@ -146,7 +146,7 @@ void common_hal_busio_i2c_unlock(busio_i2c_obj_t *self) { self->has_lock = false; } -STATIC uint8_t _common_hal_busio_i2c_write(busio_i2c_obj_t *self, uint16_t addr, +static uint8_t _common_hal_busio_i2c_write(busio_i2c_obj_t *self, uint16_t addr, const uint8_t *data, size_t len, bool transmit_stop_bit) { if (len == 0) { // The RP2040 I2C peripheral will not perform 0 byte writes. diff --git a/ports/raspberrypi/common-hal/busio/SPI.c b/ports/raspberrypi/common-hal/busio/SPI.c index 51de1f1abb46..65a9d7ba95f6 100644 --- a/ports/raspberrypi/common-hal/busio/SPI.c +++ b/ports/raspberrypi/common-hal/busio/SPI.c @@ -19,8 +19,8 @@ #define NO_INSTANCE 0xff -STATIC bool never_reset_spi[2]; -STATIC spi_inst_t *spi[2] = {spi0, spi1}; +static bool never_reset_spi[2]; +static spi_inst_t *spi[2] = {spi0, spi1}; void reset_spi(void) { for (size_t i = 0; i < 2; i++) { diff --git a/ports/raspberrypi/common-hal/busio/UART.c b/ports/raspberrypi/common-hal/busio/UART.c index d9cab3838e40..1ab24c7d858a 100644 --- a/ports/raspberrypi/common-hal/busio/UART.c +++ b/ports/raspberrypi/common-hal/busio/UART.c @@ -314,7 +314,7 @@ bool common_hal_busio_uart_ready_to_tx(busio_uart_obj_t *self) { return uart_is_writable(self->uart); } -STATIC void pin_never_reset(uint8_t pin) { +static void pin_never_reset(uint8_t pin) { if (pin != NO_PIN) { never_reset_pin_number(pin); } diff --git a/ports/raspberrypi/common-hal/i2ctarget/I2CTarget.c b/ports/raspberrypi/common-hal/i2ctarget/I2CTarget.c index a3c6662683ff..4f226fe56e95 100644 --- a/ports/raspberrypi/common-hal/i2ctarget/I2CTarget.c +++ b/ports/raspberrypi/common-hal/i2ctarget/I2CTarget.c @@ -16,7 +16,7 @@ #include "src/rp2_common/hardware_gpio/include/hardware/gpio.h" -STATIC i2c_inst_t *i2c[2] = {i2c0, i2c1}; +static i2c_inst_t *i2c[2] = {i2c0, i2c1}; #define NO_PIN 0xff diff --git a/ports/raspberrypi/common-hal/imagecapture/ParallelImageCapture.c b/ports/raspberrypi/common-hal/imagecapture/ParallelImageCapture.c index f04f76209121..a05307313b6d 100644 --- a/ports/raspberrypi/common-hal/imagecapture/ParallelImageCapture.c +++ b/ports/raspberrypi/common-hal/imagecapture/ParallelImageCapture.c @@ -48,7 +48,7 @@ /* .wrap */ \ } -STATIC mcu_pin_obj_t *pin_from_number(uint8_t number) { +static mcu_pin_obj_t *pin_from_number(uint8_t number) { const mp_map_t *mcu_map = &mcu_pin_globals.map; for (uint8_t i = 0; i < mcu_map->alloc; i++) { mp_obj_t val = mcu_map->table[i].value; diff --git a/ports/raspberrypi/common-hal/mdns/Server.c b/ports/raspberrypi/common-hal/mdns/Server.c index be23f8ea9aad..4c87dd466407 100644 --- a/ports/raspberrypi/common-hal/mdns/Server.c +++ b/ports/raspberrypi/common-hal/mdns/Server.c @@ -19,10 +19,10 @@ // Track if we've inited the LWIP MDNS at all. It expects to only init once. // Subsequent times, we restart it. -STATIC bool inited = false; +static bool inited = false; // Track if we are globally inited. This essentially forces one inited MDNS // object at a time. (But ignores MDNS objects that are deinited.) -STATIC bool object_inited = false; +static bool object_inited = false; #define NETIF_STA (&cyw43_state.netif[CYW43_ITF_STA]) #define NETIF_AP (&cyw43_state.netif[CYW43_ITF_AP]) @@ -109,7 +109,7 @@ typedef struct { size_t out_len; } nonalloc_search_state_t; -STATIC void copy_data_into_remote_service(struct mdns_answer *answer, const char *varpart, int varlen, mdns_remoteservice_obj_t *out) { +static void copy_data_into_remote_service(struct mdns_answer *answer, const char *varpart, int varlen, mdns_remoteservice_obj_t *out) { if (varlen > 0) { if (answer->info.type == DNS_RRTYPE_A) { char *hostname = out->hostname; @@ -148,7 +148,7 @@ STATIC void copy_data_into_remote_service(struct mdns_answer *answer, const char } } -STATIC void search_result_cb(struct mdns_answer *answer, const char *varpart, int varlen, int flags, void *arg) { +static void search_result_cb(struct mdns_answer *answer, const char *varpart, int varlen, int flags, void *arg) { nonalloc_search_state_t *state = arg; state->out[state->i].base.type = &mdns_remoteservice_type; @@ -206,7 +206,7 @@ typedef struct { size_t count; } alloc_search_state_t; -STATIC void alloc_search_result_cb(struct mdns_answer *answer, const char *varpart, int varlen, int flags, void *arg) { +static void alloc_search_result_cb(struct mdns_answer *answer, const char *varpart, int varlen, int flags, void *arg) { alloc_search_state_t *state = arg; if ((flags & MDNS_SEARCH_RESULT_FIRST) != 0) { @@ -276,7 +276,7 @@ mp_obj_t common_hal_mdns_server_find(mdns_server_obj_t *self, const char *servic return MP_OBJ_FROM_PTR(tuple); } -STATIC void srv_txt_cb(struct mdns_service *service, void *ptr) { +static void srv_txt_cb(struct mdns_service *service, void *ptr) { mdns_server_obj_t *self = ptr; err_t res; for (size_t i = 0; i < self->num_txt_records; i++) { @@ -288,7 +288,7 @@ STATIC void srv_txt_cb(struct mdns_service *service, void *ptr) { } } -STATIC void assign_txt_records(mdns_server_obj_t *self, const char *txt_records[], size_t num_txt_records) { +static void assign_txt_records(mdns_server_obj_t *self, const char *txt_records[], size_t num_txt_records) { size_t allowed_num_txt_records = MDNS_MAX_TXT_RECORDS < num_txt_records ? MDNS_MAX_TXT_RECORDS : num_txt_records; self->num_txt_records = allowed_num_txt_records; for (size_t i = 0; i < allowed_num_txt_records; i++) { diff --git a/ports/raspberrypi/common-hal/microcontroller/Pin.c b/ports/raspberrypi/common-hal/microcontroller/Pin.c index 6e881ab8e390..01526ebac3e1 100644 --- a/ports/raspberrypi/common-hal/microcontroller/Pin.c +++ b/ports/raspberrypi/common-hal/microcontroller/Pin.c @@ -25,7 +25,7 @@ void reset_pin_number_cyw(uint8_t pin_no) { } #endif -STATIC uint32_t never_reset_pins; +static uint32_t never_reset_pins; void reset_all_pins(void) { for (size_t i = 0; i < NUM_BANK0_GPIOS; i++) { diff --git a/ports/raspberrypi/common-hal/os/__init__.c b/ports/raspberrypi/common-hal/os/__init__.c index f9005288c18d..28c8ed946717 100644 --- a/ports/raspberrypi/common-hal/os/__init__.c +++ b/ports/raspberrypi/common-hal/os/__init__.c @@ -18,18 +18,18 @@ #include -STATIC const qstr os_uname_info_fields[] = { +static const qstr os_uname_info_fields[] = { MP_QSTR_sysname, MP_QSTR_nodename, MP_QSTR_release, MP_QSTR_version, MP_QSTR_machine }; -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_sysname_obj, "rp2040"); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_nodename_obj, "rp2040"); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_release_obj, MICROPY_VERSION_STRING); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_version_obj, MICROPY_GIT_TAG " on " MICROPY_BUILD_DATE); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_machine_obj, MICROPY_HW_BOARD_NAME " with " MICROPY_HW_MCU_NAME); +static const MP_DEFINE_STR_OBJ(os_uname_info_sysname_obj, "rp2040"); +static const MP_DEFINE_STR_OBJ(os_uname_info_nodename_obj, "rp2040"); +static const MP_DEFINE_STR_OBJ(os_uname_info_release_obj, MICROPY_VERSION_STRING); +static const MP_DEFINE_STR_OBJ(os_uname_info_version_obj, MICROPY_GIT_TAG " on " MICROPY_BUILD_DATE); +static const MP_DEFINE_STR_OBJ(os_uname_info_machine_obj, MICROPY_HW_BOARD_NAME " with " MICROPY_HW_MCU_NAME); -STATIC MP_DEFINE_ATTRTUPLE( +static MP_DEFINE_ATTRTUPLE( os_uname_info_obj, os_uname_info_fields, 5, diff --git a/ports/raspberrypi/common-hal/picodvi/Framebuffer.c b/ports/raspberrypi/common-hal/picodvi/Framebuffer.c index 156f350f3f82..e3f17baf8572 100644 --- a/ports/raspberrypi/common-hal/picodvi/Framebuffer.c +++ b/ports/raspberrypi/common-hal/picodvi/Framebuffer.c @@ -24,7 +24,7 @@ picodvi_framebuffer_obj_t *active_picodvi = NULL; -STATIC PIO pio_instances[2] = {pio0, pio1}; +static PIO pio_instances[2] = {pio0, pio1}; static void __not_in_flash_func(core1_main)(void) { // The MPU is reset before this starts. @@ -300,7 +300,7 @@ void common_hal_picodvi_framebuffer_construct(picodvi_framebuffer_obj_t *self, } } -STATIC void _turn_off_dma(uint8_t channel) { +static void _turn_off_dma(uint8_t channel) { dma_channel_config c = dma_channel_get_default_config(channel); channel_config_set_enable(&c, false); dma_channel_set_config(channel, &c, false /* trigger */); diff --git a/ports/raspberrypi/common-hal/rotaryio/IncrementalEncoder.c b/ports/raspberrypi/common-hal/rotaryio/IncrementalEncoder.c index 6e0b3815dfdb..a31312b6436b 100644 --- a/ports/raspberrypi/common-hal/rotaryio/IncrementalEncoder.c +++ b/ports/raspberrypi/common-hal/rotaryio/IncrementalEncoder.c @@ -13,7 +13,7 @@ #include "bindings/rp2pio/__init__.h" #include "bindings/rp2pio/StateMachine.h" -STATIC const uint16_t encoder[] = { +static const uint16_t encoder[] = { // again: // in pins, 2 0x4002, @@ -32,12 +32,12 @@ STATIC const uint16_t encoder[] = { 0xa041, }; -STATIC const uint16_t encoder_init[] = { +static const uint16_t encoder_init[] = { // set y, 31 0xe05f, }; -STATIC void incrementalencoder_interrupt_handler(void *self_in); +static void incrementalencoder_interrupt_handler(void *self_in); 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) { @@ -99,7 +99,7 @@ void common_hal_rotaryio_incrementalencoder_deinit(rotaryio_incrementalencoder_o common_hal_rp2pio_statemachine_deinit(&self->state_machine); } -STATIC void incrementalencoder_interrupt_handler(void *self_in) { +static void incrementalencoder_interrupt_handler(void *self_in) { rotaryio_incrementalencoder_obj_t *self = self_in; while (common_hal_rp2pio_statemachine_get_in_waiting(&self->state_machine)) { diff --git a/ports/raspberrypi/common-hal/rp2pio/StateMachine.c b/ports/raspberrypi/common-hal/rp2pio/StateMachine.c index 88e13ddf2f4d..8275215e0f40 100644 --- a/ports/raspberrypi/common-hal/rp2pio/StateMachine.c +++ b/ports/raspberrypi/common-hal/rp2pio/StateMachine.c @@ -28,27 +28,27 @@ #define NO_DMA_CHANNEL (-1) // Count how many state machines are using each pin. -STATIC uint8_t _pin_reference_count[NUM_BANK0_GPIOS]; -STATIC uint32_t _current_program_id[NUM_PIOS][NUM_PIO_STATE_MACHINES]; -STATIC uint8_t _current_program_offset[NUM_PIOS][NUM_PIO_STATE_MACHINES]; -STATIC uint8_t _current_program_len[NUM_PIOS][NUM_PIO_STATE_MACHINES]; -STATIC bool _never_reset[NUM_PIOS][NUM_PIO_STATE_MACHINES]; +static uint8_t _pin_reference_count[NUM_BANK0_GPIOS]; +static uint32_t _current_program_id[NUM_PIOS][NUM_PIO_STATE_MACHINES]; +static uint8_t _current_program_offset[NUM_PIOS][NUM_PIO_STATE_MACHINES]; +static uint8_t _current_program_len[NUM_PIOS][NUM_PIO_STATE_MACHINES]; +static bool _never_reset[NUM_PIOS][NUM_PIO_STATE_MACHINES]; -STATIC uint32_t _current_pins[NUM_PIOS]; -STATIC uint32_t _current_sm_pins[NUM_PIOS][NUM_PIO_STATE_MACHINES]; -STATIC int8_t _sm_dma_plus_one[NUM_PIOS][NUM_PIO_STATE_MACHINES]; +static uint32_t _current_pins[NUM_PIOS]; +static uint32_t _current_sm_pins[NUM_PIOS][NUM_PIO_STATE_MACHINES]; +static int8_t _sm_dma_plus_one[NUM_PIOS][NUM_PIO_STATE_MACHINES]; #define SM_DMA_ALLOCATED(pio_index, sm) (_sm_dma_plus_one[(pio_index)][(sm)] != 0) #define SM_DMA_GET_CHANNEL(pio_index, sm) (_sm_dma_plus_one[(pio_index)][(sm)] - 1) #define SM_DMA_CLEAR_CHANNEL(pio_index, sm) (_sm_dma_plus_one[(pio_index)][(sm)] = 0) #define SM_DMA_SET_CHANNEL(pio_isntance, sm, channel) (_sm_dma_plus_one[(pio_index)][(sm)] = (channel) + 1) -STATIC PIO pio_instances[2] = {pio0, pio1}; +static PIO pio_instances[2] = {pio0, pio1}; typedef void (*interrupt_handler_type)(void *); -STATIC interrupt_handler_type _interrupt_handler[NUM_PIOS][NUM_PIO_STATE_MACHINES]; -STATIC void *_interrupt_arg[NUM_PIOS][NUM_PIO_STATE_MACHINES]; +static interrupt_handler_type _interrupt_handler[NUM_PIOS][NUM_PIO_STATE_MACHINES]; +static void *_interrupt_arg[NUM_PIOS][NUM_PIO_STATE_MACHINES]; -STATIC void rp2pio_statemachine_interrupt_handler(void); +static void rp2pio_statemachine_interrupt_handler(void); static void rp2pio_statemachine_set_pull(uint32_t pull_pin_up, uint32_t pull_pin_down, uint32_t pins_we_use) { for (size_t i = 0; i < NUM_BANK0_GPIOS; i++) { @@ -61,7 +61,7 @@ static void rp2pio_statemachine_set_pull(uint32_t pull_pin_up, uint32_t pull_pin } } -STATIC void rp2pio_statemachine_clear_dma(int pio_index, int sm) { +static void rp2pio_statemachine_clear_dma(int pio_index, int sm) { if (SM_DMA_ALLOCATED(pio_index, sm)) { int channel = SM_DMA_GET_CHANNEL(pio_index, sm); uint32_t channel_mask = 1u << channel; @@ -76,7 +76,7 @@ STATIC void rp2pio_statemachine_clear_dma(int pio_index, int sm) { SM_DMA_CLEAR_CHANNEL(pio_index, sm); } -STATIC void _reset_statemachine(PIO pio, uint8_t sm, bool leave_pins) { +static void _reset_statemachine(PIO pio, uint8_t sm, bool leave_pins) { uint8_t pio_index = pio_get_index(pio); rp2pio_statemachine_clear_dma(pio_index, sm); uint32_t program_id = _current_program_id[pio_index][sm]; @@ -136,7 +136,7 @@ void reset_rp2pio_statemachine(void) { } } -STATIC uint32_t _check_pins_free(const mcu_pin_obj_t *first_pin, uint8_t pin_count, bool exclusive_pin_use) { +static uint32_t _check_pins_free(const mcu_pin_obj_t *first_pin, uint8_t pin_count, bool exclusive_pin_use) { uint32_t pins_we_use = 0; if (first_pin != NULL) { for (size_t i = 0; i < pin_count; i++) { @@ -697,7 +697,7 @@ bool common_hal_rp2pio_statemachine_deinited(rp2pio_statemachine_obj_t *self) { return self->state_machine == NUM_PIO_STATE_MACHINES; } -STATIC enum dma_channel_transfer_size _stride_to_dma_size(uint8_t stride) { +static enum dma_channel_transfer_size _stride_to_dma_size(uint8_t stride) { switch (stride) { case 4: return DMA_SIZE_32; @@ -944,7 +944,7 @@ void common_hal_rp2pio_statemachine_set_interrupt_handler(rp2pio_statemachine_ob common_hal_mcu_enable_interrupts(); } -STATIC void rp2pio_statemachine_interrupt_handler(void) { +static void rp2pio_statemachine_interrupt_handler(void) { for (size_t pio_index = 0; pio_index < NUM_PIOS; pio_index++) { PIO pio = pio_instances[pio_index]; for (size_t sm = 0; sm < NUM_PIO_STATE_MACHINES; sm++) { diff --git a/ports/raspberrypi/common-hal/socketpool/Socket.c b/ports/raspberrypi/common-hal/socketpool/Socket.c index af16dab1d580..f6122b13af86 100644 --- a/ports/raspberrypi/common-hal/socketpool/Socket.c +++ b/ports/raspberrypi/common-hal/socketpool/Socket.c @@ -106,7 +106,7 @@ static inline void poll_sockets(void) { #endif } -STATIC struct tcp_pcb *volatile *lwip_socket_incoming_array(socketpool_socket_obj_t *socket) { +static struct tcp_pcb *volatile *lwip_socket_incoming_array(socketpool_socket_obj_t *socket) { if (socket->incoming.connection.alloc == 0) { return &socket->incoming.connection.tcp.item; } else { @@ -114,7 +114,7 @@ STATIC struct tcp_pcb *volatile *lwip_socket_incoming_array(socketpool_socket_ob } } -STATIC void lwip_socket_free_incoming(socketpool_socket_obj_t *socket) { +static void lwip_socket_free_incoming(socketpool_socket_obj_t *socket) { bool socket_is_listener = socket->type == MOD_NETWORK_SOCK_STREAM && socket->pcb.tcp->state == LISTEN; @@ -154,9 +154,9 @@ static inline void exec_user_callback(socketpool_socket_obj_t *socket) { #if MICROPY_PY_LWIP_SOCK_RAW // Callback for incoming raw packets. #if LWIP_VERSION_MAJOR < 2 -STATIC u8_t _lwip_raw_incoming(void *arg, struct raw_pcb *pcb, struct pbuf *p, ip_addr_t *addr) +static u8_t _lwip_raw_incoming(void *arg, struct raw_pcb *pcb, struct pbuf *p, ip_addr_t *addr) #else -STATIC u8_t _lwip_raw_incoming(void *arg, struct raw_pcb *pcb, struct pbuf *p, const ip_addr_t *addr) +static u8_t _lwip_raw_incoming(void *arg, struct raw_pcb *pcb, struct pbuf *p, const ip_addr_t *addr) #endif { socketpool_socket_obj_t *socket = (socketpool_socket_obj_t *)arg; @@ -174,9 +174,9 @@ STATIC u8_t _lwip_raw_incoming(void *arg, struct raw_pcb *pcb, struct pbuf *p, c // Callback for incoming UDP packets. We simply stash the packet and the source address, // in case we need it for recvfrom. #if LWIP_VERSION_MAJOR < 2 -STATIC void _lwip_udp_incoming(void *arg, struct udp_pcb *upcb, struct pbuf *p, ip_addr_t *addr, u16_t port) +static void _lwip_udp_incoming(void *arg, struct udp_pcb *upcb, struct pbuf *p, ip_addr_t *addr, u16_t port) #else -STATIC void _lwip_udp_incoming(void *arg, struct udp_pcb *upcb, struct pbuf *p, const ip_addr_t *addr, u16_t port) +static void _lwip_udp_incoming(void *arg, struct udp_pcb *upcb, struct pbuf *p, const ip_addr_t *addr, u16_t port) #endif { socketpool_socket_obj_t *socket = (socketpool_socket_obj_t *)arg; @@ -192,7 +192,7 @@ STATIC void _lwip_udp_incoming(void *arg, struct udp_pcb *upcb, struct pbuf *p, } // Callback for general tcp errors. -STATIC void _lwip_tcp_error(void *arg, err_t err) { +static void _lwip_tcp_error(void *arg, err_t err) { socketpool_socket_obj_t *socket = (socketpool_socket_obj_t *)arg; // Free any incoming buffers or connections that are stored @@ -204,7 +204,7 @@ STATIC void _lwip_tcp_error(void *arg, err_t err) { } // Callback for tcp connection requests. Error code err is unused. (See tcp.h) -STATIC err_t _lwip_tcp_connected(void *arg, struct tcp_pcb *tpcb, err_t err) { +static err_t _lwip_tcp_connected(void *arg, struct tcp_pcb *tpcb, err_t err) { socketpool_socket_obj_t *socket = (socketpool_socket_obj_t *)arg; socket->state = STATE_CONNECTED; @@ -213,7 +213,7 @@ STATIC err_t _lwip_tcp_connected(void *arg, struct tcp_pcb *tpcb, err_t err) { // Handle errors (eg connection aborted) on TCP PCBs that have been put on the // accept queue but are not yet actually accepted. -STATIC void _lwip_tcp_err_unaccepted(void *arg, err_t err) { +static void _lwip_tcp_err_unaccepted(void *arg, err_t err) { struct tcp_pcb *pcb = (struct tcp_pcb *)arg; // The ->connected entry is repurposed to store the parent socket; this is safe @@ -253,12 +253,12 @@ STATIC void _lwip_tcp_err_unaccepted(void *arg, err_t err) { // so set this handler which requests lwIP to keep pbuf's and deliver // them later. We cannot cache pbufs in child socket on Python side, // until it is created in accept(). -STATIC err_t _lwip_tcp_recv_unaccepted(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err) { +static err_t _lwip_tcp_recv_unaccepted(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err) { return ERR_BUF; } // Callback for incoming tcp connections. -STATIC err_t _lwip_tcp_accept(void *arg, struct tcp_pcb *newpcb, err_t err) { +static err_t _lwip_tcp_accept(void *arg, struct tcp_pcb *newpcb, err_t err) { // err can be ERR_MEM to notify us that there was no memory for an incoming connection if (err != ERR_OK) { return ERR_OK; @@ -295,7 +295,7 @@ STATIC err_t _lwip_tcp_accept(void *arg, struct tcp_pcb *newpcb, err_t err) { } // Callback for inbound tcp packets. -STATIC err_t _lwip_tcp_recv(void *arg, struct tcp_pcb *tcpb, struct pbuf *p, err_t err) { +static err_t _lwip_tcp_recv(void *arg, struct tcp_pcb *tcpb, struct pbuf *p, err_t err) { socketpool_socket_obj_t *socket = (socketpool_socket_obj_t *)arg; if (p == NULL) { @@ -326,7 +326,7 @@ STATIC err_t _lwip_tcp_recv(void *arg, struct tcp_pcb *tcpb, struct pbuf *p, err // these to do the work. // Helper function for send/sendto to handle raw/UDP packets. -STATIC mp_uint_t lwip_raw_udp_send(socketpool_socket_obj_t *socket, const byte *buf, mp_uint_t len, ip_addr_t *dest, uint32_t port, int *_errno) { +static mp_uint_t lwip_raw_udp_send(socketpool_socket_obj_t *socket, const byte *buf, mp_uint_t len, ip_addr_t *dest, uint32_t port, int *_errno) { if (len > 0xffff) { // Any packet that big is probably going to fail the pbuf_alloc anyway, but may as well try len = 0xffff; @@ -380,7 +380,7 @@ STATIC mp_uint_t lwip_raw_udp_send(socketpool_socket_obj_t *socket, const byte * } // Helper function for recv/recvfrom to handle raw/UDP packets -STATIC mp_uint_t lwip_raw_udp_receive(socketpool_socket_obj_t *socket, byte *buf, mp_uint_t len, byte *ip, uint32_t *port, int *_errno) { +static mp_uint_t lwip_raw_udp_receive(socketpool_socket_obj_t *socket, byte *buf, mp_uint_t len, byte *ip, uint32_t *port, int *_errno) { if (socket->incoming.pbuf == NULL) { if (socket->timeout == 0) { @@ -437,7 +437,7 @@ STATIC mp_uint_t lwip_raw_udp_receive(socketpool_socket_obj_t *socket, byte *buf // Helper function for send/sendto to handle TCP packets -STATIC mp_uint_t lwip_tcp_send(socketpool_socket_obj_t *socket, const byte *buf, mp_uint_t len, int *_errno) { +static mp_uint_t lwip_tcp_send(socketpool_socket_obj_t *socket, const byte *buf, mp_uint_t len, int *_errno) { // Check for any pending errors STREAM_ERROR_CHECK(socket); @@ -517,7 +517,7 @@ STATIC mp_uint_t lwip_tcp_send(socketpool_socket_obj_t *socket, const byte *buf, } // Helper function for recv/recvfrom to handle TCP packets -STATIC mp_uint_t lwip_tcp_receive(socketpool_socket_obj_t *socket, byte *buf, mp_uint_t len, int *_errno) { +static mp_uint_t lwip_tcp_receive(socketpool_socket_obj_t *socket, byte *buf, mp_uint_t len, int *_errno) { // Check for any pending errors STREAM_ERROR_CHECK(socket); @@ -589,8 +589,8 @@ STATIC mp_uint_t lwip_tcp_receive(socketpool_socket_obj_t *socket, byte *buf, mp } -STATIC socketpool_socket_obj_t *open_socket_objs[MAX_SOCKETS]; -STATIC bool user_socket[MAX_SOCKETS]; +static socketpool_socket_obj_t *open_socket_objs[MAX_SOCKETS]; +static bool user_socket[MAX_SOCKETS]; void socket_user_reset(void) { for (size_t i = 0; i < MP_ARRAY_SIZE(open_socket_objs); i++) { @@ -605,7 +605,7 @@ void socket_user_reset(void) { // The writes below send an event to the socket select task so that it redoes the // select with the new open socket set. -STATIC bool register_open_socket(socketpool_socket_obj_t *obj) { +static bool register_open_socket(socketpool_socket_obj_t *obj) { for (size_t i = 0; i < MP_ARRAY_SIZE(open_socket_objs); i++) { if (!open_socket_objs[i]) { open_socket_objs[i] = obj; @@ -618,7 +618,7 @@ STATIC bool register_open_socket(socketpool_socket_obj_t *obj) { return false; } -STATIC void unregister_open_socket(socketpool_socket_obj_t *obj) { +static void unregister_open_socket(socketpool_socket_obj_t *obj) { for (size_t i = 0; i < MP_ARRAY_SIZE(open_socket_objs); i++) { if (open_socket_objs[i] == obj) { DEBUG_printf("unregister_open_socket(%p) clears %d\n", obj, i); @@ -630,7 +630,7 @@ STATIC void unregister_open_socket(socketpool_socket_obj_t *obj) { DEBUG_printf("unregister_open_socket(%p) fails due to missing entry\n", obj); } -STATIC void mark_user_socket(socketpool_socket_obj_t *obj) { +static void mark_user_socket(socketpool_socket_obj_t *obj) { for (size_t i = 0; i < MP_ARRAY_SIZE(open_socket_objs); i++) { if (open_socket_objs[i] == obj) { DEBUG_printf("mark_user_socket(%p) -> %d\n", obj, i); @@ -876,7 +876,7 @@ size_t common_hal_socketpool_socket_bind(socketpool_socket_obj_t *socket, return 0; } -STATIC err_t _lwip_tcp_close_poll(void *arg, struct tcp_pcb *pcb) { +static err_t _lwip_tcp_close_poll(void *arg, struct tcp_pcb *pcb) { // Connection has not been cleanly closed so just abort it to free up memory tcp_poll(pcb, NULL, 0); tcp_abort(pcb); diff --git a/ports/raspberrypi/common-hal/socketpool/SocketPool.c b/ports/raspberrypi/common-hal/socketpool/SocketPool.c index a98bc2313dc1..cf92a622a1c7 100644 --- a/ports/raspberrypi/common-hal/socketpool/SocketPool.c +++ b/ports/raspberrypi/common-hal/socketpool/SocketPool.c @@ -26,7 +26,7 @@ typedef struct _getaddrinfo_state_t { volatile ip_addr_t ipaddr; } getaddrinfo_state_t; -STATIC void lwip_getaddrinfo_cb(const char *name, const ip_addr_t *ipaddr, void *arg) { +static void lwip_getaddrinfo_cb(const char *name, const ip_addr_t *ipaddr, void *arg) { getaddrinfo_state_t *state = arg; if (ipaddr != NULL) { state->status = 1; @@ -37,7 +37,7 @@ STATIC void lwip_getaddrinfo_cb(const char *name, const ip_addr_t *ipaddr, void } } -STATIC int socketpool_resolve_host(socketpool_socketpool_obj_t *self, const char *host, ip_addr_t *addr) { +static int socketpool_resolve_host(socketpool_socketpool_obj_t *self, const char *host, ip_addr_t *addr) { getaddrinfo_state_t state; state.status = 0; diff --git a/ports/raspberrypi/common-hal/usb_host/Port.c b/ports/raspberrypi/common-hal/usb_host/Port.c index 9f8fb016b343..b85b56fd1875 100644 --- a/ports/raspberrypi/common-hal/usb_host/Port.c +++ b/ports/raspberrypi/common-hal/usb_host/Port.c @@ -27,7 +27,7 @@ usb_host_port_obj_t usb_host_instance; -STATIC PIO pio_instances[2] = {pio0, pio1}; +static PIO pio_instances[2] = {pio0, pio1}; volatile bool _core1_ready = false; static void __not_in_flash_func(core1_main)(void) { @@ -61,7 +61,7 @@ static void __not_in_flash_func(core1_main)(void) { } } -STATIC uint8_t _sm_free_count(uint8_t pio_index) { +static uint8_t _sm_free_count(uint8_t pio_index) { PIO pio = pio_instances[pio_index]; uint8_t free_count = 0; for (size_t j = 0; j < NUM_PIO_STATE_MACHINES; j++) { @@ -72,7 +72,7 @@ STATIC uint8_t _sm_free_count(uint8_t pio_index) { return free_count; } -STATIC bool _has_program_room(uint8_t pio_index, uint8_t program_size) { +static bool _has_program_room(uint8_t pio_index, uint8_t program_size) { PIO pio = pio_instances[pio_index]; pio_program_t program_struct = { .instructions = NULL, diff --git a/ports/raspberrypi/supervisor/internal_flash.c b/ports/raspberrypi/supervisor/internal_flash.c index 76dde31b9902..dea61e3ed1d0 100644 --- a/ports/raspberrypi/supervisor/internal_flash.c +++ b/ports/raspberrypi/supervisor/internal_flash.c @@ -34,9 +34,9 @@ // TODO: Split the caching out of supervisor/shared/external_flash so we can use it. #define SECTOR_SIZE 4096 #define NO_CACHE 0xffffffff -STATIC uint8_t _cache[SECTOR_SIZE]; -STATIC uint32_t _cache_lba = NO_CACHE; -STATIC uint32_t _flash_size = 0; +static uint8_t _cache[SECTOR_SIZE]; +static uint32_t _cache_lba = NO_CACHE; +static uint32_t _flash_size = 0; void supervisor_flash_init(void) { bi_decl_if_func_used(bi_block_device( diff --git a/ports/raspberrypi/supervisor/port.c b/ports/raspberrypi/supervisor/port.c index 6eb43d70eb45..7d79dc962987 100644 --- a/ports/raspberrypi/supervisor/port.c +++ b/ports/raspberrypi/supervisor/port.c @@ -62,9 +62,9 @@ critical_section_t background_queue_lock; extern volatile bool mp_msc_enabled; -STATIC void _tick_callback(uint alarm_num); +static void _tick_callback(uint alarm_num); -STATIC void _binary_info(void) { +static void _binary_info(void) { // Binary info readable with `picotool`. bi_decl(bi_program_name("CircuitPython")); bi_decl(bi_program_version_string(MICROPY_GIT_TAG)); @@ -253,7 +253,7 @@ uint64_t port_get_raw_ticks(uint8_t *subticks) { return 1024 * (microseconds / 1000000) + (microseconds % 1000000) / 977; } -STATIC void _tick_callback(uint alarm_num) { +static void _tick_callback(uint alarm_num) { if (ticks_enabled) { supervisor_tick(); hardware_alarm_set_target(0, delayed_by_us(get_absolute_time(), 977)); diff --git a/ports/raspberrypi/supervisor/usb.c b/ports/raspberrypi/supervisor/usb.c index 05ee6d4aef15..8982a59707e6 100644 --- a/ports/raspberrypi/supervisor/usb.c +++ b/ports/raspberrypi/supervisor/usb.c @@ -14,7 +14,7 @@ void init_usb_hardware(void) { } -STATIC void _usb_irq_wrapper(void) { +static void _usb_irq_wrapper(void) { usb_irq_handler(0); } diff --git a/ports/renode/boards/renode_cortex_m0plus/pins.c b/ports/renode/boards/renode_cortex_m0plus/pins.c index efa6d2d729e2..121d7e912bfd 100644 --- a/ports/renode/boards/renode_cortex_m0plus/pins.c +++ b/ports/renode/boards/renode_cortex_m0plus/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO0) }, diff --git a/ports/renode/common-hal/os/__init__.c b/ports/renode/common-hal/os/__init__.c index cf0f0fc67028..334742bb594e 100644 --- a/ports/renode/common-hal/os/__init__.c +++ b/ports/renode/common-hal/os/__init__.c @@ -12,18 +12,18 @@ #include "shared-bindings/os/__init__.h" -STATIC const qstr os_uname_info_fields[] = { +static const qstr os_uname_info_fields[] = { MP_QSTR_sysname, MP_QSTR_nodename, MP_QSTR_release, MP_QSTR_version, MP_QSTR_machine }; -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_sysname_obj, "renode"); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_nodename_obj, "renode"); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_release_obj, MICROPY_VERSION_STRING); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_version_obj, MICROPY_GIT_TAG " on " MICROPY_BUILD_DATE); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_machine_obj, MICROPY_HW_BOARD_NAME " with " MICROPY_HW_MCU_NAME); +static const MP_DEFINE_STR_OBJ(os_uname_info_sysname_obj, "renode"); +static const MP_DEFINE_STR_OBJ(os_uname_info_nodename_obj, "renode"); +static const MP_DEFINE_STR_OBJ(os_uname_info_release_obj, MICROPY_VERSION_STRING); +static const MP_DEFINE_STR_OBJ(os_uname_info_version_obj, MICROPY_GIT_TAG " on " MICROPY_BUILD_DATE); +static const MP_DEFINE_STR_OBJ(os_uname_info_machine_obj, MICROPY_HW_BOARD_NAME " with " MICROPY_HW_MCU_NAME); -STATIC MP_DEFINE_ATTRTUPLE( +static MP_DEFINE_ATTRTUPLE( os_uname_info_obj, os_uname_info_fields, 5, diff --git a/ports/stm/boards/espruino_pico/pins.c b/ports/stm/boards/espruino_pico/pins.c index 714ac1c7e699..84cc8e6d8aaf 100644 --- a/ports/stm/boards/espruino_pico/pins.c +++ b/ports/stm/boards/espruino_pico/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_B15), MP_ROM_PTR(&pin_PB15) }, diff --git a/ports/stm/boards/espruino_wifi/pins.c b/ports/stm/boards/espruino_wifi/pins.c index 125204dc7607..8a4be200fb93 100644 --- a/ports/stm/boards/espruino_wifi/pins.c +++ b/ports/stm/boards/espruino_wifi/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // P1 diff --git a/ports/stm/boards/feather_stm32f405_express/pins.c b/ports/stm/boards/feather_stm32f405_express/pins.c index 0d4131f878b1..623747d925c9 100644 --- a/ports/stm/boards/feather_stm32f405_express/pins.c +++ b/ports/stm/boards/feather_stm32f405_express/pins.c @@ -7,7 +7,7 @@ #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_obj_tuple_t sdio_data_tuple = { +static const mp_rom_obj_tuple_t sdio_data_tuple = { {&mp_type_tuple}, 4, { @@ -18,7 +18,7 @@ STATIC const mp_rom_obj_tuple_t sdio_data_tuple = { } }; -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA04) }, diff --git a/ports/stm/boards/meowbit_v121/pins.c b/ports/stm/boards/meowbit_v121/pins.c index dd5404f823e6..8460215c0906 100644 --- a/ports/stm/boards/meowbit_v121/pins.c +++ b/ports/stm/boards/meowbit_v121/pins.c @@ -12,7 +12,7 @@ extern audiopwmio_pwmaudioout_obj_t board_buzz_obj; -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_LED_RED), MP_ROM_PTR(&pin_PB04) }, diff --git a/ports/stm/boards/nucleo_f446re/pins.c b/ports/stm/boards/nucleo_f446re/pins.c index 82e059253e76..62c460a7e9a1 100644 --- a/ports/stm/boards/nucleo_f446re/pins.c +++ b/ports/stm/boards/nucleo_f446re/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { {MP_ROM_QSTR(MP_QSTR_ID), MP_ROM_PTR(&board_module_id_obj)}, {MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA03)}, {MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PA02)}, diff --git a/ports/stm/boards/nucleo_f746zg/pins.c b/ports/stm/boards/nucleo_f746zg/pins.c index e267556ae00d..c46bf17fc43b 100644 --- a/ports/stm/boards/nucleo_f746zg/pins.c +++ b/ports/stm/boards/nucleo_f746zg/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA03) }, diff --git a/ports/stm/boards/nucleo_f767zi/pins.c b/ports/stm/boards/nucleo_f767zi/pins.c index 2f6d6cf99365..68bdeb65e0be 100644 --- a/ports/stm/boards/nucleo_f767zi/pins.c +++ b/ports/stm/boards/nucleo_f767zi/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA03) }, diff --git a/ports/stm/boards/nucleo_h743zi_2/pins.c b/ports/stm/boards/nucleo_h743zi_2/pins.c index 84406e009377..770c34e86977 100644 --- a/ports/stm/boards/nucleo_h743zi_2/pins.c +++ b/ports/stm/boards/nucleo_h743zi_2/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA03) }, diff --git a/ports/stm/boards/openmv_h7/pins.c b/ports/stm/boards/openmv_h7/pins.c index 27e82e44a663..a2a9bc4669d4 100644 --- a/ports/stm/boards/openmv_h7/pins.c +++ b/ports/stm/boards/openmv_h7/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_P0), MP_ROM_PTR(&pin_PB15) }, diff --git a/ports/stm/boards/pyb_nano_v2/pins.c b/ports/stm/boards/pyb_nano_v2/pins.c index 74f3eb1eb16e..5457c83ca8e8 100644 --- a/ports/stm/boards/pyb_nano_v2/pins.c +++ b/ports/stm/boards/pyb_nano_v2/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_Y10), MP_ROM_PTR(&pin_PA10) }, diff --git a/ports/stm/boards/pyboard_v11/pins.c b/ports/stm/boards/pyboard_v11/pins.c index cf33c4637adc..0689ddf6342f 100644 --- a/ports/stm/boards/pyboard_v11/pins.c +++ b/ports/stm/boards/pyboard_v11/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_Y1), MP_ROM_PTR(&pin_PC06) }, diff --git a/ports/stm/boards/sparkfun_stm32_thing_plus/pins.c b/ports/stm/boards/sparkfun_stm32_thing_plus/pins.c index a08f7120f228..953cd4c0e68f 100644 --- a/ports/stm/boards/sparkfun_stm32_thing_plus/pins.c +++ b/ports/stm/boards/sparkfun_stm32_thing_plus/pins.c @@ -7,7 +7,7 @@ #include "py/objtuple.h" #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_obj_tuple_t sdio_data_tuple = { +static const mp_rom_obj_tuple_t sdio_data_tuple = { {&mp_type_tuple}, 4, { @@ -18,7 +18,7 @@ STATIC const mp_rom_obj_tuple_t sdio_data_tuple = { } }; -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA04) }, diff --git a/ports/stm/boards/sparkfun_stm32f405_micromod/pins.c b/ports/stm/boards/sparkfun_stm32f405_micromod/pins.c index baeda8bfff01..247defe3bff2 100644 --- a/ports/stm/boards/sparkfun_stm32f405_micromod/pins.c +++ b/ports/stm/boards/sparkfun_stm32f405_micromod/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // The SparkFun MicroMod spec uses a zero-based peripheral numbering scheme. diff --git a/ports/stm/boards/stm32f411ce_blackpill/pins.c b/ports/stm/boards/stm32f411ce_blackpill/pins.c index 2b299930fdb3..e4ef7a7c07c5 100644 --- a/ports/stm/boards/stm32f411ce_blackpill/pins.c +++ b/ports/stm/boards/stm32f411ce_blackpill/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_B12), MP_ROM_PTR(&pin_PB12) }, diff --git a/ports/stm/boards/stm32f411ce_blackpill_with_flash/pins.c b/ports/stm/boards/stm32f411ce_blackpill_with_flash/pins.c index 2b299930fdb3..e4ef7a7c07c5 100644 --- a/ports/stm/boards/stm32f411ce_blackpill_with_flash/pins.c +++ b/ports/stm/boards/stm32f411ce_blackpill_with_flash/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_B12), MP_ROM_PTR(&pin_PB12) }, diff --git a/ports/stm/boards/stm32f411ve_discovery/pins.c b/ports/stm/boards/stm32f411ve_discovery/pins.c index 904e8477a530..1c855b17f4ca 100644 --- a/ports/stm/boards/stm32f411ve_discovery/pins.c +++ b/ports/stm/boards/stm32f411ve_discovery/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // P1 diff --git a/ports/stm/boards/stm32f412zg_discovery/pins.c b/ports/stm/boards/stm32f412zg_discovery/pins.c index c523e8e5212c..4e14e9b541a2 100644 --- a/ports/stm/boards/stm32f412zg_discovery/pins.c +++ b/ports/stm/boards/stm32f412zg_discovery/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_PE02), MP_ROM_PTR(&pin_PE02) }, diff --git a/ports/stm/boards/stm32f4_discovery/pins.c b/ports/stm/boards/stm32f4_discovery/pins.c index d1513031fec8..6fd9e2500449 100644 --- a/ports/stm/boards/stm32f4_discovery/pins.c +++ b/ports/stm/boards/stm32f4_discovery/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS // P1 diff --git a/ports/stm/boards/stm32f746g_discovery/pins.c b/ports/stm/boards/stm32f746g_discovery/pins.c index 55c97cb39a36..ca3928ff0c7b 100644 --- a/ports/stm/boards/stm32f746g_discovery/pins.c +++ b/ports/stm/boards/stm32f746g_discovery/pins.c @@ -7,7 +7,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA00) }, diff --git a/ports/stm/boards/swan_r5/pins.c b/ports/stm/boards/swan_r5/pins.c index 0e827e11d899..47df9151ccd0 100644 --- a/ports/stm/boards/swan_r5/pins.c +++ b/ports/stm/boards/swan_r5/pins.c @@ -9,7 +9,7 @@ #include "board.h" // extended pins -STATIC const mp_rom_map_elem_t board_module_carrier_table[] = { +static const mp_rom_map_elem_t board_module_carrier_table[] = { { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PD09) }, { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PD08) }, { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PF15) }, @@ -89,7 +89,7 @@ MP_DEFINE_CONST_OBJ_TYPE( // Core Feather Pins -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_ext), MP_ROM_PTR(&carrier_type) }, diff --git a/ports/stm/boards/thunderpack_v11/pins.c b/ports/stm/boards/thunderpack_v11/pins.c index fcb04e54e4d0..9da6fa804b09 100644 --- a/ports/stm/boards/thunderpack_v11/pins.c +++ b/ports/stm/boards/thunderpack_v11/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_PA0), MP_ROM_PTR(&pin_PA00) }, diff --git a/ports/stm/boards/thunderpack_v12/pins.c b/ports/stm/boards/thunderpack_v12/pins.c index 92a07ac0e8ef..60a839b29553 100644 --- a/ports/stm/boards/thunderpack_v12/pins.c +++ b/ports/stm/boards/thunderpack_v12/pins.c @@ -6,7 +6,7 @@ #include "shared-bindings/board/__init__.h" -STATIC const mp_rom_map_elem_t board_module_globals_table[] = { +static const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS { MP_ROM_QSTR(MP_QSTR_PA0), MP_ROM_PTR(&pin_PA00) }, diff --git a/ports/stm/common-hal/alarm/SleepMemory.c b/ports/stm/common-hal/alarm/SleepMemory.c index 74a5b418203a..84912e5cc106 100644 --- a/ports/stm/common-hal/alarm/SleepMemory.c +++ b/ports/stm/common-hal/alarm/SleepMemory.c @@ -23,9 +23,9 @@ #endif -STATIC bool initialized = false; +static bool initialized = false; -STATIC void lazy_init(void) { +static void lazy_init(void) { if (!initialized) { __HAL_RCC_BKPSRAM_CLK_ENABLE(); HAL_PWREx_EnableBkUpReg(); diff --git a/ports/stm/common-hal/alarm/__init__.c b/ports/stm/common-hal/alarm/__init__.c index 0526f510c083..3d6c4466882b 100644 --- a/ports/stm/common-hal/alarm/__init__.c +++ b/ports/stm/common-hal/alarm/__init__.c @@ -31,7 +31,7 @@ const alarm_sleep_memory_obj_t alarm_sleep_memory_obj = { // This object lives across VM instantiations, so none of these objects can contain references to the heap. alarm_wake_alarm_union_t alarm_wake_alarm; -STATIC stm_sleep_source_t true_deep_wake_reason; +static stm_sleep_source_t true_deep_wake_reason; void alarm_reset(void) { // Reset the alarm flag @@ -85,7 +85,7 @@ mp_obj_t common_hal_alarm_record_wake_alarm(void) { } // Set up light sleep or deep sleep alarms. -STATIC void _setup_sleep_alarms(bool deep_sleep, size_t n_alarms, const mp_obj_t *alarms) { +static void _setup_sleep_alarms(bool deep_sleep, size_t n_alarms, const mp_obj_t *alarms) { alarm_pin_pinalarm_set_alarms(deep_sleep, n_alarms, alarms); alarm_time_timealarm_set_alarms(deep_sleep, n_alarms, alarms); } diff --git a/ports/stm/common-hal/alarm/pin/PinAlarm.c b/ports/stm/common-hal/alarm/pin/PinAlarm.c index 45c4afa4c5cf..93512953d312 100644 --- a/ports/stm/common-hal/alarm/pin/PinAlarm.c +++ b/ports/stm/common-hal/alarm/pin/PinAlarm.c @@ -11,13 +11,13 @@ #include "peripherals/exti.h" -STATIC bool woke_up; +static bool woke_up; -STATIC uint16_t alarm_pin_triggered; -STATIC bool deep_wkup_enabled; -STATIC bool reserved_alarms[STM32_GPIO_PORT_SIZE]; +static uint16_t alarm_pin_triggered; +static bool deep_wkup_enabled; +static bool reserved_alarms[STM32_GPIO_PORT_SIZE]; -STATIC void pin_alarm_callback(uint8_t num) { +static void pin_alarm_callback(uint8_t num) { alarm_pin_triggered |= (1 << num); woke_up = true; HAL_GPIO_EXTI_IRQHandler(pin_mask(num)); diff --git a/ports/stm/common-hal/alarm/time/TimeAlarm.c b/ports/stm/common-hal/alarm/time/TimeAlarm.c index 545587a65f50..ca5d0de70911 100644 --- a/ports/stm/common-hal/alarm/time/TimeAlarm.c +++ b/ports/stm/common-hal/alarm/time/TimeAlarm.c @@ -13,8 +13,8 @@ #include STM32_HAL_H -STATIC volatile bool woke_up; -STATIC uint32_t deep_sleep_ticks; +static volatile bool woke_up; +static uint32_t deep_sleep_ticks; void common_hal_alarm_time_timealarm_construct(alarm_time_timealarm_obj_t *self, mp_float_t monotonic_time) { self->monotonic_time = monotonic_time; @@ -44,7 +44,7 @@ mp_obj_t alarm_time_timealarm_record_wake_alarm(void) { } // This is run in the timer task. We use it to wake the main CircuitPython task. -STATIC void timer_callback(void) { +static void timer_callback(void) { woke_up = true; } diff --git a/ports/stm/common-hal/analogio/AnalogOut.c b/ports/stm/common-hal/analogio/AnalogOut.c index fcf814f2287b..44fdff5af4b7 100644 --- a/ports/stm/common-hal/analogio/AnalogOut.c +++ b/ports/stm/common-hal/analogio/AnalogOut.c @@ -33,7 +33,7 @@ DAC_HandleTypeDef handle; #endif -STATIC bool dac_on[2]; +static bool dac_on[2]; void common_hal_analogio_analogout_construct(analogio_analogout_obj_t *self, const mcu_pin_obj_t *pin) { diff --git a/ports/stm/common-hal/audiopwmio/PWMAudioOut.c b/ports/stm/common-hal/audiopwmio/PWMAudioOut.c index e22681a793b8..9a82398aeb6f 100644 --- a/ports/stm/common-hal/audiopwmio/PWMAudioOut.c +++ b/ports/stm/common-hal/audiopwmio/PWMAudioOut.c @@ -12,20 +12,20 @@ #include "timers.h" // TODO: support multiple concurrently active outputs. -STATIC TIM_HandleTypeDef tim_handle; -STATIC audiopwmio_pwmaudioout_obj_t *active_audio = NULL; +static TIM_HandleTypeDef tim_handle; +static audiopwmio_pwmaudioout_obj_t *active_audio = NULL; -STATIC void set_pin(uint8_t channel, GPIO_PinState state) { +static void set_pin(uint8_t channel, GPIO_PinState state) { HAL_GPIO_WritePin(pin_port(active_audio->pin[channel]->port), pin_mask(active_audio->pin[channel]->number), state); } -STATIC void toggle_pin(uint8_t channel) { +static void toggle_pin(uint8_t channel) { HAL_GPIO_TogglePin(pin_port(active_audio->pin[channel]->port), pin_mask(active_audio->pin[channel]->number)); } -STATIC void set_drive_mode(const mcu_pin_obj_t *pin, uint32_t mode) { +static void set_drive_mode(const mcu_pin_obj_t *pin, uint32_t mode) { GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitStruct.Pin = pin_mask(pin->number); GPIO_InitStruct.Mode = mode; @@ -34,7 +34,7 @@ STATIC void set_drive_mode(const mcu_pin_obj_t *pin, uint32_t mode) { HAL_GPIO_Init(pin_port(pin->port), &GPIO_InitStruct); } -STATIC void start_timer(audiopwmio_pwmaudioout_obj_t *self) { +static void start_timer(audiopwmio_pwmaudioout_obj_t *self) { if (self->buffer_ptr[0] >= self->buffer_length[0]) { // no more pulses return; } @@ -55,7 +55,7 @@ STATIC void start_timer(audiopwmio_pwmaudioout_obj_t *self) { __HAL_TIM_ENABLE_IT(&tim_handle, TIM_IT_UPDATE); } -STATIC bool fill_buffers(audiopwmio_pwmaudioout_obj_t *self) { +static bool fill_buffers(audiopwmio_pwmaudioout_obj_t *self) { // Naive PCM-to-PWM conversion int16_t threshold = 0x666; // 0.05; TODO: make configurable uint8_t *buffer; @@ -131,7 +131,7 @@ STATIC bool fill_buffers(audiopwmio_pwmaudioout_obj_t *self) { return true; } -STATIC void move_to_beginning(uint16_t *buffer, uint16_t *buffer_length, uint16_t *buffer_ptr) { +static void move_to_beginning(uint16_t *buffer, uint16_t *buffer_length, uint16_t *buffer_ptr) { if (*buffer_ptr < *buffer_length) { memmove(buffer, buffer + *buffer_ptr, *buffer_length - *buffer_ptr); *buffer_length -= *buffer_ptr; @@ -141,7 +141,7 @@ STATIC void move_to_beginning(uint16_t *buffer, uint16_t *buffer_length, uint16_ *buffer_ptr = 0; } -STATIC void pwmaudioout_event_handler(void) { +static void pwmaudioout_event_handler(void) { // Detect TIM Update event if (__HAL_TIM_GET_FLAG(&tim_handle, TIM_FLAG_UPDATE) != RESET) { if (__HAL_TIM_GET_IT_SOURCE(&tim_handle, TIM_IT_UPDATE) != RESET) { @@ -213,7 +213,7 @@ bool common_hal_audiopwmio_pwmaudioout_deinited(audiopwmio_pwmaudioout_obj_t *se return !self->pin[0]; } -STATIC void free_buffers(audiopwmio_pwmaudioout_obj_t *self) { +static void free_buffers(audiopwmio_pwmaudioout_obj_t *self) { m_free(self->buffer[0]); self->buffer[0] = NULL; m_free(self->buffer[1]); diff --git a/ports/stm/common-hal/busio/I2C.c b/ports/stm/common-hal/busio/I2C.c index 92d0b8e1a928..d7919cbd7ada 100644 --- a/ports/stm/common-hal/busio/I2C.c +++ b/ports/stm/common-hal/busio/I2C.c @@ -40,13 +40,13 @@ // Arrays use 0 based numbering: I2C1 is stored at index 0 #define MAX_I2C 4 -STATIC bool reserved_i2c[MAX_I2C]; -STATIC bool never_reset_i2c[MAX_I2C]; +static bool reserved_i2c[MAX_I2C]; +static bool never_reset_i2c[MAX_I2C]; #define ALL_CLOCKS 0xFF -STATIC void i2c_clock_enable(uint8_t mask); -STATIC void i2c_clock_disable(uint8_t mask); -STATIC void i2c_assign_irq(busio_i2c_obj_t *self, I2C_TypeDef *I2Cx); +static void i2c_clock_enable(uint8_t mask); +static void i2c_clock_disable(uint8_t mask); +static void i2c_assign_irq(busio_i2c_obj_t *self, I2C_TypeDef *I2Cx); void i2c_reset(void) { uint16_t never_reset_mask = 0x00; @@ -224,7 +224,7 @@ void common_hal_busio_i2c_unlock(busio_i2c_obj_t *self) { self->has_lock = false; } -STATIC uint8_t _common_hal_busio_i2c_write(busio_i2c_obj_t *self, uint16_t addr, +static uint8_t _common_hal_busio_i2c_write(busio_i2c_obj_t *self, uint16_t addr, const uint8_t *data, size_t len, bool transmit_stop_bit) { HAL_StatusTypeDef result; if (!transmit_stop_bit) { @@ -281,7 +281,7 @@ uint8_t common_hal_busio_i2c_write_read(busio_i2c_obj_t *self, uint16_t addr, return common_hal_busio_i2c_read(self, addr, in_data, in_len); } -STATIC void i2c_clock_enable(uint8_t mask) { +static void i2c_clock_enable(uint8_t mask) { // Note: hard reset required due to soft reboot issue. #ifdef I2C1 if (mask & (1 << 0)) { @@ -313,7 +313,7 @@ STATIC void i2c_clock_enable(uint8_t mask) { #endif } -STATIC void i2c_clock_disable(uint8_t mask) { +static void i2c_clock_disable(uint8_t mask) { #ifdef I2C1 if (mask & (1 << 0)) { __HAL_RCC_I2C1_CLK_DISABLE(); @@ -336,7 +336,7 @@ STATIC void i2c_clock_disable(uint8_t mask) { #endif } -STATIC void i2c_assign_irq(busio_i2c_obj_t *self, I2C_TypeDef *I2Cx) { +static void i2c_assign_irq(busio_i2c_obj_t *self, I2C_TypeDef *I2Cx) { #ifdef I2C1 if (I2Cx == I2C1) { self->irq = I2C1_EV_IRQn; @@ -359,7 +359,7 @@ STATIC void i2c_assign_irq(busio_i2c_obj_t *self, I2C_TypeDef *I2Cx) { #endif } -STATIC void call_hal_irq(int i2c_num) { +static void call_hal_irq(int i2c_num) { // Create casted context pointer busio_i2c_obj_t *context = (busio_i2c_obj_t *)MP_STATE_PORT(cpy_i2c_obj_all)[i2c_num - 1]; if (context != NULL) { diff --git a/ports/stm/common-hal/busio/SPI.c b/ports/stm/common-hal/busio/SPI.c index 57300d85fd59..e47708d94594 100644 --- a/ports/stm/common-hal/busio/SPI.c +++ b/ports/stm/common-hal/busio/SPI.c @@ -18,14 +18,14 @@ // arrays use 0 based numbering: SPI1 is stored at index 0 #define MAX_SPI 6 -STATIC bool reserved_spi[MAX_SPI]; -STATIC bool never_reset_spi[MAX_SPI]; +static bool reserved_spi[MAX_SPI]; +static bool never_reset_spi[MAX_SPI]; #define ALL_CLOCKS 0xFF -STATIC void spi_clock_enable(uint8_t mask); -STATIC void spi_clock_disable(uint8_t mask); +static void spi_clock_enable(uint8_t mask); +static void spi_clock_disable(uint8_t mask); -STATIC uint32_t get_busclock(SPI_TypeDef *instance) { +static uint32_t get_busclock(SPI_TypeDef *instance) { #if (CPY_STM32H7) if (instance == SPI1 || instance == SPI2 || instance == SPI3) { return HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_SPI123); @@ -50,7 +50,7 @@ STATIC uint32_t get_busclock(SPI_TypeDef *instance) { #endif } -STATIC uint32_t stm32_baud_to_spi_div(uint32_t baudrate, uint16_t *prescaler, uint32_t busclock) { +static uint32_t stm32_baud_to_spi_div(uint32_t baudrate, uint16_t *prescaler, uint32_t busclock) { static const uint32_t baud_map[8][2] = { {2, SPI_BAUDRATEPRESCALER_2}, {4, SPI_BAUDRATEPRESCALER_4}, @@ -88,7 +88,7 @@ void spi_reset(void) { spi_clock_disable(ALL_CLOCKS & ~(never_reset_mask)); } -STATIC const mcu_periph_obj_t *find_pin_function(const mcu_periph_obj_t *table, size_t sz, const mcu_pin_obj_t *pin, int periph_index) { +static const mcu_periph_obj_t *find_pin_function(const mcu_periph_obj_t *table, size_t sz, const mcu_pin_obj_t *pin, int periph_index) { for (size_t i = 0; i < sz; i++, table++) { if (periph_index == table->periph_index && pin == table->pin) { return table; @@ -98,7 +98,7 @@ STATIC const mcu_periph_obj_t *find_pin_function(const mcu_periph_obj_t *table, } // match pins to SPI objects -STATIC int check_pins(busio_spi_obj_t *self, +static int check_pins(busio_spi_obj_t *self, const mcu_pin_obj_t *sck, const mcu_pin_obj_t *mosi, const mcu_pin_obj_t *miso) { bool spi_taken = false; @@ -376,7 +376,7 @@ uint8_t common_hal_busio_spi_get_polarity(busio_spi_obj_t *self) { return self->polarity; } -STATIC void spi_clock_enable(uint8_t mask) { +static void spi_clock_enable(uint8_t mask) { #ifdef SPI1 if (mask & (1 << 0)) { __HAL_RCC_SPI1_CLK_ENABLE(); @@ -409,7 +409,7 @@ STATIC void spi_clock_enable(uint8_t mask) { #endif } -STATIC void spi_clock_disable(uint8_t mask) { +static void spi_clock_disable(uint8_t mask) { #ifdef SPI1 if (mask & (1 << 0)) { __HAL_RCC_SPI1_CLK_DISABLE(); diff --git a/ports/stm/common-hal/busio/UART.c b/ports/stm/common-hal/busio/UART.c index b39453ea6184..e44fbc66a6c8 100644 --- a/ports/stm/common-hal/busio/UART.c +++ b/ports/stm/common-hal/busio/UART.c @@ -19,15 +19,15 @@ #define ALL_UARTS 0xFFFF // arrays use 0 based numbering: UART1 is stored at index 0 -STATIC bool reserved_uart[MAX_UART]; -STATIC bool never_reset_uart[MAX_UART]; +static bool reserved_uart[MAX_UART]; +static bool never_reset_uart[MAX_UART]; int errflag; // Used to restart read halts -STATIC void uart_clock_enable(uint16_t mask); -STATIC void uart_clock_disable(uint16_t mask); -STATIC void uart_assign_irq(busio_uart_obj_t *self, USART_TypeDef *USARTx); +static void uart_clock_enable(uint16_t mask); +static void uart_clock_disable(uint16_t mask); +static void uart_assign_irq(busio_uart_obj_t *self, USART_TypeDef *USARTx); -STATIC USART_TypeDef *assign_uart_or_throw(busio_uart_obj_t *self, bool pin_eval, +static USART_TypeDef *assign_uart_or_throw(busio_uart_obj_t *self, bool pin_eval, int periph_index, bool uart_taken) { if (pin_eval) { // assign a root pointer pointer for IRQ @@ -418,7 +418,7 @@ bool common_hal_busio_uart_ready_to_tx(busio_uart_obj_t *self) { return __HAL_UART_GET_FLAG(&self->handle, UART_FLAG_TXE); } -STATIC void call_hal_irq(int uart_num) { +static void call_hal_irq(int uart_num) { // Create casted context pointer busio_uart_obj_t *context = (busio_uart_obj_t *)MP_STATE_PORT(cpy_uart_obj_all)[uart_num - 1]; if (context != NULL) { @@ -456,7 +456,7 @@ void USART6_IRQHandler(void) { call_hal_irq(6); } -STATIC void uart_clock_enable(uint16_t mask) { +static void uart_clock_enable(uint16_t mask) { #ifdef USART1 if (mask & (1 << 0)) { __HAL_RCC_USART1_FORCE_RESET(); @@ -529,7 +529,7 @@ STATIC void uart_clock_enable(uint16_t mask) { #endif } -STATIC void uart_clock_disable(uint16_t mask) { +static void uart_clock_disable(uint16_t mask) { #ifdef USART1 if (mask & (1 << 0)) { __HAL_RCC_USART1_FORCE_RESET(); @@ -602,7 +602,7 @@ STATIC void uart_clock_disable(uint16_t mask) { #endif } -STATIC void uart_assign_irq(busio_uart_obj_t *self, USART_TypeDef *USARTx) { +static void uart_assign_irq(busio_uart_obj_t *self, USART_TypeDef *USARTx) { #ifdef USART1 if (USARTx == USART1) { self->irq = USART1_IRQn; diff --git a/ports/stm/common-hal/canio/CAN.c b/ports/stm/common-hal/canio/CAN.c index 3e126322fd4d..72a74a4b138c 100644 --- a/ports/stm/common-hal/canio/CAN.c +++ b/ports/stm/common-hal/canio/CAN.c @@ -15,9 +15,9 @@ #include "shared-bindings/util.h" #include "supervisor/port.h" -STATIC bool reserved_can[MP_ARRAY_SIZE(mcu_can_banks)]; +static bool reserved_can[MP_ARRAY_SIZE(mcu_can_banks)]; -STATIC const mcu_periph_obj_t *find_pin_function(const mcu_periph_obj_t *table, size_t sz, const mcu_pin_obj_t *pin, int periph_index) { +static const mcu_periph_obj_t *find_pin_function(const mcu_periph_obj_t *table, size_t sz, const mcu_pin_obj_t *pin, int periph_index) { for (size_t i = 0; i < sz; i++, table++) { if (periph_index != -1 && periph_index != table->periph_index) { continue; diff --git a/ports/stm/common-hal/canio/Listener.c b/ports/stm/common-hal/canio/Listener.c index ec7c95a21219..bafdd4ba2c10 100644 --- a/ports/stm/common-hal/canio/Listener.c +++ b/ports/stm/common-hal/canio/Listener.c @@ -19,15 +19,15 @@ #include "supervisor/shared/tick.h" #include "supervisor/shared/safe_mode.h" -STATIC void allow_filter_change(canio_can_obj_t *can) { +static void allow_filter_change(canio_can_obj_t *can) { can->filter_hw->FMR |= CAN_FMR_FINIT; } -STATIC void prevent_filter_change(canio_can_obj_t *can) { +static void prevent_filter_change(canio_can_obj_t *can) { can->filter_hw->FMR &= ~CAN_FMR_FINIT; } -STATIC bool filter_in_use(canio_can_obj_t *can, int idx) { +static bool filter_in_use(canio_can_obj_t *can, int idx) { return can->filter_hw->FA1R & (1 << idx); } @@ -38,7 +38,7 @@ STATIC bool filter_in_use(canio_can_obj_t *can, int idx) { // * four extended ids // However, stm needs two filters to permit RTR and non-RTR messages // so we ONLY use mask-type filter banks -STATIC size_t num_filters_needed(size_t nmatch, canio_match_obj_t **matches) { +static size_t num_filters_needed(size_t nmatch, canio_match_obj_t **matches) { if (nmatch == 0) { return 1; } @@ -54,7 +54,7 @@ STATIC size_t num_filters_needed(size_t nmatch, canio_match_obj_t **matches) { return num_extended_mask + num_standard_mask / 2; } -STATIC size_t num_filters_available(canio_can_obj_t *can) { +static size_t num_filters_available(canio_can_obj_t *can) { size_t available = 0; for (size_t i = can->start_filter_bank; i < can->end_filter_bank; i++) { if (!filter_in_use(can, i)) { @@ -64,7 +64,7 @@ STATIC size_t num_filters_available(canio_can_obj_t *can) { return available; } -STATIC void clear_filters(canio_listener_obj_t *self) { +static void clear_filters(canio_listener_obj_t *self) { canio_can_obj_t *can = self->can; allow_filter_change(can); @@ -78,7 +78,7 @@ STATIC void clear_filters(canio_listener_obj_t *self) { prevent_filter_change(can); } -STATIC int next_filter(canio_can_obj_t *can) { +static int next_filter(canio_can_obj_t *can) { uint32_t fa1r = can->filter_hw->FA1R; for (size_t i = can->start_filter_bank; i < can->end_filter_bank; i++) { if (!(fa1r & (1 << i))) { @@ -93,7 +93,7 @@ STATIC int next_filter(canio_can_obj_t *can) { #define FILTER16_IDE (1 << 3) #define FILTER32_IDE (1 << 2) -STATIC void install_standard_filter(canio_listener_obj_t *self, canio_match_obj_t *match1, canio_match_obj_t *match2) { +static void install_standard_filter(canio_listener_obj_t *self, canio_match_obj_t *match1, canio_match_obj_t *match2) { int bank = next_filter(self->can); // filter is already deactivated, so we skip deactivating it here @@ -122,7 +122,7 @@ STATIC void install_standard_filter(canio_listener_obj_t *self, canio_match_obj_ SET_BIT(self->can->filter_hw->FA1R, 1 << bank); } -STATIC void install_extended_filter(canio_listener_obj_t *self, canio_match_obj_t *match) { +static void install_extended_filter(canio_listener_obj_t *self, canio_match_obj_t *match) { int bank = next_filter(self->can); // filter is already deactivated, so we skip deactivating it here @@ -149,7 +149,7 @@ STATIC void install_extended_filter(canio_listener_obj_t *self, canio_match_obj_ SET_BIT(self->can->filter_hw->FA1R, 1 << bank); } -STATIC void install_all_match_filter(canio_listener_obj_t *self) { +static void install_all_match_filter(canio_listener_obj_t *self) { int bank = next_filter(self->can); // filter is already deactivated, so we skip deactivating it here diff --git a/ports/stm/common-hal/microcontroller/Pin.c b/ports/stm/common-hal/microcontroller/Pin.c index 788274b9ddf2..e0ff3f138dfc 100644 --- a/ports/stm/common-hal/microcontroller/Pin.c +++ b/ports/stm/common-hal/microcontroller/Pin.c @@ -26,8 +26,8 @@ GPIO_TypeDef *ports[] = {GPIOA, GPIOB, GPIOC}; #define GPIO_PORT_COUNT (MP_ARRAY_SIZE(ports)) -STATIC uint16_t claimed_pins[GPIO_PORT_COUNT]; -STATIC uint16_t __ALIGNED(4) never_reset_pins[GPIO_PORT_COUNT]; +static uint16_t claimed_pins[GPIO_PORT_COUNT]; +static uint16_t __ALIGNED(4) never_reset_pins[GPIO_PORT_COUNT]; void reset_all_pins(void) { // Reset claimed pins diff --git a/ports/stm/common-hal/microcontroller/Processor.c b/ports/stm/common-hal/microcontroller/Processor.c index 7196d289de2d..0781f422ee12 100644 --- a/ports/stm/common-hal/microcontroller/Processor.c +++ b/ports/stm/common-hal/microcontroller/Processor.c @@ -26,9 +26,9 @@ #define VREFIN_CAL ((uint16_t *)ADC_CAL_ADDRESS) // correction factor for reference value -STATIC volatile float adc_refcor = 1.0f; +static volatile float adc_refcor = 1.0f; -STATIC void set_adc_params(ADC_HandleTypeDef *AdcHandle) { +static void set_adc_params(ADC_HandleTypeDef *AdcHandle) { AdcHandle->Instance = ADC1; AdcHandle->Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4; AdcHandle->Init.Resolution = ADC_RESOLUTION_12B; diff --git a/ports/stm/common-hal/os/__init__.c b/ports/stm/common-hal/os/__init__.c index 5179d9ecdfef..b3d9e67d9889 100644 --- a/ports/stm/common-hal/os/__init__.c +++ b/ports/stm/common-hal/os/__init__.c @@ -15,18 +15,18 @@ #include STM32_HAL_H #include "peripherals/periph.h" -STATIC const qstr os_uname_info_fields[] = { +static const qstr os_uname_info_fields[] = { MP_QSTR_sysname, MP_QSTR_nodename, MP_QSTR_release, MP_QSTR_version, MP_QSTR_machine }; -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_sysname_obj, STM32_SERIES_LOWER); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_nodename_obj, STM32_SERIES_LOWER); +static const MP_DEFINE_STR_OBJ(os_uname_info_sysname_obj, STM32_SERIES_LOWER); +static const MP_DEFINE_STR_OBJ(os_uname_info_nodename_obj, STM32_SERIES_LOWER); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_release_obj, MICROPY_VERSION_STRING); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_version_obj, MICROPY_GIT_TAG " on " MICROPY_BUILD_DATE); -STATIC const MP_DEFINE_STR_OBJ(os_uname_info_machine_obj, MICROPY_HW_BOARD_NAME " with " MICROPY_HW_MCU_NAME); +static const MP_DEFINE_STR_OBJ(os_uname_info_release_obj, MICROPY_VERSION_STRING); +static const MP_DEFINE_STR_OBJ(os_uname_info_version_obj, MICROPY_GIT_TAG " on " MICROPY_BUILD_DATE); +static const MP_DEFINE_STR_OBJ(os_uname_info_machine_obj, MICROPY_HW_BOARD_NAME " with " MICROPY_HW_MCU_NAME); -STATIC MP_DEFINE_ATTRTUPLE( +static MP_DEFINE_ATTRTUPLE( os_uname_info_obj, os_uname_info_fields, 5, diff --git a/ports/stm/common-hal/pulseio/PulseIn.c b/ports/stm/common-hal/pulseio/PulseIn.c index b06ed8b6e104..593e01f9bb91 100644 --- a/ports/stm/common-hal/pulseio/PulseIn.c +++ b/ports/stm/common-hal/pulseio/PulseIn.c @@ -19,11 +19,11 @@ #include STM32_HAL_H #define STM32_GPIO_PORT_SIZE 16 -STATIC pulseio_pulsein_obj_t *callback_obj_ref[STM32_GPIO_PORT_SIZE]; +static pulseio_pulsein_obj_t *callback_obj_ref[STM32_GPIO_PORT_SIZE]; -STATIC TIM_HandleTypeDef tim_handle; -STATIC uint32_t overflow_count = 0; -STATIC uint8_t refcount = 0; +static TIM_HandleTypeDef tim_handle; +static uint32_t overflow_count = 0; +static uint8_t refcount = 0; void pulsein_timer_event_handler(void) { // Detect TIM Update event @@ -35,7 +35,7 @@ void pulsein_timer_event_handler(void) { } } -STATIC void pulsein_exti_event_handler(uint8_t num) { +static void pulsein_exti_event_handler(uint8_t num) { // Grab the current time first. uint32_t current_overflow = overflow_count; uint32_t current_count = tim_handle.Instance->CNT; diff --git a/ports/stm/common-hal/pulseio/PulseOut.c b/ports/stm/common-hal/pulseio/PulseOut.c index 49679c195c61..e2b637664d54 100644 --- a/ports/stm/common-hal/pulseio/PulseOut.c +++ b/ports/stm/common-hal/pulseio/PulseOut.c @@ -17,21 +17,21 @@ // A single timer is shared amongst all PulseOut objects under the assumption that // the code is single threaded. -STATIC uint8_t refcount = 0; -STATIC uint16_t *pulse_array = NULL; -STATIC volatile uint16_t pulse_array_index = 0; -STATIC uint16_t pulse_array_length; +static uint8_t refcount = 0; +static uint16_t *pulse_array = NULL; +static volatile uint16_t pulse_array_index = 0; +static uint16_t pulse_array_length; // Timer is shared, must be accessible by interrupt -STATIC TIM_HandleTypeDef tim_handle; -STATIC pulseio_pulseout_obj_t *curr_pulseout = NULL; +static TIM_HandleTypeDef tim_handle; +static pulseio_pulseout_obj_t *curr_pulseout = NULL; -STATIC void turn_on(pulseio_pulseout_obj_t *pulseout) { +static void turn_on(pulseio_pulseout_obj_t *pulseout) { // Turn on PWM HAL_TIM_PWM_Start(&(pulseout->pwmout.handle), pulseout->pwmout.channel); } -STATIC void turn_off(pulseio_pulseout_obj_t *pulseout) { +static void turn_off(pulseio_pulseout_obj_t *pulseout) { // Turn off PWM HAL_TIM_PWM_Stop(&(pulseout->pwmout.handle), pulseout->pwmout.channel); // Make sure pin is low. @@ -39,7 +39,7 @@ STATIC void turn_off(pulseio_pulseout_obj_t *pulseout) { pin_mask(pulseout->pwmout.tim->pin->number), 0); } -STATIC void start_timer(void) { +static void start_timer(void) { // Set the new period tim_handle.Init.Period = pulse_array[pulse_array_index] - 1; HAL_TIM_Base_Init(&tim_handle); @@ -51,7 +51,7 @@ STATIC void start_timer(void) { __HAL_TIM_ENABLE_IT(&tim_handle, TIM_IT_UPDATE); } -STATIC void pulseout_event_handler(void) { +static void pulseout_event_handler(void) { // Detect TIM Update event if (__HAL_TIM_GET_FLAG(&tim_handle, TIM_FLAG_UPDATE) != RESET) { if (__HAL_TIM_GET_IT_SOURCE(&tim_handle, TIM_IT_UPDATE) != RESET) { diff --git a/ports/stm/common-hal/pwmio/PWMOut.c b/ports/stm/common-hal/pwmio/PWMOut.c index c3baac783240..ed3bd67e7ec0 100644 --- a/ports/stm/common-hal/pwmio/PWMOut.c +++ b/ports/stm/common-hal/pwmio/PWMOut.c @@ -16,16 +16,16 @@ #include "timers.h" // Bitmask of channels taken. -STATIC uint8_t tim_channels_taken[TIM_BANK_ARRAY_LEN]; +static uint8_t tim_channels_taken[TIM_BANK_ARRAY_LEN]; // Initial frequency timer is set to. -STATIC uint32_t tim_frequencies[TIM_BANK_ARRAY_LEN]; +static uint32_t tim_frequencies[TIM_BANK_ARRAY_LEN]; -STATIC uint32_t timer_get_internal_duty(uint16_t duty, uint32_t period) { +static uint32_t timer_get_internal_duty(uint16_t duty, uint32_t period) { // duty cycle is duty/0xFFFF fraction x (number of pulses per period) return (duty * period) / 0xffff; } -STATIC bool timer_get_optimal_divisors(uint32_t *period, uint32_t *prescaler, +static bool timer_get_optimal_divisors(uint32_t *period, uint32_t *prescaler, uint32_t frequency, uint32_t source_freq) { // Find the largest possible period supported by this frequency *prescaler = 0; diff --git a/ports/stm/common-hal/sdioio/SDCard.c b/ports/stm/common-hal/sdioio/SDCard.c index 6e1086e048ab..ab0f8bb7dfce 100644 --- a/ports/stm/common-hal/sdioio/SDCard.c +++ b/ports/stm/common-hal/sdioio/SDCard.c @@ -15,10 +15,10 @@ #include "common-hal/microcontroller/Pin.h" #include "shared-bindings/microcontroller/Pin.h" -STATIC bool reserved_sdio[MP_ARRAY_SIZE(mcu_sdio_banks)]; -STATIC bool never_reset_sdio[MP_ARRAY_SIZE(mcu_sdio_banks)]; +static bool reserved_sdio[MP_ARRAY_SIZE(mcu_sdio_banks)]; +static bool never_reset_sdio[MP_ARRAY_SIZE(mcu_sdio_banks)]; -STATIC const mcu_periph_obj_t *find_pin_function(const mcu_periph_obj_t *table, size_t sz, const mcu_pin_obj_t *pin, int periph_index) { +static const mcu_periph_obj_t *find_pin_function(const mcu_periph_obj_t *table, size_t sz, const mcu_pin_obj_t *pin, int periph_index) { for (size_t i = 0; i < sz; i++, table++) { if (periph_index == table->periph_index && pin == table->pin) { return table; @@ -28,7 +28,7 @@ STATIC const mcu_periph_obj_t *find_pin_function(const mcu_periph_obj_t *table, } // match pins to SDIO objects -STATIC int check_pins(sdioio_sdcard_obj_t *self, +static int check_pins(sdioio_sdcard_obj_t *self, const mcu_pin_obj_t *clock, const mcu_pin_obj_t *command, uint8_t num_data, const mcu_pin_obj_t **data) { bool sdio_taken = false; @@ -184,13 +184,13 @@ uint8_t common_hal_sdioio_sdcard_get_width(sdioio_sdcard_obj_t *self) { return self->num_data; } -STATIC void check_whole_block(mp_buffer_info_t *bufinfo) { +static void check_whole_block(mp_buffer_info_t *bufinfo) { if (bufinfo->len % 512) { mp_raise_ValueError(MP_ERROR_TEXT("Buffer must be a multiple of 512 bytes")); } } -STATIC void wait_write_complete(sdioio_sdcard_obj_t *self) { +static void wait_write_complete(sdioio_sdcard_obj_t *self) { if (self->state_programming) { HAL_SD_CardStateTypedef st = HAL_SD_CARD_PROGRAMMING; // This waits up to 60s for programming to complete. This seems like @@ -204,7 +204,7 @@ STATIC void wait_write_complete(sdioio_sdcard_obj_t *self) { } } -STATIC void check_for_deinit(sdioio_sdcard_obj_t *self) { +static void check_for_deinit(sdioio_sdcard_obj_t *self) { if (common_hal_sdioio_sdcard_deinited(self)) { raise_deinited_error(); } @@ -246,13 +246,13 @@ bool common_hal_sdioio_sdcard_deinited(sdioio_sdcard_obj_t *self) { return self->command == NULL; } -STATIC void never_reset_mcu_periph(const mcu_periph_obj_t *periph) { +static void never_reset_mcu_periph(const mcu_periph_obj_t *periph) { if (periph) { never_reset_pin_number(periph->pin->port, periph->pin->number); } } -STATIC void reset_mcu_periph(const mcu_periph_obj_t *periph) { +static void reset_mcu_periph(const mcu_periph_obj_t *periph) { if (periph) { reset_pin_number(periph->pin->port, periph->pin->number); } diff --git a/ports/stm/packages/TFBGA216.c b/ports/stm/packages/TFBGA216.c index 8171b6d436c2..4ffe34422778 100644 --- a/ports/stm/packages/TFBGA216.c +++ b/ports/stm/packages/TFBGA216.c @@ -8,7 +8,7 @@ #include "common-hal/microcontroller/Pin.h" #include "py/obj.h" -STATIC const mp_rom_map_elem_t mcu_pin_globals_table[] = { +static const mp_rom_map_elem_t mcu_pin_globals_table[] = { // Row A { MP_ROM_QSTR(MP_QSTR_PE04), MP_ROM_PTR(&pin_PE04) }, { MP_ROM_QSTR(MP_QSTR_PE03), MP_ROM_PTR(&pin_PE03) }, diff --git a/ports/stm/peripherals/exti.c b/ports/stm/peripherals/exti.c index f5203a9cd7c7..19fa3079ba01 100644 --- a/ports/stm/peripherals/exti.c +++ b/ports/stm/peripherals/exti.c @@ -12,9 +12,9 @@ #if !(CPY_STM32H7) -STATIC bool stm_exti_reserved[STM32_GPIO_PORT_SIZE]; -STATIC bool stm_exti_never_reset[STM32_GPIO_PORT_SIZE]; -STATIC void (*stm_exti_callback[STM32_GPIO_PORT_SIZE])(uint8_t num); +static bool stm_exti_reserved[STM32_GPIO_PORT_SIZE]; +static bool stm_exti_never_reset[STM32_GPIO_PORT_SIZE]; +static void (*stm_exti_callback[STM32_GPIO_PORT_SIZE])(uint8_t num); void exti_reset(void) { for (size_t i = 0; i < STM32_GPIO_PORT_SIZE; i++) { diff --git a/ports/stm/peripherals/rtc.c b/ports/stm/peripherals/rtc.c index f570ad350ad8..78ee4548834d 100644 --- a/ports/stm/peripherals/rtc.c +++ b/ports/stm/peripherals/rtc.c @@ -16,12 +16,12 @@ // Based on a 32768 kHz clock #define SUBTICKS_PER_TICK 32 -STATIC RTC_HandleTypeDef hrtc; +static RTC_HandleTypeDef hrtc; #if BOARD_HAS_LOW_SPEED_CRYSTAL -STATIC uint32_t rtc_clock_frequency = LSE_VALUE; +static uint32_t rtc_clock_frequency = LSE_VALUE; #else -STATIC uint32_t rtc_clock_frequency = LSI_VALUE; +static uint32_t rtc_clock_frequency = LSI_VALUE; #endif volatile uint32_t seconds_to_date = 0; @@ -68,7 +68,7 @@ void stm32_peripherals_rtc_init(void) { // This function is called often for timing so we cache the seconds elapsed computation based on the // register value. The STM HAL always does shifts and conversion if we use it directly. -STATIC uint64_t stm32_peripherals_rtc_raw_ticks(uint8_t *subticks) { +static uint64_t stm32_peripherals_rtc_raw_ticks(uint8_t *subticks) { // Disable IRQs to ensure we read all of the RTC registers as close in time as possible. Read // SSR twice to make sure we didn't read across a tick. __disable_irq(); diff --git a/ports/stm/peripherals/timers.c b/ports/stm/peripherals/timers.c index 77a4772e542f..9d963487a04d 100644 --- a/ports/stm/peripherals/timers.c +++ b/ports/stm/peripherals/timers.c @@ -415,7 +415,7 @@ void tim_clock_disable(uint16_t mask) { #endif } -STATIC void callback_router(size_t index) { +static void callback_router(size_t index) { if (stm_timer_callback[index - 1]) { (*stm_timer_callback[index - 1])(); } diff --git a/ports/stm/supervisor/internal_flash.c b/ports/stm/supervisor/internal_flash.c index 24abbbca64e8..273af300a80b 100644 --- a/ports/stm/supervisor/internal_flash.c +++ b/ports/stm/supervisor/internal_flash.c @@ -27,7 +27,7 @@ typedef struct { #if defined(STM32F4) -STATIC const flash_layout_t flash_layout[] = { +static const flash_layout_t flash_layout[] = { { 0x08000000, 0x04000, 4 }, { 0x08010000, 0x10000, 1 }, { 0x08020000, 0x20000, 3 }, @@ -40,7 +40,7 @@ STATIC const flash_layout_t flash_layout[] = { { 0x08120000, 0x20000, 7 }, #endif }; -STATIC uint8_t _flash_cache[0x4000] __attribute__((aligned(4))); +static uint8_t _flash_cache[0x4000] __attribute__((aligned(4))); #elif defined(STM32F7) @@ -53,27 +53,27 @@ static const flash_layout_t flash_layout[] = { { 0x08010000, 0x10000, 1 }, { 0x08020000, 0x20000, 3 }, }; -STATIC uint8_t _flash_cache[0x4000] __attribute__((aligned(4))); +static uint8_t _flash_cache[0x4000] __attribute__((aligned(4))); #else static const flash_layout_t flash_layout[] = { { 0x08000000, 0x08000, 4 }, { 0x08020000, 0x20000, 1 }, { 0x08040000, 0x40000, 3 }, }; -STATIC uint8_t _flash_cache[0x8000] __attribute__((aligned(4))); +static uint8_t _flash_cache[0x8000] __attribute__((aligned(4))); #endif #elif defined(STM32H7) -STATIC const flash_layout_t flash_layout[] = { +static const flash_layout_t flash_layout[] = { { 0x08000000, 0x20000, 16 }, }; -STATIC uint8_t _flash_cache[0x20000] __attribute__((aligned(4))); +static uint8_t _flash_cache[0x20000] __attribute__((aligned(4))); #elif defined(STM32L4) -STATIC const flash_layout_t flash_layout[] = { +static const flash_layout_t flash_layout[] = { { 0x08100000, 0x1000, 256 }, }; -STATIC uint8_t _flash_cache[0x1000] __attribute__((aligned(4))); +static uint8_t _flash_cache[0x1000] __attribute__((aligned(4))); #else #error Unsupported processor @@ -83,11 +83,11 @@ STATIC uint8_t _flash_cache[0x1000] __attribute__((aligned(4))); #define MAX_CACHE 0x4000 -STATIC uint32_t _cache_flash_addr = NO_CACHE; +static uint32_t _cache_flash_addr = NO_CACHE; #if defined(STM32H7) // get the bank of a given flash address -STATIC uint32_t get_bank(uint32_t addr) { +static uint32_t get_bank(uint32_t addr) { if (READ_BIT(FLASH->OPTCR, FLASH_OPTCR_SWAP_BANK) == 0) { // no bank swap if (addr < (FLASH_BASE + FLASH_BANK_SIZE)) { diff --git a/ports/stm/supervisor/usb.c b/ports/stm/supervisor/usb.c index 5ed415d60de0..61a7d54f08b7 100644 --- a/ports/stm/supervisor/usb.c +++ b/ports/stm/supervisor/usb.c @@ -13,7 +13,7 @@ #include "common-hal/microcontroller/Pin.h" -STATIC void init_usb_vbus_sense(void) { +static void init_usb_vbus_sense(void) { #if (BOARD_NO_VBUS_SENSE) // Disable VBUS sensing diff --git a/ports/unix/displayio_min.c b/ports/unix/displayio_min.c index 809ed52cacb5..3d0d5efc3ce6 100644 --- a/ports/unix/displayio_min.c +++ b/ports/unix/displayio_min.c @@ -54,19 +54,19 @@ MAKE_ENUM_MAP(displayio_colorspace) { MAKE_ENUM_MAP_ENTRY(displayio_colorspace, BGR555_SWAPPED), MAKE_ENUM_MAP_ENTRY(displayio_colorspace, L8), }; -STATIC MP_DEFINE_CONST_DICT(displayio_colorspace_locals_dict, displayio_colorspace_locals_table); +static MP_DEFINE_CONST_DICT(displayio_colorspace_locals_dict, displayio_colorspace_locals_table); MAKE_PRINTER(displayio, displayio_colorspace); MAKE_ENUM_TYPE(displayio, ColorSpace, displayio_colorspace); -STATIC const mp_rom_map_elem_t displayio_module_globals_table[] = { +static const mp_rom_map_elem_t displayio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_displayio) }, { MP_ROM_QSTR(MP_QSTR_Bitmap), MP_ROM_PTR(&displayio_bitmap_type) }, { MP_ROM_QSTR(MP_QSTR_Colorspace), MP_ROM_PTR(&displayio_colorspace_type) }, { MP_ROM_QSTR(MP_QSTR_ColorConverter), MP_ROM_PTR(&displayio_colorconverter_type) }, { MP_ROM_QSTR(MP_QSTR_Palette), MP_ROM_PTR(&displayio_palette_type) }, }; -STATIC MP_DEFINE_CONST_DICT(displayio_module_globals, displayio_module_globals_table); +static MP_DEFINE_CONST_DICT(displayio_module_globals, displayio_module_globals_table); const mp_obj_module_t displayio_module = { .base = { &mp_type_module }, diff --git a/py/enum.h b/py/enum.h index d786fc591977..c8676366b187 100644 --- a/py/enum.h +++ b/py/enum.h @@ -26,7 +26,7 @@ typedef struct { { MP_ROM_QSTR(MP_QSTR_##name), MP_ROM_PTR(&prefix##_##name##_obj) } #define MAKE_PRINTER(module, typename) \ - STATIC void typename##_##print(const mp_print_t * print, mp_obj_t self_in, mp_print_kind_t kind) { \ + static void typename##_##print(const mp_print_t * print, mp_obj_t self_in, mp_print_kind_t kind) { \ cp_enum_obj_print_helper(MP_QSTR_##module, print, self_in, kind); \ } diff --git a/shared-bindings/__future__/__init__.c b/shared-bindings/__future__/__init__.c index 0ead475f8916..5be90e21692a 100644 --- a/shared-bindings/__future__/__init__.c +++ b/shared-bindings/__future__/__init__.c @@ -24,13 +24,13 @@ //| This is a limitation of CircuitPython and MicroPython for efficiency reasons. //| """ -STATIC const mp_rom_map_elem_t future_module_globals_table[] = { +static const mp_rom_map_elem_t future_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR___future__) }, { MP_ROM_QSTR(MP_QSTR_annotations), mp_const_true }, }; -STATIC MP_DEFINE_CONST_DICT(future_module_globals, future_module_globals_table); +static MP_DEFINE_CONST_DICT(future_module_globals, future_module_globals_table); const mp_obj_module_t future_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/_bleio/Adapter.c b/shared-bindings/_bleio/Adapter.c index bc73768b7ac1..7190594c10a7 100644 --- a/shared-bindings/_bleio/Adapter.c +++ b/shared-bindings/_bleio/Adapter.c @@ -62,7 +62,7 @@ //| Use `_bleio.adapter` to access the sole instance already available. //| """ //| ... -STATIC mp_obj_t bleio_adapter_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t bleio_adapter_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { #if CIRCUITPY_BLEIO_HCI bleio_adapter_obj_t *self = common_hal_bleio_allocate_adapter_or_raise(); @@ -93,7 +93,7 @@ STATIC mp_obj_t bleio_adapter_make_new(const mp_obj_type_t *type, size_t n_args, //| enabled: bool //| """State of the BLE adapter.""" -STATIC mp_obj_t bleio_adapter_get_enabled(mp_obj_t self) { +static mp_obj_t bleio_adapter_get_enabled(mp_obj_t self) { return mp_obj_new_bool(common_hal_bleio_adapter_get_enabled(self)); } MP_DEFINE_CONST_FUN_OBJ_1(bleio_adapter_get_enabled_obj, bleio_adapter_get_enabled); @@ -105,7 +105,7 @@ static mp_obj_t bleio_adapter_set_enabled(mp_obj_t self, mp_obj_t value) { return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(bleio_adapter_set_enabled_obj, bleio_adapter_set_enabled); +static MP_DEFINE_CONST_FUN_OBJ_2(bleio_adapter_set_enabled_obj, bleio_adapter_set_enabled); MP_PROPERTY_GETSET(bleio_adapter_enabled_obj, (mp_obj_t)&bleio_adapter_get_enabled_obj, @@ -113,13 +113,13 @@ MP_PROPERTY_GETSET(bleio_adapter_enabled_obj, //| address: Address //| """MAC address of the BLE adapter.""" -STATIC mp_obj_t bleio_adapter_get_address(mp_obj_t self) { +static mp_obj_t bleio_adapter_get_address(mp_obj_t self) { return MP_OBJ_FROM_PTR(common_hal_bleio_adapter_get_address(self)); } MP_DEFINE_CONST_FUN_OBJ_1(bleio_adapter_get_address_obj, bleio_adapter_get_address); -STATIC mp_obj_t bleio_adapter_set_address(mp_obj_t self, mp_obj_t new_address) { +static mp_obj_t bleio_adapter_set_address(mp_obj_t self, mp_obj_t new_address) { if (!common_hal_bleio_adapter_set_address(self, new_address)) { mp_raise_bleio_BluetoothError(MP_ERROR_TEXT("Could not set address")); } @@ -135,13 +135,13 @@ MP_PROPERTY_GETSET(bleio_adapter_address_obj, //| """name of the BLE adapter used once connected. //| The name is "CIRCUITPY" + the last four hex digits of ``adapter.address``, //| to make it easy to distinguish multiple CircuitPython boards.""" -STATIC mp_obj_t _bleio_adapter_get_name(mp_obj_t self) { +static mp_obj_t _bleio_adapter_get_name(mp_obj_t self) { return MP_OBJ_FROM_PTR(common_hal_bleio_adapter_get_name(self)); } MP_DEFINE_CONST_FUN_OBJ_1(bleio_adapter_get_name_obj, _bleio_adapter_get_name); -STATIC mp_obj_t bleio_adapter_set_name(mp_obj_t self, mp_obj_t new_name) { +static mp_obj_t bleio_adapter_set_name(mp_obj_t self, mp_obj_t new_name) { common_hal_bleio_adapter_set_name(self, mp_obj_str_get_str(new_name)); return mp_const_none; } @@ -181,7 +181,7 @@ MP_PROPERTY_GETSET(bleio_adapter_name_obj, //| :param int tx_power: transmitter power while advertising in dBm //| :param Address directed_to: peer to advertise directly to""" //| ... -STATIC mp_obj_t bleio_adapter_start_advertising(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bleio_adapter_start_advertising(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { bleio_adapter_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); enum { ARG_data, ARG_scan_response, ARG_connectable, ARG_anonymous, ARG_timeout, ARG_interval, ARG_tx_power, ARG_directed_to }; @@ -238,19 +238,19 @@ STATIC mp_obj_t bleio_adapter_start_advertising(mp_uint_t n_args, const mp_obj_t return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(bleio_adapter_start_advertising_obj, 1, bleio_adapter_start_advertising); +static MP_DEFINE_CONST_FUN_OBJ_KW(bleio_adapter_start_advertising_obj, 1, bleio_adapter_start_advertising); //| def stop_advertising(self) -> None: //| """Stop sending advertising packets.""" //| ... -STATIC mp_obj_t bleio_adapter_stop_advertising(mp_obj_t self_in) { +static mp_obj_t bleio_adapter_stop_advertising(mp_obj_t self_in) { bleio_adapter_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_bleio_adapter_stop_advertising(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_adapter_stop_advertising_obj, bleio_adapter_stop_advertising); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_adapter_stop_advertising_obj, bleio_adapter_stop_advertising); //| def start_scan( //| self, @@ -282,7 +282,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_adapter_stop_advertising_obj, bleio_adapt //| :returns: an iterable of `_bleio.ScanEntry` objects //| :rtype: iterable""" //| ... -STATIC mp_obj_t bleio_adapter_start_scan(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bleio_adapter_start_scan(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_prefixes, ARG_buffer_size, ARG_extended, ARG_timeout, ARG_interval, ARG_window, ARG_minimum_rssi, ARG_active }; static const mp_arg_t allowed_args[] = { { MP_QSTR_prefixes, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} }, @@ -341,23 +341,23 @@ STATIC mp_obj_t bleio_adapter_start_scan(size_t n_args, const mp_obj_t *pos_args return common_hal_bleio_adapter_start_scan(self, prefix_bufinfo.buf, prefix_bufinfo.len, args[ARG_extended].u_bool, args[ARG_buffer_size].u_int, timeout, interval, window, args[ARG_minimum_rssi].u_int, args[ARG_active].u_bool); } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(bleio_adapter_start_scan_obj, 1, bleio_adapter_start_scan); +static MP_DEFINE_CONST_FUN_OBJ_KW(bleio_adapter_start_scan_obj, 1, bleio_adapter_start_scan); //| def stop_scan(self) -> None: //| """Stop the current scan.""" //| ... -STATIC mp_obj_t bleio_adapter_stop_scan(mp_obj_t self_in) { +static mp_obj_t bleio_adapter_stop_scan(mp_obj_t self_in) { bleio_adapter_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_bleio_adapter_stop_scan(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_adapter_stop_scan_obj, bleio_adapter_stop_scan); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_adapter_stop_scan_obj, bleio_adapter_stop_scan); //| advertising: bool //| """True when the adapter is currently advertising. (read-only)""" -STATIC mp_obj_t bleio_adapter_get_advertising(mp_obj_t self) { +static mp_obj_t bleio_adapter_get_advertising(mp_obj_t self) { return mp_obj_new_bool(common_hal_bleio_adapter_get_advertising(self)); } @@ -369,7 +369,7 @@ MP_PROPERTY_GETTER(bleio_adapter_advertising_obj, //| connected: bool //| """True when the adapter is connected to another device regardless of who initiated the //| connection. (read-only)""" -STATIC mp_obj_t bleio_adapter_get_connected(mp_obj_t self) { +static mp_obj_t bleio_adapter_get_connected(mp_obj_t self) { return mp_obj_new_bool(common_hal_bleio_adapter_get_connected(self)); } @@ -381,7 +381,7 @@ MP_PROPERTY_GETTER(bleio_adapter_connected_obj, //| connections: Tuple[Connection] //| """Tuple of active connections including those initiated through //| :py:meth:`_bleio.Adapter.connect`. (read-only)""" -STATIC mp_obj_t bleio_adapter_get_connections(mp_obj_t self) { +static mp_obj_t bleio_adapter_get_connections(mp_obj_t self) { return common_hal_bleio_adapter_get_connections(self); } MP_DEFINE_CONST_FUN_OBJ_1(bleio_adapter_get_connections_obj, bleio_adapter_get_connections); @@ -395,7 +395,7 @@ MP_PROPERTY_GETTER(bleio_adapter_connections_obj, //| :param Address address: The address of the peripheral to connect to //| :param float/int timeout: Try to connect for timeout seconds.""" //| ... -STATIC mp_obj_t bleio_adapter_connect(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bleio_adapter_connect(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { bleio_adapter_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); enum { ARG_address, ARG_timeout }; @@ -412,22 +412,22 @@ STATIC mp_obj_t bleio_adapter_connect(mp_uint_t n_args, const mp_obj_t *pos_args return common_hal_bleio_adapter_connect(self, address, timeout); } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(bleio_adapter_connect_obj, 1, bleio_adapter_connect); +static MP_DEFINE_CONST_FUN_OBJ_KW(bleio_adapter_connect_obj, 1, bleio_adapter_connect); //| def erase_bonding(self) -> None: //| """Erase all bonding information stored in flash memory.""" //| ... //| -STATIC mp_obj_t bleio_adapter_erase_bonding(mp_obj_t self_in) { +static mp_obj_t bleio_adapter_erase_bonding(mp_obj_t self_in) { bleio_adapter_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_bleio_adapter_erase_bonding(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_adapter_erase_bonding_obj, bleio_adapter_erase_bonding); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_adapter_erase_bonding_obj, bleio_adapter_erase_bonding); -STATIC const mp_rom_map_elem_t bleio_adapter_locals_dict_table[] = { +static const mp_rom_map_elem_t bleio_adapter_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_enabled), MP_ROM_PTR(&bleio_adapter_enabled_obj) }, { MP_ROM_QSTR(MP_QSTR_address), MP_ROM_PTR(&bleio_adapter_address_obj) }, { MP_ROM_QSTR(MP_QSTR_name), MP_ROM_PTR(&bleio_adapter_name_obj) }, @@ -447,7 +447,7 @@ STATIC const mp_rom_map_elem_t bleio_adapter_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_erase_bonding), MP_ROM_PTR(&bleio_adapter_erase_bonding_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(bleio_adapter_locals_dict, bleio_adapter_locals_dict_table); +static MP_DEFINE_CONST_DICT(bleio_adapter_locals_dict, bleio_adapter_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( bleio_adapter_type, diff --git a/shared-bindings/_bleio/Address.c b/shared-bindings/_bleio/Address.c index ca5a27a5b3d4..5cedd2b4663b 100644 --- a/shared-bindings/_bleio/Address.c +++ b/shared-bindings/_bleio/Address.c @@ -26,7 +26,7 @@ //| :param int address_type: one of the integer values: `PUBLIC`, `RANDOM_STATIC`, //| `RANDOM_PRIVATE_RESOLVABLE`, or `RANDOM_PRIVATE_NON_RESOLVABLE`.""" //| ... -STATIC mp_obj_t bleio_address_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t bleio_address_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_address, ARG_address_type }; static const mp_arg_t allowed_args[] = { { MP_QSTR_address, MP_ARG_OBJ | MP_ARG_REQUIRED }, @@ -71,7 +71,7 @@ STATIC mp_obj_t bleio_address_make_new(const mp_obj_type_t *type, size_t n_args, //|
//| >>> _bleio.adapter.address.address_bytes //| b'5\\xa8\\xed\\xf5\\x1d\\xc8'""" -STATIC mp_obj_t bleio_address_get_address_bytes(mp_obj_t self_in) { +static mp_obj_t bleio_address_get_address_bytes(mp_obj_t self_in) { bleio_address_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_bleio_address_get_address_bytes(self); @@ -86,7 +86,7 @@ MP_PROPERTY_GETTER(bleio_address_address_bytes_obj, //| //| One of the integer values: `PUBLIC`, `RANDOM_STATIC`, `RANDOM_PRIVATE_RESOLVABLE`, //| or `RANDOM_PRIVATE_NON_RESOLVABLE`.""" -STATIC mp_obj_t bleio_address_get_type(mp_obj_t self_in) { +static mp_obj_t bleio_address_get_type(mp_obj_t self_in) { bleio_address_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_bleio_address_get_type(self)); @@ -99,7 +99,7 @@ MP_PROPERTY_GETTER(bleio_address_type_obj, //| def __eq__(self, other: object) -> bool: //| """Two Address objects are equal if their addresses and address types are equal.""" //| ... -STATIC mp_obj_t bleio_address_binary_op(mp_binary_op_t op, mp_obj_t lhs_in, mp_obj_t rhs_in) { +static mp_obj_t bleio_address_binary_op(mp_binary_op_t op, mp_obj_t lhs_in, mp_obj_t rhs_in) { switch (op) { // Two Addresses are equal if their address bytes and address_type are equal case MP_BINARY_OP_EQUAL: @@ -124,7 +124,7 @@ STATIC mp_obj_t bleio_address_binary_op(mp_binary_op_t op, mp_obj_t lhs_in, mp_o //| def __hash__(self) -> int: //| """Returns a hash for the Address data.""" //| ... -STATIC mp_obj_t bleio_address_unary_op(mp_unary_op_t op, mp_obj_t self_in) { +static mp_obj_t bleio_address_unary_op(mp_unary_op_t op, mp_obj_t self_in) { switch (op) { // Two Addresses are equal if their address bytes and address_type are equal case MP_UNARY_OP_HASH: { @@ -142,7 +142,7 @@ STATIC mp_obj_t bleio_address_unary_op(mp_unary_op_t op, mp_obj_t self_in) { } } -STATIC void bleio_address_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { +static void bleio_address_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { bleio_address_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_buffer_info_t buf_info; mp_obj_t address_bytes = common_hal_bleio_address_get_address_bytes(self); @@ -166,7 +166,7 @@ STATIC void bleio_address_print(const mp_print_t *print, mp_obj_t self_in, mp_pr //| RANDOM_PRIVATE_NON_RESOLVABLE: int //| """A randomly generated address that changes on every connection.""" //| -STATIC const mp_rom_map_elem_t bleio_address_locals_dict_table[] = { +static const mp_rom_map_elem_t bleio_address_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_address_bytes), MP_ROM_PTR(&bleio_address_address_bytes_obj) }, { MP_ROM_QSTR(MP_QSTR_type), MP_ROM_PTR(&bleio_address_type_obj) }, // These match the BLE_GAP_ADDR_TYPES values used by the nRF library. @@ -177,7 +177,7 @@ STATIC const mp_rom_map_elem_t bleio_address_locals_dict_table[] = { }; -STATIC MP_DEFINE_CONST_DICT(bleio_address_locals_dict, bleio_address_locals_dict_table); +static MP_DEFINE_CONST_DICT(bleio_address_locals_dict, bleio_address_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( bleio_address_type, diff --git a/shared-bindings/_bleio/Attribute.c b/shared-bindings/_bleio/Attribute.c index 63ab7e2dea97..fe890d875e51 100644 --- a/shared-bindings/_bleio/Attribute.c +++ b/shared-bindings/_bleio/Attribute.c @@ -20,7 +20,7 @@ //| """You cannot create an instance of :py:class:`~_bleio.Attribute`.""" //| ... -STATIC const mp_rom_map_elem_t bleio_attribute_locals_dict_table[] = { +static const mp_rom_map_elem_t bleio_attribute_locals_dict_table[] = { //| NO_ACCESS: int //| """security mode: access not allowed""" @@ -52,7 +52,7 @@ STATIC const mp_rom_map_elem_t bleio_attribute_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_SIGNED_WITH_MITM), MP_ROM_INT(SECURITY_MODE_SIGNED_WITH_MITM) }, }; -STATIC MP_DEFINE_CONST_DICT(bleio_attribute_locals_dict, bleio_attribute_locals_dict_table); +static MP_DEFINE_CONST_DICT(bleio_attribute_locals_dict, bleio_attribute_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( bleio_attribute_type, diff --git a/shared-bindings/_bleio/Characteristic.c b/shared-bindings/_bleio/Characteristic.c index e248cb8fefd8..6b32e39ff434 100644 --- a/shared-bindings/_bleio/Characteristic.c +++ b/shared-bindings/_bleio/Characteristic.c @@ -60,7 +60,7 @@ //| //| :return: the new Characteristic.""" //| ... -STATIC mp_obj_t bleio_characteristic_add_to_service(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bleio_characteristic_add_to_service(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { // class is arg[0], which we can ignore. enum { ARG_service, ARG_uuid, ARG_properties, ARG_read_perm, ARG_write_perm, @@ -134,8 +134,8 @@ STATIC mp_obj_t bleio_characteristic_add_to_service(size_t n_args, const mp_obj_ return MP_OBJ_FROM_PTR(characteristic); } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(bleio_characteristic_add_to_service_fun_obj, 1, bleio_characteristic_add_to_service); -STATIC MP_DEFINE_CONST_CLASSMETHOD_OBJ(bleio_characteristic_add_to_service_obj, MP_ROM_PTR(&bleio_characteristic_add_to_service_fun_obj)); +static MP_DEFINE_CONST_FUN_OBJ_KW(bleio_characteristic_add_to_service_fun_obj, 1, bleio_characteristic_add_to_service); +static MP_DEFINE_CONST_CLASSMETHOD_OBJ(bleio_characteristic_add_to_service_obj, MP_ROM_PTR(&bleio_characteristic_add_to_service_fun_obj)); @@ -143,12 +143,12 @@ STATIC MP_DEFINE_CONST_CLASSMETHOD_OBJ(bleio_characteristic_add_to_service_obj, //| """An int bitmask representing which properties are set, specified as bitwise or'ing of //| of these possible values. //| `BROADCAST`, `INDICATE`, `NOTIFY`, `READ`, `WRITE`, `WRITE_NO_RESPONSE`.""" -STATIC mp_obj_t bleio_characteristic_get_properties(mp_obj_t self_in) { +static mp_obj_t bleio_characteristic_get_properties(mp_obj_t self_in) { bleio_characteristic_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_bleio_characteristic_get_properties(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_characteristic_get_properties_obj, bleio_characteristic_get_properties); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_characteristic_get_properties_obj, bleio_characteristic_get_properties); MP_PROPERTY_GETTER(bleio_characteristic_properties_obj, (mp_obj_t)&bleio_characteristic_get_properties_obj); @@ -157,29 +157,29 @@ MP_PROPERTY_GETTER(bleio_characteristic_properties_obj, //| """The UUID of this characteristic. (read-only) //| //| Will be ``None`` if the 128-bit UUID for this characteristic is not known.""" -STATIC mp_obj_t bleio_characteristic_get_uuid(mp_obj_t self_in) { +static mp_obj_t bleio_characteristic_get_uuid(mp_obj_t self_in) { bleio_characteristic_obj_t *self = MP_OBJ_TO_PTR(self_in); bleio_uuid_obj_t *uuid = common_hal_bleio_characteristic_get_uuid(self); return uuid ? MP_OBJ_FROM_PTR(uuid) : mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_characteristic_get_uuid_obj, bleio_characteristic_get_uuid); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_characteristic_get_uuid_obj, bleio_characteristic_get_uuid); MP_PROPERTY_GETTER(bleio_characteristic_uuid_obj, (mp_obj_t)&bleio_characteristic_get_uuid_obj); //| value: bytearray //| """The value of this characteristic.""" -STATIC mp_obj_t bleio_characteristic_get_value(mp_obj_t self_in) { +static mp_obj_t bleio_characteristic_get_value(mp_obj_t self_in) { bleio_characteristic_obj_t *self = MP_OBJ_TO_PTR(self_in); uint8_t temp[512]; size_t actual_len = common_hal_bleio_characteristic_get_value(self, temp, sizeof(temp)); return mp_obj_new_bytearray(actual_len, temp); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_characteristic_get_value_obj, bleio_characteristic_get_value); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_characteristic_get_value_obj, bleio_characteristic_get_value); -STATIC mp_obj_t bleio_characteristic_set_value(mp_obj_t self_in, mp_obj_t value_in) { +static mp_obj_t bleio_characteristic_set_value(mp_obj_t self_in, mp_obj_t value_in) { bleio_characteristic_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_buffer_info_t bufinfo; @@ -189,7 +189,7 @@ STATIC mp_obj_t bleio_characteristic_set_value(mp_obj_t self_in, mp_obj_t value_ return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(bleio_characteristic_set_value_obj, bleio_characteristic_set_value); +static MP_DEFINE_CONST_FUN_OBJ_2(bleio_characteristic_set_value_obj, bleio_characteristic_set_value); MP_PROPERTY_GETSET(bleio_characteristic_value_obj, (mp_obj_t)&bleio_characteristic_get_value_obj, @@ -197,37 +197,37 @@ MP_PROPERTY_GETSET(bleio_characteristic_value_obj, //| max_length: int //| """The max length of this characteristic.""" -STATIC mp_obj_t bleio_characteristic_get_max_length(mp_obj_t self_in) { +static mp_obj_t bleio_characteristic_get_max_length(mp_obj_t self_in) { bleio_characteristic_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_bleio_characteristic_get_max_length(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_characteristic_get_max_length_obj, bleio_characteristic_get_max_length); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_characteristic_get_max_length_obj, bleio_characteristic_get_max_length); MP_PROPERTY_GETTER(bleio_characteristic_max_length_obj, (mp_obj_t)&bleio_characteristic_get_max_length_obj); //| descriptors: Descriptor //| """A tuple of :py:class:`Descriptor` objects related to this characteristic. (read-only)""" -STATIC mp_obj_t bleio_characteristic_get_descriptors(mp_obj_t self_in) { +static mp_obj_t bleio_characteristic_get_descriptors(mp_obj_t self_in) { bleio_characteristic_obj_t *self = MP_OBJ_TO_PTR(self_in); // Return list as a tuple so user won't be able to change it. return MP_OBJ_FROM_PTR(common_hal_bleio_characteristic_get_descriptors(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_characteristic_get_descriptors_obj, bleio_characteristic_get_descriptors); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_characteristic_get_descriptors_obj, bleio_characteristic_get_descriptors); MP_PROPERTY_GETTER(bleio_characteristic_descriptors_obj, (mp_obj_t)&bleio_characteristic_get_descriptors_obj); //| service: Service //| """The Service this Characteristic is a part of.""" -STATIC mp_obj_t bleio_characteristic_get_service(mp_obj_t self_in) { +static mp_obj_t bleio_characteristic_get_service(mp_obj_t self_in) { bleio_characteristic_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_bleio_characteristic_get_service(self); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_characteristic_get_service_obj, bleio_characteristic_get_service); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_characteristic_get_service_obj, bleio_characteristic_get_service); MP_PROPERTY_GETTER(bleio_characteristic_service_obj, (mp_obj_t)&bleio_characteristic_get_service_obj); @@ -239,7 +239,7 @@ MP_PROPERTY_GETTER(bleio_characteristic_service_obj, //| :param float indicate: True if Characteristic should receive indications of remote writes //| """ //| ... -STATIC mp_obj_t bleio_characteristic_set_cccd(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bleio_characteristic_set_cccd(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { bleio_characteristic_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); enum { ARG_notify, ARG_indicate }; @@ -255,9 +255,9 @@ STATIC mp_obj_t bleio_characteristic_set_cccd(mp_uint_t n_args, const mp_obj_t * return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(bleio_characteristic_set_cccd_obj, 1, bleio_characteristic_set_cccd); +static MP_DEFINE_CONST_FUN_OBJ_KW(bleio_characteristic_set_cccd_obj, 1, bleio_characteristic_set_cccd); -STATIC const mp_rom_map_elem_t bleio_characteristic_locals_dict_table[] = { +static const mp_rom_map_elem_t bleio_characteristic_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_add_to_service), MP_ROM_PTR(&bleio_characteristic_add_to_service_obj) }, { MP_ROM_QSTR(MP_QSTR_descriptors), MP_ROM_PTR(&bleio_characteristic_descriptors_obj) }, { MP_ROM_QSTR(MP_QSTR_properties), MP_ROM_PTR(&bleio_characteristic_properties_obj) }, @@ -292,9 +292,9 @@ STATIC const mp_rom_map_elem_t bleio_characteristic_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_WRITE_NO_RESPONSE), MP_ROM_INT(CHAR_PROP_WRITE_NO_RESPONSE) }, }; -STATIC MP_DEFINE_CONST_DICT(bleio_characteristic_locals_dict, bleio_characteristic_locals_dict_table); +static MP_DEFINE_CONST_DICT(bleio_characteristic_locals_dict, bleio_characteristic_locals_dict_table); -STATIC void bleio_characteristic_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { +static void bleio_characteristic_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { bleio_characteristic_obj_t *self = MP_OBJ_TO_PTR(self_in); if (self->uuid) { mp_printf(print, "Characteristic("); diff --git a/shared-bindings/_bleio/CharacteristicBuffer.c b/shared-bindings/_bleio/CharacteristicBuffer.c index a562641061b7..7ef3575e3c23 100644 --- a/shared-bindings/_bleio/CharacteristicBuffer.c +++ b/shared-bindings/_bleio/CharacteristicBuffer.c @@ -15,7 +15,7 @@ #include "shared-bindings/_bleio/UUID.h" #include "shared-bindings/util.h" -STATIC void raise_error_if_not_connected(bleio_characteristic_buffer_obj_t *self) { +static void raise_error_if_not_connected(bleio_characteristic_buffer_obj_t *self) { if (!common_hal_bleio_characteristic_buffer_connected(self)) { mp_raise_ConnectionError(MP_ERROR_TEXT("Not connected")); } @@ -37,7 +37,7 @@ STATIC void raise_error_if_not_connected(bleio_characteristic_buffer_obj_t *self //| :param int buffer_size: Size of ring buffer that stores incoming data coming from client. //| Must be >= 1.""" //| ... -STATIC mp_obj_t bleio_characteristic_buffer_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t bleio_characteristic_buffer_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_characteristic, ARG_timeout, ARG_buffer_size, }; static const mp_arg_t allowed_args[] = { { MP_QSTR_characteristic, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -62,7 +62,7 @@ STATIC mp_obj_t bleio_characteristic_buffer_make_new(const mp_obj_type_t *type, return MP_OBJ_FROM_PTR(self); } -STATIC void check_for_deinit(bleio_characteristic_buffer_obj_t *self) { +static void check_for_deinit(bleio_characteristic_buffer_obj_t *self) { if (common_hal_bleio_characteristic_buffer_deinited(self)) { raise_deinited_error(); } @@ -95,7 +95,7 @@ STATIC void check_for_deinit(bleio_characteristic_buffer_obj_t *self) { //| ... // These three methods are used by the shared stream methods. -STATIC mp_uint_t bleio_characteristic_buffer_read(mp_obj_t self_in, void *buf_in, mp_uint_t size, int *errcode) { +static mp_uint_t bleio_characteristic_buffer_read(mp_obj_t self_in, void *buf_in, mp_uint_t size, int *errcode) { bleio_characteristic_buffer_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); raise_error_if_not_connected(self); @@ -109,12 +109,12 @@ STATIC mp_uint_t bleio_characteristic_buffer_read(mp_obj_t self_in, void *buf_in return common_hal_bleio_characteristic_buffer_read(self, buf, size, errcode); } -STATIC mp_uint_t bleio_characteristic_buffer_write(mp_obj_t self_in, const void *buf_in, mp_uint_t size, int *errcode) { +static mp_uint_t bleio_characteristic_buffer_write(mp_obj_t self_in, const void *buf_in, mp_uint_t size, int *errcode) { mp_raise_NotImplementedError(MP_ERROR_TEXT("CharacteristicBuffer writing not provided")); return 0; } -STATIC mp_uint_t bleio_characteristic_buffer_ioctl(mp_obj_t self_in, mp_uint_t request, mp_uint_t arg, int *errcode) { +static mp_uint_t bleio_characteristic_buffer_ioctl(mp_obj_t self_in, mp_uint_t request, mp_uint_t arg, int *errcode) { bleio_characteristic_buffer_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); raise_error_if_not_connected(self); @@ -138,7 +138,7 @@ STATIC mp_uint_t bleio_characteristic_buffer_ioctl(mp_obj_t self_in, mp_uint_t r //| in_waiting: int //| """The number of bytes in the input buffer, available to be read""" -STATIC mp_obj_t bleio_characteristic_buffer_obj_get_in_waiting(mp_obj_t self_in) { +static mp_obj_t bleio_characteristic_buffer_obj_get_in_waiting(mp_obj_t self_in) { bleio_characteristic_buffer_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); uint32_t available = common_hal_bleio_characteristic_buffer_rx_characters_available(self); @@ -156,26 +156,26 @@ MP_PROPERTY_GETTER(bleio_characteristic_buffer_in_waiting_obj, //| def reset_input_buffer(self) -> None: //| """Discard any unread characters in the input buffer.""" //| ... -STATIC mp_obj_t bleio_characteristic_buffer_obj_reset_input_buffer(mp_obj_t self_in) { +static mp_obj_t bleio_characteristic_buffer_obj_reset_input_buffer(mp_obj_t self_in) { bleio_characteristic_buffer_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_bleio_characteristic_buffer_clear_rx_buffer(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_characteristic_buffer_reset_input_buffer_obj, bleio_characteristic_buffer_obj_reset_input_buffer); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_characteristic_buffer_reset_input_buffer_obj, bleio_characteristic_buffer_obj_reset_input_buffer); //| def deinit(self) -> None: //| """Disable permanently.""" //| ... //| -STATIC mp_obj_t bleio_characteristic_buffer_deinit(mp_obj_t self_in) { +static mp_obj_t bleio_characteristic_buffer_deinit(mp_obj_t self_in) { bleio_characteristic_buffer_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_bleio_characteristic_buffer_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_characteristic_buffer_deinit_obj, bleio_characteristic_buffer_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_characteristic_buffer_deinit_obj, bleio_characteristic_buffer_deinit); -STATIC const mp_rom_map_elem_t bleio_characteristic_buffer_locals_dict_table[] = { +static const mp_rom_map_elem_t bleio_characteristic_buffer_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&bleio_characteristic_buffer_deinit_obj) }, // Standard stream methods. @@ -191,9 +191,9 @@ STATIC const mp_rom_map_elem_t bleio_characteristic_buffer_locals_dict_table[] = }; -STATIC MP_DEFINE_CONST_DICT(bleio_characteristic_buffer_locals_dict, bleio_characteristic_buffer_locals_dict_table); +static MP_DEFINE_CONST_DICT(bleio_characteristic_buffer_locals_dict, bleio_characteristic_buffer_locals_dict_table); -STATIC const mp_stream_p_t characteristic_buffer_stream_p = { +static const mp_stream_p_t characteristic_buffer_stream_p = { .read = bleio_characteristic_buffer_read, .write = bleio_characteristic_buffer_write, .ioctl = bleio_characteristic_buffer_ioctl, diff --git a/shared-bindings/_bleio/Connection.c b/shared-bindings/_bleio/Connection.c index dfdcfa98f160..becd275f761f 100644 --- a/shared-bindings/_bleio/Connection.c +++ b/shared-bindings/_bleio/Connection.c @@ -56,19 +56,19 @@ void bleio_connection_ensure_connected(bleio_connection_obj_t *self) { //| def disconnect(self) -> None: //| """Disconnects from the remote peripheral. Does nothing if already disconnected.""" //| ... -STATIC mp_obj_t bleio_connection_disconnect(mp_obj_t self_in) { +static mp_obj_t bleio_connection_disconnect(mp_obj_t self_in) { bleio_connection_obj_t *self = MP_OBJ_TO_PTR(self_in); // common_hal_bleio_connection_disconnect() does nothing if already disconnected. common_hal_bleio_connection_disconnect(self->connection); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_connection_disconnect_obj, bleio_connection_disconnect); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_connection_disconnect_obj, bleio_connection_disconnect); //| def pair(self, *, bond: bool = True) -> None: //| """Pair to the peer to improve security.""" //| ... -STATIC mp_obj_t bleio_connection_pair(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bleio_connection_pair(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { bleio_connection_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); enum { ARG_bond }; @@ -84,7 +84,7 @@ STATIC mp_obj_t bleio_connection_pair(mp_uint_t n_args, const mp_obj_t *pos_args common_hal_bleio_connection_pair(self->connection, args[ARG_bond].u_bool); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(bleio_connection_pair_obj, 1, bleio_connection_pair); +static MP_DEFINE_CONST_FUN_OBJ_KW(bleio_connection_pair_obj, 1, bleio_connection_pair); //| def discover_remote_services( //| self, service_uuids_whitelist: Optional[Iterable[UUID]] = None @@ -111,7 +111,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_KW(bleio_connection_pair_obj, 1, bleio_connection //| //| :return: A tuple of `_bleio.Service` objects provided by the remote peripheral.""" //| ... -STATIC mp_obj_t bleio_connection_discover_remote_services(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bleio_connection_discover_remote_services(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { bleio_connection_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); enum { ARG_service_uuids_whitelist }; @@ -128,16 +128,16 @@ STATIC mp_obj_t bleio_connection_discover_remote_services(mp_uint_t n_args, cons self, args[ARG_service_uuids_whitelist].u_obj)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(bleio_connection_discover_remote_services_obj, 1, bleio_connection_discover_remote_services); +static MP_DEFINE_CONST_FUN_OBJ_KW(bleio_connection_discover_remote_services_obj, 1, bleio_connection_discover_remote_services); //| connected: bool //| """True if connected to the remote peer.""" -STATIC mp_obj_t bleio_connection_get_connected(mp_obj_t self_in) { +static mp_obj_t bleio_connection_get_connected(mp_obj_t self_in) { bleio_connection_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bool(common_hal_bleio_connection_get_connected(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_connection_get_connected_obj, bleio_connection_get_connected); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_connection_get_connected_obj, bleio_connection_get_connected); MP_PROPERTY_GETTER(bleio_connection_connected_obj, (mp_obj_t)&bleio_connection_get_connected_obj); @@ -145,12 +145,12 @@ MP_PROPERTY_GETTER(bleio_connection_connected_obj, //| paired: bool //| """True if paired to the remote peer.""" -STATIC mp_obj_t bleio_connection_get_paired(mp_obj_t self_in) { +static mp_obj_t bleio_connection_get_paired(mp_obj_t self_in) { bleio_connection_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bool(common_hal_bleio_connection_get_paired(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_connection_get_paired_obj, bleio_connection_get_paired); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_connection_get_paired_obj, bleio_connection_get_paired); MP_PROPERTY_GETTER(bleio_connection_paired_obj, (mp_obj_t)&bleio_connection_get_paired_obj); @@ -165,13 +165,13 @@ MP_PROPERTY_GETTER(bleio_connection_paired_obj, //| //| Apple has additional guidelines that dictate should be a multiple of 15ms except if HID is //| available. When HID is available Apple devices may accept 11.25ms intervals.""" -STATIC mp_obj_t bleio_connection_get_connection_interval(mp_obj_t self_in) { +static mp_obj_t bleio_connection_get_connection_interval(mp_obj_t self_in) { bleio_connection_obj_t *self = MP_OBJ_TO_PTR(self_in); bleio_connection_ensure_connected(self); return mp_obj_new_float(common_hal_bleio_connection_get_connection_interval(self->connection)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_connection_get_connection_interval_obj, bleio_connection_get_connection_interval); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_connection_get_connection_interval_obj, bleio_connection_get_connection_interval); //| max_packet_length: int //| """The maximum number of data bytes that can be sent in a single transmission, @@ -182,16 +182,16 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_connection_get_connection_interval_obj, b //| But for a regular characteristic read or write, may be sent in multiple packets, //| so this limit does not apply.""" //| -STATIC mp_obj_t bleio_connection_get_max_packet_length(mp_obj_t self_in) { +static mp_obj_t bleio_connection_get_max_packet_length(mp_obj_t self_in) { bleio_connection_obj_t *self = MP_OBJ_TO_PTR(self_in); bleio_connection_ensure_connected(self); return mp_obj_new_int(common_hal_bleio_connection_get_max_packet_length(self->connection)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_connection_get_max_packet_length_obj, bleio_connection_get_max_packet_length); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_connection_get_max_packet_length_obj, bleio_connection_get_max_packet_length); -STATIC mp_obj_t bleio_connection_set_connection_interval(mp_obj_t self_in, mp_obj_t interval_in) { +static mp_obj_t bleio_connection_set_connection_interval(mp_obj_t self_in, mp_obj_t interval_in) { bleio_connection_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_float_t interval = mp_obj_get_float(interval_in); @@ -201,7 +201,7 @@ STATIC mp_obj_t bleio_connection_set_connection_interval(mp_obj_t self_in, mp_ob return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(bleio_connection_set_connection_interval_obj, bleio_connection_set_connection_interval); +static MP_DEFINE_CONST_FUN_OBJ_2(bleio_connection_set_connection_interval_obj, bleio_connection_set_connection_interval); MP_PROPERTY_GETSET(bleio_connection_connection_interval_obj, (mp_obj_t)&bleio_connection_get_connection_interval_obj, @@ -210,7 +210,7 @@ MP_PROPERTY_GETSET(bleio_connection_connection_interval_obj, MP_PROPERTY_GETTER(bleio_connection_max_packet_length_obj, (mp_obj_t)&bleio_connection_get_max_packet_length_obj); -STATIC const mp_rom_map_elem_t bleio_connection_locals_dict_table[] = { +static const mp_rom_map_elem_t bleio_connection_locals_dict_table[] = { // Methods { MP_ROM_QSTR(MP_QSTR_pair), MP_ROM_PTR(&bleio_connection_pair_obj) }, { MP_ROM_QSTR(MP_QSTR_disconnect), MP_ROM_PTR(&bleio_connection_disconnect_obj) }, @@ -223,7 +223,7 @@ STATIC const mp_rom_map_elem_t bleio_connection_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_max_packet_length), MP_ROM_PTR(&bleio_connection_max_packet_length_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(bleio_connection_locals_dict, bleio_connection_locals_dict_table); +static MP_DEFINE_CONST_DICT(bleio_connection_locals_dict, bleio_connection_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( bleio_connection_type, diff --git a/shared-bindings/_bleio/Descriptor.c b/shared-bindings/_bleio/Descriptor.c index d942b5d764c2..f8615fd28abb 100644 --- a/shared-bindings/_bleio/Descriptor.c +++ b/shared-bindings/_bleio/Descriptor.c @@ -55,7 +55,7 @@ //| //| :return: the new Descriptor.""" //| ... -STATIC mp_obj_t bleio_descriptor_add_to_characteristic(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bleio_descriptor_add_to_characteristic(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { // class is arg[0], which we can ignore. enum { ARG_characteristic, ARG_uuid, ARG_read_perm, ARG_write_perm, @@ -116,12 +116,12 @@ STATIC mp_obj_t bleio_descriptor_add_to_characteristic(size_t n_args, const mp_o return MP_OBJ_FROM_PTR(descriptor); } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(bleio_descriptor_add_to_characteristic_fun_obj, 1, bleio_descriptor_add_to_characteristic); -STATIC MP_DEFINE_CONST_CLASSMETHOD_OBJ(bleio_descriptor_add_to_characteristic_obj, MP_ROM_PTR(&bleio_descriptor_add_to_characteristic_fun_obj)); +static MP_DEFINE_CONST_FUN_OBJ_KW(bleio_descriptor_add_to_characteristic_fun_obj, 1, bleio_descriptor_add_to_characteristic); +static MP_DEFINE_CONST_CLASSMETHOD_OBJ(bleio_descriptor_add_to_characteristic_obj, MP_ROM_PTR(&bleio_descriptor_add_to_characteristic_fun_obj)); //| uuid: UUID //| """The descriptor uuid. (read-only)""" -STATIC mp_obj_t bleio_descriptor_get_uuid(mp_obj_t self_in) { +static mp_obj_t bleio_descriptor_get_uuid(mp_obj_t self_in) { bleio_descriptor_obj_t *self = MP_OBJ_TO_PTR(self_in); bleio_uuid_obj_t *uuid = common_hal_bleio_descriptor_get_uuid(self); @@ -134,12 +134,12 @@ MP_PROPERTY_GETTER(bleio_descriptor_uuid_obj, //| characteristic: Characteristic //| """The Characteristic this Descriptor is a part of.""" -STATIC mp_obj_t bleio_descriptor_get_characteristic(mp_obj_t self_in) { +static mp_obj_t bleio_descriptor_get_characteristic(mp_obj_t self_in) { bleio_descriptor_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_bleio_descriptor_get_characteristic(self); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_descriptor_get_characteristic_obj, bleio_descriptor_get_characteristic); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_descriptor_get_characteristic_obj, bleio_descriptor_get_characteristic); MP_PROPERTY_GETTER(bleio_descriptor_characteristic_obj, (mp_obj_t)&bleio_descriptor_get_characteristic_obj); @@ -147,16 +147,16 @@ MP_PROPERTY_GETTER(bleio_descriptor_characteristic_obj, //| value: bytearray //| """The value of this descriptor.""" //| -STATIC mp_obj_t bleio_descriptor_get_value(mp_obj_t self_in) { +static mp_obj_t bleio_descriptor_get_value(mp_obj_t self_in) { bleio_descriptor_obj_t *self = MP_OBJ_TO_PTR(self_in); uint8_t temp[512]; size_t actual_len = common_hal_bleio_descriptor_get_value(self, temp, sizeof(temp)); return mp_obj_new_bytearray(actual_len, temp); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_descriptor_get_value_obj, bleio_descriptor_get_value); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_descriptor_get_value_obj, bleio_descriptor_get_value); -STATIC mp_obj_t bleio_descriptor_set_value(mp_obj_t self_in, mp_obj_t value_in) { +static mp_obj_t bleio_descriptor_set_value(mp_obj_t self_in, mp_obj_t value_in) { bleio_descriptor_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_buffer_info_t bufinfo; @@ -166,22 +166,22 @@ STATIC mp_obj_t bleio_descriptor_set_value(mp_obj_t self_in, mp_obj_t value_in) return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(bleio_descriptor_set_value_obj, bleio_descriptor_set_value); +static MP_DEFINE_CONST_FUN_OBJ_2(bleio_descriptor_set_value_obj, bleio_descriptor_set_value); MP_PROPERTY_GETSET(bleio_descriptor_value_obj, (mp_obj_t)&bleio_descriptor_get_value_obj, (mp_obj_t)&bleio_descriptor_set_value_obj); -STATIC const mp_rom_map_elem_t bleio_descriptor_locals_dict_table[] = { +static const mp_rom_map_elem_t bleio_descriptor_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_add_to_characteristic), MP_ROM_PTR(&bleio_descriptor_add_to_characteristic_obj) }, { MP_ROM_QSTR(MP_QSTR_uuid), MP_ROM_PTR(&bleio_descriptor_uuid_obj) }, { MP_ROM_QSTR(MP_QSTR_characteristic), MP_ROM_PTR(&bleio_descriptor_characteristic_obj) }, { MP_ROM_QSTR(MP_QSTR_value), MP_ROM_PTR(&bleio_descriptor_value_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(bleio_descriptor_locals_dict, bleio_descriptor_locals_dict_table); +static MP_DEFINE_CONST_DICT(bleio_descriptor_locals_dict, bleio_descriptor_locals_dict_table); -STATIC void bleio_descriptor_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { +static void bleio_descriptor_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { bleio_descriptor_obj_t *self = MP_OBJ_TO_PTR(self_in); if (self->uuid) { mp_printf(print, "Descriptor("); diff --git a/shared-bindings/_bleio/PacketBuffer.c b/shared-bindings/_bleio/PacketBuffer.c index 4fa7f3bb086d..dc89d9b33d1d 100644 --- a/shared-bindings/_bleio/PacketBuffer.c +++ b/shared-bindings/_bleio/PacketBuffer.c @@ -39,7 +39,7 @@ //| :param int max_packet_size: Maximum size of packets. Overrides value from the characteristic. //| (Remote characteristics may not have the correct length.)""" //| ... -STATIC mp_obj_t bleio_packet_buffer_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t bleio_packet_buffer_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_characteristic, ARG_buffer_size, ARG_max_packet_size }; static const mp_arg_t allowed_args[] = { { MP_QSTR_characteristic, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -66,7 +66,7 @@ STATIC mp_obj_t bleio_packet_buffer_make_new(const mp_obj_type_t *type, size_t n return MP_OBJ_FROM_PTR(self); } -STATIC void check_for_deinit(bleio_packet_buffer_obj_t *self) { +static void check_for_deinit(bleio_packet_buffer_obj_t *self) { if (common_hal_bleio_packet_buffer_deinited(self)) { raise_deinited_error(); } @@ -79,7 +79,7 @@ STATIC void check_for_deinit(bleio_packet_buffer_obj_t *self) { //| :return: number of bytes read and stored into ``buf`` //| :rtype: int""" //| ... -STATIC mp_obj_t bleio_packet_buffer_readinto(mp_obj_t self_in, mp_obj_t buffer_obj) { +static mp_obj_t bleio_packet_buffer_readinto(mp_obj_t self_in, mp_obj_t buffer_obj) { bleio_packet_buffer_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -93,7 +93,7 @@ STATIC mp_obj_t bleio_packet_buffer_readinto(mp_obj_t self_in, mp_obj_t buffer_o return MP_OBJ_NEW_SMALL_INT(size); } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(bleio_packet_buffer_readinto_obj, bleio_packet_buffer_readinto); +static MP_DEFINE_CONST_FUN_OBJ_2(bleio_packet_buffer_readinto_obj, bleio_packet_buffer_readinto); //| def write(self, data: ReadableBuffer, *, header: Optional[bytes] = None) -> int: //| """Writes all bytes from data into the same outgoing packet. The bytes from header are included @@ -106,7 +106,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(bleio_packet_buffer_readinto_obj, bleio_packet_ //| ... // TODO: Add a kwarg `merge=False` to dictate whether subsequent writes are merged into a pending // one. -STATIC mp_obj_t bleio_packet_buffer_write(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bleio_packet_buffer_write(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_data, ARG_header }; static const mp_arg_t allowed_args[] = { { MP_QSTR_data, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -144,21 +144,21 @@ STATIC mp_obj_t bleio_packet_buffer_write(mp_uint_t n_args, const mp_obj_t *pos_ } return MP_OBJ_NEW_SMALL_INT(num_bytes_written); } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(bleio_packet_buffer_write_obj, 1, bleio_packet_buffer_write); +static MP_DEFINE_CONST_FUN_OBJ_KW(bleio_packet_buffer_write_obj, 1, bleio_packet_buffer_write); //| def deinit(self) -> None: //| """Disable permanently.""" //| ... -STATIC mp_obj_t bleio_packet_buffer_deinit(mp_obj_t self_in) { +static mp_obj_t bleio_packet_buffer_deinit(mp_obj_t self_in) { bleio_packet_buffer_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_bleio_packet_buffer_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_packet_buffer_deinit_obj, bleio_packet_buffer_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_packet_buffer_deinit_obj, bleio_packet_buffer_deinit); //| incoming_packet_length: int //| """Maximum length in bytes of a packet we are reading.""" -STATIC mp_obj_t bleio_packet_buffer_get_incoming_packet_length(mp_obj_t self_in) { +static mp_obj_t bleio_packet_buffer_get_incoming_packet_length(mp_obj_t self_in) { bleio_packet_buffer_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_int_t size = common_hal_bleio_packet_buffer_get_incoming_packet_length(self); @@ -167,7 +167,7 @@ STATIC mp_obj_t bleio_packet_buffer_get_incoming_packet_length(mp_obj_t self_in) } return MP_OBJ_NEW_SMALL_INT(size); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_packet_buffer_get_incoming_packet_length_obj, bleio_packet_buffer_get_incoming_packet_length); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_packet_buffer_get_incoming_packet_length_obj, bleio_packet_buffer_get_incoming_packet_length); MP_PROPERTY_GETTER(bleio_packet_buffer_incoming_packet_length_obj, (mp_obj_t)&bleio_packet_buffer_get_incoming_packet_length_obj); @@ -175,7 +175,7 @@ MP_PROPERTY_GETTER(bleio_packet_buffer_incoming_packet_length_obj, //| outgoing_packet_length: int //| """Maximum length in bytes of a packet we are writing.""" //| -STATIC mp_obj_t bleio_packet_buffer_get_outgoing_packet_length(mp_obj_t self_in) { +static mp_obj_t bleio_packet_buffer_get_outgoing_packet_length(mp_obj_t self_in) { bleio_packet_buffer_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_int_t size = common_hal_bleio_packet_buffer_get_outgoing_packet_length(self); @@ -184,12 +184,12 @@ STATIC mp_obj_t bleio_packet_buffer_get_outgoing_packet_length(mp_obj_t self_in) } return MP_OBJ_NEW_SMALL_INT(size); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_packet_buffer_get_outgoing_packet_length_obj, bleio_packet_buffer_get_outgoing_packet_length); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_packet_buffer_get_outgoing_packet_length_obj, bleio_packet_buffer_get_outgoing_packet_length); MP_PROPERTY_GETTER(bleio_packet_buffer_outgoing_packet_length_obj, (mp_obj_t)&bleio_packet_buffer_get_outgoing_packet_length_obj); -STATIC const mp_rom_map_elem_t bleio_packet_buffer_locals_dict_table[] = { +static const mp_rom_map_elem_t bleio_packet_buffer_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&bleio_packet_buffer_deinit_obj) }, // Standard stream methods. @@ -200,7 +200,7 @@ STATIC const mp_rom_map_elem_t bleio_packet_buffer_locals_dict_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR_outgoing_packet_length), MP_ROM_PTR(&bleio_packet_buffer_outgoing_packet_length_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(bleio_packet_buffer_locals_dict, bleio_packet_buffer_locals_dict_table); +static MP_DEFINE_CONST_DICT(bleio_packet_buffer_locals_dict, bleio_packet_buffer_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( diff --git a/shared-bindings/_bleio/ScanEntry.c b/shared-bindings/_bleio/ScanEntry.c index e3f0f43fe8bc..9e66b70e8e95 100644 --- a/shared-bindings/_bleio/ScanEntry.c +++ b/shared-bindings/_bleio/ScanEntry.c @@ -30,7 +30,7 @@ //| than the scan filtering which accepts any advertisements that match any of the prefixes //| where ``match_all`` is False.""" //| ... -STATIC mp_obj_t bleio_scanentry_matches(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bleio_scanentry_matches(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { bleio_scanentry_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); enum { ARG_prefixes, ARG_match_all }; @@ -48,48 +48,48 @@ STATIC mp_obj_t bleio_scanentry_matches(mp_uint_t n_args, const mp_obj_t *pos_ar mp_get_buffer_raise(args[ARG_prefixes].u_obj, &bufinfo, MP_BUFFER_READ); return mp_obj_new_bool(common_hal_bleio_scanentry_matches(self, bufinfo.buf, bufinfo.len, match_all)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(bleio_scanentry_matches_obj, 1, bleio_scanentry_matches); +static MP_DEFINE_CONST_FUN_OBJ_KW(bleio_scanentry_matches_obj, 1, bleio_scanentry_matches); //| address: Address //| """The address of the device (read-only), of type `_bleio.Address`.""" -STATIC mp_obj_t bleio_scanentry_get_address(mp_obj_t self_in) { +static mp_obj_t bleio_scanentry_get_address(mp_obj_t self_in) { bleio_scanentry_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_bleio_scanentry_get_address(self); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_scanentry_get_address_obj, bleio_scanentry_get_address); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_scanentry_get_address_obj, bleio_scanentry_get_address); MP_PROPERTY_GETTER(bleio_scanentry_address_obj, (mp_obj_t)&bleio_scanentry_get_address_obj); //| advertisement_bytes: bytes //| """All the advertisement data present in the packet, returned as a ``bytes`` object. (read-only)""" -STATIC mp_obj_t scanentry_get_advertisement_bytes(mp_obj_t self_in) { +static mp_obj_t scanentry_get_advertisement_bytes(mp_obj_t self_in) { bleio_scanentry_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_bleio_scanentry_get_advertisement_bytes(self); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_scanentry_get_advertisement_bytes_obj, scanentry_get_advertisement_bytes); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_scanentry_get_advertisement_bytes_obj, scanentry_get_advertisement_bytes); MP_PROPERTY_GETTER(bleio_scanentry_advertisement_bytes_obj, (mp_obj_t)&bleio_scanentry_get_advertisement_bytes_obj); //| rssi: int //| """The signal strength of the device at the time of the scan, in integer dBm. (read-only)""" -STATIC mp_obj_t scanentry_get_rssi(mp_obj_t self_in) { +static mp_obj_t scanentry_get_rssi(mp_obj_t self_in) { bleio_scanentry_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_int(common_hal_bleio_scanentry_get_rssi(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_scanentry_get_rssi_obj, scanentry_get_rssi); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_scanentry_get_rssi_obj, scanentry_get_rssi); MP_PROPERTY_GETTER(bleio_scanentry_rssi_obj, (mp_obj_t)&bleio_scanentry_get_rssi_obj); //| connectable: bool //| """True if the device can be connected to. (read-only)""" -STATIC mp_obj_t scanentry_get_connectable(mp_obj_t self_in) { +static mp_obj_t scanentry_get_connectable(mp_obj_t self_in) { bleio_scanentry_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bool(common_hal_bleio_scanentry_get_connectable(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_scanentry_get_connectable_obj, scanentry_get_connectable); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_scanentry_get_connectable_obj, scanentry_get_connectable); MP_PROPERTY_GETTER(bleio_scanentry_connectable_obj, (mp_obj_t)&bleio_scanentry_get_connectable_obj); @@ -97,16 +97,16 @@ MP_PROPERTY_GETTER(bleio_scanentry_connectable_obj, //| scan_response: bool //| """True if the entry was a scan response. (read-only)""" //| -STATIC mp_obj_t scanentry_get_scan_response(mp_obj_t self_in) { +static mp_obj_t scanentry_get_scan_response(mp_obj_t self_in) { bleio_scanentry_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bool(common_hal_bleio_scanentry_get_scan_response(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_scanentry_get_scan_response_obj, scanentry_get_scan_response); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_scanentry_get_scan_response_obj, scanentry_get_scan_response); MP_PROPERTY_GETTER(bleio_scanentry_scan_response_obj, (mp_obj_t)&bleio_scanentry_get_scan_response_obj); -STATIC const mp_rom_map_elem_t bleio_scanentry_locals_dict_table[] = { +static const mp_rom_map_elem_t bleio_scanentry_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_address), MP_ROM_PTR(&bleio_scanentry_address_obj) }, { MP_ROM_QSTR(MP_QSTR_advertisement_bytes), MP_ROM_PTR(&bleio_scanentry_advertisement_bytes_obj) }, { MP_ROM_QSTR(MP_QSTR_rssi), MP_ROM_PTR(&bleio_scanentry_rssi_obj) }, @@ -115,7 +115,7 @@ STATIC const mp_rom_map_elem_t bleio_scanentry_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_matches), MP_ROM_PTR(&bleio_scanentry_matches_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(bleio_scanentry_locals_dict, bleio_scanentry_locals_dict_table); +static MP_DEFINE_CONST_DICT(bleio_scanentry_locals_dict, bleio_scanentry_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( bleio_scanentry_type, diff --git a/shared-bindings/_bleio/ScanResults.c b/shared-bindings/_bleio/ScanResults.c index 6e249394736b..81680902e4da 100644 --- a/shared-bindings/_bleio/ScanResults.c +++ b/shared-bindings/_bleio/ScanResults.c @@ -16,7 +16,7 @@ //| """Iterates over advertising data received while scanning. This object is always created //| by a `_bleio.Adapter`: it has no user-visible constructor.""" //| -STATIC mp_obj_t scanresults_iternext(mp_obj_t self_in) { +static mp_obj_t scanresults_iternext(mp_obj_t self_in) { mp_check_self(mp_obj_is_type(self_in, &bleio_scanresults_type)); bleio_scanresults_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_obj_t scan_entry = common_hal_bleio_scanresults_next(self); diff --git a/shared-bindings/_bleio/Service.c b/shared-bindings/_bleio/Service.c index 3774e0659748..00da34c8bce2 100644 --- a/shared-bindings/_bleio/Service.c +++ b/shared-bindings/_bleio/Service.c @@ -27,7 +27,7 @@ //| //| :return: the new Service""" //| ... -STATIC mp_obj_t bleio_service_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t bleio_service_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_uuid, ARG_secondary }; static const mp_arg_t allowed_args[] = { { MP_QSTR_uuid, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -52,45 +52,45 @@ STATIC mp_obj_t bleio_service_make_new(const mp_obj_type_t *type, size_t n_args, //| def deinit(self) -> None: //| """Disable and deinitialise the Service.""" //| ... -STATIC mp_obj_t bleio_service_deinit(mp_obj_t self_in) { +static mp_obj_t bleio_service_deinit(mp_obj_t self_in) { bleio_service_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_bleio_service_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_service_deinit_obj, bleio_service_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_service_deinit_obj, bleio_service_deinit); //| characteristics: Tuple[Characteristic, ...] //| """A tuple of :py:class:`Characteristic` designating the characteristics that are offered by //| this service. (read-only)""" -STATIC mp_obj_t bleio_service_get_characteristics(mp_obj_t self_in) { +static mp_obj_t bleio_service_get_characteristics(mp_obj_t self_in) { bleio_service_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_FROM_PTR(common_hal_bleio_service_get_characteristics(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_service_get_characteristics_obj, bleio_service_get_characteristics); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_service_get_characteristics_obj, bleio_service_get_characteristics); MP_PROPERTY_GETTER(bleio_service_characteristics_obj, (mp_obj_t)&bleio_service_get_characteristics_obj); //| remote: bool //| """True if this is a service provided by a remote device. (read-only)""" -STATIC mp_obj_t bleio_service_get_remote(mp_obj_t self_in) { +static mp_obj_t bleio_service_get_remote(mp_obj_t self_in) { bleio_service_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bool(common_hal_bleio_service_get_is_remote(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_service_get_remote_obj, bleio_service_get_remote); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_service_get_remote_obj, bleio_service_get_remote); MP_PROPERTY_GETTER(bleio_service_remote_obj, (mp_obj_t)&bleio_service_get_remote_obj); //| secondary: bool //| """True if this is a secondary service. (read-only)""" -STATIC mp_obj_t bleio_service_get_secondary(mp_obj_t self_in) { +static mp_obj_t bleio_service_get_secondary(mp_obj_t self_in) { bleio_service_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bool(common_hal_bleio_service_get_is_secondary(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_service_get_secondary_obj, bleio_service_get_secondary); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_service_get_secondary_obj, bleio_service_get_secondary); MP_PROPERTY_GETTER(bleio_service_secondary_obj, (mp_obj_t)&bleio_service_get_secondary_obj); @@ -100,19 +100,19 @@ MP_PROPERTY_GETTER(bleio_service_secondary_obj, //| //| Will be ``None`` if the 128-bit UUID for this service is not known.""" //| -STATIC mp_obj_t bleio_service_get_uuid(mp_obj_t self_in) { +static mp_obj_t bleio_service_get_uuid(mp_obj_t self_in) { bleio_service_obj_t *self = MP_OBJ_TO_PTR(self_in); bleio_uuid_obj_t *uuid = common_hal_bleio_service_get_uuid(self); return uuid ? MP_OBJ_FROM_PTR(uuid) : mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(bleio_service_get_uuid_obj, bleio_service_get_uuid); +static MP_DEFINE_CONST_FUN_OBJ_1(bleio_service_get_uuid_obj, bleio_service_get_uuid); MP_PROPERTY_GETTER(bleio_service_uuid_obj, (mp_obj_t)&bleio_service_get_uuid_obj); -STATIC const mp_rom_map_elem_t bleio_service_locals_dict_table[] = { +static const mp_rom_map_elem_t bleio_service_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&bleio_service_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&bleio_service_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR_characteristics), MP_ROM_PTR(&bleio_service_characteristics_obj) }, @@ -120,9 +120,9 @@ STATIC const mp_rom_map_elem_t bleio_service_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_uuid), MP_ROM_PTR(&bleio_service_uuid_obj) }, { MP_ROM_QSTR(MP_QSTR_remote), MP_ROM_PTR(&bleio_service_remote_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(bleio_service_locals_dict, bleio_service_locals_dict_table); +static MP_DEFINE_CONST_DICT(bleio_service_locals_dict, bleio_service_locals_dict_table); -STATIC void bleio_service_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { +static void bleio_service_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { bleio_service_obj_t *self = MP_OBJ_TO_PTR(self_in); if (self->uuid) { mp_printf(print, "Service("); diff --git a/shared-bindings/_bleio/UUID.c b/shared-bindings/_bleio/UUID.c index a5935b83236b..5dac1b3ecfde 100644 --- a/shared-bindings/_bleio/UUID.c +++ b/shared-bindings/_bleio/UUID.c @@ -30,7 +30,7 @@ //| :param value: The uuid value to encapsulate //| :type value: int, ~circuitpython_typing.ReadableBuffer or str""" //| ... -STATIC mp_obj_t bleio_uuid_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t bleio_uuid_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { mp_arg_check_num(n_args, n_kw, 1, 1, false); bleio_uuid_obj_t *self = mp_obj_malloc(bleio_uuid_obj_t, &bleio_uuid_type); @@ -102,7 +102,7 @@ STATIC mp_obj_t bleio_uuid_make_new(const mp_obj_type_t *type, size_t n_args, si //| """The 16-bit part of the UUID. (read-only) //| //| :type: int""" -STATIC mp_obj_t bleio_uuid_get_uuid16(mp_obj_t self_in) { +static mp_obj_t bleio_uuid_get_uuid16(mp_obj_t self_in) { bleio_uuid_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_bleio_uuid_get_uuid16(self)); } @@ -117,7 +117,7 @@ MP_PROPERTY_GETTER(bleio_uuid_uuid16_obj, //| Raises AttributeError if this is a 16-bit UUID. (read-only) //| //| :type: bytes""" -STATIC mp_obj_t bleio_uuid_get_uuid128(mp_obj_t self_in) { +static mp_obj_t bleio_uuid_get_uuid128(mp_obj_t self_in) { bleio_uuid_obj_t *self = MP_OBJ_TO_PTR(self_in); uint8_t uuid128[16]; @@ -138,7 +138,7 @@ MP_PROPERTY_GETTER(bleio_uuid_uuid128_obj, //| 16-bit Bluetooth SIG assigned UUID. (read-only) 32-bit UUIDs are not currently supported. //| //| :type: int""" -STATIC mp_obj_t bleio_uuid_get_size(mp_obj_t self_in) { +static mp_obj_t bleio_uuid_get_size(mp_obj_t self_in) { bleio_uuid_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_bleio_uuid_get_size(self)); } @@ -152,7 +152,7 @@ MP_PROPERTY_GETTER(bleio_uuid_size_obj, //| def pack_into(self, buffer: WriteableBuffer, offset: int = 0) -> None: //| """Packs the UUID into the given buffer at the given offset.""" //| ... -STATIC mp_obj_t bleio_uuid_pack_into(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bleio_uuid_pack_into(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { bleio_uuid_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); enum { ARG_buffer, ARG_offset }; @@ -176,18 +176,18 @@ STATIC mp_obj_t bleio_uuid_pack_into(mp_uint_t n_args, const mp_obj_t *pos_args, common_hal_bleio_uuid_pack_into(self, bufinfo.buf + offset); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(bleio_uuid_pack_into_obj, 1, bleio_uuid_pack_into); +static MP_DEFINE_CONST_FUN_OBJ_KW(bleio_uuid_pack_into_obj, 1, bleio_uuid_pack_into); -STATIC const mp_rom_map_elem_t bleio_uuid_locals_dict_table[] = { +static const mp_rom_map_elem_t bleio_uuid_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_uuid16), MP_ROM_PTR(&bleio_uuid_uuid16_obj) }, { MP_ROM_QSTR(MP_QSTR_uuid128), MP_ROM_PTR(&bleio_uuid_uuid128_obj) }, { MP_ROM_QSTR(MP_QSTR_size), MP_ROM_PTR(&bleio_uuid_size_obj) }, { MP_ROM_QSTR(MP_QSTR_pack_into), MP_ROM_PTR(&bleio_uuid_pack_into_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(bleio_uuid_locals_dict, bleio_uuid_locals_dict_table); +static MP_DEFINE_CONST_DICT(bleio_uuid_locals_dict, bleio_uuid_locals_dict_table); -STATIC mp_obj_t bleio_uuid_unary_op(mp_unary_op_t op, mp_obj_t self_in) { +static mp_obj_t bleio_uuid_unary_op(mp_unary_op_t op, mp_obj_t self_in) { bleio_uuid_obj_t *self = MP_OBJ_TO_PTR(self_in); switch (op) { case MP_UNARY_OP_HASH: @@ -214,7 +214,7 @@ STATIC mp_obj_t bleio_uuid_unary_op(mp_unary_op_t op, mp_obj_t self_in) { //| """Two UUID objects are equal if their values match and they are both 128-bit or both 16-bit.""" //| ... //| -STATIC mp_obj_t bleio_uuid_binary_op(mp_binary_op_t op, mp_obj_t lhs_in, mp_obj_t rhs_in) { +static mp_obj_t bleio_uuid_binary_op(mp_binary_op_t op, mp_obj_t lhs_in, mp_obj_t rhs_in) { switch (op) { // Two UUID's are equal if their uuid16 values match or their uuid128 values match. case MP_BINARY_OP_EQUAL: diff --git a/shared-bindings/_bleio/__init__.c b/shared-bindings/_bleio/__init__.c index 34b01f60d81e..2643a59618a6 100644 --- a/shared-bindings/_bleio/__init__.c +++ b/shared-bindings/_bleio/__init__.c @@ -80,19 +80,19 @@ NORETURN void mp_raise_bleio_SecurityError(mp_rom_error_text_t fmt, ...) { } // Called when _bleio is imported. -STATIC mp_obj_t bleio___init__(void) { +static mp_obj_t bleio___init__(void) { // HCI cannot be enabled on import, because we need to setup the HCI adapter first. #if !CIRCUITPY_BLEIO_HCI common_hal_bleio_adapter_set_enabled(&common_hal_bleio_adapter_obj, true); #endif return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_0(bleio___init___obj, bleio___init__); +static MP_DEFINE_CONST_FUN_OBJ_0(bleio___init___obj, bleio___init__); // Need a forward reference due to mutual references. #if CIRCUITPY_BLEIO_HCI -STATIC mp_obj_dict_t bleio_module_globals; +static mp_obj_dict_t bleio_module_globals; #endif //| def set_adapter(adapter: Optional[_bleio.Adapter]) -> None: @@ -121,10 +121,10 @@ MP_DEFINE_CONST_FUN_OBJ_1(bleio_set_adapter_obj, bleio_set_adapter); // Make the module dictionary be in RAM, so that _bleio.adapter can be set. // Use a local macro to define how table entries should be converted. #define OBJ_FROM_PTR MP_OBJ_FROM_PTR -STATIC mp_map_elem_t bleio_module_globals_table[] = { +static mp_map_elem_t bleio_module_globals_table[] = { #else #define OBJ_FROM_PTR MP_ROM_PTR -STATIC const mp_rom_map_elem_t bleio_module_globals_table[] = { +static const mp_rom_map_elem_t bleio_module_globals_table[] = { #endif // Name must be the first entry so that the exception printing below is correct. { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR__bleio) }, @@ -163,9 +163,9 @@ STATIC const mp_rom_map_elem_t bleio_module_globals_table[] = { #if CIRCUITPY_BLEIO_HCI // Module dict is mutable to allow setting _bleio.adapter. -STATIC MP_DEFINE_MUTABLE_DICT(bleio_module_globals, bleio_module_globals_table); +static MP_DEFINE_MUTABLE_DICT(bleio_module_globals, bleio_module_globals_table); #else -STATIC MP_DEFINE_CONST_DICT(bleio_module_globals, bleio_module_globals_table); +static MP_DEFINE_CONST_DICT(bleio_module_globals, bleio_module_globals_table); #endif void bleio_exception_print(const mp_print_t *print, mp_obj_t o_in, mp_print_kind_t kind) { diff --git a/shared-bindings/_eve/__init__.c b/shared-bindings/_eve/__init__.c index 654e6728b3ef..bbcb32920316 100644 --- a/shared-bindings/_eve/__init__.c +++ b/shared-bindings/_eve/__init__.c @@ -28,42 +28,42 @@ typedef struct _mp_obj__EVE_t { common_hal__eve_t _eve; } mp_obj__EVE_t; -STATIC const mp_obj_type_t _EVE_type; +static const mp_obj_type_t _EVE_type; #define EVEHAL(s) \ (&((mp_obj__EVE_t *)mp_obj_cast_to_native_base((s), &_EVE_type))->_eve) //| def register(self, o: object) -> None: ... -STATIC mp_obj_t _register(mp_obj_t self, mp_obj_t o) { +static mp_obj_t _register(mp_obj_t self, mp_obj_t o) { common_hal__eve_t *eve = EVEHAL(self); mp_load_method(o, MP_QSTR_write, eve->dest); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(register_obj, _register); +static MP_DEFINE_CONST_FUN_OBJ_2(register_obj, _register); //| def flush(self) -> None: //| """Send any queued drawing commands directly to the hardware. //| //| :param int width: The width of the grid in tiles, or 1 for sprites.""" //| ... -STATIC mp_obj_t _flush(mp_obj_t self) { +static mp_obj_t _flush(mp_obj_t self) { common_hal__eve_flush(EVEHAL(self)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(flush_obj, _flush); +static MP_DEFINE_CONST_FUN_OBJ_1(flush_obj, _flush); //| def cc(self, b: ReadableBuffer) -> None: //| """Append bytes to the command FIFO. //| //| :param ~circuitpython_typing.ReadableBuffer b: The bytes to add""" //| ... -STATIC mp_obj_t _cc(mp_obj_t self, mp_obj_t b) { +static mp_obj_t _cc(mp_obj_t self, mp_obj_t b) { mp_buffer_info_t buffer_info; mp_get_buffer_raise(b, &buffer_info, MP_BUFFER_READ); common_hal__eve_add(EVEHAL(self), buffer_info.len, buffer_info.buf); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(cc_obj, _cc); +static MP_DEFINE_CONST_FUN_OBJ_2(cc_obj, _cc); // { @@ -77,13 +77,13 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(cc_obj, _cc); //| """ //| ... -STATIC mp_obj_t _alphafunc(mp_obj_t self, mp_obj_t a0, mp_obj_t a1) { +static mp_obj_t _alphafunc(mp_obj_t self, mp_obj_t a0, mp_obj_t a1) { uint32_t func = mp_obj_get_int_truncated(a0); uint32_t ref = mp_obj_get_int_truncated(a1); common_hal__eve_AlphaFunc(EVEHAL(self), func, ref); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(alphafunc_obj, _alphafunc); +static MP_DEFINE_CONST_FUN_OBJ_3(alphafunc_obj, _alphafunc); //| def Begin(self, prim: int) -> None: //| """Begin drawing a graphics primitive @@ -94,12 +94,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_3(alphafunc_obj, _alphafunc); //| """ //| ... -STATIC mp_obj_t _begin(mp_obj_t self, mp_obj_t a0) { +static mp_obj_t _begin(mp_obj_t self, mp_obj_t a0) { uint32_t prim = mp_obj_get_int_truncated(a0); common_hal__eve_Begin(EVEHAL(self), prim); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(begin_obj, _begin); +static MP_DEFINE_CONST_FUN_OBJ_2(begin_obj, _begin); //| def BitmapExtFormat(self, format: int) -> None: //| """Set the bitmap format @@ -107,12 +107,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(begin_obj, _begin); //| :param int format: bitmap pixel format.""" //| ... -STATIC mp_obj_t _bitmapextformat(mp_obj_t self, mp_obj_t a0) { +static mp_obj_t _bitmapextformat(mp_obj_t self, mp_obj_t a0) { uint32_t fmt = mp_obj_get_int_truncated(a0); common_hal__eve_BitmapExtFormat(EVEHAL(self), fmt); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(bitmapextformat_obj, _bitmapextformat); +static MP_DEFINE_CONST_FUN_OBJ_2(bitmapextformat_obj, _bitmapextformat); //| def BitmapHandle(self, handle: int) -> None: //| """Set the bitmap handle @@ -123,12 +123,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(bitmapextformat_obj, _bitmapextformat); //| """ //| ... -STATIC mp_obj_t _bitmaphandle(mp_obj_t self, mp_obj_t a0) { +static mp_obj_t _bitmaphandle(mp_obj_t self, mp_obj_t a0) { uint32_t handle = mp_obj_get_int_truncated(a0); common_hal__eve_BitmapHandle(EVEHAL(self), handle); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(bitmaphandle_obj, _bitmaphandle); +static MP_DEFINE_CONST_FUN_OBJ_2(bitmaphandle_obj, _bitmaphandle); //| def BitmapLayoutH(self, linestride: int, height: int) -> None: //| """Set the source bitmap memory format and layout for the current handle. high bits for large bitmaps @@ -137,13 +137,13 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(bitmaphandle_obj, _bitmaphandle); //| :param int height: high part of bitmap height, in lines. Range 0-3""" //| ... -STATIC mp_obj_t _bitmaplayouth(mp_obj_t self, mp_obj_t a0, mp_obj_t a1) { +static mp_obj_t _bitmaplayouth(mp_obj_t self, mp_obj_t a0, mp_obj_t a1) { uint32_t linestride = mp_obj_get_int_truncated(a0); uint32_t height = mp_obj_get_int_truncated(a1); common_hal__eve_BitmapLayoutH(EVEHAL(self), linestride, height); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(bitmaplayouth_obj, _bitmaplayouth); +static MP_DEFINE_CONST_FUN_OBJ_3(bitmaplayouth_obj, _bitmaplayouth); //| def BitmapLayout(self, format: int, linestride: int, height: int) -> None: //| """Set the source bitmap memory format and layout for the current handle @@ -153,14 +153,14 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_3(bitmaplayouth_obj, _bitmaplayouth); //| :param int height: bitmap height, in lines. Range 0-511""" //| ... -STATIC mp_obj_t _bitmaplayout(size_t n_args, const mp_obj_t *args) { +static mp_obj_t _bitmaplayout(size_t n_args, const mp_obj_t *args) { uint32_t format = mp_obj_get_int_truncated(args[1]); uint32_t linestride = mp_obj_get_int_truncated(args[2]); uint32_t height = mp_obj_get_int_truncated(args[3]); common_hal__eve_BitmapLayout(EVEHAL(args[0]), format, linestride, height); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(bitmaplayout_obj, 4, 4, _bitmaplayout); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(bitmaplayout_obj, 4, 4, _bitmaplayout); //| def BitmapSizeH(self, width: int, height: int) -> None: //| """Set the screen drawing of bitmaps for the current handle. high bits for large bitmaps @@ -169,13 +169,13 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(bitmaplayout_obj, 4, 4, _bitmaplayout //| :param int height: high part of drawn bitmap height, in pixels. Range 0-3""" //| ... -STATIC mp_obj_t _bitmapsizeh(mp_obj_t self, mp_obj_t a0, mp_obj_t a1) { +static mp_obj_t _bitmapsizeh(mp_obj_t self, mp_obj_t a0, mp_obj_t a1) { uint32_t width = mp_obj_get_int_truncated(a0); uint32_t height = mp_obj_get_int_truncated(a1); common_hal__eve_BitmapSizeH(EVEHAL(self), width, height); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(bitmapsizeh_obj, _bitmapsizeh); +static MP_DEFINE_CONST_FUN_OBJ_3(bitmapsizeh_obj, _bitmapsizeh); //| def BitmapSize(self, filter: int, wrapx: int, wrapy: int, width: int, height: int) -> None: //| """Set the screen drawing of bitmaps for the current handle @@ -187,7 +187,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_3(bitmapsizeh_obj, _bitmapsizeh); //| :param int height: drawn bitmap height, in pixels. Range 0-511""" //| ... -STATIC mp_obj_t _bitmapsize(size_t n_args, const mp_obj_t *args) { +static mp_obj_t _bitmapsize(size_t n_args, const mp_obj_t *args) { uint32_t filter = mp_obj_get_int_truncated(args[1]); uint32_t wrapx = mp_obj_get_int_truncated(args[2]); uint32_t wrapy = mp_obj_get_int_truncated(args[3]); @@ -196,7 +196,7 @@ STATIC mp_obj_t _bitmapsize(size_t n_args, const mp_obj_t *args) { common_hal__eve_BitmapSize(EVEHAL(args[0]), filter, wrapx, wrapy, width, height); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(bitmapsize_obj, 6, 6, _bitmapsize); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(bitmapsize_obj, 6, 6, _bitmapsize); //| def BitmapSource(self, addr: int) -> None: //| """Set the source address for bitmap graphics @@ -205,12 +205,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(bitmapsize_obj, 6, 6, _bitmapsize); //| """ //| ... -STATIC mp_obj_t _bitmapsource(mp_obj_t self, mp_obj_t a0) { +static mp_obj_t _bitmapsource(mp_obj_t self, mp_obj_t a0) { uint32_t addr = mp_obj_get_int_truncated(a0); common_hal__eve_BitmapSource(EVEHAL(self), addr); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(bitmapsource_obj, _bitmapsource); +static MP_DEFINE_CONST_FUN_OBJ_2(bitmapsource_obj, _bitmapsource); //| def BitmapSwizzle(self, r: int, g: int, b: int, a: int) -> None: //| """Set the source for the r,g,b and a channels of a bitmap @@ -221,7 +221,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(bitmapsource_obj, _bitmapsource); //| :param int a: alpha component source channel. Range 0-7""" //| ... -STATIC mp_obj_t _bitmapswizzle(size_t n_args, const mp_obj_t *args) { +static mp_obj_t _bitmapswizzle(size_t n_args, const mp_obj_t *args) { uint32_t r = mp_obj_get_int_truncated(args[1]); uint32_t g = mp_obj_get_int_truncated(args[2]); uint32_t b = mp_obj_get_int_truncated(args[3]); @@ -229,7 +229,7 @@ STATIC mp_obj_t _bitmapswizzle(size_t n_args, const mp_obj_t *args) { common_hal__eve_BitmapSwizzle(EVEHAL(args[0]), r, g, b, a); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(bitmapswizzle_obj, 5, 5, _bitmapswizzle); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(bitmapswizzle_obj, 5, 5, _bitmapswizzle); //| def BitmapTransformA(self, p: int, v: int) -> None: //| """Set the :math:`a` component of the bitmap transform matrix @@ -243,13 +243,13 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(bitmapswizzle_obj, 5, 5, _bitmapswizz //| """ //| ... -STATIC mp_obj_t _bitmaptransforma(mp_obj_t self, mp_obj_t a0, mp_obj_t a1) { +static mp_obj_t _bitmaptransforma(mp_obj_t self, mp_obj_t a0, mp_obj_t a1) { uint32_t p = mp_obj_get_int_truncated(a0); uint32_t v = mp_obj_get_int_truncated(a1); common_hal__eve_BitmapTransformA(EVEHAL(self), p, v); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(bitmaptransforma_obj, _bitmaptransforma); +static MP_DEFINE_CONST_FUN_OBJ_3(bitmaptransforma_obj, _bitmaptransforma); //| def BitmapTransformB(self, p: int, v: int) -> None: //| """Set the :math:`b` component of the bitmap transform matrix @@ -263,13 +263,13 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_3(bitmaptransforma_obj, _bitmaptransforma); //| """ //| ... -STATIC mp_obj_t _bitmaptransformb(mp_obj_t self, mp_obj_t a0, mp_obj_t a1) { +static mp_obj_t _bitmaptransformb(mp_obj_t self, mp_obj_t a0, mp_obj_t a1) { uint32_t p = mp_obj_get_int_truncated(a0); uint32_t v = mp_obj_get_int_truncated(a1); common_hal__eve_BitmapTransformB(EVEHAL(self), p, v); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(bitmaptransformb_obj, _bitmaptransformb); +static MP_DEFINE_CONST_FUN_OBJ_3(bitmaptransformb_obj, _bitmaptransformb); //| def BitmapTransformC(self, v: int) -> None: //| """Set the :math:`c` component of the bitmap transform matrix @@ -280,12 +280,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_3(bitmaptransformb_obj, _bitmaptransformb); //| """ //| ... -STATIC mp_obj_t _bitmaptransformc(mp_obj_t self, mp_obj_t a0) { +static mp_obj_t _bitmaptransformc(mp_obj_t self, mp_obj_t a0) { uint32_t v = mp_obj_get_int_truncated(a0); common_hal__eve_BitmapTransformC(EVEHAL(self), v); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(bitmaptransformc_obj, _bitmaptransformc); +static MP_DEFINE_CONST_FUN_OBJ_2(bitmaptransformc_obj, _bitmaptransformc); //| def BitmapTransformD(self, p: int, v: int) -> None: //| """Set the :math:`d` component of the bitmap transform matrix @@ -299,13 +299,13 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(bitmaptransformc_obj, _bitmaptransformc); //| """ //| ... -STATIC mp_obj_t _bitmaptransformd(mp_obj_t self, mp_obj_t a0, mp_obj_t a1) { +static mp_obj_t _bitmaptransformd(mp_obj_t self, mp_obj_t a0, mp_obj_t a1) { uint32_t p = mp_obj_get_int_truncated(a0); uint32_t v = mp_obj_get_int_truncated(a1); common_hal__eve_BitmapTransformD(EVEHAL(self), p, v); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(bitmaptransformd_obj, _bitmaptransformd); +static MP_DEFINE_CONST_FUN_OBJ_3(bitmaptransformd_obj, _bitmaptransformd); //| def BitmapTransformE(self, p: int, v: int) -> None: //| """Set the :math:`e` component of the bitmap transform matrix @@ -319,13 +319,13 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_3(bitmaptransformd_obj, _bitmaptransformd); //| """ //| ... -STATIC mp_obj_t _bitmaptransforme(mp_obj_t self, mp_obj_t a0, mp_obj_t a1) { +static mp_obj_t _bitmaptransforme(mp_obj_t self, mp_obj_t a0, mp_obj_t a1) { uint32_t p = mp_obj_get_int_truncated(a0); uint32_t v = mp_obj_get_int_truncated(a1); common_hal__eve_BitmapTransformE(EVEHAL(self), p, v); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(bitmaptransforme_obj, _bitmaptransforme); +static MP_DEFINE_CONST_FUN_OBJ_3(bitmaptransforme_obj, _bitmaptransforme); //| def BitmapTransformF(self, v: int) -> None: //| """Set the :math:`f` component of the bitmap transform matrix @@ -336,12 +336,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_3(bitmaptransforme_obj, _bitmaptransforme); //| """ //| ... -STATIC mp_obj_t _bitmaptransformf(mp_obj_t self, mp_obj_t a0) { +static mp_obj_t _bitmaptransformf(mp_obj_t self, mp_obj_t a0) { uint32_t v = mp_obj_get_int_truncated(a0); common_hal__eve_BitmapTransformF(EVEHAL(self), v); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(bitmaptransformf_obj, _bitmaptransformf); +static MP_DEFINE_CONST_FUN_OBJ_2(bitmaptransformf_obj, _bitmaptransformf); //| def BlendFunc(self, src: int, dst: int) -> None: //| """Set pixel arithmetic @@ -353,13 +353,13 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(bitmaptransformf_obj, _bitmaptransformf); //| """ //| ... -STATIC mp_obj_t _blendfunc(mp_obj_t self, mp_obj_t a0, mp_obj_t a1) { +static mp_obj_t _blendfunc(mp_obj_t self, mp_obj_t a0, mp_obj_t a1) { uint32_t src = mp_obj_get_int_truncated(a0); uint32_t dst = mp_obj_get_int_truncated(a1); common_hal__eve_BlendFunc(EVEHAL(self), src, dst); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(blendfunc_obj, _blendfunc); +static MP_DEFINE_CONST_FUN_OBJ_3(blendfunc_obj, _blendfunc); //| def Call(self, dest: int) -> None: //| """Execute a sequence of commands at another location in the display list @@ -367,12 +367,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_3(blendfunc_obj, _blendfunc); //| :param int dest: display list address. Range 0-65535""" //| ... -STATIC mp_obj_t _call(mp_obj_t self, mp_obj_t a0) { +static mp_obj_t _call(mp_obj_t self, mp_obj_t a0) { uint32_t dest = mp_obj_get_int_truncated(a0); common_hal__eve_Call(EVEHAL(self), dest); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(call_obj, _call); +static MP_DEFINE_CONST_FUN_OBJ_2(call_obj, _call); //| def Cell(self, cell: int) -> None: //| """Set the bitmap cell number for the vertex2f command @@ -383,12 +383,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(call_obj, _call); //| """ //| ... -STATIC mp_obj_t _cell(mp_obj_t self, mp_obj_t a0) { +static mp_obj_t _cell(mp_obj_t self, mp_obj_t a0) { uint32_t cell = mp_obj_get_int_truncated(a0); common_hal__eve_Cell(EVEHAL(self), cell); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(cell_obj, _cell); +static MP_DEFINE_CONST_FUN_OBJ_2(cell_obj, _cell); //| def ClearColorA(self, alpha: int) -> None: //| """Set clear value for the alpha channel @@ -399,12 +399,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(cell_obj, _cell); //| """ //| ... -STATIC mp_obj_t _clearcolora(mp_obj_t self, mp_obj_t a0) { +static mp_obj_t _clearcolora(mp_obj_t self, mp_obj_t a0) { uint32_t alpha = mp_obj_get_int_truncated(a0); common_hal__eve_ClearColorA(EVEHAL(self), alpha); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(clearcolora_obj, _clearcolora); +static MP_DEFINE_CONST_FUN_OBJ_2(clearcolora_obj, _clearcolora); //| def ClearColorRGB(self, red: int, green: int, blue: int) -> None: //| """Set clear values for red, green and blue channels @@ -417,14 +417,14 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(clearcolora_obj, _clearcolora); //| """ //| ... -STATIC mp_obj_t _clearcolorrgb(size_t n_args, const mp_obj_t *args) { +static mp_obj_t _clearcolorrgb(size_t n_args, const mp_obj_t *args) { uint32_t red = mp_obj_get_int_truncated(args[1]); uint32_t green = mp_obj_get_int_truncated(args[2]); uint32_t blue = mp_obj_get_int_truncated(args[3]); common_hal__eve_ClearColorRGB(EVEHAL(args[0]), red, green, blue); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(clearcolorrgb_obj, 4, 4, _clearcolorrgb); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(clearcolorrgb_obj, 4, 4, _clearcolorrgb); //| def Clear(self, c: int, s: int, t: int) -> None: //| """Clear buffers to preset values @@ -434,14 +434,14 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(clearcolorrgb_obj, 4, 4, _clearcolorr //| :param int t: clear tag buffer. Range 0-1""" //| ... -STATIC mp_obj_t _clear(size_t n_args, const mp_obj_t *args) { +static mp_obj_t _clear(size_t n_args, const mp_obj_t *args) { uint32_t c = (n_args > 1) ? mp_obj_get_int_truncated(args[1]) : 1; uint32_t s = (n_args > 2) ? mp_obj_get_int_truncated(args[2]) : 1; uint32_t t = (n_args > 3) ? mp_obj_get_int_truncated(args[3]) : 1; common_hal__eve_Clear(EVEHAL(args[0]), c, s, t); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(clear_obj, 1, 4, _clear); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(clear_obj, 1, 4, _clear); //| def ClearStencil(self, s: int) -> None: //| """Set clear value for the stencil buffer @@ -452,12 +452,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(clear_obj, 1, 4, _clear); //| """ //| ... -STATIC mp_obj_t _clearstencil(mp_obj_t self, mp_obj_t a0) { +static mp_obj_t _clearstencil(mp_obj_t self, mp_obj_t a0) { uint32_t s = mp_obj_get_int_truncated(a0); common_hal__eve_ClearStencil(EVEHAL(self), s); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(clearstencil_obj, _clearstencil); +static MP_DEFINE_CONST_FUN_OBJ_2(clearstencil_obj, _clearstencil); //| def ClearTag(self, s: int) -> None: //| """Set clear value for the tag buffer @@ -467,12 +467,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(clearstencil_obj, _clearstencil); //| This value is part of the graphics context and is saved and restored by :meth:`SaveContext` and :meth:`RestoreContext`. //| """ -STATIC mp_obj_t _cleartag(mp_obj_t self, mp_obj_t a0) { +static mp_obj_t _cleartag(mp_obj_t self, mp_obj_t a0) { uint32_t s = mp_obj_get_int_truncated(a0); common_hal__eve_ClearTag(EVEHAL(self), s); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(cleartag_obj, _cleartag); +static MP_DEFINE_CONST_FUN_OBJ_2(cleartag_obj, _cleartag); //| def ColorA(self, alpha: int) -> None: //| """Set the current color alpha @@ -483,12 +483,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(cleartag_obj, _cleartag); //| """ //| ... -STATIC mp_obj_t _colora(mp_obj_t self, mp_obj_t a0) { +static mp_obj_t _colora(mp_obj_t self, mp_obj_t a0) { uint32_t alpha = mp_obj_get_int_truncated(a0); common_hal__eve_ColorA(EVEHAL(self), alpha); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(colora_obj, _colora); +static MP_DEFINE_CONST_FUN_OBJ_2(colora_obj, _colora); //| def ColorMask(self, r: int, g: int, b: int, a: int) -> None: //| """Enable and disable writing of frame buffer color components @@ -502,7 +502,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(colora_obj, _colora); //| """ //| ... -STATIC mp_obj_t _colormask(size_t n_args, const mp_obj_t *args) { +static mp_obj_t _colormask(size_t n_args, const mp_obj_t *args) { uint32_t r = mp_obj_get_int_truncated(args[1]); uint32_t g = mp_obj_get_int_truncated(args[2]); uint32_t b = mp_obj_get_int_truncated(args[3]); @@ -510,7 +510,7 @@ STATIC mp_obj_t _colormask(size_t n_args, const mp_obj_t *args) { common_hal__eve_ColorMask(EVEHAL(args[0]), r, g, b, a); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(colormask_obj, 5, 5, _colormask); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(colormask_obj, 5, 5, _colormask); //| def ColorRGB(self, red: int, green: int, blue: int) -> None: //| """Set the drawing color @@ -523,25 +523,25 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(colormask_obj, 5, 5, _colormask); //| """ //| ... -STATIC mp_obj_t _colorrgb(size_t n_args, const mp_obj_t *args) { +static mp_obj_t _colorrgb(size_t n_args, const mp_obj_t *args) { uint32_t red = mp_obj_get_int_truncated(args[1]); uint32_t green = mp_obj_get_int_truncated(args[2]); uint32_t blue = mp_obj_get_int_truncated(args[3]); common_hal__eve_ColorRGB(EVEHAL(args[0]), red, green, blue); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(colorrgb_obj, 4, 4, _colorrgb); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(colorrgb_obj, 4, 4, _colorrgb); //| def Display(self) -> None: //| """End the display list""" //| ... -STATIC mp_obj_t _display(mp_obj_t self) { +static mp_obj_t _display(mp_obj_t self) { common_hal__eve_Display(EVEHAL(self)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(display_obj, _display); +static MP_DEFINE_CONST_FUN_OBJ_1(display_obj, _display); //| def End(self) -> None: //| """End drawing a graphics primitive @@ -550,12 +550,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(display_obj, _display); //| """ //| ... -STATIC mp_obj_t _end(mp_obj_t self) { +static mp_obj_t _end(mp_obj_t self) { common_hal__eve_End(EVEHAL(self)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(end_obj, _end); +static MP_DEFINE_CONST_FUN_OBJ_1(end_obj, _end); //| def Jump(self, dest: int) -> None: //| """Execute commands at another location in the display list @@ -563,12 +563,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(end_obj, _end); //| :param int dest: display list address. Range 0-65535""" //| ... -STATIC mp_obj_t _jump(mp_obj_t self, mp_obj_t a0) { +static mp_obj_t _jump(mp_obj_t self, mp_obj_t a0) { uint32_t dest = mp_obj_get_int_truncated(a0); common_hal__eve_Jump(EVEHAL(self), dest); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(jump_obj, _jump); +static MP_DEFINE_CONST_FUN_OBJ_2(jump_obj, _jump); //| def Macro(self, m: int) -> None: //| """Execute a single command from a macro register @@ -576,23 +576,23 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(jump_obj, _jump); //| :param int m: macro register to read. Range 0-1""" //| ... -STATIC mp_obj_t _macro(mp_obj_t self, mp_obj_t a0) { +static mp_obj_t _macro(mp_obj_t self, mp_obj_t a0) { uint32_t m = mp_obj_get_int_truncated(a0); common_hal__eve_Macro(EVEHAL(self), m); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(macro_obj, _macro); +static MP_DEFINE_CONST_FUN_OBJ_2(macro_obj, _macro); //| def Nop(self) -> None: //| """No operation""" //| ... -STATIC mp_obj_t _nop(mp_obj_t self) { +static mp_obj_t _nop(mp_obj_t self) { common_hal__eve_Nop(EVEHAL(self)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(nop_obj, _nop); +static MP_DEFINE_CONST_FUN_OBJ_1(nop_obj, _nop); //| def PaletteSource(self, addr: int) -> None: //| """Set the base address of the palette @@ -603,45 +603,45 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(nop_obj, _nop); //| """ //| ... -STATIC mp_obj_t _palettesource(mp_obj_t self, mp_obj_t a0) { +static mp_obj_t _palettesource(mp_obj_t self, mp_obj_t a0) { uint32_t addr = mp_obj_get_int_truncated(a0); common_hal__eve_PaletteSource(EVEHAL(self), addr); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(palettesource_obj, _palettesource); +static MP_DEFINE_CONST_FUN_OBJ_2(palettesource_obj, _palettesource); //| def RestoreContext(self) -> None: //| """Restore the current graphics context from the context stack""" //| ... -STATIC mp_obj_t _restorecontext(mp_obj_t self) { +static mp_obj_t _restorecontext(mp_obj_t self) { common_hal__eve_RestoreContext(EVEHAL(self)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(restorecontext_obj, _restorecontext); +static MP_DEFINE_CONST_FUN_OBJ_1(restorecontext_obj, _restorecontext); //| def Return(self) -> None: //| """Return from a previous call command""" //| ... -STATIC mp_obj_t _return(mp_obj_t self) { +static mp_obj_t _return(mp_obj_t self) { common_hal__eve_Return(EVEHAL(self)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(return_obj, _return); +static MP_DEFINE_CONST_FUN_OBJ_1(return_obj, _return); //| def SaveContext(self) -> None: //| """Push the current graphics context on the context stack""" //| ... -STATIC mp_obj_t _savecontext(mp_obj_t self) { +static mp_obj_t _savecontext(mp_obj_t self) { common_hal__eve_SaveContext(EVEHAL(self)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(savecontext_obj, _savecontext); +static MP_DEFINE_CONST_FUN_OBJ_1(savecontext_obj, _savecontext); //| def ScissorSize(self, width: int, height: int) -> None: //| """Set the size of the scissor clip rectangle @@ -653,13 +653,13 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(savecontext_obj, _savecontext); //| """ //| ... -STATIC mp_obj_t _scissorsize(mp_obj_t self, mp_obj_t a0, mp_obj_t a1) { +static mp_obj_t _scissorsize(mp_obj_t self, mp_obj_t a0, mp_obj_t a1) { uint32_t width = mp_obj_get_int_truncated(a0); uint32_t height = mp_obj_get_int_truncated(a1); common_hal__eve_ScissorSize(EVEHAL(self), width, height); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(scissorsize_obj, _scissorsize); +static MP_DEFINE_CONST_FUN_OBJ_3(scissorsize_obj, _scissorsize); //| def ScissorXY(self, x: int, y: int) -> None: //| """Set the top left corner of the scissor clip rectangle @@ -671,13 +671,13 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_3(scissorsize_obj, _scissorsize); //| """ //| ... -STATIC mp_obj_t _scissorxy(mp_obj_t self, mp_obj_t a0, mp_obj_t a1) { +static mp_obj_t _scissorxy(mp_obj_t self, mp_obj_t a0, mp_obj_t a1) { uint32_t x = mp_obj_get_int_truncated(a0); uint32_t y = mp_obj_get_int_truncated(a1); common_hal__eve_ScissorXY(EVEHAL(self), x, y); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(scissorxy_obj, _scissorxy); +static MP_DEFINE_CONST_FUN_OBJ_3(scissorxy_obj, _scissorxy); //| def StencilFunc(self, func: int, ref: int, mask: int) -> None: //| """Set function and reference value for stencil testing @@ -690,14 +690,14 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_3(scissorxy_obj, _scissorxy); //| """ //| ... -STATIC mp_obj_t _stencilfunc(size_t n_args, const mp_obj_t *args) { +static mp_obj_t _stencilfunc(size_t n_args, const mp_obj_t *args) { uint32_t func = mp_obj_get_int_truncated(args[1]); uint32_t ref = mp_obj_get_int_truncated(args[2]); uint32_t mask = mp_obj_get_int_truncated(args[3]); common_hal__eve_StencilFunc(EVEHAL(args[0]), func, ref, mask); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(stencilfunc_obj, 4, 4, _stencilfunc); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(stencilfunc_obj, 4, 4, _stencilfunc); //| def StencilMask(self, mask: int) -> None: //| """Control the writing of individual bits in the stencil planes @@ -708,12 +708,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(stencilfunc_obj, 4, 4, _stencilfunc); //| """ //| ... -STATIC mp_obj_t _stencilmask(mp_obj_t self, mp_obj_t a0) { +static mp_obj_t _stencilmask(mp_obj_t self, mp_obj_t a0) { uint32_t mask = mp_obj_get_int_truncated(a0); common_hal__eve_StencilMask(EVEHAL(self), mask); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(stencilmask_obj, _stencilmask); +static MP_DEFINE_CONST_FUN_OBJ_2(stencilmask_obj, _stencilmask); //| def StencilOp(self, sfail: int, spass: int) -> None: //| """Set stencil test actions @@ -725,13 +725,13 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(stencilmask_obj, _stencilmask); //| """ //| ... -STATIC mp_obj_t _stencilop(mp_obj_t self, mp_obj_t a0, mp_obj_t a1) { +static mp_obj_t _stencilop(mp_obj_t self, mp_obj_t a0, mp_obj_t a1) { uint32_t sfail = mp_obj_get_int_truncated(a0); uint32_t spass = mp_obj_get_int_truncated(a1); common_hal__eve_StencilOp(EVEHAL(self), sfail, spass); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(stencilop_obj, _stencilop); +static MP_DEFINE_CONST_FUN_OBJ_3(stencilop_obj, _stencilop); //| def TagMask(self, mask: int) -> None: //| """Control the writing of the tag buffer @@ -742,12 +742,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_3(stencilop_obj, _stencilop); //| """ //| ... -STATIC mp_obj_t _tagmask(mp_obj_t self, mp_obj_t a0) { +static mp_obj_t _tagmask(mp_obj_t self, mp_obj_t a0) { uint32_t mask = mp_obj_get_int_truncated(a0); common_hal__eve_TagMask(EVEHAL(self), mask); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(tagmask_obj, _tagmask); +static MP_DEFINE_CONST_FUN_OBJ_2(tagmask_obj, _tagmask); //| def Tag(self, s: int) -> None: //| """Set the current tag value @@ -758,19 +758,19 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(tagmask_obj, _tagmask); //| """ //| ... -STATIC mp_obj_t _tag(mp_obj_t self, mp_obj_t a0) { +static mp_obj_t _tag(mp_obj_t self, mp_obj_t a0) { uint32_t s = mp_obj_get_int_truncated(a0); common_hal__eve_Tag(EVEHAL(self), s); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(tag_obj, _tag); +static MP_DEFINE_CONST_FUN_OBJ_2(tag_obj, _tag); -STATIC mp_obj_t _vertexformat(mp_obj_t self, mp_obj_t a0) { +static mp_obj_t _vertexformat(mp_obj_t self, mp_obj_t a0) { uint32_t frac = mp_obj_get_int_truncated(a0); common_hal__eve_VertexFormat(EVEHAL(self), frac); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(vertexformat_obj, _vertexformat); +static MP_DEFINE_CONST_FUN_OBJ_2(vertexformat_obj, _vertexformat); //| def Vertex2ii(self, x: int, y: int, handle: int, cell: int) -> None: //| """:param int x: x-coordinate in pixels. Range 0-511 @@ -781,7 +781,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(vertexformat_obj, _vertexformat); //| This method is an alternative to :meth:`Vertex2f`.""" //| ... -STATIC mp_obj_t _vertex2ii(size_t n_args, const mp_obj_t *args) { +static mp_obj_t _vertex2ii(size_t n_args, const mp_obj_t *args) { uint32_t x = mp_obj_get_int_truncated(args[1]); uint32_t y = mp_obj_get_int_truncated(args[2]); uint32_t handle = (n_args > 3) ? mp_obj_get_int_truncated(args[3]) : 0; @@ -789,7 +789,7 @@ STATIC mp_obj_t _vertex2ii(size_t n_args, const mp_obj_t *args) { common_hal__eve_Vertex2ii(EVEHAL(args[0]), x, y, handle, cell); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(vertex2ii_obj, 3, 5, _vertex2ii); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(vertex2ii_obj, 3, 5, _vertex2ii); #define ROM_DECLS \ { MP_ROM_QSTR(MP_QSTR_AlphaFunc), MP_ROM_PTR(&alphafunc_obj) }, \ @@ -852,13 +852,13 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(vertex2ii_obj, 3, 5, _vertex2ii); //| :param float x: pixel x-coordinate //| :param float y: pixel y-coordinate""" //| ... -STATIC mp_obj_t _vertex2f(mp_obj_t self, mp_obj_t a0, mp_obj_t a1) { +static mp_obj_t _vertex2f(mp_obj_t self, mp_obj_t a0, mp_obj_t a1) { mp_float_t x = mp_obj_get_float(a0); mp_float_t y = mp_obj_get_float(a1); common_hal__eve_Vertex2f(EVEHAL(self), x, y); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(vertex2f_obj, _vertex2f); +static MP_DEFINE_CONST_FUN_OBJ_3(vertex2f_obj, _vertex2f); //| def LineWidth(self, width: float) -> None: //| """Set the width of rasterized lines @@ -869,12 +869,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_3(vertex2f_obj, _vertex2f); //| """ //| ... -STATIC mp_obj_t _linewidth(mp_obj_t self, mp_obj_t a0) { +static mp_obj_t _linewidth(mp_obj_t self, mp_obj_t a0) { mp_float_t width = mp_obj_get_float(a0); common_hal__eve_LineWidth(EVEHAL(self), width); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(linewidth_obj, _linewidth); +static MP_DEFINE_CONST_FUN_OBJ_2(linewidth_obj, _linewidth); //| def PointSize(self, size: float) -> None: //| """Set the diameter of rasterized points @@ -885,12 +885,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(linewidth_obj, _linewidth); //| """ //| ... -STATIC mp_obj_t _pointsize(mp_obj_t self, mp_obj_t a0) { +static mp_obj_t _pointsize(mp_obj_t self, mp_obj_t a0) { mp_float_t size = mp_obj_get_float(a0); common_hal__eve_PointSize(EVEHAL(self), size); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(pointsize_obj, _pointsize); +static MP_DEFINE_CONST_FUN_OBJ_2(pointsize_obj, _pointsize); //| def VertexTranslateX(self, x: float) -> None: //| """Set the vertex transformation's x translation component @@ -901,12 +901,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(pointsize_obj, _pointsize); //| """ //| ... -STATIC mp_obj_t _vertextranslatex(mp_obj_t self, mp_obj_t a0) { +static mp_obj_t _vertextranslatex(mp_obj_t self, mp_obj_t a0) { mp_float_t x = mp_obj_get_float(a0); common_hal__eve_VertexTranslateX(EVEHAL(self), x); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(vertextranslatex_obj, _vertextranslatex); +static MP_DEFINE_CONST_FUN_OBJ_2(vertextranslatex_obj, _vertextranslatex); //| def VertexTranslateY(self, y: float) -> None: //| """Set the vertex transformation's y translation component @@ -918,12 +918,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(vertextranslatex_obj, _vertextranslatex); //| ... -STATIC mp_obj_t _vertextranslatey(mp_obj_t self, mp_obj_t a0) { +static mp_obj_t _vertextranslatey(mp_obj_t self, mp_obj_t a0) { mp_float_t y = mp_obj_get_float(a0); common_hal__eve_VertexTranslateY(EVEHAL(self), y); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(vertextranslatey_obj, _vertextranslatey); +static MP_DEFINE_CONST_FUN_OBJ_2(vertextranslatey_obj, _vertextranslatey); //| def VertexFormat(self, frac: int) -> None: //| """Set the precision of vertex2f coordinates @@ -949,12 +949,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(vertextranslatey_obj, _vertextranslatey); //| commands to the FIFO.""" //| ... -STATIC mp_obj_t _cmd0(mp_obj_t self, mp_obj_t n) { +static mp_obj_t _cmd0(mp_obj_t self, mp_obj_t n) { uint32_t code = 0xffffff00 | mp_obj_get_int_truncated(n); ADD_X(self, code); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(cmd0_obj, _cmd0); +static MP_DEFINE_CONST_FUN_OBJ_2(cmd0_obj, _cmd0); //| def cmd(self, n: int, fmt: str, args: Tuple[str, ...]) -> None: //| """Append a command packet to the FIFO. @@ -970,7 +970,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(cmd0_obj, _cmd0); //| commands to the FIFO.""" //| ... //| -STATIC mp_obj_t _cmd(size_t n_args, const mp_obj_t *args) { +static mp_obj_t _cmd(size_t n_args, const mp_obj_t *args) { mp_obj_t self = args[0]; mp_obj_t num = args[1]; mp_buffer_info_t fmt; @@ -1023,9 +1023,9 @@ STATIC mp_obj_t _cmd(size_t n_args, const mp_obj_t *args) { common_hal__eve_add(EVEHAL(self), sizeof(uint32_t) * (1 + n), buf); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(cmd_obj, 4, 4, _cmd); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(cmd_obj, 4, 4, _cmd); -STATIC const mp_rom_map_elem_t _EVE_locals_dict_table[] = { +static const mp_rom_map_elem_t _EVE_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_register), MP_ROM_PTR(®ister_obj) }, { MP_ROM_QSTR(MP_QSTR_cc), MP_ROM_PTR(&cc_obj) }, { MP_ROM_QSTR(MP_QSTR_flush), MP_ROM_PTR(&flush_obj) }, @@ -1034,9 +1034,9 @@ STATIC const mp_rom_map_elem_t _EVE_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_cmd0), MP_ROM_PTR(&cmd0_obj) }, ROM_DECLS }; -STATIC MP_DEFINE_CONST_DICT(_EVE_locals_dict, _EVE_locals_dict_table); +static MP_DEFINE_CONST_DICT(_EVE_locals_dict, _EVE_locals_dict_table); -STATIC mp_obj_t _EVE_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { +static mp_obj_t _EVE_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { // mp_arg_check_num(n_args, kw_args, 1, 1, false); mp_obj__EVE_t *o = mp_obj_malloc(mp_obj__EVE_t, &_EVE_type); o->_eve.n = 0; @@ -1044,7 +1044,7 @@ STATIC mp_obj_t _EVE_make_new(const mp_obj_type_t *type, size_t n_args, size_t n return MP_OBJ_FROM_PTR(o); } -STATIC MP_DEFINE_CONST_OBJ_TYPE( +static MP_DEFINE_CONST_OBJ_TYPE( _EVE_type, MP_QSTR__EVE, MP_TYPE_FLAG_NONE, @@ -1052,12 +1052,12 @@ STATIC MP_DEFINE_CONST_OBJ_TYPE( locals_dict, &_EVE_locals_dict ); -STATIC const mp_rom_map_elem_t mp_module__eve_globals_table[] = { +static const mp_rom_map_elem_t mp_module__eve_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR__eve) }, { MP_ROM_QSTR(MP_QSTR__EVE), MP_OBJ_FROM_PTR(&_EVE_type) }, }; -STATIC MP_DEFINE_CONST_DICT(mp_module__eve_globals, mp_module__eve_globals_table); +static MP_DEFINE_CONST_DICT(mp_module__eve_globals, mp_module__eve_globals_table); const mp_obj_module_t _eve_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/_pew/PewPew.c b/shared-bindings/_pew/PewPew.c index fcaf1a526dba..af10b47ca677 100644 --- a/shared-bindings/_pew/PewPew.c +++ b/shared-bindings/_pew/PewPew.c @@ -41,7 +41,7 @@ //| buttons are connected to rows of the matrix).""" //| ... //| -STATIC mp_obj_t pewpew_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t pewpew_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_buffer, ARG_rows, ARG_cols, ARG_buttons }; static const mp_arg_t allowed_args[] = { { MP_QSTR_buffer, MP_ARG_OBJ | MP_ARG_REQUIRED }, @@ -106,9 +106,9 @@ STATIC mp_obj_t pewpew_make_new(const mp_obj_type_t *type, size_t n_args, size_t } -STATIC const mp_rom_map_elem_t pewpew_locals_dict_table[] = { +static const mp_rom_map_elem_t pewpew_locals_dict_table[] = { }; -STATIC MP_DEFINE_CONST_DICT(pewpew_locals_dict, pewpew_locals_dict_table); +static MP_DEFINE_CONST_DICT(pewpew_locals_dict, pewpew_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( pewpew_type, diff --git a/shared-bindings/_pew/__init__.c b/shared-bindings/_pew/__init__.c index 8003a8409e45..002255f1154b 100644 --- a/shared-bindings/_pew/__init__.c +++ b/shared-bindings/_pew/__init__.c @@ -10,7 +10,7 @@ #include "common-hal/_pew/PewPew.h" -STATIC mp_obj_t get_pressed(void) { +static mp_obj_t get_pressed(void) { pew_obj_t *pew = MP_STATE_VM(pew_singleton); if (!pew) { return mp_const_none; @@ -19,23 +19,23 @@ STATIC mp_obj_t get_pressed(void) { pew->pressed = 0; return mp_obj_new_int(pressed); } -STATIC MP_DEFINE_CONST_FUN_OBJ_0(get_pressed_obj, get_pressed); +static MP_DEFINE_CONST_FUN_OBJ_0(get_pressed_obj, get_pressed); -STATIC mp_obj_t get_ticks(void) { +static mp_obj_t get_ticks(void) { return mp_obj_new_int(pew_get_ticks()); } -STATIC MP_DEFINE_CONST_FUN_OBJ_0(get_ticks_obj, get_ticks); +static MP_DEFINE_CONST_FUN_OBJ_0(get_ticks_obj, get_ticks); //| """LED matrix driver""" -STATIC const mp_rom_map_elem_t pew_module_globals_table[] = { +static const mp_rom_map_elem_t pew_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR__pew) }, { MP_OBJ_NEW_QSTR(MP_QSTR_PewPew), MP_ROM_PTR(&pewpew_type)}, { MP_OBJ_NEW_QSTR(MP_QSTR_get_pressed), MP_ROM_PTR(&get_pressed_obj)}, { MP_OBJ_NEW_QSTR(MP_QSTR_get_ticks), MP_ROM_PTR(&get_ticks_obj)}, }; -STATIC MP_DEFINE_CONST_DICT(pew_module_globals, +static MP_DEFINE_CONST_DICT(pew_module_globals, pew_module_globals_table); const mp_obj_module_t pew_module = { diff --git a/shared-bindings/_pixelmap/PixelMap.c b/shared-bindings/_pixelmap/PixelMap.c index 7ffa40e43bc4..6bddeaac9c3f 100644 --- a/shared-bindings/_pixelmap/PixelMap.c +++ b/shared-bindings/_pixelmap/PixelMap.c @@ -19,7 +19,7 @@ //| def __init__(self, pixelbuf: PixelBuf, indices: Tuple[Union[int, Tuple[int]]]) -> None: //| """Construct a PixelMap object that uses the given indices of the underlying pixelbuf""" -STATIC mp_obj_t pixelmap_pixelmap_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t pixelmap_pixelmap_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_pixelbuf, ARG_indices }; static const mp_arg_t allowed_args[] = { { MP_QSTR_pixelbuf, MP_ARG_REQUIRED }, @@ -75,13 +75,13 @@ STATIC mp_obj_t pixelmap_pixelmap_make_new(const mp_obj_type_t *type, size_t n_a //| auto_write: bool //| """True if updates should be automatically written""" -STATIC mp_obj_t pixelmap_pixelmap_auto_write_get(const mp_obj_t self_in) { +static mp_obj_t pixelmap_pixelmap_auto_write_get(const mp_obj_t self_in) { pixelmap_pixelmap_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bool(shared_module_pixelmap_pixelmap_auto_write_get(self)); } MP_DEFINE_CONST_FUN_OBJ_1(pixelmap_pixelmap_auto_write_get_obj, pixelmap_pixelmap_auto_write_get); -STATIC mp_obj_t pixelmap_pixelmap_auto_write_set(const mp_obj_t self_in, const mp_obj_t arg) { +static mp_obj_t pixelmap_pixelmap_auto_write_set(const mp_obj_t self_in, const mp_obj_t arg) { pixelmap_pixelmap_obj_t *self = MP_OBJ_TO_PTR(self_in); shared_module_pixelmap_pixelmap_auto_write_set(self, mp_obj_is_true(arg)); return mp_const_none; @@ -94,7 +94,7 @@ MP_PROPERTY_GETSET(pixelmap_pixelmap_auto_write_obj, //| bpp: int //| """The number of bytes per pixel in the buffer (read-only)""" -STATIC mp_obj_t pixelmap_pixelmap_obj_get_bpp(mp_obj_t self_in) { +static mp_obj_t pixelmap_pixelmap_obj_get_bpp(mp_obj_t self_in) { pixelmap_pixelmap_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_adafruit_pixelbuf_pixelbuf_get_bpp(self->pixelbuf)); } @@ -105,7 +105,7 @@ MP_PROPERTY_GETTER(pixelmap_pixelmap_bpp_obj, //| byteorder: str //| """byteorder string for the buffer (read-only)""" -STATIC mp_obj_t pixelmap_pixelmap_obj_get_byteorder(mp_obj_t self_in) { +static mp_obj_t pixelmap_pixelmap_obj_get_byteorder(mp_obj_t self_in) { pixelmap_pixelmap_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_adafruit_pixelbuf_pixelbuf_get_byteorder_string(self->pixelbuf); } @@ -116,7 +116,7 @@ MP_PROPERTY_GETTER(pixelmap_pixelmap_byteorder_obj, //| //| def fill(self, color: PixelType) -> None: //| """Fill all the pixels in the map with the given color""" -STATIC mp_obj_t pixelmap_pixelmap_fill(const mp_obj_t self_in, const mp_obj_t color) { +static mp_obj_t pixelmap_pixelmap_fill(const mp_obj_t self_in, const mp_obj_t color) { pixelmap_pixelmap_obj_t *self = MP_OBJ_TO_PTR(self_in); shared_module_pixelmap_pixelmap_fill(self, color); @@ -127,7 +127,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(pixelmap_pixelmap_fill_obj, pixelmap_pixelmap_fill); //| //| def indices(self, index: int) -> Tuple[int]: //| """Return the PixelBuf indices for a PixelMap index""" -STATIC mp_obj_t pixelmap_pixelmap_indices(const mp_obj_t self_in, const mp_obj_t index) { +static mp_obj_t pixelmap_pixelmap_indices(const mp_obj_t self_in, const mp_obj_t index) { pixelmap_pixelmap_obj_t *self = MP_OBJ_TO_PTR(self_in); return shared_module_pixelmap_pixelmap_indices(self, mp_obj_get_int(index)); @@ -156,7 +156,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(pixelmap_pixelmap_indices_obj, pixelmap_pixelmap_indic //| For RGBW byteorders, if given only RGB values either as an int or as a tuple, the white value //| is used instead when the red, green, and blue values are the same.""" //| ... -STATIC mp_obj_t pixelmap_pixelmap_subscr(mp_obj_t self_in, mp_obj_t index_in, mp_obj_t value) { +static mp_obj_t pixelmap_pixelmap_subscr(mp_obj_t self_in, mp_obj_t index_in, mp_obj_t value) { pixelmap_pixelmap_obj_t *self = MP_OBJ_TO_PTR(self_in); if (value == MP_OBJ_NULL) { // delete @@ -200,7 +200,7 @@ STATIC mp_obj_t pixelmap_pixelmap_subscr(mp_obj_t self_in, mp_obj_t index_in, mp //| def __len__(self) -> int: //| """Length of the map""" -STATIC mp_obj_t pixelmap_pixelmap_unary_op(mp_unary_op_t op, mp_obj_t self_in) { +static mp_obj_t pixelmap_pixelmap_unary_op(mp_unary_op_t op, mp_obj_t self_in) { pixelmap_pixelmap_obj_t *self = MP_OBJ_TO_PTR(self_in); switch (op) { case MP_UNARY_OP_BOOL: @@ -218,14 +218,14 @@ STATIC mp_obj_t pixelmap_pixelmap_unary_op(mp_unary_op_t op, mp_obj_t self_in) { //| ... //| -STATIC mp_obj_t pixelmap_pixelmap_show(mp_obj_t self_in) { +static mp_obj_t pixelmap_pixelmap_show(mp_obj_t self_in) { pixelmap_pixelmap_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_adafruit_pixelbuf_pixelbuf_show(self->pixelbuf); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(pixelmap_pixelmap_show_obj, pixelmap_pixelmap_show); +static MP_DEFINE_CONST_FUN_OBJ_1(pixelmap_pixelmap_show_obj, pixelmap_pixelmap_show); -STATIC const mp_rom_map_elem_t pixelmap_pixelmap_locals_dict_table[] = { +static const mp_rom_map_elem_t pixelmap_pixelmap_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_auto_write), MP_ROM_PTR(&pixelmap_pixelmap_auto_write_obj) }, { MP_ROM_QSTR(MP_QSTR_bpp), MP_ROM_PTR(&pixelmap_pixelmap_bpp_obj) }, { MP_ROM_QSTR(MP_QSTR_byteorder), MP_ROM_PTR(&pixelmap_pixelmap_byteorder_obj) }, @@ -234,7 +234,7 @@ STATIC const mp_rom_map_elem_t pixelmap_pixelmap_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_show), MP_ROM_PTR(&pixelmap_pixelmap_show_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(pixelmap_pixelmap_locals_dict, pixelmap_pixelmap_locals_dict_table); +static MP_DEFINE_CONST_DICT(pixelmap_pixelmap_locals_dict, pixelmap_pixelmap_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( diff --git a/shared-bindings/_pixelmap/__init__.c b/shared-bindings/_pixelmap/__init__.c index 6ce5e60903f4..0f1a359fdc55 100644 --- a/shared-bindings/_pixelmap/__init__.c +++ b/shared-bindings/_pixelmap/__init__.c @@ -27,12 +27,12 @@ //| PixelType = Union[int, PixelReturnType] //| PixelSequence = Union[Tuple[PixelType], List[PixelType]] -STATIC const mp_rom_map_elem_t pixelmap_module_globals_table[] = { +static const mp_rom_map_elem_t pixelmap_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR__pixelmap) }, { MP_ROM_QSTR(MP_QSTR_PixelMap), MP_ROM_PTR(&pixelmap_pixelmap_type) }, }; -STATIC MP_DEFINE_CONST_DICT(pixelmap_module_globals, pixelmap_module_globals_table); +static MP_DEFINE_CONST_DICT(pixelmap_module_globals, pixelmap_module_globals_table); const mp_obj_module_t pixelmap_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/_stage/Layer.c b/shared-bindings/_stage/Layer.c index a2ac6a5c93dd..3958b4c7f1c1 100644 --- a/shared-bindings/_stage/Layer.c +++ b/shared-bindings/_stage/Layer.c @@ -33,7 +33,7 @@ //| This class is intended for internal use in the ``stage`` library and //| it shouldn't be used on its own.""" //| ... -STATIC mp_obj_t layer_make_new(const mp_obj_type_t *type, size_t n_args, +static mp_obj_t layer_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { mp_arg_check_num(n_args, n_kw, 4, 5, false); @@ -75,34 +75,34 @@ STATIC mp_obj_t layer_make_new(const mp_obj_type_t *type, size_t n_args, //| def move(self, x: int, y: int) -> None: //| """Set the offset of the layer to the specified values.""" //| ... -STATIC mp_obj_t layer_move(mp_obj_t self_in, mp_obj_t x_in, mp_obj_t y_in) { +static mp_obj_t layer_move(mp_obj_t self_in, mp_obj_t x_in, mp_obj_t y_in) { layer_obj_t *self = MP_OBJ_TO_PTR(self_in); self->x = mp_obj_get_int(x_in); self->y = mp_obj_get_int(y_in); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(layer_move_obj, layer_move); +static MP_DEFINE_CONST_FUN_OBJ_3(layer_move_obj, layer_move); //| def frame(self, frame: int, rotation: int) -> None: //| """Set the animation frame of the sprite, and optionally rotation its //| graphic.""" //| ... //| -STATIC mp_obj_t layer_frame(mp_obj_t self_in, mp_obj_t frame_in, +static mp_obj_t layer_frame(mp_obj_t self_in, mp_obj_t frame_in, mp_obj_t rotation_in) { layer_obj_t *self = MP_OBJ_TO_PTR(self_in); self->frame = mp_obj_get_int(frame_in); self->rotation = mp_obj_get_int(rotation_in); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(layer_frame_obj, layer_frame); +static MP_DEFINE_CONST_FUN_OBJ_3(layer_frame_obj, layer_frame); -STATIC const mp_rom_map_elem_t layer_locals_dict_table[] = { +static const mp_rom_map_elem_t layer_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_move), MP_ROM_PTR(&layer_move_obj) }, { MP_ROM_QSTR(MP_QSTR_frame), MP_ROM_PTR(&layer_frame_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(layer_locals_dict, layer_locals_dict_table); +static MP_DEFINE_CONST_DICT(layer_locals_dict, layer_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( mp_type_layer, diff --git a/shared-bindings/_stage/Text.c b/shared-bindings/_stage/Text.c index 2f24e951077b..53abf03b7736 100644 --- a/shared-bindings/_stage/Text.c +++ b/shared-bindings/_stage/Text.c @@ -33,7 +33,7 @@ //| This class is intended for internal use in the ``stage`` library and //| it shouldn't be used on its own.""" //| ... -STATIC mp_obj_t text_make_new(const mp_obj_type_t *type, size_t n_args, +static mp_obj_t text_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { mp_arg_check_num(n_args, n_kw, 5, 5, false); @@ -70,19 +70,19 @@ STATIC mp_obj_t text_make_new(const mp_obj_type_t *type, size_t n_args, //| """Set the offset of the text to the specified values.""" //| ... //| -STATIC mp_obj_t text_move(mp_obj_t self_in, mp_obj_t x_in, mp_obj_t y_in) { +static mp_obj_t text_move(mp_obj_t self_in, mp_obj_t x_in, mp_obj_t y_in) { text_obj_t *self = MP_OBJ_TO_PTR(self_in); self->x = mp_obj_get_int(x_in); self->y = mp_obj_get_int(y_in); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(text_move_obj, text_move); +static MP_DEFINE_CONST_FUN_OBJ_3(text_move_obj, text_move); -STATIC const mp_rom_map_elem_t text_locals_dict_table[] = { +static const mp_rom_map_elem_t text_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_move), MP_ROM_PTR(&text_move_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(text_locals_dict, text_locals_dict_table); +static MP_DEFINE_CONST_DICT(text_locals_dict, text_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( mp_type_text, diff --git a/shared-bindings/_stage/__init__.c b/shared-bindings/_stage/__init__.c index 0ab1b89b2ee2..06e103e2441b 100644 --- a/shared-bindings/_stage/__init__.c +++ b/shared-bindings/_stage/__init__.c @@ -50,7 +50,7 @@ //| This function is intended for internal use in the ``stage`` library //| and all the necessary checks are performed there.""" //| -STATIC mp_obj_t stage_render(size_t n_args, const mp_obj_t *args) { +static mp_obj_t stage_render(size_t n_args, const mp_obj_t *args) { uint16_t x0 = mp_obj_get_int(args[0]); uint16_t y0 = mp_obj_get_int(args[1]); uint16_t x1 = mp_obj_get_int(args[2]); @@ -84,14 +84,14 @@ STATIC mp_obj_t stage_render(size_t n_args, const mp_obj_t *args) { MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(stage_render_obj, 10, 10, stage_render); -STATIC const mp_rom_map_elem_t stage_module_globals_table[] = { +static const mp_rom_map_elem_t stage_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR__stage) }, { MP_ROM_QSTR(MP_QSTR_Layer), MP_ROM_PTR(&mp_type_layer) }, { MP_ROM_QSTR(MP_QSTR_Text), MP_ROM_PTR(&mp_type_text) }, { MP_ROM_QSTR(MP_QSTR_render), MP_ROM_PTR(&stage_render_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(stage_module_globals, stage_module_globals_table); +static MP_DEFINE_CONST_DICT(stage_module_globals, stage_module_globals_table); const mp_obj_module_t stage_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/adafruit_bus_device/__init__.c b/shared-bindings/adafruit_bus_device/__init__.c index f21f29901829..5be8883dda25 100644 --- a/shared-bindings/adafruit_bus_device/__init__.c +++ b/shared-bindings/adafruit_bus_device/__init__.c @@ -15,22 +15,22 @@ #include "shared-bindings/adafruit_bus_device/i2c_device/I2CDevice.h" #include "shared-bindings/adafruit_bus_device/spi_device/SPIDevice.h" -STATIC const mp_rom_map_elem_t adafruit_bus_device_i2c_device_globals_table[] = { +static const mp_rom_map_elem_t adafruit_bus_device_i2c_device_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_i2c_device) }, { MP_ROM_QSTR(MP_QSTR_I2CDevice), MP_ROM_PTR(&adafruit_bus_device_i2cdevice_type) }, }; -STATIC MP_DEFINE_CONST_DICT(adafruit_bus_device_i2c_device_globals, adafruit_bus_device_i2c_device_globals_table); +static MP_DEFINE_CONST_DICT(adafruit_bus_device_i2c_device_globals, adafruit_bus_device_i2c_device_globals_table); const mp_obj_module_t adafruit_bus_device_i2c_device_module = { .base = { &mp_type_module }, .globals = (mp_obj_dict_t *)&adafruit_bus_device_i2c_device_globals, }; -STATIC const mp_rom_map_elem_t adafruit_bus_device_spi_device_globals_table[] = { +static const mp_rom_map_elem_t adafruit_bus_device_spi_device_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_spi_device) }, { MP_ROM_QSTR(MP_QSTR_SPIDevice), MP_ROM_PTR(&adafruit_bus_device_spidevice_type) }, }; -STATIC MP_DEFINE_CONST_DICT(adafruit_bus_device_spi_device_globals, adafruit_bus_device_spi_device_globals_table); +static MP_DEFINE_CONST_DICT(adafruit_bus_device_spi_device_globals, adafruit_bus_device_spi_device_globals_table); const mp_obj_module_t adafruit_bus_device_spi_device_module = { .base = { &mp_type_module }, @@ -43,13 +43,13 @@ const mp_obj_module_t adafruit_bus_device_spi_device_module = { //| For example, they manage locking the bus to prevent other concurrent access. For SPI //| devices, it manages the chip select and protocol changes such as mode. For I2C, it //| manages the device address.""" -STATIC const mp_rom_map_elem_t adafruit_bus_device_module_globals_table[] = { +static const mp_rom_map_elem_t adafruit_bus_device_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_adafruit_bus_device) }, { MP_ROM_QSTR(MP_QSTR_i2c_device), MP_ROM_PTR(&adafruit_bus_device_i2c_device_module) }, { MP_ROM_QSTR(MP_QSTR_spi_device), MP_ROM_PTR(&adafruit_bus_device_spi_device_module) }, }; -STATIC MP_DEFINE_CONST_DICT(adafruit_bus_device_module_globals, adafruit_bus_device_module_globals_table); +static MP_DEFINE_CONST_DICT(adafruit_bus_device_module_globals, adafruit_bus_device_module_globals_table); const mp_obj_module_t adafruit_bus_device_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/adafruit_bus_device/i2c_device/I2CDevice.c b/shared-bindings/adafruit_bus_device/i2c_device/I2CDevice.c index 00988704e4fb..737ff419ddaa 100644 --- a/shared-bindings/adafruit_bus_device/i2c_device/I2CDevice.c +++ b/shared-bindings/adafruit_bus_device/i2c_device/I2CDevice.c @@ -44,7 +44,7 @@ //| device.write(bytes_read) //| """ //| ... -STATIC mp_obj_t adafruit_bus_device_i2cdevice_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t adafruit_bus_device_i2cdevice_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { adafruit_bus_device_i2cdevice_obj_t *self = mp_obj_malloc(adafruit_bus_device_i2cdevice_obj_t, &adafruit_bus_device_i2cdevice_type); enum { ARG_i2c, ARG_device_address, ARG_probe }; @@ -69,21 +69,21 @@ STATIC mp_obj_t adafruit_bus_device_i2cdevice_make_new(const mp_obj_type_t *type //| def __enter__(self) -> I2CDevice: //| """Context manager entry to lock bus.""" //| ... -STATIC mp_obj_t adafruit_bus_device_i2cdevice_obj___enter__(mp_obj_t self_in) { +static mp_obj_t adafruit_bus_device_i2cdevice_obj___enter__(mp_obj_t self_in) { adafruit_bus_device_i2cdevice_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_adafruit_bus_device_i2cdevice_lock(self); return self; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(adafruit_bus_device_i2cdevice___enter___obj, adafruit_bus_device_i2cdevice_obj___enter__); +static MP_DEFINE_CONST_FUN_OBJ_1(adafruit_bus_device_i2cdevice___enter___obj, adafruit_bus_device_i2cdevice_obj___enter__); //| def __exit__(self) -> None: //| """Automatically unlocks the bus on exit.""" //| ... -STATIC mp_obj_t adafruit_bus_device_i2cdevice_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t adafruit_bus_device_i2cdevice_obj___exit__(size_t n_args, const mp_obj_t *args) { common_hal_adafruit_bus_device_i2cdevice_unlock(MP_OBJ_TO_PTR(args[0])); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(adafruit_bus_device_i2cdevice___exit___obj, 4, 4, adafruit_bus_device_i2cdevice_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(adafruit_bus_device_i2cdevice___exit___obj, 4, 4, adafruit_bus_device_i2cdevice_obj___exit__); //| import sys //| def readinto( @@ -100,7 +100,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(adafruit_bus_device_i2cdevice___exit_ //| :param int end: end of buffer slice; if not specified, use ``len(buffer)`` //| """ //| ... -STATIC mp_obj_t adafruit_bus_device_i2cdevice_readinto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t adafruit_bus_device_i2cdevice_readinto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_buffer, ARG_start, ARG_end }; static const mp_arg_t allowed_args[] = { { MP_QSTR_buffer, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -131,7 +131,7 @@ STATIC mp_obj_t adafruit_bus_device_i2cdevice_readinto(size_t n_args, const mp_o return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(adafruit_bus_device_i2cdevice_readinto_obj, 1, adafruit_bus_device_i2cdevice_readinto); +static MP_DEFINE_CONST_FUN_OBJ_KW(adafruit_bus_device_i2cdevice_readinto_obj, 1, adafruit_bus_device_i2cdevice_readinto); //| import sys //| def write(self, buffer: ReadableBuffer, *, start: int = 0, end: int = sys.maxsize) -> None: @@ -146,7 +146,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_KW(adafruit_bus_device_i2cdevice_readinto_obj, 1, //| :param int end: end of buffer slice; if not specified, use ``len(buffer)`` //| """ //| ... -STATIC mp_obj_t adafruit_bus_device_i2cdevice_write(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t adafruit_bus_device_i2cdevice_write(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_buffer, ARG_start, ARG_end }; static const mp_arg_t allowed_args[] = { { MP_QSTR_buffer, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -210,7 +210,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(adafruit_bus_device_i2cdevice_write_obj, 1, adafruit_ //| """ //| ... //| -STATIC mp_obj_t adafruit_bus_device_i2cdevice_write_then_readinto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t adafruit_bus_device_i2cdevice_write_then_readinto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_out_buffer, ARG_in_buffer, ARG_out_start, ARG_out_end, ARG_in_start, ARG_in_end }; static const mp_arg_t allowed_args[] = { { MP_QSTR_out_buffer, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -254,7 +254,7 @@ STATIC mp_obj_t adafruit_bus_device_i2cdevice_write_then_readinto(size_t n_args, } MP_DEFINE_CONST_FUN_OBJ_KW(adafruit_bus_device_i2cdevice_write_then_readinto_obj, 1, adafruit_bus_device_i2cdevice_write_then_readinto); -STATIC const mp_rom_map_elem_t adafruit_bus_device_i2cdevice_locals_dict_table[] = { +static const mp_rom_map_elem_t adafruit_bus_device_i2cdevice_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&adafruit_bus_device_i2cdevice___enter___obj) }, { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&adafruit_bus_device_i2cdevice___exit___obj) }, { MP_ROM_QSTR(MP_QSTR_readinto), MP_ROM_PTR(&adafruit_bus_device_i2cdevice_readinto_obj) }, @@ -262,7 +262,7 @@ STATIC const mp_rom_map_elem_t adafruit_bus_device_i2cdevice_locals_dict_table[] { MP_ROM_QSTR(MP_QSTR_write_then_readinto), MP_ROM_PTR(&adafruit_bus_device_i2cdevice_write_then_readinto_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(adafruit_bus_device_i2cdevice_locals_dict, adafruit_bus_device_i2cdevice_locals_dict_table); +static MP_DEFINE_CONST_DICT(adafruit_bus_device_i2cdevice_locals_dict, adafruit_bus_device_i2cdevice_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( adafruit_bus_device_i2cdevice_type, diff --git a/shared-bindings/adafruit_bus_device/spi_device/SPIDevice.c b/shared-bindings/adafruit_bus_device/spi_device/SPIDevice.c index 6306085272ff..6336b0cd1227 100644 --- a/shared-bindings/adafruit_bus_device/spi_device/SPIDevice.c +++ b/shared-bindings/adafruit_bus_device/spi_device/SPIDevice.c @@ -56,7 +56,7 @@ //| with device as spi: //| spi.write(bytes_read)""" //| ... -STATIC mp_obj_t adafruit_bus_device_spidevice_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t adafruit_bus_device_spidevice_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { adafruit_bus_device_spidevice_obj_t *self = mp_obj_malloc(adafruit_bus_device_spidevice_obj_t, &adafruit_bus_device_spidevice_type); enum { ARG_spi, ARG_chip_select, ARG_cs_active_value, ARG_baudrate, ARG_polarity, ARG_phase, ARG_extra_clocks }; @@ -97,11 +97,11 @@ STATIC mp_obj_t adafruit_bus_device_spidevice_make_new(const mp_obj_type_t *type //| def __enter__(self) -> busio.SPI: //| """Starts a SPI transaction by configuring the SPI and asserting chip select.""" //| ... -STATIC mp_obj_t adafruit_bus_device_spidevice_obj___enter__(mp_obj_t self_in) { +static mp_obj_t adafruit_bus_device_spidevice_obj___enter__(mp_obj_t self_in) { adafruit_bus_device_spidevice_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_adafruit_bus_device_spidevice_enter(self); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(adafruit_bus_device_spidevice___enter___obj, adafruit_bus_device_spidevice_obj___enter__); +static MP_DEFINE_CONST_FUN_OBJ_1(adafruit_bus_device_spidevice___enter___obj, adafruit_bus_device_spidevice_obj___enter__); //| def __exit__(self) -> None: @@ -109,18 +109,18 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(adafruit_bus_device_spidevice___enter___obj, ad //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... //| -STATIC mp_obj_t adafruit_bus_device_spidevice_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t adafruit_bus_device_spidevice_obj___exit__(size_t n_args, const mp_obj_t *args) { common_hal_adafruit_bus_device_spidevice_exit(MP_OBJ_TO_PTR(args[0])); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(adafruit_bus_device_spidevice___exit___obj, 4, 4, adafruit_bus_device_spidevice_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(adafruit_bus_device_spidevice___exit___obj, 4, 4, adafruit_bus_device_spidevice_obj___exit__); -STATIC const mp_rom_map_elem_t adafruit_bus_device_spidevice_locals_dict_table[] = { +static const mp_rom_map_elem_t adafruit_bus_device_spidevice_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&adafruit_bus_device_spidevice___enter___obj) }, { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&adafruit_bus_device_spidevice___exit___obj) }, }; -STATIC MP_DEFINE_CONST_DICT(adafruit_bus_device_spidevice_locals_dict, adafruit_bus_device_spidevice_locals_dict_table); +static MP_DEFINE_CONST_DICT(adafruit_bus_device_spidevice_locals_dict, adafruit_bus_device_spidevice_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( adafruit_bus_device_spidevice_type, diff --git a/shared-bindings/adafruit_pixelbuf/PixelBuf.c b/shared-bindings/adafruit_pixelbuf/PixelBuf.c index dd6588087534..95b353611f73 100644 --- a/shared-bindings/adafruit_pixelbuf/PixelBuf.c +++ b/shared-bindings/adafruit_pixelbuf/PixelBuf.c @@ -61,7 +61,7 @@ static void parse_byteorder(mp_obj_t byteorder_obj, pixelbuf_byteorder_details_t //| :param ~circuitpython_typing.ReadableBuffer trailer: Sequence of bytes to always send after pixel values. //| """ //| ... -STATIC mp_obj_t pixelbuf_pixelbuf_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t pixelbuf_pixelbuf_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_size, ARG_byteorder, ARG_brightness, ARG_auto_write, ARG_header, ARG_trailer }; static const mp_arg_t allowed_args[] = { { MP_QSTR_size, MP_ARG_REQUIRED | MP_ARG_INT }, @@ -145,7 +145,7 @@ static void parse_byteorder(mp_obj_t byteorder_obj, pixelbuf_byteorder_details_t //| bpp: int //| """The number of bytes per pixel in the buffer (read-only)""" -STATIC mp_obj_t pixelbuf_pixelbuf_obj_get_bpp(mp_obj_t self_in) { +static mp_obj_t pixelbuf_pixelbuf_obj_get_bpp(mp_obj_t self_in) { return MP_OBJ_NEW_SMALL_INT(common_hal_adafruit_pixelbuf_pixelbuf_get_bpp(self_in)); } MP_DEFINE_CONST_FUN_OBJ_1(pixelbuf_pixelbuf_get_bpp_obj, pixelbuf_pixelbuf_obj_get_bpp); @@ -159,13 +159,13 @@ MP_PROPERTY_GETTER(pixelbuf_pixelbuf_bpp_obj, //| //| When brightness is less than 1.0, a second buffer will be used to store the color values //| before they are adjusted for brightness.""" -STATIC mp_obj_t pixelbuf_pixelbuf_obj_get_brightness(mp_obj_t self_in) { +static mp_obj_t pixelbuf_pixelbuf_obj_get_brightness(mp_obj_t self_in) { return mp_obj_new_float(common_hal_adafruit_pixelbuf_pixelbuf_get_brightness(self_in)); } MP_DEFINE_CONST_FUN_OBJ_1(pixelbuf_pixelbuf_get_brightness_obj, pixelbuf_pixelbuf_obj_get_brightness); -STATIC mp_obj_t pixelbuf_pixelbuf_obj_set_brightness(mp_obj_t self_in, mp_obj_t value) { +static mp_obj_t pixelbuf_pixelbuf_obj_set_brightness(mp_obj_t self_in, mp_obj_t value) { mp_float_t brightness = mp_obj_get_float(value); if (brightness > 1) { brightness = 1; @@ -183,13 +183,13 @@ MP_PROPERTY_GETSET(pixelbuf_pixelbuf_brightness_obj, //| auto_write: bool //| """Whether to automatically write the pixels after each update.""" -STATIC mp_obj_t pixelbuf_pixelbuf_obj_get_auto_write(mp_obj_t self_in) { +static mp_obj_t pixelbuf_pixelbuf_obj_get_auto_write(mp_obj_t self_in) { return mp_obj_new_bool(common_hal_adafruit_pixelbuf_pixelbuf_get_auto_write(self_in)); } MP_DEFINE_CONST_FUN_OBJ_1(pixelbuf_pixelbuf_get_auto_write_obj, pixelbuf_pixelbuf_obj_get_auto_write); -STATIC mp_obj_t pixelbuf_pixelbuf_obj_set_auto_write(mp_obj_t self_in, mp_obj_t value) { +static mp_obj_t pixelbuf_pixelbuf_obj_set_auto_write(mp_obj_t self_in, mp_obj_t value) { common_hal_adafruit_pixelbuf_pixelbuf_set_auto_write(self_in, mp_obj_is_true(value)); return mp_const_none; } @@ -201,7 +201,7 @@ MP_PROPERTY_GETSET(pixelbuf_pixelbuf_auto_write_obj, //| byteorder: str //| """byteorder string for the buffer (read-only)""" -STATIC mp_obj_t pixelbuf_pixelbuf_obj_get_byteorder(mp_obj_t self_in) { +static mp_obj_t pixelbuf_pixelbuf_obj_get_byteorder(mp_obj_t self_in) { return common_hal_adafruit_pixelbuf_pixelbuf_get_byteorder_string(self_in); } MP_DEFINE_CONST_FUN_OBJ_1(pixelbuf_pixelbuf_get_byteorder_str, pixelbuf_pixelbuf_obj_get_byteorder); @@ -209,7 +209,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(pixelbuf_pixelbuf_get_byteorder_str, pixelbuf_pixelbuf MP_PROPERTY_GETTER(pixelbuf_pixelbuf_byteorder_str, (mp_obj_t)&pixelbuf_pixelbuf_get_byteorder_str); -STATIC mp_obj_t pixelbuf_pixelbuf_unary_op(mp_unary_op_t op, mp_obj_t self_in) { +static mp_obj_t pixelbuf_pixelbuf_unary_op(mp_unary_op_t op, mp_obj_t self_in) { switch (op) { case MP_UNARY_OP_BOOL: return mp_const_true; @@ -225,22 +225,22 @@ STATIC mp_obj_t pixelbuf_pixelbuf_unary_op(mp_unary_op_t op, mp_obj_t self_in) { //| when `auto_write` is True.""" //| ... -STATIC mp_obj_t pixelbuf_pixelbuf_show(mp_obj_t self_in) { +static mp_obj_t pixelbuf_pixelbuf_show(mp_obj_t self_in) { common_hal_adafruit_pixelbuf_pixelbuf_show(self_in); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(pixelbuf_pixelbuf_show_obj, pixelbuf_pixelbuf_show); +static MP_DEFINE_CONST_FUN_OBJ_1(pixelbuf_pixelbuf_show_obj, pixelbuf_pixelbuf_show); //| def fill(self, color: PixelType) -> None: //| """Fills the given pixelbuf with the given color.""" //| ... -STATIC mp_obj_t pixelbuf_pixelbuf_fill(mp_obj_t self_in, mp_obj_t value) { +static mp_obj_t pixelbuf_pixelbuf_fill(mp_obj_t self_in, mp_obj_t value) { common_hal_adafruit_pixelbuf_pixelbuf_fill(self_in, value); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(pixelbuf_pixelbuf_fill_obj, pixelbuf_pixelbuf_fill); +static MP_DEFINE_CONST_FUN_OBJ_2(pixelbuf_pixelbuf_fill_obj, pixelbuf_pixelbuf_fill); //| @overload //| def __getitem__(self, index: slice) -> PixelReturnSequence: @@ -267,7 +267,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(pixelbuf_pixelbuf_fill_obj, pixelbuf_pixelbuf_f //| is used instead when the red, green, and blue values are the same.""" //| ... //| -STATIC mp_obj_t pixelbuf_pixelbuf_subscr(mp_obj_t self_in, mp_obj_t index_in, mp_obj_t value) { +static mp_obj_t pixelbuf_pixelbuf_subscr(mp_obj_t self_in, mp_obj_t index_in, mp_obj_t value) { if (value == MP_OBJ_NULL) { // delete item // slice deletion @@ -338,7 +338,7 @@ STATIC mp_obj_t pixelbuf_pixelbuf_subscr(mp_obj_t self_in, mp_obj_t index_in, mp } } -STATIC const mp_rom_map_elem_t pixelbuf_pixelbuf_locals_dict_table[] = { +static const mp_rom_map_elem_t pixelbuf_pixelbuf_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_auto_write), MP_ROM_PTR(&pixelbuf_pixelbuf_auto_write_obj)}, { MP_ROM_QSTR(MP_QSTR_bpp), MP_ROM_PTR(&pixelbuf_pixelbuf_bpp_obj)}, { MP_ROM_QSTR(MP_QSTR_brightness), MP_ROM_PTR(&pixelbuf_pixelbuf_brightness_obj)}, @@ -347,7 +347,7 @@ STATIC const mp_rom_map_elem_t pixelbuf_pixelbuf_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_fill), MP_ROM_PTR(&pixelbuf_pixelbuf_fill_obj)}, }; -STATIC MP_DEFINE_CONST_DICT(pixelbuf_pixelbuf_locals_dict, pixelbuf_pixelbuf_locals_dict_table); +static MP_DEFINE_CONST_DICT(pixelbuf_pixelbuf_locals_dict, pixelbuf_pixelbuf_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( diff --git a/shared-bindings/adafruit_pixelbuf/__init__.c b/shared-bindings/adafruit_pixelbuf/__init__.c index 34d6919a5de7..5cdc2822a358 100644 --- a/shared-bindings/adafruit_pixelbuf/__init__.c +++ b/shared-bindings/adafruit_pixelbuf/__init__.c @@ -30,12 +30,12 @@ //| PixelSequence = Union[Tuple[PixelType], List[PixelType]] // TODO: Pull in docs from adafruit_pixelbuf. -STATIC const mp_rom_map_elem_t pixelbuf_module_globals_table[] = { +static const mp_rom_map_elem_t pixelbuf_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_adafruit_pixelbuf) }, { MP_ROM_QSTR(MP_QSTR_PixelBuf), MP_ROM_PTR(&pixelbuf_pixelbuf_type) }, }; -STATIC MP_DEFINE_CONST_DICT(pixelbuf_module_globals, pixelbuf_module_globals_table); +static MP_DEFINE_CONST_DICT(pixelbuf_module_globals, pixelbuf_module_globals_table); const mp_obj_module_t pixelbuf_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/aesio/__init__.c b/shared-bindings/aesio/__init__.c index 345948b6bd7e..bf20f471b848 100644 --- a/shared-bindings/aesio/__init__.c +++ b/shared-bindings/aesio/__init__.c @@ -21,7 +21,7 @@ //| """ -STATIC const mp_obj_tuple_t mp_aes_key_size_obj = { +static const mp_obj_tuple_t mp_aes_key_size_obj = { {&mp_type_tuple}, 3, { @@ -31,7 +31,7 @@ STATIC const mp_obj_tuple_t mp_aes_key_size_obj = { } }; -STATIC const mp_rom_map_elem_t aesio_module_globals_table[] = { +static const mp_rom_map_elem_t aesio_module_globals_table[] = { {MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_aesio)}, {MP_ROM_QSTR(MP_QSTR_AES), MP_ROM_PTR(&aesio_aes_type) }, {MP_ROM_QSTR(MP_QSTR_MODE_ECB), MP_ROM_INT(AES_MODE_ECB)}, @@ -41,7 +41,7 @@ STATIC const mp_rom_map_elem_t aesio_module_globals_table[] = { {MP_ROM_QSTR(MP_QSTR_key_size), (mp_obj_t)&mp_aes_key_size_obj}, }; -STATIC MP_DEFINE_CONST_DICT(aesio_module_globals, aesio_module_globals_table); +static MP_DEFINE_CONST_DICT(aesio_module_globals, aesio_module_globals_table); const mp_obj_module_t aesio_module = { .base = {&mp_type_module}, diff --git a/shared-bindings/aesio/aes.c b/shared-bindings/aesio/aes.c index 6316c4643e92..33f2a3356329 100644 --- a/shared-bindings/aesio/aes.c +++ b/shared-bindings/aesio/aes.c @@ -51,7 +51,7 @@ //| hexlify(outp)""" //| ... -STATIC mp_obj_t aesio_aes_make_new(const mp_obj_type_t *type, size_t n_args, +static mp_obj_t aesio_aes_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { aesio_aes_obj_t *self = mp_obj_malloc(aesio_aes_obj_t, &aesio_aes_type); @@ -114,7 +114,7 @@ STATIC mp_obj_t aesio_aes_make_new(const mp_obj_type_t *type, size_t n_args, //| :param ~circuitpython_typing.ReadableBuffer IV: Initialization vector to use //| for CBC or CTR mode""" //| ... -STATIC mp_obj_t aesio_aes_rekey(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t aesio_aes_rekey(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { aesio_aes_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); enum { ARG_key, ARG_IV }; static const mp_arg_t allowed_args[] = { @@ -147,7 +147,7 @@ STATIC mp_obj_t aesio_aes_rekey(size_t n_args, const mp_obj_t *pos_args, mp_map_ } MP_DEFINE_CONST_FUN_OBJ_KW(aesio_aes_rekey_obj, 1, aesio_aes_rekey); -STATIC void validate_length(aesio_aes_obj_t *self, size_t src_length, +static void validate_length(aesio_aes_obj_t *self, size_t src_length, size_t dest_length) { if (src_length != dest_length) { mp_raise_ValueError( @@ -177,7 +177,7 @@ STATIC void validate_length(aesio_aes_obj_t *self, size_t src_length, //| buffers must be a multiple of 16 bytes, and must be equal length. For //| CTR mode, there are no restrictions.""" //| ... -STATIC mp_obj_t aesio_aes_encrypt_into(mp_obj_t self_in, mp_obj_t src, mp_obj_t dest) { +static mp_obj_t aesio_aes_encrypt_into(mp_obj_t self_in, mp_obj_t src, mp_obj_t dest) { aesio_aes_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_buffer_info_t srcbufinfo, destbufinfo; @@ -191,7 +191,7 @@ STATIC mp_obj_t aesio_aes_encrypt_into(mp_obj_t self_in, mp_obj_t src, mp_obj_t return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(aesio_aes_encrypt_into_obj, aesio_aes_encrypt_into); +static MP_DEFINE_CONST_FUN_OBJ_3(aesio_aes_encrypt_into_obj, aesio_aes_encrypt_into); //| def decrypt_into(self, src: ReadableBuffer, dest: WriteableBuffer) -> None: //| """Decrypt the buffer from ``src`` into ``dest``. @@ -200,7 +200,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_3(aesio_aes_encrypt_into_obj, aesio_aes_encrypt_i //| CTR mode, there are no restrictions.""" //| ... //| -STATIC mp_obj_t aesio_aes_decrypt_into(mp_obj_t self_in, mp_obj_t src, mp_obj_t dest) { +static mp_obj_t aesio_aes_decrypt_into(mp_obj_t self_in, mp_obj_t src, mp_obj_t dest) { aesio_aes_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_buffer_info_t srcbufinfo, destbufinfo; @@ -214,16 +214,16 @@ STATIC mp_obj_t aesio_aes_decrypt_into(mp_obj_t self_in, mp_obj_t src, mp_obj_t return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(aesio_aes_decrypt_into_obj, aesio_aes_decrypt_into); +static MP_DEFINE_CONST_FUN_OBJ_3(aesio_aes_decrypt_into_obj, aesio_aes_decrypt_into); -STATIC mp_obj_t aesio_aes_get_mode(mp_obj_t self_in) { +static mp_obj_t aesio_aes_get_mode(mp_obj_t self_in) { aesio_aes_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_NEW_SMALL_INT(self->mode); } MP_DEFINE_CONST_FUN_OBJ_1(aesio_aes_get_mode_obj, aesio_aes_get_mode); -STATIC mp_obj_t aesio_aes_set_mode(mp_obj_t self_in, mp_obj_t mode_obj) { +static mp_obj_t aesio_aes_set_mode(mp_obj_t self_in, mp_obj_t mode_obj) { aesio_aes_obj_t *self = MP_OBJ_TO_PTR(self_in); int mode = mp_obj_get_int(mode_obj); @@ -245,7 +245,7 @@ MP_PROPERTY_GETSET(aesio_aes_mode_obj, (mp_obj_t)&aesio_aes_get_mode_obj, (mp_obj_t)&aesio_aes_set_mode_obj); -STATIC const mp_rom_map_elem_t aesio_locals_dict_table[] = { +static const mp_rom_map_elem_t aesio_locals_dict_table[] = { // Methods {MP_ROM_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_AES)}, {MP_ROM_QSTR(MP_QSTR_encrypt_into), (mp_obj_t)&aesio_aes_encrypt_into_obj}, @@ -253,7 +253,7 @@ STATIC const mp_rom_map_elem_t aesio_locals_dict_table[] = { {MP_ROM_QSTR(MP_QSTR_rekey), (mp_obj_t)&aesio_aes_rekey_obj}, {MP_ROM_QSTR(MP_QSTR_mode), (mp_obj_t)&aesio_aes_mode_obj}, }; -STATIC MP_DEFINE_CONST_DICT(aesio_locals_dict, aesio_locals_dict_table); +static MP_DEFINE_CONST_DICT(aesio_locals_dict, aesio_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( aesio_aes_type, diff --git a/shared-bindings/alarm/SleepMemory.c b/shared-bindings/alarm/SleepMemory.c index 9a003420215a..cf1b211c6853 100644 --- a/shared-bindings/alarm/SleepMemory.c +++ b/shared-bindings/alarm/SleepMemory.c @@ -43,7 +43,7 @@ //| def __len__(self) -> int: //| """Return the length. This is used by (`len`)""" //| ... -STATIC mp_obj_t alarm_sleep_memory_unary_op(mp_unary_op_t op, mp_obj_t self_in) { +static mp_obj_t alarm_sleep_memory_unary_op(mp_unary_op_t op, mp_obj_t self_in) { alarm_sleep_memory_obj_t *self = MP_OBJ_TO_PTR(self_in); uint16_t len = common_hal_alarm_sleep_memory_get_length(self); switch (op) { @@ -56,10 +56,10 @@ STATIC mp_obj_t alarm_sleep_memory_unary_op(mp_unary_op_t op, mp_obj_t self_in) } } -STATIC const mp_rom_map_elem_t alarm_sleep_memory_locals_dict_table[] = { +static const mp_rom_map_elem_t alarm_sleep_memory_locals_dict_table[] = { }; -STATIC MP_DEFINE_CONST_DICT(alarm_sleep_memory_locals_dict, alarm_sleep_memory_locals_dict_table); +static MP_DEFINE_CONST_DICT(alarm_sleep_memory_locals_dict, alarm_sleep_memory_locals_dict_table); //| @overload //| def __getitem__(self, index: slice) -> bytearray: ... @@ -75,7 +75,7 @@ STATIC MP_DEFINE_CONST_DICT(alarm_sleep_memory_locals_dict, alarm_sleep_memory_l //| """Set the value at the given index.""" //| ... //| -STATIC mp_obj_t alarm_sleep_memory_subscr(mp_obj_t self_in, mp_obj_t index_in, mp_obj_t value) { +static mp_obj_t alarm_sleep_memory_subscr(mp_obj_t self_in, mp_obj_t index_in, mp_obj_t value) { if (value == MP_OBJ_NULL) { // delete item // slice deletion diff --git a/shared-bindings/alarm/__init__.c b/shared-bindings/alarm/__init__.c index f617395f08e0..c74b162d0a3f 100644 --- a/shared-bindings/alarm/__init__.c +++ b/shared-bindings/alarm/__init__.c @@ -57,7 +57,7 @@ // wake_alarm is implemented as a dictionary entry, so there's no code here. -STATIC void validate_objs_are_alarms(size_t n_args, const mp_obj_t *objs) { +static void validate_objs_are_alarms(size_t n_args, const mp_obj_t *objs) { for (size_t i = 0; i < n_args; i++) { if (mp_obj_is_type(objs[i], &alarm_pin_pinalarm_type) || mp_obj_is_type(objs[i], &alarm_time_timealarm_type) || @@ -88,7 +88,7 @@ STATIC void validate_objs_are_alarms(size_t n_args, const mp_obj_t *objs) { //| """ //| ... //| -STATIC mp_obj_t alarm_light_sleep_until_alarms(size_t n_args, const mp_obj_t *args) { +static mp_obj_t alarm_light_sleep_until_alarms(size_t n_args, const mp_obj_t *args) { if (n_args == 0) { return mp_const_none; } @@ -170,7 +170,7 @@ MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(alarm_light_sleep_until_alarms_obj, 1, MP_OB //| """ //| ... //| -STATIC mp_obj_t alarm_exit_and_deep_sleep_until_alarms(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t alarm_exit_and_deep_sleep_until_alarms(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_preserve_dios }; static const mp_arg_t allowed_args[] = { { MP_QSTR_preserve_dios, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_empty_tuple} }, @@ -201,46 +201,46 @@ STATIC mp_obj_t alarm_exit_and_deep_sleep_until_alarms(size_t n_args, const mp_o } MP_DEFINE_CONST_FUN_OBJ_KW(alarm_exit_and_deep_sleep_until_alarms_obj, 0, alarm_exit_and_deep_sleep_until_alarms); -STATIC const mp_map_elem_t alarm_pin_globals_table[] = { +static const mp_map_elem_t alarm_pin_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_pin) }, { MP_ROM_QSTR(MP_QSTR_PinAlarm), MP_OBJ_FROM_PTR(&alarm_pin_pinalarm_type) }, }; -STATIC MP_DEFINE_CONST_DICT(alarm_pin_globals, alarm_pin_globals_table); +static MP_DEFINE_CONST_DICT(alarm_pin_globals, alarm_pin_globals_table); -STATIC const mp_obj_module_t alarm_pin_module = { +static const mp_obj_module_t alarm_pin_module = { .base = { &mp_type_module }, .globals = (mp_obj_dict_t *)&alarm_pin_globals, }; -STATIC const mp_map_elem_t alarm_time_globals_table[] = { +static const mp_map_elem_t alarm_time_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_time) }, { MP_ROM_QSTR(MP_QSTR_TimeAlarm), MP_OBJ_FROM_PTR(&alarm_time_timealarm_type) }, }; -STATIC MP_DEFINE_CONST_DICT(alarm_time_globals, alarm_time_globals_table); +static MP_DEFINE_CONST_DICT(alarm_time_globals, alarm_time_globals_table); -STATIC const mp_obj_module_t alarm_time_module = { +static const mp_obj_module_t alarm_time_module = { .base = { &mp_type_module }, .globals = (mp_obj_dict_t *)&alarm_time_globals, }; -STATIC const mp_map_elem_t alarm_touch_globals_table[] = { +static const mp_map_elem_t alarm_touch_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_touch) }, { MP_ROM_QSTR(MP_QSTR_TouchAlarm), MP_OBJ_FROM_PTR(&alarm_touch_touchalarm_type) }, }; -STATIC MP_DEFINE_CONST_DICT(alarm_touch_globals, alarm_touch_globals_table); +static MP_DEFINE_CONST_DICT(alarm_touch_globals, alarm_touch_globals_table); -STATIC const mp_obj_module_t alarm_touch_module = { +static const mp_obj_module_t alarm_touch_module = { .base = { &mp_type_module }, .globals = (mp_obj_dict_t *)&alarm_touch_globals, }; // The module table is mutable because .wake_alarm is a mutable attribute. -STATIC mp_map_elem_t alarm_module_globals_table[] = { +static mp_map_elem_t alarm_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_alarm) }, // wake_alarm is a mutable attribute. @@ -257,7 +257,7 @@ STATIC mp_map_elem_t alarm_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_SleepMemory), MP_OBJ_FROM_PTR(&alarm_sleep_memory_type) }, { MP_ROM_QSTR(MP_QSTR_sleep_memory), MP_OBJ_FROM_PTR(&alarm_sleep_memory_obj) }, }; -STATIC MP_DEFINE_MUTABLE_DICT(alarm_module_globals, alarm_module_globals_table); +static MP_DEFINE_MUTABLE_DICT(alarm_module_globals, alarm_module_globals_table); // Fetch value from module dict. mp_obj_t shared_alarm_get_wake_alarm(void) { diff --git a/shared-bindings/alarm/pin/PinAlarm.c b/shared-bindings/alarm/pin/PinAlarm.c index 4574a8798ecd..9c786766f6ca 100644 --- a/shared-bindings/alarm/pin/PinAlarm.c +++ b/shared-bindings/alarm/pin/PinAlarm.c @@ -40,7 +40,7 @@ //| pulls it high. //| """ //| ... -STATIC mp_obj_t alarm_pin_pinalarm_make_new(const mp_obj_type_t *type, mp_uint_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t alarm_pin_pinalarm_make_new(const mp_obj_type_t *type, mp_uint_t n_args, size_t n_kw, const mp_obj_t *all_args) { alarm_pin_pinalarm_obj_t *self = mp_obj_malloc(alarm_pin_pinalarm_obj_t, &alarm_pin_pinalarm_type); enum { ARG_pin, ARG_value, ARG_edge, ARG_pull }; static const mp_arg_t allowed_args[] = { @@ -65,7 +65,7 @@ STATIC mp_obj_t alarm_pin_pinalarm_make_new(const mp_obj_type_t *type, mp_uint_t //| pin: microcontroller.Pin //| """The trigger pin.""" -STATIC mp_obj_t alarm_pin_pinalarm_obj_get_pin(mp_obj_t self_in) { +static mp_obj_t alarm_pin_pinalarm_obj_get_pin(mp_obj_t self_in) { alarm_pin_pinalarm_obj_t *self = MP_OBJ_TO_PTR(self_in); const mcu_pin_obj_t *pin = common_hal_alarm_pin_pinalarm_get_pin(self); if (pin == NULL) { @@ -81,7 +81,7 @@ MP_PROPERTY_GETTER(alarm_pin_pinalarm_pin_obj, //| value: bool //| """The value on which to trigger.""" //| -STATIC mp_obj_t alarm_pin_pinalarm_obj_get_value(mp_obj_t self_in) { +static mp_obj_t alarm_pin_pinalarm_obj_get_value(mp_obj_t self_in) { alarm_pin_pinalarm_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bool(common_hal_alarm_pin_pinalarm_get_value(self)); } @@ -90,12 +90,12 @@ MP_DEFINE_CONST_FUN_OBJ_1(alarm_pin_pinalarm_get_value_obj, alarm_pin_pinalarm_o MP_PROPERTY_GETTER(alarm_pin_pinalarm_value_obj, (mp_obj_t)&alarm_pin_pinalarm_get_value_obj); -STATIC const mp_rom_map_elem_t alarm_pin_pinalarm_locals_dict_table[] = { +static const mp_rom_map_elem_t alarm_pin_pinalarm_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_pin), MP_ROM_PTR(&alarm_pin_pinalarm_pin_obj) }, { MP_ROM_QSTR(MP_QSTR_value), MP_ROM_PTR(&alarm_pin_pinalarm_value_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(alarm_pin_pinalarm_locals_dict, alarm_pin_pinalarm_locals_dict_table); +static MP_DEFINE_CONST_DICT(alarm_pin_pinalarm_locals_dict, alarm_pin_pinalarm_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( alarm_pin_pinalarm_type, diff --git a/shared-bindings/alarm/time/TimeAlarm.c b/shared-bindings/alarm/time/TimeAlarm.c index 4eae17f6cd93..012ca602a11b 100644 --- a/shared-bindings/alarm/time/TimeAlarm.c +++ b/shared-bindings/alarm/time/TimeAlarm.c @@ -37,7 +37,7 @@ mp_obj_t MP_WEAK rtc_get_time_source_time(void) { //| due to this time alarm. //| """ //| ... -STATIC mp_obj_t alarm_time_timealarm_make_new(const mp_obj_type_t *type, +static mp_obj_t alarm_time_timealarm_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { alarm_time_timealarm_obj_t *self = mp_obj_malloc(alarm_time_timealarm_obj_t, &alarm_time_timealarm_type); @@ -96,7 +96,7 @@ STATIC mp_obj_t alarm_time_timealarm_make_new(const mp_obj_type_t *type, //| by this property only as a `time.monotonic()` time. //| """ //| -STATIC mp_obj_t alarm_time_timealarm_obj_get_monotonic_time(mp_obj_t self_in) { +static mp_obj_t alarm_time_timealarm_obj_get_monotonic_time(mp_obj_t self_in) { alarm_time_timealarm_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_float(common_hal_alarm_time_timealarm_get_monotonic_time(self)); } @@ -105,11 +105,11 @@ MP_DEFINE_CONST_FUN_OBJ_1(alarm_time_timealarm_get_monotonic_time_obj, alarm_tim MP_PROPERTY_GETTER(alarm_time_timealarm_monotonic_time_obj, (mp_obj_t)&alarm_time_timealarm_get_monotonic_time_obj); -STATIC const mp_rom_map_elem_t alarm_time_timealarm_locals_dict_table[] = { +static const mp_rom_map_elem_t alarm_time_timealarm_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_monotonic_time), MP_ROM_PTR(&alarm_time_timealarm_monotonic_time_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(alarm_time_timealarm_locals_dict, alarm_time_timealarm_locals_dict_table); +static MP_DEFINE_CONST_DICT(alarm_time_timealarm_locals_dict, alarm_time_timealarm_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( alarm_time_timealarm_type, diff --git a/shared-bindings/alarm/touch/TouchAlarm.c b/shared-bindings/alarm/touch/TouchAlarm.c index 69caaeb57485..c4fd595efea3 100644 --- a/shared-bindings/alarm/touch/TouchAlarm.c +++ b/shared-bindings/alarm/touch/TouchAlarm.c @@ -23,7 +23,7 @@ //| **Limitations:** Not available on SAMD, Nordic, or RP2040. //| """ //| ... -STATIC mp_obj_t alarm_touch_touchalarm_make_new(const mp_obj_type_t *type, +static mp_obj_t alarm_touch_touchalarm_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { alarm_touch_touchalarm_obj_t *self = mp_obj_malloc(alarm_touch_touchalarm_obj_t, &alarm_touch_touchalarm_type); @@ -45,7 +45,7 @@ STATIC mp_obj_t alarm_touch_touchalarm_make_new(const mp_obj_type_t *type, //| pin: microcontroller.Pin //| """The trigger pin.""" //| -STATIC mp_obj_t alarm_touch_touchalarm_obj_get_pin(mp_obj_t self_in) { +static mp_obj_t alarm_touch_touchalarm_obj_get_pin(mp_obj_t self_in) { alarm_touch_touchalarm_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_FROM_PTR(self->pin); } @@ -54,10 +54,10 @@ MP_DEFINE_CONST_FUN_OBJ_1(alarm_touch_touchalarm_get_pin_obj, alarm_touch_toucha MP_PROPERTY_GETTER(alarm_touch_touchalarm_pin_obj, (mp_obj_t)&alarm_touch_touchalarm_get_pin_obj); -STATIC const mp_rom_map_elem_t alarm_touch_touchalarm_locals_dict_table[] = { +static const mp_rom_map_elem_t alarm_touch_touchalarm_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_pin), MP_ROM_PTR(&alarm_touch_touchalarm_pin_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(alarm_touch_touchalarm_locals_dict, alarm_touch_touchalarm_locals_dict_table); +static MP_DEFINE_CONST_DICT(alarm_touch_touchalarm_locals_dict, alarm_touch_touchalarm_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( alarm_touch_touchalarm_type, diff --git a/shared-bindings/analogbufio/BufferedIn.c b/shared-bindings/analogbufio/BufferedIn.c index 8e3d0546d94c..d240a3d1da94 100644 --- a/shared-bindings/analogbufio/BufferedIn.c +++ b/shared-bindings/analogbufio/BufferedIn.c @@ -43,7 +43,7 @@ //| :param ~microcontroller.Pin pin: the pin to read from //| :param ~int sample_rate: rate: sampling frequency, in samples per second""" //| ... -STATIC mp_obj_t analogbufio_bufferedin_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t analogbufio_bufferedin_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_pin, ARG_sample_rate }; static const mp_arg_t allowed_args[] = { { MP_QSTR_pin, MP_ARG_OBJ | MP_ARG_REQUIRED }, @@ -68,14 +68,14 @@ STATIC mp_obj_t analogbufio_bufferedin_make_new(const mp_obj_type_t *type, size_ //| def deinit(self) -> None: //| """Shut down the `BufferedIn` and release the pin for other use.""" //| ... -STATIC mp_obj_t analogbufio_bufferedin_deinit(mp_obj_t self_in) { +static mp_obj_t analogbufio_bufferedin_deinit(mp_obj_t self_in) { analogbufio_bufferedin_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_analogbufio_bufferedin_deinit(self); return mp_const_none; } MP_DEFINE_CONST_FUN_OBJ_1(analogbufio_bufferedin_deinit_obj, analogbufio_bufferedin_deinit); -STATIC void check_for_deinit(analogbufio_bufferedin_obj_t *self) { +static void check_for_deinit(analogbufio_bufferedin_obj_t *self) { if (common_hal_analogbufio_bufferedin_deinited(self)) { raise_deinited_error(); } @@ -89,12 +89,12 @@ STATIC void check_for_deinit(analogbufio_bufferedin_obj_t *self) { //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t analogbufio_bufferedin___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t analogbufio_bufferedin___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_analogbufio_bufferedin_deinit(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(analogbufio_bufferedin___exit___obj, 4, 4, analogbufio_bufferedin___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(analogbufio_bufferedin___exit___obj, 4, 4, analogbufio_bufferedin___exit__); //| def readinto(self, buffer: WriteableBuffer) -> int: //| """Fills the provided buffer with ADC voltage values. @@ -108,7 +108,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(analogbufio_bufferedin___exit___obj, //| :param ~circuitpython_typing.WriteableBuffer buffer: buffer: A buffer for samples""" //| ... //| -STATIC mp_obj_t analogbufio_bufferedin_obj_readinto(mp_obj_t self_in, mp_obj_t buffer_obj) { +static mp_obj_t analogbufio_bufferedin_obj_readinto(mp_obj_t self_in, mp_obj_t buffer_obj) { analogbufio_bufferedin_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -130,7 +130,7 @@ STATIC mp_obj_t analogbufio_bufferedin_obj_readinto(mp_obj_t self_in, mp_obj_t b } MP_DEFINE_CONST_FUN_OBJ_2(analogbufio_bufferedin_readinto_obj, analogbufio_bufferedin_obj_readinto); -STATIC const mp_rom_map_elem_t analogbufio_bufferedin_locals_dict_table[] = { +static const mp_rom_map_elem_t analogbufio_bufferedin_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&analogbufio_bufferedin_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&analogbufio_bufferedin_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, @@ -139,7 +139,7 @@ STATIC const mp_rom_map_elem_t analogbufio_bufferedin_locals_dict_table[] = { }; -STATIC MP_DEFINE_CONST_DICT(analogbufio_bufferedin_locals_dict, analogbufio_bufferedin_locals_dict_table); +static MP_DEFINE_CONST_DICT(analogbufio_bufferedin_locals_dict, analogbufio_bufferedin_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( analogbufio_bufferedin_type, diff --git a/shared-bindings/analogbufio/__init__.c b/shared-bindings/analogbufio/__init__.c index d1f925d362b7..b99f39b44599 100644 --- a/shared-bindings/analogbufio/__init__.c +++ b/shared-bindings/analogbufio/__init__.c @@ -27,12 +27,12 @@ //| `_ //| """ -STATIC const mp_rom_map_elem_t analogbufio_module_globals_table[] = { +static const mp_rom_map_elem_t analogbufio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_analogbufio) }, { MP_ROM_QSTR(MP_QSTR_BufferedIn), MP_ROM_PTR(&analogbufio_bufferedin_type) }, }; -STATIC MP_DEFINE_CONST_DICT(analogbufio_module_globals, analogbufio_module_globals_table); +static MP_DEFINE_CONST_DICT(analogbufio_module_globals, analogbufio_module_globals_table); const mp_obj_module_t analogbufio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/analogio/AnalogIn.c b/shared-bindings/analogio/AnalogIn.c index 3d2806421544..d46975b43743 100644 --- a/shared-bindings/analogio/AnalogIn.c +++ b/shared-bindings/analogio/AnalogIn.c @@ -45,7 +45,7 @@ MP_WEAK const mcu_pin_obj_t *common_hal_analogio_analogin_validate_pin(mp_obj_t //| when you read a value. You can retry the read. //| """ //| ... -STATIC mp_obj_t analogio_analogin_make_new(const mp_obj_type_t *type, +static mp_obj_t analogio_analogin_make_new(const mp_obj_type_t *type, mp_uint_t n_args, size_t n_kw, const mp_obj_t *args) { // check number of arguments mp_arg_check_num(n_args, n_kw, 1, 1, false); @@ -61,14 +61,14 @@ STATIC mp_obj_t analogio_analogin_make_new(const mp_obj_type_t *type, //| def deinit(self) -> None: //| """Turn off the AnalogIn and release the pin for other use.""" //| ... -STATIC mp_obj_t analogio_analogin_deinit(mp_obj_t self_in) { +static mp_obj_t analogio_analogin_deinit(mp_obj_t self_in) { analogio_analogin_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_analogio_analogin_deinit(self); return mp_const_none; } MP_DEFINE_CONST_FUN_OBJ_1(analogio_analogin_deinit_obj, analogio_analogin_deinit); -STATIC void check_for_deinit(analogio_analogin_obj_t *self) { +static void check_for_deinit(analogio_analogin_obj_t *self) { if (common_hal_analogio_analogin_deinited(self)) { raise_deinited_error(); } @@ -82,19 +82,19 @@ STATIC void check_for_deinit(analogio_analogin_obj_t *self) { //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t analogio_analogin___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t analogio_analogin___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_analogio_analogin_deinit(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(analogio_analogin___exit___obj, 4, 4, analogio_analogin___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(analogio_analogin___exit___obj, 4, 4, analogio_analogin___exit__); //| value: int //| """The value on the analog pin between 0 and 65535 inclusive (16-bit). (read-only) //| //| Even if the underlying analog to digital converter (ADC) is lower //| resolution, the value is 16-bit.""" -STATIC mp_obj_t analogio_analogin_obj_get_value(mp_obj_t self_in) { +static mp_obj_t analogio_analogin_obj_get_value(mp_obj_t self_in) { analogio_analogin_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_analogio_analogin_get_value(self)); @@ -109,7 +109,7 @@ MP_PROPERTY_GETTER(analogio_analogin_value_obj, //| ``float`` in Volts. Note the ADC value may not scale to the actual voltage linearly //| at ends of the analog range.""" //| -STATIC mp_obj_t analogio_analogin_obj_get_reference_voltage(mp_obj_t self_in) { +static mp_obj_t analogio_analogin_obj_get_reference_voltage(mp_obj_t self_in) { analogio_analogin_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -126,7 +126,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(analogio_analogin_get_reference_voltage_obj, MP_PROPERTY_GETTER(analogio_analogin_reference_voltage_obj, (mp_obj_t)&analogio_analogin_get_reference_voltage_obj); -STATIC const mp_rom_map_elem_t analogio_analogin_locals_dict_table[] = { +static const mp_rom_map_elem_t analogio_analogin_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&analogio_analogin_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&analogio_analogin___exit___obj) }, @@ -134,7 +134,7 @@ STATIC const mp_rom_map_elem_t analogio_analogin_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_reference_voltage), MP_ROM_PTR(&analogio_analogin_reference_voltage_obj)}, }; -STATIC MP_DEFINE_CONST_DICT(analogio_analogin_locals_dict, analogio_analogin_locals_dict_table); +static MP_DEFINE_CONST_DICT(analogio_analogin_locals_dict, analogio_analogin_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( analogio_analogin_type, diff --git a/shared-bindings/analogio/AnalogOut.c b/shared-bindings/analogio/AnalogOut.c index d7d21a0f368a..ab0b018a2375 100644 --- a/shared-bindings/analogio/AnalogOut.c +++ b/shared-bindings/analogio/AnalogOut.c @@ -36,7 +36,7 @@ //| //| """ //| ... -STATIC mp_obj_t analogio_analogout_make_new(const mp_obj_type_t *type, mp_uint_t n_args, size_t n_kw, const mp_obj_t *args) { +static mp_obj_t analogio_analogout_make_new(const mp_obj_type_t *type, mp_uint_t n_args, size_t n_kw, const mp_obj_t *args) { // check arguments mp_arg_check_num(n_args, n_kw, 1, 1, false); @@ -51,14 +51,14 @@ STATIC mp_obj_t analogio_analogout_make_new(const mp_obj_type_t *type, mp_uint_t //| def deinit(self) -> None: //| """Turn off the AnalogOut and release the pin for other use.""" //| ... -STATIC mp_obj_t analogio_analogout_deinit(mp_obj_t self_in) { +static mp_obj_t analogio_analogout_deinit(mp_obj_t self_in) { analogio_analogout_obj_t *self = self_in; common_hal_analogio_analogout_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(analogio_analogout_deinit_obj, analogio_analogout_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(analogio_analogout_deinit_obj, analogio_analogout_deinit); //| def __enter__(self) -> AnalogOut: //| """No-op used by Context Managers.""" @@ -69,12 +69,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(analogio_analogout_deinit_obj, analogio_analogo //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t analogio_analogout___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t analogio_analogout___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_analogio_analogout_deinit(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(analogio_analogout___exit___obj, 4, 4, analogio_analogout___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(analogio_analogout___exit___obj, 4, 4, analogio_analogout___exit__); //| value: int //| """The value on the analog pin between 0 and 65535 inclusive (16-bit). (write-only) @@ -82,7 +82,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(analogio_analogout___exit___obj, 4, 4 //| Even if the underlying digital to analog converter (DAC) is lower //| resolution, the value is 16-bit.""" //| -STATIC mp_obj_t analogio_analogout_obj_set_value(mp_obj_t self_in, mp_obj_t value) { +static mp_obj_t analogio_analogout_obj_set_value(mp_obj_t self_in, mp_obj_t value) { analogio_analogout_obj_t *self = MP_OBJ_TO_PTR(self_in); if (common_hal_analogio_analogout_deinited(self)) { raise_deinited_error(); @@ -98,7 +98,7 @@ MP_PROPERTY_GETSET(analogio_analogout_value_obj, MP_ROM_NONE, (mp_obj_t)&analogio_analogout_set_value_obj); -STATIC const mp_rom_map_elem_t analogio_analogout_locals_dict_table[] = { +static const mp_rom_map_elem_t analogio_analogout_locals_dict_table[] = { // instance methods { MP_OBJ_NEW_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&analogio_analogout_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, @@ -108,7 +108,7 @@ STATIC const mp_rom_map_elem_t analogio_analogout_locals_dict_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR_value), (mp_obj_t)&analogio_analogout_value_obj }, }; -STATIC MP_DEFINE_CONST_DICT(analogio_analogout_locals_dict, analogio_analogout_locals_dict_table); +static MP_DEFINE_CONST_DICT(analogio_analogout_locals_dict, analogio_analogout_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( analogio_analogout_type, diff --git a/shared-bindings/analogio/__init__.c b/shared-bindings/analogio/__init__.c index 2ce976e6200f..bdf2507b0cbb 100644 --- a/shared-bindings/analogio/__init__.c +++ b/shared-bindings/analogio/__init__.c @@ -46,13 +46,13 @@ //| `_ //| """ -STATIC const mp_rom_map_elem_t analogio_module_globals_table[] = { +static const mp_rom_map_elem_t analogio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_analogio) }, { MP_ROM_QSTR(MP_QSTR_AnalogIn), MP_ROM_PTR(&analogio_analogin_type) }, { MP_ROM_QSTR(MP_QSTR_AnalogOut), MP_ROM_PTR(&analogio_analogout_type) }, }; -STATIC MP_DEFINE_CONST_DICT(analogio_module_globals, analogio_module_globals_table); +static MP_DEFINE_CONST_DICT(analogio_module_globals, analogio_module_globals_table); const mp_obj_module_t analogio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/atexit/__init__.c b/shared-bindings/atexit/__init__.c index 296fcf3148a7..b18e26f2476e 100644 --- a/shared-bindings/atexit/__init__.c +++ b/shared-bindings/atexit/__init__.c @@ -38,11 +38,11 @@ //| """ //| ... //| -STATIC mp_obj_t atexit_register(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t atexit_register(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { shared_module_atexit_register(pos_args[0], (n_args - 1), ((n_args > 1) ? &pos_args[1] : NULL), kw_args); return pos_args[0]; } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(atexit_register_obj, 1, atexit_register); +static MP_DEFINE_CONST_FUN_OBJ_KW(atexit_register_obj, 1, atexit_register); //| def unregister(func: Callable[..., Any]) -> None: //| """Remove func from the list of functions to be run at termination. @@ -53,20 +53,20 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_KW(atexit_register_obj, 1, atexit_register); //| """ //| ... //| -STATIC mp_obj_t atexit_unregister(const mp_obj_t self_in) { +static mp_obj_t atexit_unregister(const mp_obj_t self_in) { shared_module_atexit_unregister(&self_in); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(atexit_unregister_obj, atexit_unregister); +static MP_DEFINE_CONST_FUN_OBJ_1(atexit_unregister_obj, atexit_unregister); -STATIC const mp_rom_map_elem_t atexit_module_globals_table[] = { +static const mp_rom_map_elem_t atexit_module_globals_table[] = { // module name { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_atexit) }, // module functions { MP_ROM_QSTR(MP_QSTR_register), MP_ROM_PTR(&atexit_register_obj) }, { MP_ROM_QSTR(MP_QSTR_unregister), MP_ROM_PTR(&atexit_unregister_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(atexit_module_globals, atexit_module_globals_table); +static MP_DEFINE_CONST_DICT(atexit_module_globals, atexit_module_globals_table); const mp_obj_module_t atexit_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/audiobusio/I2SOut.c b/shared-bindings/audiobusio/I2SOut.c index e97520521c57..4b6d57ba18d4 100644 --- a/shared-bindings/audiobusio/I2SOut.c +++ b/shared-bindings/audiobusio/I2SOut.c @@ -76,7 +76,7 @@ //| pass //| print("stopped")""" //| ... -STATIC mp_obj_t audiobusio_i2sout_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t audiobusio_i2sout_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { #if !CIRCUITPY_AUDIOBUSIO_I2SOUT mp_raise_NotImplementedError_varg(MP_ERROR_TEXT("%q"), MP_QSTR_I2SOut); return NULL; // Not reachable. @@ -110,15 +110,15 @@ STATIC mp_obj_t audiobusio_i2sout_make_new(const mp_obj_type_t *type, size_t n_a //| def deinit(self) -> None: //| """Deinitialises the I2SOut and releases any hardware resources for reuse.""" //| ... -STATIC mp_obj_t audiobusio_i2sout_deinit(mp_obj_t self_in) { +static mp_obj_t audiobusio_i2sout_deinit(mp_obj_t self_in) { audiobusio_i2sout_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_audiobusio_i2sout_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(audiobusio_i2sout_deinit_obj, audiobusio_i2sout_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(audiobusio_i2sout_deinit_obj, audiobusio_i2sout_deinit); -STATIC void check_for_deinit(audiobusio_i2sout_obj_t *self) { +static void check_for_deinit(audiobusio_i2sout_obj_t *self) { if (common_hal_audiobusio_i2sout_deinited(self)) { raise_deinited_error(); } @@ -132,12 +132,12 @@ STATIC void check_for_deinit(audiobusio_i2sout_obj_t *self) { //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t audiobusio_i2sout_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t audiobusio_i2sout_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_audiobusio_i2sout_deinit(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audiobusio_i2sout___exit___obj, 4, 4, audiobusio_i2sout_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audiobusio_i2sout___exit___obj, 4, 4, audiobusio_i2sout_obj___exit__); //| def play(self, sample: circuitpython_typing.AudioSample, *, loop: bool = False) -> None: @@ -148,7 +148,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audiobusio_i2sout___exit___obj, 4, 4, //| //| The sample itself should consist of 8 bit or 16 bit samples.""" //| ... -STATIC mp_obj_t audiobusio_i2sout_obj_play(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t audiobusio_i2sout_obj_play(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_sample, ARG_loop }; static const mp_arg_t allowed_args[] = { { MP_QSTR_sample, MP_ARG_OBJ | MP_ARG_REQUIRED }, @@ -169,7 +169,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(audiobusio_i2sout_play_obj, 1, audiobusio_i2sout_obj_ //| def stop(self) -> None: //| """Stops playback.""" //| ... -STATIC mp_obj_t audiobusio_i2sout_obj_stop(mp_obj_t self_in) { +static mp_obj_t audiobusio_i2sout_obj_stop(mp_obj_t self_in) { audiobusio_i2sout_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_audiobusio_i2sout_stop(self); @@ -179,7 +179,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(audiobusio_i2sout_stop_obj, audiobusio_i2sout_obj_stop //| playing: bool //| """True when the audio sample is being output. (read-only)""" -STATIC mp_obj_t audiobusio_i2sout_obj_get_playing(mp_obj_t self_in) { +static mp_obj_t audiobusio_i2sout_obj_get_playing(mp_obj_t self_in) { audiobusio_i2sout_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return mp_obj_new_bool(common_hal_audiobusio_i2sout_get_playing(self)); @@ -192,7 +192,7 @@ MP_PROPERTY_GETTER(audiobusio_i2sout_playing_obj, //| def pause(self) -> None: //| """Stops playback temporarily while remembering the position. Use `resume` to resume playback.""" //| ... -STATIC mp_obj_t audiobusio_i2sout_obj_pause(mp_obj_t self_in) { +static mp_obj_t audiobusio_i2sout_obj_pause(mp_obj_t self_in) { audiobusio_i2sout_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -207,7 +207,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(audiobusio_i2sout_pause_obj, audiobusio_i2sout_obj_pau //| def resume(self) -> None: //| """Resumes sample playback after :py:func:`pause`.""" //| ... -STATIC mp_obj_t audiobusio_i2sout_obj_resume(mp_obj_t self_in) { +static mp_obj_t audiobusio_i2sout_obj_resume(mp_obj_t self_in) { audiobusio_i2sout_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -222,7 +222,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(audiobusio_i2sout_resume_obj, audiobusio_i2sout_obj_re //| paused: bool //| """True when playback is paused. (read-only)""" //| -STATIC mp_obj_t audiobusio_i2sout_obj_get_paused(mp_obj_t self_in) { +static mp_obj_t audiobusio_i2sout_obj_get_paused(mp_obj_t self_in) { audiobusio_i2sout_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return mp_obj_new_bool(common_hal_audiobusio_i2sout_get_paused(self)); @@ -233,7 +233,7 @@ MP_PROPERTY_GETTER(audiobusio_i2sout_paused_obj, (mp_obj_t)&audiobusio_i2sout_get_paused_obj); #endif // CIRCUITPY_AUDIOBUSIO_I2SOUT -STATIC const mp_rom_map_elem_t audiobusio_i2sout_locals_dict_table[] = { +static const mp_rom_map_elem_t audiobusio_i2sout_locals_dict_table[] = { // Methods #if CIRCUITPY_AUDIOBUSIO_I2SOUT { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&audiobusio_i2sout_deinit_obj) }, @@ -250,7 +250,7 @@ STATIC const mp_rom_map_elem_t audiobusio_i2sout_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_paused), MP_ROM_PTR(&audiobusio_i2sout_paused_obj) }, #endif // CIRCUITPY_AUDIOBUSIO_I2SOUT }; -STATIC MP_DEFINE_CONST_DICT(audiobusio_i2sout_locals_dict, audiobusio_i2sout_locals_dict_table); +static MP_DEFINE_CONST_DICT(audiobusio_i2sout_locals_dict, audiobusio_i2sout_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( audiobusio_i2sout_type, diff --git a/shared-bindings/audiobusio/PDMIn.c b/shared-bindings/audiobusio/PDMIn.c index cbf4ed2438f7..12428e20034c 100644 --- a/shared-bindings/audiobusio/PDMIn.c +++ b/shared-bindings/audiobusio/PDMIn.c @@ -71,7 +71,7 @@ //| mic.record(b, len(b)) //| """ //| ... -STATIC mp_obj_t audiobusio_pdmin_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t audiobusio_pdmin_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { #if !CIRCUITPY_AUDIOBUSIO_PDMIN mp_raise_NotImplementedError_varg(MP_ERROR_TEXT("%q"), MP_QSTR_PDMIn); #else @@ -127,14 +127,14 @@ STATIC mp_obj_t audiobusio_pdmin_make_new(const mp_obj_type_t *type, size_t n_ar //| def deinit(self) -> None: //| """Deinitialises the PDMIn and releases any hardware resources for reuse.""" //| ... -STATIC mp_obj_t audiobusio_pdmin_deinit(mp_obj_t self_in) { +static mp_obj_t audiobusio_pdmin_deinit(mp_obj_t self_in) { audiobusio_pdmin_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_audiobusio_pdmin_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(audiobusio_pdmin_deinit_obj, audiobusio_pdmin_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(audiobusio_pdmin_deinit_obj, audiobusio_pdmin_deinit); -STATIC void check_for_deinit(audiobusio_pdmin_obj_t *self) { +static void check_for_deinit(audiobusio_pdmin_obj_t *self) { if (common_hal_audiobusio_pdmin_deinited(self)) { raise_deinited_error(); } @@ -147,12 +147,12 @@ STATIC void check_for_deinit(audiobusio_pdmin_obj_t *self) { //| def __exit__(self) -> None: //| """Automatically deinitializes the hardware when exiting a context.""" //| ... -STATIC mp_obj_t audiobusio_pdmin_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t audiobusio_pdmin_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_audiobusio_pdmin_deinit(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audiobusio_pdmin___exit___obj, 4, 4, audiobusio_pdmin_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audiobusio_pdmin___exit___obj, 4, 4, audiobusio_pdmin_obj___exit__); //| def record(self, destination: WriteableBuffer, destination_length: int) -> None: @@ -166,7 +166,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audiobusio_pdmin___exit___obj, 4, 4, //| :return: The number of samples recorded. If this is less than ``destination_length``, //| some samples were missed due to processing time.""" //| ... -STATIC mp_obj_t audiobusio_pdmin_obj_record(mp_obj_t self_obj, mp_obj_t destination, mp_obj_t destination_length) { +static mp_obj_t audiobusio_pdmin_obj_record(mp_obj_t self_obj, mp_obj_t destination, mp_obj_t destination_length) { audiobusio_pdmin_obj_t *self = MP_OBJ_TO_PTR(self_obj); check_for_deinit(self); uint32_t length = mp_arg_validate_type_int(destination_length, MP_QSTR_length); @@ -198,7 +198,7 @@ MP_DEFINE_CONST_FUN_OBJ_3(audiobusio_pdmin_record_obj, audiobusio_pdmin_obj_reco //| """The actual sample_rate of the recording. This may not match the constructed //| sample rate due to internal clock limitations.""" //| -STATIC mp_obj_t audiobusio_pdmin_obj_get_sample_rate(mp_obj_t self_in) { +static mp_obj_t audiobusio_pdmin_obj_get_sample_rate(mp_obj_t self_in) { audiobusio_pdmin_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_audiobusio_pdmin_get_sample_rate(self)); @@ -208,7 +208,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(audiobusio_pdmin_get_sample_rate_obj, audiobusio_pdmin MP_PROPERTY_GETTER(audiobusio_pdmin_sample_rate_obj, (mp_obj_t)&audiobusio_pdmin_get_sample_rate_obj); -STATIC const mp_rom_map_elem_t audiobusio_pdmin_locals_dict_table[] = { +static const mp_rom_map_elem_t audiobusio_pdmin_locals_dict_table[] = { // Methods { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&audiobusio_pdmin_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, @@ -216,7 +216,7 @@ STATIC const mp_rom_map_elem_t audiobusio_pdmin_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_record), MP_ROM_PTR(&audiobusio_pdmin_record_obj) }, { MP_ROM_QSTR(MP_QSTR_sample_rate), MP_ROM_PTR(&audiobusio_pdmin_sample_rate_obj) } }; -STATIC MP_DEFINE_CONST_DICT(audiobusio_pdmin_locals_dict, audiobusio_pdmin_locals_dict_table); +static MP_DEFINE_CONST_DICT(audiobusio_pdmin_locals_dict, audiobusio_pdmin_locals_dict_table); #endif MP_DEFINE_CONST_OBJ_TYPE( diff --git a/shared-bindings/audiobusio/__init__.c b/shared-bindings/audiobusio/__init__.c index ddfe641b4cf3..70680b1cf16e 100644 --- a/shared-bindings/audiobusio/__init__.c +++ b/shared-bindings/audiobusio/__init__.c @@ -25,13 +25,13 @@ //| are no longer needed. To do so, either call :py:meth:`!deinit` or use a //| context manager.""" -STATIC const mp_rom_map_elem_t audiobusio_module_globals_table[] = { +static const mp_rom_map_elem_t audiobusio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_audiobusio) }, { MP_ROM_QSTR(MP_QSTR_I2SOut), MP_ROM_PTR(&audiobusio_i2sout_type) }, { MP_ROM_QSTR(MP_QSTR_PDMIn), MP_ROM_PTR(&audiobusio_pdmin_type) }, }; -STATIC MP_DEFINE_CONST_DICT(audiobusio_module_globals, audiobusio_module_globals_table); +static MP_DEFINE_CONST_DICT(audiobusio_module_globals, audiobusio_module_globals_table); const mp_obj_module_t audiobusio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/audiocore/RawSample.c b/shared-bindings/audiocore/RawSample.c index 33390431b386..26df89b11644 100644 --- a/shared-bindings/audiocore/RawSample.c +++ b/shared-bindings/audiocore/RawSample.c @@ -49,7 +49,7 @@ //| time.sleep(1) //| dac.stop()""" //| ... -STATIC mp_obj_t audioio_rawsample_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t audioio_rawsample_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_buffer, ARG_channel_count, ARG_sample_rate }; static const mp_arg_t allowed_args[] = { { MP_QSTR_buffer, MP_ARG_OBJ | MP_ARG_REQUIRED, {.u_obj = MP_OBJ_NULL } }, @@ -79,14 +79,14 @@ STATIC mp_obj_t audioio_rawsample_make_new(const mp_obj_type_t *type, size_t n_a //| def deinit(self) -> None: //| """Deinitialises the RawSample and releases any hardware resources for reuse.""" //| ... -STATIC mp_obj_t audioio_rawsample_deinit(mp_obj_t self_in) { +static mp_obj_t audioio_rawsample_deinit(mp_obj_t self_in) { audioio_rawsample_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_audioio_rawsample_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(audioio_rawsample_deinit_obj, audioio_rawsample_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(audioio_rawsample_deinit_obj, audioio_rawsample_deinit); -STATIC void check_for_deinit(audioio_rawsample_obj_t *self) { +static void check_for_deinit(audioio_rawsample_obj_t *self) { if (common_hal_audioio_rawsample_deinited(self)) { raise_deinited_error(); } @@ -101,12 +101,12 @@ STATIC void check_for_deinit(audioio_rawsample_obj_t *self) { //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t audioio_rawsample_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t audioio_rawsample_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_audioio_rawsample_deinit(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audioio_rawsample___exit___obj, 4, 4, audioio_rawsample_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audioio_rawsample___exit___obj, 4, 4, audioio_rawsample_obj___exit__); //| sample_rate: Optional[int] //| """32 bit value that dictates how quickly samples are played in Hertz (cycles per second). @@ -114,14 +114,14 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audioio_rawsample___exit___obj, 4, 4, //| sample. This will not change the sample rate of any active playback. Call ``play`` again to //| change it.""" //| -STATIC mp_obj_t audioio_rawsample_obj_get_sample_rate(mp_obj_t self_in) { +static mp_obj_t audioio_rawsample_obj_get_sample_rate(mp_obj_t self_in) { audioio_rawsample_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_audioio_rawsample_get_sample_rate(self)); } MP_DEFINE_CONST_FUN_OBJ_1(audioio_rawsample_get_sample_rate_obj, audioio_rawsample_obj_get_sample_rate); -STATIC mp_obj_t audioio_rawsample_obj_set_sample_rate(mp_obj_t self_in, mp_obj_t sample_rate) { +static mp_obj_t audioio_rawsample_obj_set_sample_rate(mp_obj_t self_in, mp_obj_t sample_rate) { audioio_rawsample_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_audioio_rawsample_set_sample_rate(self, mp_obj_get_int(sample_rate)); @@ -133,7 +133,7 @@ MP_PROPERTY_GETSET(audioio_rawsample_sample_rate_obj, (mp_obj_t)&audioio_rawsample_get_sample_rate_obj, (mp_obj_t)&audioio_rawsample_set_sample_rate_obj); -STATIC const mp_rom_map_elem_t audioio_rawsample_locals_dict_table[] = { +static const mp_rom_map_elem_t audioio_rawsample_locals_dict_table[] = { // Methods { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&audioio_rawsample_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, @@ -142,9 +142,9 @@ STATIC const mp_rom_map_elem_t audioio_rawsample_locals_dict_table[] = { // Properties { MP_ROM_QSTR(MP_QSTR_sample_rate), MP_ROM_PTR(&audioio_rawsample_sample_rate_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(audioio_rawsample_locals_dict, audioio_rawsample_locals_dict_table); +static MP_DEFINE_CONST_DICT(audioio_rawsample_locals_dict, audioio_rawsample_locals_dict_table); -STATIC const audiosample_p_t audioio_rawsample_proto = { +static const audiosample_p_t audioio_rawsample_proto = { MP_PROTO_IMPLEMENT(MP_QSTR_protocol_audiosample) .sample_rate = (audiosample_sample_rate_fun)common_hal_audioio_rawsample_get_sample_rate, .bits_per_sample = (audiosample_bits_per_sample_fun)common_hal_audioio_rawsample_get_bits_per_sample, diff --git a/shared-bindings/audiocore/WaveFile.c b/shared-bindings/audiocore/WaveFile.c index 925b895d70b2..372330577f96 100644 --- a/shared-bindings/audiocore/WaveFile.c +++ b/shared-bindings/audiocore/WaveFile.c @@ -50,7 +50,7 @@ //| print("stopped") //| """ //| ... -STATIC mp_obj_t audioio_wavefile_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { +static mp_obj_t audioio_wavefile_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { mp_arg_check_num(n_args, n_kw, 1, 2, false); mp_obj_t arg = args[0]; @@ -79,14 +79,14 @@ STATIC mp_obj_t audioio_wavefile_make_new(const mp_obj_type_t *type, size_t n_ar //| def deinit(self) -> None: //| """Deinitialises the WaveFile and releases all memory resources for reuse.""" //| ... -STATIC mp_obj_t audioio_wavefile_deinit(mp_obj_t self_in) { +static mp_obj_t audioio_wavefile_deinit(mp_obj_t self_in) { audioio_wavefile_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_audioio_wavefile_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(audioio_wavefile_deinit_obj, audioio_wavefile_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(audioio_wavefile_deinit_obj, audioio_wavefile_deinit); -STATIC void check_for_deinit(audioio_wavefile_obj_t *self) { +static void check_for_deinit(audioio_wavefile_obj_t *self) { if (common_hal_audioio_wavefile_deinited(self)) { raise_deinited_error(); } @@ -101,25 +101,25 @@ STATIC void check_for_deinit(audioio_wavefile_obj_t *self) { //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t audioio_wavefile_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t audioio_wavefile_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_audioio_wavefile_deinit(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audioio_wavefile___exit___obj, 4, 4, audioio_wavefile_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audioio_wavefile___exit___obj, 4, 4, audioio_wavefile_obj___exit__); //| sample_rate: int //| """32 bit value that dictates how quickly samples are loaded into the DAC //| in Hertz (cycles per second). When the sample is looped, this can change //| the pitch output without changing the underlying sample.""" -STATIC mp_obj_t audioio_wavefile_obj_get_sample_rate(mp_obj_t self_in) { +static mp_obj_t audioio_wavefile_obj_get_sample_rate(mp_obj_t self_in) { audioio_wavefile_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_audioio_wavefile_get_sample_rate(self)); } MP_DEFINE_CONST_FUN_OBJ_1(audioio_wavefile_get_sample_rate_obj, audioio_wavefile_obj_get_sample_rate); -STATIC mp_obj_t audioio_wavefile_obj_set_sample_rate(mp_obj_t self_in, mp_obj_t sample_rate) { +static mp_obj_t audioio_wavefile_obj_set_sample_rate(mp_obj_t self_in, mp_obj_t sample_rate) { audioio_wavefile_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_audioio_wavefile_set_sample_rate(self, mp_obj_get_int(sample_rate)); @@ -133,7 +133,7 @@ MP_PROPERTY_GETSET(audioio_wavefile_sample_rate_obj, //| bits_per_sample: int //| """Bits per sample. (read only)""" -STATIC mp_obj_t audioio_wavefile_obj_get_bits_per_sample(mp_obj_t self_in) { +static mp_obj_t audioio_wavefile_obj_get_bits_per_sample(mp_obj_t self_in) { audioio_wavefile_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_audioio_wavefile_get_bits_per_sample(self)); @@ -145,7 +145,7 @@ MP_PROPERTY_GETTER(audioio_wavefile_bits_per_sample_obj, //| channel_count: int //| """Number of audio channels. (read only)""" //| -STATIC mp_obj_t audioio_wavefile_obj_get_channel_count(mp_obj_t self_in) { +static mp_obj_t audioio_wavefile_obj_get_channel_count(mp_obj_t self_in) { audioio_wavefile_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_audioio_wavefile_get_channel_count(self)); @@ -156,7 +156,7 @@ MP_PROPERTY_GETTER(audioio_wavefile_channel_count_obj, (mp_obj_t)&audioio_wavefile_get_channel_count_obj); -STATIC const mp_rom_map_elem_t audioio_wavefile_locals_dict_table[] = { +static const mp_rom_map_elem_t audioio_wavefile_locals_dict_table[] = { // Methods { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&audioio_wavefile_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, @@ -167,9 +167,9 @@ STATIC const mp_rom_map_elem_t audioio_wavefile_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_bits_per_sample), MP_ROM_PTR(&audioio_wavefile_bits_per_sample_obj) }, { MP_ROM_QSTR(MP_QSTR_channel_count), MP_ROM_PTR(&audioio_wavefile_channel_count_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(audioio_wavefile_locals_dict, audioio_wavefile_locals_dict_table); +static MP_DEFINE_CONST_DICT(audioio_wavefile_locals_dict, audioio_wavefile_locals_dict_table); -STATIC const audiosample_p_t audioio_wavefile_proto = { +static const audiosample_p_t audioio_wavefile_proto = { MP_PROTO_IMPLEMENT(MP_QSTR_protocol_audiosample) .sample_rate = (audiosample_sample_rate_fun)common_hal_audioio_wavefile_get_sample_rate, .bits_per_sample = (audiosample_bits_per_sample_fun)common_hal_audioio_wavefile_get_bits_per_sample, diff --git a/shared-bindings/audiocore/__init__.c b/shared-bindings/audiocore/__init__.c index 2753fb24a229..4eff83bcfdbf 100644 --- a/shared-bindings/audiocore/__init__.c +++ b/shared-bindings/audiocore/__init__.c @@ -19,7 +19,7 @@ #if CIRCUITPY_AUDIOCORE_DEBUG // (no docstrings so that the debug functions are not shown on docs.circuitpython.org) -STATIC mp_obj_t audiocore_get_buffer(mp_obj_t sample_in) { +static mp_obj_t audiocore_get_buffer(mp_obj_t sample_in) { uint8_t *buffer = NULL; uint32_t buffer_length = 0; audioio_get_buffer_result_t gbr = audiosample_get_buffer(sample_in, false, 0, &buffer, &buffer_length); @@ -48,9 +48,9 @@ STATIC mp_obj_t audiocore_get_buffer(mp_obj_t sample_in) { return mp_obj_new_tuple(2, result); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(audiocore_get_buffer_obj, audiocore_get_buffer); +static MP_DEFINE_CONST_FUN_OBJ_1(audiocore_get_buffer_obj, audiocore_get_buffer); -STATIC mp_obj_t audiocore_get_structure(mp_obj_t sample_in) { +static mp_obj_t audiocore_get_structure(mp_obj_t sample_in) { bool single_buffer, samples_signed; uint32_t max_buffer_length; uint8_t spacing; @@ -64,17 +64,17 @@ STATIC mp_obj_t audiocore_get_structure(mp_obj_t sample_in) { }; return mp_obj_new_tuple(4, result); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(audiocore_get_structure_obj, audiocore_get_structure); +static MP_DEFINE_CONST_FUN_OBJ_1(audiocore_get_structure_obj, audiocore_get_structure); -STATIC mp_obj_t audiocore_reset_buffer(mp_obj_t sample_in) { +static mp_obj_t audiocore_reset_buffer(mp_obj_t sample_in) { audiosample_reset_buffer(sample_in, false, 0); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(audiocore_reset_buffer_obj, audiocore_reset_buffer); +static MP_DEFINE_CONST_FUN_OBJ_1(audiocore_reset_buffer_obj, audiocore_reset_buffer); #endif -STATIC const mp_rom_map_elem_t audiocore_module_globals_table[] = { +static const mp_rom_map_elem_t audiocore_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_audiocore) }, { MP_ROM_QSTR(MP_QSTR_RawSample), MP_ROM_PTR(&audioio_rawsample_type) }, { MP_ROM_QSTR(MP_QSTR_WaveFile), MP_ROM_PTR(&audioio_wavefile_type) }, @@ -85,7 +85,7 @@ STATIC const mp_rom_map_elem_t audiocore_module_globals_table[] = { #endif }; -STATIC MP_DEFINE_CONST_DICT(audiocore_module_globals, audiocore_module_globals_table); +static MP_DEFINE_CONST_DICT(audiocore_module_globals, audiocore_module_globals_table); const mp_obj_module_t audiocore_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/audioio/AudioOut.c b/shared-bindings/audioio/AudioOut.c index da49fd72324f..ceeaf1f39907 100644 --- a/shared-bindings/audioio/AudioOut.c +++ b/shared-bindings/audioio/AudioOut.c @@ -74,7 +74,7 @@ //| pass //| print("stopped")""" //| ... -STATIC mp_obj_t audioio_audioout_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t audioio_audioout_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_left_channel, ARG_right_channel, ARG_quiescent_value }; static const mp_arg_t allowed_args[] = { { MP_QSTR_left_channel, MP_ARG_OBJ | MP_ARG_REQUIRED }, @@ -100,14 +100,14 @@ STATIC mp_obj_t audioio_audioout_make_new(const mp_obj_type_t *type, size_t n_ar //| def deinit(self) -> None: //| """Deinitialises the AudioOut and releases any hardware resources for reuse.""" //| ... -STATIC mp_obj_t audioio_audioout_deinit(mp_obj_t self_in) { +static mp_obj_t audioio_audioout_deinit(mp_obj_t self_in) { audioio_audioout_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_audioio_audioout_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(audioio_audioout_deinit_obj, audioio_audioout_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(audioio_audioout_deinit_obj, audioio_audioout_deinit); -STATIC void check_for_deinit(audioio_audioout_obj_t *self) { +static void check_for_deinit(audioio_audioout_obj_t *self) { if (common_hal_audioio_audioout_deinited(self)) { raise_deinited_error(); } @@ -121,12 +121,12 @@ STATIC void check_for_deinit(audioio_audioout_obj_t *self) { //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t audioio_audioout_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t audioio_audioout_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_audioio_audioout_deinit(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audioio_audioout___exit___obj, 4, 4, audioio_audioout_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audioio_audioout___exit___obj, 4, 4, audioio_audioout_obj___exit__); //| def play(self, sample: circuitpython_typing.AudioSample, *, loop: bool = False) -> None: @@ -139,7 +139,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audioio_audioout___exit___obj, 4, 4, //| resolution will use the highest order bits to output. For example, the SAMD21 has a 10 bit //| DAC that ignores the lowest 6 bits when playing 16 bit samples.""" //| ... -STATIC mp_obj_t audioio_audioout_obj_play(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t audioio_audioout_obj_play(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_sample, ARG_loop }; static const mp_arg_t allowed_args[] = { { MP_QSTR_sample, MP_ARG_OBJ | MP_ARG_REQUIRED }, @@ -160,7 +160,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(audioio_audioout_play_obj, 1, audioio_audioout_obj_pl //| def stop(self) -> None: //| """Stops playback and resets to the start of the sample.""" //| ... -STATIC mp_obj_t audioio_audioout_obj_stop(mp_obj_t self_in) { +static mp_obj_t audioio_audioout_obj_stop(mp_obj_t self_in) { audioio_audioout_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_audioio_audioout_stop(self); @@ -170,7 +170,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(audioio_audioout_stop_obj, audioio_audioout_obj_stop); //| playing: bool //| """True when an audio sample is being output even if `paused`. (read-only)""" -STATIC mp_obj_t audioio_audioout_obj_get_playing(mp_obj_t self_in) { +static mp_obj_t audioio_audioout_obj_get_playing(mp_obj_t self_in) { audioio_audioout_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return mp_obj_new_bool(common_hal_audioio_audioout_get_playing(self)); @@ -183,7 +183,7 @@ MP_PROPERTY_GETTER(audioio_audioout_playing_obj, //| def pause(self) -> None: //| """Stops playback temporarily while remembering the position. Use `resume` to resume playback.""" //| ... -STATIC mp_obj_t audioio_audioout_obj_pause(mp_obj_t self_in) { +static mp_obj_t audioio_audioout_obj_pause(mp_obj_t self_in) { audioio_audioout_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -198,7 +198,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(audioio_audioout_pause_obj, audioio_audioout_obj_pause //| def resume(self) -> None: //| """Resumes sample playback after :py:func:`pause`.""" //| ... -STATIC mp_obj_t audioio_audioout_obj_resume(mp_obj_t self_in) { +static mp_obj_t audioio_audioout_obj_resume(mp_obj_t self_in) { audioio_audioout_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -213,7 +213,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(audioio_audioout_resume_obj, audioio_audioout_obj_resu //| paused: bool //| """True when playback is paused. (read-only)""" //| -STATIC mp_obj_t audioio_audioout_obj_get_paused(mp_obj_t self_in) { +static mp_obj_t audioio_audioout_obj_get_paused(mp_obj_t self_in) { audioio_audioout_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return mp_obj_new_bool(common_hal_audioio_audioout_get_paused(self)); @@ -223,7 +223,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(audioio_audioout_get_paused_obj, audioio_audioout_obj_ MP_PROPERTY_GETTER(audioio_audioout_paused_obj, (mp_obj_t)&audioio_audioout_get_paused_obj); -STATIC const mp_rom_map_elem_t audioio_audioout_locals_dict_table[] = { +static const mp_rom_map_elem_t audioio_audioout_locals_dict_table[] = { // Methods { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&audioio_audioout_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&audioio_audioout_deinit_obj) }, @@ -238,7 +238,7 @@ STATIC const mp_rom_map_elem_t audioio_audioout_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_playing), MP_ROM_PTR(&audioio_audioout_playing_obj) }, { MP_ROM_QSTR(MP_QSTR_paused), MP_ROM_PTR(&audioio_audioout_paused_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(audioio_audioout_locals_dict, audioio_audioout_locals_dict_table); +static MP_DEFINE_CONST_DICT(audioio_audioout_locals_dict, audioio_audioout_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( audioio_audioout_type, diff --git a/shared-bindings/audioio/__init__.c b/shared-bindings/audioio/__init__.c index 286e505792be..ac8a85f1d65a 100644 --- a/shared-bindings/audioio/__init__.c +++ b/shared-bindings/audioio/__init__.c @@ -33,12 +33,12 @@ //| `audiocore` to be imported from `audioio`. This will be removed for all //| boards in a future build of CircuitPython.""" -STATIC const mp_rom_map_elem_t audioio_module_globals_table[] = { +static const mp_rom_map_elem_t audioio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_audioio) }, { MP_ROM_QSTR(MP_QSTR_AudioOut), MP_ROM_PTR(&audioio_audioout_type) }, }; -STATIC MP_DEFINE_CONST_DICT(audioio_module_globals, audioio_module_globals_table); +static MP_DEFINE_CONST_DICT(audioio_module_globals, audioio_module_globals_table); const mp_obj_module_t audioio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/audiomixer/Mixer.c b/shared-bindings/audiomixer/Mixer.c index fbd60ec90c56..149e98584db2 100644 --- a/shared-bindings/audiomixer/Mixer.c +++ b/shared-bindings/audiomixer/Mixer.c @@ -62,7 +62,7 @@ //| time.sleep(1) //| print("stopped")""" //| ... -STATIC mp_obj_t audiomixer_mixer_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t audiomixer_mixer_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_voice_count, ARG_buffer_size, ARG_channel_count, ARG_bits_per_sample, ARG_samples_signed, ARG_sample_rate }; static const mp_arg_t allowed_args[] = { { MP_QSTR_voice_count, MP_ARG_INT | MP_ARG_KW_ONLY, {.u_int = 2} }, @@ -98,14 +98,14 @@ STATIC mp_obj_t audiomixer_mixer_make_new(const mp_obj_type_t *type, size_t n_ar //| def deinit(self) -> None: //| """Deinitialises the Mixer and releases any hardware resources for reuse.""" //| ... -STATIC mp_obj_t audiomixer_mixer_deinit(mp_obj_t self_in) { +static mp_obj_t audiomixer_mixer_deinit(mp_obj_t self_in) { audiomixer_mixer_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_audiomixer_mixer_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(audiomixer_mixer_deinit_obj, audiomixer_mixer_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(audiomixer_mixer_deinit_obj, audiomixer_mixer_deinit); -STATIC void check_for_deinit(audiomixer_mixer_obj_t *self) { +static void check_for_deinit(audiomixer_mixer_obj_t *self) { if (common_hal_audiomixer_mixer_deinited(self)) { raise_deinited_error(); } @@ -120,16 +120,16 @@ STATIC void check_for_deinit(audiomixer_mixer_obj_t *self) { //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t audiomixer_mixer_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t audiomixer_mixer_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_audiomixer_mixer_deinit(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audiomixer_mixer___exit___obj, 4, 4, audiomixer_mixer_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audiomixer_mixer___exit___obj, 4, 4, audiomixer_mixer_obj___exit__); //| playing: bool //| """True when any voice is being output. (read-only)""" -STATIC mp_obj_t audiomixer_mixer_obj_get_playing(mp_obj_t self_in) { +static mp_obj_t audiomixer_mixer_obj_get_playing(mp_obj_t self_in) { audiomixer_mixer_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return mp_obj_new_bool(common_hal_audiomixer_mixer_get_playing(self)); @@ -141,7 +141,7 @@ MP_PROPERTY_GETTER(audiomixer_mixer_playing_obj, //| sample_rate: int //| """32 bit value that dictates how quickly samples are played in Hertz (cycles per second).""" -STATIC mp_obj_t audiomixer_mixer_obj_get_sample_rate(mp_obj_t self_in) { +static mp_obj_t audiomixer_mixer_obj_get_sample_rate(mp_obj_t self_in) { audiomixer_mixer_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_audiomixer_mixer_get_sample_rate(self)); @@ -158,7 +158,7 @@ MP_PROPERTY_GETTER(audiomixer_mixer_sample_rate_obj, //| //| >>> mixer.voice //| (,)""" -STATIC mp_obj_t audiomixer_mixer_obj_get_voice(mp_obj_t self_in) { +static mp_obj_t audiomixer_mixer_obj_get_voice(mp_obj_t self_in) { audiomixer_mixer_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return self->voice_tuple; @@ -178,7 +178,7 @@ MP_PROPERTY_GETTER(audiomixer_mixer_voice_obj, //| //| The sample must match the Mixer's encoding settings given in the constructor.""" //| ... -STATIC mp_obj_t audiomixer_mixer_obj_play(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t audiomixer_mixer_obj_play(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_sample, ARG_voice, ARG_loop }; static const mp_arg_t allowed_args[] = { { MP_QSTR_sample, MP_ARG_OBJ | MP_ARG_REQUIRED, {} }, @@ -206,7 +206,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(audiomixer_mixer_play_obj, 1, audiomixer_mixer_obj_pl //| """Stops playback of the sample on the given voice.""" //| ... //| -STATIC mp_obj_t audiomixer_mixer_obj_stop_voice(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t audiomixer_mixer_obj_stop_voice(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_voice }; static const mp_arg_t allowed_args[] = { { MP_QSTR_voice, MP_ARG_INT, {.u_int = 0} }, @@ -227,7 +227,7 @@ STATIC mp_obj_t audiomixer_mixer_obj_stop_voice(size_t n_args, const mp_obj_t *p MP_DEFINE_CONST_FUN_OBJ_KW(audiomixer_mixer_stop_voice_obj, 1, audiomixer_mixer_obj_stop_voice); -STATIC const mp_rom_map_elem_t audiomixer_mixer_locals_dict_table[] = { +static const mp_rom_map_elem_t audiomixer_mixer_locals_dict_table[] = { // Methods { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&audiomixer_mixer_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, @@ -240,9 +240,9 @@ STATIC const mp_rom_map_elem_t audiomixer_mixer_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_sample_rate), MP_ROM_PTR(&audiomixer_mixer_sample_rate_obj) }, { MP_ROM_QSTR(MP_QSTR_voice), MP_ROM_PTR(&audiomixer_mixer_voice_obj) } }; -STATIC MP_DEFINE_CONST_DICT(audiomixer_mixer_locals_dict, audiomixer_mixer_locals_dict_table); +static MP_DEFINE_CONST_DICT(audiomixer_mixer_locals_dict, audiomixer_mixer_locals_dict_table); -STATIC const audiosample_p_t audiomixer_mixer_proto = { +static const audiosample_p_t audiomixer_mixer_proto = { MP_PROTO_IMPLEMENT(MP_QSTR_protocol_audiosample) .sample_rate = (audiosample_sample_rate_fun)common_hal_audiomixer_mixer_get_sample_rate, .bits_per_sample = (audiosample_bits_per_sample_fun)common_hal_audiomixer_mixer_get_bits_per_sample, diff --git a/shared-bindings/audiomixer/MixerVoice.c b/shared-bindings/audiomixer/MixerVoice.c index 2aad6584b657..eed877bc789b 100644 --- a/shared-bindings/audiomixer/MixerVoice.c +++ b/shared-bindings/audiomixer/MixerVoice.c @@ -23,7 +23,7 @@ //| """MixerVoice instance object(s) created by `audiomixer.Mixer`.""" //| ... // TODO: support mono or stereo voices -STATIC mp_obj_t audiomixer_mixervoice_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t audiomixer_mixervoice_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { mp_arg_check_num(n_args, n_kw, 0, 0, false); audiomixer_mixervoice_obj_t *self = mp_obj_malloc(audiomixer_mixervoice_obj_t, &audiomixer_mixervoice_type); @@ -41,7 +41,7 @@ STATIC mp_obj_t audiomixer_mixervoice_make_new(const mp_obj_type_t *type, size_t //| The sample must match the `audiomixer.Mixer`'s encoding settings given in the constructor. //| """ //| ... -STATIC mp_obj_t audiomixer_mixervoice_obj_play(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t audiomixer_mixervoice_obj_play(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_sample, ARG_loop }; static const mp_arg_t allowed_args[] = { { MP_QSTR_sample, MP_ARG_OBJ | MP_ARG_REQUIRED, {} }, @@ -60,7 +60,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(audiomixer_mixervoice_play_obj, 1, audiomixer_mixervo //| def stop(self) -> None: //| """Stops playback of the sample on this voice.""" //| ... -STATIC mp_obj_t audiomixer_mixervoice_obj_stop(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t audiomixer_mixervoice_obj_stop(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_voice }; static const mp_arg_t allowed_args[] = { { MP_QSTR_voice, MP_ARG_INT, {.u_int = 0} }, @@ -77,12 +77,12 @@ MP_DEFINE_CONST_FUN_OBJ_KW(audiomixer_mixervoice_stop_obj, 1, audiomixer_mixervo //| level: float //| """The volume level of a voice, as a floating point number between 0 and 1.""" -STATIC mp_obj_t audiomixer_mixervoice_obj_get_level(mp_obj_t self_in) { +static mp_obj_t audiomixer_mixervoice_obj_get_level(mp_obj_t self_in) { return mp_obj_new_float(common_hal_audiomixer_mixervoice_get_level(self_in)); } MP_DEFINE_CONST_FUN_OBJ_1(audiomixer_mixervoice_get_level_obj, audiomixer_mixervoice_obj_get_level); -STATIC mp_obj_t audiomixer_mixervoice_obj_set_level(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t audiomixer_mixervoice_obj_set_level(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_level }; static const mp_arg_t allowed_args[] = { { MP_QSTR_level, MP_ARG_OBJ | MP_ARG_REQUIRED, {} }, @@ -111,7 +111,7 @@ MP_PROPERTY_GETSET(audiomixer_mixervoice_level_obj, //| """True when this voice is being output. (read-only)""" //| -STATIC mp_obj_t audiomixer_mixervoice_obj_get_playing(mp_obj_t self_in) { +static mp_obj_t audiomixer_mixervoice_obj_get_playing(mp_obj_t self_in) { audiomixer_mixervoice_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bool(common_hal_audiomixer_mixervoice_get_playing(self)); @@ -122,7 +122,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(audiomixer_mixervoice_get_playing_obj, audiomixer_mixe MP_PROPERTY_GETTER(audiomixer_mixervoice_playing_obj, (mp_obj_t)&audiomixer_mixervoice_get_playing_obj); -STATIC const mp_rom_map_elem_t audiomixer_mixervoice_locals_dict_table[] = { +static const mp_rom_map_elem_t audiomixer_mixervoice_locals_dict_table[] = { // Methods { MP_ROM_QSTR(MP_QSTR_play), MP_ROM_PTR(&audiomixer_mixervoice_play_obj) }, { MP_ROM_QSTR(MP_QSTR_stop), MP_ROM_PTR(&audiomixer_mixervoice_stop_obj) }, @@ -131,7 +131,7 @@ STATIC const mp_rom_map_elem_t audiomixer_mixervoice_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_playing), MP_ROM_PTR(&audiomixer_mixervoice_playing_obj) }, { MP_ROM_QSTR(MP_QSTR_level), MP_ROM_PTR(&audiomixer_mixervoice_level_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(audiomixer_mixervoice_locals_dict, audiomixer_mixervoice_locals_dict_table); +static MP_DEFINE_CONST_DICT(audiomixer_mixervoice_locals_dict, audiomixer_mixervoice_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( audiomixer_mixervoice_type, diff --git a/shared-bindings/audiomixer/__init__.c b/shared-bindings/audiomixer/__init__.c index bd9cf608b9f2..8ca6aab6fed9 100644 --- a/shared-bindings/audiomixer/__init__.c +++ b/shared-bindings/audiomixer/__init__.c @@ -13,12 +13,12 @@ //| """Support for audio mixing""" -STATIC const mp_rom_map_elem_t audiomixer_module_globals_table[] = { +static const mp_rom_map_elem_t audiomixer_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_audiomixer) }, { MP_ROM_QSTR(MP_QSTR_Mixer), MP_ROM_PTR(&audiomixer_mixer_type) }, }; -STATIC MP_DEFINE_CONST_DICT(audiomixer_module_globals, audiomixer_module_globals_table); +static MP_DEFINE_CONST_DICT(audiomixer_module_globals, audiomixer_module_globals_table); const mp_obj_module_t audiomixer_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/audiomp3/MP3Decoder.c b/shared-bindings/audiomp3/MP3Decoder.c index 88e7ed0cc44e..7d33d4c36b04 100644 --- a/shared-bindings/audiomp3/MP3Decoder.c +++ b/shared-bindings/audiomp3/MP3Decoder.c @@ -66,7 +66,7 @@ //| """ //| ... -STATIC mp_obj_t audiomp3_mp3file_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { +static mp_obj_t audiomp3_mp3file_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { mp_arg_check_num(n_args, n_kw, 1, 2, false); mp_obj_t arg = args[0]; @@ -97,14 +97,14 @@ STATIC mp_obj_t audiomp3_mp3file_make_new(const mp_obj_type_t *type, size_t n_ar //| def deinit(self) -> None: //| """Deinitialises the MP3 and releases all memory resources for reuse.""" //| ... -STATIC mp_obj_t audiomp3_mp3file_deinit(mp_obj_t self_in) { +static mp_obj_t audiomp3_mp3file_deinit(mp_obj_t self_in) { audiomp3_mp3file_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_audiomp3_mp3file_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(audiomp3_mp3file_deinit_obj, audiomp3_mp3file_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(audiomp3_mp3file_deinit_obj, audiomp3_mp3file_deinit); -STATIC void check_for_deinit(audiomp3_mp3file_obj_t *self) { +static void check_for_deinit(audiomp3_mp3file_obj_t *self) { if (common_hal_audiomp3_mp3file_deinited(self)) { raise_deinited_error(); } @@ -119,23 +119,23 @@ STATIC void check_for_deinit(audiomp3_mp3file_obj_t *self) { //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t audiomp3_mp3file_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t audiomp3_mp3file_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_audiomp3_mp3file_deinit(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audiomp3_mp3file___exit___obj, 4, 4, audiomp3_mp3file_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audiomp3_mp3file___exit___obj, 4, 4, audiomp3_mp3file_obj___exit__); //| file: typing.BinaryIO //| """File to play back.""" -STATIC mp_obj_t audiomp3_mp3file_obj_get_file(mp_obj_t self_in) { +static mp_obj_t audiomp3_mp3file_obj_get_file(mp_obj_t self_in) { audiomp3_mp3file_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return self->file; } MP_DEFINE_CONST_FUN_OBJ_1(audiomp3_mp3file_get_file_obj, audiomp3_mp3file_obj_get_file); -STATIC mp_obj_t audiomp3_mp3file_obj_set_file(mp_obj_t self_in, mp_obj_t file) { +static mp_obj_t audiomp3_mp3file_obj_set_file(mp_obj_t self_in, mp_obj_t file) { audiomp3_mp3file_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); if (!mp_obj_is_type(file, &mp_type_fileio)) { @@ -149,7 +149,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(audiomp3_mp3file_set_file_obj, audiomp3_mp3file_obj_se //| def open(self, filepath: str) -> None: //| """Takes in the name of a mp3 file, opens it, and replaces the old playback file.""" //| ... -STATIC mp_obj_t audiomp3_mp3file_obj_open(mp_obj_t self_in, mp_obj_t path) { +static mp_obj_t audiomp3_mp3file_obj_open(mp_obj_t self_in, mp_obj_t path) { audiomp3_mp3file_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -170,14 +170,14 @@ MP_PROPERTY_GETSET(audiomp3_mp3file_file_obj, //| """32 bit value that dictates how quickly samples are loaded into the DAC //| in Hertz (cycles per second). When the sample is looped, this can change //| the pitch output without changing the underlying sample.""" -STATIC mp_obj_t audiomp3_mp3file_obj_get_sample_rate(mp_obj_t self_in) { +static mp_obj_t audiomp3_mp3file_obj_get_sample_rate(mp_obj_t self_in) { audiomp3_mp3file_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_audiomp3_mp3file_get_sample_rate(self)); } MP_DEFINE_CONST_FUN_OBJ_1(audiomp3_mp3file_get_sample_rate_obj, audiomp3_mp3file_obj_get_sample_rate); -STATIC mp_obj_t audiomp3_mp3file_obj_set_sample_rate(mp_obj_t self_in, mp_obj_t sample_rate) { +static mp_obj_t audiomp3_mp3file_obj_set_sample_rate(mp_obj_t self_in, mp_obj_t sample_rate) { audiomp3_mp3file_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_audiomp3_mp3file_set_sample_rate(self, mp_obj_get_int(sample_rate)); @@ -191,7 +191,7 @@ MP_PROPERTY_GETSET(audiomp3_mp3file_sample_rate_obj, //| bits_per_sample: int //| """Bits per sample. (read only)""" -STATIC mp_obj_t audiomp3_mp3file_obj_get_bits_per_sample(mp_obj_t self_in) { +static mp_obj_t audiomp3_mp3file_obj_get_bits_per_sample(mp_obj_t self_in) { audiomp3_mp3file_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_audiomp3_mp3file_get_bits_per_sample(self)); @@ -203,7 +203,7 @@ MP_PROPERTY_GETTER(audiomp3_mp3file_bits_per_sample_obj, //| channel_count: int //| """Number of audio channels. (read only)""" -STATIC mp_obj_t audiomp3_mp3file_obj_get_channel_count(mp_obj_t self_in) { +static mp_obj_t audiomp3_mp3file_obj_get_channel_count(mp_obj_t self_in) { audiomp3_mp3file_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_audiomp3_mp3file_get_channel_count(self)); @@ -215,7 +215,7 @@ MP_PROPERTY_GETTER(audiomp3_mp3file_channel_count_obj, //| rms_level: float //| """The RMS audio level of a recently played moment of audio. (read only)""" -STATIC mp_obj_t audiomp3_mp3file_obj_get_rms_level(mp_obj_t self_in) { +static mp_obj_t audiomp3_mp3file_obj_get_rms_level(mp_obj_t self_in) { audiomp3_mp3file_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return mp_obj_new_float(common_hal_audiomp3_mp3file_get_rms_level(self)); @@ -228,7 +228,7 @@ MP_PROPERTY_GETTER(audiomp3_mp3file_rms_level_obj, //| samples_decoded: int //| """The number of audio samples decoded from the current file. (read only)""" //| -STATIC mp_obj_t audiomp3_mp3file_obj_get_samples_decoded(mp_obj_t self_in) { +static mp_obj_t audiomp3_mp3file_obj_get_samples_decoded(mp_obj_t self_in) { audiomp3_mp3file_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_audiomp3_mp3file_get_samples_decoded(self)); @@ -238,7 +238,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(audiomp3_mp3file_get_samples_decoded_obj, audiomp3_mp3 MP_PROPERTY_GETTER(audiomp3_mp3file_samples_decoded_obj, (mp_obj_t)&audiomp3_mp3file_get_samples_decoded_obj); -STATIC const mp_rom_map_elem_t audiomp3_mp3file_locals_dict_table[] = { +static const mp_rom_map_elem_t audiomp3_mp3file_locals_dict_table[] = { // Methods { MP_ROM_QSTR(MP_QSTR_open), MP_ROM_PTR(&audiomp3_mp3file_open_obj) }, { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&audiomp3_mp3file_deinit_obj) }, @@ -254,9 +254,9 @@ STATIC const mp_rom_map_elem_t audiomp3_mp3file_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_rms_level), MP_ROM_PTR(&audiomp3_mp3file_rms_level_obj) }, { MP_ROM_QSTR(MP_QSTR_samples_decoded), MP_ROM_PTR(&audiomp3_mp3file_samples_decoded_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(audiomp3_mp3file_locals_dict, audiomp3_mp3file_locals_dict_table); +static MP_DEFINE_CONST_DICT(audiomp3_mp3file_locals_dict, audiomp3_mp3file_locals_dict_table); -STATIC const audiosample_p_t audiomp3_mp3file_proto = { +static const audiosample_p_t audiomp3_mp3file_proto = { MP_PROTO_IMPLEMENT(MP_QSTR_protocol_audiosample) .sample_rate = (audiosample_sample_rate_fun)common_hal_audiomp3_mp3file_get_sample_rate, .bits_per_sample = (audiosample_bits_per_sample_fun)common_hal_audiomp3_mp3file_get_bits_per_sample, diff --git a/shared-bindings/audiomp3/__init__.c b/shared-bindings/audiomp3/__init__.c index 58fa9dfa10a5..04146109a989 100644 --- a/shared-bindings/audiomp3/__init__.c +++ b/shared-bindings/audiomp3/__init__.c @@ -18,12 +18,12 @@ //| `_. //| """ -STATIC const mp_rom_map_elem_t audiomp3_module_globals_table[] = { +static const mp_rom_map_elem_t audiomp3_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_audiomp3) }, { MP_ROM_QSTR(MP_QSTR_MP3Decoder), MP_ROM_PTR(&audiomp3_mp3file_type) }, }; -STATIC MP_DEFINE_CONST_DICT(audiomp3_module_globals, audiomp3_module_globals_table); +static MP_DEFINE_CONST_DICT(audiomp3_module_globals, audiomp3_module_globals_table); const mp_obj_module_t audiomp3_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/audiopwmio/PWMAudioOut.c b/shared-bindings/audiopwmio/PWMAudioOut.c index 0314ab41aacb..3b75df16ec45 100644 --- a/shared-bindings/audiopwmio/PWMAudioOut.c +++ b/shared-bindings/audiopwmio/PWMAudioOut.c @@ -81,7 +81,7 @@ //| pass //| print("stopped")""" //| ... -STATIC mp_obj_t audiopwmio_pwmaudioout_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t audiopwmio_pwmaudioout_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_left_channel, ARG_right_channel, ARG_quiescent_value }; static const mp_arg_t allowed_args[] = { { MP_QSTR_left_channel, MP_ARG_OBJ | MP_ARG_REQUIRED }, @@ -109,14 +109,14 @@ STATIC mp_obj_t audiopwmio_pwmaudioout_make_new(const mp_obj_type_t *type, size_ //| def deinit(self) -> None: //| """Deinitialises the PWMAudioOut and releases any hardware resources for reuse.""" //| ... -STATIC mp_obj_t audiopwmio_pwmaudioout_deinit(mp_obj_t self_in) { +static mp_obj_t audiopwmio_pwmaudioout_deinit(mp_obj_t self_in) { audiopwmio_pwmaudioout_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_audiopwmio_pwmaudioout_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(audiopwmio_pwmaudioout_deinit_obj, audiopwmio_pwmaudioout_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(audiopwmio_pwmaudioout_deinit_obj, audiopwmio_pwmaudioout_deinit); -STATIC void check_for_deinit(audiopwmio_pwmaudioout_obj_t *self) { +static void check_for_deinit(audiopwmio_pwmaudioout_obj_t *self) { if (common_hal_audiopwmio_pwmaudioout_deinited(self)) { raise_deinited_error(); } @@ -130,12 +130,12 @@ STATIC void check_for_deinit(audiopwmio_pwmaudioout_obj_t *self) { //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t audiopwmio_pwmaudioout_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t audiopwmio_pwmaudioout_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_audiopwmio_pwmaudioout_deinit(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audiopwmio_pwmaudioout___exit___obj, 4, 4, audiopwmio_pwmaudioout_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audiopwmio_pwmaudioout___exit___obj, 4, 4, audiopwmio_pwmaudioout_obj___exit__); //| def play(self, sample: circuitpython_typing.AudioSample, *, loop: bool = False) -> None: @@ -147,7 +147,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audiopwmio_pwmaudioout___exit___obj, //| The sample itself should consist of 16 bit samples. Microcontrollers with a lower output //| resolution will use the highest order bits to output.""" //| ... -STATIC mp_obj_t audiopwmio_pwmaudioout_obj_play(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t audiopwmio_pwmaudioout_obj_play(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_sample, ARG_loop }; static const mp_arg_t allowed_args[] = { { MP_QSTR_sample, MP_ARG_OBJ | MP_ARG_REQUIRED }, @@ -168,7 +168,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(audiopwmio_pwmaudioout_play_obj, 1, audiopwmio_pwmaud //| def stop(self) -> None: //| """Stops playback and resets to the start of the sample.""" //| ... -STATIC mp_obj_t audiopwmio_pwmaudioout_obj_stop(mp_obj_t self_in) { +static mp_obj_t audiopwmio_pwmaudioout_obj_stop(mp_obj_t self_in) { audiopwmio_pwmaudioout_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_audiopwmio_pwmaudioout_stop(self); @@ -178,7 +178,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(audiopwmio_pwmaudioout_stop_obj, audiopwmio_pwmaudioou //| playing: bool //| """True when an audio sample is being output even if `paused`. (read-only)""" -STATIC mp_obj_t audiopwmio_pwmaudioout_obj_get_playing(mp_obj_t self_in) { +static mp_obj_t audiopwmio_pwmaudioout_obj_get_playing(mp_obj_t self_in) { audiopwmio_pwmaudioout_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return mp_obj_new_bool(common_hal_audiopwmio_pwmaudioout_get_playing(self)); @@ -191,7 +191,7 @@ MP_PROPERTY_GETTER(audiopwmio_pwmaudioout_playing_obj, //| def pause(self) -> None: //| """Stops playback temporarily while remembering the position. Use `resume` to resume playback.""" //| ... -STATIC mp_obj_t audiopwmio_pwmaudioout_obj_pause(mp_obj_t self_in) { +static mp_obj_t audiopwmio_pwmaudioout_obj_pause(mp_obj_t self_in) { audiopwmio_pwmaudioout_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -206,7 +206,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(audiopwmio_pwmaudioout_pause_obj, audiopwmio_pwmaudioo //| def resume(self) -> None: //| """Resumes sample playback after :py:func:`pause`.""" //| ... -STATIC mp_obj_t audiopwmio_pwmaudioout_obj_resume(mp_obj_t self_in) { +static mp_obj_t audiopwmio_pwmaudioout_obj_resume(mp_obj_t self_in) { audiopwmio_pwmaudioout_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -221,7 +221,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(audiopwmio_pwmaudioout_resume_obj, audiopwmio_pwmaudio //| paused: bool //| """True when playback is paused. (read-only)""" //| -STATIC mp_obj_t audiopwmio_pwmaudioout_obj_get_paused(mp_obj_t self_in) { +static mp_obj_t audiopwmio_pwmaudioout_obj_get_paused(mp_obj_t self_in) { audiopwmio_pwmaudioout_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return mp_obj_new_bool(common_hal_audiopwmio_pwmaudioout_get_paused(self)); @@ -231,7 +231,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(audiopwmio_pwmaudioout_get_paused_obj, audiopwmio_pwma MP_PROPERTY_GETTER(audiopwmio_pwmaudioout_paused_obj, (mp_obj_t)&audiopwmio_pwmaudioout_get_paused_obj); -STATIC const mp_rom_map_elem_t audiopwmio_pwmaudioout_locals_dict_table[] = { +static const mp_rom_map_elem_t audiopwmio_pwmaudioout_locals_dict_table[] = { // Methods { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&audiopwmio_pwmaudioout_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&audiopwmio_pwmaudioout_deinit_obj) }, @@ -246,7 +246,7 @@ STATIC const mp_rom_map_elem_t audiopwmio_pwmaudioout_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_playing), MP_ROM_PTR(&audiopwmio_pwmaudioout_playing_obj) }, { MP_ROM_QSTR(MP_QSTR_paused), MP_ROM_PTR(&audiopwmio_pwmaudioout_paused_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(audiopwmio_pwmaudioout_locals_dict, audiopwmio_pwmaudioout_locals_dict_table); +static MP_DEFINE_CONST_DICT(audiopwmio_pwmaudioout_locals_dict, audiopwmio_pwmaudioout_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( audiopwmio_pwmaudioout_type, diff --git a/shared-bindings/audiopwmio/__init__.c b/shared-bindings/audiopwmio/__init__.c index 2f84aaae4028..b2f8a45c3679 100644 --- a/shared-bindings/audiopwmio/__init__.c +++ b/shared-bindings/audiopwmio/__init__.c @@ -25,12 +25,12 @@ //| Since CircuitPython 5, `Mixer`, `RawSample` and `WaveFile` are moved //| to :mod:`audiocore`.""" -STATIC const mp_rom_map_elem_t audiopwmio_module_globals_table[] = { +static const mp_rom_map_elem_t audiopwmio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_audiopwmio) }, { MP_ROM_QSTR(MP_QSTR_PWMAudioOut), MP_ROM_PTR(&audiopwmio_pwmaudioout_type) }, }; -STATIC MP_DEFINE_CONST_DICT(audiopwmio_module_globals, audiopwmio_module_globals_table); +static MP_DEFINE_CONST_DICT(audiopwmio_module_globals, audiopwmio_module_globals_table); const mp_obj_module_t audiopwmio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/bitbangio/I2C.c b/shared-bindings/bitbangio/I2C.c index 5c03dcb40f61..491833c27d45 100644 --- a/shared-bindings/bitbangio/I2C.c +++ b/shared-bindings/bitbangio/I2C.c @@ -45,7 +45,7 @@ //| :param int frequency: The clock frequency of the bus //| :param int timeout: The maximum clock stretching timeout in microseconds""" //| ... -STATIC mp_obj_t bitbangio_i2c_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t bitbangio_i2c_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_scl, ARG_sda, ARG_frequency, ARG_timeout }; static const mp_arg_t allowed_args[] = { { MP_QSTR_scl, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -67,14 +67,14 @@ STATIC mp_obj_t bitbangio_i2c_make_new(const mp_obj_type_t *type, size_t n_args, //| def deinit(self) -> None: //| """Releases control of the underlying hardware so other classes can use it.""" //| ... -STATIC mp_obj_t bitbangio_i2c_obj_deinit(mp_obj_t self_in) { +static mp_obj_t bitbangio_i2c_obj_deinit(mp_obj_t self_in) { bitbangio_i2c_obj_t *self = MP_OBJ_TO_PTR(self_in); shared_module_bitbangio_i2c_deinit(self); return mp_const_none; } MP_DEFINE_CONST_FUN_OBJ_1(bitbangio_i2c_deinit_obj, bitbangio_i2c_obj_deinit); -STATIC void check_for_deinit(bitbangio_i2c_obj_t *self) { +static void check_for_deinit(bitbangio_i2c_obj_t *self) { if (shared_module_bitbangio_i2c_deinited(self)) { raise_deinited_error(); } @@ -89,12 +89,12 @@ STATIC void check_for_deinit(bitbangio_i2c_obj_t *self) { //| """Automatically deinitializes the hardware on context exit. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t bitbangio_i2c_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t bitbangio_i2c_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; shared_module_bitbangio_i2c_deinit(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(bitbangio_i2c_obj___exit___obj, 4, 4, bitbangio_i2c_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(bitbangio_i2c_obj___exit___obj, 4, 4, bitbangio_i2c_obj___exit__); static void check_lock(bitbangio_i2c_obj_t *self) { if (!shared_module_bitbangio_i2c_has_lock(self)) { @@ -107,7 +107,7 @@ static void check_lock(bitbangio_i2c_obj_t *self) { //| those that respond. A device responds if it pulls the SDA line low after //| its address (including a read bit) is sent on the bus.""" //| ... -STATIC mp_obj_t bitbangio_i2c_scan(mp_obj_t self_in) { +static mp_obj_t bitbangio_i2c_scan(mp_obj_t self_in) { bitbangio_i2c_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); check_lock(self); @@ -126,7 +126,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(bitbangio_i2c_scan_obj, bitbangio_i2c_scan); //| def try_lock(self) -> bool: //| """Attempts to grab the I2C lock. Returns True on success.""" //| ... -STATIC mp_obj_t bitbangio_i2c_obj_try_lock(mp_obj_t self_in) { +static mp_obj_t bitbangio_i2c_obj_try_lock(mp_obj_t self_in) { bitbangio_i2c_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return mp_obj_new_bool(shared_module_bitbangio_i2c_try_lock(self)); @@ -136,7 +136,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(bitbangio_i2c_try_lock_obj, bitbangio_i2c_obj_try_lock //| def unlock(self) -> None: //| """Releases the I2C lock.""" //| ... -STATIC mp_obj_t bitbangio_i2c_obj_unlock(mp_obj_t self_in) { +static mp_obj_t bitbangio_i2c_obj_unlock(mp_obj_t self_in) { bitbangio_i2c_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); shared_module_bitbangio_i2c_unlock(self); @@ -162,7 +162,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(bitbangio_i2c_unlock_obj, bitbangio_i2c_obj_unlock); //| :param int end: Index to write up to but not include""" //| ... // Shared arg parsing for readfrom_into and writeto_then_readfrom. -STATIC void readfrom(bitbangio_i2c_obj_t *self, mp_int_t address, mp_obj_t buffer, int32_t start, mp_int_t end) { +static void readfrom(bitbangio_i2c_obj_t *self, mp_int_t address, mp_obj_t buffer, int32_t start, mp_int_t end) { mp_buffer_info_t bufinfo; mp_get_buffer_raise(buffer, &bufinfo, MP_BUFFER_WRITE); @@ -181,7 +181,7 @@ STATIC void readfrom(bitbangio_i2c_obj_t *self, mp_int_t address, mp_obj_t buffe } } -STATIC mp_obj_t bitbangio_i2c_readfrom_into(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bitbangio_i2c_readfrom_into(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_address, ARG_buffer, ARG_start, ARG_end }; static const mp_arg_t allowed_args[] = { { MP_QSTR_address, MP_ARG_REQUIRED | MP_ARG_INT, {.u_int = 0} }, @@ -223,7 +223,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(bitbangio_i2c_readfrom_into_obj, 1, bitbangio_i2c_rea //| """ //| ... // Shared arg parsing for writeto and writeto_then_readfrom. -STATIC void writeto(bitbangio_i2c_obj_t *self, mp_int_t address, mp_obj_t buffer, int32_t start, mp_int_t end, bool stop) { +static void writeto(bitbangio_i2c_obj_t *self, mp_int_t address, mp_obj_t buffer, int32_t start, mp_int_t end, bool stop) { // get the buffer to write the data from mp_buffer_info_t bufinfo; mp_get_buffer_raise(buffer, &bufinfo, MP_BUFFER_READ); @@ -245,7 +245,7 @@ STATIC void writeto(bitbangio_i2c_obj_t *self, mp_int_t address, mp_obj_t buffer } } -STATIC mp_obj_t bitbangio_i2c_writeto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bitbangio_i2c_writeto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_address, ARG_buffer, ARG_start, ARG_end }; static const mp_arg_t allowed_args[] = { { MP_QSTR_address, MP_ARG_REQUIRED | MP_ARG_INT, {.u_int = 0} }, @@ -263,7 +263,7 @@ STATIC mp_obj_t bitbangio_i2c_writeto(size_t n_args, const mp_obj_t *pos_args, m args[ARG_end].u_int, true); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(bitbangio_i2c_writeto_obj, 1, bitbangio_i2c_writeto); +static MP_DEFINE_CONST_FUN_OBJ_KW(bitbangio_i2c_writeto_obj, 1, bitbangio_i2c_writeto); //| import sys @@ -300,7 +300,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_KW(bitbangio_i2c_writeto_obj, 1, bitbangio_i2c_wr //| """ //| ... //| -STATIC mp_obj_t bitbangio_i2c_writeto_then_readfrom(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bitbangio_i2c_writeto_then_readfrom(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_address, ARG_out_buffer, ARG_in_buffer, ARG_out_start, ARG_out_end, ARG_in_start, ARG_in_end }; static const mp_arg_t allowed_args[] = { { MP_QSTR_address, MP_ARG_REQUIRED | MP_ARG_INT, {.u_int = 0} }, @@ -326,7 +326,7 @@ STATIC mp_obj_t bitbangio_i2c_writeto_then_readfrom(size_t n_args, const mp_obj_ } MP_DEFINE_CONST_FUN_OBJ_KW(bitbangio_i2c_writeto_then_readfrom_obj, 1, bitbangio_i2c_writeto_then_readfrom); -STATIC const mp_rom_map_elem_t bitbangio_i2c_locals_dict_table[] = { +static const mp_rom_map_elem_t bitbangio_i2c_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&bitbangio_i2c_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&bitbangio_i2c_obj___exit___obj) }, @@ -340,7 +340,7 @@ STATIC const mp_rom_map_elem_t bitbangio_i2c_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_writeto_then_readfrom), MP_ROM_PTR(&bitbangio_i2c_writeto_then_readfrom_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(bitbangio_i2c_locals_dict, bitbangio_i2c_locals_dict_table); +static MP_DEFINE_CONST_DICT(bitbangio_i2c_locals_dict, bitbangio_i2c_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( bitbangio_i2c_type, diff --git a/shared-bindings/bitbangio/SPI.c b/shared-bindings/bitbangio/SPI.c index 9682c8c6d915..62fb1e5a2b36 100644 --- a/shared-bindings/bitbangio/SPI.c +++ b/shared-bindings/bitbangio/SPI.c @@ -54,7 +54,7 @@ //| ... // TODO(tannewt): Support LSB SPI. -STATIC mp_obj_t bitbangio_spi_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t bitbangio_spi_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_clock, ARG_MOSI, ARG_MISO, ARG_baudrate, ARG_polarity, ARG_phase, ARG_bits, ARG_firstbit }; static const mp_arg_t allowed_args[] = { { MP_QSTR_clock, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -76,14 +76,14 @@ STATIC mp_obj_t bitbangio_spi_make_new(const mp_obj_type_t *type, size_t n_args, //| def deinit(self) -> None: //| """Turn off the SPI bus.""" //| ... -STATIC mp_obj_t bitbangio_spi_obj_deinit(mp_obj_t self_in) { +static mp_obj_t bitbangio_spi_obj_deinit(mp_obj_t self_in) { bitbangio_spi_obj_t *self = MP_OBJ_TO_PTR(self_in); shared_module_bitbangio_spi_deinit(self); return mp_const_none; } MP_DEFINE_CONST_FUN_OBJ_1(bitbangio_spi_deinit_obj, bitbangio_spi_obj_deinit); -STATIC void check_for_deinit(bitbangio_spi_obj_t *self) { +static void check_for_deinit(bitbangio_spi_obj_t *self) { if (shared_module_bitbangio_spi_deinited(self)) { raise_deinited_error(); } @@ -98,12 +98,12 @@ STATIC void check_for_deinit(bitbangio_spi_obj_t *self) { //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t bitbangio_spi_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t bitbangio_spi_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; shared_module_bitbangio_spi_deinit(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(bitbangio_spi_obj___exit___obj, 4, 4, bitbangio_spi_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(bitbangio_spi_obj___exit___obj, 4, 4, bitbangio_spi_obj___exit__); static void check_lock(bitbangio_spi_obj_t *self) { @@ -123,7 +123,7 @@ static void check_lock(bitbangio_spi_obj_t *self) { //| or second (1). Rising or falling depends on clock polarity. //| :param int bits: the number of bits per word""" //| ... -STATIC mp_obj_t bitbangio_spi_configure(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bitbangio_spi_configure(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_baudrate, ARG_polarity, ARG_phase, ARG_bits }; static const mp_arg_t allowed_args[] = { { MP_QSTR_baudrate, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 100000} }, @@ -153,7 +153,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(bitbangio_spi_configure_obj, 1, bitbangio_spi_configu //| :return: True when lock has been grabbed //| :rtype: bool""" //| ... -STATIC mp_obj_t bitbangio_spi_obj_try_lock(mp_obj_t self_in) { +static mp_obj_t bitbangio_spi_obj_try_lock(mp_obj_t self_in) { bitbangio_spi_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return mp_obj_new_bool(shared_module_bitbangio_spi_try_lock(self)); @@ -163,7 +163,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(bitbangio_spi_try_lock_obj, bitbangio_spi_obj_try_lock //| def unlock(self) -> None: //| """Releases the SPI lock.""" //| ... -STATIC mp_obj_t bitbangio_spi_obj_unlock(mp_obj_t self_in) { +static mp_obj_t bitbangio_spi_obj_unlock(mp_obj_t self_in) { bitbangio_spi_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); shared_module_bitbangio_spi_unlock(self); @@ -185,7 +185,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(bitbangio_spi_unlock_obj, bitbangio_spi_obj_unlock); //| :param int end: end of buffer slice; if not specified, use ``len(buffer)`` //| """ //| ... -STATIC mp_obj_t bitbangio_spi_write(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bitbangio_spi_write(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_buffer, ARG_start, ARG_end }; static const mp_arg_t allowed_args[] = { { MP_QSTR_buffer, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} }, @@ -246,7 +246,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(bitbangio_spi_write_obj, 1, bitbangio_spi_write); //| :param int write_value: value to write while reading //| """ //| ... -STATIC mp_obj_t bitbangio_spi_readinto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bitbangio_spi_readinto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_buffer, ARG_start, ARG_end, ARG_write_value }; static const mp_arg_t allowed_args[] = { { MP_QSTR_buffer, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} }, @@ -319,7 +319,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(bitbangio_spi_readinto_obj, 1, bitbangio_spi_readinto //| """ //| ... //| -STATIC mp_obj_t bitbangio_spi_write_readinto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bitbangio_spi_write_readinto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_out_buffer, ARG_in_buffer, ARG_out_start, ARG_out_end, ARG_in_start, ARG_in_end }; static const mp_arg_t allowed_args[] = { { MP_QSTR_out_buffer, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} }, @@ -375,7 +375,7 @@ STATIC mp_obj_t bitbangio_spi_write_readinto(size_t n_args, const mp_obj_t *pos_ } MP_DEFINE_CONST_FUN_OBJ_KW(bitbangio_spi_write_readinto_obj, 1, bitbangio_spi_write_readinto); -STATIC const mp_rom_map_elem_t bitbangio_spi_locals_dict_table[] = { +static const mp_rom_map_elem_t bitbangio_spi_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&bitbangio_spi_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&bitbangio_spi_obj___exit___obj) }, @@ -388,7 +388,7 @@ STATIC const mp_rom_map_elem_t bitbangio_spi_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_write), MP_ROM_PTR(&bitbangio_spi_write_obj) }, { MP_ROM_QSTR(MP_QSTR_write_readinto), MP_ROM_PTR(&bitbangio_spi_write_readinto_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(bitbangio_spi_locals_dict, bitbangio_spi_locals_dict_table); +static MP_DEFINE_CONST_DICT(bitbangio_spi_locals_dict, bitbangio_spi_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( bitbangio_spi_type, diff --git a/shared-bindings/bitbangio/__init__.c b/shared-bindings/bitbangio/__init__.c index 89f75a085835..27f01ffec58f 100644 --- a/shared-bindings/bitbangio/__init__.c +++ b/shared-bindings/bitbangio/__init__.c @@ -47,13 +47,13 @@ //| hardware. The last step is optional because CircuitPython automatically //| resets hardware after a program finishes.""" -STATIC const mp_rom_map_elem_t bitbangio_module_globals_table[] = { +static const mp_rom_map_elem_t bitbangio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_bitbangio) }, { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&bitbangio_i2c_type) }, { MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&bitbangio_spi_type) }, }; -STATIC MP_DEFINE_CONST_DICT(bitbangio_module_globals, bitbangio_module_globals_table); +static MP_DEFINE_CONST_DICT(bitbangio_module_globals, bitbangio_module_globals_table); const mp_obj_module_t bitbangio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/bitmapfilter/__init__.c b/shared-bindings/bitmapfilter/__init__.c index d46852c15497..0bd63c20ab92 100644 --- a/shared-bindings/bitmapfilter/__init__.c +++ b/shared-bindings/bitmapfilter/__init__.c @@ -81,11 +81,11 @@ //| -STATIC mp_float_t get_m(mp_obj_t mul_obj, int sum) { +static mp_float_t get_m(mp_obj_t mul_obj, int sum) { return mul_obj != mp_const_none ? mp_obj_get_float(mul_obj) : sum ? 1 / (mp_float_t)sum : 1; } -STATIC mp_obj_t bitmapfilter_morph(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bitmapfilter_morph(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_bitmap, ARG_weights, ARG_mul, ARG_add, ARG_threshold, ARG_offset, ARG_invert, ARG_mask }; static const mp_arg_t allowed_args[] = { { MP_QSTR_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ, { .u_obj = MP_OBJ_NULL } }, @@ -351,7 +351,7 @@ static const mp_obj_namedtuple_type_t bitmapfilter_channel_mixer_offset_type = { //| Only pixels set to a non-zero value in the mask are modified. //| """ //| -STATIC mp_obj_t bitmapfilter_mix(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bitmapfilter_mix(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_bitmap, ARG_weights, ARG_mask }; static const mp_arg_t allowed_args[] = { { MP_QSTR_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ, { .u_obj = MP_OBJ_NULL } }, @@ -420,7 +420,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(bitmapfilter_mix_obj, 0, bitmapfilter_mix); //| PIL and ImageMagic both call this "solarize". //| """ //| -STATIC mp_obj_t bitmapfilter_solarize(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bitmapfilter_solarize(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_bitmap, ARG_threshold, ARG_mask }; static const mp_arg_t allowed_args[] = { { MP_QSTR_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ, { .u_obj = MP_OBJ_NULL } }, @@ -484,13 +484,13 @@ MP_DEFINE_CONST_FUN_OBJ_KW(bitmapfilter_solarize_obj, 0, bitmapfilter_solarize); //| """ //| -STATIC int scaled_lut(int maxval, mp_obj_t func, int i) { +static int scaled_lut(int maxval, mp_obj_t func, int i) { mp_obj_t obj = mp_call_function_1(func, mp_obj_new_float(i / (mp_float_t)maxval)); mp_float_t val = mp_obj_get_float(obj); return (int)MICROPY_FLOAT_C_FUN(round)(val * maxval); } -STATIC mp_obj_t bitmapfilter_lookup(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bitmapfilter_lookup(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_bitmap, ARG_lookup, ARG_mask }; static const mp_arg_t allowed_args[] = { { MP_QSTR_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ, { .u_obj = MP_OBJ_NULL } }, @@ -562,7 +562,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(bitmapfilter_lookup_obj, 0, bitmapfilter_lookup); //| Only pixels set to a non-zero value in the mask are modified. //| """ //| -STATIC mp_obj_t bitmapfilter_false_color(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bitmapfilter_false_color(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_bitmap, ARG_palette, ARG_mask }; static const mp_arg_t allowed_args[] = { { MP_QSTR_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ, { .u_obj = MP_OBJ_NULL } }, @@ -591,7 +591,7 @@ STATIC mp_obj_t bitmapfilter_false_color(size_t n_args, const mp_obj_t *pos_args MP_DEFINE_CONST_FUN_OBJ_KW(bitmapfilter_false_color_obj, 0, bitmapfilter_false_color); #define BLEND_TABLE_SIZE (4096) -STATIC uint8_t *get_blend_table(mp_obj_t lookup, int mode) { +static uint8_t *get_blend_table(mp_obj_t lookup, int mode) { mp_buffer_info_t lookup_buf; if (!mp_get_buffer(lookup, &lookup_buf, mode) || lookup_buf.len != BLEND_TABLE_SIZE) { return NULL; @@ -624,7 +624,7 @@ STATIC uint8_t *get_blend_table(mp_obj_t lookup, int mode) { //| return a * .33 + b * .67 //| """ //| -STATIC mp_obj_t blend_precompute(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t blend_precompute(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_lookup, ARG_table }; static const mp_arg_t allowed_args[] = { { MP_QSTR_lookup, MP_ARG_REQUIRED | MP_ARG_OBJ, { .u_obj = MP_OBJ_NULL } }, @@ -670,7 +670,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(bitmapfilter_blend_precompute_obj, 0, blend_precomput //| """ //| -STATIC mp_obj_t bitmapfilter_blend(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bitmapfilter_blend(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_dest, ARG_src1, ARG_src2, ARG_lookup, ARG_mask }; static const mp_arg_t allowed_args[] = { { MP_QSTR_dest, MP_ARG_REQUIRED | MP_ARG_OBJ, { .u_obj = MP_OBJ_NULL } }, @@ -713,7 +713,7 @@ STATIC mp_obj_t bitmapfilter_blend(size_t n_args, const mp_obj_t *pos_args, mp_m } MP_DEFINE_CONST_FUN_OBJ_KW(bitmapfilter_blend_obj, 0, bitmapfilter_blend); -STATIC const mp_rom_map_elem_t bitmapfilter_module_globals_table[] = { +static const mp_rom_map_elem_t bitmapfilter_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_bitmapfilter) }, { MP_ROM_QSTR(MP_QSTR_morph), MP_ROM_PTR(&bitmapfilter_morph_obj) }, { MP_ROM_QSTR(MP_QSTR_mix), MP_ROM_PTR(&bitmapfilter_mix_obj) }, @@ -727,7 +727,7 @@ STATIC const mp_rom_map_elem_t bitmapfilter_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_blend), MP_ROM_PTR(&bitmapfilter_blend_obj) }, { MP_ROM_QSTR(MP_QSTR_blend_precompute), MP_ROM_PTR(&bitmapfilter_blend_precompute_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(bitmapfilter_module_globals, bitmapfilter_module_globals_table); +static MP_DEFINE_CONST_DICT(bitmapfilter_module_globals, bitmapfilter_module_globals_table); const mp_obj_module_t bitmapfilter_module = { .base = {&mp_type_module }, diff --git a/shared-bindings/bitmaptools/__init__.c b/shared-bindings/bitmaptools/__init__.c index 16735179c64d..de44b5164bb6 100644 --- a/shared-bindings/bitmaptools/__init__.c +++ b/shared-bindings/bitmaptools/__init__.c @@ -24,7 +24,7 @@ #endif // This assigns to [0] and [2] because the order is x1, y1, x2, y2 -STATIC void bitmaptools_validate_coord_range(int16_t out[3], const mp_arg_val_t in[3], int lim, const qstr what[2]) { +static void bitmaptools_validate_coord_range(int16_t out[3], const mp_arg_val_t in[3], int lim, const qstr what[2]) { out[0] = mp_arg_validate_int_range(mp_arg_validate_type_int(in[0].u_obj, what[0]), 0, lim, what[0]); if (in[2].u_obj == mp_const_none) { out[2] = lim; @@ -53,7 +53,7 @@ bitmaptools_rect_t bitmaptools_validate_coord_range_pair(const mp_arg_val_t in[4 //| """ //| -STATIC int16_t validate_point(mp_obj_t point, int16_t default_value) { +static int16_t validate_point(mp_obj_t point, int16_t default_value) { // Checks if point is None and returns default_value, otherwise decodes integer value if (point == mp_const_none) { return default_value; @@ -61,7 +61,7 @@ STATIC int16_t validate_point(mp_obj_t point, int16_t default_value) { return mp_obj_get_int(point); } -STATIC void extract_tuple(mp_obj_t xy_tuple, int16_t *x, int16_t *y, int16_t x_default, int16_t y_default) { +static void extract_tuple(mp_obj_t xy_tuple, int16_t *x, int16_t *y, int16_t x_default, int16_t y_default) { // Helper function for rotozoom // Extract x,y values from a tuple or default if None if (xy_tuple == mp_const_none) { @@ -77,7 +77,7 @@ STATIC void extract_tuple(mp_obj_t xy_tuple, int16_t *x, int16_t *y, int16_t x_d } } -STATIC void validate_clip_region(displayio_bitmap_t *bitmap, mp_obj_t clip0_tuple, int16_t *clip0_x, int16_t *clip0_y, +static void validate_clip_region(displayio_bitmap_t *bitmap, mp_obj_t clip0_tuple, int16_t *clip0_x, int16_t *clip0_y, mp_obj_t clip1_tuple, int16_t *clip1_x, int16_t *clip1_y) { // Helper function for rotozoom // 1. Extract the clip x,y points from the two clip tuples @@ -176,7 +176,7 @@ STATIC void validate_clip_region(displayio_bitmap_t *bitmap, mp_obj_t clip0_tupl //| set to None to copy all pixels""" //| ... //| -STATIC mp_obj_t bitmaptools_obj_rotozoom(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bitmaptools_obj_rotozoom(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum {ARG_dest_bitmap, ARG_source_bitmap, ARG_ox, ARG_oy, ARG_dest_clip0, ARG_dest_clip1, ARG_px, ARG_py, ARG_source_clip0, ARG_source_clip1, @@ -291,7 +291,7 @@ MAKE_ENUM_MAP(bitmaptools_blendmode) { MAKE_ENUM_MAP_ENTRY(bitmaptools_blendmode, Normal), MAKE_ENUM_MAP_ENTRY(bitmaptools_blendmode, Screen), }; -STATIC MP_DEFINE_CONST_DICT(bitmaptools_blendmode_locals_dict, bitmaptools_blendmode_locals_table); +static MP_DEFINE_CONST_DICT(bitmaptools_blendmode_locals_dict, bitmaptools_blendmode_locals_table); MAKE_PRINTER(bitmaptools, bitmaptools_blendmode); MAKE_ENUM_TYPE(bitmaptools, BlendMode, bitmaptools_blendmode); @@ -328,7 +328,7 @@ MAKE_ENUM_TYPE(bitmaptools, BlendMode, bitmaptools_blendmode); //| For the RGB colorspaces, they must have a bits-per-value of 16.""" //| -STATIC mp_obj_t bitmaptools_alphablend(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bitmaptools_alphablend(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum {ARG_dest_bitmap, ARG_source_bitmap_1, ARG_source_bitmap_2, ARG_colorspace, ARG_factor_1, ARG_factor_2, ARG_blendmode, ARG_skip_source1_index, ARG_skip_source2_index}; static const mp_arg_t allowed_args[] = { @@ -429,7 +429,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(bitmaptools_alphablend_obj, 0, bitmaptools_alphablend //| fill region in the destination bitmap""" //| ... //| -STATIC mp_obj_t bitmaptools_obj_fill_region(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bitmaptools_obj_fill_region(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum {ARG_dest_bitmap, ARGS_X1_Y1_X2_Y2, ARG_value}; static const mp_arg_t allowed_args[] = { @@ -477,7 +477,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(bitmaptools_fill_region_obj, 0, bitmaptools_obj_fill_ //| value color in the enclosed area in the destination bitmap""" //| ... //| -STATIC mp_obj_t bitmaptools_obj_boundary_fill(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bitmaptools_obj_boundary_fill(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum {ARG_dest_bitmap, ARG_x, ARG_y, ARG_fill_color_value, ARG_replaced_color_value}; static const mp_arg_t allowed_args[] = { @@ -537,7 +537,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(bitmaptools_boundary_fill_obj, 0, bitmaptools_obj_bou //| line in the destination bitmap""" //| ... //| -STATIC mp_obj_t bitmaptools_obj_draw_line(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bitmaptools_obj_draw_line(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum {ARG_dest_bitmap, ARG_x1, ARG_y1, ARG_x2, ARG_y2, ARG_value}; static const mp_arg_t allowed_args[] = { @@ -623,7 +623,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(bitmaptools_draw_line_obj, 0, bitmaptools_obj_draw_li //| """ //| ... //| -STATIC mp_obj_t bitmaptools_obj_draw_polygon(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bitmaptools_obj_draw_polygon(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum {ARG_dest_bitmap, ARG_xs, ARG_ys, ARG_value, ARG_close}; static const mp_arg_t allowed_args[] = { @@ -705,7 +705,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(bitmaptools_draw_polygon_obj, 0, bitmaptools_obj_draw //| """ //| ... //| -STATIC mp_obj_t bitmaptools_arrayblit(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bitmaptools_arrayblit(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_bitmap, ARG_data, ARGS_X1_Y1_X2_Y2, ARG_skip_index }; static const mp_arg_t allowed_args[] = { { MP_QSTR_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} }, @@ -769,7 +769,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(bitmaptools_arrayblit_obj, 0, bitmaptools_arrayblit); //| ... //| -STATIC mp_obj_t bitmaptools_readinto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bitmaptools_readinto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_bitmap, ARG_file, ARG_bits_per_pixel, ARG_element_size, ARG_reverse_pixels_in_element, ARG_swap_bytes_in_element, ARG_reverse_rows }; static const mp_arg_t allowed_args[] = { { MP_QSTR_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} }, @@ -837,7 +837,7 @@ MAKE_ENUM_MAP(bitmaptools_dither_algorithm) { MAKE_ENUM_MAP_ENTRY(dither_algorithm, Atkinson), MAKE_ENUM_MAP_ENTRY(dither_algorithm, FloydStenberg), }; -STATIC MP_DEFINE_CONST_DICT(bitmaptools_dither_algorithm_locals_dict, bitmaptools_dither_algorithm_locals_table); +static MP_DEFINE_CONST_DICT(bitmaptools_dither_algorithm_locals_dict, bitmaptools_dither_algorithm_locals_table); MAKE_PRINTER(bitmaptools, bitmaptools_dither_algorithm); @@ -858,7 +858,7 @@ MAKE_ENUM_TYPE(bitmaptools, DitherAlgorithm, bitmaptools_dither_algorithm); //| """ //| ... //| -STATIC mp_obj_t bitmaptools_dither(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bitmaptools_dither(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_dest_bitmap, ARG_source_bitmap, ARG_source_colorspace, ARG_algorithm }; static const mp_arg_t allowed_args[] = { { MP_QSTR_dest_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} }, @@ -951,7 +951,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(bitmaptools_dither_obj, 0, bitmaptools_dither); //| //| ... //| -STATIC mp_obj_t bitmaptools_obj_draw_circle(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bitmaptools_obj_draw_circle(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum {ARG_dest_bitmap, ARG_x, ARG_y, ARG_radius, ARG_value}; static const mp_arg_t allowed_args[] = { @@ -1021,7 +1021,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(bitmaptools_draw_circle_obj, 0, bitmaptools_obj_draw_ //| by the pixels from the source""" //| ... //| -STATIC mp_obj_t bitmaptools_obj_blit(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bitmaptools_obj_blit(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum {ARG_destination, ARG_source, ARG_x, ARG_y, ARG_x1, ARG_y1, ARG_x2, ARG_y2, ARG_skip_source_index, ARG_skip_dest_index}; static const mp_arg_t allowed_args[] = { {MP_QSTR_dest_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} }, @@ -1083,7 +1083,7 @@ STATIC mp_obj_t bitmaptools_obj_blit(size_t n_args, const mp_obj_t *pos_args, mp MP_DEFINE_CONST_FUN_OBJ_KW(bitmaptools_blit_obj, 1, bitmaptools_obj_blit); -STATIC const mp_rom_map_elem_t bitmaptools_module_globals_table[] = { +static const mp_rom_map_elem_t bitmaptools_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_bitmaptools) }, { MP_ROM_QSTR(MP_QSTR_readinto), MP_ROM_PTR(&bitmaptools_readinto_obj) }, { MP_ROM_QSTR(MP_QSTR_rotozoom), MP_ROM_PTR(&bitmaptools_rotozoom_obj) }, @@ -1099,7 +1099,7 @@ STATIC const mp_rom_map_elem_t bitmaptools_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_BlendMode), MP_ROM_PTR(&bitmaptools_blendmode_type) }, { MP_ROM_QSTR(MP_QSTR_DitherAlgorithm), MP_ROM_PTR(&bitmaptools_dither_algorithm_type) }, }; -STATIC MP_DEFINE_CONST_DICT(bitmaptools_module_globals, bitmaptools_module_globals_table); +static MP_DEFINE_CONST_DICT(bitmaptools_module_globals, bitmaptools_module_globals_table); const mp_obj_module_t bitmaptools_module = { .base = {&mp_type_module }, diff --git a/shared-bindings/bitops/__init__.c b/shared-bindings/bitops/__init__.c index 9aabfb5f4f59..dc07436866a3 100644 --- a/shared-bindings/bitops/__init__.c +++ b/shared-bindings/bitops/__init__.c @@ -36,7 +36,7 @@ //| ... //| -STATIC mp_obj_t bit_transpose(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t bit_transpose(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_input, ARG_output, ARG_width }; static const mp_arg_t allowed_args[] = { { MP_QSTR_input, MP_ARG_OBJ | MP_ARG_REQUIRED }, @@ -65,14 +65,14 @@ STATIC mp_obj_t bit_transpose(size_t n_args, const mp_obj_t *pos_args, mp_map_t common_hal_bitops_bit_transpose(output_bufinfo.buf, input_bufinfo.buf, inlen, width); return args[ARG_output].u_obj; } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(bitops_bit_transpose_obj, 0, bit_transpose); +static MP_DEFINE_CONST_FUN_OBJ_KW(bitops_bit_transpose_obj, 0, bit_transpose); -STATIC const mp_rom_map_elem_t bitops_module_globals_table[] = { +static const mp_rom_map_elem_t bitops_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_bitops) }, { MP_ROM_QSTR(MP_QSTR_bit_transpose), MP_ROM_PTR(&bitops_bit_transpose_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(bitops_module_globals, bitops_module_globals_table); +static MP_DEFINE_CONST_DICT(bitops_module_globals, bitops_module_globals_table); const mp_obj_module_t bitops_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/board/__init__.c b/shared-bindings/board/__init__.c index ba257032ad67..1a2721a91c4f 100644 --- a/shared-bindings/board/__init__.c +++ b/shared-bindings/board/__init__.c @@ -47,11 +47,11 @@ //| ... //| #if CIRCUITPY_BOARD_I2C -STATIC mp_obj_t board_i2c_0(void) { +static mp_obj_t board_i2c_0(void) { return common_hal_board_create_i2c(0); } #else -STATIC mp_obj_t board_i2c_0(void) { +static mp_obj_t board_i2c_0(void) { mp_raise_NotImplementedError_varg(MP_ERROR_TEXT("No default %q bus"), MP_QSTR_I2C); return MP_ROM_NONE; } @@ -65,11 +65,11 @@ MP_DEFINE_CONST_FUN_OBJ_0(board_i2c_obj, board_i2c_0); //| ... //| #if CIRCUITPY_BOARD_SPI -STATIC mp_obj_t board_spi_0(void) { +static mp_obj_t board_spi_0(void) { return common_hal_board_create_spi(0); } #else -STATIC mp_obj_t board_spi_0(void) { +static mp_obj_t board_spi_0(void) { mp_raise_NotImplementedError_varg(MP_ERROR_TEXT("No default %q bus"), MP_QSTR_SPI); return MP_ROM_NONE; } @@ -83,11 +83,11 @@ MP_DEFINE_CONST_FUN_OBJ_0(board_spi_obj, board_spi_0); //| ... //| #if CIRCUITPY_BOARD_UART -STATIC mp_obj_t board_uart_0(void) { +static mp_obj_t board_uart_0(void) { return common_hal_board_create_uart(0); } #else -STATIC mp_obj_t board_uart_0(void) { +static mp_obj_t board_uart_0(void) { mp_raise_NotImplementedError_varg(MP_ERROR_TEXT("No default %q bus"), MP_QSTR_UART); return MP_ROM_NONE; } diff --git a/shared-bindings/board/__init__.h b/shared-bindings/board/__init__.h index 004ece1eaf34..7c9a59d2dbd0 100644 --- a/shared-bindings/board/__init__.h +++ b/shared-bindings/board/__init__.h @@ -12,7 +12,7 @@ #include "shared-bindings/microcontroller/Pin.h" // for the pin definitions extern const mp_obj_dict_t board_module_globals; -STATIC const MP_DEFINE_STR_OBJ(board_module_id_obj, CIRCUITPY_BOARD_ID); +static const MP_DEFINE_STR_OBJ(board_module_id_obj, CIRCUITPY_BOARD_ID); bool common_hal_board_is_i2c(mp_obj_t obj); mp_obj_t common_hal_board_get_i2c(const mp_int_t instance); @@ -33,7 +33,7 @@ mp_obj_t board_uart(size_t n_args, const mp_obj_t *args); MP_DECLARE_CONST_FUN_OBJ_0(board_uart_obj); #define CIRCUITPY_BOARD_BUS_SINGLETON(name, bus, instance) \ - STATIC mp_obj_t board_##name(void) { \ + static mp_obj_t board_##name(void) { \ return common_hal_board_create_##bus(instance); \ } \ MP_DEFINE_CONST_FUN_OBJ_0(board_##name##_obj, board_##name); diff --git a/shared-bindings/busdisplay/BusDisplay.c b/shared-bindings/busdisplay/BusDisplay.c index 0247010f4f29..1b9a1a70c7e9 100644 --- a/shared-bindings/busdisplay/BusDisplay.c +++ b/shared-bindings/busdisplay/BusDisplay.c @@ -125,7 +125,7 @@ //| :param int backlight_pwm_frequency: The frequency to use to drive the PWM for backlight brightness control. Default is 50000. //| """ //| ... -STATIC mp_obj_t busdisplay_busdisplay_make_new(const mp_obj_type_t *type, size_t n_args, +static mp_obj_t busdisplay_busdisplay_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_display_bus, ARG_init_sequence, ARG_width, ARG_height, ARG_colstart, ARG_rowstart, ARG_rotation, ARG_color_depth, ARG_grayscale, ARG_pixels_in_byte_share_row, @@ -226,7 +226,7 @@ static busdisplay_busdisplay_obj_t *native_display(mp_obj_t display_obj) { } // Undocumented show() implementation with a friendly error message. -STATIC mp_obj_t busdisplay_busdisplay_obj_show(mp_obj_t self_in, mp_obj_t group_in) { +static mp_obj_t busdisplay_busdisplay_obj_show(mp_obj_t self_in, mp_obj_t group_in) { mp_raise_AttributeError(MP_ERROR_TEXT(".show(x) removed. Use .root_group = x")); return mp_const_none; } @@ -258,7 +258,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(busdisplay_busdisplay_show_obj, busdisplay_busdisplay_ //| :param int minimum_frames_per_second: The minimum number of times the screen should be updated per second. //| """ //| ... -STATIC mp_obj_t busdisplay_busdisplay_obj_refresh(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t busdisplay_busdisplay_obj_refresh(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_target_frames_per_second, ARG_minimum_frames_per_second }; static const mp_arg_t allowed_args[] = { { MP_QSTR_target_frames_per_second, MP_ARG_OBJ | MP_ARG_KW_ONLY, {.u_obj = mp_const_none} }, @@ -289,13 +289,13 @@ MP_DEFINE_CONST_FUN_OBJ_KW(busdisplay_busdisplay_refresh_obj, 1, busdisplay_busd //| auto_refresh: bool //| """True when the display is refreshed automatically.""" -STATIC mp_obj_t busdisplay_busdisplay_obj_get_auto_refresh(mp_obj_t self_in) { +static mp_obj_t busdisplay_busdisplay_obj_get_auto_refresh(mp_obj_t self_in) { busdisplay_busdisplay_obj_t *self = native_display(self_in); return mp_obj_new_bool(common_hal_busdisplay_busdisplay_get_auto_refresh(self)); } MP_DEFINE_CONST_FUN_OBJ_1(busdisplay_busdisplay_get_auto_refresh_obj, busdisplay_busdisplay_obj_get_auto_refresh); -STATIC mp_obj_t busdisplay_busdisplay_obj_set_auto_refresh(mp_obj_t self_in, mp_obj_t auto_refresh) { +static mp_obj_t busdisplay_busdisplay_obj_set_auto_refresh(mp_obj_t self_in, mp_obj_t auto_refresh) { busdisplay_busdisplay_obj_t *self = native_display(self_in); common_hal_busdisplay_busdisplay_set_auto_refresh(self, mp_obj_is_true(auto_refresh)); @@ -310,7 +310,7 @@ MP_PROPERTY_GETSET(busdisplay_busdisplay_auto_refresh_obj, //| brightness: float //| """The brightness of the display as a float. 0.0 is off and 1.0 is full brightness.""" -STATIC mp_obj_t busdisplay_busdisplay_obj_get_brightness(mp_obj_t self_in) { +static mp_obj_t busdisplay_busdisplay_obj_get_brightness(mp_obj_t self_in) { busdisplay_busdisplay_obj_t *self = native_display(self_in); mp_float_t brightness = common_hal_busdisplay_busdisplay_get_brightness(self); if (brightness < 0) { @@ -320,7 +320,7 @@ STATIC mp_obj_t busdisplay_busdisplay_obj_get_brightness(mp_obj_t self_in) { } MP_DEFINE_CONST_FUN_OBJ_1(busdisplay_busdisplay_get_brightness_obj, busdisplay_busdisplay_obj_get_brightness); -STATIC mp_obj_t busdisplay_busdisplay_obj_set_brightness(mp_obj_t self_in, mp_obj_t brightness_obj) { +static mp_obj_t busdisplay_busdisplay_obj_set_brightness(mp_obj_t self_in, mp_obj_t brightness_obj) { busdisplay_busdisplay_obj_t *self = native_display(self_in); mp_float_t brightness = mp_obj_get_float(brightness_obj); if (brightness < 0 || brightness > 1.0) { @@ -340,7 +340,7 @@ MP_PROPERTY_GETSET(busdisplay_busdisplay_brightness_obj, //| width: int //| """Gets the width of the board""" -STATIC mp_obj_t busdisplay_busdisplay_obj_get_width(mp_obj_t self_in) { +static mp_obj_t busdisplay_busdisplay_obj_get_width(mp_obj_t self_in) { busdisplay_busdisplay_obj_t *self = native_display(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_busdisplay_busdisplay_get_width(self)); } @@ -351,7 +351,7 @@ MP_PROPERTY_GETTER(busdisplay_busdisplay_width_obj, //| height: int //| """Gets the height of the board""" -STATIC mp_obj_t busdisplay_busdisplay_obj_get_height(mp_obj_t self_in) { +static mp_obj_t busdisplay_busdisplay_obj_get_height(mp_obj_t self_in) { busdisplay_busdisplay_obj_t *self = native_display(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_busdisplay_busdisplay_get_height(self)); } @@ -362,12 +362,12 @@ MP_PROPERTY_GETTER(busdisplay_busdisplay_height_obj, //| rotation: int //| """The rotation of the display as an int in degrees.""" -STATIC mp_obj_t busdisplay_busdisplay_obj_get_rotation(mp_obj_t self_in) { +static mp_obj_t busdisplay_busdisplay_obj_get_rotation(mp_obj_t self_in) { busdisplay_busdisplay_obj_t *self = native_display(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_busdisplay_busdisplay_get_rotation(self)); } MP_DEFINE_CONST_FUN_OBJ_1(busdisplay_busdisplay_get_rotation_obj, busdisplay_busdisplay_obj_get_rotation); -STATIC mp_obj_t busdisplay_busdisplay_obj_set_rotation(mp_obj_t self_in, mp_obj_t value) { +static mp_obj_t busdisplay_busdisplay_obj_set_rotation(mp_obj_t self_in, mp_obj_t value) { busdisplay_busdisplay_obj_t *self = native_display(self_in); common_hal_busdisplay_busdisplay_set_rotation(self, mp_obj_get_int(value)); return mp_const_none; @@ -381,7 +381,7 @@ MP_PROPERTY_GETSET(busdisplay_busdisplay_rotation_obj, //| bus: _DisplayBus //| """The bus being used by the display""" -STATIC mp_obj_t busdisplay_busdisplay_obj_get_bus(mp_obj_t self_in) { +static mp_obj_t busdisplay_busdisplay_obj_get_bus(mp_obj_t self_in) { busdisplay_busdisplay_obj_t *self = native_display(self_in); return common_hal_busdisplay_busdisplay_get_bus(self); } @@ -395,13 +395,13 @@ MP_PROPERTY_GETTER(busdisplay_busdisplay_bus_obj, //| If the root group is set to `displayio.CIRCUITPYTHON_TERMINAL`, the default CircuitPython terminal will be shown. //| If the root group is set to ``None``, no output will be shown. //| """ -STATIC mp_obj_t busdisplay_busdisplay_obj_get_root_group(mp_obj_t self_in) { +static mp_obj_t busdisplay_busdisplay_obj_get_root_group(mp_obj_t self_in) { busdisplay_busdisplay_obj_t *self = native_display(self_in); return common_hal_busdisplay_busdisplay_get_root_group(self); } MP_DEFINE_CONST_FUN_OBJ_1(busdisplay_busdisplay_get_root_group_obj, busdisplay_busdisplay_obj_get_root_group); -STATIC mp_obj_t busdisplay_busdisplay_obj_set_root_group(mp_obj_t self_in, mp_obj_t group_in) { +static mp_obj_t busdisplay_busdisplay_obj_set_root_group(mp_obj_t self_in, mp_obj_t group_in) { busdisplay_busdisplay_obj_t *self = native_display(self_in); displayio_group_t *group = NULL; if (group_in != mp_const_none) { @@ -426,7 +426,7 @@ MP_PROPERTY_GETSET(busdisplay_busdisplay_root_group_obj, //| """ //| ... //| -STATIC mp_obj_t busdisplay_busdisplay_obj_fill_row(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t busdisplay_busdisplay_obj_fill_row(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_y, ARG_buffer }; static const mp_arg_t allowed_args[] = { { MP_QSTR_y, MP_ARG_INT | MP_ARG_REQUIRED, {.u_int = -1} }, @@ -477,7 +477,7 @@ STATIC mp_obj_t busdisplay_busdisplay_obj_fill_row(size_t n_args, const mp_obj_t } MP_DEFINE_CONST_FUN_OBJ_KW(busdisplay_busdisplay_fill_row_obj, 1, busdisplay_busdisplay_obj_fill_row); -STATIC const mp_rom_map_elem_t busdisplay_busdisplay_locals_dict_table[] = { +static const mp_rom_map_elem_t busdisplay_busdisplay_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_show), MP_ROM_PTR(&busdisplay_busdisplay_show_obj) }, { MP_ROM_QSTR(MP_QSTR_refresh), MP_ROM_PTR(&busdisplay_busdisplay_refresh_obj) }, { MP_ROM_QSTR(MP_QSTR_fill_row), MP_ROM_PTR(&busdisplay_busdisplay_fill_row_obj) }, @@ -492,7 +492,7 @@ STATIC const mp_rom_map_elem_t busdisplay_busdisplay_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_bus), MP_ROM_PTR(&busdisplay_busdisplay_bus_obj) }, { MP_ROM_QSTR(MP_QSTR_root_group), MP_ROM_PTR(&busdisplay_busdisplay_root_group_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(busdisplay_busdisplay_locals_dict, busdisplay_busdisplay_locals_dict_table); +static MP_DEFINE_CONST_DICT(busdisplay_busdisplay_locals_dict, busdisplay_busdisplay_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( busdisplay_busdisplay_type, diff --git a/shared-bindings/busdisplay/__init__.c b/shared-bindings/busdisplay/__init__.c index 2751f70bb2ab..88cd48ee3fb4 100644 --- a/shared-bindings/busdisplay/__init__.c +++ b/shared-bindings/busdisplay/__init__.c @@ -18,12 +18,12 @@ //| //| """ -STATIC const mp_rom_map_elem_t busdisplay_module_globals_table[] = { +static const mp_rom_map_elem_t busdisplay_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_displayio) }, { MP_ROM_QSTR(MP_QSTR_BusDisplay), MP_ROM_PTR(&busdisplay_busdisplay_type) }, }; -STATIC MP_DEFINE_CONST_DICT(busdisplay_module_globals, busdisplay_module_globals_table); +static MP_DEFINE_CONST_DICT(busdisplay_module_globals, busdisplay_module_globals_table); const mp_obj_module_t busdisplay_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/busio/I2C.c b/shared-bindings/busio/I2C.c index ca22f048faaf..8a1b832a7a8d 100644 --- a/shared-bindings/busio/I2C.c +++ b/shared-bindings/busio/I2C.c @@ -46,7 +46,7 @@ //| :class:`bitbangio.I2C`; ignored for :class:`busio.I2C`) //| """ //| ... -STATIC mp_obj_t busio_i2c_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t busio_i2c_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { #if CIRCUITPY_BUSIO_I2C busio_i2c_obj_t *self = mp_obj_malloc(busio_i2c_obj_t, &busio_i2c_type); enum { ARG_scl, ARG_sda, ARG_frequency, ARG_timeout }; @@ -74,14 +74,14 @@ STATIC mp_obj_t busio_i2c_make_new(const mp_obj_type_t *type, size_t n_args, siz //| def deinit(self) -> None: //| """Releases control of the underlying hardware so other classes can use it.""" //| ... -STATIC mp_obj_t busio_i2c_obj_deinit(mp_obj_t self_in) { +static mp_obj_t busio_i2c_obj_deinit(mp_obj_t self_in) { busio_i2c_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_busio_i2c_deinit(self); return mp_const_none; } MP_DEFINE_CONST_FUN_OBJ_1(busio_i2c_deinit_obj, busio_i2c_obj_deinit); -STATIC void check_for_deinit(busio_i2c_obj_t *self) { +static void check_for_deinit(busio_i2c_obj_t *self) { if (common_hal_busio_i2c_deinited(self)) { raise_deinited_error(); } @@ -96,12 +96,12 @@ STATIC void check_for_deinit(busio_i2c_obj_t *self) { //| """Automatically deinitializes the hardware on context exit. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t busio_i2c_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t busio_i2c_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_busio_i2c_deinit(MP_OBJ_TO_PTR(args[0])); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(busio_i2c___exit___obj, 4, 4, busio_i2c_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(busio_i2c___exit___obj, 4, 4, busio_i2c_obj___exit__); static void check_lock(busio_i2c_obj_t *self) { asm (""); @@ -117,7 +117,7 @@ static void check_lock(busio_i2c_obj_t *self) { //| :return: List of device ids on the I2C bus //| :rtype: list""" //| ... -STATIC mp_obj_t busio_i2c_scan(mp_obj_t self_in) { +static mp_obj_t busio_i2c_scan(mp_obj_t self_in) { busio_i2c_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); check_lock(self); @@ -139,7 +139,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(busio_i2c_scan_obj, busio_i2c_scan); //| :return: True when lock has been grabbed //| :rtype: bool""" //| ... -STATIC mp_obj_t busio_i2c_obj_try_lock(mp_obj_t self_in) { +static mp_obj_t busio_i2c_obj_try_lock(mp_obj_t self_in) { busio_i2c_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return mp_obj_new_bool(common_hal_busio_i2c_try_lock(self)); @@ -149,7 +149,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(busio_i2c_try_lock_obj, busio_i2c_obj_try_lock); //| def unlock(self) -> None: //| """Releases the I2C lock.""" //| ... -STATIC mp_obj_t busio_i2c_obj_unlock(mp_obj_t self_in) { +static mp_obj_t busio_i2c_obj_unlock(mp_obj_t self_in) { busio_i2c_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_busio_i2c_unlock(self); @@ -173,7 +173,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(busio_i2c_unlock_obj, busio_i2c_obj_unlock); //| :param int start: beginning of buffer slice //| :param int end: end of buffer slice; if not specified, use ``len(buffer)``""" //| ... -STATIC mp_obj_t busio_i2c_readfrom_into(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t busio_i2c_readfrom_into(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_address, ARG_buffer, ARG_start, ARG_end }; static const mp_arg_t allowed_args[] = { { MP_QSTR_address, MP_ARG_REQUIRED | MP_ARG_INT, {.u_int = 0} }, @@ -233,7 +233,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(busio_i2c_readfrom_into_obj, 1, busio_i2c_readfrom_in //| :param int end: end of buffer slice; if not specified, use ``len(buffer)`` //| """ //| ... -STATIC mp_obj_t busio_i2c_writeto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t busio_i2c_writeto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_address, ARG_buffer, ARG_start, ARG_end }; static const mp_arg_t allowed_args[] = { { MP_QSTR_address, MP_ARG_REQUIRED | MP_ARG_INT, {.u_int = 0} }, @@ -272,7 +272,7 @@ STATIC mp_obj_t busio_i2c_writeto(size_t n_args, const mp_obj_t *pos_args, mp_ma return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(busio_i2c_writeto_obj, 1, busio_i2c_writeto); +static MP_DEFINE_CONST_FUN_OBJ_KW(busio_i2c_writeto_obj, 1, busio_i2c_writeto); //| import sys //| def writeto_then_readfrom( @@ -308,7 +308,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_KW(busio_i2c_writeto_obj, 1, busio_i2c_writeto); //| """ //| ... //| -STATIC mp_obj_t busio_i2c_writeto_then_readfrom(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t busio_i2c_writeto_then_readfrom(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_address, ARG_out_buffer, ARG_in_buffer, ARG_out_start, ARG_out_end, ARG_in_start, ARG_in_end }; static const mp_arg_t allowed_args[] = { { MP_QSTR_address, MP_ARG_REQUIRED | MP_ARG_INT, {.u_int = 0} }, @@ -359,7 +359,7 @@ STATIC mp_obj_t busio_i2c_writeto_then_readfrom(size_t n_args, const mp_obj_t *p MP_DEFINE_CONST_FUN_OBJ_KW(busio_i2c_writeto_then_readfrom_obj, 1, busio_i2c_writeto_then_readfrom); #endif // CIRCUITPY_BUSIO_I2C -STATIC const mp_rom_map_elem_t busio_i2c_locals_dict_table[] = { +static const mp_rom_map_elem_t busio_i2c_locals_dict_table[] = { #if CIRCUITPY_BUSIO_I2C { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&busio_i2c_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, @@ -375,7 +375,7 @@ STATIC const mp_rom_map_elem_t busio_i2c_locals_dict_table[] = { #endif // CIRCUITPY_BUSIO_I2C }; -STATIC MP_DEFINE_CONST_DICT(busio_i2c_locals_dict, busio_i2c_locals_dict_table); +static MP_DEFINE_CONST_DICT(busio_i2c_locals_dict, busio_i2c_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( busio_i2c_type, diff --git a/shared-bindings/busio/SPI.c b/shared-bindings/busio/SPI.c index 42dc9389c8c4..2e52486cabe8 100644 --- a/shared-bindings/busio/SPI.c +++ b/shared-bindings/busio/SPI.c @@ -83,7 +83,7 @@ // TODO(tannewt): Support LSB SPI. -STATIC mp_obj_t busio_spi_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t busio_spi_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { #if CIRCUITPY_BUSIO_SPI busio_spi_obj_t *self = mp_obj_malloc(busio_spi_obj_t, &busio_spi_type); enum { ARG_clock, ARG_MOSI, ARG_MISO, ARG_half_duplex }; @@ -115,7 +115,7 @@ STATIC mp_obj_t busio_spi_make_new(const mp_obj_type_t *type, size_t n_args, siz //| def deinit(self) -> None: //| """Turn off the SPI bus.""" //| ... -STATIC mp_obj_t busio_spi_obj_deinit(mp_obj_t self_in) { +static mp_obj_t busio_spi_obj_deinit(mp_obj_t self_in) { busio_spi_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_busio_spi_deinit(self); return mp_const_none; @@ -131,21 +131,21 @@ MP_DEFINE_CONST_FUN_OBJ_1(busio_spi_deinit_obj, busio_spi_obj_deinit); //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t busio_spi_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t busio_spi_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_busio_spi_deinit(MP_OBJ_TO_PTR(args[0])); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(busio_spi_obj___exit___obj, 4, 4, busio_spi_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(busio_spi_obj___exit___obj, 4, 4, busio_spi_obj___exit__); -STATIC void check_lock(busio_spi_obj_t *self) { +static void check_lock(busio_spi_obj_t *self) { asm (""); if (!common_hal_busio_spi_has_lock(self)) { mp_raise_RuntimeError(MP_ERROR_TEXT("Function requires lock")); } } -STATIC void check_for_deinit(busio_spi_obj_t *self) { +static void check_for_deinit(busio_spi_obj_t *self) { if (common_hal_busio_spi_deinited(self)) { raise_deinited_error(); } @@ -176,7 +176,7 @@ STATIC void check_for_deinit(busio_spi_obj_t *self) { //| which allows only one (to allow for an additional I2C object).""" //| ... -STATIC mp_obj_t busio_spi_configure(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t busio_spi_configure(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_baudrate, ARG_polarity, ARG_phase, ARG_bits }; static const mp_arg_t allowed_args[] = { { MP_QSTR_baudrate, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 100000} }, @@ -209,7 +209,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(busio_spi_configure_obj, 1, busio_spi_configure); //| :rtype: bool""" //| ... -STATIC mp_obj_t busio_spi_obj_try_lock(mp_obj_t self_in) { +static mp_obj_t busio_spi_obj_try_lock(mp_obj_t self_in) { busio_spi_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bool(common_hal_busio_spi_try_lock(self)); } @@ -219,7 +219,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(busio_spi_try_lock_obj, busio_spi_obj_try_lock); //| """Releases the SPI lock.""" //| ... -STATIC mp_obj_t busio_spi_obj_unlock(mp_obj_t self_in) { +static mp_obj_t busio_spi_obj_unlock(mp_obj_t self_in) { busio_spi_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_busio_spi_unlock(self); @@ -242,7 +242,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(busio_spi_unlock_obj, busio_spi_obj_unlock); //| """ //| ... -STATIC mp_obj_t busio_spi_write(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t busio_spi_write(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_buffer, ARG_start, ARG_end }; static const mp_arg_t allowed_args[] = { { MP_QSTR_buffer, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} }, @@ -306,7 +306,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(busio_spi_write_obj, 1, busio_spi_write); //| """ //| ... -STATIC mp_obj_t busio_spi_readinto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t busio_spi_readinto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_buffer, ARG_start, ARG_end, ARG_write_value }; static const mp_arg_t allowed_args[] = { { MP_QSTR_buffer, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} }, @@ -379,7 +379,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(busio_spi_readinto_obj, 1, busio_spi_readinto); //| """ //| ... -STATIC mp_obj_t busio_spi_write_readinto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t busio_spi_write_readinto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_out_buffer, ARG_in_buffer, ARG_out_start, ARG_out_end, ARG_in_start, ARG_in_end }; static const mp_arg_t allowed_args[] = { { MP_QSTR_out_buffer, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} }, @@ -439,7 +439,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(busio_spi_write_readinto_obj, 1, busio_spi_write_read //| due to internal limitations.""" //| -STATIC mp_obj_t busio_spi_obj_get_frequency(mp_obj_t self_in) { +static mp_obj_t busio_spi_obj_get_frequency(mp_obj_t self_in) { busio_spi_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_busio_spi_get_frequency(self)); @@ -451,7 +451,7 @@ MP_PROPERTY_GETTER(busio_spi_frequency_obj, #endif // CIRCUITPY_BUSIO_SPI -STATIC const mp_rom_map_elem_t busio_spi_locals_dict_table[] = { +static const mp_rom_map_elem_t busio_spi_locals_dict_table[] = { #if CIRCUITPY_BUSIO_SPI { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&busio_spi_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, @@ -467,7 +467,7 @@ STATIC const mp_rom_map_elem_t busio_spi_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_frequency), MP_ROM_PTR(&busio_spi_frequency_obj) } #endif // CIRCUITPY_BUSIO_SPI }; -STATIC MP_DEFINE_CONST_DICT(busio_spi_locals_dict, busio_spi_locals_dict_table); +static MP_DEFINE_CONST_DICT(busio_spi_locals_dict, busio_spi_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( busio_spi_type, diff --git a/shared-bindings/busio/UART.c b/shared-bindings/busio/UART.c index 9e4f09d9cbc1..3a7a60284857 100644 --- a/shared-bindings/busio/UART.c +++ b/shared-bindings/busio/UART.c @@ -90,12 +90,12 @@ extern const busio_uart_parity_obj_t busio_uart_parity_even_obj; extern const busio_uart_parity_obj_t busio_uart_parity_odd_obj; #if CIRCUITPY_BUSIO_UART -STATIC void validate_timeout(mp_float_t timeout) { +static void validate_timeout(mp_float_t timeout) { mp_arg_validate_int_range((int)timeout, 0, 100, MP_QSTR_timeout); } #endif // CIRCUITPY_BUSIO_UART -STATIC mp_obj_t busio_uart_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t busio_uart_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { #if CIRCUITPY_BUSIO_UART enum { ARG_tx, ARG_rx, ARG_baudrate, ARG_bits, ARG_parity, ARG_stop, ARG_timeout, ARG_receiver_buffer_size, ARG_rts, ARG_cts, ARG_rs485_dir, ARG_rs485_invert}; @@ -166,7 +166,7 @@ STATIC mp_obj_t busio_uart_make_new(const mp_obj_type_t *type, size_t n_args, si #if CIRCUITPY_BUSIO_UART // Helper to ensure we have the native super class instead of a subclass. -STATIC busio_uart_obj_t *native_uart(mp_obj_t uart_obj) { +static busio_uart_obj_t *native_uart(mp_obj_t uart_obj) { mp_obj_t native_uart = mp_obj_cast_to_native_base(uart_obj, MP_OBJ_FROM_PTR(&busio_uart_type)); if (native_uart == MP_OBJ_NULL) { mp_raise_ValueError_varg(MP_ERROR_TEXT("Must be a %q subclass."), MP_QSTR_UART); @@ -179,14 +179,14 @@ STATIC busio_uart_obj_t *native_uart(mp_obj_t uart_obj) { //| def deinit(self) -> None: //| """Deinitialises the UART and releases any hardware resources for reuse.""" //| ... -STATIC mp_obj_t busio_uart_obj_deinit(mp_obj_t self_in) { +static mp_obj_t busio_uart_obj_deinit(mp_obj_t self_in) { busio_uart_obj_t *self = native_uart(self_in); common_hal_busio_uart_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(busio_uart_deinit_obj, busio_uart_obj_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(busio_uart_deinit_obj, busio_uart_obj_deinit); -STATIC void check_for_deinit(busio_uart_obj_t *self) { +static void check_for_deinit(busio_uart_obj_t *self) { if (common_hal_busio_uart_deinited(self)) { raise_deinited_error(); } @@ -201,12 +201,12 @@ STATIC void check_for_deinit(busio_uart_obj_t *self) { //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t busio_uart_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t busio_uart_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_busio_uart_deinit(MP_OBJ_TO_PTR(args[0])); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(busio_uart___exit___obj, 4, 4, busio_uart_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(busio_uart___exit___obj, 4, 4, busio_uart_obj___exit__); // These are standard stream methods. Code is in py/stream.c. // @@ -253,7 +253,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(busio_uart___exit___obj, 4, 4, busio_ //| ... // These three methods are used by the shared stream methods. -STATIC mp_uint_t busio_uart_read(mp_obj_t self_in, void *buf_in, mp_uint_t size, int *errcode) { +static mp_uint_t busio_uart_read(mp_obj_t self_in, void *buf_in, mp_uint_t size, int *errcode) { STREAM_DEBUG("busio_uart_read stream %d\n", size); busio_uart_obj_t *self = native_uart(self_in); check_for_deinit(self); @@ -267,7 +267,7 @@ STATIC mp_uint_t busio_uart_read(mp_obj_t self_in, void *buf_in, mp_uint_t size, return common_hal_busio_uart_read(self, buf, size, errcode); } -STATIC mp_uint_t busio_uart_write(mp_obj_t self_in, const void *buf_in, mp_uint_t size, int *errcode) { +static mp_uint_t busio_uart_write(mp_obj_t self_in, const void *buf_in, mp_uint_t size, int *errcode) { busio_uart_obj_t *self = native_uart(self_in); check_for_deinit(self); const byte *buf = buf_in; @@ -275,7 +275,7 @@ STATIC mp_uint_t busio_uart_write(mp_obj_t self_in, const void *buf_in, mp_uint_ return common_hal_busio_uart_write(self, buf, size, errcode); } -STATIC mp_uint_t busio_uart_ioctl(mp_obj_t self_in, mp_uint_t request, mp_uint_t arg, int *errcode) { +static mp_uint_t busio_uart_ioctl(mp_obj_t self_in, mp_uint_t request, mp_uint_t arg, int *errcode) { busio_uart_obj_t *self = native_uart(self_in); check_for_deinit(self); mp_uint_t ret; @@ -297,14 +297,14 @@ STATIC mp_uint_t busio_uart_ioctl(mp_obj_t self_in, mp_uint_t request, mp_uint_t //| baudrate: int //| """The current baudrate.""" -STATIC mp_obj_t busio_uart_obj_get_baudrate(mp_obj_t self_in) { +static mp_obj_t busio_uart_obj_get_baudrate(mp_obj_t self_in) { busio_uart_obj_t *self = native_uart(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_busio_uart_get_baudrate(self)); } MP_DEFINE_CONST_FUN_OBJ_1(busio_uart_get_baudrate_obj, busio_uart_obj_get_baudrate); -STATIC mp_obj_t busio_uart_obj_set_baudrate(mp_obj_t self_in, mp_obj_t baudrate) { +static mp_obj_t busio_uart_obj_set_baudrate(mp_obj_t self_in, mp_obj_t baudrate) { busio_uart_obj_t *self = native_uart(self_in); check_for_deinit(self); common_hal_busio_uart_set_baudrate(self, mp_obj_get_int(baudrate)); @@ -319,7 +319,7 @@ MP_PROPERTY_GETSET(busio_uart_baudrate_obj, //| in_waiting: int //| """The number of bytes in the input buffer, available to be read""" -STATIC mp_obj_t busio_uart_obj_get_in_waiting(mp_obj_t self_in) { +static mp_obj_t busio_uart_obj_get_in_waiting(mp_obj_t self_in) { busio_uart_obj_t *self = native_uart(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_busio_uart_rx_characters_available(self)); @@ -331,14 +331,14 @@ MP_PROPERTY_GETTER(busio_uart_in_waiting_obj, //| timeout: float //| """The current timeout, in seconds (float).""" -STATIC mp_obj_t busio_uart_obj_get_timeout(mp_obj_t self_in) { +static mp_obj_t busio_uart_obj_get_timeout(mp_obj_t self_in) { busio_uart_obj_t *self = native_uart(self_in); check_for_deinit(self); return mp_obj_new_float(common_hal_busio_uart_get_timeout(self)); } MP_DEFINE_CONST_FUN_OBJ_1(busio_uart_get_timeout_obj, busio_uart_obj_get_timeout); -STATIC mp_obj_t busio_uart_obj_set_timeout(mp_obj_t self_in, mp_obj_t timeout) { +static mp_obj_t busio_uart_obj_set_timeout(mp_obj_t self_in, mp_obj_t timeout) { busio_uart_obj_t *self = native_uart(self_in); check_for_deinit(self); mp_float_t timeout_float = mp_obj_get_float(timeout); @@ -357,13 +357,13 @@ MP_PROPERTY_GETSET(busio_uart_timeout_obj, //| """Discard any unread characters in the input buffer.""" //| ... //| -STATIC mp_obj_t busio_uart_obj_reset_input_buffer(mp_obj_t self_in) { +static mp_obj_t busio_uart_obj_reset_input_buffer(mp_obj_t self_in) { busio_uart_obj_t *self = native_uart(self_in); check_for_deinit(self); common_hal_busio_uart_clear_rx_buffer(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(busio_uart_reset_input_buffer_obj, busio_uart_obj_reset_input_buffer); +static MP_DEFINE_CONST_FUN_OBJ_1(busio_uart_reset_input_buffer_obj, busio_uart_obj_reset_input_buffer); //| class Parity: //| """Enum-like class to define the parity used to verify correct data transfer.""" //| @@ -383,13 +383,13 @@ const busio_uart_parity_obj_t busio_uart_parity_even_obj = { { &busio_uart_parity_type }, }; -STATIC const mp_rom_map_elem_t busio_uart_parity_locals_dict_table[] = { +static const mp_rom_map_elem_t busio_uart_parity_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_ODD), MP_ROM_PTR(&busio_uart_parity_odd_obj) }, { MP_ROM_QSTR(MP_QSTR_EVEN), MP_ROM_PTR(&busio_uart_parity_even_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(busio_uart_parity_locals_dict, busio_uart_parity_locals_dict_table); +static MP_DEFINE_CONST_DICT(busio_uart_parity_locals_dict, busio_uart_parity_locals_dict_table); -STATIC void busio_uart_parity_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { +static void busio_uart_parity_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { qstr parity = MP_QSTR_ODD; if (self_in == MP_ROM_PTR(&busio_uart_parity_even_obj)) { parity = MP_QSTR_EVEN; @@ -407,7 +407,7 @@ MP_DEFINE_CONST_OBJ_TYPE( #endif // CIRCUITPY_BUSIO_UART -STATIC const mp_rom_map_elem_t busio_uart_locals_dict_table[] = { +static const mp_rom_map_elem_t busio_uart_locals_dict_table[] = { #if CIRCUITPY_BUSIO_UART { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&busio_uart_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&busio_uart_deinit_obj) }, @@ -432,10 +432,10 @@ STATIC const mp_rom_map_elem_t busio_uart_locals_dict_table[] = { #endif // CIRCUITPY_BUSIO_UART }; -STATIC MP_DEFINE_CONST_DICT(busio_uart_locals_dict, busio_uart_locals_dict_table); +static MP_DEFINE_CONST_DICT(busio_uart_locals_dict, busio_uart_locals_dict_table); #if CIRCUITPY_BUSIO_UART -STATIC const mp_stream_p_t uart_stream_p = { +static const mp_stream_p_t uart_stream_p = { .read = busio_uart_read, .write = busio_uart_write, .ioctl = busio_uart_ioctl, diff --git a/shared-bindings/busio/__init__.c b/shared-bindings/busio/__init__.c index a491ae080219..028d73d9c368 100644 --- a/shared-bindings/busio/__init__.c +++ b/shared-bindings/busio/__init__.c @@ -64,14 +64,14 @@ //| .. jinja //| """ -STATIC const mp_rom_map_elem_t busio_module_globals_table[] = { +static const mp_rom_map_elem_t busio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_busio) }, { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&busio_i2c_type) }, { MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&busio_spi_type) }, { MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&busio_uart_type) }, }; -STATIC MP_DEFINE_CONST_DICT(busio_module_globals, busio_module_globals_table); +static MP_DEFINE_CONST_DICT(busio_module_globals, busio_module_globals_table); const mp_obj_module_t busio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/camera/Camera.c b/shared-bindings/camera/Camera.c index 449d0aec7e90..a0be953222b0 100644 --- a/shared-bindings/camera/Camera.c +++ b/shared-bindings/camera/Camera.c @@ -39,7 +39,7 @@ //| def __init__(self) -> None: //| """Initialize camera.""" //| ... -STATIC mp_obj_t camera_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t camera_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { camera_obj_t *self = mp_obj_malloc(camera_obj_t, &camera_type); // No arguments mp_arg_check_num(n_args, n_kw, 0, 0, false); @@ -51,14 +51,14 @@ STATIC mp_obj_t camera_make_new(const mp_obj_type_t *type, size_t n_args, size_t //| def deinit(self) -> None: //| """De-initialize camera.""" //| ... -STATIC mp_obj_t camera_obj_deinit(mp_obj_t self_in) { +static mp_obj_t camera_obj_deinit(mp_obj_t self_in) { camera_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_camera_deinit(self); return mp_const_none; } MP_DEFINE_CONST_FUN_OBJ_1(camera_deinit_obj, camera_obj_deinit); -STATIC void check_for_deinit(camera_obj_t *self) { +static void check_for_deinit(camera_obj_t *self) { if (common_hal_camera_deinited(self)) { raise_deinited_error(); } @@ -72,7 +72,7 @@ STATIC void check_for_deinit(camera_obj_t *self) { //| :rtype: int""" //| ... //| -STATIC mp_obj_t camera_obj_take_picture(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t camera_obj_take_picture(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_buffer, ARG_width, ARG_height, ARG_format }; static const mp_arg_t allowed_args[] = { { MP_QSTR_buffer, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -94,11 +94,11 @@ STATIC mp_obj_t camera_obj_take_picture(size_t n_args, const mp_obj_t *pos_args, } MP_DEFINE_CONST_FUN_OBJ_KW(camera_take_picture_obj, 1, camera_obj_take_picture); -STATIC const mp_rom_map_elem_t camera_locals_dict_table[] = { +static const mp_rom_map_elem_t camera_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&camera_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR_take_picture), MP_ROM_PTR(&camera_take_picture_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(camera_locals_dict, camera_locals_dict_table); +static MP_DEFINE_CONST_DICT(camera_locals_dict, camera_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( camera_type, diff --git a/shared-bindings/camera/ImageFormat.c b/shared-bindings/camera/ImageFormat.c index 9fc290cd2e8e..ad436b4b39e3 100644 --- a/shared-bindings/camera/ImageFormat.c +++ b/shared-bindings/camera/ImageFormat.c @@ -47,13 +47,13 @@ mp_obj_t camera_imageformat_type_to_obj(camera_imageformat_t format) { } } -STATIC const mp_rom_map_elem_t camera_imageformat_locals_dict_table[] = { +static const mp_rom_map_elem_t camera_imageformat_locals_dict_table[] = { {MP_ROM_QSTR(MP_QSTR_JPG), MP_ROM_PTR(&camera_imageformat_jpg_obj)}, {MP_ROM_QSTR(MP_QSTR_RGB565), MP_ROM_PTR(&camera_imageformat_rgb565_obj)}, }; -STATIC MP_DEFINE_CONST_DICT(camera_imageformat_locals_dict, camera_imageformat_locals_dict_table); +static MP_DEFINE_CONST_DICT(camera_imageformat_locals_dict, camera_imageformat_locals_dict_table); -STATIC void camera_imageformat_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { +static void camera_imageformat_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { qstr format = MP_QSTR_None; if (MP_OBJ_TO_PTR(self_in) == MP_ROM_PTR(&camera_imageformat_jpg_obj)) { format = MP_QSTR_JPG; diff --git a/shared-bindings/camera/__init__.c b/shared-bindings/camera/__init__.c index 96a97710f0f3..dbdd40755b0a 100644 --- a/shared-bindings/camera/__init__.c +++ b/shared-bindings/camera/__init__.c @@ -13,7 +13,7 @@ //| """Support for camera input //| //| The `camera` module contains classes to control the camera and take pictures.""" -STATIC const mp_rom_map_elem_t camera_module_globals_table[] = { +static const mp_rom_map_elem_t camera_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_camera) }, { MP_ROM_QSTR(MP_QSTR_Camera), MP_ROM_PTR(&camera_type) }, @@ -21,7 +21,7 @@ STATIC const mp_rom_map_elem_t camera_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_ImageFormat), MP_ROM_PTR(&camera_imageformat_type) }, }; -STATIC MP_DEFINE_CONST_DICT(camera_module_globals, camera_module_globals_table); +static MP_DEFINE_CONST_DICT(camera_module_globals, camera_module_globals_table); const mp_obj_module_t camera_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/canio/CAN.c b/shared-bindings/canio/CAN.c index a9c8de064141..82bf86dd97b2 100644 --- a/shared-bindings/canio/CAN.c +++ b/shared-bindings/canio/CAN.c @@ -42,7 +42,7 @@ //| :param bool auto_restart: If True, will restart communications after entering bus-off state //| """ //| ... -STATIC mp_obj_t canio_can_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t canio_can_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_tx, ARG_rx, ARG_baudrate, ARG_loopback, ARG_silent, ARG_auto_restart, NUM_ARGS }; static const mp_arg_t allowed_args[] = { { MP_QSTR_tx, MP_ARG_OBJ | MP_ARG_REQUIRED }, @@ -74,14 +74,14 @@ STATIC mp_obj_t canio_can_make_new(const mp_obj_type_t *type, size_t n_args, siz //| auto_restart: bool //| """If True, will restart communications after entering bus-off state""" -STATIC mp_obj_t canio_can_auto_restart_get(mp_obj_t self_in) { +static mp_obj_t canio_can_auto_restart_get(mp_obj_t self_in) { canio_can_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_canio_can_check_for_deinit(self); return mp_obj_new_bool(common_hal_canio_can_auto_restart_get(self)); } MP_DEFINE_CONST_FUN_OBJ_1(canio_can_auto_restart_get_obj, canio_can_auto_restart_get); -STATIC mp_obj_t canio_can_auto_restart_set(mp_obj_t self_in, mp_obj_t flag_in) { +static mp_obj_t canio_can_auto_restart_set(mp_obj_t self_in, mp_obj_t flag_in) { canio_can_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_canio_can_check_for_deinit(self); common_hal_canio_can_auto_restart_set(self, mp_obj_is_true(flag_in)); @@ -96,7 +96,7 @@ MP_PROPERTY_GETSET(canio_can_auto_restart_obj, //| baudrate: int //| """The baud rate (read-only)""" -STATIC mp_obj_t canio_can_baudrate_get(mp_obj_t self_in) { +static mp_obj_t canio_can_baudrate_get(mp_obj_t self_in) { canio_can_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_canio_can_check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_canio_can_baudrate_get(self)); @@ -108,7 +108,7 @@ MP_PROPERTY_GETTER(canio_can_baudrate_obj, //| transmit_error_count: int //| """The number of transmit errors (read-only). Increased for a detected transmission error, decreased for successful transmission. Limited to the range from 0 to 255 inclusive. Also called TEC.""" -STATIC mp_obj_t canio_can_transmit_error_count_get(mp_obj_t self_in) { +static mp_obj_t canio_can_transmit_error_count_get(mp_obj_t self_in) { canio_can_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_canio_can_check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_canio_can_transmit_error_count_get(self)); @@ -120,7 +120,7 @@ MP_PROPERTY_GETTER(canio_can_transmit_error_count_obj, //| receive_error_count: int //| """The number of receive errors (read-only). Increased for a detected reception error, decreased for successful reception. Limited to the range from 0 to 255 inclusive. Also called REC.""" -STATIC mp_obj_t canio_can_receive_error_count_get(mp_obj_t self_in) { +static mp_obj_t canio_can_receive_error_count_get(mp_obj_t self_in) { canio_can_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_canio_can_check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_canio_can_receive_error_count_get(self)); @@ -132,7 +132,7 @@ MP_PROPERTY_GETTER(canio_can_receive_error_count_obj, //| state: BusState //| """The current state of the bus. (read-only)""" -STATIC mp_obj_t canio_can_state_get(mp_obj_t self_in) { +static mp_obj_t canio_can_state_get(mp_obj_t self_in) { canio_can_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_canio_can_check_for_deinit(self); return cp_enum_find(&canio_bus_state_type, common_hal_canio_can_state_get(self)); @@ -147,13 +147,13 @@ MP_PROPERTY_GETTER(canio_can_state_obj, //| def restart(self) -> None: //| """If the device is in the bus off state, restart it.""" //| ... -STATIC mp_obj_t canio_can_restart(mp_obj_t self_in) { +static mp_obj_t canio_can_restart(mp_obj_t self_in) { canio_can_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_canio_can_check_for_deinit(self); common_hal_canio_can_restart(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(canio_can_restart_obj, canio_can_restart); +static MP_DEFINE_CONST_FUN_OBJ_1(canio_can_restart_obj, canio_can_restart); //| def listen( //| self, matches: Optional[Sequence[Match]] = None, *, timeout: float = 10 @@ -189,7 +189,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(canio_can_restart_obj, canio_can_restart); //| standard address with mask or an extended address with mask. //| """ //| ... -STATIC mp_obj_t canio_can_listen(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t canio_can_listen(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { canio_can_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); common_hal_canio_can_check_for_deinit(self); @@ -226,7 +226,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(canio_can_listen_obj, 1, canio_can_listen); //| loopback: bool //| """True if the device was created in loopback mode, False //| otherwise (read-only)""" -STATIC mp_obj_t canio_can_loopback_get(mp_obj_t self_in) { +static mp_obj_t canio_can_loopback_get(mp_obj_t self_in) { canio_can_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_canio_can_check_for_deinit(self); return mp_obj_new_bool(common_hal_canio_can_loopback_get(self)); @@ -242,7 +242,7 @@ MP_PROPERTY_GETTER(canio_can_loopback_obj, //| If the message could not be sent due to a full fifo or a bus error condition, RuntimeError is raised. //| """ //| ... -STATIC mp_obj_t canio_can_send(mp_obj_t self_in, mp_obj_t message_in) { +static mp_obj_t canio_can_send(mp_obj_t self_in, mp_obj_t message_in) { canio_can_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_canio_can_check_for_deinit(self); const mp_obj_type_t *message_type = mp_obj_get_type(message_in); @@ -259,7 +259,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(canio_can_send_obj, canio_can_send); //| silent: bool //| """True if the device was created in silent mode, False //| otherwise (read-only)""" -STATIC mp_obj_t canio_can_silent_get(mp_obj_t self_in) { +static mp_obj_t canio_can_silent_get(mp_obj_t self_in) { canio_can_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_canio_can_check_for_deinit(self); return mp_obj_new_bool(common_hal_canio_can_silent_get(self)); @@ -273,22 +273,22 @@ MP_PROPERTY_GETTER(canio_can_silent_obj, //| def deinit(self) -> None: //| """Deinitialize this object, freeing its hardware resources""" //| ... -STATIC mp_obj_t canio_can_deinit(mp_obj_t self_in) { +static mp_obj_t canio_can_deinit(mp_obj_t self_in) { canio_can_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_canio_can_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(canio_can_deinit_obj, canio_can_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(canio_can_deinit_obj, canio_can_deinit); //| def __enter__(self) -> CAN: //| """Returns self, to allow the object to be used in a `with` statement for resource control""" //| ... -STATIC mp_obj_t canio_can_enter(mp_obj_t self_in) { +static mp_obj_t canio_can_enter(mp_obj_t self_in) { canio_can_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_canio_can_check_for_deinit(self); return self_in; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(canio_can_enter_obj, canio_can_enter); +static MP_DEFINE_CONST_FUN_OBJ_1(canio_can_enter_obj, canio_can_enter); //| def __exit__( //| self, @@ -299,14 +299,14 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(canio_can_enter_obj, canio_can_enter); //| """Calls deinit()""" //| ... //| -STATIC mp_obj_t canio_can_exit(size_t num_args, const mp_obj_t args[]) { +static mp_obj_t canio_can_exit(size_t num_args, const mp_obj_t args[]) { canio_can_obj_t *self = MP_OBJ_TO_PTR(args[0]); common_hal_canio_can_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(canio_can_exit_obj, 4, 4, canio_can_exit); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(canio_can_exit_obj, 4, 4, canio_can_exit); -STATIC const mp_rom_map_elem_t canio_can_locals_dict_table[] = { +static const mp_rom_map_elem_t canio_can_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&canio_can_enter_obj) }, { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&canio_can_exit_obj) }, { MP_ROM_QSTR(MP_QSTR_auto_restart), MP_ROM_PTR(&canio_can_auto_restart_obj) }, @@ -321,7 +321,7 @@ STATIC const mp_rom_map_elem_t canio_can_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_state), MP_ROM_PTR(&canio_can_state_obj) }, { MP_ROM_QSTR(MP_QSTR_transmit_error_count), MP_ROM_PTR(&canio_can_transmit_error_count_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(canio_can_locals_dict, canio_can_locals_dict_table); +static MP_DEFINE_CONST_DICT(canio_can_locals_dict, canio_can_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( canio_can_type, diff --git a/shared-bindings/canio/Listener.c b/shared-bindings/canio/Listener.c index 9c0840e6293a..26b5fb2cbb2a 100644 --- a/shared-bindings/canio/Listener.c +++ b/shared-bindings/canio/Listener.c @@ -29,7 +29,7 @@ //| If no message is received in time, `None` is returned. Otherwise, //| a `Message` or `RemoteTransmissionRequest` is returned.""" //| ... -STATIC mp_obj_t canio_listener_receive(mp_obj_t self_in) { +static mp_obj_t canio_listener_receive(mp_obj_t self_in) { canio_listener_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_canio_listener_check_for_deinit(self); @@ -41,18 +41,18 @@ STATIC mp_obj_t canio_listener_receive(mp_obj_t self_in) { } return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(canio_listener_receive_obj, canio_listener_receive); +static MP_DEFINE_CONST_FUN_OBJ_1(canio_listener_receive_obj, canio_listener_receive); //| def in_waiting(self) -> int: //| """Returns the number of messages (including remote //| transmission requests) waiting""" //| ... -STATIC mp_obj_t canio_listener_in_waiting(mp_obj_t self_in) { +static mp_obj_t canio_listener_in_waiting(mp_obj_t self_in) { canio_listener_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_canio_listener_check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_canio_listener_in_waiting(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(canio_listener_in_waiting_obj, canio_listener_in_waiting); +static MP_DEFINE_CONST_FUN_OBJ_1(canio_listener_in_waiting_obj, canio_listener_in_waiting); //| def __iter__(self) -> Listener: //| """Returns self @@ -70,7 +70,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(canio_listener_in_waiting_obj, canio_listener_i //| This method enables the `Listener` to be used as an //| iterable, for instance in a for-loop.""" //| ... -STATIC mp_obj_t canio_iternext(mp_obj_t self_in) { +static mp_obj_t canio_iternext(mp_obj_t self_in) { mp_obj_t result = canio_listener_receive(self_in); if (result == mp_const_none) { return MP_OBJ_STOP_ITERATION; @@ -81,22 +81,22 @@ STATIC mp_obj_t canio_iternext(mp_obj_t self_in) { //| def deinit(self) -> None: //| """Deinitialize this object, freeing its hardware resources""" //| ... -STATIC mp_obj_t canio_listener_deinit(mp_obj_t self_in) { +static mp_obj_t canio_listener_deinit(mp_obj_t self_in) { canio_listener_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_canio_listener_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(canio_listener_deinit_obj, canio_listener_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(canio_listener_deinit_obj, canio_listener_deinit); //| def __enter__(self) -> CAN: //| """Returns self, to allow the object to be used in a `with` statement for resource control""" //| ... -STATIC mp_obj_t canio_listener_enter(mp_obj_t self_in) { +static mp_obj_t canio_listener_enter(mp_obj_t self_in) { canio_listener_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_canio_listener_check_for_deinit(self); return self_in; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(canio_listener_enter_obj, canio_listener_enter); +static MP_DEFINE_CONST_FUN_OBJ_1(canio_listener_enter_obj, canio_listener_enter); //| def __exit__( //| self, @@ -106,30 +106,30 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(canio_listener_enter_obj, canio_listener_enter) //| ) -> None: //| """Calls deinit()""" //| ... -STATIC mp_obj_t canio_listener_exit(size_t num_args, const mp_obj_t args[]) { +static mp_obj_t canio_listener_exit(size_t num_args, const mp_obj_t args[]) { canio_listener_obj_t *self = MP_OBJ_TO_PTR(args[0]); common_hal_canio_listener_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(canio_listener_exit_obj, 4, 4, canio_listener_exit); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(canio_listener_exit_obj, 4, 4, canio_listener_exit); //| timeout: float //| -STATIC mp_obj_t canio_listener_timeout_get(mp_obj_t self_in) { +static mp_obj_t canio_listener_timeout_get(mp_obj_t self_in) { canio_listener_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_canio_listener_check_for_deinit(self); return mp_obj_new_float(common_hal_canio_listener_get_timeout(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(canio_listener_timeout_get_obj, canio_listener_timeout_get); +static MP_DEFINE_CONST_FUN_OBJ_1(canio_listener_timeout_get_obj, canio_listener_timeout_get); -STATIC mp_obj_t canio_listener_timeout_set(mp_obj_t self_in, mp_obj_t timeout_in) { +static mp_obj_t canio_listener_timeout_set(mp_obj_t self_in, mp_obj_t timeout_in) { canio_listener_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_canio_listener_check_for_deinit(self); common_hal_canio_listener_set_timeout(self, mp_obj_get_float(timeout_in)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(canio_listener_timeout_set_obj, canio_listener_timeout_set); +static MP_DEFINE_CONST_FUN_OBJ_2(canio_listener_timeout_set_obj, canio_listener_timeout_set); MP_PROPERTY_GETSET(canio_listener_timeout_obj, (mp_obj_t)&canio_listener_timeout_get_obj, @@ -137,7 +137,7 @@ MP_PROPERTY_GETSET(canio_listener_timeout_obj, -STATIC const mp_rom_map_elem_t canio_listener_locals_dict_table[] = { +static const mp_rom_map_elem_t canio_listener_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&canio_listener_enter_obj) }, { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&canio_listener_exit_obj) }, { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&canio_listener_deinit_obj) }, @@ -145,7 +145,7 @@ STATIC const mp_rom_map_elem_t canio_listener_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_receive), MP_ROM_PTR(&canio_listener_receive_obj) }, { MP_ROM_QSTR(MP_QSTR_timeout), MP_ROM_PTR(&canio_listener_timeout_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(canio_listener_locals_dict, canio_listener_locals_dict_table); +static MP_DEFINE_CONST_DICT(canio_listener_locals_dict, canio_listener_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( canio_listener_type, diff --git a/shared-bindings/canio/Match.c b/shared-bindings/canio/Match.c index 376da69d5ca8..7594b03ee933 100644 --- a/shared-bindings/canio/Match.c +++ b/shared-bindings/canio/Match.c @@ -20,7 +20,7 @@ //| If extended is true then only extended ids are matched, otherwise //| only standard ids are matched.""" -STATIC mp_obj_t canio_match_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t canio_match_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_id, ARG_mask, ARG_extended, NUM_ARGS }; static const mp_arg_t allowed_args[] = { { MP_QSTR_id, MP_ARG_INT | MP_ARG_REQUIRED }, @@ -52,7 +52,7 @@ STATIC mp_obj_t canio_match_make_new(const mp_obj_type_t *type, size_t n_args, s //| id: int //| """The id to match""" -STATIC mp_obj_t canio_match_id_get(mp_obj_t self_in) { +static mp_obj_t canio_match_id_get(mp_obj_t self_in) { canio_match_obj_t *self = self_in; return MP_OBJ_NEW_SMALL_INT(common_hal_canio_match_get_id(self)); } @@ -64,7 +64,7 @@ MP_PROPERTY_GETTER(canio_match_id_obj, //| mask: int //| """The optional mask of ids to match""" -STATIC mp_obj_t canio_match_mask_get(mp_obj_t self_in) { +static mp_obj_t canio_match_mask_get(mp_obj_t self_in) { canio_match_obj_t *self = self_in; return MP_OBJ_NEW_SMALL_INT(common_hal_canio_match_get_mask(self)); } @@ -77,7 +77,7 @@ MP_PROPERTY_GETTER(canio_match_mask_obj, //| """True to match extended ids, False to match standard ides""" //| -STATIC mp_obj_t canio_match_extended_get(mp_obj_t self_in) { +static mp_obj_t canio_match_extended_get(mp_obj_t self_in) { canio_match_obj_t *self = self_in; return mp_obj_new_bool(common_hal_canio_match_get_extended(self)); } @@ -86,12 +86,12 @@ MP_DEFINE_CONST_FUN_OBJ_1(canio_match_extended_get_obj, canio_match_extended_get MP_PROPERTY_GETTER(canio_match_extended_obj, (mp_obj_t)&canio_match_extended_get_obj); -STATIC const mp_rom_map_elem_t canio_match_locals_dict_table[] = { +static const mp_rom_map_elem_t canio_match_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_id), MP_ROM_PTR(&canio_match_id_obj) }, { MP_ROM_QSTR(MP_QSTR_mask), MP_ROM_PTR(&canio_match_mask_obj) }, { MP_ROM_QSTR(MP_QSTR_extended), MP_ROM_PTR(&canio_match_extended_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(canio_match_locals_dict, canio_match_locals_dict_table); +static MP_DEFINE_CONST_DICT(canio_match_locals_dict, canio_match_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( canio_match_type, diff --git a/shared-bindings/canio/Message.c b/shared-bindings/canio/Message.c index 6f4acd4adbd4..78665f91d2ac 100644 --- a/shared-bindings/canio/Message.c +++ b/shared-bindings/canio/Message.c @@ -21,7 +21,7 @@ //| In CAN, messages can have a length from 0 to 8 bytes. //| """ //| ... -STATIC mp_obj_t canio_message_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t canio_message_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_id, ARG_data, ARG_extended, NUM_ARGS }; static const mp_arg_t allowed_args[] = { { MP_QSTR_id, MP_ARG_INT | MP_ARG_REQUIRED }, @@ -45,13 +45,13 @@ STATIC mp_obj_t canio_message_make_new(const mp_obj_type_t *type, size_t n_args, //| id: int //| """The numeric ID of the message""" -STATIC mp_obj_t canio_message_id_get(const mp_obj_t self_in) { +static mp_obj_t canio_message_id_get(const mp_obj_t self_in) { canio_message_obj_t *self = self_in; return MP_OBJ_NEW_SMALL_INT(common_hal_canio_message_get_id(self)); } MP_DEFINE_CONST_FUN_OBJ_1(canio_message_id_get_obj, canio_message_id_get); -STATIC mp_obj_t canio_message_id_set(const mp_obj_t self_in, const mp_obj_t id) { +static mp_obj_t canio_message_id_set(const mp_obj_t self_in, const mp_obj_t id) { canio_message_obj_t *self = self_in; common_hal_canio_message_set_id(self, mp_obj_get_int(id)); return mp_const_none; @@ -64,13 +64,13 @@ MP_PROPERTY_GETSET(canio_message_id_obj, //| data: bytes //| """The content of the message""" -STATIC mp_obj_t canio_message_data_get(const mp_obj_t self_in) { +static mp_obj_t canio_message_data_get(const mp_obj_t self_in) { canio_message_obj_t *self = self_in; return mp_obj_new_bytes((const byte *)common_hal_canio_message_get_data(self), common_hal_canio_message_get_length(self)); } MP_DEFINE_CONST_FUN_OBJ_1(canio_message_data_get_obj, canio_message_data_get); -STATIC mp_obj_t canio_message_data_set(const mp_obj_t self_in, const mp_obj_t data_in) { +static mp_obj_t canio_message_data_set(const mp_obj_t self_in, const mp_obj_t data_in) { canio_message_obj_t *self = self_in; mp_buffer_info_t data; mp_get_buffer_raise(data_in, &data, MP_BUFFER_READ); @@ -91,13 +91,13 @@ MP_PROPERTY_GETSET(canio_message_data_obj, //| extended: bool //| """True if the message's id is an extended id""" //| -STATIC mp_obj_t canio_message_extended_get(const mp_obj_t self_in) { +static mp_obj_t canio_message_extended_get(const mp_obj_t self_in) { canio_message_obj_t *self = self_in; return mp_obj_new_bool(common_hal_canio_message_get_extended(self)); } MP_DEFINE_CONST_FUN_OBJ_1(canio_message_extended_get_obj, canio_message_extended_get); -STATIC mp_obj_t canio_message_extended_set(const mp_obj_t self_in, const mp_obj_t extended) { +static mp_obj_t canio_message_extended_set(const mp_obj_t self_in, const mp_obj_t extended) { canio_message_obj_t *self = self_in; common_hal_canio_message_set_extended(self, mp_obj_is_true(extended)); return mp_const_none; @@ -109,12 +109,12 @@ MP_PROPERTY_GETSET(canio_message_extended_obj, (mp_obj_t)&canio_message_extended_get_obj, (mp_obj_t)&canio_message_extended_set_obj); -STATIC const mp_rom_map_elem_t canio_message_locals_dict_table[] = { +static const mp_rom_map_elem_t canio_message_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_id), MP_ROM_PTR(&canio_message_id_obj) }, { MP_ROM_QSTR(MP_QSTR_data), MP_ROM_PTR(&canio_message_data_obj) }, { MP_ROM_QSTR(MP_QSTR_extended), MP_ROM_PTR(&canio_message_extended_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(canio_message_locals_dict, canio_message_locals_dict_table); +static MP_DEFINE_CONST_DICT(canio_message_locals_dict, canio_message_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( canio_message_type, diff --git a/shared-bindings/canio/RemoteTransmissionRequest.c b/shared-bindings/canio/RemoteTransmissionRequest.c index cb7ad2c5d264..ba936b9a9494 100644 --- a/shared-bindings/canio/RemoteTransmissionRequest.c +++ b/shared-bindings/canio/RemoteTransmissionRequest.c @@ -21,7 +21,7 @@ //| In CAN, messages can have a length from 0 to 8 bytes. //| """ //| ... -STATIC mp_obj_t canio_remote_transmission_request_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t canio_remote_transmission_request_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_id, ARG_length, ARG_extended, NUM_ARGS }; static const mp_arg_t allowed_args[] = { { MP_QSTR_id, MP_ARG_INT | MP_ARG_REQUIRED }, @@ -47,13 +47,13 @@ STATIC mp_obj_t canio_remote_transmission_request_make_new(const mp_obj_type_t * //| id: int //| """The numeric ID of the message""" -STATIC mp_obj_t canio_remote_transmission_request_id_get(const mp_obj_t self_in) { +static mp_obj_t canio_remote_transmission_request_id_get(const mp_obj_t self_in) { canio_remote_transmission_request_obj_t *self = self_in; return MP_OBJ_NEW_SMALL_INT(common_hal_canio_remote_transmission_request_get_id(self)); } MP_DEFINE_CONST_FUN_OBJ_1(canio_remote_transmission_request_id_get_obj, canio_remote_transmission_request_id_get); -STATIC mp_obj_t canio_remote_transmission_request_id_set(const mp_obj_t self_in, const mp_obj_t id) { +static mp_obj_t canio_remote_transmission_request_id_set(const mp_obj_t self_in, const mp_obj_t id) { canio_remote_transmission_request_obj_t *self = self_in; common_hal_canio_remote_transmission_request_set_id(self, mp_obj_get_int(id)); return mp_const_none; @@ -66,13 +66,13 @@ MP_PROPERTY_GETSET(canio_remote_transmission_request_id_obj, //| extended: bool //| """True if the message's id is an extended id""" -STATIC mp_obj_t canio_remote_transmission_request_extended_get(const mp_obj_t self_in) { +static mp_obj_t canio_remote_transmission_request_extended_get(const mp_obj_t self_in) { canio_remote_transmission_request_obj_t *self = self_in; return mp_obj_new_bool(common_hal_canio_remote_transmission_request_get_extended(self)); } MP_DEFINE_CONST_FUN_OBJ_1(canio_remote_transmission_request_extended_get_obj, canio_remote_transmission_request_extended_get); -STATIC mp_obj_t canio_remote_transmission_request_extended_set(const mp_obj_t self_in, const mp_obj_t extended) { +static mp_obj_t canio_remote_transmission_request_extended_set(const mp_obj_t self_in, const mp_obj_t extended) { canio_remote_transmission_request_obj_t *self = self_in; common_hal_canio_remote_transmission_request_set_extended(self, mp_obj_is_true(extended)); return mp_const_none; @@ -87,13 +87,13 @@ MP_PROPERTY_GETSET(canio_remote_transmission_request_extended_obj, //| length: int //| """The length of the requested message.""" //| -STATIC mp_obj_t canio_remote_transmission_request_length_get(const mp_obj_t self_in) { +static mp_obj_t canio_remote_transmission_request_length_get(const mp_obj_t self_in) { canio_remote_transmission_request_obj_t *self = self_in; return MP_OBJ_NEW_SMALL_INT(common_hal_canio_remote_transmission_request_get_length(self)); } MP_DEFINE_CONST_FUN_OBJ_1(canio_remote_transmission_request_length_get_obj, canio_remote_transmission_request_length_get); -STATIC mp_obj_t canio_remote_transmission_request_length_set(const mp_obj_t self_in, const mp_obj_t length_in) { +static mp_obj_t canio_remote_transmission_request_length_set(const mp_obj_t self_in, const mp_obj_t length_in) { canio_remote_transmission_request_obj_t *self = self_in; int length = mp_obj_get_int(length_in); if (length < 0 || length > 8) { @@ -109,12 +109,12 @@ MP_PROPERTY_GETSET(canio_remote_transmission_request_length_obj, (mp_obj_t)&canio_remote_transmission_request_length_get_obj, (mp_obj_t)&canio_remote_transmission_request_length_set_obj); -STATIC const mp_rom_map_elem_t canio_remote_transmission_request_locals_dict_table[] = { +static const mp_rom_map_elem_t canio_remote_transmission_request_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_id), MP_ROM_PTR(&canio_remote_transmission_request_id_obj) }, { MP_ROM_QSTR(MP_QSTR_length), MP_ROM_PTR(&canio_remote_transmission_request_length_obj) }, { MP_ROM_QSTR(MP_QSTR_extended), MP_ROM_PTR(&canio_remote_transmission_request_extended_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(canio_remote_transmission_request_locals_dict, canio_remote_transmission_request_locals_dict_table); +static MP_DEFINE_CONST_DICT(canio_remote_transmission_request_locals_dict, canio_remote_transmission_request_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( canio_remote_transmission_request_type, diff --git a/shared-bindings/canio/__init__.c b/shared-bindings/canio/__init__.c index 5f3685580af2..991d37c8d256 100644 --- a/shared-bindings/canio/__init__.c +++ b/shared-bindings/canio/__init__.c @@ -87,13 +87,13 @@ MAKE_ENUM_MAP(canio_bus_state) { MAKE_ENUM_MAP_ENTRY(bus_state, ERROR_WARNING), MAKE_ENUM_MAP_ENTRY(bus_state, BUS_OFF), }; -STATIC MP_DEFINE_CONST_DICT(canio_bus_state_locals_dict, canio_bus_state_locals_table); +static MP_DEFINE_CONST_DICT(canio_bus_state_locals_dict, canio_bus_state_locals_table); MAKE_PRINTER(canio, canio_bus_state); MAKE_ENUM_TYPE(canio, BusState, canio_bus_state); -STATIC const mp_rom_map_elem_t canio_module_globals_table[] = { +static const mp_rom_map_elem_t canio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_canio) }, { MP_ROM_QSTR(MP_QSTR_BusState), MP_ROM_PTR(&canio_bus_state_type) }, { MP_ROM_QSTR(MP_QSTR_CAN), MP_ROM_PTR(&canio_can_type) }, @@ -104,7 +104,7 @@ STATIC const mp_rom_map_elem_t canio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR__canio) }, }; -STATIC MP_DEFINE_CONST_DICT(canio_module_globals, canio_module_globals_table); +static MP_DEFINE_CONST_DICT(canio_module_globals, canio_module_globals_table); const mp_obj_module_t canio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/codeop/__init__.c b/shared-bindings/codeop/__init__.c index df215d3bc1a4..4ddd792be663 100644 --- a/shared-bindings/codeop/__init__.c +++ b/shared-bindings/codeop/__init__.c @@ -10,7 +10,7 @@ #include "py/runtime.h" #include "py/repl.h" -STATIC const char *get_arg_str(mp_obj_t arg, qstr name) { +static const char *get_arg_str(mp_obj_t arg, qstr name) { return mp_obj_str_get_str(mp_arg_validate_type_string(arg, name)); } @@ -25,7 +25,7 @@ STATIC const char *get_arg_str(mp_obj_t arg, qstr name) { //| In particular, it's important that the code not end with a newline character //| or it is likely to be treated as a complete command.""" //| -STATIC mp_obj_t compile_command(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t compile_command(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_source, ARG_filename, ARG_symbol }; static const mp_arg_t allowed_args[] = { { MP_QSTR_source, MP_ARG_REQUIRED | MP_ARG_OBJ, { .u_obj = mp_const_none } }, @@ -44,12 +44,12 @@ STATIC mp_obj_t compile_command(mp_uint_t n_args, const mp_obj_t *pos_args, mp_m } MP_DEFINE_CONST_FUN_OBJ_KW(compile_command_obj, 1, compile_command); -STATIC const mp_rom_map_elem_t codeop_module_globals_table[] = { +static const mp_rom_map_elem_t codeop_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_codeop) }, { MP_ROM_QSTR(MP_QSTR_compile_command), MP_ROM_PTR(&compile_command_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(codeop_module_globals, codeop_module_globals_table); +static MP_DEFINE_CONST_DICT(codeop_module_globals, codeop_module_globals_table); const mp_obj_module_t codeop_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/countio/Counter.c b/shared-bindings/countio/Counter.c index a25ae2d9e6b6..5fa2a7a30fa2 100644 --- a/shared-bindings/countio/Counter.c +++ b/shared-bindings/countio/Counter.c @@ -52,7 +52,7 @@ //| See the pin assignments for your board to see which pins can be used. //| """ //| ... -STATIC mp_obj_t countio_counter_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t countio_counter_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_pin, ARG_edge, ARG_pull }; static const mp_arg_t allowed_args[] = { { MP_QSTR_pin, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -75,14 +75,14 @@ STATIC mp_obj_t countio_counter_make_new(const mp_obj_type_t *type, size_t n_arg //| def deinit(self) -> None: //| """Deinitializes the Counter and releases any hardware resources for reuse.""" -STATIC mp_obj_t countio_counter_deinit(mp_obj_t self_in) { +static mp_obj_t countio_counter_deinit(mp_obj_t self_in) { countio_counter_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_countio_counter_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(countio_counter_deinit_obj, countio_counter_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(countio_counter_deinit_obj, countio_counter_deinit); -STATIC void check_for_deinit(countio_counter_obj_t *self) { +static void check_for_deinit(countio_counter_obj_t *self) { if (common_hal_countio_counter_deinited(self)) { raise_deinited_error(); } @@ -95,17 +95,17 @@ STATIC void check_for_deinit(countio_counter_obj_t *self) { //| def __exit__(self) -> None: //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" -STATIC mp_obj_t countio_counter_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t countio_counter_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_countio_counter_deinit(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(countio_counter___exit___obj, 4, 4, countio_counter_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(countio_counter___exit___obj, 4, 4, countio_counter_obj___exit__); //| count: int //| """The current count in terms of pulses.""" -STATIC mp_obj_t countio_counter_obj_get_count(mp_obj_t self_in) { +static mp_obj_t countio_counter_obj_get_count(mp_obj_t self_in) { countio_counter_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -113,7 +113,7 @@ STATIC mp_obj_t countio_counter_obj_get_count(mp_obj_t self_in) { } MP_DEFINE_CONST_FUN_OBJ_1(countio_counter_get_count_obj, countio_counter_obj_get_count); -STATIC mp_obj_t countio_counter_obj_set_count(mp_obj_t self_in, mp_obj_t new_count) { +static mp_obj_t countio_counter_obj_set_count(mp_obj_t self_in, mp_obj_t new_count) { countio_counter_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -129,7 +129,7 @@ MP_PROPERTY_GETSET(countio_counter_count_obj, //| def reset(self) -> None: //| """Resets the count back to 0.""" //| -STATIC mp_obj_t countio_counter_reset(mp_obj_t self_in) { +static mp_obj_t countio_counter_reset(mp_obj_t self_in) { countio_counter_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_countio_counter_set_count(self, 0); @@ -139,7 +139,7 @@ STATIC mp_obj_t countio_counter_reset(mp_obj_t self_in) { MP_DEFINE_CONST_FUN_OBJ_1(countio_counter_reset_obj, countio_counter_reset); -STATIC const mp_rom_map_elem_t countio_counter_locals_dict_table[] = { +static const mp_rom_map_elem_t countio_counter_locals_dict_table[] = { // Methods { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&countio_counter_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&countio_counter_deinit_obj) }, @@ -148,7 +148,7 @@ STATIC const mp_rom_map_elem_t countio_counter_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_count), MP_ROM_PTR(&countio_counter_count_obj) }, { MP_ROM_QSTR(MP_QSTR_reset), MP_ROM_PTR(&countio_counter_reset_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(countio_counter_locals_dict, countio_counter_locals_dict_table); +static MP_DEFINE_CONST_DICT(countio_counter_locals_dict, countio_counter_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( countio_counter_type, diff --git a/shared-bindings/countio/Edge.c b/shared-bindings/countio/Edge.c index b2379e42edd7..b7ec25078aee 100644 --- a/shared-bindings/countio/Edge.c +++ b/shared-bindings/countio/Edge.c @@ -38,7 +38,7 @@ MAKE_ENUM_MAP(countio_edge) { MAKE_ENUM_MAP_ENTRY(edge, RISE_AND_FALL), }; -STATIC MP_DEFINE_CONST_DICT(countio_edge_locals_dict, countio_edge_locals_table); +static MP_DEFINE_CONST_DICT(countio_edge_locals_dict, countio_edge_locals_table); MAKE_PRINTER(countio, countio_edge); diff --git a/shared-bindings/countio/__init__.c b/shared-bindings/countio/__init__.c index a7ded118f850..b611d706eaeb 100644 --- a/shared-bindings/countio/__init__.c +++ b/shared-bindings/countio/__init__.c @@ -27,13 +27,13 @@ //| call :py:meth:`!deinit` or use a context manager. See //| :ref:`lifetime-and-contextmanagers` for more info.""" -STATIC const mp_rom_map_elem_t countio_module_globals_table[] = { +static const mp_rom_map_elem_t countio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_countio) }, { MP_ROM_QSTR(MP_QSTR_Counter), MP_ROM_PTR(&countio_counter_type) }, { MP_ROM_QSTR(MP_QSTR_Edge), MP_ROM_PTR(&countio_edge_type) }, }; -STATIC MP_DEFINE_CONST_DICT(countio_module_globals, countio_module_globals_table); +static MP_DEFINE_CONST_DICT(countio_module_globals, countio_module_globals_table); const mp_obj_module_t countio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/digitalio/DigitalInOut.c b/shared-bindings/digitalio/DigitalInOut.c index 50360fdd12d3..6bbdc68be523 100644 --- a/shared-bindings/digitalio/DigitalInOut.c +++ b/shared-bindings/digitalio/DigitalInOut.c @@ -26,7 +26,7 @@ #include "bindings/cyw43/__init__.h" #endif -STATIC void check_result(digitalinout_result_t result) { +static void check_result(digitalinout_result_t result) { switch (result) { case DIGITALINOUT_OK: return; @@ -65,7 +65,7 @@ MP_WEAK const mcu_pin_obj_t *common_hal_digitalio_validate_pin(mp_obj_t obj) { //| //| :param ~microcontroller.Pin pin: The pin to control""" //| ... -STATIC mp_obj_t digitalio_digitalinout_make_new(const mp_obj_type_t *type, +static mp_obj_t digitalio_digitalinout_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { mp_arg_check_num(n_args, n_kw, 1, 1, false); @@ -80,7 +80,7 @@ STATIC mp_obj_t digitalio_digitalinout_make_new(const mp_obj_type_t *type, //| def deinit(self) -> None: //| """Turn off the DigitalInOut and release the pin for other use.""" //| ... -STATIC mp_obj_t digitalio_digitalinout_obj_deinit(mp_obj_t self_in) { +static mp_obj_t digitalio_digitalinout_obj_deinit(mp_obj_t self_in) { digitalio_digitalinout_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_digitalio_digitalinout_deinit(self); return mp_const_none; @@ -96,14 +96,14 @@ MP_DEFINE_CONST_FUN_OBJ_1(digitalio_digitalinout_deinit_obj, digitalio_digitalin //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t digitalio_digitalinout_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t digitalio_digitalinout_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_digitalio_digitalinout_deinit(MP_OBJ_TO_PTR(args[0])); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(digitalio_digitalinout_obj___exit___obj, 4, 4, digitalio_digitalinout_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(digitalio_digitalinout_obj___exit___obj, 4, 4, digitalio_digitalinout_obj___exit__); -STATIC inline void check_for_deinit(digitalio_digitalinout_obj_t *self) { +static inline void check_for_deinit(digitalio_digitalinout_obj_t *self) { if (common_hal_digitalio_digitalinout_deinited(self)) { raise_deinited_error(); } @@ -119,7 +119,7 @@ STATIC inline void check_for_deinit(digitalio_digitalinout_obj_t *self) { //| :param ~digitalio.DriveMode drive_mode: drive mode for the output //| """ //| ... -STATIC mp_obj_t digitalio_digitalinout_switch_to_output(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t digitalio_digitalinout_switch_to_output(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_value, ARG_drive_mode }; static const mp_arg_t allowed_args[] = { { MP_QSTR_value, MP_ARG_BOOL, {.u_bool = false} }, @@ -156,7 +156,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(digitalio_digitalinout_switch_to_output_obj, 1, digit //| switch.pull = digitalio.Pull.UP //| print(switch.value)""" //| ... -STATIC mp_obj_t digitalio_digitalinout_switch_to_input(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t digitalio_digitalinout_switch_to_input(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_pull }; static const mp_arg_t allowed_args[] = { { MP_QSTR_pull, MP_ARG_OBJ, {.u_rom_obj = mp_const_none} }, @@ -184,7 +184,7 @@ typedef struct { extern const digitalio_digitalio_direction_obj_t digitalio_digitalio_direction_in_obj; extern const digitalio_digitalio_direction_obj_t digitalio_digitalio_direction_out_obj; -STATIC mp_obj_t digitalio_digitalinout_obj_get_direction(mp_obj_t self_in) { +static mp_obj_t digitalio_digitalinout_obj_get_direction(mp_obj_t self_in) { digitalio_digitalinout_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); digitalio_direction_t direction = common_hal_digitalio_digitalinout_get_direction(self); @@ -195,7 +195,7 @@ STATIC mp_obj_t digitalio_digitalinout_obj_get_direction(mp_obj_t self_in) { } MP_DEFINE_CONST_FUN_OBJ_1(digitalio_digitalinout_get_direction_obj, digitalio_digitalinout_obj_get_direction); -STATIC mp_obj_t digitalio_digitalinout_obj_set_direction(mp_obj_t self_in, mp_obj_t value) { +static mp_obj_t digitalio_digitalinout_obj_set_direction(mp_obj_t self_in, mp_obj_t value) { digitalio_digitalinout_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); if (value == MP_ROM_PTR(&digitalio_direction_input_obj)) { @@ -215,7 +215,7 @@ MP_PROPERTY_GETSET(digitalio_digitalio_direction_obj, //| value: bool //| """The digital logic level of the pin.""" -STATIC mp_obj_t digitalio_digitalinout_obj_get_value(mp_obj_t self_in) { +static mp_obj_t digitalio_digitalinout_obj_get_value(mp_obj_t self_in) { digitalio_digitalinout_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); bool value = common_hal_digitalio_digitalinout_get_value(self); @@ -223,7 +223,7 @@ STATIC mp_obj_t digitalio_digitalinout_obj_get_value(mp_obj_t self_in) { } MP_DEFINE_CONST_FUN_OBJ_1(digitalio_digitalinout_get_value_obj, digitalio_digitalinout_obj_get_value); -STATIC mp_obj_t digitalio_digitalinout_obj_set_value(mp_obj_t self_in, mp_obj_t value) { +static mp_obj_t digitalio_digitalinout_obj_set_value(mp_obj_t self_in, mp_obj_t value) { digitalio_digitalinout_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); if (common_hal_digitalio_digitalinout_get_direction(self) == DIRECTION_INPUT) { @@ -244,7 +244,7 @@ MP_PROPERTY_GETSET(digitalio_digitalinout_value_obj, //| //| - `digitalio.DriveMode.PUSH_PULL` //| - `digitalio.DriveMode.OPEN_DRAIN`""" -STATIC mp_obj_t digitalio_digitalinout_obj_get_drive_mode(mp_obj_t self_in) { +static mp_obj_t digitalio_digitalinout_obj_get_drive_mode(mp_obj_t self_in) { digitalio_digitalinout_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); if (common_hal_digitalio_digitalinout_get_direction(self) == DIRECTION_INPUT) { @@ -259,7 +259,7 @@ STATIC mp_obj_t digitalio_digitalinout_obj_get_drive_mode(mp_obj_t self_in) { } MP_DEFINE_CONST_FUN_OBJ_1(digitalio_digitalinout_get_drive_mode_obj, digitalio_digitalinout_obj_get_drive_mode); -STATIC mp_obj_t digitalio_digitalinout_obj_set_drive_mode(mp_obj_t self_in, mp_obj_t drive_mode) { +static mp_obj_t digitalio_digitalinout_obj_set_drive_mode(mp_obj_t self_in, mp_obj_t drive_mode) { digitalio_digitalinout_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); if (common_hal_digitalio_digitalinout_get_direction(self) == DIRECTION_INPUT) { @@ -288,7 +288,7 @@ MP_PROPERTY_GETSET(digitalio_digitalio_drive_mode_obj, //| //| :raises AttributeError: if `direction` is :py:data:`~digitalio.Direction.OUTPUT`.""" //| -STATIC mp_obj_t digitalio_digitalinout_obj_get_pull(mp_obj_t self_in) { +static mp_obj_t digitalio_digitalinout_obj_get_pull(mp_obj_t self_in) { digitalio_digitalinout_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); if (common_hal_digitalio_digitalinout_get_direction(self) == DIRECTION_OUTPUT) { @@ -305,7 +305,7 @@ STATIC mp_obj_t digitalio_digitalinout_obj_get_pull(mp_obj_t self_in) { } MP_DEFINE_CONST_FUN_OBJ_1(digitalio_digitalinout_get_pull_obj, digitalio_digitalinout_obj_get_pull); -STATIC mp_obj_t digitalio_digitalinout_obj_set_pull(mp_obj_t self_in, mp_obj_t pull_obj) { +static mp_obj_t digitalio_digitalinout_obj_set_pull(mp_obj_t self_in, mp_obj_t pull_obj) { digitalio_digitalinout_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); if (common_hal_digitalio_digitalinout_get_direction(self) == DIRECTION_OUTPUT) { @@ -322,7 +322,7 @@ MP_PROPERTY_GETSET(digitalio_digitalio_pull_obj, (mp_obj_t)&digitalio_digitalinout_get_pull_obj, (mp_obj_t)&digitalio_digitalinout_set_pull_obj); -STATIC const mp_rom_map_elem_t digitalio_digitalinout_locals_dict_table[] = { +static const mp_rom_map_elem_t digitalio_digitalinout_locals_dict_table[] = { // instance methods { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&digitalio_digitalinout_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, @@ -337,7 +337,7 @@ STATIC const mp_rom_map_elem_t digitalio_digitalinout_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_pull), MP_ROM_PTR(&digitalio_digitalio_pull_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(digitalio_digitalinout_locals_dict, digitalio_digitalinout_locals_dict_table); +static MP_DEFINE_CONST_DICT(digitalio_digitalinout_locals_dict, digitalio_digitalinout_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( digitalio_digitalinout_type, diff --git a/shared-bindings/digitalio/Direction.c b/shared-bindings/digitalio/Direction.c index 242b10115dea..442d2dcd3599 100644 --- a/shared-bindings/digitalio/Direction.c +++ b/shared-bindings/digitalio/Direction.c @@ -41,13 +41,13 @@ const digitalio_direction_obj_t digitalio_direction_output_obj = { { &digitalio_direction_type }, }; -STATIC const mp_rom_map_elem_t digitalio_direction_locals_dict_table[] = { +static const mp_rom_map_elem_t digitalio_direction_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_INPUT), MP_ROM_PTR(&digitalio_direction_input_obj) }, { MP_ROM_QSTR(MP_QSTR_OUTPUT), MP_ROM_PTR(&digitalio_direction_output_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(digitalio_direction_locals_dict, digitalio_direction_locals_dict_table); +static MP_DEFINE_CONST_DICT(digitalio_direction_locals_dict, digitalio_direction_locals_dict_table); -STATIC void digitalio_direction_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { +static void digitalio_direction_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { qstr direction = MP_QSTR_INPUT; if (self_in == MP_ROM_PTR(&digitalio_direction_output_obj)) { direction = MP_QSTR_OUTPUT; diff --git a/shared-bindings/digitalio/DriveMode.c b/shared-bindings/digitalio/DriveMode.c index 56410f03461d..78ced01df251 100644 --- a/shared-bindings/digitalio/DriveMode.c +++ b/shared-bindings/digitalio/DriveMode.c @@ -30,13 +30,13 @@ const digitalio_drive_mode_obj_t digitalio_drive_mode_open_drain_obj = { { &digitalio_drive_mode_type }, }; -STATIC const mp_rom_map_elem_t digitalio_drive_mode_locals_dict_table[] = { +static const mp_rom_map_elem_t digitalio_drive_mode_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_PUSH_PULL), MP_ROM_PTR(&digitalio_drive_mode_push_pull_obj) }, { MP_ROM_QSTR(MP_QSTR_OPEN_DRAIN), MP_ROM_PTR(&digitalio_drive_mode_open_drain_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(digitalio_drive_mode_locals_dict, digitalio_drive_mode_locals_dict_table); +static MP_DEFINE_CONST_DICT(digitalio_drive_mode_locals_dict, digitalio_drive_mode_locals_dict_table); -STATIC void digitalio_drive_mode_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { +static void digitalio_drive_mode_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { qstr drive_mode = MP_QSTR_PUSH_PULL; if (self_in == MP_ROM_PTR(&digitalio_drive_mode_open_drain_obj)) { drive_mode = MP_QSTR_OPEN_DRAIN; diff --git a/shared-bindings/digitalio/Pull.c b/shared-bindings/digitalio/Pull.c index e4d74afe2749..7a02564354a1 100644 --- a/shared-bindings/digitalio/Pull.c +++ b/shared-bindings/digitalio/Pull.c @@ -32,13 +32,13 @@ const digitalio_pull_obj_t digitalio_pull_down_obj = { { &digitalio_pull_type }, }; -STATIC const mp_rom_map_elem_t digitalio_pull_locals_dict_table[] = { +static const mp_rom_map_elem_t digitalio_pull_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_UP), MP_ROM_PTR(&digitalio_pull_up_obj) }, { MP_ROM_QSTR(MP_QSTR_DOWN), MP_ROM_PTR(&digitalio_pull_down_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(digitalio_pull_locals_dict, digitalio_pull_locals_dict_table); +static MP_DEFINE_CONST_DICT(digitalio_pull_locals_dict, digitalio_pull_locals_dict_table); -STATIC void digitalio_pull_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { +static void digitalio_pull_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { qstr pull = MP_QSTR_UP; if (self_in == MP_ROM_PTR(&digitalio_pull_down_obj)) { pull = MP_QSTR_DOWN; diff --git a/shared-bindings/digitalio/__init__.c b/shared-bindings/digitalio/__init__.c index cc7a705534e3..d241bbe0ebbe 100644 --- a/shared-bindings/digitalio/__init__.c +++ b/shared-bindings/digitalio/__init__.c @@ -60,7 +60,7 @@ //| `_ //| """ -STATIC const mp_rom_map_elem_t digitalio_module_globals_table[] = { +static const mp_rom_map_elem_t digitalio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_digitalio) }, { MP_ROM_QSTR(MP_QSTR_DigitalInOut), MP_ROM_PTR(&digitalio_digitalinout_type) }, @@ -70,7 +70,7 @@ STATIC const mp_rom_map_elem_t digitalio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_Pull), MP_ROM_PTR(&digitalio_pull_type) }, }; -STATIC MP_DEFINE_CONST_DICT(digitalio_module_globals, digitalio_module_globals_table); +static MP_DEFINE_CONST_DICT(digitalio_module_globals, digitalio_module_globals_table); const mp_obj_module_t digitalio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/displayio/Bitmap.c b/shared-bindings/displayio/Bitmap.c index f7e40a27bf4b..4c8fc97345cf 100644 --- a/shared-bindings/displayio/Bitmap.c +++ b/shared-bindings/displayio/Bitmap.c @@ -39,7 +39,7 @@ //| :param int height: The number of values high //| :param int value_count: The number of possible pixel values.""" //| ... -STATIC mp_obj_t displayio_bitmap_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t displayio_bitmap_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { mp_arg_check_num(n_args, n_kw, 3, 3, false); uint32_t width = mp_arg_validate_int_range(mp_obj_get_int(all_args[0]), 0, 32767, MP_QSTR_width); uint32_t height = mp_arg_validate_int_range(mp_obj_get_int(all_args[1]), 0, 32767, MP_QSTR_height); @@ -60,7 +60,7 @@ STATIC mp_obj_t displayio_bitmap_make_new(const mp_obj_type_t *type, size_t n_ar return MP_OBJ_FROM_PTR(self); } -STATIC void check_for_deinit(displayio_bitmap_t *self) { +static void check_for_deinit(displayio_bitmap_t *self) { if (common_hal_displayio_bitmap_deinited(self)) { raise_deinited_error(); } @@ -68,7 +68,7 @@ STATIC void check_for_deinit(displayio_bitmap_t *self) { //| width: int //| """Width of the bitmap. (read only)""" -STATIC mp_obj_t displayio_bitmap_obj_get_width(mp_obj_t self_in) { +static mp_obj_t displayio_bitmap_obj_get_width(mp_obj_t self_in) { displayio_bitmap_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -82,7 +82,7 @@ MP_PROPERTY_GETTER(displayio_bitmap_width_obj, //| height: int //| """Height of the bitmap. (read only)""" -STATIC mp_obj_t displayio_bitmap_obj_get_height(mp_obj_t self_in) { +static mp_obj_t displayio_bitmap_obj_get_height(mp_obj_t self_in) { displayio_bitmap_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -96,7 +96,7 @@ MP_PROPERTY_GETTER(displayio_bitmap_height_obj, //| bits_per_value: int //| """Bits per Pixel of the bitmap. (read only)""" -STATIC mp_obj_t displayio_bitmap_obj_get_bits_per_value(mp_obj_t self_in) { +static mp_obj_t displayio_bitmap_obj_get_bits_per_value(mp_obj_t self_in) { displayio_bitmap_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -126,7 +126,7 @@ MP_PROPERTY_GETTER(displayio_bitmap_bits_per_value_obj, //| //| bitmap[0,1] = 3""" //| ... -STATIC mp_obj_t bitmap_subscr(mp_obj_t self_in, mp_obj_t index_obj, mp_obj_t value_obj) { +static mp_obj_t bitmap_subscr(mp_obj_t self_in, mp_obj_t index_obj, mp_obj_t value_obj) { if (value_obj == mp_const_none) { // delete item mp_raise_AttributeError(MP_ERROR_TEXT("Cannot delete values")); @@ -183,7 +183,7 @@ STATIC mp_obj_t bitmap_subscr(mp_obj_t self_in, mp_obj_t index_obj, mp_obj_t val //| def fill(self, value: int) -> None: //| """Fills the bitmap with the supplied palette index value.""" //| ... -STATIC mp_obj_t displayio_bitmap_obj_fill(mp_obj_t self_in, mp_obj_t value_obj) { +static mp_obj_t displayio_bitmap_obj_fill(mp_obj_t self_in, mp_obj_t value_obj) { displayio_bitmap_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -213,7 +213,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(displayio_bitmap_fill_obj, displayio_bitmap_obj_fill); //| notified of the "dirty rectangle" that encloses all modified //| pixels.""" //| ... -STATIC mp_obj_t displayio_bitmap_obj_dirty(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t displayio_bitmap_obj_dirty(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { displayio_bitmap_t *self = MP_OBJ_TO_PTR(pos_args[0]); check_for_deinit(self); @@ -244,14 +244,14 @@ MP_DEFINE_CONST_FUN_OBJ_KW(displayio_bitmap_dirty_obj, 0, displayio_bitmap_obj_d //| """Release resources allocated by Bitmap.""" //| ... //| -STATIC mp_obj_t displayio_bitmap_obj_deinit(mp_obj_t self_in) { +static mp_obj_t displayio_bitmap_obj_deinit(mp_obj_t self_in) { displayio_bitmap_t *self = MP_OBJ_TO_PTR(self_in); common_hal_displayio_bitmap_deinit(self); return mp_const_none; } MP_DEFINE_CONST_FUN_OBJ_1(displayio_bitmap_deinit_obj, displayio_bitmap_obj_deinit); -STATIC const mp_rom_map_elem_t displayio_bitmap_locals_dict_table[] = { +static const mp_rom_map_elem_t displayio_bitmap_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_height), MP_ROM_PTR(&displayio_bitmap_height_obj) }, { MP_ROM_QSTR(MP_QSTR_width), MP_ROM_PTR(&displayio_bitmap_width_obj) }, { MP_ROM_QSTR(MP_QSTR_bits_per_value), MP_ROM_PTR(&displayio_bitmap_bits_per_value_obj) }, @@ -259,10 +259,10 @@ STATIC const mp_rom_map_elem_t displayio_bitmap_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_dirty), MP_ROM_PTR(&displayio_bitmap_dirty_obj) }, { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&displayio_bitmap_deinit_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(displayio_bitmap_locals_dict, displayio_bitmap_locals_dict_table); +static MP_DEFINE_CONST_DICT(displayio_bitmap_locals_dict, displayio_bitmap_locals_dict_table); // (the get_buffer protocol returns 0 for success, 1 for failure) -STATIC mp_int_t bitmap_get_buffer(mp_obj_t self_in, mp_buffer_info_t *bufinfo, mp_uint_t flags) { +static mp_int_t bitmap_get_buffer(mp_obj_t self_in, mp_buffer_info_t *bufinfo, mp_uint_t flags) { displayio_bitmap_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_displayio_bitmap_get_buffer(self, bufinfo, flags); } diff --git a/shared-bindings/displayio/ColorConverter.c b/shared-bindings/displayio/ColorConverter.c index 6f2342b28426..1f973b5a42ab 100644 --- a/shared-bindings/displayio/ColorConverter.c +++ b/shared-bindings/displayio/ColorConverter.c @@ -27,7 +27,7 @@ //| :param bool dither: Adds random noise to dither the output image""" //| ... -STATIC mp_obj_t displayio_colorconverter_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t displayio_colorconverter_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_dither, ARG_input_colorspace }; static const mp_arg_t allowed_args[] = { @@ -47,7 +47,7 @@ STATIC mp_obj_t displayio_colorconverter_make_new(const mp_obj_type_t *type, siz //| def convert(self, color: int) -> int: //| """Converts the given color to RGB565 according to the Colorspace""" //| ... -STATIC mp_obj_t displayio_colorconverter_obj_convert(mp_obj_t self_in, mp_obj_t color_obj) { +static mp_obj_t displayio_colorconverter_obj_convert(mp_obj_t self_in, mp_obj_t color_obj) { displayio_colorconverter_t *self = MP_OBJ_TO_PTR(self_in); mp_int_t color = mp_arg_validate_type_int(color_obj, MP_QSTR_color); @@ -60,13 +60,13 @@ MP_DEFINE_CONST_FUN_OBJ_2(displayio_colorconverter_convert_obj, displayio_colorc //| dither: bool //| """When `True` the ColorConverter dithers the output by adding random noise when //| truncating to display bitdepth""" -STATIC mp_obj_t displayio_colorconverter_obj_get_dither(mp_obj_t self_in) { +static mp_obj_t displayio_colorconverter_obj_get_dither(mp_obj_t self_in) { displayio_colorconverter_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bool(common_hal_displayio_colorconverter_get_dither(self)); } MP_DEFINE_CONST_FUN_OBJ_1(displayio_colorconverter_get_dither_obj, displayio_colorconverter_obj_get_dither); -STATIC mp_obj_t displayio_colorconverter_obj_set_dither(mp_obj_t self_in, mp_obj_t dither) { +static mp_obj_t displayio_colorconverter_obj_set_dither(mp_obj_t self_in, mp_obj_t dither) { displayio_colorconverter_t *self = MP_OBJ_TO_PTR(self_in); common_hal_displayio_colorconverter_set_dither(self, mp_obj_is_true(dither)); @@ -84,7 +84,7 @@ MP_PROPERTY_GETSET(displayio_colorconverter_dither_obj, //| raise an Exception if there is already a selected transparent index. //| //| :param int color: The color to be transparent""" -STATIC mp_obj_t displayio_colorconverter_make_transparent(mp_obj_t self_in, mp_obj_t transparent_color_obj) { +static mp_obj_t displayio_colorconverter_make_transparent(mp_obj_t self_in, mp_obj_t transparent_color_obj) { displayio_colorconverter_t *self = MP_OBJ_TO_PTR(self_in); mp_int_t transparent_color = mp_obj_get_int(transparent_color_obj); @@ -98,7 +98,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(displayio_colorconverter_make_transparent_obj, display //| //| :param int color: [IGNORED] Use any value""" //| -STATIC mp_obj_t displayio_colorconverter_make_opaque(mp_obj_t self_in, mp_obj_t transparent_color_obj) { +static mp_obj_t displayio_colorconverter_make_opaque(mp_obj_t self_in, mp_obj_t transparent_color_obj) { displayio_colorconverter_t *self = MP_OBJ_TO_PTR(self_in); mp_int_t transparent_color = mp_obj_get_int(transparent_color_obj); @@ -107,13 +107,13 @@ STATIC mp_obj_t displayio_colorconverter_make_opaque(mp_obj_t self_in, mp_obj_t } MP_DEFINE_CONST_FUN_OBJ_2(displayio_colorconverter_make_opaque_obj, displayio_colorconverter_make_opaque); -STATIC const mp_rom_map_elem_t displayio_colorconverter_locals_dict_table[] = { +static const mp_rom_map_elem_t displayio_colorconverter_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_convert), MP_ROM_PTR(&displayio_colorconverter_convert_obj) }, { MP_ROM_QSTR(MP_QSTR_dither), MP_ROM_PTR(&displayio_colorconverter_dither_obj) }, { MP_ROM_QSTR(MP_QSTR_make_transparent), MP_ROM_PTR(&displayio_colorconverter_make_transparent_obj) }, { MP_ROM_QSTR(MP_QSTR_make_opaque), MP_ROM_PTR(&displayio_colorconverter_make_opaque_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(displayio_colorconverter_locals_dict, displayio_colorconverter_locals_dict_table); +static MP_DEFINE_CONST_DICT(displayio_colorconverter_locals_dict, displayio_colorconverter_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( displayio_colorconverter_type, diff --git a/shared-bindings/displayio/Colorspace.c b/shared-bindings/displayio/Colorspace.c index 4b3c589d2042..f4677b25a908 100644 --- a/shared-bindings/displayio/Colorspace.c +++ b/shared-bindings/displayio/Colorspace.c @@ -51,7 +51,7 @@ MAKE_ENUM_MAP(displayio_colorspace) { MAKE_ENUM_MAP_ENTRY(displayio_colorspace, BGR555_SWAPPED), MAKE_ENUM_MAP_ENTRY(displayio_colorspace, L8), }; -STATIC MP_DEFINE_CONST_DICT(displayio_colorspace_locals_dict, displayio_colorspace_locals_table); +static MP_DEFINE_CONST_DICT(displayio_colorspace_locals_dict, displayio_colorspace_locals_table); MAKE_PRINTER(displayio, displayio_colorspace); MAKE_ENUM_TYPE(displayio, ColorSpace, displayio_colorspace); diff --git a/shared-bindings/displayio/Group.c b/shared-bindings/displayio/Group.c index 17748b872b6d..73c3d06988c8 100644 --- a/shared-bindings/displayio/Group.c +++ b/shared-bindings/displayio/Group.c @@ -25,7 +25,7 @@ //| :param int x: Initial x position within the parent. //| :param int y: Initial y position within the parent.""" //| ... -STATIC mp_obj_t displayio_group_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t displayio_group_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_scale, ARG_x, ARG_y }; static const mp_arg_t allowed_args[] = { { MP_QSTR_scale, MP_ARG_INT | MP_ARG_KW_ONLY, {.u_int = 1} }, @@ -56,13 +56,13 @@ displayio_group_t *native_group(mp_obj_t group_obj) { //| hidden: bool //| """True when the Group and all of its layers are not visible. When False, the Group's layers //| are visible if they haven't been hidden.""" -STATIC mp_obj_t displayio_group_obj_get_hidden(mp_obj_t self_in) { +static mp_obj_t displayio_group_obj_get_hidden(mp_obj_t self_in) { displayio_group_t *self = native_group(self_in); return mp_obj_new_bool(common_hal_displayio_group_get_hidden(self)); } MP_DEFINE_CONST_FUN_OBJ_1(displayio_group_get_hidden_obj, displayio_group_obj_get_hidden); -STATIC mp_obj_t displayio_group_obj_set_hidden(mp_obj_t self_in, mp_obj_t hidden_obj) { +static mp_obj_t displayio_group_obj_set_hidden(mp_obj_t self_in, mp_obj_t hidden_obj) { displayio_group_t *self = native_group(self_in); common_hal_displayio_group_set_hidden(self, mp_obj_is_true(hidden_obj)); @@ -77,13 +77,13 @@ MP_PROPERTY_GETSET(displayio_group_hidden_obj, //| scale: int //| """Scales each pixel within the Group in both directions. For example, when scale=2 each pixel //| will be represented by 2x2 pixels.""" -STATIC mp_obj_t displayio_group_obj_get_scale(mp_obj_t self_in) { +static mp_obj_t displayio_group_obj_get_scale(mp_obj_t self_in) { displayio_group_t *self = native_group(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_displayio_group_get_scale(self)); } MP_DEFINE_CONST_FUN_OBJ_1(displayio_group_get_scale_obj, displayio_group_obj_get_scale); -STATIC mp_obj_t displayio_group_obj_set_scale(mp_obj_t self_in, mp_obj_t scale_obj) { +static mp_obj_t displayio_group_obj_set_scale(mp_obj_t self_in, mp_obj_t scale_obj) { displayio_group_t *self = native_group(self_in); mp_int_t scale = mp_arg_validate_int_min(mp_obj_get_int(scale_obj), 1, MP_QSTR_scale); @@ -99,13 +99,13 @@ MP_PROPERTY_GETSET(displayio_group_scale_obj, //| x: int //| """X position of the Group in the parent.""" -STATIC mp_obj_t displayio_group_obj_get_x(mp_obj_t self_in) { +static mp_obj_t displayio_group_obj_get_x(mp_obj_t self_in) { displayio_group_t *self = native_group(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_displayio_group_get_x(self)); } MP_DEFINE_CONST_FUN_OBJ_1(displayio_group_get_x_obj, displayio_group_obj_get_x); -STATIC mp_obj_t displayio_group_obj_set_x(mp_obj_t self_in, mp_obj_t x_obj) { +static mp_obj_t displayio_group_obj_set_x(mp_obj_t self_in, mp_obj_t x_obj) { displayio_group_t *self = native_group(self_in); mp_int_t x = mp_obj_get_int(x_obj); @@ -120,13 +120,13 @@ MP_PROPERTY_GETSET(displayio_group_x_obj, //| y: int //| """Y position of the Group in the parent.""" -STATIC mp_obj_t displayio_group_obj_get_y(mp_obj_t self_in) { +static mp_obj_t displayio_group_obj_get_y(mp_obj_t self_in) { displayio_group_t *self = native_group(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_displayio_group_get_y(self)); } MP_DEFINE_CONST_FUN_OBJ_1(displayio_group_get_y_obj, displayio_group_obj_get_y); -STATIC mp_obj_t displayio_group_obj_set_y(mp_obj_t self_in, mp_obj_t y_obj) { +static mp_obj_t displayio_group_obj_set_y(mp_obj_t self_in, mp_obj_t y_obj) { displayio_group_t *self = native_group(self_in); mp_int_t y = mp_obj_get_int(y_obj); @@ -145,7 +145,7 @@ MP_PROPERTY_GETSET(displayio_group_y_obj, //| ) -> None: //| """Append a layer to the group. It will be drawn above other layers.""" //| ... -STATIC mp_obj_t displayio_group_obj_append(mp_obj_t self_in, mp_obj_t layer) { +static mp_obj_t displayio_group_obj_append(mp_obj_t self_in, mp_obj_t layer) { displayio_group_t *self = native_group(self_in); common_hal_displayio_group_insert(self, common_hal_displayio_group_get_len(self), layer); return mp_const_none; @@ -159,7 +159,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(displayio_group_append_obj, displayio_group_obj_append //| ) -> None: //| """Insert a layer into the group.""" //| ... -STATIC mp_obj_t displayio_group_obj_insert(mp_obj_t self_in, mp_obj_t index_obj, mp_obj_t layer) { +static mp_obj_t displayio_group_obj_insert(mp_obj_t self_in, mp_obj_t index_obj, mp_obj_t layer) { displayio_group_t *self = native_group(self_in); if ((size_t)MP_OBJ_SMALL_INT_VALUE(index_obj) == common_hal_displayio_group_get_len(self)) { return displayio_group_obj_append(self_in, layer); @@ -177,7 +177,7 @@ MP_DEFINE_CONST_FUN_OBJ_3(displayio_group_insert_obj, displayio_group_obj_insert //| ) -> int: //| """Returns the index of the first copy of layer. Raises ValueError if not found.""" //| ... -STATIC mp_obj_t displayio_group_obj_index(mp_obj_t self_in, mp_obj_t layer) { +static mp_obj_t displayio_group_obj_index(mp_obj_t self_in, mp_obj_t layer) { displayio_group_t *self = native_group(self_in); mp_int_t index = common_hal_displayio_group_index(self, layer); if (index < 0) { @@ -192,7 +192,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(displayio_group_index_obj, displayio_group_obj_index); //| ) -> Union[vectorio.Circle, vectorio.Rectangle, vectorio.Polygon, Group, TileGrid]: //| """Remove the ith item and return it.""" //| ... -STATIC mp_obj_t displayio_group_obj_pop(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t displayio_group_obj_pop(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_i }; static const mp_arg_t allowed_args[] = { { MP_QSTR_i, MP_ARG_INT, {.u_int = -1} }, @@ -217,7 +217,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(displayio_group_pop_obj, 1, displayio_group_obj_pop); //| ) -> None: //| """Remove the first copy of layer. Raises ValueError if it is not present.""" //| ... -STATIC mp_obj_t displayio_group_obj_remove(mp_obj_t self_in, mp_obj_t layer) { +static mp_obj_t displayio_group_obj_remove(mp_obj_t self_in, mp_obj_t layer) { mp_obj_t index = displayio_group_obj_index(self_in, layer); displayio_group_t *self = native_group(self_in); @@ -239,7 +239,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(displayio_group_remove_obj, displayio_group_obj_remove //| def __len__(self) -> int: //| """Returns the number of layers in a Group""" //| ... -STATIC mp_obj_t group_unary_op(mp_unary_op_t op, mp_obj_t self_in) { +static mp_obj_t group_unary_op(mp_unary_op_t op, mp_obj_t self_in) { displayio_group_t *self = native_group(self_in); uint16_t len = common_hal_displayio_group_get_len(self); switch (op) { @@ -281,7 +281,7 @@ STATIC mp_obj_t group_unary_op(mp_unary_op_t op, mp_obj_t self_in) { //| //| del group[0]""" //| ... -STATIC mp_obj_t group_subscr(mp_obj_t self_in, mp_obj_t index_obj, mp_obj_t value) { +static mp_obj_t group_subscr(mp_obj_t self_in, mp_obj_t index_obj, mp_obj_t value) { displayio_group_t *self = native_group(self_in); if (mp_obj_is_type(index_obj, &mp_type_slice)) { @@ -305,7 +305,7 @@ STATIC mp_obj_t group_subscr(mp_obj_t self_in, mp_obj_t index_obj, mp_obj_t valu //| """Sort the members of the group.""" //| ... //| -STATIC mp_obj_t displayio_group_obj_sort(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t displayio_group_obj_sort(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { displayio_group_t *self = native_group(pos_args[0]); mp_obj_t *args = m_new(mp_obj_t, n_args); for (size_t i = 1; i < n_args; ++i) { @@ -316,7 +316,7 @@ STATIC mp_obj_t displayio_group_obj_sort(size_t n_args, const mp_obj_t *pos_args } MP_DEFINE_CONST_FUN_OBJ_KW(displayio_group_sort_obj, 1, displayio_group_obj_sort); -STATIC const mp_rom_map_elem_t displayio_group_locals_dict_table[] = { +static const mp_rom_map_elem_t displayio_group_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_hidden), MP_ROM_PTR(&displayio_group_hidden_obj) }, { MP_ROM_QSTR(MP_QSTR_scale), MP_ROM_PTR(&displayio_group_scale_obj) }, { MP_ROM_QSTR(MP_QSTR_x), MP_ROM_PTR(&displayio_group_x_obj) }, @@ -328,7 +328,7 @@ STATIC const mp_rom_map_elem_t displayio_group_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_remove), MP_ROM_PTR(&displayio_group_remove_obj) }, { MP_ROM_QSTR(MP_QSTR_sort), MP_ROM_PTR(&displayio_group_sort_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(displayio_group_locals_dict, displayio_group_locals_dict_table); +static MP_DEFINE_CONST_DICT(displayio_group_locals_dict, displayio_group_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( displayio_group_type, diff --git a/shared-bindings/displayio/OnDiskBitmap.c b/shared-bindings/displayio/OnDiskBitmap.c index e9e281ebbb96..fea3763657e8 100644 --- a/shared-bindings/displayio/OnDiskBitmap.c +++ b/shared-bindings/displayio/OnDiskBitmap.c @@ -58,7 +58,7 @@ //| of CircuitPython will remove the ability to pass in an opened file. //| """ //| ... -STATIC mp_obj_t displayio_ondiskbitmap_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t displayio_ondiskbitmap_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { mp_arg_check_num(n_args, n_kw, 1, 1, false); mp_obj_t arg = all_args[0]; @@ -77,7 +77,7 @@ STATIC mp_obj_t displayio_ondiskbitmap_make_new(const mp_obj_type_t *type, size_ //| width: int //| """Width of the bitmap. (read only)""" -STATIC mp_obj_t displayio_ondiskbitmap_obj_get_width(mp_obj_t self_in) { +static mp_obj_t displayio_ondiskbitmap_obj_get_width(mp_obj_t self_in) { displayio_ondiskbitmap_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_displayio_ondiskbitmap_get_width(self)); @@ -90,7 +90,7 @@ MP_PROPERTY_GETTER(displayio_ondiskbitmap_width_obj, //| height: int //| """Height of the bitmap. (read only)""" -STATIC mp_obj_t displayio_ondiskbitmap_obj_get_height(mp_obj_t self_in) { +static mp_obj_t displayio_ondiskbitmap_obj_get_height(mp_obj_t self_in) { displayio_ondiskbitmap_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_displayio_ondiskbitmap_get_height(self)); @@ -106,7 +106,7 @@ MP_PROPERTY_GETTER(displayio_ondiskbitmap_height_obj, //| bitmap's structure. The pixel shader can be modified (e.g., to set the //| transparent pixel or, for palette shaded images, to update the palette.)""" //| -STATIC mp_obj_t displayio_ondiskbitmap_obj_get_pixel_shader(mp_obj_t self_in) { +static mp_obj_t displayio_ondiskbitmap_obj_get_pixel_shader(mp_obj_t self_in) { displayio_ondiskbitmap_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_displayio_ondiskbitmap_get_pixel_shader(self); } @@ -121,12 +121,12 @@ const mp_obj_property_t displayio_ondiskbitmap_pixel_shader_obj = { }; -STATIC const mp_rom_map_elem_t displayio_ondiskbitmap_locals_dict_table[] = { +static const mp_rom_map_elem_t displayio_ondiskbitmap_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_height), MP_ROM_PTR(&displayio_ondiskbitmap_height_obj) }, { MP_ROM_QSTR(MP_QSTR_pixel_shader), MP_ROM_PTR(&displayio_ondiskbitmap_pixel_shader_obj) }, { MP_ROM_QSTR(MP_QSTR_width), MP_ROM_PTR(&displayio_ondiskbitmap_width_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(displayio_ondiskbitmap_locals_dict, displayio_ondiskbitmap_locals_dict_table); +static MP_DEFINE_CONST_DICT(displayio_ondiskbitmap_locals_dict, displayio_ondiskbitmap_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( displayio_ondiskbitmap_type, diff --git a/shared-bindings/displayio/Palette.c b/shared-bindings/displayio/Palette.c index 58b498018758..528df88ec4e7 100644 --- a/shared-bindings/displayio/Palette.c +++ b/shared-bindings/displayio/Palette.c @@ -28,7 +28,7 @@ // TODO(tannewt): Add support for other color formats. // TODO(tannewt): Add support for 8-bit alpha blending. //| -STATIC mp_obj_t displayio_palette_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t displayio_palette_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_color_count, ARG_dither }; static const mp_arg_t allowed_args[] = { { MP_QSTR_color_count, MP_ARG_REQUIRED | MP_ARG_INT, {.u_int = 0 } }, @@ -46,13 +46,13 @@ STATIC mp_obj_t displayio_palette_make_new(const mp_obj_type_t *type, size_t n_a //| dither: bool //| """When `True` the Palette dithers the output color by adding random //| noise when truncating to display bitdepth""" -STATIC mp_obj_t displayio_palette_obj_get_dither(mp_obj_t self_in) { +static mp_obj_t displayio_palette_obj_get_dither(mp_obj_t self_in) { displayio_palette_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bool(common_hal_displayio_palette_get_dither(self)); } MP_DEFINE_CONST_FUN_OBJ_1(displayio_palette_get_dither_obj, displayio_palette_obj_get_dither); -STATIC mp_obj_t displayio_palette_obj_set_dither(mp_obj_t self_in, mp_obj_t dither) { +static mp_obj_t displayio_palette_obj_set_dither(mp_obj_t self_in, mp_obj_t dither) { displayio_palette_t *self = MP_OBJ_TO_PTR(self_in); common_hal_displayio_palette_set_dither(self, mp_obj_is_true(dither)); @@ -69,7 +69,7 @@ MP_PROPERTY_GETSET(displayio_palette_dither_obj, //| def __len__(self) -> int: //| """Returns the number of colors in a Palette""" //| ... -STATIC mp_obj_t group_unary_op(mp_unary_op_t op, mp_obj_t self_in) { +static mp_obj_t group_unary_op(mp_unary_op_t op, mp_obj_t self_in) { displayio_palette_t *self = MP_OBJ_TO_PTR(self_in); switch (op) { case MP_UNARY_OP_BOOL: @@ -102,7 +102,7 @@ STATIC mp_obj_t group_unary_op(mp_unary_op_t op, mp_obj_t self_in) { //| palette[3] = bytearray(b'\x00\x00\xFF') # set using a bytearay of 3 or 4 bytes //| palette[4] = (10, 20, 30) # set using a tuple of 3 integers""" //| ... -STATIC mp_obj_t palette_subscr(mp_obj_t self_in, mp_obj_t index_in, mp_obj_t value) { +static mp_obj_t palette_subscr(mp_obj_t self_in, mp_obj_t index_in, mp_obj_t value) { if (value == MP_OBJ_NULL) { // delete item return MP_OBJ_NULL; // op not supported @@ -150,7 +150,7 @@ STATIC mp_obj_t palette_subscr(mp_obj_t self_in, mp_obj_t index_in, mp_obj_t val } //| def make_transparent(self, palette_index: int) -> None: ... -STATIC mp_obj_t displayio_palette_obj_make_transparent(mp_obj_t self_in, mp_obj_t palette_index_obj) { +static mp_obj_t displayio_palette_obj_make_transparent(mp_obj_t self_in, mp_obj_t palette_index_obj) { displayio_palette_t *self = MP_OBJ_TO_PTR(self_in); mp_int_t palette_index = mp_arg_validate_type_int(palette_index_obj, MP_QSTR_palette_index); @@ -162,7 +162,7 @@ STATIC mp_obj_t displayio_palette_obj_make_transparent(mp_obj_t self_in, mp_obj_ MP_DEFINE_CONST_FUN_OBJ_2(displayio_palette_make_transparent_obj, displayio_palette_obj_make_transparent); //| def make_opaque(self, palette_index: int) -> None: ... -STATIC mp_obj_t displayio_palette_obj_make_opaque(mp_obj_t self_in, mp_obj_t palette_index_obj) { +static mp_obj_t displayio_palette_obj_make_opaque(mp_obj_t self_in, mp_obj_t palette_index_obj) { displayio_palette_t *self = MP_OBJ_TO_PTR(self_in); mp_int_t palette_index = mp_arg_validate_type_int(palette_index_obj, MP_QSTR_palette_index); @@ -177,7 +177,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(displayio_palette_make_opaque_obj, displayio_palette_o //| """Returns `True` if the palette index is transparent. Returns `False` if opaque.""" //| ... //| -STATIC mp_obj_t displayio_palette_obj_is_transparent(mp_obj_t self_in, mp_obj_t palette_index_obj) { +static mp_obj_t displayio_palette_obj_is_transparent(mp_obj_t self_in, mp_obj_t palette_index_obj) { displayio_palette_t *self = MP_OBJ_TO_PTR(self_in); mp_int_t palette_index = mp_arg_validate_type_int(palette_index_obj, MP_QSTR_palette_index); @@ -187,13 +187,13 @@ STATIC mp_obj_t displayio_palette_obj_is_transparent(mp_obj_t self_in, mp_obj_t } MP_DEFINE_CONST_FUN_OBJ_2(displayio_palette_is_transparent_obj, displayio_palette_obj_is_transparent); -STATIC const mp_rom_map_elem_t displayio_palette_locals_dict_table[] = { +static const mp_rom_map_elem_t displayio_palette_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_dither), MP_ROM_PTR(&displayio_palette_dither_obj) }, { MP_ROM_QSTR(MP_QSTR_make_transparent), MP_ROM_PTR(&displayio_palette_make_transparent_obj) }, { MP_ROM_QSTR(MP_QSTR_make_opaque), MP_ROM_PTR(&displayio_palette_make_opaque_obj) }, { MP_ROM_QSTR(MP_QSTR_is_transparent), MP_ROM_PTR(&displayio_palette_is_transparent_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(displayio_palette_locals_dict, displayio_palette_locals_dict_table); +static MP_DEFINE_CONST_DICT(displayio_palette_locals_dict, displayio_palette_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( displayio_palette_type, diff --git a/shared-bindings/displayio/TileGrid.c b/shared-bindings/displayio/TileGrid.c index ecaf40b1d297..9800480b22a4 100644 --- a/shared-bindings/displayio/TileGrid.c +++ b/shared-bindings/displayio/TileGrid.c @@ -56,7 +56,7 @@ //| :param int default_tile: Default tile index to show. //| :param int x: Initial x position of the left edge within the parent. //| :param int y: Initial y position of the top edge within the parent.""" -STATIC mp_obj_t displayio_tilegrid_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t displayio_tilegrid_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_bitmap, ARG_pixel_shader, ARG_width, ARG_height, ARG_tile_width, ARG_tile_height, ARG_default_tile, ARG_x, ARG_y }; static const mp_arg_t allowed_args[] = { { MP_QSTR_bitmap, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -127,13 +127,13 @@ static displayio_tilegrid_t *native_tilegrid(mp_obj_t tilegrid_obj) { //| hidden: bool //| """True when the TileGrid is hidden. This may be False even when a part of a hidden Group.""" -STATIC mp_obj_t displayio_tilegrid_obj_get_hidden(mp_obj_t self_in) { +static mp_obj_t displayio_tilegrid_obj_get_hidden(mp_obj_t self_in) { displayio_tilegrid_t *self = native_tilegrid(self_in); return mp_obj_new_bool(common_hal_displayio_tilegrid_get_hidden(self)); } MP_DEFINE_CONST_FUN_OBJ_1(displayio_tilegrid_get_hidden_obj, displayio_tilegrid_obj_get_hidden); -STATIC mp_obj_t displayio_tilegrid_obj_set_hidden(mp_obj_t self_in, mp_obj_t hidden_obj) { +static mp_obj_t displayio_tilegrid_obj_set_hidden(mp_obj_t self_in, mp_obj_t hidden_obj) { displayio_tilegrid_t *self = native_tilegrid(self_in); common_hal_displayio_tilegrid_set_hidden(self, mp_obj_is_true(hidden_obj)); @@ -147,13 +147,13 @@ MP_PROPERTY_GETSET(displayio_tilegrid_hidden_obj, //| x: int //| """X position of the left edge in the parent.""" -STATIC mp_obj_t displayio_tilegrid_obj_get_x(mp_obj_t self_in) { +static mp_obj_t displayio_tilegrid_obj_get_x(mp_obj_t self_in) { displayio_tilegrid_t *self = native_tilegrid(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_displayio_tilegrid_get_x(self)); } MP_DEFINE_CONST_FUN_OBJ_1(displayio_tilegrid_get_x_obj, displayio_tilegrid_obj_get_x); -STATIC mp_obj_t displayio_tilegrid_obj_set_x(mp_obj_t self_in, mp_obj_t x_obj) { +static mp_obj_t displayio_tilegrid_obj_set_x(mp_obj_t self_in, mp_obj_t x_obj) { displayio_tilegrid_t *self = native_tilegrid(self_in); mp_int_t x = mp_obj_get_int(x_obj); @@ -168,13 +168,13 @@ MP_PROPERTY_GETSET(displayio_tilegrid_x_obj, //| y: int //| """Y position of the top edge in the parent.""" -STATIC mp_obj_t displayio_tilegrid_obj_get_y(mp_obj_t self_in) { +static mp_obj_t displayio_tilegrid_obj_get_y(mp_obj_t self_in) { displayio_tilegrid_t *self = native_tilegrid(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_displayio_tilegrid_get_y(self)); } MP_DEFINE_CONST_FUN_OBJ_1(displayio_tilegrid_get_y_obj, displayio_tilegrid_obj_get_y); -STATIC mp_obj_t displayio_tilegrid_obj_set_y(mp_obj_t self_in, mp_obj_t y_obj) { +static mp_obj_t displayio_tilegrid_obj_set_y(mp_obj_t self_in, mp_obj_t y_obj) { displayio_tilegrid_t *self = native_tilegrid(self_in); mp_int_t y = mp_obj_get_int(y_obj); @@ -189,7 +189,7 @@ MP_PROPERTY_GETSET(displayio_tilegrid_y_obj, //| width: int //| """Width of the tilegrid in tiles.""" -STATIC mp_obj_t displayio_tilegrid_obj_get_width(mp_obj_t self_in) { +static mp_obj_t displayio_tilegrid_obj_get_width(mp_obj_t self_in) { displayio_tilegrid_t *self = native_tilegrid(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_displayio_tilegrid_get_width(self)); } @@ -200,7 +200,7 @@ MP_PROPERTY_GETTER(displayio_tilegrid_width_obj, //| height: int //| """Height of the tilegrid in tiles.""" -STATIC mp_obj_t displayio_tilegrid_obj_get_height(mp_obj_t self_in) { +static mp_obj_t displayio_tilegrid_obj_get_height(mp_obj_t self_in) { displayio_tilegrid_t *self = native_tilegrid(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_displayio_tilegrid_get_height(self)); } @@ -211,7 +211,7 @@ MP_PROPERTY_GETTER(displayio_tilegrid_height_obj, //| tile_width: int //| """Width of a single tile in pixels.""" -STATIC mp_obj_t displayio_tilegrid_obj_get_tile_width(mp_obj_t self_in) { +static mp_obj_t displayio_tilegrid_obj_get_tile_width(mp_obj_t self_in) { displayio_tilegrid_t *self = native_tilegrid(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_displayio_tilegrid_get_tile_width(self)); } @@ -222,7 +222,7 @@ MP_PROPERTY_GETTER(displayio_tilegrid_tile_width_obj, //| tile_height: int //| """Height of a single tile in pixels.""" -STATIC mp_obj_t displayio_tilegrid_obj_get_tile_height(mp_obj_t self_in) { +static mp_obj_t displayio_tilegrid_obj_get_tile_height(mp_obj_t self_in) { displayio_tilegrid_t *self = native_tilegrid(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_displayio_tilegrid_get_tile_height(self)); } @@ -233,13 +233,13 @@ MP_PROPERTY_GETTER(displayio_tilegrid_tile_height_obj, //| flip_x: bool //| """If true, the left edge rendered will be the right edge of the right-most tile.""" -STATIC mp_obj_t displayio_tilegrid_obj_get_flip_x(mp_obj_t self_in) { +static mp_obj_t displayio_tilegrid_obj_get_flip_x(mp_obj_t self_in) { displayio_tilegrid_t *self = native_tilegrid(self_in); return mp_obj_new_bool(common_hal_displayio_tilegrid_get_flip_x(self)); } MP_DEFINE_CONST_FUN_OBJ_1(displayio_tilegrid_get_flip_x_obj, displayio_tilegrid_obj_get_flip_x); -STATIC mp_obj_t displayio_tilegrid_obj_set_flip_x(mp_obj_t self_in, mp_obj_t flip_x_obj) { +static mp_obj_t displayio_tilegrid_obj_set_flip_x(mp_obj_t self_in, mp_obj_t flip_x_obj) { displayio_tilegrid_t *self = native_tilegrid(self_in); common_hal_displayio_tilegrid_set_flip_x(self, mp_obj_is_true(flip_x_obj)); @@ -253,13 +253,13 @@ MP_PROPERTY_GETSET(displayio_tilegrid_flip_x_obj, //| flip_y: bool //| """If true, the top edge rendered will be the bottom edge of the bottom-most tile.""" -STATIC mp_obj_t displayio_tilegrid_obj_get_flip_y(mp_obj_t self_in) { +static mp_obj_t displayio_tilegrid_obj_get_flip_y(mp_obj_t self_in) { displayio_tilegrid_t *self = native_tilegrid(self_in); return mp_obj_new_bool(common_hal_displayio_tilegrid_get_flip_y(self)); } MP_DEFINE_CONST_FUN_OBJ_1(displayio_tilegrid_get_flip_y_obj, displayio_tilegrid_obj_get_flip_y); -STATIC mp_obj_t displayio_tilegrid_obj_set_flip_y(mp_obj_t self_in, mp_obj_t flip_y_obj) { +static mp_obj_t displayio_tilegrid_obj_set_flip_y(mp_obj_t self_in, mp_obj_t flip_y_obj) { displayio_tilegrid_t *self = native_tilegrid(self_in); common_hal_displayio_tilegrid_set_flip_y(self, mp_obj_is_true(flip_y_obj)); @@ -275,13 +275,13 @@ MP_PROPERTY_GETSET(displayio_tilegrid_flip_y_obj, //| transpose_xy: bool //| """If true, the TileGrid's axis will be swapped. When combined with mirroring, any 90 degree //| rotation can be achieved along with the corresponding mirrored version.""" -STATIC mp_obj_t displayio_tilegrid_obj_get_transpose_xy(mp_obj_t self_in) { +static mp_obj_t displayio_tilegrid_obj_get_transpose_xy(mp_obj_t self_in) { displayio_tilegrid_t *self = native_tilegrid(self_in); return mp_obj_new_bool(common_hal_displayio_tilegrid_get_transpose_xy(self)); } MP_DEFINE_CONST_FUN_OBJ_1(displayio_tilegrid_get_transpose_xy_obj, displayio_tilegrid_obj_get_transpose_xy); -STATIC mp_obj_t displayio_tilegrid_obj_set_transpose_xy(mp_obj_t self_in, mp_obj_t transpose_xy_obj) { +static mp_obj_t displayio_tilegrid_obj_set_transpose_xy(mp_obj_t self_in, mp_obj_t transpose_xy_obj) { displayio_tilegrid_t *self = native_tilegrid(self_in); common_hal_displayio_tilegrid_set_transpose_xy(self, mp_obj_is_true(transpose_xy_obj)); @@ -296,7 +296,7 @@ MP_PROPERTY_GETSET(displayio_tilegrid_transpose_xy_obj, //| def contains(self, touch_tuple: tuple) -> bool: //| """Returns True if the first two values in ``touch_tuple`` represent an x,y coordinate //| inside the tilegrid rectangle bounds.""" -STATIC mp_obj_t displayio_tilegrid_obj_contains(mp_obj_t self_in, mp_obj_t touch_tuple) { +static mp_obj_t displayio_tilegrid_obj_contains(mp_obj_t self_in, mp_obj_t touch_tuple) { displayio_tilegrid_t *self = MP_OBJ_TO_PTR(self_in); mp_obj_t *touch_tuple_items; @@ -312,13 +312,13 @@ MP_DEFINE_CONST_FUN_OBJ_2(displayio_tilegrid_contains_obj, displayio_tilegrid_ob //| pixel_shader: Union[ColorConverter, Palette] //| """The pixel shader of the tilegrid.""" -STATIC mp_obj_t displayio_tilegrid_obj_get_pixel_shader(mp_obj_t self_in) { +static mp_obj_t displayio_tilegrid_obj_get_pixel_shader(mp_obj_t self_in) { displayio_tilegrid_t *self = native_tilegrid(self_in); return common_hal_displayio_tilegrid_get_pixel_shader(self); } MP_DEFINE_CONST_FUN_OBJ_1(displayio_tilegrid_get_pixel_shader_obj, displayio_tilegrid_obj_get_pixel_shader); -STATIC mp_obj_t displayio_tilegrid_obj_set_pixel_shader(mp_obj_t self_in, mp_obj_t pixel_shader) { +static mp_obj_t displayio_tilegrid_obj_set_pixel_shader(mp_obj_t self_in, mp_obj_t pixel_shader) { displayio_tilegrid_t *self = native_tilegrid(self_in); if (!mp_obj_is_type(pixel_shader, &displayio_palette_type) && !mp_obj_is_type(pixel_shader, &displayio_colorconverter_type)) { mp_raise_TypeError_varg(MP_ERROR_TEXT("unsupported %q type"), MP_QSTR_pixel_shader); @@ -336,13 +336,13 @@ MP_PROPERTY_GETSET(displayio_tilegrid_pixel_shader_obj, //| bitmap: Union[Bitmap, OnDiskBitmap] //| """The bitmap of the tilegrid.""" -STATIC mp_obj_t displayio_tilegrid_obj_get_bitmap(mp_obj_t self_in) { +static mp_obj_t displayio_tilegrid_obj_get_bitmap(mp_obj_t self_in) { displayio_tilegrid_t *self = native_tilegrid(self_in); return common_hal_displayio_tilegrid_get_bitmap(self); } MP_DEFINE_CONST_FUN_OBJ_1(displayio_tilegrid_get_bitmap_obj, displayio_tilegrid_obj_get_bitmap); -STATIC mp_obj_t displayio_tilegrid_obj_set_bitmap(mp_obj_t self_in, mp_obj_t bitmap) { +static mp_obj_t displayio_tilegrid_obj_set_bitmap(mp_obj_t self_in, mp_obj_t bitmap) { displayio_tilegrid_t *self = native_tilegrid(self_in); uint16_t new_bitmap_width; @@ -403,7 +403,7 @@ MP_PROPERTY_GETSET(displayio_tilegrid_bitmap_obj, //| grid[0,0] = 10""" //| ... //| -STATIC mp_obj_t tilegrid_subscr(mp_obj_t self_in, mp_obj_t index_obj, mp_obj_t value_obj) { +static mp_obj_t tilegrid_subscr(mp_obj_t self_in, mp_obj_t index_obj, mp_obj_t value_obj) { displayio_tilegrid_t *self = native_tilegrid(self_in); @@ -443,7 +443,7 @@ STATIC mp_obj_t tilegrid_subscr(mp_obj_t self_in, mp_obj_t index_obj, mp_obj_t v return mp_const_none; } -STATIC const mp_rom_map_elem_t displayio_tilegrid_locals_dict_table[] = { +static const mp_rom_map_elem_t displayio_tilegrid_locals_dict_table[] = { // Properties { MP_ROM_QSTR(MP_QSTR_hidden), MP_ROM_PTR(&displayio_tilegrid_hidden_obj) }, { MP_ROM_QSTR(MP_QSTR_x), MP_ROM_PTR(&displayio_tilegrid_x_obj) }, @@ -459,7 +459,7 @@ STATIC const mp_rom_map_elem_t displayio_tilegrid_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_pixel_shader), MP_ROM_PTR(&displayio_tilegrid_pixel_shader_obj) }, { MP_ROM_QSTR(MP_QSTR_bitmap), MP_ROM_PTR(&displayio_tilegrid_bitmap_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(displayio_tilegrid_locals_dict, displayio_tilegrid_locals_dict_table); +static MP_DEFINE_CONST_DICT(displayio_tilegrid_locals_dict, displayio_tilegrid_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( displayio_tilegrid_type, diff --git a/shared-bindings/displayio/__init__.c b/shared-bindings/displayio/__init__.c index db36b5e0c2d9..acd48f5ea3ca 100644 --- a/shared-bindings/displayio/__init__.c +++ b/shared-bindings/displayio/__init__.c @@ -63,14 +63,14 @@ //| initialization so the display is active as long as possible.""" //| ... //| -STATIC mp_obj_t displayio_release_displays(void) { +static mp_obj_t displayio_release_displays(void) { common_hal_displayio_release_displays(); return mp_const_none; } MP_DEFINE_CONST_FUN_OBJ_0(displayio_release_displays_obj, displayio_release_displays); -STATIC const mp_rom_map_elem_t displayio_module_globals_table[] = { +static const mp_rom_map_elem_t displayio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_displayio) }, { MP_ROM_QSTR(MP_QSTR_Bitmap), MP_ROM_PTR(&displayio_bitmap_type) }, { MP_ROM_QSTR(MP_QSTR_ColorConverter), MP_ROM_PTR(&displayio_colorconverter_type) }, @@ -97,7 +97,7 @@ STATIC const mp_rom_map_elem_t displayio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_release_displays), MP_ROM_PTR(&displayio_release_displays_obj) }, { MP_ROM_QSTR(MP_QSTR_CIRCUITPYTHON_TERMINAL), MP_ROM_PTR(&circuitpython_splash) }, }; -STATIC MP_DEFINE_CONST_DICT(displayio_module_globals, displayio_module_globals_table); +static MP_DEFINE_CONST_DICT(displayio_module_globals, displayio_module_globals_table); const mp_obj_module_t displayio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/dotclockframebuffer/DotClockFramebuffer.c b/shared-bindings/dotclockframebuffer/DotClockFramebuffer.c index e423cd61a61a..6b7aeefcfb78 100644 --- a/shared-bindings/dotclockframebuffer/DotClockFramebuffer.c +++ b/shared-bindings/dotclockframebuffer/DotClockFramebuffer.c @@ -93,7 +93,7 @@ //| #:param int overscan_right: Allocate additional non-visible columns right of the last display column //| #:param int overscan_bottom: Allocate additional non-visible rows below the last display row //| ... -STATIC mp_obj_t dotclockframebuffer_framebuffer_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t dotclockframebuffer_framebuffer_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_de, ARG_vsync, ARG_hsync, ARG_dclk, ARG_red, ARG_green, ARG_blue, ARG_frequency, ARG_width, ARG_height, ARG_hsync_pulse_width, ARG_hsync_back_porch, ARG_hsync_front_porch, ARG_hsync_idle_low, @@ -176,7 +176,7 @@ static void check_for_deinit(dotclockframebuffer_framebuffer_obj_t *self) { //| If this function is not called, the results are unpredictable; updates may be partially shown. //| """ //| ... -STATIC mp_obj_t dotclockframebuffer_framebuffer_refresh(mp_obj_t self_in) { +static mp_obj_t dotclockframebuffer_framebuffer_refresh(mp_obj_t self_in) { dotclockframebuffer_framebuffer_obj_t *self = (dotclockframebuffer_framebuffer_obj_t *)self_in; check_for_deinit(self); common_hal_dotclockframebuffer_framebuffer_refresh(self); @@ -187,7 +187,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(dotclockframebuffer_framebuffer_refresh_obj, dotclockf //| refresh_rate: float //| """The pixel refresh rate of the display, in Hz""" -STATIC mp_obj_t dotclockframebuffer_framebuffer_get_refresh_rate(mp_obj_t self_in) { +static mp_obj_t dotclockframebuffer_framebuffer_get_refresh_rate(mp_obj_t self_in) { dotclockframebuffer_framebuffer_obj_t *self = (dotclockframebuffer_framebuffer_obj_t *)self_in; check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_dotclockframebuffer_framebuffer_get_refresh_rate(self)); @@ -198,7 +198,7 @@ MP_PROPERTY_GETTER(dotclockframebuffer_framebuffer_refresh_rate_obj, //| frequency: int //| """The pixel frequency of the display, in Hz""" -STATIC mp_obj_t dotclockframebuffer_framebuffer_get_frequency(mp_obj_t self_in) { +static mp_obj_t dotclockframebuffer_framebuffer_get_frequency(mp_obj_t self_in) { dotclockframebuffer_framebuffer_obj_t *self = (dotclockframebuffer_framebuffer_obj_t *)self_in; check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_dotclockframebuffer_framebuffer_get_frequency(self)); @@ -209,7 +209,7 @@ MP_PROPERTY_GETTER(dotclockframebuffer_framebuffer_frequency_obj, //| width: int //| """The width of the display, in pixels""" -STATIC mp_obj_t dotclockframebuffer_framebuffer_get_width(mp_obj_t self_in) { +static mp_obj_t dotclockframebuffer_framebuffer_get_width(mp_obj_t self_in) { dotclockframebuffer_framebuffer_obj_t *self = (dotclockframebuffer_framebuffer_obj_t *)self_in; check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_dotclockframebuffer_framebuffer_get_width(self)); @@ -221,7 +221,7 @@ MP_PROPERTY_GETTER(dotclockframebuffer_framebuffer_width_obj, //| height: int //| """The height of the display, in pixels""" //| -STATIC mp_obj_t dotclockframebuffer_framebuffer_get_height(mp_obj_t self_in) { +static mp_obj_t dotclockframebuffer_framebuffer_get_height(mp_obj_t self_in) { dotclockframebuffer_framebuffer_obj_t *self = (dotclockframebuffer_framebuffer_obj_t *)self_in; check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_dotclockframebuffer_framebuffer_get_height(self)); @@ -239,7 +239,7 @@ MP_PROPERTY_GETTER(dotclockframebuffer_framebuffer_height_obj, //| //| On Espressif this value is **guaranteed** to be a multiple of the 2 (i.e., it is a whole number of pixels)""" //| -STATIC mp_obj_t dotclockframebuffer_framebuffer_get_row_stride(mp_obj_t self_in) { +static mp_obj_t dotclockframebuffer_framebuffer_get_row_stride(mp_obj_t self_in) { dotclockframebuffer_framebuffer_obj_t *self = (dotclockframebuffer_framebuffer_obj_t *)self_in; check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_dotclockframebuffer_framebuffer_get_row_stride(self)); @@ -257,7 +257,7 @@ MP_PROPERTY_GETTER(dotclockframebuffer_framebuffer_row_stride_obj, //| //| On Espressif this value is **guaranteed** to be a multiple of the 2 (i.e., it is a whole number of pixels)""" //| -STATIC mp_obj_t dotclockframebuffer_framebuffer_get_first_pixel_offset(mp_obj_t self_in) { +static mp_obj_t dotclockframebuffer_framebuffer_get_first_pixel_offset(mp_obj_t self_in) { dotclockframebuffer_framebuffer_obj_t *self = (dotclockframebuffer_framebuffer_obj_t *)self_in; check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_dotclockframebuffer_framebuffer_get_first_pixel_offset(self)); @@ -267,7 +267,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(dotclockframebuffer_framebuffer_get_first_pixel_offset MP_PROPERTY_GETTER(dotclockframebuffer_framebuffer_first_pixel_offset_obj, (mp_obj_t)&dotclockframebuffer_framebuffer_get_first_pixel_offset_obj); -STATIC mp_int_t dotclockframebuffer_framebuffer_get_buffer(mp_obj_t self_in, mp_buffer_info_t *bufinfo, mp_uint_t flags) { +static mp_int_t dotclockframebuffer_framebuffer_get_buffer(mp_obj_t self_in, mp_buffer_info_t *bufinfo, mp_uint_t flags) { dotclockframebuffer_framebuffer_obj_t *self = (dotclockframebuffer_framebuffer_obj_t *)self_in; // a readonly framebuffer would be unusual but not impossible if ((flags & MP_BUFFER_WRITE) && !(self->bufinfo.typecode & MP_OBJ_ARRAY_TYPECODE_FLAG_RW)) { @@ -280,61 +280,61 @@ STATIC mp_int_t dotclockframebuffer_framebuffer_get_buffer(mp_obj_t self_in, mp_ // These version exists so that the prototype matches the protocol, // avoiding a type cast that can hide errors -STATIC void dotclockframebuffer_framebuffer_swapbuffers(mp_obj_t self_in, uint8_t *dirty_row_bitmap) { +static void dotclockframebuffer_framebuffer_swapbuffers(mp_obj_t self_in, uint8_t *dirty_row_bitmap) { (void)dirty_row_bitmap; dotclockframebuffer_framebuffer_obj_t *self = (dotclockframebuffer_framebuffer_obj_t *)self_in; common_hal_dotclockframebuffer_framebuffer_refresh(self); } -STATIC void dotclockframebuffer_framebuffer_deinit_proto(mp_obj_t self_in) { +static void dotclockframebuffer_framebuffer_deinit_proto(mp_obj_t self_in) { common_hal_dotclockframebuffer_framebuffer_deinit(self_in); } -STATIC float dotclockframebuffer_framebuffer_get_brightness_proto(mp_obj_t self_in) { +static float dotclockframebuffer_framebuffer_get_brightness_proto(mp_obj_t self_in) { return 1.0f; } -STATIC bool dotclockframebuffer_framebuffer_set_brightness_proto(mp_obj_t self_in, mp_float_t value) { +static bool dotclockframebuffer_framebuffer_set_brightness_proto(mp_obj_t self_in, mp_float_t value) { return false; } -STATIC int dotclockframebuffer_framebuffer_get_width_proto(mp_obj_t self_in) { +static int dotclockframebuffer_framebuffer_get_width_proto(mp_obj_t self_in) { return common_hal_dotclockframebuffer_framebuffer_get_width(self_in); } -STATIC int dotclockframebuffer_framebuffer_get_height_proto(mp_obj_t self_in) { +static int dotclockframebuffer_framebuffer_get_height_proto(mp_obj_t self_in) { return common_hal_dotclockframebuffer_framebuffer_get_height(self_in); } -STATIC int dotclockframebuffer_framebuffer_get_color_depth_proto(mp_obj_t self_in) { +static int dotclockframebuffer_framebuffer_get_color_depth_proto(mp_obj_t self_in) { return 16; } -STATIC int dotclockframebuffer_framebuffer_get_bytes_per_cell_proto(mp_obj_t self_in) { +static int dotclockframebuffer_framebuffer_get_bytes_per_cell_proto(mp_obj_t self_in) { return 1; } -STATIC int dotclockframebuffer_framebuffer_get_native_frames_per_second_proto(mp_obj_t self_in) { +static int dotclockframebuffer_framebuffer_get_native_frames_per_second_proto(mp_obj_t self_in) { return common_hal_dotclockframebuffer_framebuffer_get_refresh_rate(self_in); } -STATIC void dotclockframebuffer_framebuffer_get_bufinfo(mp_obj_t self_in, mp_buffer_info_t *bufinfo) { +static void dotclockframebuffer_framebuffer_get_bufinfo(mp_obj_t self_in, mp_buffer_info_t *bufinfo) { dotclockframebuffer_framebuffer_obj_t *self = (dotclockframebuffer_framebuffer_obj_t *)self_in; *bufinfo = self->bufinfo; } -STATIC int dotclockframebuffer_framebuffer_get_row_stride_proto(mp_obj_t self_in) { +static int dotclockframebuffer_framebuffer_get_row_stride_proto(mp_obj_t self_in) { dotclockframebuffer_framebuffer_obj_t *self = (dotclockframebuffer_framebuffer_obj_t *)self_in; return common_hal_dotclockframebuffer_framebuffer_get_row_stride(self); } -STATIC int dotclockframebuffer_framebuffer_get_first_pixel_offset_proto(mp_obj_t self_in) { +static int dotclockframebuffer_framebuffer_get_first_pixel_offset_proto(mp_obj_t self_in) { dotclockframebuffer_framebuffer_obj_t *self = (dotclockframebuffer_framebuffer_obj_t *)self_in; return common_hal_dotclockframebuffer_framebuffer_get_first_pixel_offset(self); } -STATIC const framebuffer_p_t dotclockframebuffer_framebuffer_proto = { +static const framebuffer_p_t dotclockframebuffer_framebuffer_proto = { MP_PROTO_IMPLEMENT(MP_QSTR_protocol_framebuffer) .get_bufinfo = dotclockframebuffer_framebuffer_get_bufinfo, .set_brightness = dotclockframebuffer_framebuffer_set_brightness_proto, @@ -351,7 +351,7 @@ STATIC const framebuffer_p_t dotclockframebuffer_framebuffer_proto = { }; -STATIC const mp_rom_map_elem_t dotclockframebuffer_framebuffer_locals_dict_table[] = { +static const mp_rom_map_elem_t dotclockframebuffer_framebuffer_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_width), MP_ROM_PTR(&dotclockframebuffer_framebuffer_width_obj) }, { MP_ROM_QSTR(MP_QSTR_height), MP_ROM_PTR(&dotclockframebuffer_framebuffer_height_obj) }, { MP_ROM_QSTR(MP_QSTR_row_stride), MP_ROM_PTR(&dotclockframebuffer_framebuffer_row_stride_obj) }, @@ -360,7 +360,7 @@ STATIC const mp_rom_map_elem_t dotclockframebuffer_framebuffer_locals_dict_table { MP_ROM_QSTR(MP_QSTR_refresh_rate), MP_ROM_PTR(&dotclockframebuffer_framebuffer_refresh_rate_obj) }, { MP_ROM_QSTR(MP_QSTR_refresh), MP_ROM_PTR(&dotclockframebuffer_framebuffer_refresh_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(dotclockframebuffer_framebuffer_locals_dict, dotclockframebuffer_framebuffer_locals_dict_table); +static MP_DEFINE_CONST_DICT(dotclockframebuffer_framebuffer_locals_dict, dotclockframebuffer_framebuffer_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( dotclockframebuffer_framebuffer_type, diff --git a/shared-bindings/dotclockframebuffer/__init__.c b/shared-bindings/dotclockframebuffer/__init__.c index b9af98cf5ce3..d05c57cddf59 100644 --- a/shared-bindings/dotclockframebuffer/__init__.c +++ b/shared-bindings/dotclockframebuffer/__init__.c @@ -62,7 +62,7 @@ //| """ //| -STATIC mp_obj_t ioexpander_send_init_sequence(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t ioexpander_send_init_sequence(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_bus, ARG_init_sequence, ARG_i2c_address, ARG_gpio_address, ARG_gpio_data_len, ARG_gpio_data, ARG_cs_bit, ARG_mosi_bit, ARG_clk_bit, ARG_reset_bit, ARG_i2c_init_sequence, NUM_ARGS }; static const mp_arg_t allowed_args[] = { @@ -130,15 +130,15 @@ STATIC mp_obj_t ioexpander_send_init_sequence(size_t n_args, const mp_obj_t *pos return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(ioexpander_send_init_sequence_obj, 0, ioexpander_send_init_sequence); +static MP_DEFINE_CONST_FUN_OBJ_KW(ioexpander_send_init_sequence_obj, 0, ioexpander_send_init_sequence); -STATIC const mp_rom_map_elem_t dotclockframebuffer_module_globals_table[] = { +static const mp_rom_map_elem_t dotclockframebuffer_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_dotclockframebuffer) }, { MP_ROM_QSTR(MP_QSTR_DotClockFramebuffer), MP_ROM_PTR(&dotclockframebuffer_framebuffer_type) }, { MP_ROM_QSTR(MP_QSTR_ioexpander_send_init_sequence), MP_ROM_PTR(&ioexpander_send_init_sequence_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(dotclockframebuffer_module_globals, dotclockframebuffer_module_globals_table); +static MP_DEFINE_CONST_DICT(dotclockframebuffer_module_globals, dotclockframebuffer_module_globals_table); const mp_obj_module_t dotclockframebuffer_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/dualbank/__init__.c b/shared-bindings/dualbank/__init__.c index 78f7feab285e..2f7f5776d683 100644 --- a/shared-bindings/dualbank/__init__.c +++ b/shared-bindings/dualbank/__init__.c @@ -48,7 +48,7 @@ //| #if CIRCUITPY_STORAGE_EXTEND -STATIC void raise_error_if_storage_extended(void) { +static void raise_error_if_storage_extended(void) { if (supervisor_flash_get_extended()) { mp_raise_msg_varg(&mp_type_RuntimeError, MP_ERROR_TEXT("%q is %q"), MP_QSTR_storage, MP_QSTR_extended); } @@ -65,7 +65,7 @@ STATIC void raise_error_if_storage_extended(void) { //| """ //| ... //| -STATIC mp_obj_t dualbank_flash(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t dualbank_flash(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_buffer, ARG_offset }; static const mp_arg_t allowed_args[] = { { MP_QSTR_buffer, MP_ARG_OBJ | MP_ARG_REQUIRED }, @@ -89,7 +89,7 @@ STATIC mp_obj_t dualbank_flash(size_t n_args, const mp_obj_t *pos_args, mp_map_t common_hal_dualbank_flash(bufinfo.buf, bufinfo.len, args[ARG_offset].u_int); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(dualbank_flash_obj, 0, dualbank_flash); +static MP_DEFINE_CONST_FUN_OBJ_KW(dualbank_flash_obj, 0, dualbank_flash); //| def switch() -> None: //| """Switches to the next-update partition. @@ -98,23 +98,23 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_KW(dualbank_flash_obj, 0, dualbank_flash); //| """ //| ... //| -STATIC mp_obj_t dualbank_switch(void) { +static mp_obj_t dualbank_switch(void) { #if CIRCUITPY_STORAGE_EXTEND raise_error_if_storage_extended(); #endif common_hal_dualbank_switch(); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_0(dualbank_switch_obj, dualbank_switch); +static MP_DEFINE_CONST_FUN_OBJ_0(dualbank_switch_obj, dualbank_switch); -STATIC const mp_rom_map_elem_t dualbank_module_globals_table[] = { +static const mp_rom_map_elem_t dualbank_module_globals_table[] = { // module name { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_dualbank) }, // module functions { MP_ROM_QSTR(MP_QSTR_flash), MP_ROM_PTR(&dualbank_flash_obj) }, { MP_ROM_QSTR(MP_QSTR_switch), MP_ROM_PTR(&dualbank_switch_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(dualbank_module_globals, dualbank_module_globals_table); +static MP_DEFINE_CONST_DICT(dualbank_module_globals, dualbank_module_globals_table); const mp_obj_module_t dualbank_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/epaperdisplay/EPaperDisplay.c b/shared-bindings/epaperdisplay/EPaperDisplay.c index 19a3568f0564..ff7c1670ddf5 100644 --- a/shared-bindings/epaperdisplay/EPaperDisplay.c +++ b/shared-bindings/epaperdisplay/EPaperDisplay.c @@ -107,7 +107,7 @@ //| :param bool address_little_endian: Send the least significant byte (not bit) of multi-byte addresses first. Ignored when ram is addressed with one byte //| """ //| ... -STATIC mp_obj_t epaperdisplay_epaperdisplay_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t epaperdisplay_epaperdisplay_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_display_bus, ARG_start_sequence, ARG_stop_sequence, ARG_width, ARG_height, ARG_ram_width, ARG_ram_height, ARG_colstart, ARG_rowstart, ARG_rotation, ARG_set_column_window_command, ARG_set_row_window_command, ARG_set_current_column_command, @@ -227,7 +227,7 @@ static epaperdisplay_epaperdisplay_obj_t *native_display(mp_obj_t display_obj) { } // Undocumented show() implementation with a friendly error message. -STATIC mp_obj_t epaperdisplay_epaperdisplay_obj_show(mp_obj_t self_in, mp_obj_t group_in) { +static mp_obj_t epaperdisplay_epaperdisplay_obj_show(mp_obj_t self_in, mp_obj_t group_in) { mp_raise_AttributeError(MP_ERROR_TEXT(".show(x) removed. Use .root_group = x")); return mp_const_none; } @@ -238,7 +238,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(epaperdisplay_epaperdisplay_show_obj, epaperdisplay_ep //| ) -> None: //| """Updates the ``start_sequence`` and ``seconds_per_frame`` parameters to enable //| varying the refresh mode of the display.""" -STATIC mp_obj_t epaperdisplay_epaperdisplay_update_refresh_mode(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t epaperdisplay_epaperdisplay_update_refresh_mode(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_start_sequence, ARG_seconds_per_frame }; static const mp_arg_t allowed_args[] = { { MP_QSTR_start_sequence, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -263,7 +263,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(epaperdisplay_epaperdisplay_update_refresh_mode_obj, //| """Refreshes the display immediately or raises an exception if too soon. Use //| ``time.sleep(display.time_to_refresh)`` to sleep until a refresh can occur.""" //| ... -STATIC mp_obj_t epaperdisplay_epaperdisplay_obj_refresh(mp_obj_t self_in) { +static mp_obj_t epaperdisplay_epaperdisplay_obj_refresh(mp_obj_t self_in) { epaperdisplay_epaperdisplay_obj_t *self = native_display(self_in); bool ok = common_hal_epaperdisplay_epaperdisplay_refresh(self); if (!ok) { @@ -275,7 +275,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(epaperdisplay_epaperdisplay_refresh_obj, epaperdisplay //| time_to_refresh: float //| """Time, in fractional seconds, until the ePaper display can be refreshed.""" -STATIC mp_obj_t epaperdisplay_epaperdisplay_obj_get_time_to_refresh(mp_obj_t self_in) { +static mp_obj_t epaperdisplay_epaperdisplay_obj_get_time_to_refresh(mp_obj_t self_in) { epaperdisplay_epaperdisplay_obj_t *self = native_display(self_in); // band aid fix for // sleeping for display.time_to_refresh might not be long enough due to rounding error (?) @@ -290,7 +290,7 @@ MP_PROPERTY_GETTER(epaperdisplay_epaperdisplay_time_to_refresh_obj, //| busy: bool //| """True when the display is refreshing. This uses the ``busy_pin`` when available or the //| ``refresh_time`` otherwise.""" -STATIC mp_obj_t epaperdisplay_epaperdisplay_obj_get_busy(mp_obj_t self_in) { +static mp_obj_t epaperdisplay_epaperdisplay_obj_get_busy(mp_obj_t self_in) { epaperdisplay_epaperdisplay_obj_t *self = native_display(self_in); return mp_obj_new_bool(common_hal_epaperdisplay_epaperdisplay_get_busy(self)); } @@ -301,7 +301,7 @@ MP_PROPERTY_GETTER(epaperdisplay_epaperdisplay_busy_obj, //| width: int //| """Gets the width of the display in pixels""" -STATIC mp_obj_t epaperdisplay_epaperdisplay_obj_get_width(mp_obj_t self_in) { +static mp_obj_t epaperdisplay_epaperdisplay_obj_get_width(mp_obj_t self_in) { epaperdisplay_epaperdisplay_obj_t *self = native_display(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_epaperdisplay_epaperdisplay_get_width(self)); } @@ -312,7 +312,7 @@ MP_PROPERTY_GETTER(epaperdisplay_epaperdisplay_width_obj, //| height: int //| """Gets the height of the display in pixels""" -STATIC mp_obj_t epaperdisplay_epaperdisplay_obj_get_height(mp_obj_t self_in) { +static mp_obj_t epaperdisplay_epaperdisplay_obj_get_height(mp_obj_t self_in) { epaperdisplay_epaperdisplay_obj_t *self = native_display(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_epaperdisplay_epaperdisplay_get_height(self)); } @@ -323,12 +323,12 @@ MP_PROPERTY_GETTER(epaperdisplay_epaperdisplay_height_obj, //| rotation: int //| """The rotation of the display as an int in degrees.""" -STATIC mp_obj_t epaperdisplay_epaperdisplay_obj_get_rotation(mp_obj_t self_in) { +static mp_obj_t epaperdisplay_epaperdisplay_obj_get_rotation(mp_obj_t self_in) { epaperdisplay_epaperdisplay_obj_t *self = native_display(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_epaperdisplay_epaperdisplay_get_rotation(self)); } MP_DEFINE_CONST_FUN_OBJ_1(epaperdisplay_epaperdisplay_get_rotation_obj, epaperdisplay_epaperdisplay_obj_get_rotation); -STATIC mp_obj_t epaperdisplay_epaperdisplay_obj_set_rotation(mp_obj_t self_in, mp_obj_t value) { +static mp_obj_t epaperdisplay_epaperdisplay_obj_set_rotation(mp_obj_t self_in, mp_obj_t value) { epaperdisplay_epaperdisplay_obj_t *self = native_display(self_in); common_hal_epaperdisplay_epaperdisplay_set_rotation(self, mp_obj_get_int(value)); return mp_const_none; @@ -343,7 +343,7 @@ MP_PROPERTY_GETSET(epaperdisplay_epaperdisplay_rotation_obj, //| bus: _DisplayBus //| """The bus being used by the display""" //| -STATIC mp_obj_t epaperdisplay_epaperdisplay_obj_get_bus(mp_obj_t self_in) { +static mp_obj_t epaperdisplay_epaperdisplay_obj_get_bus(mp_obj_t self_in) { epaperdisplay_epaperdisplay_obj_t *self = native_display(self_in); return common_hal_epaperdisplay_epaperdisplay_get_bus(self); } @@ -358,13 +358,13 @@ MP_PROPERTY_GETTER(epaperdisplay_epaperdisplay_bus_obj, //| If the root group is set to ``None``, no output will be shown. //| """ //| -STATIC mp_obj_t epaperdisplay_epaperdisplay_obj_get_root_group(mp_obj_t self_in) { +static mp_obj_t epaperdisplay_epaperdisplay_obj_get_root_group(mp_obj_t self_in) { epaperdisplay_epaperdisplay_obj_t *self = native_display(self_in); return common_hal_epaperdisplay_epaperdisplay_get_root_group(self); } MP_DEFINE_CONST_FUN_OBJ_1(epaperdisplay_epaperdisplay_get_root_group_obj, epaperdisplay_epaperdisplay_obj_get_root_group); -STATIC mp_obj_t epaperdisplay_epaperdisplay_obj_set_root_group(mp_obj_t self_in, mp_obj_t group_in) { +static mp_obj_t epaperdisplay_epaperdisplay_obj_set_root_group(mp_obj_t self_in, mp_obj_t group_in) { epaperdisplay_epaperdisplay_obj_t *self = native_display(self_in); displayio_group_t *group = NULL; if (group_in != mp_const_none) { @@ -380,7 +380,7 @@ MP_PROPERTY_GETSET(epaperdisplay_epaperdisplay_root_group_obj, (mp_obj_t)&epaperdisplay_epaperdisplay_get_root_group_obj, (mp_obj_t)&epaperdisplay_epaperdisplay_set_root_group_obj); -STATIC const mp_rom_map_elem_t epaperdisplay_epaperdisplay_locals_dict_table[] = { +static const mp_rom_map_elem_t epaperdisplay_epaperdisplay_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_show), MP_ROM_PTR(&epaperdisplay_epaperdisplay_show_obj) }, { MP_ROM_QSTR(MP_QSTR_update_refresh_mode), MP_ROM_PTR(&epaperdisplay_epaperdisplay_update_refresh_mode_obj) }, { MP_ROM_QSTR(MP_QSTR_refresh), MP_ROM_PTR(&epaperdisplay_epaperdisplay_refresh_obj) }, @@ -393,7 +393,7 @@ STATIC const mp_rom_map_elem_t epaperdisplay_epaperdisplay_locals_dict_table[] = { MP_ROM_QSTR(MP_QSTR_time_to_refresh), MP_ROM_PTR(&epaperdisplay_epaperdisplay_time_to_refresh_obj) }, { MP_ROM_QSTR(MP_QSTR_root_group), MP_ROM_PTR(&epaperdisplay_epaperdisplay_root_group_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(epaperdisplay_epaperdisplay_locals_dict, epaperdisplay_epaperdisplay_locals_dict_table); +static MP_DEFINE_CONST_DICT(epaperdisplay_epaperdisplay_locals_dict, epaperdisplay_epaperdisplay_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( epaperdisplay_epaperdisplay_type, diff --git a/shared-bindings/epaperdisplay/__init__.c b/shared-bindings/epaperdisplay/__init__.c index f657e3e665c7..1b18212a35a3 100644 --- a/shared-bindings/epaperdisplay/__init__.c +++ b/shared-bindings/epaperdisplay/__init__.c @@ -17,12 +17,12 @@ //| //| """ -STATIC const mp_rom_map_elem_t epaperdisplay_module_globals_table[] = { +static const mp_rom_map_elem_t epaperdisplay_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_displayio) }, { MP_ROM_QSTR(MP_QSTR_EPaperDisplay), MP_ROM_PTR(&epaperdisplay_epaperdisplay_type) }, }; -STATIC MP_DEFINE_CONST_DICT(epaperdisplay_module_globals, epaperdisplay_module_globals_table); +static MP_DEFINE_CONST_DICT(epaperdisplay_module_globals, epaperdisplay_module_globals_table); const mp_obj_module_t epaperdisplay_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/floppyio/__init__.c b/shared-bindings/floppyio/__init__.c index 2982981e9e36..ab166f1354e8 100644 --- a/shared-bindings/floppyio/__init__.c +++ b/shared-bindings/floppyio/__init__.c @@ -40,7 +40,7 @@ //| """ //| ... //| -STATIC mp_obj_t floppyio_flux_readinto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t floppyio_flux_readinto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { #if CIRCUITPY_DIGITALIO enum { ARG_buffer, ARG_data, ARG_index, ARG_index_wait }; static const mp_arg_t allowed_args[] = { @@ -119,7 +119,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(floppyio_flux_readinto_obj, 0, floppyio_flux_readinto //| """ //| ... //| -STATIC mp_obj_t floppyio_mfm_readinto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t floppyio_mfm_readinto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_buffer, ARG_flux, ARG_t2_max, ARG_t3_max, ARG_validity, ARG_clear_validity }; static const mp_arg_t allowed_args[] = { { MP_QSTR_buffer, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} }, @@ -163,13 +163,13 @@ MP_DEFINE_CONST_FUN_OBJ_KW(floppyio_mfm_readinto_obj, 0, floppyio_mfm_readinto); //| samplerate: int //| """The approximate sample rate in Hz used by flux_readinto.""" -STATIC const mp_rom_map_elem_t floppyio_module_globals_table[] = { +static const mp_rom_map_elem_t floppyio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_floppyio) }, { MP_ROM_QSTR(MP_QSTR_flux_readinto), MP_ROM_PTR(&floppyio_flux_readinto_obj) }, { MP_ROM_QSTR(MP_QSTR_mfm_readinto), MP_ROM_PTR(&floppyio_mfm_readinto_obj) }, { MP_ROM_QSTR(MP_QSTR_samplerate), MP_ROM_INT(FLOPPYIO_SAMPLERATE) }, }; -STATIC MP_DEFINE_CONST_DICT(floppyio_module_globals, floppyio_module_globals_table); +static MP_DEFINE_CONST_DICT(floppyio_module_globals, floppyio_module_globals_table); const mp_obj_module_t floppyio_module = { .base = {&mp_type_module }, diff --git a/shared-bindings/fontio/BuiltinFont.c b/shared-bindings/fontio/BuiltinFont.c index ca31198a0756..9d3f30675b9e 100644 --- a/shared-bindings/fontio/BuiltinFont.c +++ b/shared-bindings/fontio/BuiltinFont.c @@ -48,7 +48,7 @@ //| """Bitmap containing all font glyphs starting with ASCII and followed by unicode. Use //| `get_glyph` in most cases. This is useful for use with `displayio.TileGrid` and //| `terminalio.Terminal`.""" -STATIC mp_obj_t fontio_builtinfont_obj_get_bitmap(mp_obj_t self_in) { +static mp_obj_t fontio_builtinfont_obj_get_bitmap(mp_obj_t self_in) { fontio_builtinfont_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_fontio_builtinfont_get_bitmap(self); } @@ -60,7 +60,7 @@ MP_PROPERTY_GETTER(fontio_builtinfont_bitmap_obj, //| def get_bounding_box(self) -> Tuple[int, int]: //| """Returns the maximum bounds of all glyphs in the font in a tuple of two values: width, height.""" //| ... -STATIC mp_obj_t fontio_builtinfont_obj_get_bounding_box(mp_obj_t self_in) { +static mp_obj_t fontio_builtinfont_obj_get_bounding_box(mp_obj_t self_in) { fontio_builtinfont_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_fontio_builtinfont_get_bounding_box(self); @@ -72,7 +72,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(fontio_builtinfont_get_bounding_box_obj, fontio_builti //| """Returns a `fontio.Glyph` for the given codepoint or None if no glyph is available.""" //| ... //| -STATIC mp_obj_t fontio_builtinfont_obj_get_glyph(mp_obj_t self_in, mp_obj_t codepoint_obj) { +static mp_obj_t fontio_builtinfont_obj_get_glyph(mp_obj_t self_in, mp_obj_t codepoint_obj) { fontio_builtinfont_t *self = MP_OBJ_TO_PTR(self_in); mp_int_t codepoint = mp_arg_validate_type_int(codepoint_obj, MP_QSTR_codepoint); @@ -80,12 +80,12 @@ STATIC mp_obj_t fontio_builtinfont_obj_get_glyph(mp_obj_t self_in, mp_obj_t code } MP_DEFINE_CONST_FUN_OBJ_2(fontio_builtinfont_get_glyph_obj, fontio_builtinfont_obj_get_glyph); -STATIC const mp_rom_map_elem_t fontio_builtinfont_locals_dict_table[] = { +static const mp_rom_map_elem_t fontio_builtinfont_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_bitmap), MP_ROM_PTR(&fontio_builtinfont_bitmap_obj) }, { MP_ROM_QSTR(MP_QSTR_get_bounding_box), MP_ROM_PTR(&fontio_builtinfont_get_bounding_box_obj) }, { MP_ROM_QSTR(MP_QSTR_get_glyph), MP_ROM_PTR(&fontio_builtinfont_get_glyph_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(fontio_builtinfont_locals_dict, fontio_builtinfont_locals_dict_table); +static MP_DEFINE_CONST_DICT(fontio_builtinfont_locals_dict, fontio_builtinfont_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( fontio_builtinfont_type, diff --git a/shared-bindings/fontio/__init__.c b/shared-bindings/fontio/__init__.c index 648dcfada9d9..57b91ea200e5 100644 --- a/shared-bindings/fontio/__init__.c +++ b/shared-bindings/fontio/__init__.c @@ -23,13 +23,13 @@ //| //| """ -STATIC const mp_rom_map_elem_t fontio_module_globals_table[] = { +static const mp_rom_map_elem_t fontio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_fontio) }, { MP_ROM_QSTR(MP_QSTR_BuiltinFont), MP_ROM_PTR(&fontio_builtinfont_type) }, { MP_ROM_QSTR(MP_QSTR_Glyph), MP_ROM_PTR(&fontio_glyph_type) }, }; -STATIC MP_DEFINE_CONST_DICT(fontio_module_globals, fontio_module_globals_table); +static MP_DEFINE_CONST_DICT(fontio_module_globals, fontio_module_globals_table); const mp_obj_module_t fontio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/fourwire/FourWire.c b/shared-bindings/fourwire/FourWire.c index 5d62ba311aa3..bddd772c2e6e 100644 --- a/shared-bindings/fourwire/FourWire.c +++ b/shared-bindings/fourwire/FourWire.c @@ -54,7 +54,7 @@ //| :param int phase: the edge of the clock that data is captured. First (0) //| or second (1). Rising or falling depends on clock polarity.""" //| ... -STATIC mp_obj_t fourwire_fourwire_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t fourwire_fourwire_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_spi_bus, ARG_command, ARG_chip_select, ARG_reset, ARG_baudrate, ARG_polarity, ARG_phase }; static const mp_arg_t allowed_args[] = { { MP_QSTR_spi_bus, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -89,7 +89,7 @@ STATIC mp_obj_t fourwire_fourwire_make_new(const mp_obj_type_t *type, size_t n_a //| """Performs a hardware reset via the reset pin. Raises an exception if called when no reset pin //| is available.""" //| ... -STATIC mp_obj_t fourwire_fourwire_obj_reset(mp_obj_t self_in) { +static mp_obj_t fourwire_fourwire_obj_reset(mp_obj_t self_in) { fourwire_fourwire_obj_t *self = self_in; if (!common_hal_fourwire_fourwire_reset(self)) { @@ -106,7 +106,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(fourwire_fourwire_reset_obj, fourwire_fourwire_obj_res //| vertical scroll, set via ``send`` may or may not be reset once the code is done.""" //| ... //| -STATIC mp_obj_t fourwire_fourwire_obj_send(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t fourwire_fourwire_obj_send(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_command, ARG_data, ARG_toggle_every_byte }; static const mp_arg_t allowed_args[] = { { MP_QSTR_command, MP_ARG_INT | MP_ARG_REQUIRED }, @@ -139,11 +139,11 @@ STATIC mp_obj_t fourwire_fourwire_obj_send(size_t n_args, const mp_obj_t *pos_ar } MP_DEFINE_CONST_FUN_OBJ_KW(fourwire_fourwire_send_obj, 1, fourwire_fourwire_obj_send); -STATIC const mp_rom_map_elem_t fourwire_fourwire_locals_dict_table[] = { +static const mp_rom_map_elem_t fourwire_fourwire_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_reset), MP_ROM_PTR(&fourwire_fourwire_reset_obj) }, { MP_ROM_QSTR(MP_QSTR_send), MP_ROM_PTR(&fourwire_fourwire_send_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(fourwire_fourwire_locals_dict, fourwire_fourwire_locals_dict_table); +static MP_DEFINE_CONST_DICT(fourwire_fourwire_locals_dict, fourwire_fourwire_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( fourwire_fourwire_type, diff --git a/shared-bindings/fourwire/__init__.c b/shared-bindings/fourwire/__init__.c index 6e952363b052..34542db97a7e 100644 --- a/shared-bindings/fourwire/__init__.c +++ b/shared-bindings/fourwire/__init__.c @@ -17,12 +17,12 @@ //| //| """ -STATIC const mp_rom_map_elem_t fourwire_module_globals_table[] = { +static const mp_rom_map_elem_t fourwire_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_fourwire) }, { MP_ROM_QSTR(MP_QSTR_FourWire), MP_ROM_PTR(&fourwire_fourwire_type) }, }; -STATIC MP_DEFINE_CONST_DICT(fourwire_module_globals, fourwire_module_globals_table); +static MP_DEFINE_CONST_DICT(fourwire_module_globals, fourwire_module_globals_table); const mp_obj_module_t fourwire_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/framebufferio/FramebufferDisplay.c b/shared-bindings/framebufferio/FramebufferDisplay.c index cef206da35a7..29242d3a632b 100644 --- a/shared-bindings/framebufferio/FramebufferDisplay.c +++ b/shared-bindings/framebufferio/FramebufferDisplay.c @@ -40,7 +40,7 @@ //| :param int rotation: The rotation of the display in degrees clockwise. Must be in 90 degree increments (0, 90, 180, 270) //| """ //| ... -STATIC mp_obj_t framebufferio_framebufferdisplay_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t framebufferio_framebufferdisplay_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_framebuffer, ARG_rotation, ARG_auto_refresh, NUM_ARGS }; static const mp_arg_t allowed_args[] = { { MP_QSTR_framebuffer, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -79,7 +79,7 @@ static framebufferio_framebufferdisplay_obj_t *native_display(mp_obj_t display_o } // Undocumented show() implementation with a friendly error message. -STATIC mp_obj_t framebufferio_framebufferdisplay_obj_show(mp_obj_t self_in, mp_obj_t group_in) { +static mp_obj_t framebufferio_framebufferdisplay_obj_show(mp_obj_t self_in, mp_obj_t group_in) { mp_raise_AttributeError(MP_ERROR_TEXT(".show(x) removed. Use .root_group = x")); return mp_const_none; } @@ -111,7 +111,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(framebufferio_framebufferdisplay_show_obj, framebuffer //| :param int minimum_frames_per_second: The minimum number of times the screen should be updated per second. //| """ //| ... -STATIC mp_obj_t framebufferio_framebufferdisplay_obj_refresh(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t framebufferio_framebufferdisplay_obj_refresh(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_target_frames_per_second, ARG_minimum_frames_per_second }; static const mp_arg_t allowed_args[] = { { MP_QSTR_target_frames_per_second, MP_ARG_OBJ | MP_ARG_KW_ONLY, {.u_obj = mp_const_none} }, @@ -140,13 +140,13 @@ MP_DEFINE_CONST_FUN_OBJ_KW(framebufferio_framebufferdisplay_refresh_obj, 1, fram //| auto_refresh: bool //| """True when the display is refreshed automatically.""" -STATIC mp_obj_t framebufferio_framebufferdisplay_obj_get_auto_refresh(mp_obj_t self_in) { +static mp_obj_t framebufferio_framebufferdisplay_obj_get_auto_refresh(mp_obj_t self_in) { framebufferio_framebufferdisplay_obj_t *self = native_display(self_in); return mp_obj_new_bool(common_hal_framebufferio_framebufferdisplay_get_auto_refresh(self)); } MP_DEFINE_CONST_FUN_OBJ_1(framebufferio_framebufferdisplay_get_auto_refresh_obj, framebufferio_framebufferdisplay_obj_get_auto_refresh); -STATIC mp_obj_t framebufferio_framebufferdisplay_obj_set_auto_refresh(mp_obj_t self_in, mp_obj_t auto_refresh) { +static mp_obj_t framebufferio_framebufferdisplay_obj_set_auto_refresh(mp_obj_t self_in, mp_obj_t auto_refresh) { framebufferio_framebufferdisplay_obj_t *self = native_display(self_in); common_hal_framebufferio_framebufferdisplay_set_auto_refresh(self, mp_obj_is_true(auto_refresh)); @@ -161,7 +161,7 @@ MP_PROPERTY_GETSET(framebufferio_framebufferdisplay_auto_refresh_obj, //| brightness: float //| """The brightness of the display as a float. 0.0 is off and 1.0 is full brightness.""" -STATIC mp_obj_t framebufferio_framebufferdisplay_obj_get_brightness(mp_obj_t self_in) { +static mp_obj_t framebufferio_framebufferdisplay_obj_get_brightness(mp_obj_t self_in) { framebufferio_framebufferdisplay_obj_t *self = native_display(self_in); mp_float_t brightness = common_hal_framebufferio_framebufferdisplay_get_brightness(self); if (brightness < 0) { @@ -171,7 +171,7 @@ STATIC mp_obj_t framebufferio_framebufferdisplay_obj_get_brightness(mp_obj_t sel } MP_DEFINE_CONST_FUN_OBJ_1(framebufferio_framebufferdisplay_get_brightness_obj, framebufferio_framebufferdisplay_obj_get_brightness); -STATIC mp_obj_t framebufferio_framebufferdisplay_obj_set_brightness(mp_obj_t self_in, mp_obj_t brightness_obj) { +static mp_obj_t framebufferio_framebufferdisplay_obj_set_brightness(mp_obj_t self_in, mp_obj_t brightness_obj) { framebufferio_framebufferdisplay_obj_t *self = native_display(self_in); mp_float_t brightness = mp_obj_get_float(brightness_obj); if (brightness < 0.0f || brightness > 1.0f) { @@ -191,7 +191,7 @@ MP_PROPERTY_GETSET(framebufferio_framebufferdisplay_brightness_obj, //| width: int //| """Gets the width of the framebuffer""" -STATIC mp_obj_t framebufferio_framebufferdisplay_obj_get_width(mp_obj_t self_in) { +static mp_obj_t framebufferio_framebufferdisplay_obj_get_width(mp_obj_t self_in) { framebufferio_framebufferdisplay_obj_t *self = native_display(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_framebufferio_framebufferdisplay_get_width(self)); } @@ -202,7 +202,7 @@ MP_PROPERTY_GETTER(framebufferio_framebufferdisplay_width_obj, //| height: int //| """Gets the height of the framebuffer""" -STATIC mp_obj_t framebufferio_framebufferdisplay_obj_get_height(mp_obj_t self_in) { +static mp_obj_t framebufferio_framebufferdisplay_obj_get_height(mp_obj_t self_in) { framebufferio_framebufferdisplay_obj_t *self = native_display(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_framebufferio_framebufferdisplay_get_height(self)); } @@ -213,12 +213,12 @@ MP_PROPERTY_GETTER(framebufferio_framebufferdisplay_height_obj, //| rotation: int //| """The rotation of the display as an int in degrees.""" -STATIC mp_obj_t framebufferio_framebufferdisplay_obj_get_rotation(mp_obj_t self_in) { +static mp_obj_t framebufferio_framebufferdisplay_obj_get_rotation(mp_obj_t self_in) { framebufferio_framebufferdisplay_obj_t *self = native_display(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_framebufferio_framebufferdisplay_get_rotation(self)); } MP_DEFINE_CONST_FUN_OBJ_1(framebufferio_framebufferdisplay_get_rotation_obj, framebufferio_framebufferdisplay_obj_get_rotation); -STATIC mp_obj_t framebufferio_framebufferdisplay_obj_set_rotation(mp_obj_t self_in, mp_obj_t value) { +static mp_obj_t framebufferio_framebufferdisplay_obj_set_rotation(mp_obj_t self_in, mp_obj_t value) { framebufferio_framebufferdisplay_obj_t *self = native_display(self_in); common_hal_framebufferio_framebufferdisplay_set_rotation(self, mp_obj_get_int(value)); return mp_const_none; @@ -232,7 +232,7 @@ MP_PROPERTY_GETSET(framebufferio_framebufferdisplay_rotation_obj, //| framebuffer: circuitpython_typing.FrameBuffer //| """The framebuffer being used by the display""" -STATIC mp_obj_t framebufferio_framebufferdisplay_obj_get_framebuffer(mp_obj_t self_in) { +static mp_obj_t framebufferio_framebufferdisplay_obj_get_framebuffer(mp_obj_t self_in) { framebufferio_framebufferdisplay_obj_t *self = native_display(self_in); return common_hal_framebufferio_framebufferdisplay_get_framebuffer(self); } @@ -249,7 +249,7 @@ MP_PROPERTY_GETTER(framebufferio_framebufferframebuffer_obj, //| :param ~circuitpython_typing.WriteableBuffer buffer: The buffer in which to place the pixel data //| """ //| ... -STATIC mp_obj_t framebufferio_framebufferdisplay_obj_fill_row(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t framebufferio_framebufferdisplay_obj_fill_row(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_y, ARG_buffer }; static const mp_arg_t allowed_args[] = { { MP_QSTR_y, MP_ARG_INT | MP_ARG_REQUIRED, {.u_int = -1} }, @@ -309,13 +309,13 @@ MP_DEFINE_CONST_FUN_OBJ_KW(framebufferio_framebufferdisplay_fill_row_obj, 1, fra //| If the root group is set to ``None``, no output will be shown. //| """ //| -STATIC mp_obj_t framebufferio_framebufferdisplay_obj_get_root_group(mp_obj_t self_in) { +static mp_obj_t framebufferio_framebufferdisplay_obj_get_root_group(mp_obj_t self_in) { framebufferio_framebufferdisplay_obj_t *self = native_display(self_in); return common_hal_framebufferio_framebufferdisplay_get_root_group(self); } MP_DEFINE_CONST_FUN_OBJ_1(framebufferio_framebufferdisplay_get_root_group_obj, framebufferio_framebufferdisplay_obj_get_root_group); -STATIC mp_obj_t framebufferio_framebufferdisplay_obj_set_root_group(mp_obj_t self_in, mp_obj_t group_in) { +static mp_obj_t framebufferio_framebufferdisplay_obj_set_root_group(mp_obj_t self_in, mp_obj_t group_in) { framebufferio_framebufferdisplay_obj_t *self = native_display(self_in); displayio_group_t *group = NULL; if (group_in != mp_const_none) { @@ -334,7 +334,7 @@ MP_PROPERTY_GETSET(framebufferio_framebufferdisplay_root_group_obj, (mp_obj_t)&framebufferio_framebufferdisplay_get_root_group_obj, (mp_obj_t)&framebufferio_framebufferdisplay_set_root_group_obj); -STATIC const mp_rom_map_elem_t framebufferio_framebufferdisplay_locals_dict_table[] = { +static const mp_rom_map_elem_t framebufferio_framebufferdisplay_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_show), MP_ROM_PTR(&framebufferio_framebufferdisplay_show_obj) }, { MP_ROM_QSTR(MP_QSTR_refresh), MP_ROM_PTR(&framebufferio_framebufferdisplay_refresh_obj) }, { MP_ROM_QSTR(MP_QSTR_fill_row), MP_ROM_PTR(&framebufferio_framebufferdisplay_fill_row_obj) }, @@ -349,7 +349,7 @@ STATIC const mp_rom_map_elem_t framebufferio_framebufferdisplay_locals_dict_tabl { MP_ROM_QSTR(MP_QSTR_framebuffer), MP_ROM_PTR(&framebufferio_framebufferframebuffer_obj) }, { MP_ROM_QSTR(MP_QSTR_root_group), MP_ROM_PTR(&framebufferio_framebufferdisplay_root_group_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(framebufferio_framebufferdisplay_locals_dict, framebufferio_framebufferdisplay_locals_dict_table); +static MP_DEFINE_CONST_DICT(framebufferio_framebufferdisplay_locals_dict, framebufferio_framebufferdisplay_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( framebufferio_framebufferdisplay_type, diff --git a/shared-bindings/framebufferio/__init__.c b/shared-bindings/framebufferio/__init__.c index b53571de22cc..1b08cf192031 100644 --- a/shared-bindings/framebufferio/__init__.c +++ b/shared-bindings/framebufferio/__init__.c @@ -22,7 +22,7 @@ static const mp_rom_map_elem_t framebufferio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_FramebufferDisplay), MP_ROM_PTR(&framebufferio_framebufferdisplay_type) }, }; -STATIC MP_DEFINE_CONST_DICT(framebufferio_module_globals, framebufferio_module_globals_table); +static MP_DEFINE_CONST_DICT(framebufferio_module_globals, framebufferio_module_globals_table); const mp_obj_module_t framebufferio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/frequencyio/FrequencyIn.c b/shared-bindings/frequencyio/FrequencyIn.c index 11feb4545f4f..5bd18658d70b 100644 --- a/shared-bindings/frequencyio/FrequencyIn.c +++ b/shared-bindings/frequencyio/FrequencyIn.c @@ -49,7 +49,7 @@ //| # as the value. //| frequency.clear()""" //| ... -STATIC mp_obj_t frequencyio_frequencyin_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t frequencyio_frequencyin_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { mp_arg_check_num(n_args, n_kw, 1, 1, true); enum { ARG_pin, ARG_capture_period }; @@ -74,14 +74,14 @@ STATIC mp_obj_t frequencyio_frequencyin_make_new(const mp_obj_type_t *type, size //| def deinit(self) -> None: //| """Deinitialises the FrequencyIn and releases any hardware resources for reuse.""" //| ... -STATIC mp_obj_t frequencyio_frequencyin_deinit(mp_obj_t self_in) { +static mp_obj_t frequencyio_frequencyin_deinit(mp_obj_t self_in) { frequencyio_frequencyin_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_frequencyio_frequencyin_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(frequencyio_frequencyin_deinit_obj, frequencyio_frequencyin_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(frequencyio_frequencyin_deinit_obj, frequencyio_frequencyin_deinit); -STATIC void check_for_deinit(frequencyio_frequencyin_obj_t *self) { +static void check_for_deinit(frequencyio_frequencyin_obj_t *self) { if (common_hal_frequencyio_frequencyin_deinited(self)) { raise_deinited_error(); } @@ -96,17 +96,17 @@ STATIC void check_for_deinit(frequencyio_frequencyin_obj_t *self) { //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t frequencyio_frequencyin_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t frequencyio_frequencyin_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_frequencyio_frequencyin_deinit(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(frequencyio_frequencyin___exit___obj, 4, 4, frequencyio_frequencyin_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(frequencyio_frequencyin___exit___obj, 4, 4, frequencyio_frequencyin_obj___exit__); //| def pause(self) -> None: //| """Pause frequency capture.""" //| ... -STATIC mp_obj_t frequencyio_frequencyin_obj_pause(mp_obj_t self_in) { +static mp_obj_t frequencyio_frequencyin_obj_pause(mp_obj_t self_in) { frequencyio_frequencyin_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -118,7 +118,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(frequencyio_frequencyin_pause_obj, frequencyio_frequen //| def resume(self) -> None: //| """Resumes frequency capture.""" //| ... -STATIC mp_obj_t frequencyio_frequencyin_obj_resume(mp_obj_t self_in) { +static mp_obj_t frequencyio_frequencyin_obj_resume(mp_obj_t self_in) { frequencyio_frequencyin_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -131,7 +131,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(frequencyio_frequencyin_resume_obj, frequencyio_freque //| """Clears the last detected frequency capture value.""" //| ... -STATIC mp_obj_t frequencyio_frequencyin_obj_clear(mp_obj_t self_in) { +static mp_obj_t frequencyio_frequencyin_obj_clear(mp_obj_t self_in) { frequencyio_frequencyin_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -147,7 +147,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(frequencyio_frequencyin_clear_obj, frequencyio_frequen //| //| .. note:: When setting a new ``capture_period``, all previous capture information is //| cleared with a call to ``clear()``.""" -STATIC mp_obj_t frequencyio_frequencyin_obj_get_capture_period(mp_obj_t self_in) { +static mp_obj_t frequencyio_frequencyin_obj_get_capture_period(mp_obj_t self_in) { frequencyio_frequencyin_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -155,7 +155,7 @@ STATIC mp_obj_t frequencyio_frequencyin_obj_get_capture_period(mp_obj_t self_in) } MP_DEFINE_CONST_FUN_OBJ_1(frequencyio_frequency_get_capture_period_obj, frequencyio_frequencyin_obj_get_capture_period); -STATIC mp_obj_t frequencyio_frequencyin_obj_set_capture_period(mp_obj_t self_in, mp_obj_t capture_period) { +static mp_obj_t frequencyio_frequencyin_obj_set_capture_period(mp_obj_t self_in, mp_obj_t capture_period) { frequencyio_frequencyin_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -172,7 +172,7 @@ MP_PROPERTY_GETSET(frequencyio_frequencyin_capture_period_obj, //| """Returns the value of the last frequency captured.""" //| ... //| -STATIC mp_obj_t frequencyio_frequencyin_obj_get_value(mp_obj_t self_in) { +static mp_obj_t frequencyio_frequencyin_obj_get_value(mp_obj_t self_in) { frequencyio_frequencyin_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -184,7 +184,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(frequencyio_frequencyin_get_value_obj, frequencyio_fre MP_PROPERTY_GETTER(frequencyio_frequencyin_value_obj, (mp_obj_t)&frequencyio_frequencyin_get_value_obj); -STATIC const mp_rom_map_elem_t frequencyio_frequencyin_locals_dict_table[] = { +static const mp_rom_map_elem_t frequencyio_frequencyin_locals_dict_table[] = { // Methods { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&frequencyio_frequencyin_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&frequencyio_frequencyin_deinit_obj) }, @@ -196,7 +196,7 @@ STATIC const mp_rom_map_elem_t frequencyio_frequencyin_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_clear), MP_ROM_PTR(&frequencyio_frequencyin_clear_obj) }, { MP_ROM_QSTR(MP_QSTR_capture_period), MP_ROM_PTR(&frequencyio_frequencyin_capture_period_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(frequencyio_frequencyin_locals_dict, frequencyio_frequencyin_locals_dict_table); +static MP_DEFINE_CONST_DICT(frequencyio_frequencyin_locals_dict, frequencyio_frequencyin_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( frequencyio_frequencyin_type, diff --git a/shared-bindings/frequencyio/__init__.c b/shared-bindings/frequencyio/__init__.c index 05ea811c5dea..f021cbcecb56 100644 --- a/shared-bindings/frequencyio/__init__.c +++ b/shared-bindings/frequencyio/__init__.c @@ -39,12 +39,12 @@ //| hardware after program completion. Use ``deinit()`` or a ``with`` statement //| to do it yourself.""" -STATIC const mp_rom_map_elem_t frequencyio_module_globals_table[] = { +static const mp_rom_map_elem_t frequencyio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_frequencyio) }, { MP_ROM_QSTR(MP_QSTR_FrequencyIn), MP_ROM_PTR(&frequencyio_frequencyin_type) }, }; -STATIC MP_DEFINE_CONST_DICT(frequencyio_module_globals, frequencyio_module_globals_table); +static MP_DEFINE_CONST_DICT(frequencyio_module_globals, frequencyio_module_globals_table); const mp_obj_module_t frequencyio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/getpass/__init__.c b/shared-bindings/getpass/__init__.c index adbd728512c6..b779311f5fc3 100644 --- a/shared-bindings/getpass/__init__.c +++ b/shared-bindings/getpass/__init__.c @@ -24,7 +24,7 @@ //| """ //| ... //| -STATIC mp_obj_t getpass_getpass(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t getpass_getpass(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_prompt, ARG_stream }; static const mp_arg_t allowed_args[] = { { MP_QSTR_prompt, MP_ARG_OBJ, {.u_obj = mp_const_none} }, @@ -49,15 +49,15 @@ STATIC mp_obj_t getpass_getpass(size_t n_args, const mp_obj_t *pos_args, mp_map_ return shared_module_getpass_getpass(prompt, ((print.data) ? &print : NULL)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(getpass_getpass_obj, 0, getpass_getpass); +static MP_DEFINE_CONST_FUN_OBJ_KW(getpass_getpass_obj, 0, getpass_getpass); -STATIC const mp_rom_map_elem_t getpass_module_globals_table[] = { +static const mp_rom_map_elem_t getpass_module_globals_table[] = { // module name { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_getpass) }, // module functions { MP_ROM_QSTR(MP_QSTR_getpass), MP_ROM_PTR(&getpass_getpass_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(getpass_module_globals, getpass_module_globals_table); +static MP_DEFINE_CONST_DICT(getpass_module_globals, getpass_module_globals_table); const mp_obj_module_t getpass_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/gifio/GifWriter.c b/shared-bindings/gifio/GifWriter.c index fc6fa3115596..c1a2c69c5992 100644 --- a/shared-bindings/gifio/GifWriter.c +++ b/shared-bindings/gifio/GifWriter.c @@ -128,7 +128,7 @@ static mp_obj_t gifio_gifwriter_add_frame(size_t n_args, const mp_obj_t *pos_arg } MP_DEFINE_CONST_FUN_OBJ_KW(gifio_gifwriter_add_frame_obj, 1, gifio_gifwriter_add_frame); -STATIC const mp_rom_map_elem_t gifio_gifwriter_locals_table[] = { +static const mp_rom_map_elem_t gifio_gifwriter_locals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_GifWriter) }, { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&gifio_gifwriter___exit___obj) }, @@ -136,7 +136,7 @@ STATIC const mp_rom_map_elem_t gifio_gifwriter_locals_table[] = { { MP_ROM_QSTR(MP_QSTR_add_frame), MP_ROM_PTR(&gifio_gifwriter_add_frame_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(gifio_gifwriter_locals, gifio_gifwriter_locals_table); +static MP_DEFINE_CONST_DICT(gifio_gifwriter_locals, gifio_gifwriter_locals_table); MP_DEFINE_CONST_OBJ_TYPE( gifio_gifwriter_type, diff --git a/shared-bindings/gifio/OnDiskGif.c b/shared-bindings/gifio/OnDiskGif.c index ea20a38b1d85..10913233f871 100644 --- a/shared-bindings/gifio/OnDiskGif.c +++ b/shared-bindings/gifio/OnDiskGif.c @@ -101,7 +101,7 @@ //| is not limited but images that are too large will cause a memory exception. //| """ //| ... -STATIC mp_obj_t gifio_ondiskgif_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t gifio_ondiskgif_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_filename, ARG_use_palette, NUM_ARGS }; static const mp_arg_t allowed_args[] = { { MP_QSTR_filename, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -126,7 +126,7 @@ STATIC mp_obj_t gifio_ondiskgif_make_new(const mp_obj_type_t *type, size_t n_arg return MP_OBJ_FROM_PTR(self); } -STATIC void check_for_deinit(gifio_ondiskgif_t *self) { +static void check_for_deinit(gifio_ondiskgif_t *self) { if (common_hal_gifio_ondiskgif_deinited(self)) { raise_deinited_error(); } @@ -141,16 +141,16 @@ STATIC void check_for_deinit(gifio_ondiskgif_t *self) { //| """Automatically deinitializes the GIF when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t gifio_ondiskgif_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t gifio_ondiskgif_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_gifio_ondiskgif_deinit(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(gifio_ondiskgif___exit___obj, 4, 4, gifio_ondiskgif_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(gifio_ondiskgif___exit___obj, 4, 4, gifio_ondiskgif_obj___exit__); //| width: int //| """Width of the gif. (read only)""" -STATIC mp_obj_t gifio_ondiskgif_obj_get_width(mp_obj_t self_in) { +static mp_obj_t gifio_ondiskgif_obj_get_width(mp_obj_t self_in) { gifio_ondiskgif_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -164,7 +164,7 @@ MP_PROPERTY_GETTER(gifio_ondiskgif_width_obj, //| height: int //| """Height of the gif. (read only)""" -STATIC mp_obj_t gifio_ondiskgif_obj_get_height(mp_obj_t self_in) { +static mp_obj_t gifio_ondiskgif_obj_get_height(mp_obj_t self_in) { gifio_ondiskgif_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -178,7 +178,7 @@ MP_PROPERTY_GETTER(gifio_ondiskgif_height_obj, //| bitmap: displayio.Bitmap //| """The bitmap used to hold the current frame.""" -STATIC mp_obj_t gifio_ondiskgif_obj_get_bitmap(mp_obj_t self_in) { +static mp_obj_t gifio_ondiskgif_obj_get_bitmap(mp_obj_t self_in) { gifio_ondiskgif_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -192,7 +192,7 @@ MP_PROPERTY_GETTER(gifio_ondiskgif_bitmap_obj, //| palette: Optional[displayio.Palette] //| """The palette for the current frame if it exists.""" -STATIC mp_obj_t gifio_ondiskgif_obj_get_palette(mp_obj_t self_in) { +static mp_obj_t gifio_ondiskgif_obj_get_palette(mp_obj_t self_in) { gifio_ondiskgif_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -206,7 +206,7 @@ MP_PROPERTY_GETTER(gifio_ondiskgif_palette_obj, //| def next_frame(self) -> float: //| """Loads the next frame. Returns expected delay before the next frame in seconds.""" -STATIC mp_obj_t gifio_ondiskgif_obj_next_frame(mp_obj_t self_in) { +static mp_obj_t gifio_ondiskgif_obj_next_frame(mp_obj_t self_in) { gifio_ondiskgif_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -218,7 +218,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(gifio_ondiskgif_next_frame_obj, gifio_ondiskgif_obj_ne //| duration: float //| """Returns the total duration of the GIF in seconds. (read only)""" -STATIC mp_obj_t gifio_ondiskgif_obj_get_duration(mp_obj_t self_in) { +static mp_obj_t gifio_ondiskgif_obj_get_duration(mp_obj_t self_in) { gifio_ondiskgif_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -232,7 +232,7 @@ MP_PROPERTY_GETTER(gifio_ondiskgif_duration_obj, //| frame_count: int //| """Returns the number of frames in the GIF. (read only)""" -STATIC mp_obj_t gifio_ondiskgif_obj_get_frame_count(mp_obj_t self_in) { +static mp_obj_t gifio_ondiskgif_obj_get_frame_count(mp_obj_t self_in) { gifio_ondiskgif_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -246,7 +246,7 @@ MP_PROPERTY_GETTER(gifio_ondiskgif_frame_count_obj, //| min_delay: float //| """The minimum delay found between frames. (read only)""" -STATIC mp_obj_t gifio_ondiskgif_obj_get_min_delay(mp_obj_t self_in) { +static mp_obj_t gifio_ondiskgif_obj_get_min_delay(mp_obj_t self_in) { gifio_ondiskgif_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -261,7 +261,7 @@ MP_PROPERTY_GETTER(gifio_ondiskgif_min_delay_obj, //| max_delay: float //| """The maximum delay found between frames. (read only)""" //| -STATIC mp_obj_t gifio_ondiskgif_obj_get_max_delay(mp_obj_t self_in) { +static mp_obj_t gifio_ondiskgif_obj_get_max_delay(mp_obj_t self_in) { gifio_ondiskgif_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -277,14 +277,14 @@ MP_PROPERTY_GETTER(gifio_ondiskgif_max_delay_obj, //| """Release resources allocated by OnDiskGif.""" //| ... //| -STATIC mp_obj_t gifio_ondiskgif_obj_deinit(mp_obj_t self_in) { +static mp_obj_t gifio_ondiskgif_obj_deinit(mp_obj_t self_in) { gifio_ondiskgif_t *self = MP_OBJ_TO_PTR(self_in); common_hal_gifio_ondiskgif_deinit(self); return mp_const_none; } MP_DEFINE_CONST_FUN_OBJ_1(gifio_ondiskgif_deinit_obj, gifio_ondiskgif_obj_deinit); -STATIC const mp_rom_map_elem_t gifio_ondiskgif_locals_dict_table[] = { +static const mp_rom_map_elem_t gifio_ondiskgif_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&gifio_ondiskgif_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&gifio_ondiskgif___exit___obj) }, @@ -298,7 +298,7 @@ STATIC const mp_rom_map_elem_t gifio_ondiskgif_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_min_delay), MP_ROM_PTR(&gifio_ondiskgif_min_delay_obj) }, { MP_ROM_QSTR(MP_QSTR_max_delay), MP_ROM_PTR(&gifio_ondiskgif_max_delay_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(gifio_ondiskgif_locals_dict, gifio_ondiskgif_locals_dict_table); +static MP_DEFINE_CONST_DICT(gifio_ondiskgif_locals_dict, gifio_ondiskgif_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( gifio_ondiskgif_type, diff --git a/shared-bindings/gifio/__init__.c b/shared-bindings/gifio/__init__.c index 30998e1d14f2..057d18ce82d4 100644 --- a/shared-bindings/gifio/__init__.c +++ b/shared-bindings/gifio/__init__.c @@ -12,13 +12,13 @@ //| """Access GIF-format images //| """ -STATIC const mp_rom_map_elem_t gifio_module_globals_table[] = { +static const mp_rom_map_elem_t gifio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_gifio) }, { MP_OBJ_NEW_QSTR(MP_QSTR_GifWriter), MP_ROM_PTR(&gifio_gifwriter_type)}, { MP_ROM_QSTR(MP_QSTR_OnDiskGif), MP_ROM_PTR(&gifio_ondiskgif_type) }, }; -STATIC MP_DEFINE_CONST_DICT(gifio_module_globals, gifio_module_globals_table); +static MP_DEFINE_CONST_DICT(gifio_module_globals, gifio_module_globals_table); const mp_obj_module_t gifio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/hashlib/Hash.c b/shared-bindings/hashlib/Hash.c index a26636c28016..68930b137e4e 100644 --- a/shared-bindings/hashlib/Hash.c +++ b/shared-bindings/hashlib/Hash.c @@ -18,7 +18,7 @@ //| digest_size: int //| """Digest size in bytes""" -STATIC mp_obj_t hashlib_hash_digest_size_get(mp_obj_t self_in) { +static mp_obj_t hashlib_hash_digest_size_get(mp_obj_t self_in) { mp_check_self(mp_obj_is_type(self_in, &hashlib_hash_type)); hashlib_hash_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_hashlib_hash_get_digest_size(self)); @@ -42,13 +42,13 @@ mp_obj_t hashlib_hash_update(mp_obj_t self_in, mp_obj_t buf_in) { common_hal_hashlib_hash_update(self, bufinfo.buf, bufinfo.len); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(hashlib_hash_update_obj, hashlib_hash_update); +static MP_DEFINE_CONST_FUN_OBJ_2(hashlib_hash_update_obj, hashlib_hash_update); //| def digest(self) -> bytes: //| """Returns the current digest as bytes() with a length of `hashlib.Hash.digest_size`.""" //| ... //| -STATIC mp_obj_t hashlib_hash_digest(mp_obj_t self_in) { +static mp_obj_t hashlib_hash_digest(mp_obj_t self_in) { mp_check_self(mp_obj_is_type(self_in, &hashlib_hash_type)); hashlib_hash_obj_t *self = MP_OBJ_TO_PTR(self_in); @@ -59,15 +59,15 @@ STATIC mp_obj_t hashlib_hash_digest(mp_obj_t self_in) { common_hal_hashlib_hash_digest(self, (uint8_t *)o->data, size); return obj; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(hashlib_hash_digest_obj, hashlib_hash_digest); +static MP_DEFINE_CONST_FUN_OBJ_1(hashlib_hash_digest_obj, hashlib_hash_digest); -STATIC const mp_rom_map_elem_t hashlib_hash_locals_dict_table[] = { +static const mp_rom_map_elem_t hashlib_hash_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_digest_size), MP_ROM_PTR(&hashlib_hash_digest_size_obj) }, { MP_ROM_QSTR(MP_QSTR_update), MP_ROM_PTR(&hashlib_hash_update_obj) }, { MP_ROM_QSTR(MP_QSTR_digest), MP_ROM_PTR(&hashlib_hash_digest_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(hashlib_hash_locals_dict, hashlib_hash_locals_dict_table); +static MP_DEFINE_CONST_DICT(hashlib_hash_locals_dict, hashlib_hash_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( hashlib_hash_type, diff --git a/shared-bindings/hashlib/__init__.c b/shared-bindings/hashlib/__init__.c index 6b256cc436c6..fa3b1b187252 100644 --- a/shared-bindings/hashlib/__init__.c +++ b/shared-bindings/hashlib/__init__.c @@ -25,7 +25,7 @@ //| :rtype: hashlib.Hash""" //| ... //| -STATIC mp_obj_t hashlib_new(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t hashlib_new(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_name, ARG_data }; static const mp_arg_t allowed_args[] = { { MP_QSTR_name, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -47,9 +47,9 @@ STATIC mp_obj_t hashlib_new(size_t n_args, const mp_obj_t *pos_args, mp_map_t *k } return self; } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(hashlib_new_obj, 1, hashlib_new); +static MP_DEFINE_CONST_FUN_OBJ_KW(hashlib_new_obj, 1, hashlib_new); -STATIC const mp_rom_map_elem_t hashlib_module_globals_table[] = { +static const mp_rom_map_elem_t hashlib_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_hashlib) }, { MP_ROM_QSTR(MP_QSTR_new), MP_ROM_PTR(&hashlib_new_obj) }, @@ -58,7 +58,7 @@ STATIC const mp_rom_map_elem_t hashlib_module_globals_table[] = { // object on `hashlib` only the internal `_hashlib`. }; -STATIC MP_DEFINE_CONST_DICT(hashlib_module_globals, hashlib_module_globals_table); +static MP_DEFINE_CONST_DICT(hashlib_module_globals, hashlib_module_globals_table); const mp_obj_module_t hashlib_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/i2cdisplaybus/I2CDisplayBus.c b/shared-bindings/i2cdisplaybus/I2CDisplayBus.c index d4e2f1d4832c..065baa782fcc 100644 --- a/shared-bindings/i2cdisplaybus/I2CDisplayBus.c +++ b/shared-bindings/i2cdisplaybus/I2CDisplayBus.c @@ -40,7 +40,7 @@ //| :param microcontroller.Pin reset: Reset pin. When None only software reset can be used //| """ //| ... -STATIC mp_obj_t i2cdisplaybus_i2cdisplaybus_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t i2cdisplaybus_i2cdisplaybus_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_i2c_bus, ARG_device_address, ARG_reset }; static const mp_arg_t allowed_args[] = { { MP_QSTR_i2c_bus, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -65,7 +65,7 @@ STATIC mp_obj_t i2cdisplaybus_i2cdisplaybus_make_new(const mp_obj_type_t *type, //| """Performs a hardware reset via the reset pin. Raises an exception if called when no reset pin //| is available.""" //| ... -STATIC mp_obj_t i2cdisplaybus_i2cdisplaybus_obj_reset(mp_obj_t self_in) { +static mp_obj_t i2cdisplaybus_i2cdisplaybus_obj_reset(mp_obj_t self_in) { i2cdisplaybus_i2cdisplaybus_obj_t *self = self_in; if (!common_hal_i2cdisplaybus_i2cdisplaybus_reset(self)) { @@ -80,7 +80,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(i2cdisplaybus_i2cdisplaybus_reset_obj, i2cdisplaybus_i //| vertical scroll, set via ``send`` may or may not be reset once the code is done.""" //| ... //| -STATIC mp_obj_t i2cdisplaybus_i2cdisplaybus_obj_send(mp_obj_t self, mp_obj_t command_obj, mp_obj_t data_obj) { +static mp_obj_t i2cdisplaybus_i2cdisplaybus_obj_send(mp_obj_t self, mp_obj_t command_obj, mp_obj_t data_obj) { mp_int_t command_int = mp_obj_get_int(command_obj); mp_arg_validate_int_range(command_int, 0, 255, MP_QSTR_command); @@ -102,11 +102,11 @@ STATIC mp_obj_t i2cdisplaybus_i2cdisplaybus_obj_send(mp_obj_t self, mp_obj_t com } MP_DEFINE_CONST_FUN_OBJ_3(i2cdisplaybus_i2cdisplaybus_send_obj, i2cdisplaybus_i2cdisplaybus_obj_send); -STATIC const mp_rom_map_elem_t i2cdisplaybus_i2cdisplaybus_locals_dict_table[] = { +static const mp_rom_map_elem_t i2cdisplaybus_i2cdisplaybus_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_reset), MP_ROM_PTR(&i2cdisplaybus_i2cdisplaybus_reset_obj) }, { MP_ROM_QSTR(MP_QSTR_send), MP_ROM_PTR(&i2cdisplaybus_i2cdisplaybus_send_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(i2cdisplaybus_i2cdisplaybus_locals_dict, i2cdisplaybus_i2cdisplaybus_locals_dict_table); +static MP_DEFINE_CONST_DICT(i2cdisplaybus_i2cdisplaybus_locals_dict, i2cdisplaybus_i2cdisplaybus_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( i2cdisplaybus_i2cdisplaybus_type, diff --git a/shared-bindings/i2cdisplaybus/__init__.c b/shared-bindings/i2cdisplaybus/__init__.c index f1a622a5f970..45be89668f02 100644 --- a/shared-bindings/i2cdisplaybus/__init__.c +++ b/shared-bindings/i2cdisplaybus/__init__.c @@ -17,12 +17,12 @@ //| //| """ -STATIC const mp_rom_map_elem_t i2cdisplaybus_module_globals_table[] = { +static const mp_rom_map_elem_t i2cdisplaybus_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_i2cdisplaybus) }, { MP_ROM_QSTR(MP_QSTR_I2CDisplayBus), MP_ROM_PTR(&i2cdisplaybus_i2cdisplaybus_type) }, }; -STATIC MP_DEFINE_CONST_DICT(i2cdisplaybus_module_globals, i2cdisplaybus_module_globals_table); +static MP_DEFINE_CONST_DICT(i2cdisplaybus_module_globals, i2cdisplaybus_module_globals_table); const mp_obj_module_t i2cdisplaybus_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/i2ctarget/I2CTarget.c b/shared-bindings/i2ctarget/I2CTarget.c index fcc63c376894..2a3749fdb286 100644 --- a/shared-bindings/i2ctarget/I2CTarget.c +++ b/shared-bindings/i2ctarget/I2CTarget.c @@ -19,7 +19,7 @@ #include "py/objproperty.h" #include "py/runtime.h" -STATIC mp_obj_t mp_obj_new_i2ctarget_i2c_target_request(i2ctarget_i2c_target_obj_t *target, uint8_t address, bool is_read, bool is_restart) { +static mp_obj_t mp_obj_new_i2ctarget_i2c_target_request(i2ctarget_i2c_target_obj_t *target, uint8_t address, bool is_read, bool is_restart) { i2ctarget_i2c_target_request_obj_t *self = mp_obj_malloc(i2ctarget_i2c_target_request_obj_t, &i2ctarget_i2c_target_request_type); self->target = target; @@ -48,7 +48,7 @@ STATIC mp_obj_t mp_obj_new_i2ctarget_i2c_target_request(i2ctarget_i2c_target_obj //| :type addresses: list[int] //| :param bool smbus: Use SMBUS timings if the hardware supports it""" //| ... -STATIC mp_obj_t i2ctarget_i2c_target_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t i2ctarget_i2c_target_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { i2ctarget_i2c_target_obj_t *self = mp_obj_malloc(i2ctarget_i2c_target_obj_t, &i2ctarget_i2c_target_type); enum { ARG_scl, ARG_sda, ARG_addresses, ARG_smbus }; static const mp_arg_t allowed_args[] = { @@ -84,7 +84,7 @@ STATIC mp_obj_t i2ctarget_i2c_target_make_new(const mp_obj_type_t *type, size_t //| def deinit(self) -> None: //| """Releases control of the underlying hardware so other classes can use it.""" //| ... -STATIC mp_obj_t i2ctarget_i2c_target_obj_deinit(mp_obj_t self_in) { +static mp_obj_t i2ctarget_i2c_target_obj_deinit(mp_obj_t self_in) { mp_check_self(mp_obj_is_type(self_in, &i2ctarget_i2c_target_type)); i2ctarget_i2c_target_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_i2ctarget_i2c_target_deinit(self); @@ -101,13 +101,13 @@ MP_DEFINE_CONST_FUN_OBJ_1(i2ctarget_i2c_target_deinit_obj, i2ctarget_i2c_target_ //| """Automatically deinitializes the hardware on context exit. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t i2ctarget_i2c_target_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t i2ctarget_i2c_target_obj___exit__(size_t n_args, const mp_obj_t *args) { mp_check_self(mp_obj_is_type(args[0], &i2ctarget_i2c_target_type)); i2ctarget_i2c_target_obj_t *self = MP_OBJ_TO_PTR(args[0]); common_hal_i2ctarget_i2c_target_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(i2ctarget_i2c_target___exit___obj, 4, 4, i2ctarget_i2c_target_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(i2ctarget_i2c_target___exit___obj, 4, 4, i2ctarget_i2c_target_obj___exit__); //| def request(self, *, timeout: float = -1) -> I2CTargetRequest: //| """Wait for an I2C request. @@ -116,7 +116,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(i2ctarget_i2c_target___exit___obj, 4, //| :return: I2CTargetRequest or None if timeout=-1 and there's no request //| :rtype: ~i2ctarget.I2CTargetRequest""" //| -STATIC mp_obj_t i2ctarget_i2c_target_request(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t i2ctarget_i2c_target_request(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { mp_check_self(mp_obj_is_type(pos_args[0], &i2ctarget_i2c_target_type)); i2ctarget_i2c_target_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); if (common_hal_i2ctarget_i2c_target_deinited(self)) { @@ -182,9 +182,9 @@ STATIC mp_obj_t i2ctarget_i2c_target_request(size_t n_args, const mp_obj_t *pos_ } return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(i2ctarget_i2c_target_request_obj, 1, i2ctarget_i2c_target_request); +static MP_DEFINE_CONST_FUN_OBJ_KW(i2ctarget_i2c_target_request_obj, 1, i2ctarget_i2c_target_request); -STATIC const mp_rom_map_elem_t i2ctarget_i2c_target_locals_dict_table[] = { +static const mp_rom_map_elem_t i2ctarget_i2c_target_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&i2ctarget_i2c_target_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&i2ctarget_i2c_target___exit___obj) }, @@ -192,7 +192,7 @@ STATIC const mp_rom_map_elem_t i2ctarget_i2c_target_locals_dict_table[] = { }; -STATIC MP_DEFINE_CONST_DICT(i2ctarget_i2c_target_locals_dict, i2ctarget_i2c_target_locals_dict_table); +static MP_DEFINE_CONST_DICT(i2ctarget_i2c_target_locals_dict, i2ctarget_i2c_target_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( i2ctarget_i2c_target_type, @@ -213,7 +213,7 @@ MP_DEFINE_CONST_OBJ_TYPE( //| :param address: I2C address //| :param is_read: True if the main target is requesting data //| :param is_restart: Repeated Start Condition""" -STATIC mp_obj_t i2ctarget_i2c_target_request_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { +static mp_obj_t i2ctarget_i2c_target_request_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { mp_arg_check_num(n_args, n_kw, 4, 4, false); return mp_obj_new_i2ctarget_i2c_target_request(args[0], mp_obj_get_int(args[1]), mp_obj_is_true(args[2]), mp_obj_is_true(args[3])); } @@ -226,17 +226,17 @@ STATIC mp_obj_t i2ctarget_i2c_target_request_make_new(const mp_obj_type_t *type, //| def __exit__(self) -> None: //| """Close the request.""" //| ... -STATIC mp_obj_t i2ctarget_i2c_target_request_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t i2ctarget_i2c_target_request_obj___exit__(size_t n_args, const mp_obj_t *args) { mp_check_self(mp_obj_is_type(args[0], &i2ctarget_i2c_target_request_type)); i2ctarget_i2c_target_request_obj_t *self = MP_OBJ_TO_PTR(args[0]); common_hal_i2ctarget_i2c_target_close(self->target); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(i2ctarget_i2c_target_request___exit___obj, 4, 4, i2ctarget_i2c_target_request_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(i2ctarget_i2c_target_request___exit___obj, 4, 4, i2ctarget_i2c_target_request_obj___exit__); //| address: int //| """The I2C address of the request.""" -STATIC mp_obj_t i2ctarget_i2c_target_request_get_address(mp_obj_t self_in) { +static mp_obj_t i2ctarget_i2c_target_request_get_address(mp_obj_t self_in) { mp_check_self(mp_obj_is_type(self_in, &i2ctarget_i2c_target_request_type)); i2ctarget_i2c_target_request_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_int(self->address); @@ -245,7 +245,7 @@ MP_DEFINE_CONST_PROP_GET(i2ctarget_i2c_target_request_address_obj, i2ctarget_i2c //| is_read: bool //| """The I2C main controller is reading from this target.""" -STATIC mp_obj_t i2ctarget_i2c_target_request_get_is_read(mp_obj_t self_in) { +static mp_obj_t i2ctarget_i2c_target_request_get_is_read(mp_obj_t self_in) { mp_check_self(mp_obj_is_type(self_in, &i2ctarget_i2c_target_request_type)); i2ctarget_i2c_target_request_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bool(self->is_read); @@ -254,7 +254,7 @@ MP_DEFINE_CONST_PROP_GET(i2ctarget_i2c_target_request_is_read_obj, i2ctarget_i2c //| is_restart: bool //| """Is Repeated Start Condition.""" -STATIC mp_obj_t i2ctarget_i2c_target_request_get_is_restart(mp_obj_t self_in) { +static mp_obj_t i2ctarget_i2c_target_request_get_is_restart(mp_obj_t self_in) { mp_check_self(mp_obj_is_type(self_in, &i2ctarget_i2c_target_request_type)); i2ctarget_i2c_target_request_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bool(self->is_restart); @@ -269,7 +269,7 @@ MP_DEFINE_CONST_PROP_GET(i2ctarget_i2c_target_request_is_restart_obj, i2ctarget_ //| :param ack: Whether or not to send an ACK after the n'th byte //| :return: Bytes read""" //| ... -STATIC mp_obj_t i2ctarget_i2c_target_request_read(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t i2ctarget_i2c_target_request_read(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { mp_check_self(mp_obj_is_type(pos_args[0], &i2ctarget_i2c_target_request_type)); i2ctarget_i2c_target_request_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); enum { ARG_n, ARG_ack }; @@ -326,7 +326,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(i2ctarget_i2c_target_request_read_obj, 1, i2ctarget_i //| :param ~circuitpython_typing.ReadableBuffer buffer: Write out the data in this buffer //| :return: Number of bytes written""" //| ... -STATIC mp_obj_t i2ctarget_i2c_target_request_write(mp_obj_t self_in, mp_obj_t buf_in) { +static mp_obj_t i2ctarget_i2c_target_request_write(mp_obj_t self_in, mp_obj_t buf_in) { mp_check_self(mp_obj_is_type(self_in, &i2ctarget_i2c_target_request_type)); i2ctarget_i2c_target_request_obj_t *self = MP_OBJ_TO_PTR(self_in); @@ -351,7 +351,7 @@ STATIC mp_obj_t i2ctarget_i2c_target_request_write(mp_obj_t self_in, mp_obj_t bu return mp_obj_new_int(bufinfo.len); } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(i2ctarget_i2c_target_request_write_obj, i2ctarget_i2c_target_request_write); +static MP_DEFINE_CONST_FUN_OBJ_2(i2ctarget_i2c_target_request_write_obj, i2ctarget_i2c_target_request_write); //| def ack(self, ack: bool = True) -> None: //| """Acknowledge or Not Acknowledge last byte received. @@ -360,7 +360,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(i2ctarget_i2c_target_request_write_obj, i2ctarg //| :param ack: Whether to send an ACK or NACK""" //| ... //| -STATIC mp_obj_t i2ctarget_i2c_target_request_ack(uint n_args, const mp_obj_t *args) { +static mp_obj_t i2ctarget_i2c_target_request_ack(uint n_args, const mp_obj_t *args) { mp_check_self(mp_obj_is_type(args[0], &i2ctarget_i2c_target_request_type)); i2ctarget_i2c_target_request_obj_t *self = MP_OBJ_TO_PTR(args[0]); bool ack = (n_args == 1) ? true : mp_obj_is_true(args[1]); @@ -374,16 +374,16 @@ STATIC mp_obj_t i2ctarget_i2c_target_request_ack(uint n_args, const mp_obj_t *ar } MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(i2ctarget_i2c_target_request_ack_obj, 1, 2, i2ctarget_i2c_target_request_ack); -STATIC mp_obj_t i2ctarget_i2c_target_request_close(mp_obj_t self_in) { +static mp_obj_t i2ctarget_i2c_target_request_close(mp_obj_t self_in) { mp_check_self(mp_obj_is_type(self_in, &i2ctarget_i2c_target_request_type)); i2ctarget_i2c_target_request_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_i2ctarget_i2c_target_close(self->target); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(i2ctarget_i2c_target_request_close_obj, i2ctarget_i2c_target_request_close); +static MP_DEFINE_CONST_FUN_OBJ_1(i2ctarget_i2c_target_request_close_obj, i2ctarget_i2c_target_request_close); -STATIC const mp_rom_map_elem_t i2ctarget_i2c_target_request_locals_dict_table[] = { +static const mp_rom_map_elem_t i2ctarget_i2c_target_request_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&i2ctarget_i2c_target_request___exit___obj) }, { MP_ROM_QSTR(MP_QSTR_address), MP_ROM_PTR(&i2ctarget_i2c_target_request_address_obj) }, @@ -395,7 +395,7 @@ STATIC const mp_rom_map_elem_t i2ctarget_i2c_target_request_locals_dict_table[] { MP_ROM_QSTR(MP_QSTR_close), MP_ROM_PTR(&i2ctarget_i2c_target_request_close_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(i2ctarget_i2c_target_request_locals_dict, i2ctarget_i2c_target_request_locals_dict_table); +static MP_DEFINE_CONST_DICT(i2ctarget_i2c_target_request_locals_dict, i2ctarget_i2c_target_request_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( i2ctarget_i2c_target_request_type, diff --git a/shared-bindings/i2ctarget/__init__.c b/shared-bindings/i2ctarget/__init__.c index 9a0939a66a4b..f4b1dd71ed6c 100644 --- a/shared-bindings/i2ctarget/__init__.c +++ b/shared-bindings/i2ctarget/__init__.c @@ -219,12 +219,12 @@ //| This can be worked around by using the ``i2c-gpio`` bit banging driver. //| Since the RPi firmware uses the hw i2c, it's not possible to emulate a HAT eeprom.""" -STATIC const mp_rom_map_elem_t i2ctarget_module_globals_table[] = { +static const mp_rom_map_elem_t i2ctarget_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_i2ctarget) }, { MP_ROM_QSTR(MP_QSTR_I2CTarget), MP_ROM_PTR(&i2ctarget_i2c_target_type) }, }; -STATIC MP_DEFINE_CONST_DICT(i2ctarget_module_globals, i2ctarget_module_globals_table); +static MP_DEFINE_CONST_DICT(i2ctarget_module_globals, i2ctarget_module_globals_table); const mp_obj_module_t i2ctarget_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/imagecapture/ParallelImageCapture.c b/shared-bindings/imagecapture/ParallelImageCapture.c index c8a60e43ffcd..d1964c717533 100644 --- a/shared-bindings/imagecapture/ParallelImageCapture.c +++ b/shared-bindings/imagecapture/ParallelImageCapture.c @@ -34,7 +34,7 @@ //| :param microcontroller.Pin href: The horizontal reference input, which is high whenever the camera is transmitting valid pixel information. //| """ //| ... -STATIC mp_obj_t imagecapture_parallelimagecapture_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t imagecapture_parallelimagecapture_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_data_pins, ARG_clock, ARG_vsync, ARG_href, NUM_ARGS }; static const mp_arg_t allowed_args[] = { @@ -68,13 +68,13 @@ STATIC mp_obj_t imagecapture_parallelimagecapture_make_new(const mp_obj_type_t * //| //| This will stop a continuous-mode capture, if one is in progress.""" //| ... -STATIC mp_obj_t imagecapture_parallelimagecapture_capture(mp_obj_t self_in, mp_obj_t buffer) { +static mp_obj_t imagecapture_parallelimagecapture_capture(mp_obj_t self_in, mp_obj_t buffer) { imagecapture_parallelimagecapture_obj_t *self = (imagecapture_parallelimagecapture_obj_t *)self_in; common_hal_imagecapture_parallelimagecapture_singleshot_capture(self, buffer); return buffer; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(imagecapture_parallelimagecapture_capture_obj, imagecapture_parallelimagecapture_capture); +static MP_DEFINE_CONST_FUN_OBJ_2(imagecapture_parallelimagecapture_capture_obj, imagecapture_parallelimagecapture_capture); //| def continuous_capture_start( //| self, buffer1: WriteableBuffer, buffer2: WriteableBuffer, / @@ -88,22 +88,22 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(imagecapture_parallelimagecapture_capture_obj, //| `ParallelImageCapture` object keeps references to ``buffer1`` and //| ``buffer2``, so the objects will not be garbage collected.""" //| ... -STATIC mp_obj_t imagecapture_parallelimagecapture_continuous_capture_start(mp_obj_t self_in, mp_obj_t buffer1, mp_obj_t buffer2) { +static mp_obj_t imagecapture_parallelimagecapture_continuous_capture_start(mp_obj_t self_in, mp_obj_t buffer1, mp_obj_t buffer2) { imagecapture_parallelimagecapture_obj_t *self = (imagecapture_parallelimagecapture_obj_t *)self_in; common_hal_imagecapture_parallelimagecapture_continuous_capture_start(self, buffer1, buffer2); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(imagecapture_parallelimagecapture_continuous_capture_start_obj, imagecapture_parallelimagecapture_continuous_capture_start); +static MP_DEFINE_CONST_FUN_OBJ_3(imagecapture_parallelimagecapture_continuous_capture_start_obj, imagecapture_parallelimagecapture_continuous_capture_start); //| def continuous_capture_get_frame(self) -> WriteableBuffer: //| """Return the next available frame, one of the two buffers passed to `continuous_capture_start`""" //| ... -STATIC mp_obj_t imagecapture_parallelimagecapture_continuous_capture_get_frame(mp_obj_t self_in) { +static mp_obj_t imagecapture_parallelimagecapture_continuous_capture_get_frame(mp_obj_t self_in) { imagecapture_parallelimagecapture_obj_t *self = (imagecapture_parallelimagecapture_obj_t *)self_in; return common_hal_imagecapture_parallelimagecapture_continuous_capture_get_frame(self); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(imagecapture_parallelimagecapture_continuous_capture_get_frame_obj, imagecapture_parallelimagecapture_continuous_capture_get_frame); +static MP_DEFINE_CONST_FUN_OBJ_1(imagecapture_parallelimagecapture_continuous_capture_get_frame_obj, imagecapture_parallelimagecapture_continuous_capture_get_frame); @@ -114,13 +114,13 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(imagecapture_parallelimagecapture_continuous_ca //| references to the buffers passed to `continuous_capture_start`, //| potentially allowing the objects to be garbage collected.""" //| ... -STATIC mp_obj_t imagecapture_parallelimagecapture_continuous_capture_stop(mp_obj_t self_in) { +static mp_obj_t imagecapture_parallelimagecapture_continuous_capture_stop(mp_obj_t self_in) { imagecapture_parallelimagecapture_obj_t *self = (imagecapture_parallelimagecapture_obj_t *)self_in; common_hal_imagecapture_parallelimagecapture_continuous_capture_stop(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(imagecapture_parallelimagecapture_continuous_capture_stop_obj, imagecapture_parallelimagecapture_continuous_capture_stop); +static MP_DEFINE_CONST_FUN_OBJ_1(imagecapture_parallelimagecapture_continuous_capture_stop_obj, imagecapture_parallelimagecapture_continuous_capture_stop); @@ -128,13 +128,13 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(imagecapture_parallelimagecapture_continuous_ca //| def deinit(self) -> None: //| """Deinitialize this instance""" //| ... -STATIC mp_obj_t imagecapture_parallelimagecapture_deinit(mp_obj_t self_in) { +static mp_obj_t imagecapture_parallelimagecapture_deinit(mp_obj_t self_in) { imagecapture_parallelimagecapture_obj_t *self = (imagecapture_parallelimagecapture_obj_t *)self_in; common_hal_imagecapture_parallelimagecapture_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(imagecapture_parallelimagecapture_deinit_obj, imagecapture_parallelimagecapture_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(imagecapture_parallelimagecapture_deinit_obj, imagecapture_parallelimagecapture_deinit); //| def __enter__(self) -> ParallelImageCapture: //| """No-op used in Context Managers.""" @@ -146,16 +146,16 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(imagecapture_parallelimagecapture_deinit_obj, i //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... //| -STATIC mp_obj_t imagecapture_parallelimagecapture___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t imagecapture_parallelimagecapture___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_imagecapture_parallelimagecapture_deinit(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(imagecapture_parallelimagecapture___exit___obj, 4, 4, imagecapture_parallelimagecapture___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(imagecapture_parallelimagecapture___exit___obj, 4, 4, imagecapture_parallelimagecapture___exit__); -STATIC const mp_rom_map_elem_t imagecapture_parallelimagecapture_locals_dict_table[] = { +static const mp_rom_map_elem_t imagecapture_parallelimagecapture_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&imagecapture_parallelimagecapture_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&imagecapture_parallelimagecapture___exit___obj) }, @@ -166,7 +166,7 @@ STATIC const mp_rom_map_elem_t imagecapture_parallelimagecapture_locals_dict_tab { MP_ROM_QSTR(MP_QSTR_continuous_capture_get_frame), MP_ROM_PTR(&imagecapture_parallelimagecapture_continuous_capture_get_frame_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(imagecapture_parallelimagecapture_locals_dict, imagecapture_parallelimagecapture_locals_dict_table); +static MP_DEFINE_CONST_DICT(imagecapture_parallelimagecapture_locals_dict, imagecapture_parallelimagecapture_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( imagecapture_parallelimagecapture_type, diff --git a/shared-bindings/imagecapture/__init__.c b/shared-bindings/imagecapture/__init__.c index 0d4294c771cc..2cc60d6da203 100644 --- a/shared-bindings/imagecapture/__init__.c +++ b/shared-bindings/imagecapture/__init__.c @@ -18,12 +18,12 @@ //| Espressif microcontrollers use the `espcamera` module together. //| //| """ -STATIC const mp_rom_map_elem_t imagecapture_module_globals_table[] = { +static const mp_rom_map_elem_t imagecapture_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_imagecapture) }, { MP_ROM_QSTR(MP_QSTR_ParallelImageCapture), MP_ROM_PTR(&imagecapture_parallelimagecapture_type) }, }; -STATIC MP_DEFINE_CONST_DICT(imagecapture_module_globals, imagecapture_module_globals_table); +static MP_DEFINE_CONST_DICT(imagecapture_module_globals, imagecapture_module_globals_table); const mp_obj_module_t imagecapture_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/ipaddress/IPv4Address.c b/shared-bindings/ipaddress/IPv4Address.c index 17110b640160..bf18eda0f790 100644 --- a/shared-bindings/ipaddress/IPv4Address.c +++ b/shared-bindings/ipaddress/IPv4Address.c @@ -24,7 +24,7 @@ //| //| The value itself can either be bytes or a string formatted address.""" //| ... -STATIC mp_obj_t ipaddress_ipv4address_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t ipaddress_ipv4address_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_address }; static const mp_arg_t allowed_args[] = { { MP_QSTR_address, MP_ARG_OBJ | MP_ARG_REQUIRED }, @@ -66,7 +66,7 @@ STATIC mp_obj_t ipaddress_ipv4address_make_new(const mp_obj_type_t *type, size_t //| packed: bytes //| """The bytes that make up the address (read-only).""" -STATIC mp_obj_t ipaddress_ipv4address_get_packed(mp_obj_t self_in) { +static mp_obj_t ipaddress_ipv4address_get_packed(mp_obj_t self_in) { ipaddress_ipv4address_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_ipaddress_ipv4address_get_packed(self); @@ -78,7 +78,7 @@ MP_PROPERTY_GETTER(ipaddress_ipv4address_packed_obj, //| version: int //| """4 for IPv4, 6 for IPv6""" -STATIC mp_obj_t ipaddress_ipv4address_get_version(mp_obj_t self_in) { +static mp_obj_t ipaddress_ipv4address_get_version(mp_obj_t self_in) { ipaddress_ipv4address_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_buffer_info_t buf_info; mp_obj_t address_bytes = common_hal_ipaddress_ipv4address_get_packed(self); @@ -98,7 +98,7 @@ MP_PROPERTY_GETTER(ipaddress_ipv4address_version_obj, //| def __eq__(self, other: object) -> bool: //| """Two Address objects are equal if their addresses and address types are equal.""" //| ... -STATIC mp_obj_t ipaddress_ipv4address_binary_op(mp_binary_op_t op, mp_obj_t lhs_in, mp_obj_t rhs_in) { +static mp_obj_t ipaddress_ipv4address_binary_op(mp_binary_op_t op, mp_obj_t lhs_in, mp_obj_t rhs_in) { switch (op) { // Two Addresses are equal if their address bytes and address_type are equal case MP_BINARY_OP_EQUAL: @@ -122,7 +122,7 @@ STATIC mp_obj_t ipaddress_ipv4address_binary_op(mp_binary_op_t op, mp_obj_t lhs_ //| """Returns a hash for the IPv4Address data.""" //| ... //| -STATIC mp_obj_t ipaddress_ipv4address_unary_op(mp_unary_op_t op, mp_obj_t self_in) { +static mp_obj_t ipaddress_ipv4address_unary_op(mp_unary_op_t op, mp_obj_t self_in) { switch (op) { // Two Addresses are equal if their address bytes and address_type are equal case MP_UNARY_OP_HASH: { @@ -139,7 +139,7 @@ STATIC mp_obj_t ipaddress_ipv4address_unary_op(mp_unary_op_t op, mp_obj_t self_i } } -STATIC void ipaddress_ipv4address_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { +static void ipaddress_ipv4address_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { ipaddress_ipv4address_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_buffer_info_t buf_info; mp_obj_t address_bytes = common_hal_ipaddress_ipv4address_get_packed(self); @@ -149,11 +149,11 @@ STATIC void ipaddress_ipv4address_print(const mp_print_t *print, mp_obj_t self_i mp_printf(print, "%d.%d.%d.%d", buf[0], buf[1], buf[2], buf[3]); } -STATIC const mp_rom_map_elem_t ipaddress_ipv4address_locals_dict_table[] = { +static const mp_rom_map_elem_t ipaddress_ipv4address_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_packed), MP_ROM_PTR(&ipaddress_ipv4address_packed_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(ipaddress_ipv4address_locals_dict, ipaddress_ipv4address_locals_dict_table); +static MP_DEFINE_CONST_DICT(ipaddress_ipv4address_locals_dict, ipaddress_ipv4address_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( ipaddress_ipv4address_type, diff --git a/shared-bindings/ipaddress/__init__.c b/shared-bindings/ipaddress/__init__.c index 00d6075edf91..75892f6f2ea0 100644 --- a/shared-bindings/ipaddress/__init__.c +++ b/shared-bindings/ipaddress/__init__.c @@ -61,7 +61,7 @@ bool ipaddress_parse_ipv4address(const char *str_data, size_t str_len, uint32_t //| ... //| -STATIC mp_obj_t ipaddress_ip_address(mp_obj_t ip_in) { +static mp_obj_t ipaddress_ip_address(mp_obj_t ip_in) { uint32_t value; if (mp_obj_get_int_maybe(ip_in, (mp_int_t *)&value)) { // We're done. @@ -78,13 +78,13 @@ STATIC mp_obj_t ipaddress_ip_address(mp_obj_t ip_in) { } MP_DEFINE_CONST_FUN_OBJ_1(ipaddress_ip_address_obj, ipaddress_ip_address); -STATIC const mp_rom_map_elem_t ipaddress_module_globals_table[] = { +static const mp_rom_map_elem_t ipaddress_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_ipaddress) }, { MP_ROM_QSTR(MP_QSTR_ip_address), MP_ROM_PTR(&ipaddress_ip_address_obj) }, { MP_ROM_QSTR(MP_QSTR_IPv4Address), MP_ROM_PTR(&ipaddress_ipv4address_type) }, }; -STATIC MP_DEFINE_CONST_DICT(ipaddress_module_globals, ipaddress_module_globals_table); +static MP_DEFINE_CONST_DICT(ipaddress_module_globals, ipaddress_module_globals_table); const mp_obj_module_t ipaddress_module = { diff --git a/shared-bindings/is31fl3741/FrameBuffer.c b/shared-bindings/is31fl3741/FrameBuffer.c index 34b8bba6f71a..b197f4447cb6 100644 --- a/shared-bindings/is31fl3741/FrameBuffer.c +++ b/shared-bindings/is31fl3741/FrameBuffer.c @@ -51,7 +51,7 @@ //| :param bool scale: if True display is scaled down by 3 when displayed //| :param bool gamma: if True apply gamma correction to all LEDs""" //| ... -STATIC mp_obj_t is31fl3741_framebuffer_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t is31fl3741_framebuffer_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_is31, ARG_width, ARG_height, ARG_mapping, ARG_framebuffer, ARG_scale, ARG_gamma }; static const mp_arg_t allowed_args[] = { { MP_QSTR_is31, MP_ARG_OBJ | MP_ARG_REQUIRED }, @@ -111,12 +111,12 @@ STATIC mp_obj_t is31fl3741_framebuffer_make_new(const mp_obj_type_t *type, size_ //| IS31FL3741 instance. After deinitialization, no further operations //| may be performed.""" //| ... -STATIC mp_obj_t is31fl3741_framebuffer_deinit(mp_obj_t self_in) { +static mp_obj_t is31fl3741_framebuffer_deinit(mp_obj_t self_in) { is31fl3741_framebuffer_obj_t *self = (is31fl3741_framebuffer_obj_t *)self_in; common_hal_is31fl3741_framebuffer_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(is31fl3741_framebuffer_deinit_obj, is31fl3741_framebuffer_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(is31fl3741_framebuffer_deinit_obj, is31fl3741_framebuffer_deinit); static void check_for_deinit(is31fl3741_framebuffer_obj_t *self) { if (self->framebuffer == NULL) { @@ -127,7 +127,7 @@ static void check_for_deinit(is31fl3741_framebuffer_obj_t *self) { //| brightness: float //| """In the current implementation, 0.0 turns the display off entirely //| and any other value up to 1.0 turns the display on fully.""" -STATIC mp_obj_t is31fl3741_framebuffer_get_brightness(mp_obj_t self_in) { +static mp_obj_t is31fl3741_framebuffer_get_brightness(mp_obj_t self_in) { is31fl3741_framebuffer_obj_t *self = (is31fl3741_framebuffer_obj_t *)self_in; check_for_deinit(self); uint8_t current = common_hal_is31fl3741_get_current(self->is31fl3741); @@ -137,7 +137,7 @@ STATIC mp_obj_t is31fl3741_framebuffer_get_brightness(mp_obj_t self_in) { } MP_DEFINE_CONST_FUN_OBJ_1(is31fl3741_framebuffer_get_brightness_obj, is31fl3741_framebuffer_get_brightness); -STATIC mp_obj_t is31fl3741_framebuffer_set_brightness(mp_obj_t self_in, mp_obj_t value_in) { +static mp_obj_t is31fl3741_framebuffer_set_brightness(mp_obj_t self_in, mp_obj_t value_in) { is31fl3741_framebuffer_obj_t *self = (is31fl3741_framebuffer_obj_t *)self_in; check_for_deinit(self); mp_float_t brightness = mp_obj_get_float(value_in); @@ -160,7 +160,7 @@ MP_PROPERTY_GETSET(is31fl3741_framebuffer_brightness_obj, //| """Transmits the color data in the buffer to the pixels so that //| they are shown.""" //| ... -STATIC mp_obj_t is31fl3741_framebuffer_refresh(mp_obj_t self_in) { +static mp_obj_t is31fl3741_framebuffer_refresh(mp_obj_t self_in) { is31fl3741_framebuffer_obj_t *self = (is31fl3741_framebuffer_obj_t *)self_in; check_for_deinit(self); common_hal_is31fl3741_framebuffer_refresh(self, 0); @@ -170,7 +170,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(is31fl3741_framebuffer_refresh_obj, is31fl3741_framebu //| width: int //| """The width of the display, in pixels""" -STATIC mp_obj_t is31fl3741_framebuffer_get_width(mp_obj_t self_in) { +static mp_obj_t is31fl3741_framebuffer_get_width(mp_obj_t self_in) { is31fl3741_framebuffer_obj_t *self = (is31fl3741_framebuffer_obj_t *)self_in; check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_is31fl3741_framebuffer_get_width(self)); @@ -182,7 +182,7 @@ MP_PROPERTY_GETTER(is31fl3741_framebuffer_width_obj, //| height: int //| """The height of the display, in pixels""" //| -STATIC mp_obj_t is31fl3741_framebuffer_get_height(mp_obj_t self_in) { +static mp_obj_t is31fl3741_framebuffer_get_height(mp_obj_t self_in) { is31fl3741_framebuffer_obj_t *self = (is31fl3741_framebuffer_obj_t *)self_in; check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_is31fl3741_framebuffer_get_height(self)); @@ -191,63 +191,63 @@ MP_DEFINE_CONST_FUN_OBJ_1(is31fl3741_framebuffer_get_height_obj, is31fl3741_fram MP_PROPERTY_GETTER(is31fl3741_framebuffer_height_obj, (mp_obj_t)&is31fl3741_framebuffer_get_height_obj); -STATIC const mp_rom_map_elem_t is31fl3741_framebuffer_locals_dict_table[] = { +static const mp_rom_map_elem_t is31fl3741_framebuffer_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&is31fl3741_framebuffer_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR_brightness), MP_ROM_PTR(&is31fl3741_framebuffer_brightness_obj) }, { MP_ROM_QSTR(MP_QSTR_refresh), MP_ROM_PTR(&is31fl3741_framebuffer_refresh_obj) }, { MP_ROM_QSTR(MP_QSTR_width), MP_ROM_PTR(&is31fl3741_framebuffer_width_obj) }, { MP_ROM_QSTR(MP_QSTR_height), MP_ROM_PTR(&is31fl3741_framebuffer_height_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(is31fl3741_framebuffer_locals_dict, is31fl3741_framebuffer_locals_dict_table); +static MP_DEFINE_CONST_DICT(is31fl3741_framebuffer_locals_dict, is31fl3741_framebuffer_locals_dict_table); -STATIC void is31fl3741_framebuffer_get_bufinfo(mp_obj_t self_in, mp_buffer_info_t *bufinfo) { +static void is31fl3741_framebuffer_get_bufinfo(mp_obj_t self_in, mp_buffer_info_t *bufinfo) { is31fl3741_framebuffer_obj_t *self = (is31fl3741_framebuffer_obj_t *)self_in; check_for_deinit(self); *bufinfo = self->bufinfo; } -STATIC void is31fl3741_framebuffer_swapbuffers(mp_obj_t self_in, uint8_t *dirty_row_bitmap) { +static void is31fl3741_framebuffer_swapbuffers(mp_obj_t self_in, uint8_t *dirty_row_bitmap) { common_hal_is31fl3741_framebuffer_refresh(self_in, dirty_row_bitmap); } -STATIC void is31fl3741_framebuffer_deinit_proto(mp_obj_t self_in) { +static void is31fl3741_framebuffer_deinit_proto(mp_obj_t self_in) { common_hal_is31fl3741_framebuffer_deinit(self_in); } -STATIC float is31fl3741_framebuffer_get_brightness_proto(mp_obj_t self_in) { +static float is31fl3741_framebuffer_get_brightness_proto(mp_obj_t self_in) { return common_hal_is31fl3741_framebuffer_get_paused(self_in) ? 0.0f : 1.0f; } -STATIC bool is31fl3741_framebuffer_set_brightness_proto(mp_obj_t self_in, mp_float_t value) { +static bool is31fl3741_framebuffer_set_brightness_proto(mp_obj_t self_in, mp_float_t value) { common_hal_is31fl3741_framebuffer_set_paused(self_in, value <= 0); return true; } -STATIC int is31fl3741_framebuffer_get_width_proto(mp_obj_t self_in) { +static int is31fl3741_framebuffer_get_width_proto(mp_obj_t self_in) { return common_hal_is31fl3741_framebuffer_get_width(self_in); } -STATIC int is31fl3741_framebuffer_get_height_proto(mp_obj_t self_in) { +static int is31fl3741_framebuffer_get_height_proto(mp_obj_t self_in) { return common_hal_is31fl3741_framebuffer_get_height(self_in); } -STATIC int is31fl3741_framebuffer_get_color_depth_proto(mp_obj_t self_in) { +static int is31fl3741_framebuffer_get_color_depth_proto(mp_obj_t self_in) { // The way displayio works depth is used to calculate bytes // We use an uint32_t for color already so setting to 24 causes // more changes required return 32; } -STATIC int is31fl3741_framebuffer_get_bytes_per_cell_proto(mp_obj_t self_in) { +static int is31fl3741_framebuffer_get_bytes_per_cell_proto(mp_obj_t self_in) { return 1; } -STATIC int is31fl3741_framebuffer_get_native_frames_per_second_proto(mp_obj_t self_in) { +static int is31fl3741_framebuffer_get_native_frames_per_second_proto(mp_obj_t self_in) { return 60; // This was just chosen may vary based on LEDs used? } -STATIC const framebuffer_p_t is31fl3741_framebuffer_proto = { +static const framebuffer_p_t is31fl3741_framebuffer_proto = { MP_PROTO_IMPLEMENT(MP_QSTR_protocol_framebuffer) .get_bufinfo = is31fl3741_framebuffer_get_bufinfo, .set_brightness = is31fl3741_framebuffer_set_brightness_proto, @@ -261,7 +261,7 @@ STATIC const framebuffer_p_t is31fl3741_framebuffer_proto = { .deinit = is31fl3741_framebuffer_deinit_proto, }; -STATIC mp_int_t is31fl3741_framebuffer_get_buffer(mp_obj_t self_in, mp_buffer_info_t *bufinfo, mp_uint_t flags) { +static mp_int_t is31fl3741_framebuffer_get_buffer(mp_obj_t self_in, mp_buffer_info_t *bufinfo, mp_uint_t flags) { is31fl3741_framebuffer_obj_t *self = (is31fl3741_framebuffer_obj_t *)self_in; // a readonly framebuffer would be unusual but not impossible if ((flags & MP_BUFFER_WRITE) && !(self->bufinfo.typecode & MP_OBJ_ARRAY_TYPECODE_FLAG_RW)) { diff --git a/shared-bindings/is31fl3741/IS31FL3741.c b/shared-bindings/is31fl3741/IS31FL3741.c index 5dcc6f38f8be..7815a2ac809d 100644 --- a/shared-bindings/is31fl3741/IS31FL3741.c +++ b/shared-bindings/is31fl3741/IS31FL3741.c @@ -25,7 +25,7 @@ //| :param ~busio.I2C i2c: I2C bus the IS31FL3741 is on //| :param int addr: device address""" //| ... -STATIC mp_obj_t is31fl3741_IS31FL3741_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t is31fl3741_IS31FL3741_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_i2c, ARG_addr }; static const mp_arg_t allowed_args[] = { { MP_QSTR_i2c, MP_ARG_OBJ | MP_ARG_REQUIRED }, @@ -52,18 +52,18 @@ STATIC mp_obj_t is31fl3741_IS31FL3741_make_new(const mp_obj_type_t *type, size_t //| may be performed.""" //| ... //| -STATIC mp_obj_t is31fl3741_IS31FL3741_deinit(mp_obj_t self_in) { +static mp_obj_t is31fl3741_IS31FL3741_deinit(mp_obj_t self_in) { is31fl3741_IS31FL3741_obj_t *self = (is31fl3741_IS31FL3741_obj_t *)self_in; common_hal_is31fl3741_IS31FL3741_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(is31fl3741_IS31FL3741_deinit_obj, is31fl3741_IS31FL3741_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(is31fl3741_IS31FL3741_deinit_obj, is31fl3741_IS31FL3741_deinit); //| def reset(self) -> None: //| """Resets the IS31FL3741 chip.""" //| ... //| -STATIC mp_obj_t is31fl3741_IS31FL3741_reset(mp_obj_t self_in) { +static mp_obj_t is31fl3741_IS31FL3741_reset(mp_obj_t self_in) { is31fl3741_IS31FL3741_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_is31fl3741_send_reset(self); return mp_const_none; @@ -74,7 +74,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(is31fl3741_IS31FL3741_reset_obj, is31fl3741_IS31FL3741 //| """Enables the IS31FL3741 chip.""" //| ... //| -STATIC mp_obj_t is31fl3741_IS31FL3741_enable(mp_obj_t self_in) { +static mp_obj_t is31fl3741_IS31FL3741_enable(mp_obj_t self_in) { is31fl3741_IS31FL3741_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_is31fl3741_send_enable(self); return mp_const_none; @@ -87,7 +87,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(is31fl3741_IS31FL3741_enable_obj, is31fl3741_IS31FL374 //| :param int current: global current value 0x00 to 0xFF""" //| ... //| -STATIC mp_obj_t is31fl3741_IS31FL3741_set_global_current(mp_obj_t self_in, mp_obj_t value) { +static mp_obj_t is31fl3741_IS31FL3741_set_global_current(mp_obj_t self_in, mp_obj_t value) { is31fl3741_IS31FL3741_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_int_t current = mp_obj_get_int(value); common_hal_is31fl3741_set_current(self, current); @@ -105,7 +105,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(is31fl3741_IS31FL3741_set_global_current_obj, is31fl37 //| of 0 or 2)""" //| ... //| -STATIC mp_obj_t is31fl3741_IS31FL3741_set_led(size_t n_args, const mp_obj_t *args) { +static mp_obj_t is31fl3741_IS31FL3741_set_led(size_t n_args, const mp_obj_t *args) { is31fl3741_IS31FL3741_obj_t *self = MP_OBJ_TO_PTR(args[0]); mp_int_t led = mp_obj_get_int(args[1]); mp_int_t value = mp_obj_get_int(args[2]); @@ -123,7 +123,7 @@ MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(is31fl3741_IS31FL3741_set_led_obj, 4, 4, is3 //| """ //| ... //| -STATIC mp_obj_t is31fl3741_IS31FL3741_write(mp_obj_t self_in, mp_obj_t mapping, mp_obj_t buffer) { +static mp_obj_t is31fl3741_IS31FL3741_write(mp_obj_t self_in, mp_obj_t mapping, mp_obj_t buffer) { is31fl3741_IS31FL3741_obj_t *self = MP_OBJ_TO_PTR(self_in); if (!mp_obj_is_tuple_compatible(mapping)) { mp_raise_ValueError(MP_ERROR_TEXT("Mapping must be a tuple")); @@ -141,7 +141,7 @@ STATIC mp_obj_t is31fl3741_IS31FL3741_write(mp_obj_t self_in, mp_obj_t mapping, } MP_DEFINE_CONST_FUN_OBJ_3(is31fl3741_IS31FL3741_write_obj, is31fl3741_IS31FL3741_write); -STATIC const mp_rom_map_elem_t is31fl3741_IS31FL3741_locals_dict_table[] = { +static const mp_rom_map_elem_t is31fl3741_IS31FL3741_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&is31fl3741_IS31FL3741_deinit_obj) }, { MP_OBJ_NEW_QSTR(MP_QSTR_write), (mp_obj_t)&is31fl3741_IS31FL3741_write_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_reset), (mp_obj_t)&is31fl3741_IS31FL3741_reset_obj }, @@ -149,7 +149,7 @@ STATIC const mp_rom_map_elem_t is31fl3741_IS31FL3741_locals_dict_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR_set_global_current), (mp_obj_t)&is31fl3741_IS31FL3741_set_global_current_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_set_led), (mp_obj_t)&is31fl3741_IS31FL3741_set_led_obj }, }; -STATIC MP_DEFINE_CONST_DICT(is31fl3741_IS31FL3741_locals_dict, is31fl3741_IS31FL3741_locals_dict_table); +static MP_DEFINE_CONST_DICT(is31fl3741_IS31FL3741_locals_dict, is31fl3741_IS31FL3741_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( is31fl3741_IS31FL3741_type, diff --git a/shared-bindings/is31fl3741/__init__.c b/shared-bindings/is31fl3741/__init__.c index efc6e4c8b76d..b023f8cf75b3 100644 --- a/shared-bindings/is31fl3741/__init__.c +++ b/shared-bindings/is31fl3741/__init__.c @@ -14,13 +14,13 @@ #include "shared-bindings/is31fl3741/IS31FL3741.h" #include "shared-bindings/is31fl3741/FrameBuffer.h" -STATIC const mp_rom_map_elem_t is31fl3741_module_globals_table[] = { +static const mp_rom_map_elem_t is31fl3741_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_is31fl3741) }, { MP_ROM_QSTR(MP_QSTR_IS31FL3741), MP_ROM_PTR(&is31fl3741_IS31FL3741_type) }, { MP_ROM_QSTR(MP_QSTR_IS31FL3741_FrameBuffer), MP_ROM_PTR(&is31fl3741_framebuffer_type) }, }; -STATIC MP_DEFINE_CONST_DICT(is31fl3741_module_globals, is31fl3741_module_globals_table); +static MP_DEFINE_CONST_DICT(is31fl3741_module_globals, is31fl3741_module_globals_table); const mp_obj_module_t is31fl3741_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/jpegio/JpegDecoder.c b/shared-bindings/jpegio/JpegDecoder.c index 3fecb2af5d6b..d045e178bddc 100644 --- a/shared-bindings/jpegio/JpegDecoder.c +++ b/shared-bindings/jpegio/JpegDecoder.c @@ -34,7 +34,7 @@ //| //| def __init__(self) -> None: ... //| -STATIC mp_obj_t jpegio_jpegdecoder_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t jpegio_jpegdecoder_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { static const mp_arg_t allowed_args[] = { }; mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)]; @@ -62,7 +62,7 @@ STATIC mp_obj_t jpegio_jpegdecoder_make_new(const mp_obj_type_t *type, size_t n_ //| not shown in the function signature in the documentation. //| //| Returns the image size as the tuple ``(width, height)``.""" -STATIC mp_obj_t jpegio_jpegdecoder_open(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t jpegio_jpegdecoder_open(mp_obj_t self_in, mp_obj_t arg) { jpegio_jpegdecoder_obj_t *self = MP_OBJ_TO_PTR(self_in); if (mp_obj_is_str(arg)) { arg = mp_call_function_2( @@ -132,7 +132,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(jpegio_jpegdecoder_open_obj, jpegio_jpegdecoder_open); //| by the pixels from the source //| """ //| -STATIC mp_obj_t jpegio_jpegdecoder_decode(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t jpegio_jpegdecoder_decode(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { jpegio_jpegdecoder_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); enum { ARG_bitmap, ARG_scale, ARG_x, ARG_y, ARGS_X1_Y1_X2_Y2, ARG_skip_source_index, ARG_skip_dest_index }; @@ -184,13 +184,13 @@ STATIC mp_obj_t jpegio_jpegdecoder_decode(mp_uint_t n_args, const mp_obj_t *pos_ return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(jpegio_jpegdecoder_decode_obj, 1, jpegio_jpegdecoder_decode); +static MP_DEFINE_CONST_FUN_OBJ_KW(jpegio_jpegdecoder_decode_obj, 1, jpegio_jpegdecoder_decode); -STATIC const mp_rom_map_elem_t jpegio_jpegdecoder_locals_dict_table[] = { +static const mp_rom_map_elem_t jpegio_jpegdecoder_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_open), MP_ROM_PTR(&jpegio_jpegdecoder_open_obj) }, { MP_ROM_QSTR(MP_QSTR_decode), MP_ROM_PTR(&jpegio_jpegdecoder_decode_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(jpegio_jpegdecoder_locals_dict, jpegio_jpegdecoder_locals_dict_table); +static MP_DEFINE_CONST_DICT(jpegio_jpegdecoder_locals_dict, jpegio_jpegdecoder_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( jpegio_jpegdecoder_type, diff --git a/shared-bindings/jpegio/__init__.c b/shared-bindings/jpegio/__init__.c index b22edad960cc..3016e98d2e99 100644 --- a/shared-bindings/jpegio/__init__.c +++ b/shared-bindings/jpegio/__init__.c @@ -11,12 +11,12 @@ //| """Support for JPEG image decoding""" //| -STATIC const mp_rom_map_elem_t jpegio_module_globals_table[] = { +static const mp_rom_map_elem_t jpegio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_jpegio) }, { MP_ROM_QSTR(MP_QSTR_JpegDecoder), MP_ROM_PTR(&jpegio_jpegdecoder_type) }, }; -STATIC MP_DEFINE_CONST_DICT(jpegio_module_globals, jpegio_module_globals_table); +static MP_DEFINE_CONST_DICT(jpegio_module_globals, jpegio_module_globals_table); const mp_obj_module_t jpegio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/keypad/Event.c b/shared-bindings/keypad/Event.c index d58ac32077db..53c36a76dfb3 100644 --- a/shared-bindings/keypad/Event.c +++ b/shared-bindings/keypad/Event.c @@ -24,7 +24,7 @@ //| :param int timestamp: The time in milliseconds that the keypress occurred in the `supervisor.ticks_ms` time system. If specified as None, the current value of `supervisor.ticks_ms` is used. //| """ //| ... -STATIC mp_obj_t keypad_event_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t keypad_event_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { keypad_event_obj_t *self = mp_obj_malloc(keypad_event_obj_t, &keypad_event_type); enum { ARG_key_number, ARG_pressed, ARG_timestamp }; static const mp_arg_t allowed_args[] = { @@ -50,7 +50,7 @@ STATIC mp_obj_t keypad_event_make_new(const mp_obj_type_t *type, size_t n_args, //| key_number: int //| """The key number.""" -STATIC mp_obj_t keypad_event_get_key_number(mp_obj_t self_in) { +static mp_obj_t keypad_event_get_key_number(mp_obj_t self_in) { keypad_event_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_keypad_event_get_key_number(self)); } @@ -63,7 +63,7 @@ MP_PROPERTY_GETTER(keypad_event_key_number_obj, //| """``True`` if the event represents a key down (pressed) transition. //| The opposite of `released`. //| """ -STATIC mp_obj_t keypad_event_get_pressed(mp_obj_t self_in) { +static mp_obj_t keypad_event_get_pressed(mp_obj_t self_in) { keypad_event_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bool(common_hal_keypad_event_get_pressed(self)); } @@ -76,7 +76,7 @@ MP_PROPERTY_GETTER(keypad_event_pressed_obj, //| """``True`` if the event represents a key up (released) transition. //| The opposite of `pressed`. //| """ -STATIC mp_obj_t keypad_event_get_released(mp_obj_t self_in) { +static mp_obj_t keypad_event_get_released(mp_obj_t self_in) { keypad_event_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bool(common_hal_keypad_event_get_released(self)); } @@ -87,7 +87,7 @@ MP_PROPERTY_GETTER(keypad_event_released_obj, //| timestamp: int //| """The timestamp.""" -STATIC mp_obj_t keypad_event_get_timestamp(mp_obj_t self_in) { +static mp_obj_t keypad_event_get_timestamp(mp_obj_t self_in) { keypad_event_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_keypad_event_get_timestamp(self); } @@ -103,7 +103,7 @@ MP_PROPERTY_GETTER(keypad_event_timestamp_obj, //| Note that this does not compare the event timestamps. //| """ //| ... -STATIC mp_obj_t keypad_event_binary_op(mp_binary_op_t op, mp_obj_t lhs_in, mp_obj_t rhs_in) { +static mp_obj_t keypad_event_binary_op(mp_binary_op_t op, mp_obj_t lhs_in, mp_obj_t rhs_in) { switch (op) { case MP_BINARY_OP_EQUAL: if (mp_obj_is_type(rhs_in, &keypad_event_type)) { @@ -131,7 +131,7 @@ STATIC mp_obj_t keypad_event_binary_op(mp_binary_op_t op, mp_obj_t lhs_in, mp_ob //| """ //| ... //| -STATIC mp_obj_t keypad_event_unary_op(mp_unary_op_t op, mp_obj_t self_in) { +static mp_obj_t keypad_event_unary_op(mp_unary_op_t op, mp_obj_t self_in) { keypad_event_obj_t *self = MP_OBJ_TO_PTR(self_in); switch (op) { case MP_UNARY_OP_HASH: { @@ -144,21 +144,21 @@ STATIC mp_obj_t keypad_event_unary_op(mp_unary_op_t op, mp_obj_t self_in) { } } -STATIC void keypad_event_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { +static void keypad_event_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { keypad_event_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_printf(print, "", common_hal_keypad_event_get_key_number(self), common_hal_keypad_event_get_pressed(self) ? MP_QSTR_pressed : MP_QSTR_released); } -STATIC const mp_rom_map_elem_t keypad_event_locals_dict_table[] = { +static const mp_rom_map_elem_t keypad_event_locals_dict_table[] = { // Properties { MP_ROM_QSTR(MP_QSTR_key_number), MP_ROM_PTR(&keypad_event_key_number_obj) }, { MP_ROM_QSTR(MP_QSTR_pressed), MP_ROM_PTR(&keypad_event_pressed_obj) }, { MP_ROM_QSTR(MP_QSTR_released), MP_ROM_PTR(&keypad_event_released_obj) }, { MP_ROM_QSTR(MP_QSTR_timestamp), MP_ROM_PTR(&keypad_event_timestamp_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(keypad_event_locals_dict, keypad_event_locals_dict_table); +static MP_DEFINE_CONST_DICT(keypad_event_locals_dict, keypad_event_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( keypad_event_type, diff --git a/shared-bindings/keypad/EventQueue.c b/shared-bindings/keypad/EventQueue.c index a7010ce341ca..e15b19df3b8f 100644 --- a/shared-bindings/keypad/EventQueue.c +++ b/shared-bindings/keypad/EventQueue.c @@ -33,7 +33,7 @@ //| :rtype: Optional[Event] //| """ //| ... -STATIC mp_obj_t keypad_eventqueue_get(mp_obj_t self_in) { +static mp_obj_t keypad_eventqueue_get(mp_obj_t self_in) { keypad_eventqueue_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_keypad_eventqueue_get(self); @@ -55,7 +55,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(keypad_eventqueue_get_obj, keypad_eventqueue_get); //| :rtype: bool //| """ //| ... -STATIC mp_obj_t keypad_eventqueue_get_into(mp_obj_t self_in, mp_obj_t event_in) { +static mp_obj_t keypad_eventqueue_get_into(mp_obj_t self_in, mp_obj_t event_in) { keypad_eventqueue_obj_t *self = MP_OBJ_TO_PTR(self_in); keypad_event_obj_t *event = MP_OBJ_TO_PTR(mp_arg_validate_type(event_in, &keypad_event_type, MP_QSTR_event)); @@ -67,7 +67,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(keypad_eventqueue_get_into_obj, keypad_eventqueue_get_ //| def clear(self) -> None: //| """Clear any queued key transition events. Also sets `overflowed` to ``False``.""" //| ... -STATIC mp_obj_t keypad_eventqueue_clear(mp_obj_t self_in) { +static mp_obj_t keypad_eventqueue_clear(mp_obj_t self_in) { keypad_eventqueue_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_keypad_eventqueue_clear(self); @@ -84,7 +84,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(keypad_eventqueue_clear_obj, keypad_eventqueue_clear); //| def __len__(self) -> int: //| """Return the number of events currently in the queue. Used to implement ``len()``.""" //| ... -STATIC mp_obj_t keypad_eventqueue_unary_op(mp_unary_op_t op, mp_obj_t self_in) { +static mp_obj_t keypad_eventqueue_unary_op(mp_unary_op_t op, mp_obj_t self_in) { keypad_eventqueue_obj_t *self = MP_OBJ_TO_PTR(self_in); uint16_t len = common_hal_keypad_eventqueue_get_length(self); switch (op) { @@ -102,7 +102,7 @@ STATIC mp_obj_t keypad_eventqueue_unary_op(mp_unary_op_t op, mp_obj_t self_in) { //| Set to ``False`` by `clear()`. //| """ //| -STATIC mp_obj_t keypad_eventqueue_get_overflowed(mp_obj_t self_in) { +static mp_obj_t keypad_eventqueue_get_overflowed(mp_obj_t self_in) { keypad_eventqueue_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bool(common_hal_keypad_eventqueue_get_overflowed(self)); } @@ -111,17 +111,17 @@ MP_DEFINE_CONST_FUN_OBJ_1(keypad_eventqueue_get_overflowed_obj, keypad_eventqueu MP_PROPERTY_GETTER(keypad_eventqueue_overflowed_obj, (mp_obj_t)&keypad_eventqueue_get_overflowed_obj); -STATIC const mp_rom_map_elem_t keypad_eventqueue_locals_dict_table[] = { +static const mp_rom_map_elem_t keypad_eventqueue_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_clear), MP_ROM_PTR(&keypad_eventqueue_clear_obj) }, { MP_ROM_QSTR(MP_QSTR_get), MP_ROM_PTR(&keypad_eventqueue_get_obj) }, { MP_ROM_QSTR(MP_QSTR_get_into), MP_ROM_PTR(&keypad_eventqueue_get_into_obj) }, { MP_ROM_QSTR(MP_QSTR_overflowed), MP_ROM_PTR(&keypad_eventqueue_overflowed_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(keypad_eventqueue_locals_dict, keypad_eventqueue_locals_dict_table); +static MP_DEFINE_CONST_DICT(keypad_eventqueue_locals_dict, keypad_eventqueue_locals_dict_table); #if MICROPY_PY_SELECT -STATIC mp_uint_t eventqueue_ioctl(mp_obj_t self_in, mp_uint_t request, uintptr_t arg, int *errcode) { +static mp_uint_t eventqueue_ioctl(mp_obj_t self_in, mp_uint_t request, uintptr_t arg, int *errcode) { (void)errcode; keypad_eventqueue_obj_t *self = MP_OBJ_TO_PTR(self_in); switch (request) { @@ -139,7 +139,7 @@ STATIC mp_uint_t eventqueue_ioctl(mp_obj_t self_in, mp_uint_t request, uintptr_t } } -STATIC const mp_stream_p_t eventqueue_p = { +static const mp_stream_p_t eventqueue_p = { .ioctl = eventqueue_ioctl, }; #endif diff --git a/shared-bindings/keypad/KeyMatrix.c b/shared-bindings/keypad/KeyMatrix.c index aad017d9be29..7a8bb97247a5 100644 --- a/shared-bindings/keypad/KeyMatrix.c +++ b/shared-bindings/keypad/KeyMatrix.c @@ -70,7 +70,7 @@ //| """ //| ... -STATIC mp_obj_t keypad_keymatrix_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t keypad_keymatrix_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { #if CIRCUITPY_KEYPAD_KEYMATRIX keypad_keymatrix_obj_t *self = mp_obj_malloc(keypad_keymatrix_obj_t, &keypad_keymatrix_type); enum { ARG_row_pins, ARG_column_pins, ARG_columns_to_anodes, ARG_interval, ARG_max_events, ARG_debounce_threshold }; @@ -126,7 +126,7 @@ STATIC mp_obj_t keypad_keymatrix_make_new(const mp_obj_type_t *type, size_t n_ar //| def deinit(self) -> None: //| """Stop scanning and release the pins.""" //| ... -STATIC mp_obj_t keypad_keymatrix_deinit(mp_obj_t self_in) { +static mp_obj_t keypad_keymatrix_deinit(mp_obj_t self_in) { keypad_keymatrix_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_keypad_keymatrix_deinit(self); return MP_ROM_NONE; @@ -142,14 +142,14 @@ MP_DEFINE_CONST_FUN_OBJ_1(keypad_keymatrix_deinit_obj, keypad_keymatrix_deinit); //| """Automatically deinitializes when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t keypad_keymatrix___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t keypad_keymatrix___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_keypad_keymatrix_deinit(args[0]); return MP_ROM_NONE; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(keypad_keymatrix___exit___obj, 4, 4, keypad_keymatrix___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(keypad_keymatrix___exit___obj, 4, 4, keypad_keymatrix___exit__); -STATIC void check_for_deinit(keypad_keymatrix_obj_t *self) { +static void check_for_deinit(keypad_keymatrix_obj_t *self) { if (common_hal_keypad_deinited(self)) { raise_deinited_error(); } @@ -175,7 +175,7 @@ STATIC void check_for_deinit(keypad_keymatrix_obj_t *self) { //| :rtype: Tuple[int] //| """ //| ... -STATIC mp_obj_t keypad_keymatrix_key_number_to_row_column(mp_obj_t self_in, mp_obj_t key_number_in) { +static mp_obj_t keypad_keymatrix_key_number_to_row_column(mp_obj_t self_in, mp_obj_t key_number_in) { keypad_keymatrix_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -201,7 +201,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(keypad_keymatrix_key_number_to_row_column_obj, keypad_ //| The key number is ``row * len(column_pins) + column``. //| """ //| ... -STATIC mp_obj_t keypad_keymatrix_row_column_to_key_number(mp_obj_t self_in, mp_obj_t row_in, mp_obj_t column_in) { +static mp_obj_t keypad_keymatrix_row_column_to_key_number(mp_obj_t self_in, mp_obj_t row_in, mp_obj_t column_in) { keypad_keymatrix_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -221,7 +221,7 @@ MP_DEFINE_CONST_FUN_OBJ_3(keypad_keymatrix_row_column_to_key_number_obj, keypad_ //| """ //| -STATIC const mp_rom_map_elem_t keypad_keymatrix_locals_dict_table[] = { +static const mp_rom_map_elem_t keypad_keymatrix_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&keypad_keymatrix_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&keypad_keymatrix___exit___obj) }, @@ -233,7 +233,7 @@ STATIC const mp_rom_map_elem_t keypad_keymatrix_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_row_column_to_key_number), MP_ROM_PTR(&keypad_keymatrix_row_column_to_key_number_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(keypad_keymatrix_locals_dict, keypad_keymatrix_locals_dict_table); +static MP_DEFINE_CONST_DICT(keypad_keymatrix_locals_dict, keypad_keymatrix_locals_dict_table); #endif diff --git a/shared-bindings/keypad/Keys.c b/shared-bindings/keypad/Keys.c index 6571c658bb86..208bc0a62d49 100644 --- a/shared-bindings/keypad/Keys.c +++ b/shared-bindings/keypad/Keys.c @@ -72,7 +72,7 @@ //| """ //| ... -STATIC mp_obj_t keypad_keys_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t keypad_keys_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { #if CIRCUITPY_KEYPAD_KEYS keypad_keys_obj_t *self = mp_obj_malloc(keypad_keys_obj_t, &keypad_keys_type); enum { ARG_pins, ARG_value_when_pressed, ARG_pull, ARG_interval, ARG_max_events, ARG_debounce_threshold }; @@ -118,7 +118,7 @@ STATIC mp_obj_t keypad_keys_make_new(const mp_obj_type_t *type, size_t n_args, s //| def deinit(self) -> None: //| """Stop scanning and release the pins.""" //| ... -STATIC mp_obj_t keypad_keys_deinit(mp_obj_t self_in) { +static mp_obj_t keypad_keys_deinit(mp_obj_t self_in) { keypad_keys_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_keypad_keys_deinit(self); @@ -135,12 +135,12 @@ MP_DEFINE_CONST_FUN_OBJ_1(keypad_keys_deinit_obj, keypad_keys_deinit); //| """Automatically deinitializes when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t keypad_keys___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t keypad_keys___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_keypad_keys_deinit(args[0]); return MP_ROM_NONE; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(keypad_keys___exit___obj, 4, 4, keypad_keys___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(keypad_keys___exit___obj, 4, 4, keypad_keys___exit__); //| def reset(self) -> None: @@ -158,7 +158,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(keypad_keys___exit___obj, 4, 4, keypa //| """The `EventQueue` associated with this `Keys` object. (read-only) //| """ //| -STATIC const mp_rom_map_elem_t keypad_keys_locals_dict_table[] = { +static const mp_rom_map_elem_t keypad_keys_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&keypad_keys_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&keypad_keys___exit___obj) }, @@ -168,7 +168,7 @@ STATIC const mp_rom_map_elem_t keypad_keys_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_reset), MP_ROM_PTR(&keypad_generic_reset_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(keypad_keys_locals_dict, keypad_keys_locals_dict_table); +static MP_DEFINE_CONST_DICT(keypad_keys_locals_dict, keypad_keys_locals_dict_table); #endif MP_DEFINE_CONST_OBJ_TYPE( diff --git a/shared-bindings/keypad/ShiftRegisterKeys.c b/shared-bindings/keypad/ShiftRegisterKeys.c index 956a90763f6e..a0bcde96e94c 100644 --- a/shared-bindings/keypad/ShiftRegisterKeys.c +++ b/shared-bindings/keypad/ShiftRegisterKeys.c @@ -83,7 +83,7 @@ //| """ //| ... -STATIC mp_obj_t keypad_shiftregisterkeys_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t keypad_shiftregisterkeys_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { #if CIRCUITPY_KEYPAD_SHIFTREGISTERKEYS keypad_shiftregisterkeys_obj_t *self = mp_obj_malloc(keypad_shiftregisterkeys_obj_t, &keypad_shiftregisterkeys_type); @@ -170,7 +170,7 @@ STATIC mp_obj_t keypad_shiftregisterkeys_make_new(const mp_obj_type_t *type, siz //| def deinit(self) -> None: //| """Stop scanning and release the pins.""" //| ... -STATIC mp_obj_t keypad_shiftregisterkeys_deinit(mp_obj_t self_in) { +static mp_obj_t keypad_shiftregisterkeys_deinit(mp_obj_t self_in) { keypad_shiftregisterkeys_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_keypad_shiftregisterkeys_deinit(self); @@ -187,12 +187,12 @@ MP_DEFINE_CONST_FUN_OBJ_1(keypad_shiftregisterkeys_deinit_obj, keypad_shiftregis //| """Automatically deinitializes when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t keypad_shiftregisterkeys___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t keypad_shiftregisterkeys___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_keypad_shiftregisterkeys_deinit(args[0]); return MP_ROM_NONE; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(keypad_shiftregisterkeys___exit___obj, 4, 4, keypad_shiftregisterkeys___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(keypad_shiftregisterkeys___exit___obj, 4, 4, keypad_shiftregisterkeys___exit__); //| def reset(self) -> None: //| """Reset the internal state of the scanner to assume that all keys are now released. @@ -210,7 +210,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(keypad_shiftregisterkeys___exit___obj //| """ //| -STATIC const mp_rom_map_elem_t keypad_shiftregisterkeys_locals_dict_table[] = { +static const mp_rom_map_elem_t keypad_shiftregisterkeys_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&keypad_shiftregisterkeys_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&keypad_shiftregisterkeys___exit___obj) }, @@ -220,7 +220,7 @@ STATIC const mp_rom_map_elem_t keypad_shiftregisterkeys_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_reset), MP_ROM_PTR(&keypad_generic_reset_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(keypad_shiftregisterkeys_locals_dict, keypad_shiftregisterkeys_locals_dict_table); +static MP_DEFINE_CONST_DICT(keypad_shiftregisterkeys_locals_dict, keypad_shiftregisterkeys_locals_dict_table); #endif MP_DEFINE_CONST_OBJ_TYPE( diff --git a/shared-bindings/keypad/__init__.c b/shared-bindings/keypad/__init__.c index b9282e7f0b21..4c65d98a085c 100644 --- a/shared-bindings/keypad/__init__.c +++ b/shared-bindings/keypad/__init__.c @@ -14,13 +14,13 @@ #include "shared-bindings/keypad/ShiftRegisterKeys.h" #include "shared-bindings/util.h" -STATIC void check_for_deinit(keypad_keymatrix_obj_t *self) { +static void check_for_deinit(keypad_keymatrix_obj_t *self) { if (common_hal_keypad_deinited(self)) { raise_deinited_error(); } } -STATIC mp_obj_t keypad_generic_reset(mp_obj_t self_in) { +static mp_obj_t keypad_generic_reset(mp_obj_t self_in) { keypad_keymatrix_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -29,7 +29,7 @@ STATIC mp_obj_t keypad_generic_reset(mp_obj_t self_in) { } MP_DEFINE_CONST_FUN_OBJ_1(keypad_generic_reset_obj, keypad_generic_reset); -STATIC mp_obj_t keypad_generic_get_key_count(mp_obj_t self_in) { +static mp_obj_t keypad_generic_get_key_count(mp_obj_t self_in) { keypad_keymatrix_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -44,7 +44,7 @@ const mp_obj_property_t keypad_generic_key_count_obj = { MP_ROM_NONE}, }; -STATIC mp_obj_t keypad_generic_get_events(mp_obj_t self_in) { +static mp_obj_t keypad_generic_get_events(mp_obj_t self_in) { keypad_keymatrix_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -73,7 +73,7 @@ const mp_obj_property_t keypad_generic_events_obj = { //| .. jinja //| """ -STATIC mp_rom_map_elem_t keypad_module_globals_table[] = { +static mp_rom_map_elem_t keypad_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_keypad) }, { MP_ROM_QSTR(MP_QSTR_Event), MP_OBJ_FROM_PTR(&keypad_event_type) }, { MP_ROM_QSTR(MP_QSTR_EventQueue), MP_OBJ_FROM_PTR(&keypad_eventqueue_type) }, @@ -82,7 +82,7 @@ STATIC mp_rom_map_elem_t keypad_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_ShiftRegisterKeys), MP_OBJ_FROM_PTR(&keypad_shiftregisterkeys_type) }, }; -STATIC MP_DEFINE_CONST_DICT(keypad_module_globals, keypad_module_globals_table); +static MP_DEFINE_CONST_DICT(keypad_module_globals, keypad_module_globals_table); const mp_obj_module_t keypad_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/keypad_demux/DemuxKeyMatrix.c b/shared-bindings/keypad_demux/DemuxKeyMatrix.c index 1092b0e8cd8a..9f6d65c3dd33 100644 --- a/shared-bindings/keypad_demux/DemuxKeyMatrix.c +++ b/shared-bindings/keypad_demux/DemuxKeyMatrix.c @@ -65,7 +65,7 @@ //| """ //| ... -STATIC mp_obj_t keypad_demux_demuxkeymatrix_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t keypad_demux_demuxkeymatrix_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { keypad_demux_demuxkeymatrix_obj_t *self = mp_obj_malloc(keypad_demux_demuxkeymatrix_obj_t, &keypad_demux_demuxkeymatrix_type); enum { ARG_row_addr_pins, ARG_column_pins, ARG_interval, ARG_max_events, ARG_debounce_threshold }; static const mp_arg_t allowed_args[] = { @@ -114,7 +114,7 @@ STATIC mp_obj_t keypad_demux_demuxkeymatrix_make_new(const mp_obj_type_t *type, //| def deinit(self) -> None: //| """Stop scanning and release the pins.""" //| ... -STATIC mp_obj_t keypad_demux_demuxkeymatrix_deinit(mp_obj_t self_in) { +static mp_obj_t keypad_demux_demuxkeymatrix_deinit(mp_obj_t self_in) { keypad_demux_demuxkeymatrix_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_keypad_demux_demuxkeymatrix_deinit(self); return MP_ROM_NONE; @@ -130,14 +130,14 @@ MP_DEFINE_CONST_FUN_OBJ_1(keypad_demux_demuxkeymatrix_deinit_obj, keypad_demux_d //| """Automatically deinitializes when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t keypad_demux_demuxkeymatrix___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t keypad_demux_demuxkeymatrix___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_keypad_demux_demuxkeymatrix_deinit(args[0]); return MP_ROM_NONE; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(keypad_demux_demuxkeymatrix___exit___obj, 4, 4, keypad_demux_demuxkeymatrix___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(keypad_demux_demuxkeymatrix___exit___obj, 4, 4, keypad_demux_demuxkeymatrix___exit__); -STATIC void check_for_deinit(keypad_demux_demuxkeymatrix_obj_t *self) { +static void check_for_deinit(keypad_demux_demuxkeymatrix_obj_t *self) { if (common_hal_keypad_deinited(self)) { raise_deinited_error(); } @@ -163,7 +163,7 @@ STATIC void check_for_deinit(keypad_demux_demuxkeymatrix_obj_t *self) { //| :rtype: Tuple[int] //| """ //| ... -STATIC mp_obj_t keypad_demux_demuxkeymatrix_key_number_to_row_column(mp_obj_t self_in, mp_obj_t key_number_in) { +static mp_obj_t keypad_demux_demuxkeymatrix_key_number_to_row_column(mp_obj_t self_in, mp_obj_t key_number_in) { keypad_demux_demuxkeymatrix_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -189,7 +189,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(keypad_demux_demuxkeymatrix_key_number_to_row_column_o //| The key number is ``row * len(column_pins) + column``. //| """ //| ... -STATIC mp_obj_t keypad_demux_demuxkeymatrix_row_column_to_key_number(mp_obj_t self_in, mp_obj_t row_in, mp_obj_t column_in) { +static mp_obj_t keypad_demux_demuxkeymatrix_row_column_to_key_number(mp_obj_t self_in, mp_obj_t row_in, mp_obj_t column_in) { keypad_demux_demuxkeymatrix_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -209,7 +209,7 @@ MP_DEFINE_CONST_FUN_OBJ_3(keypad_demux_demuxkeymatrix_row_column_to_key_number_o //| """ //| -STATIC const mp_rom_map_elem_t keypad_demux_demuxkeymatrix_locals_dict_table[] = { +static const mp_rom_map_elem_t keypad_demux_demuxkeymatrix_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&keypad_demux_demuxkeymatrix_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&keypad_demux_demuxkeymatrix___exit___obj) }, @@ -221,7 +221,7 @@ STATIC const mp_rom_map_elem_t keypad_demux_demuxkeymatrix_locals_dict_table[] = { MP_ROM_QSTR(MP_QSTR_row_column_to_key_number), MP_ROM_PTR(&keypad_demux_demuxkeymatrix_row_column_to_key_number_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(keypad_demux_demuxkeymatrix_locals_dict, keypad_demux_demuxkeymatrix_locals_dict_table); +static MP_DEFINE_CONST_DICT(keypad_demux_demuxkeymatrix_locals_dict, keypad_demux_demuxkeymatrix_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( keypad_demux_demuxkeymatrix_type, diff --git a/shared-bindings/keypad_demux/__init__.c b/shared-bindings/keypad_demux/__init__.c index d3abf462e87f..c1359b251592 100644 --- a/shared-bindings/keypad_demux/__init__.c +++ b/shared-bindings/keypad_demux/__init__.c @@ -17,12 +17,12 @@ //| .. jinja //| """ -STATIC mp_rom_map_elem_t keypad_demux_module_globals_table[] = { +static mp_rom_map_elem_t keypad_demux_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_keypad_demux) }, { MP_ROM_QSTR(MP_QSTR_DemuxKeyMatrix), MP_OBJ_FROM_PTR(&keypad_demux_demuxkeymatrix_type) }, }; -STATIC MP_DEFINE_CONST_DICT(keypad_demux_module_globals, keypad_demux_module_globals_table); +static MP_DEFINE_CONST_DICT(keypad_demux_module_globals, keypad_demux_module_globals_table); const mp_obj_module_t keypad_demux_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/locale/__init__.c b/shared-bindings/locale/__init__.c index c4d1be24f3d2..e3201c13a197 100644 --- a/shared-bindings/locale/__init__.c +++ b/shared-bindings/locale/__init__.c @@ -18,7 +18,7 @@ //| Differences from CPython: No ``LC_*`` argument is permitted. //| """ //| -STATIC mp_obj_t getlocale(void) { +static mp_obj_t getlocale(void) { mp_rom_error_text_t locale_msg = MP_ERROR_TEXT("en_US"); size_t len_with_nul = decompress_length(locale_msg); @@ -34,12 +34,12 @@ STATIC mp_obj_t getlocale(void) { } MP_DEFINE_CONST_FUN_OBJ_0(getlocale_obj, getlocale); -STATIC const mp_rom_map_elem_t locale_module_globals_table[] = { +static const mp_rom_map_elem_t locale_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_locale) }, { MP_ROM_QSTR(MP_QSTR_getlocale), MP_ROM_PTR(&getlocale_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(locale_module_globals, locale_module_globals_table); +static MP_DEFINE_CONST_DICT(locale_module_globals, locale_module_globals_table); const mp_obj_module_t locale_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/math/__init__.c b/shared-bindings/math/__init__.c index 49a34d247bca..a4dcafc9587e 100644 --- a/shared-bindings/math/__init__.c +++ b/shared-bindings/math/__init__.c @@ -25,35 +25,35 @@ //| |see_cpython_module| :mod:`cpython:math`. //| """ -STATIC NORETURN void math_error(void) { +static NORETURN void math_error(void) { mp_raise_ValueError(MP_ERROR_TEXT("math domain error")); } #define MATH_FUN_1(py_name, c_name) \ - STATIC mp_obj_t mp_math_##py_name(mp_obj_t x_obj) { return mp_obj_new_float(MICROPY_FLOAT_C_FUN(c_name)(mp_obj_get_float(x_obj))); } \ - STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_math_##py_name##_obj, mp_math_##py_name); + static mp_obj_t mp_math_##py_name(mp_obj_t x_obj) { return mp_obj_new_float(MICROPY_FLOAT_C_FUN(c_name)(mp_obj_get_float(x_obj))); } \ + static MP_DEFINE_CONST_FUN_OBJ_1(mp_math_##py_name##_obj, mp_math_##py_name); #define MATH_FUN_2(py_name, c_name) \ - STATIC mp_obj_t mp_math_##py_name(mp_obj_t x_obj, mp_obj_t y_obj) { return mp_obj_new_float(MICROPY_FLOAT_C_FUN(c_name)(mp_obj_get_float(x_obj), mp_obj_get_float(y_obj))); } \ - STATIC MP_DEFINE_CONST_FUN_OBJ_2(mp_math_##py_name##_obj, mp_math_##py_name); + static mp_obj_t mp_math_##py_name(mp_obj_t x_obj, mp_obj_t y_obj) { return mp_obj_new_float(MICROPY_FLOAT_C_FUN(c_name)(mp_obj_get_float(x_obj), mp_obj_get_float(y_obj))); } \ + static MP_DEFINE_CONST_FUN_OBJ_2(mp_math_##py_name##_obj, mp_math_##py_name); #define MATH_FUN_1_TO_BOOL(py_name, c_name) \ - STATIC mp_obj_t mp_math_##py_name(mp_obj_t x_obj) { return mp_obj_new_bool(c_name(mp_obj_get_float(x_obj))); } \ - STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_math_##py_name##_obj, mp_math_##py_name); + static mp_obj_t mp_math_##py_name(mp_obj_t x_obj) { return mp_obj_new_bool(c_name(mp_obj_get_float(x_obj))); } \ + static MP_DEFINE_CONST_FUN_OBJ_1(mp_math_##py_name##_obj, mp_math_##py_name); #define MATH_FUN_1_TO_INT(py_name, c_name) \ - STATIC mp_obj_t mp_math_##py_name(mp_obj_t x_obj) { return mp_obj_new_int_from_float(MICROPY_FLOAT_C_FUN(c_name)(mp_obj_get_float(x_obj))); } \ - STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_math_##py_name##_obj, mp_math_##py_name); + static mp_obj_t mp_math_##py_name(mp_obj_t x_obj) { return mp_obj_new_int_from_float(MICROPY_FLOAT_C_FUN(c_name)(mp_obj_get_float(x_obj))); } \ + static MP_DEFINE_CONST_FUN_OBJ_1(mp_math_##py_name##_obj, mp_math_##py_name); #define MATH_FUN_1_ERRCOND(py_name, c_name, error_condition) \ - STATIC mp_obj_t mp_math_##py_name(mp_obj_t x_obj) { \ + static mp_obj_t mp_math_##py_name(mp_obj_t x_obj) { \ mp_float_t x = mp_obj_get_float(x_obj); \ if (error_condition) { \ math_error(); \ } \ return mp_obj_new_float(MICROPY_FLOAT_C_FUN(c_name)(x)); \ } \ - STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_math_##py_name##_obj, mp_math_##py_name); + static MP_DEFINE_CONST_FUN_OBJ_1(mp_math_##py_name##_obj, mp_math_##py_name); #ifdef MP_NEED_LOG2 // 1.442695040888963407354163704 is 1/_M_LN2 @@ -334,7 +334,7 @@ MATH_FUN_1(lgamma, lgamma) // Function that takes a variable number of arguments // log(x[, base]) -STATIC mp_obj_t mp_math_log(size_t n_args, const mp_obj_t *args) { +static mp_obj_t mp_math_log(size_t n_args, const mp_obj_t *args) { mp_float_t x = mp_obj_get_float(args[0]); if (x <= (mp_float_t)0.0) { math_error(); @@ -356,12 +356,12 @@ STATIC mp_obj_t mp_math_log(size_t n_args, const mp_obj_t *args) { return mp_obj_new_float(l / MICROPY_FLOAT_C_FUN(log)(base)); } } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mp_math_log_obj, 1, 2, mp_math_log); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mp_math_log_obj, 1, 2, mp_math_log); // Functions that return a tuple -STATIC mp_obj_t mp_math_frexp(mp_obj_t x_obj) { +static mp_obj_t mp_math_frexp(mp_obj_t x_obj) { int int_exponent = 0; mp_float_t significand = MICROPY_FLOAT_C_FUN(frexp)(mp_obj_get_float(x_obj), &int_exponent); mp_obj_t tuple[2]; @@ -369,9 +369,9 @@ STATIC mp_obj_t mp_math_frexp(mp_obj_t x_obj) { tuple[1] = mp_obj_new_int(int_exponent); return mp_obj_new_tuple(2, tuple); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_math_frexp_obj, mp_math_frexp); +static MP_DEFINE_CONST_FUN_OBJ_1(mp_math_frexp_obj, mp_math_frexp); -STATIC mp_obj_t mp_math_modf(mp_obj_t x_obj) { +static mp_obj_t mp_math_modf(mp_obj_t x_obj) { mp_float_t int_part = 0.0; mp_float_t fractional_part = MICROPY_FLOAT_C_FUN(modf)(mp_obj_get_float(x_obj), &int_part); mp_obj_t tuple[2]; @@ -379,23 +379,23 @@ STATIC mp_obj_t mp_math_modf(mp_obj_t x_obj) { tuple[1] = mp_obj_new_float(int_part); return mp_obj_new_tuple(2, tuple); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_math_modf_obj, mp_math_modf); +static MP_DEFINE_CONST_FUN_OBJ_1(mp_math_modf_obj, mp_math_modf); // Angular conversions -STATIC mp_obj_t mp_math_radians(mp_obj_t x_obj) { +static mp_obj_t mp_math_radians(mp_obj_t x_obj) { return mp_obj_new_float(mp_obj_get_float(x_obj) * (MP_PI / MICROPY_FLOAT_CONST(180.0))); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_math_radians_obj, mp_math_radians); +static MP_DEFINE_CONST_FUN_OBJ_1(mp_math_radians_obj, mp_math_radians); -STATIC mp_obj_t mp_math_degrees(mp_obj_t x_obj) { +static mp_obj_t mp_math_degrees(mp_obj_t x_obj) { return mp_obj_new_float(mp_obj_get_float(x_obj) * (MICROPY_FLOAT_CONST(180.0) / MP_PI)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_math_degrees_obj, mp_math_degrees); +static MP_DEFINE_CONST_FUN_OBJ_1(mp_math_degrees_obj, mp_math_degrees); -STATIC const mp_rom_map_elem_t mp_module_math_globals_table[] = { +static const mp_rom_map_elem_t mp_module_math_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_math) }, { MP_ROM_QSTR(MP_QSTR_e), mp_const_float_e }, { MP_ROM_QSTR(MP_QSTR_pi), mp_const_float_pi }, @@ -445,7 +445,7 @@ STATIC const mp_rom_map_elem_t mp_module_math_globals_table[] = { #endif }; -STATIC MP_DEFINE_CONST_DICT(mp_module_math_globals, mp_module_math_globals_table); +static MP_DEFINE_CONST_DICT(mp_module_math_globals, mp_module_math_globals_table); const mp_obj_module_t math_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/max3421e/Max3421E.c b/shared-bindings/max3421e/Max3421E.c index ffb75c56fd5a..e7de988a6781 100644 --- a/shared-bindings/max3421e/Max3421E.c +++ b/shared-bindings/max3421e/Max3421E.c @@ -31,7 +31,7 @@ //| :param microcontroller.Pin irq: Interrupt pin //| :param int baudrate: Maximum baudrate to talk to the Max chip in Hz""" //| ... -STATIC mp_obj_t max3421e_max3421e_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t max3421e_max3421e_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_spi_bus, ARG_chip_select, ARG_irq, ARG_baudrate }; static const mp_arg_t allowed_args[] = { { MP_QSTR_spi_bus, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -58,7 +58,7 @@ STATIC mp_obj_t max3421e_max3421e_make_new(const mp_obj_type_t *type, size_t n_a //| """Shuts down USB host functionality and releases chip_select and irq pins.""" //| ... //| -STATIC mp_obj_t max3421e_max3421e_obj_deinit(mp_obj_t self_in) { +static mp_obj_t max3421e_max3421e_obj_deinit(mp_obj_t self_in) { max3421e_max3421e_obj_t *self = self_in; if (common_hal_max3421e_max3421e_deinited(self)) { return mp_const_none; @@ -68,11 +68,11 @@ STATIC mp_obj_t max3421e_max3421e_obj_deinit(mp_obj_t self_in) { } MP_DEFINE_CONST_FUN_OBJ_1(max3421e_max3421e_deinit_obj, max3421e_max3421e_obj_deinit); -STATIC const mp_rom_map_elem_t max3421e_max3421e_locals_dict_table[] = { +static const mp_rom_map_elem_t max3421e_max3421e_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&max3421e_max3421e_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&max3421e_max3421e_deinit_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(max3421e_max3421e_locals_dict, max3421e_max3421e_locals_dict_table); +static MP_DEFINE_CONST_DICT(max3421e_max3421e_locals_dict, max3421e_max3421e_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( max3421e_max3421e_type, diff --git a/shared-bindings/max3421e/__init__.c b/shared-bindings/max3421e/__init__.c index 2eb7b53e23f5..9713f96451f8 100644 --- a/shared-bindings/max3421e/__init__.c +++ b/shared-bindings/max3421e/__init__.c @@ -38,12 +38,12 @@ //| //| """ -STATIC const mp_rom_map_elem_t max3421e_module_globals_table[] = { +static const mp_rom_map_elem_t max3421e_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_max3421e) }, { MP_ROM_QSTR(MP_QSTR_Max3421E), MP_ROM_PTR(&max3421e_max3421e_type) }, }; -STATIC MP_DEFINE_CONST_DICT(max3421e_module_globals, max3421e_module_globals_table); +static MP_DEFINE_CONST_DICT(max3421e_module_globals, max3421e_module_globals_table); const mp_obj_module_t max3421e_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/mdns/RemoteService.c b/shared-bindings/mdns/RemoteService.c index 5b907b8ddfb1..d1eddc696111 100644 --- a/shared-bindings/mdns/RemoteService.c +++ b/shared-bindings/mdns/RemoteService.c @@ -23,66 +23,66 @@ //| hostname: str //| """The hostname of the device (read-only),.""" -STATIC mp_obj_t mdns_remoteservice_get_hostname(mp_obj_t self_in) { +static mp_obj_t mdns_remoteservice_get_hostname(mp_obj_t self_in) { mdns_remoteservice_obj_t *self = MP_OBJ_TO_PTR(self_in); const char *hostname = common_hal_mdns_remoteservice_get_hostname(self); return mp_obj_new_str(hostname, strlen(hostname)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(mdns_remoteservice_get_hostname_obj, mdns_remoteservice_get_hostname); +static MP_DEFINE_CONST_FUN_OBJ_1(mdns_remoteservice_get_hostname_obj, mdns_remoteservice_get_hostname); MP_PROPERTY_GETTER(mdns_remoteservice_hostname_obj, (mp_obj_t)&mdns_remoteservice_get_hostname_obj); //| instance_name: str //| """The human readable instance name for the service. (read-only)""" -STATIC mp_obj_t remoteservice_get_instance_name(mp_obj_t self_in) { +static mp_obj_t remoteservice_get_instance_name(mp_obj_t self_in) { mdns_remoteservice_obj_t *self = MP_OBJ_TO_PTR(self_in); const char *instance_name = common_hal_mdns_remoteservice_get_instance_name(self); return mp_obj_new_str(instance_name, strlen(instance_name)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(mdns_remoteservice_get_instance_name_obj, remoteservice_get_instance_name); +static MP_DEFINE_CONST_FUN_OBJ_1(mdns_remoteservice_get_instance_name_obj, remoteservice_get_instance_name); MP_PROPERTY_GETTER(mdns_remoteservice_instance_name_obj, (mp_obj_t)&mdns_remoteservice_get_instance_name_obj); //| service_type: str //| """The service type string such as ``_http``. (read-only)""" -STATIC mp_obj_t remoteservice_get_service_type(mp_obj_t self_in) { +static mp_obj_t remoteservice_get_service_type(mp_obj_t self_in) { mdns_remoteservice_obj_t *self = MP_OBJ_TO_PTR(self_in); const char *service_type = common_hal_mdns_remoteservice_get_service_type(self); return mp_obj_new_str(service_type, strlen(service_type)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(mdns_remoteservice_get_service_type_obj, remoteservice_get_service_type); +static MP_DEFINE_CONST_FUN_OBJ_1(mdns_remoteservice_get_service_type_obj, remoteservice_get_service_type); MP_PROPERTY_GETTER(mdns_remoteservice_service_type_obj, (mp_obj_t)&mdns_remoteservice_get_service_type_obj); //| protocol: str //| """The protocol string such as ``_tcp``. (read-only)""" -STATIC mp_obj_t remoteservice_get_protocol(mp_obj_t self_in) { +static mp_obj_t remoteservice_get_protocol(mp_obj_t self_in) { mdns_remoteservice_obj_t *self = MP_OBJ_TO_PTR(self_in); const char *protocol = common_hal_mdns_remoteservice_get_protocol(self); return mp_obj_new_str(protocol, strlen(protocol)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(mdns_remoteservice_get_protocol_obj, remoteservice_get_protocol); +static MP_DEFINE_CONST_FUN_OBJ_1(mdns_remoteservice_get_protocol_obj, remoteservice_get_protocol); MP_PROPERTY_GETTER(mdns_remoteservice_protocol_obj, (mp_obj_t)&mdns_remoteservice_get_protocol_obj); //| port: int //| """Port number used for the service. (read-only)""" -STATIC mp_obj_t remoteservice_get_port(mp_obj_t self_in) { +static mp_obj_t remoteservice_get_port(mp_obj_t self_in) { mdns_remoteservice_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_mdns_remoteservice_get_port(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(mdns_remoteservice_get_port_obj, remoteservice_get_port); +static MP_DEFINE_CONST_FUN_OBJ_1(mdns_remoteservice_get_port_obj, remoteservice_get_port); MP_PROPERTY_GETTER(mdns_remoteservice_port_obj, (mp_obj_t)&mdns_remoteservice_get_port_obj); //| ipv4_address: Optional[ipaddress.IPv4Address] //| """IP v4 Address of the remote service. None if no A records are found.""" -STATIC mp_obj_t _mdns_remoteservice_get_ipv4_address(mp_obj_t self) { +static mp_obj_t _mdns_remoteservice_get_ipv4_address(mp_obj_t self) { return common_hal_mdns_remoteservice_get_ipv4_address(self); } @@ -95,14 +95,14 @@ MP_PROPERTY_GETTER(mdns_remoteservice_ipv4_address_obj, //| """Deletes the RemoteService object.""" //| ... //| -STATIC mp_obj_t mdns_remoteservice_obj_deinit(mp_obj_t self_in) { +static mp_obj_t mdns_remoteservice_obj_deinit(mp_obj_t self_in) { mdns_remoteservice_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_mdns_remoteservice_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(mdns_remoteservice_deinit_obj, mdns_remoteservice_obj_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(mdns_remoteservice_deinit_obj, mdns_remoteservice_obj_deinit); -STATIC const mp_rom_map_elem_t mdns_remoteservice_locals_dict_table[] = { +static const mp_rom_map_elem_t mdns_remoteservice_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_hostname), MP_ROM_PTR(&mdns_remoteservice_hostname_obj) }, { MP_ROM_QSTR(MP_QSTR_instance_name), MP_ROM_PTR(&mdns_remoteservice_instance_name_obj) }, { MP_ROM_QSTR(MP_QSTR_service_type), MP_ROM_PTR(&mdns_remoteservice_service_type_obj) }, @@ -113,7 +113,7 @@ STATIC const mp_rom_map_elem_t mdns_remoteservice_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&mdns_remoteservice_deinit_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(mdns_remoteservice_locals_dict, mdns_remoteservice_locals_dict_table); +static MP_DEFINE_CONST_DICT(mdns_remoteservice_locals_dict, mdns_remoteservice_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( mdns_remoteservice_type, diff --git a/shared-bindings/mdns/Server.c b/shared-bindings/mdns/Server.c index 3d6b6adbb260..247c96254fbb 100644 --- a/shared-bindings/mdns/Server.c +++ b/shared-bindings/mdns/Server.c @@ -30,7 +30,7 @@ //| may already be using it.) Only native interfaces are currently supported. //| """ //| ... -STATIC mp_obj_t mdns_server_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t mdns_server_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_network_interface }; static const mp_arg_t allowed_args[] = { { MP_QSTR_network_interface, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -56,14 +56,14 @@ STATIC mp_obj_t mdns_server_make_new(const mp_obj_type_t *type, size_t n_args, s //| def deinit(self) -> None: //| """Stops the server""" //| ... -STATIC mp_obj_t mdns_server_obj_deinit(mp_obj_t self_in) { +static mp_obj_t mdns_server_obj_deinit(mp_obj_t self_in) { mdns_server_obj_t *self = (mdns_server_obj_t *)self_in; common_hal_mdns_server_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(mdns_server_deinit_obj, mdns_server_obj_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(mdns_server_deinit_obj, mdns_server_obj_deinit); -STATIC void check_for_deinit(mdns_server_obj_t *self) { +static void check_for_deinit(mdns_server_obj_t *self) { if (common_hal_mdns_server_deinited(self)) { raise_deinited_error(); } @@ -73,7 +73,7 @@ STATIC void check_for_deinit(mdns_server_obj_t *self) { //| """Hostname resolvable as ``.local`` in addition to ``circuitpython.local``. Make //| sure this is unique across all devices on the network. It defaults to ``cpy-######`` //| where ``######`` is the hex digits of the last three bytes of the mac address.""" -STATIC mp_obj_t mdns_server_get_hostname(mp_obj_t self) { +static mp_obj_t mdns_server_get_hostname(mp_obj_t self) { check_for_deinit(self); const char *hostname = common_hal_mdns_server_get_hostname(self); return mp_obj_new_str(hostname, strlen(hostname)); @@ -86,7 +86,7 @@ static mp_obj_t mdns_server_set_hostname(mp_obj_t self, mp_obj_t hostname) { return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(mdns_server_set_hostname_obj, mdns_server_set_hostname); +static MP_DEFINE_CONST_FUN_OBJ_2(mdns_server_set_hostname_obj, mdns_server_set_hostname); MP_PROPERTY_GETSET(mdns_server_hostname_obj, (mp_obj_t)&mdns_server_get_hostname_obj, @@ -94,14 +94,14 @@ MP_PROPERTY_GETSET(mdns_server_hostname_obj, //| instance_name: str //| """Human readable name to describe the device.""" -STATIC mp_obj_t mdns_server_get_instance_name(mp_obj_t self) { +static mp_obj_t mdns_server_get_instance_name(mp_obj_t self) { check_for_deinit(self); const char *instance_name = common_hal_mdns_server_get_instance_name(self); return mp_obj_new_str(instance_name, strlen(instance_name)); } MP_DEFINE_CONST_FUN_OBJ_1(mdns_server_get_instance_name_obj, mdns_server_get_instance_name); -STATIC mp_obj_t mdns_server_set_instance_name(mp_obj_t self, mp_obj_t new_instance_name) { +static mp_obj_t mdns_server_set_instance_name(mp_obj_t self, mp_obj_t new_instance_name) { check_for_deinit(self); common_hal_mdns_server_set_instance_name(self, mp_obj_str_get_str(new_instance_name)); return mp_const_none; @@ -125,7 +125,7 @@ MP_PROPERTY_GETSET(mdns_server_instance_name_obj, //| :param str protocol: The service protocol such as "_tcp" //| :param float/int timeout: Time to wait for responses""" //| ... -STATIC mp_obj_t _mdns_server_find(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t _mdns_server_find(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { mdns_server_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); check_for_deinit(self); @@ -145,7 +145,7 @@ STATIC mp_obj_t _mdns_server_find(mp_uint_t n_args, const mp_obj_t *pos_args, mp return common_hal_mdns_server_find(self, service_type, protocol, timeout); } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(mdns_server_find_obj, 1, _mdns_server_find); +static MP_DEFINE_CONST_FUN_OBJ_KW(mdns_server_find_obj, 1, _mdns_server_find); //| def advertise_service(self, *, service_type: str, protocol: str, port: int) -> None: //| """Respond to queries for the given service with the given port. @@ -165,7 +165,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_KW(mdns_server_find_obj, 1, _mdns_server_find); //| """ //| ... //| -STATIC mp_obj_t mdns_server_advertise_service(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t mdns_server_advertise_service(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { mdns_server_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); check_for_deinit(self); @@ -200,9 +200,9 @@ STATIC mp_obj_t mdns_server_advertise_service(mp_uint_t n_args, const mp_obj_t * common_hal_mdns_server_advertise_service(self, service_type, protocol, args[ARG_port].u_int, txt_records_array, num_txt_records); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(mdns_server_advertise_service_obj, 1, mdns_server_advertise_service); +static MP_DEFINE_CONST_FUN_OBJ_KW(mdns_server_advertise_service_obj, 1, mdns_server_advertise_service); -STATIC const mp_rom_map_elem_t mdns_server_locals_dict_table[] = { +static const mp_rom_map_elem_t mdns_server_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_hostname), MP_ROM_PTR(&mdns_server_hostname_obj) }, { MP_ROM_QSTR(MP_QSTR_instance_name), MP_ROM_PTR(&mdns_server_instance_name_obj) }, @@ -213,7 +213,7 @@ STATIC const mp_rom_map_elem_t mdns_server_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&mdns_server_deinit_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(mdns_server_locals_dict, mdns_server_locals_dict_table); +static MP_DEFINE_CONST_DICT(mdns_server_locals_dict, mdns_server_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( mdns_server_type, diff --git a/shared-bindings/mdns/__init__.c b/shared-bindings/mdns/__init__.c index 52b3219d0c75..1e8073b08b89 100644 --- a/shared-bindings/mdns/__init__.c +++ b/shared-bindings/mdns/__init__.c @@ -19,13 +19,13 @@ //| also supports DNS Service Discovery that allows for discovering other hosts //| that provide a desired service.""" -STATIC const mp_rom_map_elem_t mdns_module_globals_table[] = { +static const mp_rom_map_elem_t mdns_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_mdns) }, { MP_ROM_QSTR(MP_QSTR_Server), MP_ROM_PTR(&mdns_server_type) }, { MP_ROM_QSTR(MP_QSTR_RemoteService), MP_ROM_PTR(&mdns_remoteservice_type) }, }; -STATIC MP_DEFINE_CONST_DICT(mdns_module_globals, mdns_module_globals_table); +static MP_DEFINE_CONST_DICT(mdns_module_globals, mdns_module_globals_table); const mp_obj_module_t mdns_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/memorymap/AddressRange.c b/shared-bindings/memorymap/AddressRange.c index 74d1a153bec6..3b742ce463be 100644 --- a/shared-bindings/memorymap/AddressRange.c +++ b/shared-bindings/memorymap/AddressRange.c @@ -59,7 +59,7 @@ //| ``start + length``. An exception will be raised if any of the //| addresses are invalid or protected.""" //| ... -STATIC mp_obj_t memorymap_addressrange_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t memorymap_addressrange_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_start, ARG_length }; static const mp_arg_t allowed_args[] = { { MP_QSTR_start, MP_ARG_KW_ONLY | MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -97,7 +97,7 @@ STATIC mp_obj_t memorymap_addressrange_make_new(const mp_obj_type_t *type, size_ //| def __len__(self) -> int: //| """Return the length. This is used by (`len`)""" //| ... -STATIC mp_obj_t memorymap_addressrange_unary_op(mp_unary_op_t op, mp_obj_t self_in) { +static mp_obj_t memorymap_addressrange_unary_op(mp_unary_op_t op, mp_obj_t self_in) { memorymap_addressrange_obj_t *self = MP_OBJ_TO_PTR(self_in); uint16_t len = common_hal_memorymap_addressrange_get_length(self); switch (op) { @@ -110,10 +110,10 @@ STATIC mp_obj_t memorymap_addressrange_unary_op(mp_unary_op_t op, mp_obj_t self_ } } -STATIC const mp_rom_map_elem_t memorymap_addressrange_locals_dict_table[] = { +static const mp_rom_map_elem_t memorymap_addressrange_locals_dict_table[] = { }; -STATIC MP_DEFINE_CONST_DICT(memorymap_addressrange_locals_dict, memorymap_addressrange_locals_dict_table); +static MP_DEFINE_CONST_DICT(memorymap_addressrange_locals_dict, memorymap_addressrange_locals_dict_table); //| @overload //| def __getitem__(self, index: slice) -> bytearray: ... @@ -137,7 +137,7 @@ STATIC MP_DEFINE_CONST_DICT(memorymap_addressrange_locals_dict, memorymap_addres //| All others may use multiple transactions.""" //| ... //| -STATIC mp_obj_t memorymap_addressrange_subscr(mp_obj_t self_in, mp_obj_t index_in, mp_obj_t value) { +static mp_obj_t memorymap_addressrange_subscr(mp_obj_t self_in, mp_obj_t index_in, mp_obj_t value) { if (value == MP_OBJ_NULL) { // delete item // slice deletion diff --git a/shared-bindings/memorymap/__init__.c b/shared-bindings/memorymap/__init__.c index 8d30104bbe1a..9e404d164973 100644 --- a/shared-bindings/memorymap/__init__.c +++ b/shared-bindings/memorymap/__init__.c @@ -17,12 +17,12 @@ //| address space seen from the processor running CircuitPython. It is usually //| the physical address space. //| """ -STATIC const mp_rom_map_elem_t memorymap_module_globals_table[] = { +static const mp_rom_map_elem_t memorymap_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_memorymap) }, { MP_ROM_QSTR(MP_QSTR_AddressRange), MP_ROM_PTR(&memorymap_addressrange_type) }, }; -STATIC MP_DEFINE_CONST_DICT(memorymap_module_globals, memorymap_module_globals_table); +static MP_DEFINE_CONST_DICT(memorymap_module_globals, memorymap_module_globals_table); const mp_obj_module_t memorymap_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/memorymonitor/AllocationAlarm.c b/shared-bindings/memorymonitor/AllocationAlarm.c index 417c31fe2e61..9fa07376b2c4 100644 --- a/shared-bindings/memorymonitor/AllocationAlarm.c +++ b/shared-bindings/memorymonitor/AllocationAlarm.c @@ -33,7 +33,7 @@ //| //| """ //| ... -STATIC mp_obj_t memorymonitor_allocationalarm_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *all_args, mp_map_t *kw_args) { +static mp_obj_t memorymonitor_allocationalarm_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *all_args, mp_map_t *kw_args) { enum { ARG_minimum_block_count }; static const mp_arg_t allowed_args[] = { { MP_QSTR_minimum_block_count, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 1} }, @@ -64,7 +64,7 @@ STATIC mp_obj_t memorymonitor_allocationalarm_make_new(const mp_obj_type_t *type //| x = bytearray(20) //| """ //| ... -STATIC mp_obj_t memorymonitor_allocationalarm_obj_ignore(mp_obj_t self_in, mp_obj_t count_obj) { +static mp_obj_t memorymonitor_allocationalarm_obj_ignore(mp_obj_t self_in, mp_obj_t count_obj) { mp_int_t count = mp_obj_get_int(count_obj); mp_arg_validate_int_min(count, 0, MP_QSTR_count); @@ -76,7 +76,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(memorymonitor_allocationalarm_ignore_obj, memorymonito //| def __enter__(self) -> AllocationAlarm: //| """Enables the alarm.""" //| ... -STATIC mp_obj_t memorymonitor_allocationalarm_obj___enter__(mp_obj_t self_in) { +static mp_obj_t memorymonitor_allocationalarm_obj___enter__(mp_obj_t self_in) { common_hal_memorymonitor_allocationalarm_resume(self_in); return self_in; } @@ -87,21 +87,21 @@ MP_DEFINE_CONST_FUN_OBJ_1(memorymonitor_allocationalarm___enter___obj, memorymon //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... //| -STATIC mp_obj_t memorymonitor_allocationalarm_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t memorymonitor_allocationalarm_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_memorymonitor_allocationalarm_set_ignore(args[0], 0); common_hal_memorymonitor_allocationalarm_pause(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(memorymonitor_allocationalarm___exit___obj, 4, 4, memorymonitor_allocationalarm_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(memorymonitor_allocationalarm___exit___obj, 4, 4, memorymonitor_allocationalarm_obj___exit__); -STATIC const mp_rom_map_elem_t memorymonitor_allocationalarm_locals_dict_table[] = { +static const mp_rom_map_elem_t memorymonitor_allocationalarm_locals_dict_table[] = { // Methods { MP_ROM_QSTR(MP_QSTR_ignore), MP_ROM_PTR(&memorymonitor_allocationalarm_ignore_obj) }, { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&memorymonitor_allocationalarm___enter___obj) }, { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&memorymonitor_allocationalarm___exit___obj) }, }; -STATIC MP_DEFINE_CONST_DICT(memorymonitor_allocationalarm_locals_dict, memorymonitor_allocationalarm_locals_dict_table); +static MP_DEFINE_CONST_DICT(memorymonitor_allocationalarm_locals_dict, memorymonitor_allocationalarm_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( memorymonitor_allocationalarm_type, diff --git a/shared-bindings/memorymonitor/AllocationSize.c b/shared-bindings/memorymonitor/AllocationSize.c index 198dc658bf69..34f1d3e3f3b9 100644 --- a/shared-bindings/memorymonitor/AllocationSize.c +++ b/shared-bindings/memorymonitor/AllocationSize.c @@ -40,7 +40,7 @@ //| //| """ //| ... -STATIC mp_obj_t memorymonitor_allocationsize_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *all_args, mp_map_t *kw_args) { +static mp_obj_t memorymonitor_allocationsize_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *all_args, mp_map_t *kw_args) { memorymonitor_allocationsize_obj_t *self = m_new_obj(memorymonitor_allocationsize_obj_t, &memorymonitor_allocationsize_type); @@ -52,7 +52,7 @@ STATIC mp_obj_t memorymonitor_allocationsize_make_new(const mp_obj_type_t *type, //| def __enter__(self) -> AllocationSize: //| """Clears counts and resumes tracking.""" //| ... -STATIC mp_obj_t memorymonitor_allocationsize_obj___enter__(mp_obj_t self_in) { +static mp_obj_t memorymonitor_allocationsize_obj___enter__(mp_obj_t self_in) { common_hal_memorymonitor_allocationsize_clear(self_in); common_hal_memorymonitor_allocationsize_resume(self_in); return self_in; @@ -63,16 +63,16 @@ MP_DEFINE_CONST_FUN_OBJ_1(memorymonitor_allocationsize___enter___obj, memorymoni //| """Automatically pauses allocation tracking when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t memorymonitor_allocationsize_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t memorymonitor_allocationsize_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_memorymonitor_allocationsize_pause(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(memorymonitor_allocationsize___exit___obj, 4, 4, memorymonitor_allocationsize_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(memorymonitor_allocationsize___exit___obj, 4, 4, memorymonitor_allocationsize_obj___exit__); //| bytes_per_block: int //| """Number of bytes per block""" -STATIC mp_obj_t memorymonitor_allocationsize_obj_get_bytes_per_block(mp_obj_t self_in) { +static mp_obj_t memorymonitor_allocationsize_obj_get_bytes_per_block(mp_obj_t self_in) { memorymonitor_allocationsize_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_memorymonitor_allocationsize_get_bytes_per_block(self)); @@ -90,7 +90,7 @@ MP_PROPERTY_GETTER(memorymonitor_allocationsize_bytes_per_block_obj, //| mm = memorymonitor.AllocationSize() //| print(len(mm))""" //| ... -STATIC mp_obj_t memorymonitor_allocationsize_unary_op(mp_unary_op_t op, mp_obj_t self_in) { +static mp_obj_t memorymonitor_allocationsize_unary_op(mp_unary_op_t op, mp_obj_t self_in) { memorymonitor_allocationsize_obj_t *self = MP_OBJ_TO_PTR(self_in); uint16_t len = common_hal_memorymonitor_allocationsize_get_len(self); switch (op) { @@ -112,7 +112,7 @@ STATIC mp_obj_t memorymonitor_allocationsize_unary_op(mp_unary_op_t op, mp_obj_t //| print(mm[0])""" //| ... //| -STATIC mp_obj_t memorymonitor_allocationsize_subscr(mp_obj_t self_in, mp_obj_t index_obj, mp_obj_t value) { +static mp_obj_t memorymonitor_allocationsize_subscr(mp_obj_t self_in, mp_obj_t index_obj, mp_obj_t value) { if (value == mp_const_none) { // delete item mp_raise_AttributeError(MP_ERROR_TEXT("Cannot delete values")); @@ -134,7 +134,7 @@ STATIC mp_obj_t memorymonitor_allocationsize_subscr(mp_obj_t self_in, mp_obj_t i return mp_const_none; } -STATIC const mp_rom_map_elem_t memorymonitor_allocationsize_locals_dict_table[] = { +static const mp_rom_map_elem_t memorymonitor_allocationsize_locals_dict_table[] = { // Methods { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&memorymonitor_allocationsize___enter___obj) }, { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&memorymonitor_allocationsize___exit___obj) }, @@ -142,7 +142,7 @@ STATIC const mp_rom_map_elem_t memorymonitor_allocationsize_locals_dict_table[] // Properties { MP_ROM_QSTR(MP_QSTR_bytes_per_block), MP_ROM_PTR(&memorymonitor_allocationsize_bytes_per_block_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(memorymonitor_allocationsize_locals_dict, memorymonitor_allocationsize_locals_dict_table); +static MP_DEFINE_CONST_DICT(memorymonitor_allocationsize_locals_dict, memorymonitor_allocationsize_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( memorymonitor_allocationsize_type, diff --git a/shared-bindings/memorymonitor/__init__.c b/shared-bindings/memorymonitor/__init__.c index afe2726100e0..e925eb54e746 100644 --- a/shared-bindings/memorymonitor/__init__.c +++ b/shared-bindings/memorymonitor/__init__.c @@ -31,7 +31,7 @@ NORETURN void mp_raise_memorymonitor_AllocationError(mp_rom_error_text_t fmt, .. nlr_raise(exception); } -STATIC const mp_rom_map_elem_t memorymonitor_module_globals_table[] = { +static const mp_rom_map_elem_t memorymonitor_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_memorymonitor) }, { MP_ROM_QSTR(MP_QSTR_AllocationAlarm), MP_ROM_PTR(&memorymonitor_allocationalarm_type) }, { MP_ROM_QSTR(MP_QSTR_AllocationSize), MP_ROM_PTR(&memorymonitor_allocationsize_type) }, @@ -40,7 +40,7 @@ STATIC const mp_rom_map_elem_t memorymonitor_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_AllocationError), MP_ROM_PTR(&mp_type_memorymonitor_AllocationError) }, }; -STATIC MP_DEFINE_CONST_DICT(memorymonitor_module_globals, memorymonitor_module_globals_table); +static MP_DEFINE_CONST_DICT(memorymonitor_module_globals, memorymonitor_module_globals_table); void memorymonitor_exception_print(const mp_print_t *print, mp_obj_t o_in, mp_print_kind_t kind) { mp_print_kind_t k = kind & ~PRINT_EXC_SUBCLASS; diff --git a/shared-bindings/microcontroller/Processor.c b/shared-bindings/microcontroller/Processor.c index 4e0372dbdf1e..bf9f808db958 100644 --- a/shared-bindings/microcontroller/Processor.c +++ b/shared-bindings/microcontroller/Processor.c @@ -58,7 +58,7 @@ //| """ #if CIRCUITPY_SETTABLE_PROCESSOR_FREQUENCY -STATIC mp_obj_t mcu_processor_set_frequency(mp_obj_t self, mp_obj_t freq) { +static mp_obj_t mcu_processor_set_frequency(mp_obj_t self, mp_obj_t freq) { uint32_t value_of_freq = (uint32_t)mp_arg_validate_int_min(mp_obj_get_int(freq), 0, MP_QSTR_frequency); common_hal_mcu_processor_set_frequency(self, value_of_freq); return mp_const_none; @@ -68,7 +68,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(mcu_processor_set_frequency_obj, mcu_processor_set_fre #endif -STATIC mp_obj_t mcu_processor_get_frequency(mp_obj_t self) { +static mp_obj_t mcu_processor_get_frequency(mp_obj_t self) { return mp_obj_new_int_from_uint(common_hal_mcu_processor_get_frequency()); } @@ -85,7 +85,7 @@ MP_PROPERTY_GETTER(mcu_processor_frequency_obj, //| reset_reason: microcontroller.ResetReason //| """The reason the microcontroller started up from reset state.""" -STATIC mp_obj_t mcu_processor_get_reset_reason(mp_obj_t self) { +static mp_obj_t mcu_processor_get_reset_reason(mp_obj_t self) { return cp_enum_find(&mcu_reset_reason_type, common_hal_mcu_processor_get_reset_reason()); } @@ -102,7 +102,7 @@ MP_PROPERTY_GETTER(mcu_processor_reset_reason_obj, //| **Limitations:** Not available on ESP32 or ESP32-S3. On small SAMD21 builds without external flash, //| the reported temperature has reduced accuracy and precision, to save code space. //| """ -STATIC mp_obj_t mcu_processor_get_temperature(mp_obj_t self) { +static mp_obj_t mcu_processor_get_temperature(mp_obj_t self) { float temperature = common_hal_mcu_processor_get_temperature(); return isnan(temperature) ? mp_const_none : mp_obj_new_float(temperature); } @@ -114,7 +114,7 @@ MP_PROPERTY_GETTER(mcu_processor_temperature_obj, //| uid: bytearray //| """The unique id (aka serial number) of the chip as a `bytearray`. (read-only)""" -STATIC mp_obj_t mcu_processor_get_uid(mp_obj_t self) { +static mp_obj_t mcu_processor_get_uid(mp_obj_t self) { uint8_t raw_id[COMMON_HAL_MCU_PROCESSOR_UID_LENGTH]; common_hal_mcu_processor_get_uid(raw_id); return mp_obj_new_bytearray(sizeof(raw_id), raw_id); @@ -130,7 +130,7 @@ MP_PROPERTY_GETTER(mcu_processor_uid_obj, //| //| Is `None` if the voltage is not available.""" //| -STATIC mp_obj_t mcu_processor_get_voltage(mp_obj_t self) { +static mp_obj_t mcu_processor_get_voltage(mp_obj_t self) { float voltage = common_hal_mcu_processor_get_voltage(); return isnan(voltage) ? mp_const_none : mp_obj_new_float(voltage); } @@ -140,7 +140,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(mcu_processor_get_voltage_obj, mcu_processor_get_volta MP_PROPERTY_GETTER(mcu_processor_voltage_obj, (mp_obj_t)&mcu_processor_get_voltage_obj); -STATIC const mp_rom_map_elem_t mcu_processor_locals_dict_table[] = { +static const mp_rom_map_elem_t mcu_processor_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_frequency), MP_ROM_PTR(&mcu_processor_frequency_obj) }, { MP_ROM_QSTR(MP_QSTR_reset_reason), MP_ROM_PTR(&mcu_processor_reset_reason_obj) }, { MP_ROM_QSTR(MP_QSTR_temperature), MP_ROM_PTR(&mcu_processor_temperature_obj) }, @@ -148,7 +148,7 @@ STATIC const mp_rom_map_elem_t mcu_processor_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_voltage), MP_ROM_PTR(&mcu_processor_voltage_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(mcu_processor_locals_dict, mcu_processor_locals_dict_table); +static MP_DEFINE_CONST_DICT(mcu_processor_locals_dict, mcu_processor_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( mcu_processor_type, diff --git a/shared-bindings/microcontroller/ResetReason.c b/shared-bindings/microcontroller/ResetReason.c index e67f640f340e..301205d84f36 100644 --- a/shared-bindings/microcontroller/ResetReason.c +++ b/shared-bindings/microcontroller/ResetReason.c @@ -55,7 +55,7 @@ MAKE_ENUM_MAP(mcu_reset_reason) { MAKE_ENUM_MAP_ENTRY(reset_reason, UNKNOWN), MAKE_ENUM_MAP_ENTRY(reset_reason, RESCUE_DEBUG), }; -STATIC MP_DEFINE_CONST_DICT(mcu_reset_reason_locals_dict, mcu_reset_reason_locals_table); +static MP_DEFINE_CONST_DICT(mcu_reset_reason_locals_dict, mcu_reset_reason_locals_table); MAKE_PRINTER(microcontroller, mcu_reset_reason); diff --git a/shared-bindings/microcontroller/RunMode.c b/shared-bindings/microcontroller/RunMode.c index 456bc1053c7f..95979e5533c5 100644 --- a/shared-bindings/microcontroller/RunMode.c +++ b/shared-bindings/microcontroller/RunMode.c @@ -51,15 +51,15 @@ const mcu_runmode_obj_t mcu_runmode_bootloader_obj = { { &mcu_runmode_type }, }; -STATIC const mp_rom_map_elem_t mcu_runmode_locals_dict_table[] = { +static const mp_rom_map_elem_t mcu_runmode_locals_dict_table[] = { {MP_ROM_QSTR(MP_QSTR_UF2), MP_ROM_PTR(&mcu_runmode_uf2_obj)}, {MP_ROM_QSTR(MP_QSTR_NORMAL), MP_ROM_PTR(&mcu_runmode_normal_obj)}, {MP_ROM_QSTR(MP_QSTR_SAFE_MODE), MP_ROM_PTR(&mcu_runmode_safe_mode_obj)}, {MP_ROM_QSTR(MP_QSTR_BOOTLOADER), MP_ROM_PTR(&mcu_runmode_bootloader_obj)}, }; -STATIC MP_DEFINE_CONST_DICT(mcu_runmode_locals_dict, mcu_runmode_locals_dict_table); +static MP_DEFINE_CONST_DICT(mcu_runmode_locals_dict, mcu_runmode_locals_dict_table); -STATIC void mcu_runmode_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { +static void mcu_runmode_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { qstr runmode = MP_QSTR_NORMAL; if (self_in == MP_ROM_PTR(&mcu_runmode_uf2_obj)) { runmode = MP_QSTR_UF2; diff --git a/shared-bindings/microcontroller/__init__.c b/shared-bindings/microcontroller/__init__.c index 73ce4ccb7c1b..eb2fc79ec33e 100644 --- a/shared-bindings/microcontroller/__init__.c +++ b/shared-bindings/microcontroller/__init__.c @@ -49,34 +49,34 @@ //| `time.sleep()`.""" //| ... //| -STATIC mp_obj_t mcu_delay_us(mp_obj_t delay_obj) { +static mp_obj_t mcu_delay_us(mp_obj_t delay_obj) { uint32_t delay = mp_obj_get_int(delay_obj); common_hal_mcu_delay_us(delay); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(mcu_delay_us_obj, mcu_delay_us); +static MP_DEFINE_CONST_FUN_OBJ_1(mcu_delay_us_obj, mcu_delay_us); //| def disable_interrupts() -> None: //| """Disable all interrupts. Be very careful, this can stall everything.""" //| ... //| -STATIC mp_obj_t mcu_disable_interrupts(void) { +static mp_obj_t mcu_disable_interrupts(void) { common_hal_mcu_disable_interrupts(); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_0(mcu_disable_interrupts_obj, mcu_disable_interrupts); +static MP_DEFINE_CONST_FUN_OBJ_0(mcu_disable_interrupts_obj, mcu_disable_interrupts); //| def enable_interrupts() -> None: //| """Enable the interrupts that were enabled at the last disable.""" //| ... //| -STATIC mp_obj_t mcu_enable_interrupts(void) { +static mp_obj_t mcu_enable_interrupts(void) { common_hal_mcu_enable_interrupts(); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_0(mcu_enable_interrupts_obj, mcu_enable_interrupts); +static MP_DEFINE_CONST_FUN_OBJ_0(mcu_enable_interrupts_obj, mcu_enable_interrupts); //| def on_next_reset(run_mode: microcontroller.RunMode) -> None: //| """Configure the run mode used the next time the microcontroller is reset but @@ -85,7 +85,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_0(mcu_enable_interrupts_obj, mcu_enable_interrupt //| :param ~microcontroller.RunMode run_mode: The next run mode""" //| ... //| -STATIC mp_obj_t mcu_on_next_reset(mp_obj_t run_mode_obj) { +static mp_obj_t mcu_on_next_reset(mp_obj_t run_mode_obj) { mcu_runmode_t run_mode; if (run_mode_obj == MP_OBJ_FROM_PTR(&mcu_runmode_uf2_obj)) { run_mode = RUNMODE_UF2; @@ -101,7 +101,7 @@ STATIC mp_obj_t mcu_on_next_reset(mp_obj_t run_mode_obj) { common_hal_mcu_on_next_reset(run_mode); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(mcu_on_next_reset_obj, mcu_on_next_reset); +static MP_DEFINE_CONST_FUN_OBJ_1(mcu_on_next_reset_obj, mcu_on_next_reset); //| def reset() -> None: //| """Reset the microcontroller. After reset, the microcontroller will enter the @@ -112,12 +112,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(mcu_on_next_reset_obj, mcu_on_next_reset); //| "Safely removed" on Windows or "ejected" on Mac OSX and Linux.""" //| ... //| -STATIC mp_obj_t mcu_reset(void) { +static mp_obj_t mcu_reset(void) { common_hal_mcu_reset(); // We won't actually get here because we're resetting. return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_0(mcu_reset_obj, mcu_reset); +static MP_DEFINE_CONST_FUN_OBJ_0(mcu_reset_obj, mcu_reset); //| nvm: Optional[ByteArray] //| """Available non-volatile memory. @@ -134,7 +134,7 @@ const mp_obj_module_t mcu_pin_module = { .globals = (mp_obj_dict_t *)&mcu_pin_globals, }; -STATIC const mp_rom_map_elem_t mcu_module_globals_table[] = { +static const mp_rom_map_elem_t mcu_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_microcontroller) }, { MP_ROM_QSTR(MP_QSTR_cpu), MP_ROM_PTR(&common_hal_mcu_processor_obj) }, #if CIRCUITPY_PROCESSOR_COUNT > 1 @@ -163,7 +163,7 @@ STATIC const mp_rom_map_elem_t mcu_module_globals_table[] = { }; -STATIC MP_DEFINE_CONST_DICT(mcu_module_globals, mcu_module_globals_table); +static MP_DEFINE_CONST_DICT(mcu_module_globals, mcu_module_globals_table); const mp_obj_module_t microcontroller_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/msgpack/ExtType.c b/shared-bindings/msgpack/ExtType.c index 2bf2560b021d..7cee4b9b0d3f 100644 --- a/shared-bindings/msgpack/ExtType.c +++ b/shared-bindings/msgpack/ExtType.c @@ -16,7 +16,7 @@ //| """Constructor //| :param int code: type code in range 0~127. //| :param bytes data: representation.""" -STATIC mp_obj_t mod_msgpack_exttype_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t mod_msgpack_exttype_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { mod_msgpack_extype_obj_t *self = mp_obj_malloc(mod_msgpack_extype_obj_t, &mod_msgpack_exttype_type); enum { ARG_code, ARG_data }; static const mp_arg_t allowed_args[] = { @@ -39,13 +39,13 @@ STATIC mp_obj_t mod_msgpack_exttype_make_new(const mp_obj_type_t *type, size_t n //| code: int //| """The type code, in range 0~127.""" //| ... -STATIC mp_obj_t mod_msgpack_exttype_get_code(mp_obj_t self_in) { +static mp_obj_t mod_msgpack_exttype_get_code(mp_obj_t self_in) { mod_msgpack_extype_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_NEW_SMALL_INT(self->code); } MP_DEFINE_CONST_FUN_OBJ_1(mod_msgpack_exttype_get_code_obj, mod_msgpack_exttype_get_code); -STATIC mp_obj_t mod_msgpack_exttype_set_code(mp_obj_t self_in, mp_obj_t code_in) { +static mp_obj_t mod_msgpack_exttype_set_code(mp_obj_t self_in, mp_obj_t code_in) { mod_msgpack_extype_obj_t *self = MP_OBJ_TO_PTR(self_in); int code = mp_obj_get_int(code_in); if (code < 0 || code > 127) { @@ -64,13 +64,13 @@ MP_PROPERTY_GETSET(mod_msgpack_exttype_code_obj, //| """Data.""" //| ... //| -STATIC mp_obj_t mod_msgpack_exttype_get_data(mp_obj_t self_in) { +static mp_obj_t mod_msgpack_exttype_get_data(mp_obj_t self_in) { mod_msgpack_extype_obj_t *self = MP_OBJ_TO_PTR(self_in); return self->data; } MP_DEFINE_CONST_FUN_OBJ_1(mod_msgpack_exttype_get_data_obj, mod_msgpack_exttype_get_data); -STATIC mp_obj_t mod_msgpack_exttype_set_data(mp_obj_t self_in, mp_obj_t data_in) { +static mp_obj_t mod_msgpack_exttype_set_data(mp_obj_t self_in, mp_obj_t data_in) { mod_msgpack_extype_obj_t *self = MP_OBJ_TO_PTR(self_in); self->data = data_in; return mp_const_none; @@ -81,12 +81,12 @@ MP_PROPERTY_GETSET(mod_msgpack_exttype_data_obj, (mp_obj_t)&mod_msgpack_exttype_get_data_obj, (mp_obj_t)&mod_msgpack_exttype_set_data_obj); -STATIC mp_rom_map_elem_t mod_msgpack_exttype_locals_dict_table[] = { +static mp_rom_map_elem_t mod_msgpack_exttype_locals_dict_table[] = { // Properties { MP_ROM_QSTR(MP_QSTR_code), MP_ROM_PTR(&mod_msgpack_exttype_code_obj) }, { MP_ROM_QSTR(MP_QSTR_data), MP_ROM_PTR(&mod_msgpack_exttype_data_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(mod_msgpack_exttype_locals_dict, mod_msgpack_exttype_locals_dict_table); +static MP_DEFINE_CONST_DICT(mod_msgpack_exttype_locals_dict, mod_msgpack_exttype_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( mod_msgpack_exttype_type, diff --git a/shared-bindings/msgpack/__init__.c b/shared-bindings/msgpack/__init__.c index ea42f96e7287..eaa1cfb98ba6 100644 --- a/shared-bindings/msgpack/__init__.c +++ b/shared-bindings/msgpack/__init__.c @@ -82,9 +82,9 @@ //| """ //| ... //| -STATIC mp_obj_t mod_msgpack_pack(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t mod_msgpack_pack(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_obj, ARG_buffer, ARG_default }; - STATIC const mp_arg_t allowed_args[] = { + static const mp_arg_t allowed_args[] = { { MP_QSTR_obj, MP_ARG_REQUIRED | MP_ARG_OBJ }, { MP_QSTR_stream, MP_ARG_REQUIRED | MP_ARG_OBJ }, { MP_QSTR_default, MP_ARG_KW_ONLY | MP_ARG_OBJ, { .u_obj = mp_const_none } }, @@ -120,9 +120,9 @@ MP_DEFINE_CONST_FUN_OBJ_KW(mod_msgpack_pack_obj, 0, mod_msgpack_pack); //| """ //| ... //| -STATIC mp_obj_t mod_msgpack_unpack(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t mod_msgpack_unpack(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_buffer, ARG_ext_hook, ARG_use_list }; - STATIC const mp_arg_t allowed_args[] = { + static const mp_arg_t allowed_args[] = { { MP_QSTR_stream, MP_ARG_REQUIRED | MP_ARG_OBJ, }, { MP_QSTR_ext_hook, MP_ARG_KW_ONLY | MP_ARG_OBJ, { .u_obj = mp_const_none } }, { MP_QSTR_use_list, MP_ARG_KW_ONLY | MP_ARG_BOOL, { .u_bool = true } }, @@ -140,14 +140,14 @@ STATIC mp_obj_t mod_msgpack_unpack(size_t n_args, const mp_obj_t *pos_args, mp_m MP_DEFINE_CONST_FUN_OBJ_KW(mod_msgpack_unpack_obj, 0, mod_msgpack_unpack); -STATIC const mp_rom_map_elem_t msgpack_module_globals_table[] = { +static const mp_rom_map_elem_t msgpack_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_msgpack) }, { MP_ROM_QSTR(MP_QSTR_ExtType), MP_ROM_PTR(&mod_msgpack_exttype_type) }, { MP_ROM_QSTR(MP_QSTR_pack), MP_ROM_PTR(&mod_msgpack_pack_obj) }, { MP_ROM_QSTR(MP_QSTR_unpack), MP_ROM_PTR(&mod_msgpack_unpack_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(msgpack_module_globals, msgpack_module_globals_table); +static MP_DEFINE_CONST_DICT(msgpack_module_globals, msgpack_module_globals_table); const mp_obj_module_t msgpack_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/neopixel_write/__init__.c b/shared-bindings/neopixel_write/__init__.c index f3e953046a87..9f221ddd5ac1 100644 --- a/shared-bindings/neopixel_write/__init__.c +++ b/shared-bindings/neopixel_write/__init__.c @@ -47,7 +47,7 @@ // But the ports vary based on implementation considerations; the proof is in the testing. // https://adafru.it/5225 is more sensitive to timing and should be included in testing. -STATIC void check_for_deinit(digitalio_digitalinout_obj_t *self) { +static void check_for_deinit(digitalio_digitalinout_obj_t *self) { if (common_hal_digitalio_digitalinout_deinited(self)) { raise_deinited_error(); } @@ -92,7 +92,7 @@ STATIC void check_for_deinit(digitalio_digitalinout_obj_t *self) { //| """ //| ... //| -STATIC mp_obj_t neopixel_write_neopixel_write_(mp_obj_t digitalinout_obj, mp_obj_t buf) { +static mp_obj_t neopixel_write_neopixel_write_(mp_obj_t digitalinout_obj, mp_obj_t buf) { const digitalio_digitalinout_obj_t *digitalinout = mp_arg_validate_type(digitalinout_obj, &digitalio_digitalinout_type, MP_QSTR_digitalinout); @@ -105,14 +105,14 @@ STATIC mp_obj_t neopixel_write_neopixel_write_(mp_obj_t digitalinout_obj, mp_obj common_hal_neopixel_write(digitalinout, (uint8_t *)bufinfo.buf, bufinfo.len); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(neopixel_write_neopixel_write_obj, neopixel_write_neopixel_write_); +static MP_DEFINE_CONST_FUN_OBJ_2(neopixel_write_neopixel_write_obj, neopixel_write_neopixel_write_); -STATIC const mp_rom_map_elem_t neopixel_write_module_globals_table[] = { +static const mp_rom_map_elem_t neopixel_write_module_globals_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_neopixel_write) }, { MP_OBJ_NEW_QSTR(MP_QSTR_neopixel_write), (mp_obj_t)&neopixel_write_neopixel_write_obj }, }; -STATIC MP_DEFINE_CONST_DICT(neopixel_write_module_globals, neopixel_write_module_globals_table); +static MP_DEFINE_CONST_DICT(neopixel_write_module_globals, neopixel_write_module_globals_table); const mp_obj_module_t neopixel_write_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/nvm/ByteArray.c b/shared-bindings/nvm/ByteArray.c index 9a37f4bc90eb..7549023247ec 100644 --- a/shared-bindings/nvm/ByteArray.c +++ b/shared-bindings/nvm/ByteArray.c @@ -31,7 +31,7 @@ //| def __len__(self) -> int: //| """Return the length. This is used by (`len`)""" //| ... -STATIC mp_obj_t nvm_bytearray_unary_op(mp_unary_op_t op, mp_obj_t self_in) { +static mp_obj_t nvm_bytearray_unary_op(mp_unary_op_t op, mp_obj_t self_in) { nvm_bytearray_obj_t *self = MP_OBJ_TO_PTR(self_in); uint16_t len = common_hal_nvm_bytearray_get_length(self); switch (op) { @@ -44,10 +44,10 @@ STATIC mp_obj_t nvm_bytearray_unary_op(mp_unary_op_t op, mp_obj_t self_in) { } } -STATIC const mp_rom_map_elem_t nvm_bytearray_locals_dict_table[] = { +static const mp_rom_map_elem_t nvm_bytearray_locals_dict_table[] = { }; -STATIC MP_DEFINE_CONST_DICT(nvm_bytearray_locals_dict, nvm_bytearray_locals_dict_table); +static MP_DEFINE_CONST_DICT(nvm_bytearray_locals_dict, nvm_bytearray_locals_dict_table); //| @overload //| def __getitem__(self, index: slice) -> bytearray: ... @@ -63,7 +63,7 @@ STATIC MP_DEFINE_CONST_DICT(nvm_bytearray_locals_dict, nvm_bytearray_locals_dict //| """Set the value at the given index.""" //| ... //| -STATIC mp_obj_t nvm_bytearray_subscr(mp_obj_t self_in, mp_obj_t index_in, mp_obj_t value) { +static mp_obj_t nvm_bytearray_subscr(mp_obj_t self_in, mp_obj_t index_in, mp_obj_t value) { if (value == MP_OBJ_NULL) { // delete item // slice deletion diff --git a/shared-bindings/nvm/__init__.c b/shared-bindings/nvm/__init__.c index 6402612df439..c86862f48172 100644 --- a/shared-bindings/nvm/__init__.c +++ b/shared-bindings/nvm/__init__.c @@ -19,12 +19,12 @@ //| Note that this module can't be imported and used directly. The sole //| instance of :class:`ByteArray` is available at //| :attr:`microcontroller.nvm`.""" -STATIC const mp_rom_map_elem_t nvm_module_globals_table[] = { +static const mp_rom_map_elem_t nvm_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_nvm) }, { MP_ROM_QSTR(MP_QSTR_ByteArray), MP_ROM_PTR(&nvm_bytearray_type) }, }; -STATIC MP_DEFINE_CONST_DICT(nvm_module_globals, nvm_module_globals_table); +static MP_DEFINE_CONST_DICT(nvm_module_globals, nvm_module_globals_table); const mp_obj_module_t nvm_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/onewireio/OneWire.c b/shared-bindings/onewireio/OneWire.c index d2d525dc0ba2..d2cb379ab4f8 100644 --- a/shared-bindings/onewireio/OneWire.c +++ b/shared-bindings/onewireio/OneWire.c @@ -32,7 +32,7 @@ //| onewire.write_bit(False) //| print(onewire.read_bit())""" //| ... -STATIC mp_obj_t onewireio_onewire_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t onewireio_onewire_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_pin }; static const mp_arg_t allowed_args[] = { { MP_QSTR_pin, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -50,14 +50,14 @@ STATIC mp_obj_t onewireio_onewire_make_new(const mp_obj_type_t *type, size_t n_a //| def deinit(self) -> None: //| """Deinitialize the OneWire bus and release any hardware resources for reuse.""" //| ... -STATIC mp_obj_t onewireio_onewire_deinit(mp_obj_t self_in) { +static mp_obj_t onewireio_onewire_deinit(mp_obj_t self_in) { onewireio_onewire_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_onewireio_onewire_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(onewireio_onewire_deinit_obj, onewireio_onewire_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(onewireio_onewire_deinit_obj, onewireio_onewire_deinit); -STATIC void check_for_deinit(onewireio_onewire_obj_t *self) { +static void check_for_deinit(onewireio_onewire_obj_t *self) { if (common_hal_onewireio_onewire_deinited(self)) { raise_deinited_error(); } @@ -72,12 +72,12 @@ STATIC void check_for_deinit(onewireio_onewire_obj_t *self) { //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t onewireio_onewire_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t onewireio_onewire_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_onewireio_onewire_deinit(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(onewireio_onewire___exit___obj, 4, 4, onewireio_onewire_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(onewireio_onewire___exit___obj, 4, 4, onewireio_onewire_obj___exit__); //| def reset(self) -> bool: //| """Reset the OneWire bus and read presence @@ -85,7 +85,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(onewireio_onewire___exit___obj, 4, 4, //| :returns: False when at least one device is present //| :rtype: bool""" //| ... -STATIC mp_obj_t onewireio_onewire_obj_reset(mp_obj_t self_in) { +static mp_obj_t onewireio_onewire_obj_reset(mp_obj_t self_in) { onewireio_onewire_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -99,7 +99,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(onewireio_onewire_reset_obj, onewireio_onewire_obj_res //| :returns: bit state read //| :rtype: bool""" //| ... -STATIC mp_obj_t onewireio_onewire_obj_read_bit(mp_obj_t self_in) { +static mp_obj_t onewireio_onewire_obj_read_bit(mp_obj_t self_in) { onewireio_onewire_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -111,7 +111,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(onewireio_onewire_read_bit_obj, onewireio_onewire_obj_ //| """Write out a bit based on value.""" //| ... //| -STATIC mp_obj_t onewireio_onewire_obj_write_bit(mp_obj_t self_in, mp_obj_t bool_obj) { +static mp_obj_t onewireio_onewire_obj_write_bit(mp_obj_t self_in, mp_obj_t bool_obj) { onewireio_onewire_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -120,7 +120,7 @@ STATIC mp_obj_t onewireio_onewire_obj_write_bit(mp_obj_t self_in, mp_obj_t bool_ } MP_DEFINE_CONST_FUN_OBJ_2(onewireio_onewire_write_bit_obj, onewireio_onewire_obj_write_bit); -STATIC const mp_rom_map_elem_t onewireio_onewire_locals_dict_table[] = { +static const mp_rom_map_elem_t onewireio_onewire_locals_dict_table[] = { // Methods { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&onewireio_onewire_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, @@ -129,7 +129,7 @@ STATIC const mp_rom_map_elem_t onewireio_onewire_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_read_bit), MP_ROM_PTR(&onewireio_onewire_read_bit_obj) }, { MP_ROM_QSTR(MP_QSTR_write_bit), MP_ROM_PTR(&onewireio_onewire_write_bit_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(onewireio_onewire_locals_dict, onewireio_onewire_locals_dict_table); +static MP_DEFINE_CONST_DICT(onewireio_onewire_locals_dict, onewireio_onewire_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( onewireio_onewire_type, diff --git a/shared-bindings/onewireio/__init__.c b/shared-bindings/onewireio/__init__.c index f4c8f9fea929..bce56326b1ad 100644 --- a/shared-bindings/onewireio/__init__.c +++ b/shared-bindings/onewireio/__init__.c @@ -19,12 +19,12 @@ //| //| Protocol definition is here: https://www.analog.com/en/technical-articles/1wire-communication-through-software.html""" -STATIC const mp_rom_map_elem_t onewireio_module_globals_table[] = { +static const mp_rom_map_elem_t onewireio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_onewireio) }, { MP_ROM_QSTR(MP_QSTR_OneWire), MP_ROM_PTR(&onewireio_onewire_type) }, }; -STATIC MP_DEFINE_CONST_DICT(onewireio_module_globals, onewireio_module_globals_table); +static MP_DEFINE_CONST_DICT(onewireio_module_globals, onewireio_module_globals_table); const mp_obj_module_t onewireio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/os/__init__.c b/shared-bindings/os/__init__.c index 1ebd7faa701a..37dea4290759 100644 --- a/shared-bindings/os/__init__.c +++ b/shared-bindings/os/__init__.c @@ -41,16 +41,16 @@ //| version: str //| machine: str //| -STATIC mp_obj_t os_uname(void) { +static mp_obj_t os_uname(void) { return common_hal_os_uname(); } -STATIC MP_DEFINE_CONST_FUN_OBJ_0(os_uname_obj, os_uname); +static MP_DEFINE_CONST_FUN_OBJ_0(os_uname_obj, os_uname); //| def chdir(path: str) -> None: //| """Change current directory.""" //| ... //| -STATIC mp_obj_t os_chdir(mp_obj_t path_in) { +static mp_obj_t os_chdir(mp_obj_t path_in) { const char *path = mp_obj_str_get_str(path_in); common_hal_os_chdir(path); return mp_const_none; @@ -61,7 +61,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(os_chdir_obj, os_chdir); //| """Get the current directory.""" //| ... //| -STATIC mp_obj_t os_getcwd(void) { +static mp_obj_t os_getcwd(void) { return common_hal_os_getcwd(); } MP_DEFINE_CONST_FUN_OBJ_0(os_getcwd_obj, os_getcwd); @@ -89,7 +89,7 @@ MP_DEFINE_CONST_FUN_OBJ_0(os_getcwd_obj, os_getcwd); //| """ //| ... //| -STATIC mp_obj_t os_getenv(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t os_getenv(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { #if CIRCUITPY_OS_GETENV enum { ARG_key, ARG_default }; static const mp_arg_t allowed_args[] = { @@ -104,13 +104,13 @@ STATIC mp_obj_t os_getenv(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_ mp_raise_NotImplementedError(NULL); #endif } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(os_getenv_obj, 1, os_getenv); +static MP_DEFINE_CONST_FUN_OBJ_KW(os_getenv_obj, 1, os_getenv); //| def listdir(dir: str) -> str: //| """With no argument, list the current directory. Otherwise list the given directory.""" //| ... //| -STATIC mp_obj_t os_listdir(size_t n_args, const mp_obj_t *args) { +static mp_obj_t os_listdir(size_t n_args, const mp_obj_t *args) { const char *path; if (n_args == 1) { path = mp_obj_str_get_str(args[0]); @@ -125,7 +125,7 @@ MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(os_listdir_obj, 0, 1, os_listdir); //| """Create a new directory.""" //| ... //| -STATIC mp_obj_t os_mkdir(mp_obj_t path_in) { +static mp_obj_t os_mkdir(mp_obj_t path_in) { const char *path = mp_obj_str_get_str(path_in); common_hal_os_mkdir(path); return mp_const_none; @@ -136,7 +136,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(os_mkdir_obj, os_mkdir); //| """Remove a file.""" //| ... //| -STATIC mp_obj_t os_remove(mp_obj_t path_in) { +static mp_obj_t os_remove(mp_obj_t path_in) { const char *path = mp_obj_str_get_str(path_in); common_hal_os_remove(path); return mp_const_none; @@ -147,7 +147,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(os_remove_obj, os_remove); //| """Remove a directory.""" //| ... //| -STATIC mp_obj_t os_rename(mp_obj_t old_path_in, mp_obj_t new_path_in) { +static mp_obj_t os_rename(mp_obj_t old_path_in, mp_obj_t new_path_in) { const char *old_path = mp_obj_str_get_str(old_path_in); const char *new_path = mp_obj_str_get_str(new_path_in); common_hal_os_rename(old_path, new_path); @@ -159,7 +159,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(os_rename_obj, os_rename); //| """Rename a file.""" //| ... //| -STATIC mp_obj_t os_rmdir(mp_obj_t path_in) { +static mp_obj_t os_rmdir(mp_obj_t path_in) { const char *path = mp_obj_str_get_str(path_in); common_hal_os_rmdir(path); return mp_const_none; @@ -189,7 +189,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(os_rmdir_obj, os_rmdir); //| which is the number of seconds corresponding to 1999-12-31.""" //| ... //| -STATIC mp_obj_t os_stat(mp_obj_t path_in) { +static mp_obj_t os_stat(mp_obj_t path_in) { const char *path = mp_obj_str_get_str(path_in); return common_hal_os_stat(path); } @@ -216,7 +216,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(os_stat_obj, os_stat); //| in a port-specific implementation.""" //| ... //| -STATIC mp_obj_t os_statvfs(mp_obj_t path_in) { +static mp_obj_t os_statvfs(mp_obj_t path_in) { const char *path = mp_obj_str_get_str(path_in); return common_hal_os_statvfs(path); } @@ -226,7 +226,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(os_statvfs_obj, os_statvfs); //| """Sync all filesystems.""" //| ... //| -STATIC mp_obj_t os_sync(void) { +static mp_obj_t os_sync(void) { for (mp_vfs_mount_t *vfs = MP_STATE_VM(vfs_mount_table); vfs != NULL; vfs = vfs->next) { // this assumes that vfs->obj is fs_user_mount_t with block device functions disk_ioctl(MP_OBJ_TO_PTR(vfs->obj), CTRL_SYNC, NULL); @@ -243,7 +243,7 @@ MP_DEFINE_CONST_FUN_OBJ_0(os_sync_obj, os_sync); //| """ //| ... //| -STATIC mp_obj_t os_urandom(mp_obj_t size_in) { +static mp_obj_t os_urandom(mp_obj_t size_in) { mp_int_t size = mp_obj_get_int(size_in); mp_obj_str_t *result = MP_OBJ_TO_PTR(mp_obj_new_bytes_of_zeros(size)); if (!common_hal_os_urandom((uint8_t *)result->data, size)) { @@ -257,14 +257,14 @@ MP_DEFINE_CONST_FUN_OBJ_1(os_urandom_obj, os_urandom); //| """Change the timestamp of a file.""" //| ... //| -STATIC mp_obj_t os_utime(mp_obj_t path_in, mp_obj_t times_in) { +static mp_obj_t os_utime(mp_obj_t path_in, mp_obj_t times_in) { const char *path = mp_obj_str_get_str(path_in); common_hal_os_utime(path, times_in); return mp_const_none; } MP_DEFINE_CONST_FUN_OBJ_2(os_utime_obj, os_utime); -STATIC const mp_rom_map_elem_t os_module_globals_table[] = { +static const mp_rom_map_elem_t os_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_os) }, { MP_ROM_QSTR(MP_QSTR_uname), MP_ROM_PTR(&os_uname_obj) }, @@ -291,7 +291,7 @@ STATIC const mp_rom_map_elem_t os_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_sep), MP_ROM_QSTR(MP_QSTR__slash_) }, }; -STATIC MP_DEFINE_CONST_DICT(os_module_globals, os_module_globals_table); +static MP_DEFINE_CONST_DICT(os_module_globals, os_module_globals_table); const mp_obj_module_t os_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/paralleldisplaybus/ParallelBus.c b/shared-bindings/paralleldisplaybus/ParallelBus.c index 7c3146e98f20..0a674920a0c3 100644 --- a/shared-bindings/paralleldisplaybus/ParallelBus.c +++ b/shared-bindings/paralleldisplaybus/ParallelBus.c @@ -49,7 +49,7 @@ //| :param microcontroller.Pin reset: Reset pin, optional //| :param int frequency: The communication frequency in Hz for the display on the bus""" //| ... -STATIC mp_obj_t paralleldisplaybus_parallelbus_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t paralleldisplaybus_parallelbus_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_data0, ARG_data_pins, ARG_command, ARG_chip_select, ARG_write, ARG_read, ARG_reset, ARG_frequency }; static const mp_arg_t allowed_args[] = { { MP_QSTR_data0, MP_ARG_OBJ | MP_ARG_KW_ONLY, {.u_obj = mp_const_none } }, @@ -97,7 +97,7 @@ STATIC mp_obj_t paralleldisplaybus_parallelbus_make_new(const mp_obj_type_t *typ //| is available.""" //| ... -STATIC mp_obj_t paralleldisplaybus_parallelbus_obj_reset(mp_obj_t self_in) { +static mp_obj_t paralleldisplaybus_parallelbus_obj_reset(mp_obj_t self_in) { paralleldisplaybus_parallelbus_obj_t *self = self_in; if (!common_hal_paralleldisplaybus_parallelbus_reset(self)) { @@ -112,7 +112,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(paralleldisplaybus_parallelbus_reset_obj, paralleldisp //| vertical scroll, set via ``send`` may or may not be reset once the code is done.""" //| ... //| -STATIC mp_obj_t paralleldisplaybus_parallelbus_obj_send(mp_obj_t self, mp_obj_t command_obj, mp_obj_t data_obj) { +static mp_obj_t paralleldisplaybus_parallelbus_obj_send(mp_obj_t self, mp_obj_t command_obj, mp_obj_t data_obj) { mp_int_t command_int = mp_arg_validate_int_range(mp_obj_get_int(command_obj), 0, 255, MP_QSTR_command); uint8_t command = command_int; @@ -131,11 +131,11 @@ STATIC mp_obj_t paralleldisplaybus_parallelbus_obj_send(mp_obj_t self, mp_obj_t } MP_DEFINE_CONST_FUN_OBJ_3(paralleldisplaybus_parallelbus_send_obj, paralleldisplaybus_parallelbus_obj_send); -STATIC const mp_rom_map_elem_t paralleldisplaybus_parallelbus_locals_dict_table[] = { +static const mp_rom_map_elem_t paralleldisplaybus_parallelbus_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_reset), MP_ROM_PTR(¶lleldisplaybus_parallelbus_reset_obj) }, { MP_ROM_QSTR(MP_QSTR_send), MP_ROM_PTR(¶lleldisplaybus_parallelbus_send_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(paralleldisplaybus_parallelbus_locals_dict, paralleldisplaybus_parallelbus_locals_dict_table); +static MP_DEFINE_CONST_DICT(paralleldisplaybus_parallelbus_locals_dict, paralleldisplaybus_parallelbus_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( paralleldisplaybus_parallelbus_type, diff --git a/shared-bindings/paralleldisplaybus/__init__.c b/shared-bindings/paralleldisplaybus/__init__.c index 76c403602370..24d968c9e311 100644 --- a/shared-bindings/paralleldisplaybus/__init__.c +++ b/shared-bindings/paralleldisplaybus/__init__.c @@ -16,12 +16,12 @@ //| """Native helpers for driving parallel displays""" -STATIC const mp_rom_map_elem_t paralleldisplaybus_module_globals_table[] = { +static const mp_rom_map_elem_t paralleldisplaybus_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_paralleldisplaybus) }, { MP_ROM_QSTR(MP_QSTR_ParallelBus), MP_ROM_PTR(¶lleldisplaybus_parallelbus_type) }, }; -STATIC MP_DEFINE_CONST_DICT(paralleldisplaybus_module_globals, paralleldisplaybus_module_globals_table); +static MP_DEFINE_CONST_DICT(paralleldisplaybus_module_globals, paralleldisplaybus_module_globals_table); const mp_obj_module_t paralleldisplaybus_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/ps2io/Ps2.c b/shared-bindings/ps2io/Ps2.c index 83791d6596a7..f92d5f0dd88c 100644 --- a/shared-bindings/ps2io/Ps2.c +++ b/shared-bindings/ps2io/Ps2.c @@ -44,7 +44,7 @@ //| print(kbd.sendcmd(0xed)) //| print(kbd.sendcmd(0x01))""" //| ... -STATIC mp_obj_t ps2io_ps2_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t ps2io_ps2_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_data_pin, ARG_clock_pin }; static const mp_arg_t allowed_args[] = { { MP_QSTR_data_pin, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -66,14 +66,14 @@ STATIC mp_obj_t ps2io_ps2_make_new(const mp_obj_type_t *type, size_t n_args, siz //| def deinit(self) -> None: //| """Deinitialises the Ps2 and releases any hardware resources for reuse.""" //| ... -STATIC mp_obj_t ps2io_ps2_deinit(mp_obj_t self_in) { +static mp_obj_t ps2io_ps2_deinit(mp_obj_t self_in) { ps2io_ps2_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_ps2io_ps2_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(ps2io_ps2_deinit_obj, ps2io_ps2_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(ps2io_ps2_deinit_obj, ps2io_ps2_deinit); -STATIC void check_for_deinit(ps2io_ps2_obj_t *self) { +static void check_for_deinit(ps2io_ps2_obj_t *self) { if (common_hal_ps2io_ps2_deinited(self)) { raise_deinited_error(); } @@ -88,19 +88,19 @@ STATIC void check_for_deinit(ps2io_ps2_obj_t *self) { //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t ps2io_ps2_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t ps2io_ps2_obj___exit__(size_t n_args, const mp_obj_t *args) { mp_check_self(mp_obj_is_type(args[0], &ps2io_ps2_type)); ps2io_ps2_obj_t *self = MP_OBJ_TO_PTR(args[0]); common_hal_ps2io_ps2_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(ps2io_ps2___exit___obj, 4, 4, ps2io_ps2_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(ps2io_ps2___exit___obj, 4, 4, ps2io_ps2_obj___exit__); //| def popleft(self) -> int: //| """Removes and returns the oldest received byte. When buffer //| is empty, raises an IndexError exception.""" //| ... -STATIC mp_obj_t ps2io_ps2_obj_popleft(mp_obj_t self_in) { +static mp_obj_t ps2io_ps2_obj_popleft(mp_obj_t self_in) { ps2io_ps2_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -124,7 +124,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(ps2io_ps2_popleft_obj, ps2io_ps2_obj_popleft); //| //| :param int byte: byte value of the command""" //| ... -STATIC mp_obj_t ps2io_ps2_obj_sendcmd(mp_obj_t self_in, mp_obj_t ob) { +static mp_obj_t ps2io_ps2_obj_sendcmd(mp_obj_t self_in, mp_obj_t ob) { ps2io_ps2_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); mp_int_t cmd = mp_obj_get_int(ob) & 0xff; @@ -165,7 +165,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(ps2io_ps2_sendcmd_obj, ps2io_ps2_obj_sendcmd); //| //| 0x2000: device didn't send a response byte in time""" //| ... -STATIC mp_obj_t ps2io_ps2_obj_clear_errors(mp_obj_t self_in) { +static mp_obj_t ps2io_ps2_obj_clear_errors(mp_obj_t self_in) { ps2io_ps2_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -179,7 +179,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(ps2io_ps2_clear_errors_obj, ps2io_ps2_obj_clear_errors //| to :py:func:`popleft()`.""" //| ... //| -STATIC mp_obj_t ps2_unary_op(mp_unary_op_t op, mp_obj_t self_in) { +static mp_obj_t ps2_unary_op(mp_unary_op_t op, mp_obj_t self_in) { ps2io_ps2_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); uint16_t len = common_hal_ps2io_ps2_get_len(self); @@ -193,7 +193,7 @@ STATIC mp_obj_t ps2_unary_op(mp_unary_op_t op, mp_obj_t self_in) { } } -STATIC const mp_rom_map_elem_t ps2io_ps2_locals_dict_table[] = { +static const mp_rom_map_elem_t ps2io_ps2_locals_dict_table[] = { // Methods { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&ps2io_ps2_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, @@ -202,7 +202,7 @@ STATIC const mp_rom_map_elem_t ps2io_ps2_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_sendcmd), MP_ROM_PTR(&ps2io_ps2_sendcmd_obj) }, { MP_ROM_QSTR(MP_QSTR_clear_errors), MP_ROM_PTR(&ps2io_ps2_clear_errors_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(ps2io_ps2_locals_dict, ps2io_ps2_locals_dict_table); +static MP_DEFINE_CONST_DICT(ps2io_ps2_locals_dict, ps2io_ps2_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( ps2io_ps2_type, diff --git a/shared-bindings/ps2io/__init__.c b/shared-bindings/ps2io/__init__.c index a23f803cb6a6..3d345ec1d2f8 100644 --- a/shared-bindings/ps2io/__init__.c +++ b/shared-bindings/ps2io/__init__.c @@ -25,12 +25,12 @@ //| call :py:meth:`!deinit` or use a context manager. See //| :ref:`lifetime-and-contextmanagers` for more info.""" -STATIC const mp_rom_map_elem_t ps2io_module_globals_table[] = { +static const mp_rom_map_elem_t ps2io_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_ps2io) }, { MP_ROM_QSTR(MP_QSTR_Ps2), MP_ROM_PTR(&ps2io_ps2_type) }, }; -STATIC MP_DEFINE_CONST_DICT(ps2io_module_globals, ps2io_module_globals_table); +static MP_DEFINE_CONST_DICT(ps2io_module_globals, ps2io_module_globals_table); const mp_obj_module_t ps2io_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/pulseio/PulseIn.c b/shared-bindings/pulseio/PulseIn.c index ba48d242694a..38b63873c70f 100644 --- a/shared-bindings/pulseio/PulseIn.c +++ b/shared-bindings/pulseio/PulseIn.c @@ -56,7 +56,7 @@ //| # Resume with an 80 microsecond active pulse //| pulses.resume(80)""" //| ... -STATIC mp_obj_t pulseio_pulsein_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t pulseio_pulsein_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_pin, ARG_maxlen, ARG_idle_state }; static const mp_arg_t allowed_args[] = { { MP_QSTR_pin, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -79,14 +79,14 @@ STATIC mp_obj_t pulseio_pulsein_make_new(const mp_obj_type_t *type, size_t n_arg //| def deinit(self) -> None: //| """Deinitialises the PulseIn and releases any hardware resources for reuse.""" //| ... -STATIC mp_obj_t pulseio_pulsein_deinit(mp_obj_t self_in) { +static mp_obj_t pulseio_pulsein_deinit(mp_obj_t self_in) { pulseio_pulsein_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_pulseio_pulsein_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(pulseio_pulsein_deinit_obj, pulseio_pulsein_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(pulseio_pulsein_deinit_obj, pulseio_pulsein_deinit); -STATIC void check_for_deinit(pulseio_pulsein_obj_t *self) { +static void check_for_deinit(pulseio_pulsein_obj_t *self) { if (common_hal_pulseio_pulsein_deinited(self)) { raise_deinited_error(); } @@ -101,17 +101,17 @@ STATIC void check_for_deinit(pulseio_pulsein_obj_t *self) { //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t pulseio_pulsein_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t pulseio_pulsein_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_pulseio_pulsein_deinit(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(pulseio_pulsein___exit___obj, 4, 4, pulseio_pulsein_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(pulseio_pulsein___exit___obj, 4, 4, pulseio_pulsein_obj___exit__); //| def pause(self) -> None: //| """Pause pulse capture""" //| ... -STATIC mp_obj_t pulseio_pulsein_obj_pause(mp_obj_t self_in) { +static mp_obj_t pulseio_pulsein_obj_pause(mp_obj_t self_in) { pulseio_pulsein_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -130,7 +130,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(pulseio_pulsein_pause_obj, pulseio_pulsein_obj_pause); //| //| :param int trigger_duration: trigger pulse duration in microseconds""" //| ... -STATIC mp_obj_t pulseio_pulsein_obj_resume(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t pulseio_pulsein_obj_resume(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_trigger_duration }; static const mp_arg_t allowed_args[] = { { MP_QSTR_trigger_duration, MP_ARG_INT, {.u_int = 0} }, @@ -149,7 +149,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(pulseio_pulsein_resume_obj, 1, pulseio_pulsein_obj_re //| def clear(self) -> None: //| """Clears all captured pulses""" //| ... -STATIC mp_obj_t pulseio_pulsein_obj_clear(mp_obj_t self_in) { +static mp_obj_t pulseio_pulsein_obj_clear(mp_obj_t self_in) { pulseio_pulsein_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -161,7 +161,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(pulseio_pulsein_clear_obj, pulseio_pulsein_obj_clear); //| def popleft(self) -> int: //| """Removes and returns the oldest read pulse duration in microseconds.""" //| ... -STATIC mp_obj_t pulseio_pulsein_obj_popleft(mp_obj_t self_in) { +static mp_obj_t pulseio_pulsein_obj_popleft(mp_obj_t self_in) { pulseio_pulsein_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -172,7 +172,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(pulseio_pulsein_popleft_obj, pulseio_pulsein_obj_pople //| maxlen: int //| """The maximum length of the PulseIn. When len() is equal to maxlen, //| it is unclear which pulses are active and which are idle.""" -STATIC mp_obj_t pulseio_pulsein_obj_get_maxlen(mp_obj_t self_in) { +static mp_obj_t pulseio_pulsein_obj_get_maxlen(mp_obj_t self_in) { pulseio_pulsein_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -186,7 +186,7 @@ MP_PROPERTY_GETTER(pulseio_pulsein_maxlen_obj, //| paused: bool //| """True when pulse capture is paused as a result of :py:func:`pause` or an error during capture //| such as a signal that is too fast.""" -STATIC mp_obj_t pulseio_pulsein_obj_get_paused(mp_obj_t self_in) { +static mp_obj_t pulseio_pulsein_obj_get_paused(mp_obj_t self_in) { pulseio_pulsein_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -206,7 +206,7 @@ MP_PROPERTY_GETTER(pulseio_pulsein_paused_obj, //| pulses = pulseio.PulseIn(pin) //| print(len(pulses))""" //| ... -STATIC mp_obj_t pulsein_unary_op(mp_unary_op_t op, mp_obj_t self_in) { +static mp_obj_t pulsein_unary_op(mp_unary_op_t op, mp_obj_t self_in) { pulseio_pulsein_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); uint16_t len = common_hal_pulseio_pulsein_get_len(self); @@ -229,7 +229,7 @@ STATIC mp_obj_t pulsein_unary_op(mp_unary_op_t op, mp_obj_t self_in) { //| print(pulses[0])""" //| ... //| -STATIC mp_obj_t pulsein_subscr(mp_obj_t self_in, mp_obj_t index_obj, mp_obj_t value) { +static mp_obj_t pulsein_subscr(mp_obj_t self_in, mp_obj_t index_obj, mp_obj_t value) { if (value == mp_const_none) { // delete item mp_raise_AttributeError(MP_ERROR_TEXT("Cannot delete values")); @@ -252,7 +252,7 @@ STATIC mp_obj_t pulsein_subscr(mp_obj_t self_in, mp_obj_t index_obj, mp_obj_t va return mp_const_none; } -STATIC const mp_rom_map_elem_t pulseio_pulsein_locals_dict_table[] = { +static const mp_rom_map_elem_t pulseio_pulsein_locals_dict_table[] = { // Methods { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&pulseio_pulsein_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&pulseio_pulsein_deinit_obj) }, @@ -267,7 +267,7 @@ STATIC const mp_rom_map_elem_t pulseio_pulsein_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_maxlen), MP_ROM_PTR(&pulseio_pulsein_maxlen_obj) }, { MP_ROM_QSTR(MP_QSTR_paused), MP_ROM_PTR(&pulseio_pulsein_paused_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(pulseio_pulsein_locals_dict, pulseio_pulsein_locals_dict_table); +static MP_DEFINE_CONST_DICT(pulseio_pulsein_locals_dict, pulseio_pulsein_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( pulseio_pulsein_type, diff --git a/shared-bindings/pulseio/PulseOut.c b/shared-bindings/pulseio/PulseOut.c index d7903af18d23..663eb1dfafe5 100644 --- a/shared-bindings/pulseio/PulseOut.c +++ b/shared-bindings/pulseio/PulseOut.c @@ -44,7 +44,7 @@ //| pulses[0] = 200 //| pulse.send(pulses)""" //| ... -STATIC mp_obj_t pulseio_pulseout_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t pulseio_pulseout_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { #if CIRCUITPY_PULSEIO_PULSEOUT enum { ARG_pin, ARG_frequency, ARG_duty_cycle}; static const mp_arg_t allowed_args[] = { @@ -72,12 +72,12 @@ STATIC mp_obj_t pulseio_pulseout_make_new(const mp_obj_type_t *type, size_t n_ar //| def deinit(self) -> None: //| """Deinitialises the PulseOut and releases any hardware resources for reuse.""" //| ... -STATIC mp_obj_t pulseio_pulseout_deinit(mp_obj_t self_in) { +static mp_obj_t pulseio_pulseout_deinit(mp_obj_t self_in) { pulseio_pulseout_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_pulseio_pulseout_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(pulseio_pulseout_deinit_obj, pulseio_pulseout_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(pulseio_pulseout_deinit_obj, pulseio_pulseout_deinit); //| def __enter__(self) -> PulseOut: //| """No-op used by Context Managers.""" @@ -88,12 +88,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(pulseio_pulseout_deinit_obj, pulseio_pulseout_d //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t pulseio_pulseout_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t pulseio_pulseout_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_pulseio_pulseout_deinit(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(pulseio_pulseout___exit___obj, 4, 4, pulseio_pulseout_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(pulseio_pulseout___exit___obj, 4, 4, pulseio_pulseout_obj___exit__); //| def send(self, pulses: ReadableBuffer) -> None: //| """Pulse alternating on and off durations in microseconds starting with on. @@ -106,7 +106,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(pulseio_pulseout___exit___obj, 4, 4, //| :param array.array pulses: pulse durations in microseconds""" //| ... //| -STATIC mp_obj_t pulseio_pulseout_obj_send(mp_obj_t self_in, mp_obj_t pulses) { +static mp_obj_t pulseio_pulseout_obj_send(mp_obj_t self_in, mp_obj_t pulses) { pulseio_pulseout_obj_t *self = MP_OBJ_TO_PTR(self_in); if (common_hal_pulseio_pulseout_deinited(self)) { raise_deinited_error(); @@ -123,7 +123,7 @@ STATIC mp_obj_t pulseio_pulseout_obj_send(mp_obj_t self_in, mp_obj_t pulses) { MP_DEFINE_CONST_FUN_OBJ_2(pulseio_pulseout_send_obj, pulseio_pulseout_obj_send); #endif // CIRCUITPY_PULSEIO_PULSEOUT -STATIC const mp_rom_map_elem_t pulseio_pulseout_locals_dict_table[] = { +static const mp_rom_map_elem_t pulseio_pulseout_locals_dict_table[] = { // Methods #if CIRCUITPY_PULSEIO_PULSEOUT { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&pulseio_pulseout_deinit_obj) }, @@ -133,7 +133,7 @@ STATIC const mp_rom_map_elem_t pulseio_pulseout_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_send), MP_ROM_PTR(&pulseio_pulseout_send_obj) }, #endif // CIRCUITPY_PULSEIO_PULSEOUT }; -STATIC MP_DEFINE_CONST_DICT(pulseio_pulseout_locals_dict, pulseio_pulseout_locals_dict_table); +static MP_DEFINE_CONST_DICT(pulseio_pulseout_locals_dict, pulseio_pulseout_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( pulseio_pulseout_type, diff --git a/shared-bindings/pulseio/__init__.c b/shared-bindings/pulseio/__init__.c index 547a78035e5a..201a8e2661c6 100644 --- a/shared-bindings/pulseio/__init__.c +++ b/shared-bindings/pulseio/__init__.c @@ -25,13 +25,13 @@ //| call :py:meth:`!deinit` or use a context manager. See //| :ref:`lifetime-and-contextmanagers` for more info.""" -STATIC const mp_rom_map_elem_t pulseio_module_globals_table[] = { +static const mp_rom_map_elem_t pulseio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_pulseio) }, { MP_ROM_QSTR(MP_QSTR_PulseIn), MP_ROM_PTR(&pulseio_pulsein_type) }, { MP_ROM_QSTR(MP_QSTR_PulseOut), MP_ROM_PTR(&pulseio_pulseout_type) }, }; -STATIC MP_DEFINE_CONST_DICT(pulseio_module_globals, pulseio_module_globals_table); +static MP_DEFINE_CONST_DICT(pulseio_module_globals, pulseio_module_globals_table); const mp_obj_module_t pulseio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/pwmio/PWMOut.c b/shared-bindings/pwmio/PWMOut.c index 7e23c4d8adbe..e312d4d8facd 100644 --- a/shared-bindings/pwmio/PWMOut.c +++ b/shared-bindings/pwmio/PWMOut.c @@ -131,7 +131,7 @@ void common_hal_pwmio_pwmout_raise_error(pwmout_result_t result) { //| //| """ //| ... -STATIC mp_obj_t pwmio_pwmout_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { +static mp_obj_t pwmio_pwmout_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { enum { ARG_pin, ARG_duty_cycle, ARG_frequency, ARG_variable_frequency }; static const mp_arg_t allowed_args[] = { { MP_QSTR_pin, MP_ARG_REQUIRED | MP_ARG_OBJ, }, @@ -160,14 +160,14 @@ STATIC mp_obj_t pwmio_pwmout_make_new(const mp_obj_type_t *type, size_t n_args, //| def deinit(self) -> None: //| """Deinitialises the PWMOut and releases any hardware resources for reuse.""" //| ... -STATIC mp_obj_t pwmio_pwmout_deinit(mp_obj_t self_in) { +static mp_obj_t pwmio_pwmout_deinit(mp_obj_t self_in) { pwmio_pwmout_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_pwmio_pwmout_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(pwmio_pwmout_deinit_obj, pwmio_pwmout_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(pwmio_pwmout_deinit_obj, pwmio_pwmout_deinit); -STATIC void check_for_deinit(pwmio_pwmout_obj_t *self) { +static void check_for_deinit(pwmio_pwmout_obj_t *self) { if (common_hal_pwmio_pwmout_deinited(self)) { raise_deinited_error(); } @@ -182,12 +182,12 @@ STATIC void check_for_deinit(pwmio_pwmout_obj_t *self) { //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t pwmio_pwmout_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t pwmio_pwmout_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_pwmio_pwmout_deinit(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(pwmio_pwmout___exit___obj, 4, 4, pwmio_pwmout_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(pwmio_pwmout___exit___obj, 4, 4, pwmio_pwmout_obj___exit__); //| duty_cycle: int //| """16 bit value that dictates how much of one cycle is high (1) versus low @@ -198,14 +198,14 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(pwmio_pwmout___exit___obj, 4, 4, pwmi //| representation for duty cycle might have less than 16 bits of resolution. //| Reading this property will return the value from the internal representation, //| so it may differ from the value set.""" -STATIC mp_obj_t pwmio_pwmout_obj_get_duty_cycle(mp_obj_t self_in) { +static mp_obj_t pwmio_pwmout_obj_get_duty_cycle(mp_obj_t self_in) { pwmio_pwmout_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_pwmio_pwmout_get_duty_cycle(self)); } MP_DEFINE_CONST_FUN_OBJ_1(pwmio_pwmout_get_duty_cycle_obj, pwmio_pwmout_obj_get_duty_cycle); -STATIC mp_obj_t pwmio_pwmout_obj_set_duty_cycle(mp_obj_t self_in, mp_obj_t duty_cycle) { +static mp_obj_t pwmio_pwmout_obj_set_duty_cycle(mp_obj_t self_in, mp_obj_t duty_cycle) { pwmio_pwmout_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); mp_int_t duty = mp_obj_get_int(duty_cycle); @@ -232,14 +232,14 @@ MP_PROPERTY_GETSET(pwmio_pwmout_duty_cycle_obj, //| to manually re-set the duty cycle. However, an output glitch may occur during the adjustment. //| """ //| -STATIC mp_obj_t pwmio_pwmout_obj_get_frequency(mp_obj_t self_in) { +static mp_obj_t pwmio_pwmout_obj_get_frequency(mp_obj_t self_in) { pwmio_pwmout_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_pwmio_pwmout_get_frequency(self)); } MP_DEFINE_CONST_FUN_OBJ_1(pwmio_pwmout_get_frequency_obj, pwmio_pwmout_obj_get_frequency); -STATIC mp_obj_t pwmio_pwmout_obj_set_frequency(mp_obj_t self_in, mp_obj_t frequency) { +static mp_obj_t pwmio_pwmout_obj_set_frequency(mp_obj_t self_in, mp_obj_t frequency) { pwmio_pwmout_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); if (!common_hal_pwmio_pwmout_get_variable_frequency(self)) { @@ -258,7 +258,7 @@ MP_PROPERTY_GETSET(pwmio_pwmout_frequency_obj, (mp_obj_t)&pwmio_pwmout_get_frequency_obj, (mp_obj_t)&pwmio_pwmout_set_frequency_obj); -STATIC const mp_rom_map_elem_t pwmio_pwmout_locals_dict_table[] = { +static const mp_rom_map_elem_t pwmio_pwmout_locals_dict_table[] = { // Methods { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&pwmio_pwmout_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&pwmio_pwmout_deinit_obj) }, @@ -271,7 +271,7 @@ STATIC const mp_rom_map_elem_t pwmio_pwmout_locals_dict_table[] = { // TODO(tannewt): Add enabled to determine whether the signal is output // without giving up the resources. Useful for IR output. }; -STATIC MP_DEFINE_CONST_DICT(pwmio_pwmout_locals_dict, pwmio_pwmout_locals_dict_table); +static MP_DEFINE_CONST_DICT(pwmio_pwmout_locals_dict, pwmio_pwmout_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( pwmio_pwmout_type, diff --git a/shared-bindings/pwmio/__init__.c b/shared-bindings/pwmio/__init__.c index ab5bf7c21fe7..4287e5373dd8 100644 --- a/shared-bindings/pwmio/__init__.c +++ b/shared-bindings/pwmio/__init__.c @@ -42,12 +42,12 @@ //| Learn guide `_. //| """ -STATIC const mp_rom_map_elem_t pwmio_module_globals_table[] = { +static const mp_rom_map_elem_t pwmio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_pwmio) }, { MP_ROM_QSTR(MP_QSTR_PWMOut), MP_ROM_PTR(&pwmio_pwmout_type) }, }; -STATIC MP_DEFINE_CONST_DICT(pwmio_module_globals, pwmio_module_globals_table); +static MP_DEFINE_CONST_DICT(pwmio_module_globals, pwmio_module_globals_table); const mp_obj_module_t pwmio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/qrio/PixelPolicy.c b/shared-bindings/qrio/PixelPolicy.c index e086f5da09ba..b8a422c40fda 100644 --- a/shared-bindings/qrio/PixelPolicy.c +++ b/shared-bindings/qrio/PixelPolicy.c @@ -39,7 +39,7 @@ MAKE_ENUM_MAP(qrio_pixel_policy) { MAKE_ENUM_MAP_ENTRY(qrio_pixel_policy, EVEN_BYTES), MAKE_ENUM_MAP_ENTRY(qrio_pixel_policy, ODD_BYTES), }; -STATIC MP_DEFINE_CONST_DICT(qrio_pixel_policy_locals_dict, qrio_pixel_policy_locals_table); +static MP_DEFINE_CONST_DICT(qrio_pixel_policy_locals_dict, qrio_pixel_policy_locals_table); MAKE_PRINTER(qrio, qrio_pixel_policy); diff --git a/shared-bindings/qrio/QRDecoder.c b/shared-bindings/qrio/QRDecoder.c index 7ef8a84fa4b3..d9a7b31708dd 100644 --- a/shared-bindings/qrio/QRDecoder.c +++ b/shared-bindings/qrio/QRDecoder.c @@ -21,7 +21,7 @@ //| """ //| ... -STATIC mp_obj_t qrio_qrdecoder_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args_in) { +static mp_obj_t qrio_qrdecoder_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args_in) { enum { ARG_width, ARG_height }; static const mp_arg_t allowed_args[] = { { MP_QSTR_width, MP_ARG_INT | MP_ARG_REQUIRED, {.u_int = 0} }, @@ -37,7 +37,7 @@ STATIC mp_obj_t qrio_qrdecoder_make_new(const mp_obj_type_t *type, size_t n_args } -STATIC void verify_buffer_size(qrio_qrdecoder_obj_t *self, mp_obj_t *buffer, size_t len, qrio_pixel_policy_t policy) { +static void verify_buffer_size(qrio_qrdecoder_obj_t *self, mp_obj_t *buffer, size_t len, qrio_pixel_policy_t policy) { int width = shared_module_qrio_qrdecoder_get_width(self); int height = shared_module_qrio_qrdecoder_get_height(self); @@ -53,7 +53,7 @@ STATIC void verify_buffer_size(qrio_qrdecoder_obj_t *self, mp_obj_t *buffer, siz //| self, buffer: ReadableBuffer, pixel_policy: PixelPolicy = PixelPolicy.EVERY_BYTE //| ) -> List[QRInfo]: //| """Decode zero or more QR codes from the given image. The size of the buffer must be at least ``length``×``width`` bytes for `EVERY_BYTE`, and 2×``length``×``width`` bytes for `EVEN_BYTES` or `ODD_BYTES`.""" -STATIC mp_obj_t qrio_qrdecoder_decode(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t qrio_qrdecoder_decode(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { qrio_qrdecoder_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); enum { ARG_buffer, ARG_pixel_policy }; @@ -78,7 +78,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(qrio_qrdecoder_decode_obj, 1, qrio_qrdecoder_decode); //| self, buffer: ReadableBuffer, pixel_policy: PixelPolicy = PixelPolicy.EVERY_BYTE //| ) -> List[QRPosition]: //| """Find all visible QR codes from the given image. The size of the buffer must be at least ``length``×``width`` bytes for `EVERY_BYTE`, and 2×``length``×``width`` bytes for `EVEN_BYTES` or `ODD_BYTES`.""" -STATIC mp_obj_t qrio_qrdecoder_find(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t qrio_qrdecoder_find(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { qrio_qrdecoder_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); enum { ARG_buffer, ARG_pixel_policy }; @@ -101,13 +101,13 @@ MP_DEFINE_CONST_FUN_OBJ_KW(qrio_qrdecoder_find_obj, 1, qrio_qrdecoder_find); //| width: int //| """The width of image the decoder expects""" -STATIC mp_obj_t qrio_qrdecoder_get_width(mp_obj_t self_in) { +static mp_obj_t qrio_qrdecoder_get_width(mp_obj_t self_in) { qrio_qrdecoder_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_int(shared_module_qrio_qrdecoder_get_width(self)); } MP_DEFINE_CONST_FUN_OBJ_1(qrio_qrdecoder_get_width_obj, qrio_qrdecoder_get_width); -STATIC mp_obj_t qrio_qrdecoder_set_width(mp_obj_t self_in, mp_obj_t width_in) { +static mp_obj_t qrio_qrdecoder_set_width(mp_obj_t self_in, mp_obj_t width_in) { qrio_qrdecoder_obj_t *self = MP_OBJ_TO_PTR(self_in); int width = mp_obj_get_int(width_in); shared_module_qrio_qrdecoder_set_width(self, width); @@ -122,13 +122,13 @@ MP_PROPERTY_GETSET(qrio_qrdecoder_width_obj, //| height: int //| """The height of image the decoder expects""" //| -STATIC mp_obj_t qrio_qrdecoder_get_height(mp_obj_t self_in) { +static mp_obj_t qrio_qrdecoder_get_height(mp_obj_t self_in) { qrio_qrdecoder_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_int(shared_module_qrio_qrdecoder_get_height(self)); } MP_DEFINE_CONST_FUN_OBJ_1(qrio_qrdecoder_get_height_obj, qrio_qrdecoder_get_height); -STATIC mp_obj_t qrio_qrdecoder_set_height(mp_obj_t self_in, mp_obj_t height_in) { +static mp_obj_t qrio_qrdecoder_set_height(mp_obj_t self_in, mp_obj_t height_in) { qrio_qrdecoder_obj_t *self = MP_OBJ_TO_PTR(self_in); int height = mp_obj_get_int(height_in); shared_module_qrio_qrdecoder_set_height(self, height); @@ -140,7 +140,7 @@ MP_PROPERTY_GETSET(qrio_qrdecoder_height_obj, (mp_obj_t)&qrio_qrdecoder_get_height_obj, (mp_obj_t)&qrio_qrdecoder_set_height_obj); -STATIC const mp_rom_map_elem_t qrio_qrdecoder_locals_table[] = { +static const mp_rom_map_elem_t qrio_qrdecoder_locals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_QRDecoder) }, { MP_ROM_QSTR(MP_QSTR_width), MP_ROM_PTR(&qrio_qrdecoder_width_obj) }, { MP_ROM_QSTR(MP_QSTR_height), MP_ROM_PTR(&qrio_qrdecoder_height_obj) }, @@ -148,7 +148,7 @@ STATIC const mp_rom_map_elem_t qrio_qrdecoder_locals_table[] = { { MP_ROM_QSTR(MP_QSTR_find), MP_ROM_PTR(&qrio_qrdecoder_find_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(qrio_qrdecoder_locals, qrio_qrdecoder_locals_table); +static MP_DEFINE_CONST_DICT(qrio_qrdecoder_locals, qrio_qrdecoder_locals_table); MP_DEFINE_CONST_OBJ_TYPE( qrio_qrdecoder_type_obj, diff --git a/shared-bindings/qrio/__init__.c b/shared-bindings/qrio/__init__.c index b3093c6b4eca..5b8f2b901ca7 100644 --- a/shared-bindings/qrio/__init__.c +++ b/shared-bindings/qrio/__init__.c @@ -21,14 +21,14 @@ //| to generate a QR code, use the //| `adafruit_miniqr library `_""" -STATIC const mp_rom_map_elem_t qrio_module_globals_table[] = { +static const mp_rom_map_elem_t qrio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_qrio) }, { MP_ROM_QSTR(MP_QSTR_QRInfo), MP_ROM_PTR(&qrio_qrinfo_type_obj) }, { MP_ROM_QSTR(MP_QSTR_QRDecoder), MP_ROM_PTR(&qrio_qrdecoder_type_obj) }, { MP_ROM_QSTR(MP_QSTR_PixelPolicy), MP_ROM_PTR(&qrio_pixel_policy_type) }, }; -STATIC MP_DEFINE_CONST_DICT(qrio_module_globals, qrio_module_globals_table); +static MP_DEFINE_CONST_DICT(qrio_module_globals, qrio_module_globals_table); const mp_obj_module_t qrio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/rainbowio/__init__.c b/shared-bindings/rainbowio/__init__.c index dc20c1416f1d..ad32f091ad1e 100644 --- a/shared-bindings/rainbowio/__init__.c +++ b/shared-bindings/rainbowio/__init__.c @@ -17,18 +17,18 @@ //| """ //| ... //| -STATIC mp_obj_t rainbowio_colorwheel(mp_obj_t n) { +static mp_obj_t rainbowio_colorwheel(mp_obj_t n) { mp_float_t f = mp_obj_get_float(n); return MP_OBJ_NEW_SMALL_INT(colorwheel(f)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(rainbowio_colorwheel_obj, rainbowio_colorwheel); +static MP_DEFINE_CONST_FUN_OBJ_1(rainbowio_colorwheel_obj, rainbowio_colorwheel); -STATIC const mp_rom_map_elem_t rainbowio_module_globals_table[] = { +static const mp_rom_map_elem_t rainbowio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_rainbowio) }, { MP_ROM_QSTR(MP_QSTR_colorwheel), MP_ROM_PTR(&rainbowio_colorwheel_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(rainbowio_module_globals, rainbowio_module_globals_table); +static MP_DEFINE_CONST_DICT(rainbowio_module_globals, rainbowio_module_globals_table); const mp_obj_module_t rainbowio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/random/__init__.c b/shared-bindings/random/__init__.c index 3185a439fe56..e255174fc1b6 100644 --- a/shared-bindings/random/__init__.c +++ b/shared-bindings/random/__init__.c @@ -33,25 +33,25 @@ //| `random` will return deterministic results afterwards.""" //| ... //| -STATIC mp_obj_t random_seed(mp_obj_t seed_in) { +static mp_obj_t random_seed(mp_obj_t seed_in) { mp_uint_t seed = mp_obj_get_int_truncated(seed_in); shared_modules_random_seed(seed); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(random_seed_obj, random_seed); +static MP_DEFINE_CONST_FUN_OBJ_1(random_seed_obj, random_seed); //| def getrandbits(k: int) -> int: //| """Returns an integer with *k* random bits.""" //| ... //| -STATIC mp_obj_t random_getrandbits(mp_obj_t num_in) { +static mp_obj_t random_getrandbits(mp_obj_t num_in) { mp_int_t n = mp_obj_get_int(num_in); if (n > 32 || n < 0) { mp_raise_ValueError(NULL); } return mp_obj_new_int_from_uint(shared_modules_random_getrandbits((uint8_t)n)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(random_getrandbits_obj, random_getrandbits); +static MP_DEFINE_CONST_FUN_OBJ_1(random_getrandbits_obj, random_getrandbits); //| @overload //| def randrange(stop: int) -> int: ... @@ -62,7 +62,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(random_getrandbits_obj, random_getrandbits); //| """Returns a randomly selected integer from ``range(start[, stop[, step]])``.""" //| ... //| -STATIC mp_obj_t random_randrange(size_t n_args, const mp_obj_t *args) { +static mp_obj_t random_randrange(size_t n_args, const mp_obj_t *args) { mp_int_t start = 0; mp_int_t stop = mp_obj_get_int(args[0]); mp_int_t step = 1; @@ -98,14 +98,14 @@ STATIC mp_obj_t random_randrange(size_t n_args, const mp_obj_t *args) { return mp_obj_new_int(shared_modules_random_randrange(start, stop, step)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(random_randrange_obj, 1, 3, random_randrange); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(random_randrange_obj, 1, 3, random_randrange); //| def randint(a: int, b: int) -> int: //| """Returns a randomly selected integer between a and b inclusive. Equivalent //| to ``randrange(a, b + 1, 1)``""" //| ... //| -STATIC mp_obj_t random_randint(mp_obj_t a_in, mp_obj_t b_in) { +static mp_obj_t random_randint(mp_obj_t a_in, mp_obj_t b_in) { mp_int_t a = mp_obj_get_int(a_in); mp_int_t b = mp_obj_get_int(b_in); if (a > b) { @@ -113,44 +113,44 @@ STATIC mp_obj_t random_randint(mp_obj_t a_in, mp_obj_t b_in) { } return mp_obj_new_int(shared_modules_random_randrange(a, b + 1, 1)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(random_randint_obj, random_randint); +static MP_DEFINE_CONST_FUN_OBJ_2(random_randint_obj, random_randint); //| def choice(seq: Sequence[_T]) -> _T: //| """Returns a randomly selected element from the given sequence. Raises //| IndexError when the sequence is empty.""" //| ... //| -STATIC mp_obj_t random_choice(mp_obj_t seq) { +static mp_obj_t random_choice(mp_obj_t seq) { mp_int_t len = mp_obj_get_int(mp_obj_len(seq)); if (len == 0) { mp_raise_IndexError(MP_ERROR_TEXT("empty sequence")); } return mp_obj_subscr(seq, mp_obj_new_int(shared_modules_random_randrange(0, len, 1)), MP_OBJ_SENTINEL); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(random_choice_obj, random_choice); +static MP_DEFINE_CONST_FUN_OBJ_1(random_choice_obj, random_choice); //| def random() -> float: //| """Returns a random float between 0 and 1.0.""" //| ... //| -STATIC mp_obj_t random_random(void) { +static mp_obj_t random_random(void) { return mp_obj_new_float(shared_modules_random_random()); } -STATIC MP_DEFINE_CONST_FUN_OBJ_0(random_random_obj, random_random); +static MP_DEFINE_CONST_FUN_OBJ_0(random_random_obj, random_random); //| def uniform(a: float, b: float) -> float: //| """Returns a random float between a and b. It may or may not be inclusive //| depending on float rounding.""" //| ... //| -STATIC mp_obj_t random_uniform(mp_obj_t a_in, mp_obj_t b_in) { +static mp_obj_t random_uniform(mp_obj_t a_in, mp_obj_t b_in) { mp_float_t a = mp_obj_get_float(a_in); mp_float_t b = mp_obj_get_float(b_in); return mp_obj_new_float(shared_modules_random_uniform(a, b)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(random_uniform_obj, random_uniform); +static MP_DEFINE_CONST_FUN_OBJ_2(random_uniform_obj, random_uniform); -STATIC const mp_rom_map_elem_t mp_module_random_globals_table[] = { +static const mp_rom_map_elem_t mp_module_random_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_random) }, { MP_ROM_QSTR(MP_QSTR_seed), MP_ROM_PTR(&random_seed_obj) }, { MP_ROM_QSTR(MP_QSTR_getrandbits), MP_ROM_PTR(&random_getrandbits_obj) }, @@ -161,7 +161,7 @@ STATIC const mp_rom_map_elem_t mp_module_random_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_uniform), MP_ROM_PTR(&random_uniform_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(mp_module_random_globals, mp_module_random_globals_table); +static MP_DEFINE_CONST_DICT(mp_module_random_globals, mp_module_random_globals_table); const mp_obj_module_t random_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/rgbmatrix/RGBMatrix.c b/shared-bindings/rgbmatrix/RGBMatrix.c index b602e8468bbe..bb4b5093330e 100644 --- a/shared-bindings/rgbmatrix/RGBMatrix.c +++ b/shared-bindings/rgbmatrix/RGBMatrix.c @@ -24,24 +24,24 @@ extern Protomatter_core *_PM_protoPtr; -STATIC uint8_t validate_pin(mp_obj_t obj, qstr arg_name) { +static uint8_t validate_pin(mp_obj_t obj, qstr arg_name) { const mcu_pin_obj_t *result = validate_obj_is_free_pin(obj, arg_name); return common_hal_mcu_pin_number(result); } -STATIC void claim_and_never_reset_pin(mp_obj_t pin) { +static void claim_and_never_reset_pin(mp_obj_t pin) { common_hal_mcu_pin_claim(pin); common_hal_never_reset_pin(pin); } -STATIC void claim_and_never_reset_pins(mp_obj_t seq) { +static void claim_and_never_reset_pins(mp_obj_t seq) { mp_int_t len = MP_OBJ_SMALL_INT_VALUE(mp_obj_len(seq)); for (mp_int_t i = 0; i < len; i++) { claim_and_never_reset_pin(mp_obj_subscr(seq, MP_OBJ_NEW_SMALL_INT(i), MP_OBJ_SENTINEL)); } } -STATIC void preflight_pins_or_throw(uint8_t clock_pin, uint8_t *rgb_pins, uint8_t rgb_pin_count, bool allow_inefficient) { +static void preflight_pins_or_throw(uint8_t clock_pin, uint8_t *rgb_pins, uint8_t rgb_pin_count, bool allow_inefficient) { if (rgb_pin_count <= 0 || rgb_pin_count % 6 != 0 || rgb_pin_count > 30) { mp_raise_ValueError_varg(MP_ERROR_TEXT("The length of rgb_pins must be 6, 12, 18, 24, or 30")); } @@ -194,7 +194,7 @@ STATIC void preflight_pins_or_throw(uint8_t clock_pin, uint8_t *rgb_pins, uint8_ //| :param int height: The optional overall height of the whole matrix in pixels. This value is not required because it can be calculated as described above. //| """ -STATIC mp_obj_t rgbmatrix_rgbmatrix_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t rgbmatrix_rgbmatrix_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_width, ARG_bit_depth, ARG_rgb_list, ARG_addr_list, ARG_clock_pin, ARG_latch_pin, ARG_output_enable_pin, ARG_doublebuffer, ARG_framebuffer, ARG_height, ARG_tile, ARG_serpentine }; static const mp_arg_t allowed_args[] = { @@ -269,13 +269,13 @@ STATIC mp_obj_t rgbmatrix_rgbmatrix_make_new(const mp_obj_type_t *type, size_t n //| rgbmatrix instance. After deinitialization, no further operations //| may be performed.""" //| ... -STATIC mp_obj_t rgbmatrix_rgbmatrix_deinit(mp_obj_t self_in) { +static mp_obj_t rgbmatrix_rgbmatrix_deinit(mp_obj_t self_in) { rgbmatrix_rgbmatrix_obj_t *self = (rgbmatrix_rgbmatrix_obj_t *)self_in; common_hal_rgbmatrix_rgbmatrix_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(rgbmatrix_rgbmatrix_deinit_obj, rgbmatrix_rgbmatrix_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(rgbmatrix_rgbmatrix_deinit_obj, rgbmatrix_rgbmatrix_deinit); static void check_for_deinit(rgbmatrix_rgbmatrix_obj_t *self) { if (!self->protomatter.rgbPins) { @@ -286,14 +286,14 @@ static void check_for_deinit(rgbmatrix_rgbmatrix_obj_t *self) { //| brightness: float //| """In the current implementation, 0.0 turns the display off entirely //| and any other value up to 1.0 turns the display on fully.""" -STATIC mp_obj_t rgbmatrix_rgbmatrix_get_brightness(mp_obj_t self_in) { +static mp_obj_t rgbmatrix_rgbmatrix_get_brightness(mp_obj_t self_in) { rgbmatrix_rgbmatrix_obj_t *self = (rgbmatrix_rgbmatrix_obj_t *)self_in; check_for_deinit(self); return mp_obj_new_float(common_hal_rgbmatrix_rgbmatrix_get_paused(self)? 0.0f : 1.0f); } MP_DEFINE_CONST_FUN_OBJ_1(rgbmatrix_rgbmatrix_get_brightness_obj, rgbmatrix_rgbmatrix_get_brightness); -STATIC mp_obj_t rgbmatrix_rgbmatrix_set_brightness(mp_obj_t self_in, mp_obj_t value_in) { +static mp_obj_t rgbmatrix_rgbmatrix_set_brightness(mp_obj_t self_in, mp_obj_t value_in) { rgbmatrix_rgbmatrix_obj_t *self = (rgbmatrix_rgbmatrix_obj_t *)self_in; check_for_deinit(self); mp_float_t brightness = mp_obj_get_float(value_in); @@ -314,7 +314,7 @@ MP_PROPERTY_GETSET(rgbmatrix_rgbmatrix_brightness_obj, //| """Transmits the color data in the buffer to the pixels so that //| they are shown.""" //| ... -STATIC mp_obj_t rgbmatrix_rgbmatrix_refresh(mp_obj_t self_in) { +static mp_obj_t rgbmatrix_rgbmatrix_refresh(mp_obj_t self_in) { rgbmatrix_rgbmatrix_obj_t *self = (rgbmatrix_rgbmatrix_obj_t *)self_in; check_for_deinit(self); common_hal_rgbmatrix_rgbmatrix_refresh(self); @@ -324,7 +324,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(rgbmatrix_rgbmatrix_refresh_obj, rgbmatrix_rgbmatrix_r //| width: int //| """The width of the display, in pixels""" -STATIC mp_obj_t rgbmatrix_rgbmatrix_get_width(mp_obj_t self_in) { +static mp_obj_t rgbmatrix_rgbmatrix_get_width(mp_obj_t self_in) { rgbmatrix_rgbmatrix_obj_t *self = (rgbmatrix_rgbmatrix_obj_t *)self_in; check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_rgbmatrix_rgbmatrix_get_width(self)); @@ -336,7 +336,7 @@ MP_PROPERTY_GETTER(rgbmatrix_rgbmatrix_width_obj, //| height: int //| """The height of the display, in pixels""" //| -STATIC mp_obj_t rgbmatrix_rgbmatrix_get_height(mp_obj_t self_in) { +static mp_obj_t rgbmatrix_rgbmatrix_get_height(mp_obj_t self_in) { rgbmatrix_rgbmatrix_obj_t *self = (rgbmatrix_rgbmatrix_obj_t *)self_in; check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_rgbmatrix_rgbmatrix_get_height(self)); @@ -346,61 +346,61 @@ MP_DEFINE_CONST_FUN_OBJ_1(rgbmatrix_rgbmatrix_get_height_obj, rgbmatrix_rgbmatri MP_PROPERTY_GETTER(rgbmatrix_rgbmatrix_height_obj, (mp_obj_t)&rgbmatrix_rgbmatrix_get_height_obj); -STATIC const mp_rom_map_elem_t rgbmatrix_rgbmatrix_locals_dict_table[] = { +static const mp_rom_map_elem_t rgbmatrix_rgbmatrix_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&rgbmatrix_rgbmatrix_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR_brightness), MP_ROM_PTR(&rgbmatrix_rgbmatrix_brightness_obj) }, { MP_ROM_QSTR(MP_QSTR_refresh), MP_ROM_PTR(&rgbmatrix_rgbmatrix_refresh_obj) }, { MP_ROM_QSTR(MP_QSTR_width), MP_ROM_PTR(&rgbmatrix_rgbmatrix_width_obj) }, { MP_ROM_QSTR(MP_QSTR_height), MP_ROM_PTR(&rgbmatrix_rgbmatrix_height_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(rgbmatrix_rgbmatrix_locals_dict, rgbmatrix_rgbmatrix_locals_dict_table); +static MP_DEFINE_CONST_DICT(rgbmatrix_rgbmatrix_locals_dict, rgbmatrix_rgbmatrix_locals_dict_table); -STATIC void rgbmatrix_rgbmatrix_get_bufinfo(mp_obj_t self_in, mp_buffer_info_t *bufinfo) { +static void rgbmatrix_rgbmatrix_get_bufinfo(mp_obj_t self_in, mp_buffer_info_t *bufinfo) { common_hal_rgbmatrix_rgbmatrix_get_bufinfo(self_in, bufinfo); } // These version exists so that the prototype matches the protocol, // avoiding a type cast that can hide errors -STATIC void rgbmatrix_rgbmatrix_swapbuffers(mp_obj_t self_in, uint8_t *dirty_row_bitmap) { +static void rgbmatrix_rgbmatrix_swapbuffers(mp_obj_t self_in, uint8_t *dirty_row_bitmap) { (void)dirty_row_bitmap; common_hal_rgbmatrix_rgbmatrix_refresh(self_in); } -STATIC void rgbmatrix_rgbmatrix_deinit_proto(mp_obj_t self_in) { +static void rgbmatrix_rgbmatrix_deinit_proto(mp_obj_t self_in) { common_hal_rgbmatrix_rgbmatrix_deinit(self_in); } -STATIC float rgbmatrix_rgbmatrix_get_brightness_proto(mp_obj_t self_in) { +static float rgbmatrix_rgbmatrix_get_brightness_proto(mp_obj_t self_in) { return common_hal_rgbmatrix_rgbmatrix_get_paused(self_in) ? 0.0f : 1.0f; } -STATIC bool rgbmatrix_rgbmatrix_set_brightness_proto(mp_obj_t self_in, mp_float_t value) { +static bool rgbmatrix_rgbmatrix_set_brightness_proto(mp_obj_t self_in, mp_float_t value) { common_hal_rgbmatrix_rgbmatrix_set_paused(self_in, value <= 0); return true; } -STATIC int rgbmatrix_rgbmatrix_get_width_proto(mp_obj_t self_in) { +static int rgbmatrix_rgbmatrix_get_width_proto(mp_obj_t self_in) { return common_hal_rgbmatrix_rgbmatrix_get_width(self_in); } -STATIC int rgbmatrix_rgbmatrix_get_height_proto(mp_obj_t self_in) { +static int rgbmatrix_rgbmatrix_get_height_proto(mp_obj_t self_in) { return common_hal_rgbmatrix_rgbmatrix_get_height(self_in); } -STATIC int rgbmatrix_rgbmatrix_get_color_depth_proto(mp_obj_t self_in) { +static int rgbmatrix_rgbmatrix_get_color_depth_proto(mp_obj_t self_in) { return 16; } -STATIC int rgbmatrix_rgbmatrix_get_bytes_per_cell_proto(mp_obj_t self_in) { +static int rgbmatrix_rgbmatrix_get_bytes_per_cell_proto(mp_obj_t self_in) { return 1; } -STATIC int rgbmatrix_rgbmatrix_get_native_frames_per_second_proto(mp_obj_t self_in) { +static int rgbmatrix_rgbmatrix_get_native_frames_per_second_proto(mp_obj_t self_in) { return 250; } -STATIC const framebuffer_p_t rgbmatrix_rgbmatrix_proto = { +static const framebuffer_p_t rgbmatrix_rgbmatrix_proto = { MP_PROTO_IMPLEMENT(MP_QSTR_protocol_framebuffer) .get_bufinfo = rgbmatrix_rgbmatrix_get_bufinfo, .set_brightness = rgbmatrix_rgbmatrix_set_brightness_proto, @@ -414,7 +414,7 @@ STATIC const framebuffer_p_t rgbmatrix_rgbmatrix_proto = { .deinit = rgbmatrix_rgbmatrix_deinit_proto, }; -STATIC mp_int_t rgbmatrix_rgbmatrix_get_buffer(mp_obj_t self_in, mp_buffer_info_t *bufinfo, mp_uint_t flags) { +static mp_int_t rgbmatrix_rgbmatrix_get_buffer(mp_obj_t self_in, mp_buffer_info_t *bufinfo, mp_uint_t flags) { rgbmatrix_rgbmatrix_obj_t *self = (rgbmatrix_rgbmatrix_obj_t *)self_in; // a readonly framebuffer would be unusual but not impossible if ((flags & MP_BUFFER_WRITE) && !(self->bufinfo.typecode & MP_OBJ_ARRAY_TYPECODE_FLAG_RW)) { diff --git a/shared-bindings/rgbmatrix/__init__.c b/shared-bindings/rgbmatrix/__init__.c index 60865df56077..f6e0c43fb931 100644 --- a/shared-bindings/rgbmatrix/__init__.c +++ b/shared-bindings/rgbmatrix/__init__.c @@ -17,12 +17,12 @@ //| `the dedicated learn guide `_. //| """ -STATIC const mp_rom_map_elem_t rgbmatrix_module_globals_table[] = { +static const mp_rom_map_elem_t rgbmatrix_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_rgbmatrix) }, { MP_ROM_QSTR(MP_QSTR_RGBMatrix), MP_ROM_PTR(&rgbmatrix_RGBMatrix_type) }, }; -STATIC MP_DEFINE_CONST_DICT(rgbmatrix_module_globals, rgbmatrix_module_globals_table); +static MP_DEFINE_CONST_DICT(rgbmatrix_module_globals, rgbmatrix_module_globals_table); const mp_obj_module_t rgbmatrix_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/rotaryio/IncrementalEncoder.c b/shared-bindings/rotaryio/IncrementalEncoder.c index 2310b82bc258..9b92daf13a05 100644 --- a/shared-bindings/rotaryio/IncrementalEncoder.c +++ b/shared-bindings/rotaryio/IncrementalEncoder.c @@ -44,7 +44,7 @@ //| print(position) //| last_position = position""" //| ... -STATIC mp_obj_t rotaryio_incrementalencoder_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t rotaryio_incrementalencoder_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_pin_a, ARG_pin_b, ARG_divisor }; static const mp_arg_t allowed_args[] = { { MP_QSTR_pin_a, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -69,14 +69,14 @@ STATIC mp_obj_t rotaryio_incrementalencoder_make_new(const mp_obj_type_t *type, //| def deinit(self) -> None: //| """Deinitializes the IncrementalEncoder and releases any hardware resources for reuse.""" //| ... -STATIC mp_obj_t rotaryio_incrementalencoder_deinit(mp_obj_t self_in) { +static mp_obj_t rotaryio_incrementalencoder_deinit(mp_obj_t self_in) { rotaryio_incrementalencoder_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_rotaryio_incrementalencoder_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(rotaryio_incrementalencoder_deinit_obj, rotaryio_incrementalencoder_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(rotaryio_incrementalencoder_deinit_obj, rotaryio_incrementalencoder_deinit); -STATIC void check_for_deinit(rotaryio_incrementalencoder_obj_t *self) { +static void check_for_deinit(rotaryio_incrementalencoder_obj_t *self) { if (common_hal_rotaryio_incrementalencoder_deinited(self)) { raise_deinited_error(); } @@ -91,19 +91,19 @@ STATIC void check_for_deinit(rotaryio_incrementalencoder_obj_t *self) { //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t rotaryio_incrementalencoder_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t rotaryio_incrementalencoder_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_rotaryio_incrementalencoder_deinit(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(rotaryio_incrementalencoder___exit___obj, 4, 4, rotaryio_incrementalencoder_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(rotaryio_incrementalencoder___exit___obj, 4, 4, rotaryio_incrementalencoder_obj___exit__); //| divisor: int //| """The divisor of the quadrature signal. Use 1 for encoders without //| detents, or encoders with 4 detents per cycle. Use 2 for encoders with 2 //| detents per cycle. Use 4 for encoders with 1 detent per cycle.""" -STATIC mp_obj_t rotaryio_incrementalencoder_obj_get_divisor(mp_obj_t self_in) { +static mp_obj_t rotaryio_incrementalencoder_obj_get_divisor(mp_obj_t self_in) { rotaryio_incrementalencoder_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -111,7 +111,7 @@ STATIC mp_obj_t rotaryio_incrementalencoder_obj_get_divisor(mp_obj_t self_in) { } MP_DEFINE_CONST_FUN_OBJ_1(rotaryio_incrementalencoder_get_divisor_obj, rotaryio_incrementalencoder_obj_get_divisor); -STATIC mp_obj_t rotaryio_incrementalencoder_obj_set_divisor(mp_obj_t self_in, mp_obj_t new_divisor) { +static mp_obj_t rotaryio_incrementalencoder_obj_set_divisor(mp_obj_t self_in, mp_obj_t new_divisor) { rotaryio_incrementalencoder_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -128,7 +128,7 @@ MP_PROPERTY_GETSET(rotaryio_incrementalencoder_divisor_obj, //| """The current position in terms of pulses. The number of pulses per rotation is defined by the //| specific hardware and by the divisor.""" //| -STATIC mp_obj_t rotaryio_incrementalencoder_obj_get_position(mp_obj_t self_in) { +static mp_obj_t rotaryio_incrementalencoder_obj_get_position(mp_obj_t self_in) { rotaryio_incrementalencoder_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -136,7 +136,7 @@ STATIC mp_obj_t rotaryio_incrementalencoder_obj_get_position(mp_obj_t self_in) { } MP_DEFINE_CONST_FUN_OBJ_1(rotaryio_incrementalencoder_get_position_obj, rotaryio_incrementalencoder_obj_get_position); -STATIC mp_obj_t rotaryio_incrementalencoder_obj_set_position(mp_obj_t self_in, mp_obj_t new_position) { +static mp_obj_t rotaryio_incrementalencoder_obj_set_position(mp_obj_t self_in, mp_obj_t new_position) { rotaryio_incrementalencoder_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); @@ -149,7 +149,7 @@ MP_PROPERTY_GETSET(rotaryio_incrementalencoder_position_obj, (mp_obj_t)&rotaryio_incrementalencoder_get_position_obj, (mp_obj_t)&rotaryio_incrementalencoder_set_position_obj); -STATIC const mp_rom_map_elem_t rotaryio_incrementalencoder_locals_dict_table[] = { +static const mp_rom_map_elem_t rotaryio_incrementalencoder_locals_dict_table[] = { // Methods { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&rotaryio_incrementalencoder_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&rotaryio_incrementalencoder_deinit_obj) }, @@ -158,7 +158,7 @@ STATIC const mp_rom_map_elem_t rotaryio_incrementalencoder_locals_dict_table[] = { MP_ROM_QSTR(MP_QSTR_position), MP_ROM_PTR(&rotaryio_incrementalencoder_position_obj) }, { MP_ROM_QSTR(MP_QSTR_divisor), MP_ROM_PTR(&rotaryio_incrementalencoder_divisor_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(rotaryio_incrementalencoder_locals_dict, rotaryio_incrementalencoder_locals_dict_table); +static MP_DEFINE_CONST_DICT(rotaryio_incrementalencoder_locals_dict, rotaryio_incrementalencoder_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( rotaryio_incrementalencoder_type, diff --git a/shared-bindings/rotaryio/__init__.c b/shared-bindings/rotaryio/__init__.c index 62f1f5b0fb47..7f31811e149c 100644 --- a/shared-bindings/rotaryio/__init__.c +++ b/shared-bindings/rotaryio/__init__.c @@ -27,12 +27,12 @@ //| call :py:meth:`!deinit` or use a context manager. See //| :ref:`lifetime-and-contextmanagers` for more info.""" -STATIC const mp_rom_map_elem_t rotaryio_module_globals_table[] = { +static const mp_rom_map_elem_t rotaryio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_rotaryio) }, { MP_ROM_QSTR(MP_QSTR_IncrementalEncoder), MP_ROM_PTR(&rotaryio_incrementalencoder_type) }, }; -STATIC MP_DEFINE_CONST_DICT(rotaryio_module_globals, rotaryio_module_globals_table); +static MP_DEFINE_CONST_DICT(rotaryio_module_globals, rotaryio_module_globals_table); const mp_obj_module_t rotaryio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/rtc/RTC.c b/shared-bindings/rtc/RTC.c index f56467ee575f..01686a75d9fd 100644 --- a/shared-bindings/rtc/RTC.c +++ b/shared-bindings/rtc/RTC.c @@ -23,7 +23,7 @@ const rtc_rtc_obj_t rtc_rtc_obj = {{&rtc_rtc_type}}; //| def __init__(self) -> None: //| """This class represents the onboard Real Time Clock. It is a singleton and will always return the same instance.""" //| ... -STATIC mp_obj_t rtc_rtc_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { +static mp_obj_t rtc_rtc_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { // No arguments mp_arg_check_num(n_args, n_kw, 0, 0, false); @@ -49,14 +49,14 @@ STATIC mp_obj_t rtc_rtc_make_new(const mp_obj_type_t *type, size_t n_args, size_ //| current_time = r.datetime //| print(current_time) //| # struct_time(tm_year=2019, tm_month=5, ...)""" -STATIC mp_obj_t rtc_rtc_obj_get_datetime(mp_obj_t self_in) { +static mp_obj_t rtc_rtc_obj_get_datetime(mp_obj_t self_in) { timeutils_struct_time_t tm; common_hal_rtc_get_time(&tm); return struct_time_from_tm(&tm); } MP_DEFINE_CONST_FUN_OBJ_1(rtc_rtc_get_datetime_obj, rtc_rtc_obj_get_datetime); -STATIC mp_obj_t rtc_rtc_obj_set_datetime(mp_obj_t self_in, mp_obj_t datetime) { +static mp_obj_t rtc_rtc_obj_set_datetime(mp_obj_t self_in, mp_obj_t datetime) { timeutils_struct_time_t tm; struct_time_to_tm(datetime, &tm); common_hal_rtc_set_time(&tm); @@ -83,13 +83,13 @@ MP_PROPERTY_GETSET(rtc_rtc_datetime_obj, //| r = rtc.RTC() //| r.calibration = 1""" //| -STATIC mp_obj_t rtc_rtc_obj_get_calibration(mp_obj_t self_in) { +static mp_obj_t rtc_rtc_obj_get_calibration(mp_obj_t self_in) { int calibration = common_hal_rtc_get_calibration(); return mp_obj_new_int(calibration); } MP_DEFINE_CONST_FUN_OBJ_1(rtc_rtc_get_calibration_obj, rtc_rtc_obj_get_calibration); -STATIC mp_obj_t rtc_rtc_obj_set_calibration(mp_obj_t self_in, mp_obj_t calibration) { +static mp_obj_t rtc_rtc_obj_set_calibration(mp_obj_t self_in, mp_obj_t calibration) { common_hal_rtc_set_calibration(mp_obj_get_int(calibration)); return mp_const_none; } @@ -99,11 +99,11 @@ MP_PROPERTY_GETSET(rtc_rtc_calibration_obj, (mp_obj_t)&rtc_rtc_get_calibration_obj, (mp_obj_t)&rtc_rtc_set_calibration_obj); -STATIC const mp_rom_map_elem_t rtc_rtc_locals_dict_table[] = { +static const mp_rom_map_elem_t rtc_rtc_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_datetime), MP_ROM_PTR(&rtc_rtc_datetime_obj) }, { MP_ROM_QSTR(MP_QSTR_calibration), MP_ROM_PTR(&rtc_rtc_calibration_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(rtc_rtc_locals_dict, rtc_rtc_locals_dict_table); +static MP_DEFINE_CONST_DICT(rtc_rtc_locals_dict, rtc_rtc_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( rtc_rtc_type, diff --git a/shared-bindings/rtc/__init__.c b/shared-bindings/rtc/__init__.c index e89a550dd64e..16158413d187 100644 --- a/shared-bindings/rtc/__init__.c +++ b/shared-bindings/rtc/__init__.c @@ -47,20 +47,20 @@ mp_obj_t rtc_get_time_source_time(void) { //| rtc.set_time_source(r)""" //| ... //| -STATIC mp_obj_t rtc_set_time_source(mp_obj_t time_source) { +static mp_obj_t rtc_set_time_source(mp_obj_t time_source) { MP_STATE_VM(rtc_time_source) = time_source; return mp_const_none; } MP_DEFINE_CONST_FUN_OBJ_1(rtc_set_time_source_obj, rtc_set_time_source); -STATIC const mp_rom_map_elem_t rtc_module_globals_table[] = { +static const mp_rom_map_elem_t rtc_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_rtc) }, { MP_ROM_QSTR(MP_QSTR_set_time_source), MP_ROM_PTR(&rtc_set_time_source_obj) }, { MP_ROM_QSTR(MP_QSTR_RTC), MP_ROM_PTR(&rtc_rtc_type) }, }; -STATIC MP_DEFINE_CONST_DICT(rtc_module_globals, rtc_module_globals_table); +static MP_DEFINE_CONST_DICT(rtc_module_globals, rtc_module_globals_table); const mp_obj_module_t rtc_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/sdcardio/SDCard.c b/shared-bindings/sdcardio/SDCard.c index bc5fb1d5ed20..97bd51c00193 100644 --- a/shared-bindings/sdcardio/SDCard.c +++ b/shared-bindings/sdcardio/SDCard.c @@ -57,7 +57,7 @@ //| storage.mount(vfs, '/sd') //| os.listdir('/sd')""" -STATIC mp_obj_t sdcardio_sdcard_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t sdcardio_sdcard_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_spi, ARG_cs, ARG_baudrate, NUM_ARGS }; static const mp_arg_t allowed_args[] = { { MP_QSTR_spi, MP_ARG_OBJ, {.u_obj = mp_const_none } }, @@ -85,7 +85,7 @@ STATIC mp_obj_t sdcardio_sdcard_make_new(const mp_obj_type_t *type, size_t n_arg //| Due to technical limitations, this is a function and not a property. //| //| :return: The number of 512-byte blocks, as a number""" -STATIC mp_obj_t sdcardio_sdcard_count(mp_obj_t self_in) { +static mp_obj_t sdcardio_sdcard_count(mp_obj_t self_in) { sdcardio_sdcard_obj_t *self = (sdcardio_sdcard_obj_t *)self_in; return mp_obj_new_int_from_ull(common_hal_sdcardio_sdcard_get_blockcount(self)); } @@ -95,7 +95,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(sdcardio_sdcard_count_obj, sdcardio_sdcard_count); //| """Disable permanently. //| //| :return: None""" -STATIC mp_obj_t sdcardio_sdcard_deinit(mp_obj_t self_in) { +static mp_obj_t sdcardio_sdcard_deinit(mp_obj_t self_in) { sdcardio_sdcard_obj_t *self = (sdcardio_sdcard_obj_t *)self_in; common_hal_sdcardio_sdcard_deinit(self); return mp_const_none; @@ -111,7 +111,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(sdcardio_sdcard_deinit_obj, sdcardio_sdcard_deinit); //| //| :return: None""" -STATIC mp_obj_t _sdcardio_sdcard_readblocks(mp_obj_t self_in, mp_obj_t start_block_in, mp_obj_t buf_in) { +static mp_obj_t _sdcardio_sdcard_readblocks(mp_obj_t self_in, mp_obj_t start_block_in, mp_obj_t buf_in) { uint32_t start_block = mp_obj_get_int(start_block_in); mp_buffer_info_t bufinfo; mp_get_buffer_raise(buf_in, &bufinfo, MP_BUFFER_WRITE); @@ -130,7 +130,7 @@ MP_DEFINE_CONST_FUN_OBJ_3(sdcardio_sdcard_readblocks_obj, _sdcardio_sdcard_readb //| //| :return: None""" //| ... -STATIC mp_obj_t sdcardio_sdcard_sync(mp_obj_t self_in) { +static mp_obj_t sdcardio_sdcard_sync(mp_obj_t self_in) { sdcardio_sdcard_obj_t *self = (sdcardio_sdcard_obj_t *)self_in; int result = common_hal_sdcardio_sdcard_sync(self); if (result < 0) { @@ -151,7 +151,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(sdcardio_sdcard_sync_obj, sdcardio_sdcard_sync); //| :return: None""" //| -STATIC mp_obj_t _sdcardio_sdcard_writeblocks(mp_obj_t self_in, mp_obj_t start_block_in, mp_obj_t buf_in) { +static mp_obj_t _sdcardio_sdcard_writeblocks(mp_obj_t self_in, mp_obj_t start_block_in, mp_obj_t buf_in) { uint32_t start_block = mp_obj_get_int(start_block_in); mp_buffer_info_t bufinfo; mp_get_buffer_raise(buf_in, &bufinfo, MP_BUFFER_READ); @@ -164,14 +164,14 @@ STATIC mp_obj_t _sdcardio_sdcard_writeblocks(mp_obj_t self_in, mp_obj_t start_bl } MP_DEFINE_CONST_FUN_OBJ_3(sdcardio_sdcard_writeblocks_obj, _sdcardio_sdcard_writeblocks); -STATIC const mp_rom_map_elem_t sdcardio_sdcard_locals_dict_table[] = { +static const mp_rom_map_elem_t sdcardio_sdcard_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_count), MP_ROM_PTR(&sdcardio_sdcard_count_obj) }, { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&sdcardio_sdcard_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR_readblocks), MP_ROM_PTR(&sdcardio_sdcard_readblocks_obj) }, { MP_ROM_QSTR(MP_QSTR_sync), MP_ROM_PTR(&sdcardio_sdcard_sync_obj) }, { MP_ROM_QSTR(MP_QSTR_writeblocks), MP_ROM_PTR(&sdcardio_sdcard_writeblocks_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(sdcardio_sdcard_locals_dict, sdcardio_sdcard_locals_dict_table); +static MP_DEFINE_CONST_DICT(sdcardio_sdcard_locals_dict, sdcardio_sdcard_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( sdcardio_SDCard_type, diff --git a/shared-bindings/sdcardio/__init__.c b/shared-bindings/sdcardio/__init__.c index 6df3d3c75891..7fb230189788 100644 --- a/shared-bindings/sdcardio/__init__.c +++ b/shared-bindings/sdcardio/__init__.c @@ -14,12 +14,12 @@ //| """Interface to an SD card via the SPI bus""" -STATIC const mp_rom_map_elem_t sdcardio_module_globals_table[] = { +static const mp_rom_map_elem_t sdcardio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_sdcardio) }, { MP_ROM_QSTR(MP_QSTR_SDCard), MP_ROM_PTR(&sdcardio_SDCard_type) }, }; -STATIC MP_DEFINE_CONST_DICT(sdcardio_module_globals, sdcardio_module_globals_table); +static MP_DEFINE_CONST_DICT(sdcardio_module_globals, sdcardio_module_globals_table); const mp_obj_module_t sdcardio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/sdioio/SDCard.c b/shared-bindings/sdioio/SDCard.c index 3994d83364cc..7c3874cec8ee 100644 --- a/shared-bindings/sdioio/SDCard.c +++ b/shared-bindings/sdioio/SDCard.c @@ -62,7 +62,7 @@ //| os.listdir('/sd')""" //| ... -STATIC mp_obj_t sdioio_sdcard_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t sdioio_sdcard_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { sdioio_sdcard_obj_t *self = mp_obj_malloc(sdioio_sdcard_obj_t, &sdioio_SDCard_type); enum { ARG_clock, ARG_command, ARG_data, ARG_frequency, NUM_ARGS }; static const mp_arg_t allowed_args[] = { @@ -86,7 +86,7 @@ STATIC mp_obj_t sdioio_sdcard_make_new(const mp_obj_type_t *type, size_t n_args, return MP_OBJ_FROM_PTR(self); } -STATIC void check_for_deinit(sdioio_sdcard_obj_t *self) { +static void check_for_deinit(sdioio_sdcard_obj_t *self) { if (common_hal_sdioio_sdcard_deinited(self)) { raise_deinited_error(); } @@ -99,7 +99,7 @@ STATIC void check_for_deinit(sdioio_sdcard_obj_t *self) { //| :param int width: the number of data lines to use. Must be 1 or 4 and must also not exceed the number of data lines at construction //| //| .. note:: Leaving a value unspecified or 0 means the current setting is kept""" -STATIC mp_obj_t sdioio_sdcard_configure(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t sdioio_sdcard_configure(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_frequency, ARG_width, NUM_ARGS }; static const mp_arg_t allowed_args[] = { { MP_QSTR_frequency, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 0} }, @@ -130,7 +130,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(sdioio_sdcard_configure_obj, 1, sdioio_sdcard_configu //| Due to technical limitations, this is a function and not a property. //| //| :return: The number of 512-byte blocks, as a number""" -STATIC mp_obj_t sdioio_sdcard_count(mp_obj_t self_in) { +static mp_obj_t sdioio_sdcard_count(mp_obj_t self_in) { sdioio_sdcard_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_sdioio_sdcard_get_count(self)); @@ -144,7 +144,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(sdioio_sdcard_count_obj, sdioio_sdcard_count); //| :param ~circuitpython_typing.WriteableBuffer buf: The buffer to write into. Length must be multiple of 512. //| //| :return: None""" -STATIC mp_obj_t _sdioio_sdcard_readblocks(mp_obj_t self_in, mp_obj_t start_block_in, mp_obj_t buf_in) { +static mp_obj_t _sdioio_sdcard_readblocks(mp_obj_t self_in, mp_obj_t start_block_in, mp_obj_t buf_in) { uint32_t start_block = mp_obj_get_int(start_block_in); mp_buffer_info_t bufinfo; mp_get_buffer_raise(buf_in, &bufinfo, MP_BUFFER_WRITE); @@ -165,7 +165,7 @@ MP_DEFINE_CONST_FUN_OBJ_3(sdioio_sdcard_readblocks_obj, _sdioio_sdcard_readblock //| :param ~circuitpython_typing.ReadableBuffer buf: The buffer to read from. Length must be multiple of 512. //| //| :return: None""" -STATIC mp_obj_t _sdioio_sdcard_writeblocks(mp_obj_t self_in, mp_obj_t start_block_in, mp_obj_t buf_in) { +static mp_obj_t _sdioio_sdcard_writeblocks(mp_obj_t self_in, mp_obj_t start_block_in, mp_obj_t buf_in) { uint32_t start_block = mp_obj_get_int(start_block_in); mp_buffer_info_t bufinfo; mp_get_buffer_raise(buf_in, &bufinfo, MP_BUFFER_READ); @@ -182,7 +182,7 @@ MP_DEFINE_CONST_FUN_OBJ_3(sdioio_sdcard_writeblocks_obj, _sdioio_sdcard_writeblo //| frequency: int //| """The actual SDIO bus frequency. This may not match the frequency //| requested due to internal limitations.""" -STATIC mp_obj_t sdioio_sdcard_obj_get_frequency(mp_obj_t self_in) { +static mp_obj_t sdioio_sdcard_obj_get_frequency(mp_obj_t self_in) { sdioio_sdcard_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_sdioio_sdcard_get_frequency(self)); @@ -194,7 +194,7 @@ MP_PROPERTY_GETTER(sdioio_sdcard_frequency_obj, //| width: int //| """The actual SDIO bus width, in bits""" -STATIC mp_obj_t sdioio_sdcard_obj_get_width(mp_obj_t self_in) { +static mp_obj_t sdioio_sdcard_obj_get_width(mp_obj_t self_in) { sdioio_sdcard_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_sdioio_sdcard_get_width(self)); @@ -208,7 +208,7 @@ MP_PROPERTY_GETTER(sdioio_sdcard_width_obj, //| """Disable permanently. //| //| :return: None""" -STATIC mp_obj_t sdioio_sdcard_obj_deinit(mp_obj_t self_in) { +static mp_obj_t sdioio_sdcard_obj_deinit(mp_obj_t self_in) { sdioio_sdcard_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_sdioio_sdcard_deinit(self); return mp_const_none; @@ -225,14 +225,14 @@ MP_DEFINE_CONST_FUN_OBJ_1(sdioio_sdcard_deinit_obj, sdioio_sdcard_obj_deinit); //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... //| -STATIC mp_obj_t sdioio_sdcard_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t sdioio_sdcard_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_sdioio_sdcard_deinit(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(sdioio_sdcard_obj___exit___obj, 4, 4, sdioio_sdcard_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(sdioio_sdcard_obj___exit___obj, 4, 4, sdioio_sdcard_obj___exit__); -STATIC const mp_rom_map_elem_t sdioio_sdcard_locals_dict_table[] = { +static const mp_rom_map_elem_t sdioio_sdcard_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&sdioio_sdcard_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&sdioio_sdcard_obj___exit___obj) }, @@ -245,7 +245,7 @@ STATIC const mp_rom_map_elem_t sdioio_sdcard_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_readblocks), MP_ROM_PTR(&sdioio_sdcard_readblocks_obj) }, { MP_ROM_QSTR(MP_QSTR_writeblocks), MP_ROM_PTR(&sdioio_sdcard_writeblocks_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(sdioio_sdcard_locals_dict, sdioio_sdcard_locals_dict_table); +static MP_DEFINE_CONST_DICT(sdioio_sdcard_locals_dict, sdioio_sdcard_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( sdioio_SDCard_type, diff --git a/shared-bindings/sdioio/__init__.c b/shared-bindings/sdioio/__init__.c index 4a761e8a9dd5..45f1219f95a3 100644 --- a/shared-bindings/sdioio/__init__.c +++ b/shared-bindings/sdioio/__init__.c @@ -14,12 +14,12 @@ //| """Interface to an SD card via the SDIO bus""" -STATIC const mp_rom_map_elem_t sdioio_module_globals_table[] = { +static const mp_rom_map_elem_t sdioio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_sdio) }, { MP_ROM_QSTR(MP_QSTR_SDCard), MP_ROM_PTR(&sdioio_SDCard_type) }, }; -STATIC MP_DEFINE_CONST_DICT(sdioio_module_globals, sdioio_module_globals_table); +static MP_DEFINE_CONST_DICT(sdioio_module_globals, sdioio_module_globals_table); const mp_obj_module_t sdioio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/sharpdisplay/SharpMemoryFramebuffer.c b/shared-bindings/sharpdisplay/SharpMemoryFramebuffer.c index 14c123c0fe30..3dd4e2717e2d 100644 --- a/shared-bindings/sharpdisplay/SharpMemoryFramebuffer.c +++ b/shared-bindings/sharpdisplay/SharpMemoryFramebuffer.c @@ -40,7 +40,7 @@ //| :param bool jdi_display: When True, work with an 8-color JDI display. Otherwise, a monochrome Sharp display. //| """ //| ... -STATIC mp_obj_t sharpdisplay_framebuffer_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t sharpdisplay_framebuffer_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_spi_bus, ARG_chip_select, ARG_width, ARG_height, ARG_baudrate, ARG_jdi_display, NUM_ARGS }; static const mp_arg_t allowed_args[] = { { MP_QSTR_spi_bus, MP_ARG_OBJ | MP_ARG_REQUIRED, {.u_obj = MP_OBJ_NULL} }, @@ -67,7 +67,7 @@ STATIC mp_obj_t sharpdisplay_framebuffer_make_new(const mp_obj_type_t *type, siz } -STATIC mp_int_t sharpdisplay_framebuffer_get_buffer(mp_obj_t self_in, mp_buffer_info_t *bufinfo, mp_uint_t flags) { +static mp_int_t sharpdisplay_framebuffer_get_buffer(mp_obj_t self_in, mp_buffer_info_t *bufinfo, mp_uint_t flags) { sharpdisplay_framebuffer_obj_t *self = (sharpdisplay_framebuffer_obj_t *)self_in; // a readonly framebuffer would be unusual but not impossible if ((flags & MP_BUFFER_WRITE) && !(self->bufinfo.typecode & MP_OBJ_ARRAY_TYPECODE_FLAG_RW)) { @@ -83,18 +83,18 @@ STATIC mp_int_t sharpdisplay_framebuffer_get_buffer(mp_obj_t self_in, mp_buffer_ //| may be performed.""" //| ... //| -STATIC mp_obj_t sharpdisplay_framebuffer_deinit(mp_obj_t self_in) { +static mp_obj_t sharpdisplay_framebuffer_deinit(mp_obj_t self_in) { sharpdisplay_framebuffer_obj_t *self = (sharpdisplay_framebuffer_obj_t *)self_in; common_hal_sharpdisplay_framebuffer_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(sharpdisplay_framebuffer_deinit_obj, sharpdisplay_framebuffer_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(sharpdisplay_framebuffer_deinit_obj, sharpdisplay_framebuffer_deinit); -STATIC const mp_rom_map_elem_t sharpdisplay_framebuffer_locals_dict_table[] = { +static const mp_rom_map_elem_t sharpdisplay_framebuffer_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&sharpdisplay_framebuffer_deinit_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(sharpdisplay_framebuffer_locals_dict, sharpdisplay_framebuffer_locals_dict_table); +static MP_DEFINE_CONST_DICT(sharpdisplay_framebuffer_locals_dict, sharpdisplay_framebuffer_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( sharpdisplay_framebuffer_type, diff --git a/shared-bindings/sharpdisplay/__init__.c b/shared-bindings/sharpdisplay/__init__.c index 47f7b7b9553d..94b68e4ce90f 100644 --- a/shared-bindings/sharpdisplay/__init__.c +++ b/shared-bindings/sharpdisplay/__init__.c @@ -16,12 +16,12 @@ //| For more information about working with Sharp Memory Displays, //| see `this Learn guide `_. //| """ -STATIC const mp_rom_map_elem_t sharpdisplay_module_globals_table[] = { +static const mp_rom_map_elem_t sharpdisplay_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_sharpdisplay) }, { MP_ROM_QSTR(MP_QSTR_SharpMemoryFramebuffer), MP_ROM_PTR(&sharpdisplay_framebuffer_type) }, }; -STATIC MP_DEFINE_CONST_DICT(sharpdisplay_module_globals, sharpdisplay_module_globals_table); +static MP_DEFINE_CONST_DICT(sharpdisplay_module_globals, sharpdisplay_module_globals_table); const mp_obj_module_t sharpdisplay_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/socketpool/Socket.c b/shared-bindings/socketpool/Socket.c index b8db8184490c..dfc3c98f4374 100644 --- a/shared-bindings/socketpool/Socket.c +++ b/shared-bindings/socketpool/Socket.c @@ -44,18 +44,18 @@ //| """Automatically closes the Socket when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t socketpool_socket___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t socketpool_socket___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_socketpool_socket_close(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(socketpool_socket___exit___obj, 4, 4, socketpool_socket___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(socketpool_socket___exit___obj, 4, 4, socketpool_socket___exit__); //| def accept(self) -> Tuple[Socket, Tuple[str, int]]: //| """Accept a connection on a listening socket of type SOCK_STREAM, //| creating a new socket of type SOCK_STREAM. //| Returns a tuple of (new_socket, remote_address)""" -STATIC mp_obj_t _socketpool_socket_accept(mp_obj_t self_in) { +static mp_obj_t _socketpool_socket_accept(mp_obj_t self_in) { socketpool_socket_obj_t *self = MP_OBJ_TO_PTR(self_in); uint8_t ip[4]; uint32_t port; @@ -67,14 +67,14 @@ STATIC mp_obj_t _socketpool_socket_accept(mp_obj_t self_in) { tuple_contents[1] = netutils_format_inet_addr(ip, port, NETUTILS_BIG); return mp_obj_new_tuple(2, tuple_contents); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(socketpool_socket_accept_obj, _socketpool_socket_accept); +static MP_DEFINE_CONST_FUN_OBJ_1(socketpool_socket_accept_obj, _socketpool_socket_accept); //| def bind(self, address: Tuple[str, int]) -> None: //| """Bind a socket to an address //| //| :param ~tuple address: tuple of (remote_address, remote_port)""" //| ... -STATIC mp_obj_t socketpool_socket_bind(mp_obj_t self_in, mp_obj_t addr_in) { +static mp_obj_t socketpool_socket_bind(mp_obj_t self_in, mp_obj_t addr_in) { socketpool_socket_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_obj_t *addr_items; @@ -94,23 +94,23 @@ STATIC mp_obj_t socketpool_socket_bind(mp_obj_t self_in, mp_obj_t addr_in) { return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(socketpool_socket_bind_obj, socketpool_socket_bind); +static MP_DEFINE_CONST_FUN_OBJ_2(socketpool_socket_bind_obj, socketpool_socket_bind); //| def close(self) -> None: //| """Closes this Socket and makes its resources available to its SocketPool.""" -STATIC mp_obj_t _socketpool_socket_close(mp_obj_t self_in) { +static mp_obj_t _socketpool_socket_close(mp_obj_t self_in) { socketpool_socket_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_socketpool_socket_close(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(socketpool_socket_close_obj, _socketpool_socket_close); +static MP_DEFINE_CONST_FUN_OBJ_1(socketpool_socket_close_obj, _socketpool_socket_close); //| def connect(self, address: Tuple[str, int]) -> None: //| """Connect a socket to a remote address //| //| :param ~tuple address: tuple of (remote_address, remote_port)""" //| ... -STATIC mp_obj_t socketpool_socket_connect(mp_obj_t self_in, mp_obj_t addr_in) { +static mp_obj_t socketpool_socket_connect(mp_obj_t self_in, mp_obj_t addr_in) { socketpool_socket_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_obj_t *addr_items; @@ -127,14 +127,14 @@ STATIC mp_obj_t socketpool_socket_connect(mp_obj_t self_in, mp_obj_t addr_in) { return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(socketpool_socket_connect_obj, socketpool_socket_connect); +static MP_DEFINE_CONST_FUN_OBJ_2(socketpool_socket_connect_obj, socketpool_socket_connect); //| def listen(self, backlog: int) -> None: //| """Set socket to listen for incoming connections //| //| :param ~int backlog: length of backlog queue for waiting connections""" //| ... -STATIC mp_obj_t socketpool_socket_listen(mp_obj_t self_in, mp_obj_t backlog_in) { +static mp_obj_t socketpool_socket_listen(mp_obj_t self_in, mp_obj_t backlog_in) { socketpool_socket_obj_t *self = MP_OBJ_TO_PTR(self_in); int backlog = mp_obj_get_int(backlog_in); @@ -142,7 +142,7 @@ STATIC mp_obj_t socketpool_socket_listen(mp_obj_t self_in, mp_obj_t backlog_in) common_hal_socketpool_socket_listen(self, backlog); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(socketpool_socket_listen_obj, socketpool_socket_listen); +static MP_DEFINE_CONST_FUN_OBJ_2(socketpool_socket_listen_obj, socketpool_socket_listen); //| def recvfrom_into(self, buffer: WriteableBuffer) -> Tuple[int, Tuple[str, int]]: //| """Reads some bytes from a remote address. @@ -153,7 +153,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(socketpool_socket_listen_obj, socketpool_socket //| //| :param object buffer: buffer to read into""" //| ... -STATIC mp_obj_t socketpool_socket_recvfrom_into(mp_obj_t self_in, mp_obj_t data_in) { +static mp_obj_t socketpool_socket_recvfrom_into(mp_obj_t self_in, mp_obj_t data_in) { socketpool_socket_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_buffer_info_t bufinfo; mp_get_buffer_raise(data_in, &bufinfo, MP_BUFFER_WRITE); @@ -167,7 +167,7 @@ STATIC mp_obj_t socketpool_socket_recvfrom_into(mp_obj_t self_in, mp_obj_t data_ tuple_contents[1] = netutils_format_inet_addr(ip, port, NETUTILS_BIG); return mp_obj_new_tuple(2, tuple_contents); } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(socketpool_socket_recvfrom_into_obj, socketpool_socket_recvfrom_into); +static MP_DEFINE_CONST_FUN_OBJ_2(socketpool_socket_recvfrom_into_obj, socketpool_socket_recvfrom_into); //| def recv_into(self, buffer: WriteableBuffer, bufsize: int) -> int: //| """Reads some bytes from the connected remote address, writing @@ -182,7 +182,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(socketpool_socket_recvfrom_into_obj, socketpool //| :param bytearray buffer: buffer to receive into //| :param int bufsize: optionally, a maximum number of bytes to read.""" //| ... -STATIC mp_obj_t _socketpool_socket_recv_into(size_t n_args, const mp_obj_t *args) { +static mp_obj_t _socketpool_socket_recv_into(size_t n_args, const mp_obj_t *args) { socketpool_socket_obj_t *self = MP_OBJ_TO_PTR(args[0]); if (common_hal_socketpool_socket_get_closed(self)) { // Bad file number. @@ -212,7 +212,7 @@ STATIC mp_obj_t _socketpool_socket_recv_into(size_t n_args, const mp_obj_t *args mp_int_t ret = common_hal_socketpool_socket_recv_into(self, (byte *)bufinfo.buf, len); return mp_obj_new_int_from_uint(ret); } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(socketpool_socket_recv_into_obj, 2, 3, _socketpool_socket_recv_into); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(socketpool_socket_recv_into_obj, 2, 3, _socketpool_socket_recv_into); //| def send(self, bytes: ReadableBuffer) -> int: //| """Send some bytes to the connected remote address. @@ -220,7 +220,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(socketpool_socket_recv_into_obj, 2, 3 //| //| :param ~bytes bytes: some bytes to send""" //| ... -STATIC mp_obj_t _socketpool_socket_send(mp_obj_t self_in, mp_obj_t buf_in) { +static mp_obj_t _socketpool_socket_send(mp_obj_t self_in, mp_obj_t buf_in) { socketpool_socket_obj_t *self = MP_OBJ_TO_PTR(self_in); if (common_hal_socketpool_socket_get_closed(self)) { // Bad file number. @@ -237,7 +237,7 @@ STATIC mp_obj_t _socketpool_socket_send(mp_obj_t self_in, mp_obj_t buf_in) { } return mp_obj_new_int_from_uint(ret); } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(socketpool_socket_send_obj, _socketpool_socket_send); +static MP_DEFINE_CONST_FUN_OBJ_2(socketpool_socket_send_obj, _socketpool_socket_send); //| def sendall(self, bytes: ReadableBuffer) -> None: //| """Send some bytes to the connected remote address. @@ -249,7 +249,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(socketpool_socket_send_obj, _socketpool_socket_ //| //| :param ~bytes bytes: some bytes to send""" //| ... -STATIC mp_obj_t _socketpool_socket_sendall(mp_obj_t self_in, mp_obj_t buf_in) { +static mp_obj_t _socketpool_socket_sendall(mp_obj_t self_in, mp_obj_t buf_in) { socketpool_socket_obj_t *self = MP_OBJ_TO_PTR(self_in); if (common_hal_socketpool_socket_get_closed(self)) { // Bad file number. @@ -277,7 +277,7 @@ STATIC mp_obj_t _socketpool_socket_sendall(mp_obj_t self_in, mp_obj_t buf_in) { } return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(socketpool_socket_sendall_obj, _socketpool_socket_sendall); +static MP_DEFINE_CONST_FUN_OBJ_2(socketpool_socket_sendall_obj, _socketpool_socket_sendall); //| def sendto(self, bytes: ReadableBuffer, address: Tuple[str, int]) -> int: //| """Send some bytes to a specific address. @@ -286,7 +286,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(socketpool_socket_sendall_obj, _socketpool_sock //| :param ~bytes bytes: some bytes to send //| :param ~tuple address: tuple of (remote_address, remote_port)""" //| ... -STATIC mp_obj_t socketpool_socket_sendto(mp_obj_t self_in, mp_obj_t data_in, mp_obj_t addr_in) { +static mp_obj_t socketpool_socket_sendto(mp_obj_t self_in, mp_obj_t data_in, mp_obj_t addr_in) { socketpool_socket_obj_t *self = MP_OBJ_TO_PTR(self_in); // get the data @@ -307,7 +307,7 @@ STATIC mp_obj_t socketpool_socket_sendto(mp_obj_t self_in, mp_obj_t data_in, mp_ return mp_obj_new_int_from_uint(ret); } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(socketpool_socket_sendto_obj, socketpool_socket_sendto); +static MP_DEFINE_CONST_FUN_OBJ_3(socketpool_socket_sendto_obj, socketpool_socket_sendto); //| def setblocking(self, flag: bool) -> Optional[int]: //| """Set the blocking behaviour of this socket. @@ -315,7 +315,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_3(socketpool_socket_sendto_obj, socketpool_socket //| :param ~bool flag: False means non-blocking, True means block indefinitely.""" //| ... // method socket.setblocking(flag) -STATIC mp_obj_t socketpool_socket_setblocking(mp_obj_t self_in, mp_obj_t blocking) { +static mp_obj_t socketpool_socket_setblocking(mp_obj_t self_in, mp_obj_t blocking) { socketpool_socket_obj_t *self = MP_OBJ_TO_PTR(self_in); if (mp_obj_is_true(blocking)) { common_hal_socketpool_socket_settimeout(self, -1); @@ -324,12 +324,12 @@ STATIC mp_obj_t socketpool_socket_setblocking(mp_obj_t self_in, mp_obj_t blockin } return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(socketpool_socket_setblocking_obj, socketpool_socket_setblocking); +static MP_DEFINE_CONST_FUN_OBJ_2(socketpool_socket_setblocking_obj, socketpool_socket_setblocking); //| def setsockopt(self, level: int, optname: int, value: int) -> None: //| """Sets socket options""" //| ... -STATIC mp_obj_t socketpool_socket_setsockopt(size_t n_args, const mp_obj_t *args) { +static mp_obj_t socketpool_socket_setsockopt(size_t n_args, const mp_obj_t *args) { socketpool_socket_obj_t *self = MP_OBJ_TO_PTR(args[0]); mp_int_t level = mp_obj_get_int(args[1]); mp_int_t opt = mp_obj_get_int(args[2]); @@ -355,7 +355,7 @@ STATIC mp_obj_t socketpool_socket_setsockopt(size_t n_args, const mp_obj_t *args return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(socketpool_socket_setsockopt_obj, 4, 4, socketpool_socket_setsockopt); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(socketpool_socket_setsockopt_obj, 4, 4, socketpool_socket_setsockopt); //| def settimeout(self, value: int) -> None: @@ -364,7 +364,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(socketpool_socket_setsockopt_obj, 4, //| :param ~int value: timeout in seconds. 0 means non-blocking. None means block indefinitely. //| """ //| ... -STATIC mp_obj_t socketpool_socket_settimeout(mp_obj_t self_in, mp_obj_t timeout_in) { +static mp_obj_t socketpool_socket_settimeout(mp_obj_t self_in, mp_obj_t timeout_in) { socketpool_socket_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_uint_t timeout_ms; if (timeout_in == mp_const_none) { @@ -379,12 +379,12 @@ STATIC mp_obj_t socketpool_socket_settimeout(mp_obj_t self_in, mp_obj_t timeout_ common_hal_socketpool_socket_settimeout(self, timeout_ms); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(socketpool_socket_settimeout_obj, socketpool_socket_settimeout); +static MP_DEFINE_CONST_FUN_OBJ_2(socketpool_socket_settimeout_obj, socketpool_socket_settimeout); //| type: int //| """Read-only access to the socket type""" //| -STATIC mp_obj_t socketpool_socket_obj_get_type(mp_obj_t self_in) { +static mp_obj_t socketpool_socket_obj_get_type(mp_obj_t self_in) { socketpool_socket_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_socketpool_socket_get_type(self)); } @@ -393,7 +393,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(socketpool_socket_get_type_obj, socketpool_socket_obj_ MP_PROPERTY_GETTER(socketpool_socket_type_obj, (mp_obj_t)&socketpool_socket_get_type_obj); -STATIC const mp_rom_map_elem_t socketpool_socket_locals_dict_table[] = { +static const mp_rom_map_elem_t socketpool_socket_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&socketpool_socket___exit___obj) }, { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&socketpool_socket_close_obj) }, @@ -415,9 +415,9 @@ STATIC const mp_rom_map_elem_t socketpool_socket_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_type), MP_ROM_PTR(&socketpool_socket_type_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(socketpool_socket_locals_dict, socketpool_socket_locals_dict_table); +static MP_DEFINE_CONST_DICT(socketpool_socket_locals_dict, socketpool_socket_locals_dict_table); -STATIC mp_uint_t socket_read(mp_obj_t self_in, void *buf, mp_uint_t size, int *errorcode) { +static mp_uint_t socket_read(mp_obj_t self_in, void *buf, mp_uint_t size, int *errorcode) { socketpool_socket_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_int_t ret = socketpool_socket_recv_into(self, buf, size); if (ret < 0) { @@ -427,7 +427,7 @@ STATIC mp_uint_t socket_read(mp_obj_t self_in, void *buf, mp_uint_t size, int *e return ret; } -STATIC mp_uint_t socket_write(mp_obj_t self_in, const void *buf, mp_uint_t size, int *errorcode) { +static mp_uint_t socket_write(mp_obj_t self_in, const void *buf, mp_uint_t size, int *errorcode) { socketpool_socket_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_int_t ret = socketpool_socket_send(self, buf, size); if (ret < 0) { @@ -437,7 +437,7 @@ STATIC mp_uint_t socket_write(mp_obj_t self_in, const void *buf, mp_uint_t size, return ret; } -STATIC mp_uint_t socket_ioctl(mp_obj_t self_in, mp_uint_t request, mp_uint_t arg, int *errcode) { +static mp_uint_t socket_ioctl(mp_obj_t self_in, mp_uint_t request, mp_uint_t arg, int *errcode) { socketpool_socket_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_uint_t ret; if (request == MP_STREAM_POLL) { @@ -456,7 +456,7 @@ STATIC mp_uint_t socket_ioctl(mp_obj_t self_in, mp_uint_t request, mp_uint_t arg return ret; } -STATIC const mp_stream_p_t socket_stream_p = { +static const mp_stream_p_t socket_stream_p = { .read = socket_read, .write = socket_write, .ioctl = socket_ioctl, diff --git a/shared-bindings/socketpool/SocketPool.c b/shared-bindings/socketpool/SocketPool.c index 417a76a2e696..2b4623323fa8 100644 --- a/shared-bindings/socketpool/SocketPool.c +++ b/shared-bindings/socketpool/SocketPool.c @@ -33,7 +33,7 @@ //| """ //| ... //| -STATIC mp_obj_t socketpool_socketpool_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { +static mp_obj_t socketpool_socketpool_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { mp_arg_check_num(n_args, n_kw, 1, 1, false); socketpool_socketpool_obj_t *s = m_new_obj_with_finaliser(socketpool_socketpool_obj_t); @@ -87,7 +87,7 @@ MP_DEFINE_EXCEPTION(gaierror, OSError) //| in CPython is not supported. //| """ //| ... -STATIC mp_obj_t socketpool_socketpool_socket(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t socketpool_socketpool_socket(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_family, ARG_type, ARG_proto }; static const mp_arg_t allowed_args[] = { { MP_QSTR_family, MP_ARG_INT, {.u_int = SOCKETPOOL_AF_INET} }, @@ -127,7 +127,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(socketpool_socketpool_socket_obj, 1, socketpool_socke //| as a tuple.""" //| ... //| -STATIC mp_obj_t socketpool_socketpool_getaddrinfo(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t socketpool_socketpool_getaddrinfo(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_host, ARG_port, ARG_family, ARG_type, ARG_proto, ARG_flags }; static const mp_arg_t allowed_args[] = { { MP_QSTR_host, MP_ARG_OBJ | MP_ARG_REQUIRED }, @@ -165,9 +165,9 @@ STATIC mp_obj_t socketpool_socketpool_getaddrinfo(size_t n_args, const mp_obj_t tuple->items[4] = MP_OBJ_FROM_PTR(sockaddr); return mp_obj_new_list(1, (mp_obj_t *)&tuple); } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(socketpool_socketpool_getaddrinfo_obj, 1, socketpool_socketpool_getaddrinfo); +static MP_DEFINE_CONST_FUN_OBJ_KW(socketpool_socketpool_getaddrinfo_obj, 1, socketpool_socketpool_getaddrinfo); -STATIC const mp_rom_map_elem_t socketpool_socketpool_locals_dict_table[] = { +static const mp_rom_map_elem_t socketpool_socketpool_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_socket), MP_ROM_PTR(&socketpool_socketpool_socket_obj) }, { MP_ROM_QSTR(MP_QSTR_getaddrinfo), MP_ROM_PTR(&socketpool_socketpool_getaddrinfo_obj) }, { MP_ROM_QSTR(MP_QSTR_gaierror), MP_ROM_PTR(&mp_type_gaierror) }, @@ -197,7 +197,7 @@ STATIC const mp_rom_map_elem_t socketpool_socketpool_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_EAI_NONAME), MP_ROM_INT(SOCKETPOOL_EAI_NONAME) }, }; -STATIC MP_DEFINE_CONST_DICT(socketpool_socketpool_locals_dict, socketpool_socketpool_locals_dict_table); +static MP_DEFINE_CONST_DICT(socketpool_socketpool_locals_dict, socketpool_socketpool_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( socketpool_socketpool_type, diff --git a/shared-bindings/socketpool/__init__.c b/shared-bindings/socketpool/__init__.c index 64774272f13b..59d55bf3f836 100644 --- a/shared-bindings/socketpool/__init__.c +++ b/shared-bindings/socketpool/__init__.c @@ -20,14 +20,14 @@ //| https://docs.python.org/3/library/socket.html //| """ -STATIC const mp_rom_map_elem_t socketpool_globals_table[] = { +static const mp_rom_map_elem_t socketpool_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_socketpool) }, { MP_ROM_QSTR(MP_QSTR_SocketPool), MP_ROM_PTR(&socketpool_socketpool_type) }, { MP_ROM_QSTR(MP_QSTR_Socket), MP_ROM_PTR(&socketpool_socket_type) }, }; -STATIC MP_DEFINE_CONST_DICT(socketpool_globals, socketpool_globals_table); +static MP_DEFINE_CONST_DICT(socketpool_globals, socketpool_globals_table); const mp_obj_module_t socketpool_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/ssl/SSLContext.c b/shared-bindings/ssl/SSLContext.c index b82cb31ee804..9c7f098cc4ac 100644 --- a/shared-bindings/ssl/SSLContext.c +++ b/shared-bindings/ssl/SSLContext.c @@ -22,7 +22,7 @@ //| rather than all of them.""" //| -STATIC mp_obj_t ssl_sslcontext_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { +static mp_obj_t ssl_sslcontext_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { mp_arg_check_num(n_args, n_kw, 0, 1, false); ssl_sslcontext_obj_t *s = mp_obj_malloc(ssl_sslcontext_obj_t, &ssl_sslcontext_type); @@ -41,7 +41,7 @@ STATIC mp_obj_t ssl_sslcontext_make_new(const mp_obj_type_t *type, size_t n_args //| must point to a file containing the private key. //| """ -STATIC void get_file_contents(mp_obj_t name_obj, mp_buffer_info_t *bufinfo) { +static void get_file_contents(mp_obj_t name_obj, mp_buffer_info_t *bufinfo) { mp_obj_t file = mp_call_function_2(MP_OBJ_FROM_PTR(&mp_builtin_open_obj), name_obj, MP_OBJ_NEW_QSTR(MP_QSTR_rb)); mp_obj_t dest[2]; mp_load_method(file, MP_QSTR_read, dest); @@ -49,7 +49,7 @@ STATIC void get_file_contents(mp_obj_t name_obj, mp_buffer_info_t *bufinfo) { mp_get_buffer_raise(result, bufinfo, MP_BUFFER_READ); } -STATIC mp_obj_t ssl_sslcontext_load_cert_chain(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t ssl_sslcontext_load_cert_chain(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_certfile, ARG_keyfile }; static const mp_arg_t allowed_args[] = { { MP_QSTR_certfile, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = mp_const_none} }, @@ -71,7 +71,7 @@ STATIC mp_obj_t ssl_sslcontext_load_cert_chain(size_t n_args, const mp_obj_t *po common_hal_ssl_sslcontext_load_cert_chain(self, &cert_buf, &key_buf); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(ssl_sslcontext_load_cert_chain_obj, 1, ssl_sslcontext_load_cert_chain); +static MP_DEFINE_CONST_FUN_OBJ_KW(ssl_sslcontext_load_cert_chain_obj, 1, ssl_sslcontext_load_cert_chain); //| def load_verify_locations( //| self, @@ -88,7 +88,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_KW(ssl_sslcontext_load_cert_chain_obj, 1, ssl_ssl //| :param str cadata: A single CA certificate in PEM format. **Limitation**: CPython allows one //| or more certificates, but this implementation is limited to one. //| """ -STATIC mp_obj_t ssl_sslcontext_load_verify_locations(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t ssl_sslcontext_load_verify_locations(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_cafile, ARG_capath, ARG_cadata }; static const mp_arg_t allowed_args[] = { { MP_QSTR_cafile, MP_ARG_OBJ, {.u_obj = mp_const_none} }, @@ -113,36 +113,36 @@ STATIC mp_obj_t ssl_sslcontext_load_verify_locations(size_t n_args, const mp_obj common_hal_ssl_sslcontext_load_verify_locations(self, cadata); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(ssl_sslcontext_load_verify_locations_obj, 1, ssl_sslcontext_load_verify_locations); +static MP_DEFINE_CONST_FUN_OBJ_KW(ssl_sslcontext_load_verify_locations_obj, 1, ssl_sslcontext_load_verify_locations); //| def set_default_verify_paths(self) -> None: //| """Load a set of default certification authority (CA) certificates.""" -STATIC mp_obj_t ssl_sslcontext_set_default_verify_paths(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t ssl_sslcontext_set_default_verify_paths(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { ssl_sslcontext_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); common_hal_ssl_sslcontext_set_default_verify_paths(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(ssl_sslcontext_set_default_verify_paths_obj, 1, ssl_sslcontext_set_default_verify_paths); +static MP_DEFINE_CONST_FUN_OBJ_KW(ssl_sslcontext_set_default_verify_paths_obj, 1, ssl_sslcontext_set_default_verify_paths); //| check_hostname: bool //| """Whether to match the peer certificate's hostname.""" -STATIC mp_obj_t ssl_sslcontext_get_check_hostname(mp_obj_t self_in) { +static mp_obj_t ssl_sslcontext_get_check_hostname(mp_obj_t self_in) { ssl_sslcontext_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bool(common_hal_ssl_sslcontext_get_check_hostname(self)); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(ssl_sslcontext_get_check_hostname_obj, ssl_sslcontext_get_check_hostname); +static MP_DEFINE_CONST_FUN_OBJ_1(ssl_sslcontext_get_check_hostname_obj, ssl_sslcontext_get_check_hostname); -STATIC mp_obj_t ssl_sslcontext_set_check_hostname(mp_obj_t self_in, mp_obj_t value) { +static mp_obj_t ssl_sslcontext_set_check_hostname(mp_obj_t self_in, mp_obj_t value) { ssl_sslcontext_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_ssl_sslcontext_set_check_hostname(self, mp_obj_is_true(value)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(ssl_sslcontext_set_check_hostname_obj, ssl_sslcontext_set_check_hostname); +static MP_DEFINE_CONST_FUN_OBJ_2(ssl_sslcontext_set_check_hostname_obj, ssl_sslcontext_set_check_hostname); MP_PROPERTY_GETSET(ssl_sslcontext_check_hostname_obj, (mp_obj_t)&ssl_sslcontext_get_check_hostname_obj, @@ -159,7 +159,7 @@ MP_PROPERTY_GETSET(ssl_sslcontext_check_hostname_obj, //| The socket must be of type SOCK_STREAM.""" //| -STATIC mp_obj_t ssl_sslcontext_wrap_socket(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t ssl_sslcontext_wrap_socket(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_sock, ARG_server_side, ARG_server_hostname }; static const mp_arg_t allowed_args[] = { { MP_QSTR_sock, MP_ARG_OBJ | MP_ARG_REQUIRED }, @@ -184,9 +184,9 @@ STATIC mp_obj_t ssl_sslcontext_wrap_socket(size_t n_args, const mp_obj_t *pos_ar return common_hal_ssl_sslcontext_wrap_socket(self, sock_obj, server_side, server_hostname); } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(ssl_sslcontext_wrap_socket_obj, 1, ssl_sslcontext_wrap_socket); +static MP_DEFINE_CONST_FUN_OBJ_KW(ssl_sslcontext_wrap_socket_obj, 1, ssl_sslcontext_wrap_socket); -STATIC const mp_rom_map_elem_t ssl_sslcontext_locals_dict_table[] = { +static const mp_rom_map_elem_t ssl_sslcontext_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_wrap_socket), MP_ROM_PTR(&ssl_sslcontext_wrap_socket_obj) }, { MP_ROM_QSTR(MP_QSTR_load_cert_chain), MP_ROM_PTR(&ssl_sslcontext_load_cert_chain_obj) }, { MP_ROM_QSTR(MP_QSTR_load_verify_locations), MP_ROM_PTR(&ssl_sslcontext_load_verify_locations_obj) }, @@ -194,7 +194,7 @@ STATIC const mp_rom_map_elem_t ssl_sslcontext_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_check_hostname), MP_ROM_PTR(&ssl_sslcontext_check_hostname_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(ssl_sslcontext_locals_dict, ssl_sslcontext_locals_dict_table); +static MP_DEFINE_CONST_DICT(ssl_sslcontext_locals_dict, ssl_sslcontext_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( ssl_sslcontext_type, diff --git a/shared-bindings/ssl/SSLSocket.c b/shared-bindings/ssl/SSLSocket.c index 5f0337a2e802..e244f77c76a9 100644 --- a/shared-bindings/ssl/SSLSocket.c +++ b/shared-bindings/ssl/SSLSocket.c @@ -40,29 +40,29 @@ //| """Automatically closes the Socket when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t ssl_sslsocket___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t ssl_sslsocket___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_ssl_sslsocket_close(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(ssl_sslsocket___exit___obj, 4, 4, ssl_sslsocket___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(ssl_sslsocket___exit___obj, 4, 4, ssl_sslsocket___exit__); //| def accept(self) -> Tuple[SSLSocket, Tuple[str, int]]: //| """Accept a connection on a listening socket of type SOCK_STREAM, //| creating a new socket of type SOCK_STREAM. //| Returns a tuple of (new_socket, remote_address)""" -STATIC mp_obj_t ssl_sslsocket_accept(mp_obj_t self_in) { +static mp_obj_t ssl_sslsocket_accept(mp_obj_t self_in) { ssl_sslsocket_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_ssl_sslsocket_accept(self); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(ssl_sslsocket_accept_obj, ssl_sslsocket_accept); +static MP_DEFINE_CONST_FUN_OBJ_1(ssl_sslsocket_accept_obj, ssl_sslsocket_accept); //| def bind(self, address: Tuple[str, int]) -> None: //| """Bind a socket to an address //| //| :param ~tuple address: tuple of (remote_address, remote_port)""" //| ... -STATIC mp_obj_t ssl_sslsocket_bind(mp_obj_t self_in, mp_obj_t addr_in) { +static mp_obj_t ssl_sslsocket_bind(mp_obj_t self_in, mp_obj_t addr_in) { ssl_sslsocket_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_obj_t *addr_items; @@ -71,36 +71,36 @@ STATIC mp_obj_t ssl_sslsocket_bind(mp_obj_t self_in, mp_obj_t addr_in) { common_hal_ssl_sslsocket_bind(self, addr_in); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(ssl_sslsocket_bind_obj, ssl_sslsocket_bind); +static MP_DEFINE_CONST_FUN_OBJ_2(ssl_sslsocket_bind_obj, ssl_sslsocket_bind); //| def close(self) -> None: //| """Closes this Socket""" -STATIC mp_obj_t ssl_sslsocket_close(mp_obj_t self_in) { +static mp_obj_t ssl_sslsocket_close(mp_obj_t self_in) { ssl_sslsocket_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_ssl_sslsocket_close(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(ssl_sslsocket_close_obj, ssl_sslsocket_close); +static MP_DEFINE_CONST_FUN_OBJ_1(ssl_sslsocket_close_obj, ssl_sslsocket_close); //| def connect(self, address: Tuple[str, int]) -> None: //| """Connect a socket to a remote address //| //| :param ~tuple address: tuple of (remote_address, remote_port)""" //| ... -STATIC mp_obj_t ssl_sslsocket_connect(mp_obj_t self_in, mp_obj_t addr_in) { +static mp_obj_t ssl_sslsocket_connect(mp_obj_t self_in, mp_obj_t addr_in) { ssl_sslsocket_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_ssl_sslsocket_connect(self, addr_in); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(ssl_sslsocket_connect_obj, ssl_sslsocket_connect); +static MP_DEFINE_CONST_FUN_OBJ_2(ssl_sslsocket_connect_obj, ssl_sslsocket_connect); //| def listen(self, backlog: int) -> None: //| """Set socket to listen for incoming connections //| //| :param ~int backlog: length of backlog queue for waiting connetions""" //| ... -STATIC mp_obj_t ssl_sslsocket_listen(mp_obj_t self_in, mp_obj_t backlog_in) { +static mp_obj_t ssl_sslsocket_listen(mp_obj_t self_in, mp_obj_t backlog_in) { ssl_sslsocket_obj_t *self = MP_OBJ_TO_PTR(self_in); int backlog = mp_obj_get_int(backlog_in); @@ -108,7 +108,7 @@ STATIC mp_obj_t ssl_sslsocket_listen(mp_obj_t self_in, mp_obj_t backlog_in) { common_hal_ssl_sslsocket_listen(self, backlog); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(ssl_sslsocket_listen_obj, ssl_sslsocket_listen); +static MP_DEFINE_CONST_FUN_OBJ_2(ssl_sslsocket_listen_obj, ssl_sslsocket_listen); //| def recv_into(self, buffer: WriteableBuffer, bufsize: int) -> int: //| """Reads some bytes from the connected remote address, writing @@ -123,7 +123,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(ssl_sslsocket_listen_obj, ssl_sslsocket_listen) //| :param bytearray buffer: buffer to receive into //| :param int bufsize: optionally, a maximum number of bytes to read.""" //| ... -STATIC mp_obj_t ssl_sslsocket_recv_into(size_t n_args, const mp_obj_t *args) { +static mp_obj_t ssl_sslsocket_recv_into(size_t n_args, const mp_obj_t *args) { ssl_sslsocket_obj_t *self = MP_OBJ_TO_PTR(args[0]); if (common_hal_ssl_sslsocket_get_closed(self)) { // Bad file number. @@ -153,7 +153,7 @@ STATIC mp_obj_t ssl_sslsocket_recv_into(size_t n_args, const mp_obj_t *args) { mp_int_t ret = common_hal_ssl_sslsocket_recv_into(self, (byte *)bufinfo.buf, len); return mp_obj_new_int_from_uint(ret); } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(ssl_sslsocket_recv_into_obj, 2, 3, ssl_sslsocket_recv_into); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(ssl_sslsocket_recv_into_obj, 2, 3, ssl_sslsocket_recv_into); //| def send(self, bytes: ReadableBuffer) -> int: //| """Send some bytes to the connected remote address. @@ -161,7 +161,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(ssl_sslsocket_recv_into_obj, 2, 3, ss //| //| :param ~bytes bytes: some bytes to send""" //| ... -STATIC mp_obj_t ssl_sslsocket_send(mp_obj_t self_in, mp_obj_t buf_in) { +static mp_obj_t ssl_sslsocket_send(mp_obj_t self_in, mp_obj_t buf_in) { ssl_sslsocket_obj_t *self = MP_OBJ_TO_PTR(self_in); if (common_hal_ssl_sslsocket_get_closed(self)) { // Bad file number. @@ -178,13 +178,13 @@ STATIC mp_obj_t ssl_sslsocket_send(mp_obj_t self_in, mp_obj_t buf_in) { } return mp_obj_new_int_from_uint(ret); } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(ssl_sslsocket_send_obj, ssl_sslsocket_send); +static MP_DEFINE_CONST_FUN_OBJ_2(ssl_sslsocket_send_obj, ssl_sslsocket_send); // //| def setsockopt(self, level: int, optname: int, value: int | ReadableBuffer) -> None: // //| """Sets socket options""" // //| ... // //| -STATIC mp_obj_t ssl_sslsocket_setsockopt(size_t n_args, const mp_obj_t *args) { +static mp_obj_t ssl_sslsocket_setsockopt(size_t n_args, const mp_obj_t *args) { ssl_sslsocket_obj_t *self = MP_OBJ_TO_PTR(args[0]); mp_obj_t level = args[1]; mp_obj_t optname = args[2]; @@ -195,7 +195,7 @@ STATIC mp_obj_t ssl_sslsocket_setsockopt(size_t n_args, const mp_obj_t *args) { return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(ssl_sslsocket_setsockopt_obj, 4, 4, ssl_sslsocket_setsockopt); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(ssl_sslsocket_setsockopt_obj, 4, 4, ssl_sslsocket_setsockopt); //| def settimeout(self, value: int) -> None: //| """Set the timeout value for this socket. @@ -203,12 +203,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(ssl_sslsocket_setsockopt_obj, 4, 4, s //| :param ~int value: timeout in seconds. 0 means non-blocking. None means block indefinitely. //| """ //| ... -STATIC mp_obj_t ssl_sslsocket_settimeout(mp_obj_t self_in, mp_obj_t timeout_in) { +static mp_obj_t ssl_sslsocket_settimeout(mp_obj_t self_in, mp_obj_t timeout_in) { ssl_sslsocket_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_ssl_sslsocket_settimeout(self, timeout_in); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(ssl_sslsocket_settimeout_obj, ssl_sslsocket_settimeout); +static MP_DEFINE_CONST_FUN_OBJ_2(ssl_sslsocket_settimeout_obj, ssl_sslsocket_settimeout); //| def setblocking(self, flag: bool) -> Optional[int]: //| """Set the blocking behaviour of this socket. @@ -217,7 +217,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(ssl_sslsocket_settimeout_obj, ssl_sslsocket_set //| ... //| // method socket.setblocking(flag) -STATIC mp_obj_t ssl_sslsocket_setblocking(mp_obj_t self_in, mp_obj_t blocking) { +static mp_obj_t ssl_sslsocket_setblocking(mp_obj_t self_in, mp_obj_t blocking) { ssl_sslsocket_obj_t *self = MP_OBJ_TO_PTR(self_in); if (mp_obj_is_true(blocking)) { common_hal_ssl_sslsocket_settimeout(self, mp_const_none); @@ -226,9 +226,9 @@ STATIC mp_obj_t ssl_sslsocket_setblocking(mp_obj_t self_in, mp_obj_t blocking) { } return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(ssl_sslsocket_setblocking_obj, ssl_sslsocket_setblocking); +static MP_DEFINE_CONST_FUN_OBJ_2(ssl_sslsocket_setblocking_obj, ssl_sslsocket_setblocking); -STATIC const mp_rom_map_elem_t ssl_sslsocket_locals_dict_table[] = { +static const mp_rom_map_elem_t ssl_sslsocket_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&ssl_sslsocket___exit___obj) }, { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&ssl_sslsocket_close_obj) }, @@ -245,7 +245,7 @@ STATIC const mp_rom_map_elem_t ssl_sslsocket_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_settimeout), MP_ROM_PTR(&ssl_sslsocket_settimeout_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(ssl_sslsocket_locals_dict, ssl_sslsocket_locals_dict_table); +static MP_DEFINE_CONST_DICT(ssl_sslsocket_locals_dict, ssl_sslsocket_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( ssl_sslsocket_type, diff --git a/shared-bindings/ssl/__init__.c b/shared-bindings/ssl/__init__.c index 2af83a328df0..9a5f94636a8d 100644 --- a/shared-bindings/ssl/__init__.c +++ b/shared-bindings/ssl/__init__.c @@ -23,7 +23,7 @@ //| ... //| -STATIC mp_obj_t ssl_create_default_context(void) { +static mp_obj_t ssl_create_default_context(void) { ssl_sslcontext_obj_t *s = mp_obj_malloc(ssl_sslcontext_obj_t, &ssl_sslcontext_type); common_hal_ssl_create_default_context(s); @@ -31,7 +31,7 @@ STATIC mp_obj_t ssl_create_default_context(void) { } MP_DEFINE_CONST_FUN_OBJ_0(ssl_create_default_context_obj, ssl_create_default_context); -STATIC const mp_rom_map_elem_t ssl_globals_table[] = { +static const mp_rom_map_elem_t ssl_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_ssl) }, { MP_ROM_QSTR(MP_QSTR_create_default_context), MP_ROM_PTR(&ssl_create_default_context_obj) }, @@ -39,7 +39,7 @@ STATIC const mp_rom_map_elem_t ssl_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_SSLContext), MP_ROM_PTR(&ssl_sslcontext_type) }, }; -STATIC MP_DEFINE_CONST_DICT(ssl_globals, ssl_globals_table); +static MP_DEFINE_CONST_DICT(ssl_globals, ssl_globals_table); const mp_obj_module_t ssl_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/storage/__init__.c b/shared-bindings/storage/__init__.c index 77c5441336de..e046c1187974 100644 --- a/shared-bindings/storage/__init__.c +++ b/shared-bindings/storage/__init__.c @@ -38,7 +38,7 @@ //| """ //| ... //| -STATIC mp_obj_t storage_mount(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t storage_mount(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_filesystem, ARG_mount_path, ARG_readonly }; static const mp_arg_t allowed_args[] = { { MP_QSTR_filesystem, MP_ARG_OBJ | MP_ARG_REQUIRED }, @@ -75,7 +75,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(storage_mount_obj, 0, storage_mount); //| This is the CircuitPython analog to the UNIX ``umount`` command.""" //| ... //| -STATIC mp_obj_t storage_umount(mp_obj_t mnt_in) { +static mp_obj_t storage_umount(mp_obj_t mnt_in) { if (mp_obj_is_str(mnt_in)) { common_hal_storage_umount_path(mp_obj_str_get_str(mnt_in)); } else { @@ -102,7 +102,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(storage_umount_obj, storage_umount); //| filesystem will be corrupted.""" //| ... //| -STATIC mp_obj_t storage_remount(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t storage_remount(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_mount_path, ARG_readonly, ARG_disable_concurrent_write_protection }; static const mp_arg_t allowed_args[] = { { MP_QSTR_mount_path, MP_ARG_OBJ | MP_ARG_REQUIRED }, @@ -125,7 +125,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(storage_remount_obj, 0, storage_remount); //| """Retrieves the mount object associated with the mount path""" //| ... //| -STATIC mp_obj_t storage_getmount(const mp_obj_t mnt_in) { +static mp_obj_t storage_getmount(const mp_obj_t mnt_in) { return common_hal_storage_getmount(mp_obj_str_get_str(mnt_in)); } MP_DEFINE_CONST_FUN_OBJ_1(storage_getmount_obj, storage_getmount); @@ -153,7 +153,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(storage_getmount_obj, storage_getmount); //| ... //| -STATIC mp_obj_t storage_erase_filesystem(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t storage_erase_filesystem(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_extended }; static const mp_arg_t allowed_args[] = { { MP_QSTR_extended, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_none} }, @@ -182,7 +182,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(storage_erase_filesystem_obj, 0, storage_erase_filesy //| Can be called in ``boot.py``, before USB is connected.""" //| ... //| -STATIC mp_obj_t storage_disable_usb_drive(void) { +static mp_obj_t storage_disable_usb_drive(void) { #if CIRCUITPY_USB_DEVICE && CIRCUITPY_USB_MSC if (!common_hal_storage_disable_usb_drive()) { #else @@ -207,7 +207,7 @@ MP_DEFINE_CONST_FUN_OBJ_0(storage_disable_usb_drive_obj, storage_disable_usb_dri //| """ //| ... //| -STATIC mp_obj_t storage_enable_usb_drive(void) { +static mp_obj_t storage_enable_usb_drive(void) { #if CIRCUITPY_USB_DEVICE && CIRCUITPY_USB_MSC if (!common_hal_storage_enable_usb_drive()) { #else @@ -219,7 +219,7 @@ STATIC mp_obj_t storage_enable_usb_drive(void) { } MP_DEFINE_CONST_FUN_OBJ_0(storage_enable_usb_drive_obj, storage_enable_usb_drive); -STATIC const mp_rom_map_elem_t storage_module_globals_table[] = { +static const mp_rom_map_elem_t storage_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_storage) }, { MP_ROM_QSTR(MP_QSTR_mount), MP_ROM_PTR(&storage_mount_obj) }, @@ -294,7 +294,7 @@ STATIC const mp_rom_map_elem_t storage_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_VfsFat), MP_ROM_PTR(&mp_fat_vfs_type) }, }; -STATIC MP_DEFINE_CONST_DICT(storage_module_globals, storage_module_globals_table); +static MP_DEFINE_CONST_DICT(storage_module_globals, storage_module_globals_table); const mp_obj_module_t storage_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/struct/__init__.c b/shared-bindings/struct/__init__.c index 93b7666bf992..eded8b1a3dab 100644 --- a/shared-bindings/struct/__init__.c +++ b/shared-bindings/struct/__init__.c @@ -33,7 +33,7 @@ //| ... //| -STATIC mp_obj_t struct_calcsize(mp_obj_t fmt_in) { +static mp_obj_t struct_calcsize(mp_obj_t fmt_in) { return MP_OBJ_NEW_SMALL_INT(shared_modules_struct_calcsize(fmt_in)); } @@ -45,7 +45,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(struct_calcsize_obj, struct_calcsize); //| ... //| -STATIC mp_obj_t struct_pack(size_t n_args, const mp_obj_t *args) { +static mp_obj_t struct_pack(size_t n_args, const mp_obj_t *args) { mp_int_t size = MP_OBJ_SMALL_INT_VALUE(struct_calcsize(args[0])); vstr_t vstr; vstr_init_len(&vstr, size); @@ -63,7 +63,7 @@ MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(struct_pack_obj, 1, MP_OBJ_FUN_ARGS_MAX, str //| ... //| -STATIC mp_obj_t struct_pack_into(size_t n_args, const mp_obj_t *args) { +static mp_obj_t struct_pack_into(size_t n_args, const mp_obj_t *args) { mp_buffer_info_t bufinfo; mp_get_buffer_raise(args[1], &bufinfo, MP_BUFFER_WRITE); mp_int_t offset = mp_obj_get_int(args[2]); @@ -90,7 +90,7 @@ MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(struct_pack_into_obj, 3, MP_OBJ_FUN_ARGS_MAX //| ... //| -STATIC mp_obj_t struct_unpack(size_t n_args, const mp_obj_t *args) { +static mp_obj_t struct_unpack(size_t n_args, const mp_obj_t *args) { mp_buffer_info_t bufinfo; mp_get_buffer_raise(args[1], &bufinfo, MP_BUFFER_READ); byte *p = bufinfo.buf; @@ -109,7 +109,7 @@ MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(struct_unpack_obj, 2, 3, struct_unpack); //| ... //| -STATIC mp_obj_t struct_unpack_from(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t struct_unpack_from(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_format, ARG_buffer, ARG_offset }; static const mp_arg_t allowed_args[] = { { MP_QSTR_format, MP_ARG_REQUIRED | MP_ARG_OBJ, {} }, @@ -141,7 +141,7 @@ STATIC mp_obj_t struct_unpack_from(size_t n_args, const mp_obj_t *pos_args, mp_m } MP_DEFINE_CONST_FUN_OBJ_KW(struct_unpack_from_obj, 0, struct_unpack_from); -STATIC const mp_rom_map_elem_t mp_module_struct_globals_table[] = { +static const mp_rom_map_elem_t mp_module_struct_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_struct) }, { MP_ROM_QSTR(MP_QSTR_calcsize), MP_ROM_PTR(&struct_calcsize_obj) }, { MP_ROM_QSTR(MP_QSTR_pack), MP_ROM_PTR(&struct_pack_obj) }, @@ -150,7 +150,7 @@ STATIC const mp_rom_map_elem_t mp_module_struct_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_unpack_from), MP_ROM_PTR(&struct_unpack_from_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(mp_module_struct_globals, mp_module_struct_globals_table); +static MP_DEFINE_CONST_DICT(mp_module_struct_globals, mp_module_struct_globals_table); const mp_obj_module_t struct_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/supervisor/RunReason.c b/shared-bindings/supervisor/RunReason.c index 4d25d7be3f64..5fc29fa27b6a 100644 --- a/shared-bindings/supervisor/RunReason.c +++ b/shared-bindings/supervisor/RunReason.c @@ -35,7 +35,7 @@ MAKE_ENUM_MAP(supervisor_run_reason) { MAKE_ENUM_MAP_ENTRY(run_reason, SUPERVISOR_RELOAD), MAKE_ENUM_MAP_ENTRY(run_reason, REPL_RELOAD), }; -STATIC MP_DEFINE_CONST_DICT(supervisor_run_reason_locals_dict, supervisor_run_reason_locals_table); +static MP_DEFINE_CONST_DICT(supervisor_run_reason_locals_dict, supervisor_run_reason_locals_table); MAKE_PRINTER(supervisor, supervisor_run_reason); diff --git a/shared-bindings/supervisor/Runtime.c b/shared-bindings/supervisor/Runtime.c index 3a63816ccf4d..5c4754b85f2e 100644 --- a/shared-bindings/supervisor/Runtime.c +++ b/shared-bindings/supervisor/Runtime.c @@ -24,7 +24,7 @@ #include "tusb.h" #endif -STATIC supervisor_run_reason_t _run_reason; +static supervisor_run_reason_t _run_reason; // TODO: add REPL to description once it is operational @@ -45,7 +45,7 @@ STATIC supervisor_run_reason_t _run_reason; //| usb_connected: bool //| """Returns the USB enumeration status (read-only).""" -STATIC mp_obj_t supervisor_runtime_get_usb_connected(mp_obj_t self) { +static mp_obj_t supervisor_runtime_get_usb_connected(mp_obj_t self) { #if CIRCUITPY_USB_DEVICE return mp_obj_new_bool(tud_ready()); #else @@ -59,7 +59,7 @@ MP_PROPERTY_GETTER(supervisor_runtime_usb_connected_obj, //| serial_connected: bool //| """Returns the USB serial communication status (read-only).""" -STATIC mp_obj_t supervisor_runtime_get_serial_connected(mp_obj_t self) { +static mp_obj_t supervisor_runtime_get_serial_connected(mp_obj_t self) { return mp_obj_new_bool(serial_connected()); } MP_DEFINE_CONST_FUN_OBJ_1(supervisor_runtime_get_serial_connected_obj, supervisor_runtime_get_serial_connected); @@ -81,7 +81,7 @@ MP_PROPERTY_GETTER(supervisor_runtime_serial_connected_obj, //| Since ``0`` acts as ``False``, ``if supervisor.runtime.serial_byes_available:`` //| will still work. //| """ -STATIC mp_obj_t supervisor_runtime_get_serial_bytes_available(mp_obj_t self) { +static mp_obj_t supervisor_runtime_get_serial_bytes_available(mp_obj_t self) { return MP_OBJ_NEW_SMALL_INT(serial_bytes_available()); } MP_DEFINE_CONST_FUN_OBJ_1(supervisor_runtime_get_serial_bytes_available_obj, supervisor_runtime_get_serial_bytes_available); @@ -99,7 +99,7 @@ void supervisor_set_run_reason(supervisor_run_reason_t run_reason) { //| run_reason: RunReason //| """Why CircuitPython started running this particular time (read-only).""" -STATIC mp_obj_t supervisor_runtime_get_run_reason(mp_obj_t self) { +static mp_obj_t supervisor_runtime_get_run_reason(mp_obj_t self) { return cp_enum_find(&supervisor_run_reason_type, _run_reason); } MP_DEFINE_CONST_FUN_OBJ_1(supervisor_runtime_get_run_reason_obj, supervisor_runtime_get_run_reason); @@ -112,7 +112,7 @@ MP_PROPERTY_GETTER(supervisor_runtime_run_reason_obj, //| //| **Limitations**: Raises ``NotImplementedError`` on builds that do not implement ``safemode.py``. //| """ -STATIC mp_obj_t supervisor_runtime_get_safe_mode_reason(mp_obj_t self) { +static mp_obj_t supervisor_runtime_get_safe_mode_reason(mp_obj_t self) { #if CIRCUITPY_SAFEMODE_PY return cp_enum_find(&supervisor_safe_mode_reason_type, get_safe_mode()); #else @@ -127,12 +127,12 @@ MP_PROPERTY_GETTER(supervisor_runtime_safe_mode_reason_obj, //| autoreload: bool //| """Whether CircuitPython may autoreload based on workflow writes to the filesystem.""" //| -STATIC mp_obj_t supervisor_runtime_get_autoreload(mp_obj_t self) { +static mp_obj_t supervisor_runtime_get_autoreload(mp_obj_t self) { return mp_obj_new_bool(autoreload_is_enabled()); } MP_DEFINE_CONST_FUN_OBJ_1(supervisor_runtime_get_autoreload_obj, supervisor_runtime_get_autoreload); -STATIC mp_obj_t supervisor_runtime_set_autoreload(mp_obj_t self, mp_obj_t state_in) { +static mp_obj_t supervisor_runtime_set_autoreload(mp_obj_t self, mp_obj_t state_in) { if (mp_obj_is_true(state_in)) { autoreload_enable(); } else { @@ -150,7 +150,7 @@ MP_PROPERTY_GETSET(supervisor_runtime_autoreload_obj, //| """Enable/Disable ble workflow until a reset. This prevents BLE advertising outside of the VM and //| the services used for it.""" //| -STATIC mp_obj_t supervisor_runtime_get_ble_workflow(mp_obj_t self) { +static mp_obj_t supervisor_runtime_get_ble_workflow(mp_obj_t self) { #if CIRCUITPY_BLE_FILE_SERVICE && CIRCUITPY_SERIAL_BLE return mp_obj_new_bool(supervisor_bluetooth_workflow_is_enabled()); #else @@ -159,7 +159,7 @@ STATIC mp_obj_t supervisor_runtime_get_ble_workflow(mp_obj_t self) { } MP_DEFINE_CONST_FUN_OBJ_1(supervisor_runtime_get_ble_workflow_obj, supervisor_runtime_get_ble_workflow); -STATIC mp_obj_t supervisor_runtime_set_ble_workflow(mp_obj_t self, mp_obj_t state_in) { +static mp_obj_t supervisor_runtime_set_ble_workflow(mp_obj_t self, mp_obj_t state_in) { #if CIRCUITPY_BLE_FILE_SERVICE && CIRCUITPY_SERIAL_BLE if (mp_obj_is_true(state_in)) { supervisor_bluetooth_enable_workflow(); @@ -182,12 +182,12 @@ MP_PROPERTY_GETSET(supervisor_runtime_ble_workflow_obj, //| after the current code finishes and the status LED is used to show //| the finish state.""" //| -STATIC mp_obj_t supervisor_runtime_get_rgb_status_brightness(mp_obj_t self) { +static mp_obj_t supervisor_runtime_get_rgb_status_brightness(mp_obj_t self) { return MP_OBJ_NEW_SMALL_INT(get_status_brightness()); } MP_DEFINE_CONST_FUN_OBJ_1(supervisor_runtime_get_rgb_status_brightness_obj, supervisor_runtime_get_rgb_status_brightness); -STATIC mp_obj_t supervisor_runtime_set_rgb_status_brightness(mp_obj_t self, mp_obj_t lvl) { +static mp_obj_t supervisor_runtime_set_rgb_status_brightness(mp_obj_t self, mp_obj_t lvl) { #if CIRCUITPY_STATUS_LED // This must be int. If cast to uint8_t first, will never raise a ValueError. set_status_brightness((uint8_t)mp_arg_validate_int_range(mp_obj_get_int(lvl), 0, 255, MP_QSTR_brightness)); @@ -202,7 +202,7 @@ MP_PROPERTY_GETSET(supervisor_runtime_rgb_status_brightness_obj, (mp_obj_t)&supervisor_runtime_get_rgb_status_brightness_obj, (mp_obj_t)&supervisor_runtime_set_rgb_status_brightness_obj); -STATIC const mp_rom_map_elem_t supervisor_runtime_locals_dict_table[] = { +static const mp_rom_map_elem_t supervisor_runtime_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_usb_connected), MP_ROM_PTR(&supervisor_runtime_usb_connected_obj) }, { MP_ROM_QSTR(MP_QSTR_serial_connected), MP_ROM_PTR(&supervisor_runtime_serial_connected_obj) }, { MP_ROM_QSTR(MP_QSTR_serial_bytes_available), MP_ROM_PTR(&supervisor_runtime_serial_bytes_available_obj) }, @@ -213,7 +213,7 @@ STATIC const mp_rom_map_elem_t supervisor_runtime_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_rgb_status_brightness), MP_ROM_PTR(&supervisor_runtime_rgb_status_brightness_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(supervisor_runtime_locals_dict, supervisor_runtime_locals_dict_table); +static MP_DEFINE_CONST_DICT(supervisor_runtime_locals_dict, supervisor_runtime_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( supervisor_runtime_type, diff --git a/shared-bindings/supervisor/SafeModeReason.c b/shared-bindings/supervisor/SafeModeReason.c index e974cf34dd1a..e2cbac3b9a7d 100644 --- a/shared-bindings/supervisor/SafeModeReason.c +++ b/shared-bindings/supervisor/SafeModeReason.c @@ -131,7 +131,7 @@ MAKE_ENUM_MAP(supervisor_safe_mode_reason) { MAKE_ENUM_MAP_ENTRY(safe_mode_reason, WATCHDOG), }; -STATIC MP_DEFINE_CONST_DICT(supervisor_safe_mode_reason_locals_dict, supervisor_safe_mode_reason_locals_table); +static MP_DEFINE_CONST_DICT(supervisor_safe_mode_reason_locals_dict, supervisor_safe_mode_reason_locals_table); MAKE_PRINTER(supervisor, supervisor_safe_mode_reason); diff --git a/shared-bindings/supervisor/StatusBar.c b/shared-bindings/supervisor/StatusBar.c index af041facf46f..46e7962cf057 100644 --- a/shared-bindings/supervisor/StatusBar.c +++ b/shared-bindings/supervisor/StatusBar.c @@ -33,7 +33,7 @@ //| If set to ``False``, status bar will be cleared and then disabled. //| May be set in ``boot.py`` or later. Persists across soft restarts. //| """ -STATIC mp_obj_t supervisor_status_bar_get_console(mp_obj_t self_in) { +static mp_obj_t supervisor_status_bar_get_console(mp_obj_t self_in) { #if CIRCUITPY_STATUS_BAR supervisor_status_bar_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bool(shared_module_supervisor_status_bar_get_console(self)); @@ -43,7 +43,7 @@ STATIC mp_obj_t supervisor_status_bar_get_console(mp_obj_t self_in) { } MP_DEFINE_CONST_FUN_OBJ_1(supervisor_status_bar_get_console_obj, supervisor_status_bar_get_console); -STATIC mp_obj_t supervisor_status_bar_set_console(mp_obj_t self_in, mp_obj_t state_in) { +static mp_obj_t supervisor_status_bar_set_console(mp_obj_t self_in, mp_obj_t state_in) { #if CIRCUITPY_STATUS_BAR supervisor_status_bar_obj_t *self = MP_OBJ_TO_PTR(self_in); shared_module_supervisor_status_bar_set_console(self, mp_obj_is_true(state_in)); @@ -65,7 +65,7 @@ MP_PROPERTY_GETSET(supervisor_status_bar_console_obj, //| Not available if `terminalio` is not available. //| """ //| -STATIC mp_obj_t supervisor_status_bar_get_display(mp_obj_t self_in) { +static mp_obj_t supervisor_status_bar_get_display(mp_obj_t self_in) { #if CIRCUITPY_STATUS_BAR && CIRCUITPY_TERMINALIO supervisor_status_bar_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bool(shared_module_supervisor_status_bar_get_display(self)); @@ -75,7 +75,7 @@ STATIC mp_obj_t supervisor_status_bar_get_display(mp_obj_t self_in) { } MP_DEFINE_CONST_FUN_OBJ_1(supervisor_status_bar_get_display_obj, supervisor_status_bar_get_display); -STATIC mp_obj_t supervisor_status_bar_set_display(mp_obj_t self_in, mp_obj_t state_in) { +static mp_obj_t supervisor_status_bar_set_display(mp_obj_t self_in, mp_obj_t state_in) { #if CIRCUITPY_STATUS_BAR && CIRCUITPY_TERMINALIO supervisor_status_bar_obj_t *self = MP_OBJ_TO_PTR(self_in); shared_module_supervisor_status_bar_set_display(self, mp_obj_is_true(state_in)); @@ -91,12 +91,12 @@ MP_PROPERTY_GETSET(supervisor_status_bar_display_obj, (mp_obj_t)&supervisor_status_bar_set_display_obj); -STATIC const mp_rom_map_elem_t supervisor_status_bar_locals_dict_table[] = { +static const mp_rom_map_elem_t supervisor_status_bar_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_console), MP_ROM_PTR(&supervisor_status_bar_console_obj) }, { MP_ROM_QSTR(MP_QSTR_display), MP_ROM_PTR(&supervisor_status_bar_display_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(supervisor_status_bar_locals_dict, supervisor_status_bar_locals_dict_table); +static MP_DEFINE_CONST_DICT(supervisor_status_bar_locals_dict, supervisor_status_bar_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( supervisor_status_bar_type, diff --git a/shared-bindings/supervisor/__init__.c b/shared-bindings/supervisor/__init__.c index e026fd91d482..e09094ff88e7 100644 --- a/shared-bindings/supervisor/__init__.c +++ b/shared-bindings/supervisor/__init__.c @@ -45,7 +45,7 @@ //| """Reload the main Python code and run it (equivalent to hitting Ctrl-D at the REPL).""" //| ... //| -STATIC mp_obj_t supervisor_reload(void) { +static mp_obj_t supervisor_reload(void) { reload_initiate(RUN_REASON_SUPERVISOR_RELOAD); return mp_const_none; } @@ -92,7 +92,7 @@ MP_DEFINE_CONST_FUN_OBJ_0(supervisor_reload_obj, supervisor_reload); //| reset to the standard search sequence.""" //| ... //| -STATIC mp_obj_t supervisor_set_next_code_file(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t supervisor_set_next_code_file(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { static const mp_arg_t allowed_args[] = { { MP_QSTR_filename, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_rom_obj = mp_const_none} }, { MP_QSTR_reload_on_success, MP_ARG_KW_ONLY | MP_ARG_BOOL, {.u_bool = false} }, @@ -210,7 +210,7 @@ MP_DEFINE_CONST_FUN_OBJ_0(supervisor_ticks_ms_obj, supervisor_ticks_ms); //| Only code (main or boot) runs are considered, not REPL runs.""" //| ... //| -STATIC mp_obj_t supervisor_get_previous_traceback(void) { +static mp_obj_t supervisor_get_previous_traceback(void) { if (prev_traceback_string) { size_t len = strlen(prev_traceback_string); if (len > 0) { @@ -230,7 +230,7 @@ MP_DEFINE_CONST_FUN_OBJ_0(supervisor_get_previous_traceback_obj, supervisor_get_ //| """Reset the CircuitPython serial terminal with new dimensions.""" //| ... //| -STATIC mp_obj_t supervisor_reset_terminal(mp_obj_t x_pixels, mp_obj_t y_pixels) { +static mp_obj_t supervisor_reset_terminal(mp_obj_t x_pixels, mp_obj_t y_pixels) { #if CIRCUITPY_DISPLAYIO supervisor_stop_terminal(); supervisor_start_terminal(mp_obj_get_int(x_pixels), mp_obj_get_int(y_pixels)); @@ -258,7 +258,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(supervisor_reset_terminal_obj, supervisor_reset_termin //| """ //| ... //| -STATIC mp_obj_t supervisor_set_usb_identification(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t supervisor_set_usb_identification(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { #if CIRCUITPY_USB_DEVICE && CIRCUITPY_USB_IDENTIFICATION static const mp_arg_t allowed_args[] = { { MP_QSTR_manufacturer, MP_ARG_OBJ, {.u_rom_obj = mp_const_none} }, @@ -310,7 +310,7 @@ STATIC mp_obj_t supervisor_set_usb_identification(size_t n_args, const mp_obj_t } MP_DEFINE_CONST_FUN_OBJ_KW(supervisor_set_usb_identification_obj, 0, supervisor_set_usb_identification); -STATIC const mp_rom_map_elem_t supervisor_module_globals_table[] = { +static const mp_rom_map_elem_t supervisor_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_supervisor) }, { MP_ROM_QSTR(MP_QSTR_runtime), MP_ROM_PTR(&common_hal_supervisor_runtime_obj) }, { MP_ROM_QSTR(MP_QSTR_reload), MP_ROM_PTR(&supervisor_reload_obj) }, @@ -328,7 +328,7 @@ STATIC const mp_rom_map_elem_t supervisor_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_status_bar), MP_ROM_PTR(&shared_module_supervisor_status_bar_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(supervisor_module_globals, supervisor_module_globals_table); +static MP_DEFINE_CONST_DICT(supervisor_module_globals, supervisor_module_globals_table); const mp_obj_module_t supervisor_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/synthio/Biquad.c b/shared-bindings/synthio/Biquad.c index a687c759d1db..79a9fa4593f4 100644 --- a/shared-bindings/synthio/Biquad.c +++ b/shared-bindings/synthio/Biquad.c @@ -49,7 +49,7 @@ static const mp_arg_t biquad_properties[] = { //| https://github.com/WebAudio/Audio-EQ-Cookbook/blob/main/Audio-EQ-Cookbook.txt //| """ //| -STATIC mp_obj_t synthio_biquad_make_new(const mp_obj_type_t *type_in, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t synthio_biquad_make_new(const mp_obj_type_t *type_in, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { mp_arg_val_t args[MP_ARRAY_SIZE(biquad_properties)]; mp_arg_parse_all_kw_array(n_args, n_kw, all_args, MP_ARRAY_SIZE(biquad_properties), biquad_properties, args); diff --git a/shared-bindings/synthio/LFO.c b/shared-bindings/synthio/LFO.c index 93951aa6ac2e..328050e783f5 100644 --- a/shared-bindings/synthio/LFO.c +++ b/shared-bindings/synthio/LFO.c @@ -13,7 +13,7 @@ #include "shared-bindings/synthio/LFO.h" #include "shared-module/synthio/LFO.h" -STATIC const uint16_t triangle[] = {0, 32767, 0, -32767}; +static const uint16_t triangle[] = {0, 32767, 0, -32767}; //| class LFO: //| """A low-frequency oscillator block @@ -88,7 +88,7 @@ static const mp_arg_t lfo_properties[] = { { MP_QSTR_interpolate, MP_ARG_OBJ | MP_ARG_KW_ONLY, {.u_obj = MP_ROM_INT(1) } }, }; -STATIC mp_obj_t synthio_lfo_make_new(const mp_obj_type_t *type_in, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t synthio_lfo_make_new(const mp_obj_type_t *type_in, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_waveform }; // others never directly referred to by argument number mp_arg_val_t args[MP_ARRAY_SIZE(lfo_properties)]; @@ -117,7 +117,7 @@ STATIC mp_obj_t synthio_lfo_make_new(const mp_obj_type_t *type_in, size_t n_args //| waveform: Optional[ReadableBuffer] //| """The waveform of this lfo. (read-only, but the values in the buffer may be modified dynamically)""" -STATIC mp_obj_t synthio_lfo_get_waveform(mp_obj_t self_in) { +static mp_obj_t synthio_lfo_get_waveform(mp_obj_t self_in) { synthio_lfo_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_synthio_lfo_get_waveform_obj(self); } @@ -128,13 +128,13 @@ MP_PROPERTY_GETTER(synthio_lfo_waveform_obj, //| rate: BlockInput //| """The rate (in Hz) at which the LFO cycles through its waveform""" -STATIC mp_obj_t synthio_lfo_get_rate(mp_obj_t self_in) { +static mp_obj_t synthio_lfo_get_rate(mp_obj_t self_in) { synthio_lfo_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_synthio_lfo_get_rate_obj(self); } MP_DEFINE_CONST_FUN_OBJ_1(synthio_lfo_get_rate_obj, synthio_lfo_get_rate); -STATIC mp_obj_t synthio_lfo_set_rate(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t synthio_lfo_set_rate(mp_obj_t self_in, mp_obj_t arg) { synthio_lfo_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_synthio_lfo_set_rate_obj(self, arg); return mp_const_none; @@ -147,13 +147,13 @@ MP_PROPERTY_GETSET(synthio_lfo_rate_obj, //| offset: BlockInput //| """An additive value applied to the LFO's output""" -STATIC mp_obj_t synthio_lfo_get_offset(mp_obj_t self_in) { +static mp_obj_t synthio_lfo_get_offset(mp_obj_t self_in) { synthio_lfo_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_synthio_lfo_get_offset_obj(self); } MP_DEFINE_CONST_FUN_OBJ_1(synthio_lfo_get_offset_obj, synthio_lfo_get_offset); -STATIC mp_obj_t synthio_lfo_set_offset(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t synthio_lfo_set_offset(mp_obj_t self_in, mp_obj_t arg) { synthio_lfo_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_synthio_lfo_set_offset_obj(self, arg); return mp_const_none; @@ -165,13 +165,13 @@ MP_PROPERTY_GETSET(synthio_lfo_offset_obj, //| phase_offset: BlockInput //| """An additive value applied to the LFO's phase""" -STATIC mp_obj_t synthio_lfo_get_phase_offset(mp_obj_t self_in) { +static mp_obj_t synthio_lfo_get_phase_offset(mp_obj_t self_in) { synthio_lfo_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_synthio_lfo_get_phase_offset_obj(self); } MP_DEFINE_CONST_FUN_OBJ_1(synthio_lfo_get_phase_offset_obj, synthio_lfo_get_phase_offset); -STATIC mp_obj_t synthio_lfo_set_phase_offset(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t synthio_lfo_set_phase_offset(mp_obj_t self_in, mp_obj_t arg) { synthio_lfo_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_synthio_lfo_set_phase_offset_obj(self, arg); return mp_const_none; @@ -183,13 +183,13 @@ MP_PROPERTY_GETSET(synthio_lfo_phase_offset_obj, //| scale: BlockInput //| """An multiplier value applied to the LFO's output""" -STATIC mp_obj_t synthio_lfo_get_scale(mp_obj_t self_in) { +static mp_obj_t synthio_lfo_get_scale(mp_obj_t self_in) { synthio_lfo_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_synthio_lfo_get_scale_obj(self); } MP_DEFINE_CONST_FUN_OBJ_1(synthio_lfo_get_scale_obj, synthio_lfo_get_scale); -STATIC mp_obj_t synthio_lfo_set_scale(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t synthio_lfo_set_scale(mp_obj_t self_in, mp_obj_t arg) { synthio_lfo_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_synthio_lfo_set_scale_obj(self, arg); return mp_const_none; @@ -204,13 +204,13 @@ MP_PROPERTY_GETSET(synthio_lfo_scale_obj, //| """True if the waveform should stop when it reaches its last output value, false if it should re-start at the beginning of its waveform //| //| This applies to the ``phase`` *before* the addition of any ``phase_offset`` """ -STATIC mp_obj_t synthio_lfo_get_once(mp_obj_t self_in) { +static mp_obj_t synthio_lfo_get_once(mp_obj_t self_in) { synthio_lfo_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bool(common_hal_synthio_lfo_get_once(self)); } MP_DEFINE_CONST_FUN_OBJ_1(synthio_lfo_get_once_obj, synthio_lfo_get_once); -STATIC mp_obj_t synthio_lfo_set_once(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t synthio_lfo_set_once(mp_obj_t self_in, mp_obj_t arg) { synthio_lfo_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_synthio_lfo_set_once(self, mp_obj_is_true(arg)); return mp_const_none; @@ -224,13 +224,13 @@ MP_PROPERTY_GETSET(synthio_lfo_once_obj, //| //| interpolate: bool //| """True if the waveform should perform linear interpolation between values""" -STATIC mp_obj_t synthio_lfo_get_interpolate(mp_obj_t self_in) { +static mp_obj_t synthio_lfo_get_interpolate(mp_obj_t self_in) { synthio_lfo_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bool(common_hal_synthio_lfo_get_interpolate(self)); } MP_DEFINE_CONST_FUN_OBJ_1(synthio_lfo_get_interpolate_obj, synthio_lfo_get_interpolate); -STATIC mp_obj_t synthio_lfo_set_interpolate(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t synthio_lfo_set_interpolate(mp_obj_t self_in, mp_obj_t arg) { synthio_lfo_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_synthio_lfo_set_interpolate(self, mp_obj_is_true(arg)); return mp_const_none; @@ -244,7 +244,7 @@ MP_PROPERTY_GETSET(synthio_lfo_interpolate_obj, //| //| phase: float //| """The phase of the oscillator, in the range 0 to 1 (read-only)""" -STATIC mp_obj_t synthio_lfo_get_phase(mp_obj_t self_in) { +static mp_obj_t synthio_lfo_get_phase(mp_obj_t self_in) { synthio_lfo_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_float(common_hal_synthio_lfo_get_phase(self)); } @@ -257,7 +257,7 @@ MP_PROPERTY_GETTER(synthio_lfo_phase_obj, //| //| value: float //| """The value of the oscillator (read-only)""" -STATIC mp_obj_t synthio_lfo_get_value(mp_obj_t self_in) { +static mp_obj_t synthio_lfo_get_value(mp_obj_t self_in) { synthio_lfo_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_float(common_hal_synthio_lfo_get_value(self)); } @@ -271,7 +271,7 @@ MP_PROPERTY_GETTER(synthio_lfo_value_obj, //| def retrigger(self): //| """Reset the LFO's internal index to the start of the waveform. Most useful when it its `once` property is `True`.""" //| -STATIC mp_obj_t synthio_lfo_retrigger(mp_obj_t self_in) { +static mp_obj_t synthio_lfo_retrigger(mp_obj_t self_in) { synthio_lfo_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_synthio_lfo_retrigger(self); return mp_const_none; @@ -283,7 +283,7 @@ static void lfo_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t properties_print_helper(print, self_in, lfo_properties, MP_ARRAY_SIZE(lfo_properties)); } -STATIC const mp_rom_map_elem_t synthio_lfo_locals_dict_table[] = { +static const mp_rom_map_elem_t synthio_lfo_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_waveform), MP_ROM_PTR(&synthio_lfo_waveform_obj) }, { MP_ROM_QSTR(MP_QSTR_rate), MP_ROM_PTR(&synthio_lfo_rate_obj) }, { MP_ROM_QSTR(MP_QSTR_scale), MP_ROM_PTR(&synthio_lfo_scale_obj) }, @@ -295,10 +295,10 @@ STATIC const mp_rom_map_elem_t synthio_lfo_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_phase), MP_ROM_PTR(&synthio_lfo_phase_obj) }, { MP_ROM_QSTR(MP_QSTR_retrigger), MP_ROM_PTR(&synthio_lfo_retrigger_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(synthio_lfo_locals_dict, synthio_lfo_locals_dict_table); +static MP_DEFINE_CONST_DICT(synthio_lfo_locals_dict, synthio_lfo_locals_dict_table); -STATIC const synthio_block_proto_t lfo_proto = { +static const synthio_block_proto_t lfo_proto = { MP_PROTO_IMPLEMENT(MP_QSTR_synthio_block) .tick = common_hal_synthio_lfo_tick, }; diff --git a/shared-bindings/synthio/Math.c b/shared-bindings/synthio/Math.c index 0a3b8a875b14..e2c7e40900a0 100644 --- a/shared-bindings/synthio/Math.c +++ b/shared-bindings/synthio/Math.c @@ -14,7 +14,7 @@ #include "shared-module/synthio/Math.h" static const mp_arg_t math_properties[4]; -STATIC mp_obj_t synthio_math_make_new_common(mp_arg_val_t args[MP_ARRAY_SIZE(math_properties)]); +static mp_obj_t synthio_math_make_new_common(mp_arg_val_t args[MP_ARRAY_SIZE(math_properties)]); MAKE_ENUM_VALUE(synthio_math_operation_type, math_op, SUM, OP_SUM); MAKE_ENUM_VALUE(synthio_math_operation_type, math_op, ADD_SUB, OP_ADD_SUB); @@ -96,14 +96,14 @@ MAKE_ENUM_MAP(synthio_math_operation) { }; -STATIC mp_obj_t mathop_call(mp_obj_t fun, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t mathop_call(mp_obj_t fun, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { mp_arg_val_t args[4]; args[0].u_obj = fun; mp_arg_parse_all_kw_array(n_args, n_kw, all_args, MP_ARRAY_SIZE(math_properties) - 1, math_properties + 1, &args[1]); return synthio_math_make_new_common(args); } -STATIC MP_DEFINE_CONST_DICT(synthio_math_operation_locals_dict, synthio_math_operation_locals_table); +static MP_DEFINE_CONST_DICT(synthio_math_operation_locals_dict, synthio_math_operation_locals_table); MAKE_PRINTER(synthio, synthio_math_operation); MAKE_ENUM_TYPE(synthio, MathOperation, synthio_math_operation, call, mathop_call @@ -142,14 +142,14 @@ static const mp_arg_t math_properties[] = { { MP_QSTR_c, MP_ARG_OBJ, {.u_obj = MP_ROM_INT(1) } }, }; -STATIC mp_obj_t synthio_math_make_new(const mp_obj_type_t *type_in, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t synthio_math_make_new(const mp_obj_type_t *type_in, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { mp_arg_val_t args[MP_ARRAY_SIZE(math_properties)]; mp_arg_parse_all_kw_array(n_args, n_kw, all_args, MP_ARRAY_SIZE(math_properties), math_properties, args); return synthio_math_make_new_common(args); } -STATIC mp_obj_t synthio_math_make_new_common(mp_arg_val_t args[MP_ARRAY_SIZE(math_properties)]) { +static mp_obj_t synthio_math_make_new_common(mp_arg_val_t args[MP_ARRAY_SIZE(math_properties)]) { synthio_math_obj_t *self = mp_obj_malloc(synthio_math_obj_t, &synthio_math_type); self->base.last_tick = synthio_global_tick; @@ -162,13 +162,13 @@ STATIC mp_obj_t synthio_math_make_new_common(mp_arg_val_t args[MP_ARRAY_SIZE(mat //| a: BlockInput //| """The first input to the operation""" -STATIC mp_obj_t synthio_math_get_a(mp_obj_t self_in) { +static mp_obj_t synthio_math_get_a(mp_obj_t self_in) { synthio_math_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_synthio_math_get_input_obj(self, 0); } MP_DEFINE_CONST_FUN_OBJ_1(synthio_math_get_a_obj, synthio_math_get_a); -STATIC mp_obj_t synthio_math_set_a(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t synthio_math_set_a(mp_obj_t self_in, mp_obj_t arg) { synthio_math_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_synthio_math_set_input_obj(self, 0, arg, MP_QSTR_a); return mp_const_none; @@ -181,13 +181,13 @@ MP_PROPERTY_GETSET(synthio_math_a_obj, //| b: BlockInput //| """The second input to the operation""" -STATIC mp_obj_t synthio_math_get_b(mp_obj_t self_in) { +static mp_obj_t synthio_math_get_b(mp_obj_t self_in) { synthio_math_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_synthio_math_get_input_obj(self, 1); } MP_DEFINE_CONST_FUN_OBJ_1(synthio_math_get_b_obj, synthio_math_get_b); -STATIC mp_obj_t synthio_math_set_b(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t synthio_math_set_b(mp_obj_t self_in, mp_obj_t arg) { synthio_math_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_synthio_math_set_input_obj(self, 1, arg, MP_QSTR_b); return mp_const_none; @@ -200,13 +200,13 @@ MP_PROPERTY_GETSET(synthio_math_b_obj, //| c: BlockInput //| """The third input to the operation""" -STATIC mp_obj_t synthio_math_get_c(mp_obj_t self_in) { +static mp_obj_t synthio_math_get_c(mp_obj_t self_in) { synthio_math_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_synthio_math_get_input_obj(self, 2); } MP_DEFINE_CONST_FUN_OBJ_1(synthio_math_get_c_obj, synthio_math_get_c); -STATIC mp_obj_t synthio_math_set_c(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t synthio_math_set_c(mp_obj_t self_in, mp_obj_t arg) { synthio_math_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_synthio_math_set_input_obj(self, 2, arg, MP_QSTR_c); return mp_const_none; @@ -219,13 +219,13 @@ MP_PROPERTY_GETSET(synthio_math_c_obj, //| operation: MathOperation //| """The function to compute""" -STATIC mp_obj_t synthio_math_get_operation(mp_obj_t self_in) { +static mp_obj_t synthio_math_get_operation(mp_obj_t self_in) { synthio_math_obj_t *self = MP_OBJ_TO_PTR(self_in); return cp_enum_find(&synthio_math_operation_type, common_hal_synthio_math_get_operation(self)); } MP_DEFINE_CONST_FUN_OBJ_1(synthio_math_get_operation_obj, synthio_math_get_operation); -STATIC mp_obj_t synthio_math_set_operation(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t synthio_math_set_operation(mp_obj_t self_in, mp_obj_t arg) { synthio_math_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_synthio_math_set_operation(self, cp_enum_value(&synthio_math_operation_type, arg, MP_QSTR_operation)); return mp_const_none; @@ -241,7 +241,7 @@ MP_PROPERTY_GETSET(synthio_math_operation_obj, //| value: float //| """The value of the oscillator (read-only)""" //| -STATIC mp_obj_t synthio_math_get_value(mp_obj_t self_in) { +static mp_obj_t synthio_math_get_value(mp_obj_t self_in) { synthio_math_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_float(common_hal_synthio_math_get_value(self)); } @@ -256,17 +256,17 @@ static void math_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_ properties_print_helper(print, self_in, math_properties, MP_ARRAY_SIZE(math_properties)); } -STATIC const mp_rom_map_elem_t synthio_math_locals_dict_table[] = { +static const mp_rom_map_elem_t synthio_math_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_a), MP_ROM_PTR(&synthio_math_a_obj) }, { MP_ROM_QSTR(MP_QSTR_b), MP_ROM_PTR(&synthio_math_b_obj) }, { MP_ROM_QSTR(MP_QSTR_c), MP_ROM_PTR(&synthio_math_c_obj) }, { MP_ROM_QSTR(MP_QSTR_operation), MP_ROM_PTR(&synthio_math_operation_obj) }, { MP_ROM_QSTR(MP_QSTR_value), MP_ROM_PTR(&synthio_math_value_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(synthio_math_locals_dict, synthio_math_locals_dict_table); +static MP_DEFINE_CONST_DICT(synthio_math_locals_dict, synthio_math_locals_dict_table); -STATIC const synthio_block_proto_t math_proto = { +static const synthio_block_proto_t math_proto = { MP_PROTO_IMPLEMENT(MP_QSTR_synthio_block) .tick = common_hal_synthio_math_tick, }; diff --git a/shared-bindings/synthio/MidiTrack.c b/shared-bindings/synthio/MidiTrack.c index da1ebac70efe..dee42770630f 100644 --- a/shared-bindings/synthio/MidiTrack.c +++ b/shared-bindings/synthio/MidiTrack.c @@ -52,7 +52,7 @@ //| pass //| print("stopped")""" //| ... -STATIC mp_obj_t synthio_miditrack_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t synthio_miditrack_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_buffer, ARG_tempo, ARG_sample_rate, ARG_waveform, ARG_envelope }; static const mp_arg_t allowed_args[] = { { MP_QSTR_buffer, MP_ARG_OBJ | MP_ARG_REQUIRED, {} }, @@ -84,14 +84,14 @@ STATIC mp_obj_t synthio_miditrack_make_new(const mp_obj_type_t *type, size_t n_a //| def deinit(self) -> None: //| """Deinitialises the MidiTrack and releases any hardware resources for reuse.""" //| ... -STATIC mp_obj_t synthio_miditrack_deinit(mp_obj_t self_in) { +static mp_obj_t synthio_miditrack_deinit(mp_obj_t self_in) { synthio_miditrack_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_synthio_miditrack_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(synthio_miditrack_deinit_obj, synthio_miditrack_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(synthio_miditrack_deinit_obj, synthio_miditrack_deinit); -STATIC void check_for_deinit(synthio_miditrack_obj_t *self) { +static void check_for_deinit(synthio_miditrack_obj_t *self) { if (common_hal_synthio_miditrack_deinited(self)) { raise_deinited_error(); } @@ -106,17 +106,17 @@ STATIC void check_for_deinit(synthio_miditrack_obj_t *self) { //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t synthio_miditrack_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t synthio_miditrack_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_synthio_miditrack_deinit(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(synthio_miditrack___exit___obj, 4, 4, synthio_miditrack_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(synthio_miditrack___exit___obj, 4, 4, synthio_miditrack_obj___exit__); //| sample_rate: int //| """32 bit value that tells how quickly samples are played in Hertz (cycles per second).""" //| -STATIC mp_obj_t synthio_miditrack_obj_get_sample_rate(mp_obj_t self_in) { +static mp_obj_t synthio_miditrack_obj_get_sample_rate(mp_obj_t self_in) { synthio_miditrack_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_synthio_miditrack_get_sample_rate(self)); @@ -129,7 +129,7 @@ MP_PROPERTY_GETTER(synthio_miditrack_sample_rate_obj, //| error_location: Optional[int] //| """Offset, in bytes within the midi data, of a decoding error""" //| -STATIC mp_obj_t synthio_miditrack_obj_get_error_location(mp_obj_t self_in) { +static mp_obj_t synthio_miditrack_obj_get_error_location(mp_obj_t self_in) { synthio_miditrack_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); mp_int_t location = common_hal_synthio_miditrack_get_error_location(self); @@ -143,7 +143,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(synthio_miditrack_get_error_location_obj, synthio_midi MP_PROPERTY_GETTER(synthio_miditrack_error_location_obj, (mp_obj_t)&synthio_miditrack_get_error_location_obj); -STATIC const mp_rom_map_elem_t synthio_miditrack_locals_dict_table[] = { +static const mp_rom_map_elem_t synthio_miditrack_locals_dict_table[] = { // Methods { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&synthio_miditrack_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, @@ -153,9 +153,9 @@ STATIC const mp_rom_map_elem_t synthio_miditrack_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_sample_rate), MP_ROM_PTR(&synthio_miditrack_sample_rate_obj) }, { MP_ROM_QSTR(MP_QSTR_error_location), MP_ROM_PTR(&synthio_miditrack_error_location_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(synthio_miditrack_locals_dict, synthio_miditrack_locals_dict_table); +static MP_DEFINE_CONST_DICT(synthio_miditrack_locals_dict, synthio_miditrack_locals_dict_table); -STATIC const audiosample_p_t synthio_miditrack_proto = { +static const audiosample_p_t synthio_miditrack_proto = { MP_PROTO_IMPLEMENT(MP_QSTR_protocol_audiosample) .sample_rate = (audiosample_sample_rate_fun)common_hal_synthio_miditrack_get_sample_rate, .bits_per_sample = (audiosample_bits_per_sample_fun)common_hal_synthio_miditrack_get_bits_per_sample, diff --git a/shared-bindings/synthio/Note.c b/shared-bindings/synthio/Note.c index 174cce8a3a38..c886f106a4cf 100644 --- a/shared-bindings/synthio/Note.c +++ b/shared-bindings/synthio/Note.c @@ -55,7 +55,7 @@ static const mp_arg_t note_properties[] = { //| //| If the same Note object is played on multiple Synthesizer objects, the result is undefined. //| """ -STATIC mp_obj_t synthio_note_make_new(const mp_obj_type_t *type_in, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t synthio_note_make_new(const mp_obj_type_t *type_in, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { mp_arg_val_t args[MP_ARRAY_SIZE(note_properties)]; mp_arg_parse_all_kw_array(n_args, n_kw, all_args, MP_ARRAY_SIZE(note_properties), note_properties, args); @@ -69,13 +69,13 @@ STATIC mp_obj_t synthio_note_make_new(const mp_obj_type_t *type_in, size_t n_arg //| frequency: float //| """The base frequency of the note, in Hz.""" -STATIC mp_obj_t synthio_note_get_frequency(mp_obj_t self_in) { +static mp_obj_t synthio_note_get_frequency(mp_obj_t self_in) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_float(common_hal_synthio_note_get_frequency(self)); } MP_DEFINE_CONST_FUN_OBJ_1(synthio_note_get_frequency_obj, synthio_note_get_frequency); -STATIC mp_obj_t synthio_note_set_frequency(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t synthio_note_set_frequency(mp_obj_t self_in, mp_obj_t arg) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_synthio_note_set_frequency(self, mp_obj_get_float(arg)); return mp_const_none; @@ -91,13 +91,13 @@ MP_PROPERTY_GETSET(synthio_note_frequency_obj, //| Construct an appropriate filter by calling a filter-making method on the //| `Synthesizer` object where you plan to play the note, as filter coefficients depend //| on the sample rate""" -STATIC mp_obj_t synthio_note_get_filter(mp_obj_t self_in) { +static mp_obj_t synthio_note_get_filter(mp_obj_t self_in) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_synthio_note_get_filter_obj(self); } MP_DEFINE_CONST_FUN_OBJ_1(synthio_note_get_filter_obj, synthio_note_get_filter); -STATIC mp_obj_t synthio_note_set_filter(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t synthio_note_set_filter(mp_obj_t self_in, mp_obj_t arg) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_synthio_note_set_filter(self, arg); return mp_const_none; @@ -114,13 +114,13 @@ MP_PROPERTY_GETSET(synthio_note_filter_obj, //| For fractional values, the note plays at full amplitude in one channel //| and partial amplitude in the other channel. For instance -.5 plays at full //| amplitude in the left channel and 1/2 amplitude in the right channel.""" -STATIC mp_obj_t synthio_note_get_panning(mp_obj_t self_in) { +static mp_obj_t synthio_note_get_panning(mp_obj_t self_in) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_synthio_note_get_panning(self); } MP_DEFINE_CONST_FUN_OBJ_1(synthio_note_get_panning_obj, synthio_note_get_panning); -STATIC mp_obj_t synthio_note_set_panning(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t synthio_note_set_panning(mp_obj_t self_in, mp_obj_t arg) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_synthio_note_set_panning(self, arg); return mp_const_none; @@ -138,13 +138,13 @@ MP_PROPERTY_GETSET(synthio_note_panning_obj, //| the value from the note's envelope. //| //| To achieve a tremolo effect, attach an LFO here.""" -STATIC mp_obj_t synthio_note_get_amplitude(mp_obj_t self_in) { +static mp_obj_t synthio_note_get_amplitude(mp_obj_t self_in) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_synthio_note_get_amplitude(self); } MP_DEFINE_CONST_FUN_OBJ_1(synthio_note_get_amplitude_obj, synthio_note_get_amplitude); -STATIC mp_obj_t synthio_note_set_amplitude(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t synthio_note_set_amplitude(mp_obj_t self_in, mp_obj_t arg) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_synthio_note_set_amplitude(self, arg); return mp_const_none; @@ -164,13 +164,13 @@ MP_PROPERTY_GETSET(synthio_note_amplitude_obj, //| //| To achieve a vibrato or sweep effect, attach an LFO here. //| """ -STATIC mp_obj_t synthio_note_get_bend(mp_obj_t self_in) { +static mp_obj_t synthio_note_get_bend(mp_obj_t self_in) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_synthio_note_get_bend(self); } MP_DEFINE_CONST_FUN_OBJ_1(synthio_note_get_bend_obj, synthio_note_get_bend); -STATIC mp_obj_t synthio_note_set_bend(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t synthio_note_set_bend(mp_obj_t self_in, mp_obj_t arg) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_synthio_note_set_bend(self, arg); return mp_const_none; @@ -182,13 +182,13 @@ MP_PROPERTY_GETSET(synthio_note_bend_obj, //| waveform: Optional[ReadableBuffer] //| """The waveform of this note. Setting the waveform to a buffer of a different size resets the note's phase.""" -STATIC mp_obj_t synthio_note_get_waveform(mp_obj_t self_in) { +static mp_obj_t synthio_note_get_waveform(mp_obj_t self_in) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_synthio_note_get_waveform_obj(self); } MP_DEFINE_CONST_FUN_OBJ_1(synthio_note_get_waveform_obj, synthio_note_get_waveform); -STATIC mp_obj_t synthio_note_set_waveform(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t synthio_note_set_waveform(mp_obj_t self_in, mp_obj_t arg) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_synthio_note_set_waveform(self, arg); return mp_const_none; @@ -204,13 +204,13 @@ MP_PROPERTY_GETSET(synthio_note_waveform_obj, //| Values outside the range ``0`` to ``waveform_max_length-1`` (inclusive) are rejected with a `ValueError`. //| //| Values greater than or equal to the actual waveform length are treated as 0.""" -STATIC mp_obj_t synthio_note_get_waveform_loop_start(mp_obj_t self_in) { +static mp_obj_t synthio_note_get_waveform_loop_start(mp_obj_t self_in) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_int(common_hal_synthio_note_get_waveform_loop_start(self)); } MP_DEFINE_CONST_FUN_OBJ_1(synthio_note_get_waveform_loop_start_obj, synthio_note_get_waveform_loop_start); -STATIC mp_obj_t synthio_note_set_waveform_loop_start(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t synthio_note_set_waveform_loop_start(mp_obj_t self_in, mp_obj_t arg) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_synthio_note_set_waveform_loop_start(self, mp_obj_get_int(arg)); return mp_const_none; @@ -229,13 +229,13 @@ MP_PROPERTY_GETSET(synthio_note_waveform_loop_start_obj, //| //| Use the `synthio.waveform_max_length` constant to set the loop point at the end of the wave form, no matter its length.""" //| -STATIC mp_obj_t synthio_note_get_waveform_loop_end(mp_obj_t self_in) { +static mp_obj_t synthio_note_get_waveform_loop_end(mp_obj_t self_in) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_int(common_hal_synthio_note_get_waveform_loop_end(self)); } MP_DEFINE_CONST_FUN_OBJ_1(synthio_note_get_waveform_loop_end_obj, synthio_note_get_waveform_loop_end); -STATIC mp_obj_t synthio_note_set_waveform_loop_end(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t synthio_note_set_waveform_loop_end(mp_obj_t self_in, mp_obj_t arg) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_synthio_note_set_waveform_loop_end(self, mp_obj_get_int(arg)); return mp_const_none; @@ -249,13 +249,13 @@ MP_PROPERTY_GETSET(synthio_note_waveform_loop_end_obj, //| envelope: Envelope //| """The envelope of this note""" //| -STATIC mp_obj_t synthio_note_get_envelope(mp_obj_t self_in) { +static mp_obj_t synthio_note_get_envelope(mp_obj_t self_in) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_synthio_note_get_envelope_obj(self); } MP_DEFINE_CONST_FUN_OBJ_1(synthio_note_get_envelope_obj, synthio_note_get_envelope); -STATIC mp_obj_t synthio_note_set_envelope(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t synthio_note_set_envelope(mp_obj_t self_in, mp_obj_t arg) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_synthio_note_set_envelope(self, arg); return mp_const_none; @@ -269,13 +269,13 @@ MP_PROPERTY_GETSET(synthio_note_envelope_obj, //| """The ring frequency of the note, in Hz. Zero disables. //| //| For ring to take effect, both ``ring_frequency`` and ``ring_waveform`` must be set.""" -STATIC mp_obj_t synthio_note_get_ring_frequency(mp_obj_t self_in) { +static mp_obj_t synthio_note_get_ring_frequency(mp_obj_t self_in) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_float(common_hal_synthio_note_get_ring_frequency(self)); } MP_DEFINE_CONST_FUN_OBJ_1(synthio_note_get_ring_frequency_obj, synthio_note_get_ring_frequency); -STATIC mp_obj_t synthio_note_set_ring_frequency(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t synthio_note_set_ring_frequency(mp_obj_t self_in, mp_obj_t arg) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_synthio_note_set_ring_frequency(self, mp_obj_get_float(arg)); return mp_const_none; @@ -294,13 +294,13 @@ MP_PROPERTY_GETSET(synthio_note_ring_frequency_obj, //| //| To achieve a vibrato or sweep effect on the ring waveform, attach an LFO here. //| """ -STATIC mp_obj_t synthio_note_get_ring_bend(mp_obj_t self_in) { +static mp_obj_t synthio_note_get_ring_bend(mp_obj_t self_in) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_synthio_note_get_ring_bend(self); } MP_DEFINE_CONST_FUN_OBJ_1(synthio_note_get_ring_bend_obj, synthio_note_get_ring_bend); -STATIC mp_obj_t synthio_note_set_ring_bend(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t synthio_note_set_ring_bend(mp_obj_t self_in, mp_obj_t arg) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_synthio_note_set_ring_bend(self, arg); return mp_const_none; @@ -315,13 +315,13 @@ MP_PROPERTY_GETSET(synthio_note_ring_bend_obj, //| //| For ring to take effect, both ``ring_frequency`` and ``ring_waveform`` must be set.""" //| -STATIC mp_obj_t synthio_note_get_ring_waveform(mp_obj_t self_in) { +static mp_obj_t synthio_note_get_ring_waveform(mp_obj_t self_in) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_synthio_note_get_ring_waveform_obj(self); } MP_DEFINE_CONST_FUN_OBJ_1(synthio_note_get_ring_waveform_obj, synthio_note_get_ring_waveform); -STATIC mp_obj_t synthio_note_set_ring_waveform(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t synthio_note_set_ring_waveform(mp_obj_t self_in, mp_obj_t arg) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_synthio_note_set_ring_waveform(self, arg); return mp_const_none; @@ -337,13 +337,13 @@ MP_PROPERTY_GETSET(synthio_note_ring_waveform_obj, //| Values outside the range ``0`` to ``waveform_max_length-1`` (inclusive) are rejected with a `ValueError`. //| //| Values greater than or equal to the actual waveform length are treated as 0.""" -STATIC mp_obj_t synthio_note_get_ring_waveform_loop_start(mp_obj_t self_in) { +static mp_obj_t synthio_note_get_ring_waveform_loop_start(mp_obj_t self_in) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_int(common_hal_synthio_note_get_ring_waveform_loop_start(self)); } MP_DEFINE_CONST_FUN_OBJ_1(synthio_note_get_ring_waveform_loop_start_obj, synthio_note_get_ring_waveform_loop_start); -STATIC mp_obj_t synthio_note_set_ring_waveform_loop_start(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t synthio_note_set_ring_waveform_loop_start(mp_obj_t self_in, mp_obj_t arg) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_synthio_note_set_ring_waveform_loop_start(self, mp_obj_get_int(arg)); return mp_const_none; @@ -362,13 +362,13 @@ MP_PROPERTY_GETSET(synthio_note_ring_waveform_loop_start_obj, //| //| Use the `synthio.waveform_max_length` constant to set the loop point at the end of the wave form, no matter its length.""" //| -STATIC mp_obj_t synthio_note_get_ring_waveform_loop_end(mp_obj_t self_in) { +static mp_obj_t synthio_note_get_ring_waveform_loop_end(mp_obj_t self_in) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_int(common_hal_synthio_note_get_ring_waveform_loop_end(self)); } MP_DEFINE_CONST_FUN_OBJ_1(synthio_note_get_ring_waveform_loop_end_obj, synthio_note_get_ring_waveform_loop_end); -STATIC mp_obj_t synthio_note_set_ring_waveform_loop_end(mp_obj_t self_in, mp_obj_t arg) { +static mp_obj_t synthio_note_set_ring_waveform_loop_end(mp_obj_t self_in, mp_obj_t arg) { synthio_note_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_synthio_note_set_ring_waveform_loop_end(self, mp_obj_get_int(arg)); return mp_const_none; @@ -385,7 +385,7 @@ static void note_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_ properties_print_helper(print, self_in, note_properties, MP_ARRAY_SIZE(note_properties)); } -STATIC const mp_rom_map_elem_t synthio_note_locals_dict_table[] = { +static const mp_rom_map_elem_t synthio_note_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_frequency), MP_ROM_PTR(&synthio_note_frequency_obj) }, { MP_ROM_QSTR(MP_QSTR_filter), MP_ROM_PTR(&synthio_note_filter_obj) }, { MP_ROM_QSTR(MP_QSTR_panning), MP_ROM_PTR(&synthio_note_panning_obj) }, @@ -401,7 +401,7 @@ STATIC const mp_rom_map_elem_t synthio_note_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_ring_waveform_loop_start), MP_ROM_PTR(&synthio_note_ring_waveform_loop_start_obj) }, { MP_ROM_QSTR(MP_QSTR_ring_waveform_loop_end), MP_ROM_PTR(&synthio_note_ring_waveform_loop_end_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(synthio_note_locals_dict, synthio_note_locals_dict_table); +static MP_DEFINE_CONST_DICT(synthio_note_locals_dict, synthio_note_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( synthio_note_type, diff --git a/shared-bindings/synthio/Synthesizer.c b/shared-bindings/synthio/Synthesizer.c index e117792d7047..cd5c3847e64b 100644 --- a/shared-bindings/synthio/Synthesizer.c +++ b/shared-bindings/synthio/Synthesizer.c @@ -47,7 +47,7 @@ //| :param ReadableBuffer waveform: A single-cycle waveform. Default is a 50% duty cycle square wave. If specified, must be a ReadableBuffer of type 'h' (signed 16 bit) //| :param Optional[Envelope] envelope: An object that defines the loudness of a note over time. The default envelope, `None` provides no ramping, voices turn instantly on and off. //| """ -STATIC mp_obj_t synthio_synthesizer_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t synthio_synthesizer_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_sample_rate, ARG_channel_count, ARG_waveform, ARG_envelope }; static const mp_arg_t allowed_args[] = { { MP_QSTR_sample_rate, MP_ARG_INT | MP_ARG_KW_ONLY, {.u_int = 11025} }, @@ -69,7 +69,7 @@ STATIC mp_obj_t synthio_synthesizer_make_new(const mp_obj_type_t *type, size_t n return MP_OBJ_FROM_PTR(self); } -STATIC void check_for_deinit(synthio_synthesizer_obj_t *self) { +static void check_for_deinit(synthio_synthesizer_obj_t *self) { if (common_hal_synthio_synthesizer_deinited(self)) { raise_deinited_error(); } @@ -81,26 +81,26 @@ STATIC void check_for_deinit(synthio_synthesizer_obj_t *self) { //| Pressing a note that was already pressed has no effect. //| //| :param NoteOrNoteSequence press: Any sequence of notes.""" -STATIC mp_obj_t synthio_synthesizer_press(mp_obj_t self_in, mp_obj_t press) { +static mp_obj_t synthio_synthesizer_press(mp_obj_t self_in, mp_obj_t press) { synthio_synthesizer_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_synthio_synthesizer_press(self, press); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(synthio_synthesizer_press_obj, synthio_synthesizer_press); +static MP_DEFINE_CONST_FUN_OBJ_2(synthio_synthesizer_press_obj, synthio_synthesizer_press); //| def release(self, /, release: NoteOrNoteSequence = ()) -> None: //| """Turn some notes off. //| //| Releasing a note that was already released has no effect. //| //| :param NoteOrNoteSequence release: Any sequence of notes.""" -STATIC mp_obj_t synthio_synthesizer_release(mp_obj_t self_in, mp_obj_t release) { +static mp_obj_t synthio_synthesizer_release(mp_obj_t self_in, mp_obj_t release) { synthio_synthesizer_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_synthio_synthesizer_release(self, release); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(synthio_synthesizer_release_obj, synthio_synthesizer_release); +static MP_DEFINE_CONST_FUN_OBJ_2(synthio_synthesizer_release_obj, synthio_synthesizer_release); //| def change( //| self, @@ -127,7 +127,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(synthio_synthesizer_release_obj, synthio_synthe //| //| Note: for compatibility, ``release_then_press`` may be used as an alias //| for this function. This compatibility name will be removed in 9.0.""" -STATIC mp_obj_t synthio_synthesizer_change(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t synthio_synthesizer_change(mp_uint_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_release, ARG_press, ARG_retrigger }; static const mp_arg_t allowed_args[] = { { MP_QSTR_release, MP_ARG_OBJ, {.u_obj = mp_const_empty_tuple } }, @@ -145,7 +145,7 @@ STATIC mp_obj_t synthio_synthesizer_change(mp_uint_t n_args, const mp_obj_t *pos common_hal_synthio_synthesizer_retrigger(self, args[ARG_retrigger].u_obj); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(synthio_synthesizer_change_obj, 1, synthio_synthesizer_change); +static MP_DEFINE_CONST_FUN_OBJ_KW(synthio_synthesizer_change_obj, 1, synthio_synthesizer_change); // //| def release_all_then_press(self, /, press: NoteOrNoteSequence) -> None: @@ -155,35 +155,35 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_KW(synthio_synthesizer_change_obj, 1, synthio_syn //| attack phase with an initial amplitude of 0. //| //| :param NoteOrNoteSequence press: Any sequence of notes.""" -STATIC mp_obj_t synthio_synthesizer_release_all_then_press(mp_obj_t self_in, mp_obj_t press) { +static mp_obj_t synthio_synthesizer_release_all_then_press(mp_obj_t self_in, mp_obj_t press) { synthio_synthesizer_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_synthio_synthesizer_release_all(self); common_hal_synthio_synthesizer_press(self, press); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(synthio_synthesizer_release_all_then_press_obj, synthio_synthesizer_release_all_then_press); +static MP_DEFINE_CONST_FUN_OBJ_2(synthio_synthesizer_release_all_then_press_obj, synthio_synthesizer_release_all_then_press); // //| def release_all(self) -> None: //| """Turn any currently-playing notes off""" -STATIC mp_obj_t synthio_synthesizer_release_all(mp_obj_t self_in) { +static mp_obj_t synthio_synthesizer_release_all(mp_obj_t self_in) { synthio_synthesizer_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); common_hal_synthio_synthesizer_release_all(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(synthio_synthesizer_release_all_obj, synthio_synthesizer_release_all); +static MP_DEFINE_CONST_FUN_OBJ_1(synthio_synthesizer_release_all_obj, synthio_synthesizer_release_all); //| def deinit(self) -> None: //| """Deinitialises the object and releases any memory resources for reuse.""" //| ... -STATIC mp_obj_t synthio_synthesizer_deinit(mp_obj_t self_in) { +static mp_obj_t synthio_synthesizer_deinit(mp_obj_t self_in) { synthio_synthesizer_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_synthio_synthesizer_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(synthio_synthesizer_deinit_obj, synthio_synthesizer_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(synthio_synthesizer_deinit_obj, synthio_synthesizer_deinit); //| def __enter__(self) -> Synthesizer: //| """No-op used by Context Managers.""" @@ -194,23 +194,23 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(synthio_synthesizer_deinit_obj, synthio_synthes //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t synthio_synthesizer_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t synthio_synthesizer_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_synthio_synthesizer_deinit(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(synthio_synthesizer___exit___obj, 4, 4, synthio_synthesizer_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(synthio_synthesizer___exit___obj, 4, 4, synthio_synthesizer_obj___exit__); //| envelope: Optional[Envelope] //| """The envelope to apply to all notes. `None`, the default envelope, instantly turns notes on and off. The envelope may be changed dynamically, but it affects all notes (even currently playing notes)""" -STATIC mp_obj_t synthio_synthesizer_obj_get_envelope(mp_obj_t self_in) { +static mp_obj_t synthio_synthesizer_obj_get_envelope(mp_obj_t self_in) { synthio_synthesizer_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return synthio_synth_envelope_get(&self->synth); } MP_DEFINE_CONST_FUN_OBJ_1(synthio_synthesizer_get_envelope_obj, synthio_synthesizer_obj_get_envelope); -STATIC mp_obj_t synthio_synthesizer_obj_set_envelope(mp_obj_t self_in, mp_obj_t envelope) { +static mp_obj_t synthio_synthesizer_obj_set_envelope(mp_obj_t self_in, mp_obj_t envelope) { synthio_synthesizer_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); synthio_synth_envelope_set(&self->synth, envelope); @@ -224,7 +224,7 @@ MP_PROPERTY_GETSET(synthio_synthesizer_envelope_obj, //| sample_rate: int //| """32 bit value that tells how quickly samples are played in Hertz (cycles per second).""" -STATIC mp_obj_t synthio_synthesizer_obj_get_sample_rate(mp_obj_t self_in) { +static mp_obj_t synthio_synthesizer_obj_get_sample_rate(mp_obj_t self_in) { synthio_synthesizer_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_synthio_synthesizer_get_sample_rate(self)); @@ -239,7 +239,7 @@ MP_PROPERTY_GETTER(synthio_synthesizer_sample_rate_obj, //| //| This does not include notes in the release phase of the envelope.""" //| -STATIC mp_obj_t synthio_synthesizer_obj_get_pressed(mp_obj_t self_in) { +static mp_obj_t synthio_synthesizer_obj_get_pressed(mp_obj_t self_in) { synthio_synthesizer_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return common_hal_synthio_synthesizer_get_pressed_notes(self); @@ -255,7 +255,7 @@ MP_PROPERTY_GETTER(synthio_synthesizer_pressed_obj, //| If the note is currently playing (including in the release phase), the returned value gives the current envelope state and the current envelope value. //| //| If the note is not playing on this synthesizer, returns the tuple ``(None, 0.0)``.""" -STATIC mp_obj_t synthio_synthesizer_obj_note_info(mp_obj_t self_in, mp_obj_t note) { +static mp_obj_t synthio_synthesizer_obj_note_info(mp_obj_t self_in, mp_obj_t note) { synthio_synthesizer_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); mp_float_t vol = MICROPY_FLOAT_CONST(0.0); @@ -273,7 +273,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(synthio_synthesizer_note_info_obj, synthio_synthesizer //| //| This property is read-only but its contents may be modified by e.g., calling ``synth.blocks.append()`` or ``synth.blocks.remove()``. It is initially an empty list.""" //| -STATIC mp_obj_t synthio_synthesizer_obj_get_blocks(mp_obj_t self_in) { +static mp_obj_t synthio_synthesizer_obj_get_blocks(mp_obj_t self_in) { synthio_synthesizer_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return common_hal_synthio_synthesizer_get_blocks(self); @@ -307,7 +307,7 @@ static const mp_arg_t passfilter_properties[] = { { MP_QSTR_Q, MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL } }, }; -STATIC mp_obj_t synthio_synthesizer_lpf(size_t n_pos, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t synthio_synthesizer_lpf(size_t n_pos, const mp_obj_t *pos_args, mp_map_t *kw_args) { mp_arg_val_t args[MP_ARRAY_SIZE(passfilter_properties)]; mp_obj_t self_in = pos_args[0]; @@ -339,7 +339,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(synthio_synthesizer_lpf_fun_obj, 1, synthio_synthesiz //| ``q_factor``, called ``Q`` in the cookbook. Controls how peaked the response will be at the cutoff frequency. A large value makes the response more peaked. //| """ -STATIC mp_obj_t synthio_synthesizer_hpf(size_t n_pos, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t synthio_synthesizer_hpf(size_t n_pos, const mp_obj_t *pos_args, mp_map_t *kw_args) { mp_arg_val_t args[MP_ARRAY_SIZE(passfilter_properties)]; mp_obj_t self_in = pos_args[0]; @@ -374,7 +374,7 @@ STATIC mp_obj_t synthio_synthesizer_hpf(size_t n_pos, const mp_obj_t *pos_args, MP_DEFINE_CONST_FUN_OBJ_KW(synthio_synthesizer_hpf_fun_obj, 1, synthio_synthesizer_hpf); -STATIC mp_obj_t synthio_synthesizer_bpf(size_t n_pos, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t synthio_synthesizer_bpf(size_t n_pos, const mp_obj_t *pos_args, mp_map_t *kw_args) { mp_arg_val_t args[MP_ARRAY_SIZE(passfilter_properties)]; mp_obj_t self_in = pos_args[0]; @@ -395,7 +395,7 @@ STATIC mp_obj_t synthio_synthesizer_bpf(size_t n_pos, const mp_obj_t *pos_args, MP_DEFINE_CONST_FUN_OBJ_KW(synthio_synthesizer_bpf_fun_obj, 1, synthio_synthesizer_bpf); -STATIC const mp_rom_map_elem_t synthio_synthesizer_locals_dict_table[] = { +static const mp_rom_map_elem_t synthio_synthesizer_locals_dict_table[] = { // Methods { MP_ROM_QSTR(MP_QSTR_press), MP_ROM_PTR(&synthio_synthesizer_press_obj) }, { MP_ROM_QSTR(MP_QSTR_release), MP_ROM_PTR(&synthio_synthesizer_release_obj) }, @@ -418,9 +418,9 @@ STATIC const mp_rom_map_elem_t synthio_synthesizer_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_note_info), MP_ROM_PTR(&synthio_synthesizer_note_info_obj) }, { MP_ROM_QSTR(MP_QSTR_blocks), MP_ROM_PTR(&synthio_synthesizer_blocks_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(synthio_synthesizer_locals_dict, synthio_synthesizer_locals_dict_table); +static MP_DEFINE_CONST_DICT(synthio_synthesizer_locals_dict, synthio_synthesizer_locals_dict_table); -STATIC const audiosample_p_t synthio_synthesizer_proto = { +static const audiosample_p_t synthio_synthesizer_proto = { MP_PROTO_IMPLEMENT(MP_QSTR_protocol_audiosample) .sample_rate = (audiosample_sample_rate_fun)common_hal_synthio_synthesizer_get_sample_rate, .bits_per_sample = (audiosample_bits_per_sample_fun)common_hal_synthio_synthesizer_get_bits_per_sample, diff --git a/shared-bindings/synthio/__init__.c b/shared-bindings/synthio/__init__.c index 3109b0a90399..fbc5cd559afb 100644 --- a/shared-bindings/synthio/__init__.c +++ b/shared-bindings/synthio/__init__.c @@ -54,7 +54,7 @@ MAKE_ENUM_MAP(synthio_note_state) { MAKE_ENUM_MAP_ENTRY(note_state, RELEASE), }; -STATIC MP_DEFINE_CONST_DICT(synthio_note_state_locals_dict, synthio_note_state_locals_table); +static MP_DEFINE_CONST_DICT(synthio_note_state_locals_dict, synthio_note_state_locals_table); MAKE_PRINTER(synthio, synthio_note_state); MAKE_ENUM_TYPE(synthio, EnvelopeState, synthio_note_state); @@ -118,7 +118,7 @@ static const mp_arg_t envelope_properties[] = { //| """The level, in the range ``0.0`` to ``1.0`` of the volume of the sustain phase relative to the attack level""" //| -STATIC mp_obj_t synthio_envelope_make_new(const mp_obj_type_t *type_in, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t synthio_envelope_make_new(const mp_obj_type_t *type_in, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { mp_arg_val_t args[MP_ARRAY_SIZE(envelope_properties)]; enum { ARG_attack_time, ARG_decay_time, ARG_release_time, ARG_attack_level, ARG_sustain_level }; mp_arg_parse_all_kw_array(n_args, n_kw, all_args, MP_ARRAY_SIZE(envelope_properties), envelope_properties, args); @@ -194,7 +194,7 @@ const mp_obj_namedtuple_type_t synthio_envelope_type_obj = { //| print("stopped")""" //| ... //| -STATIC mp_obj_t synthio_from_file(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t synthio_from_file(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_file, ARG_sample_rate, ARG_waveform, ARG_envelope }; static const mp_arg_t allowed_args[] = { { MP_QSTR_file, MP_ARG_OBJ | MP_ARG_REQUIRED, {} }, @@ -266,7 +266,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(synthio_from_file_obj, 1, synthio_from_file); //| """Converts the given midi note (60 = middle C, 69 = concert A) to Hz""" //| -STATIC mp_obj_t midi_to_hz(mp_obj_t arg) { +static mp_obj_t midi_to_hz(mp_obj_t arg) { mp_float_t note = mp_arg_validate_type_float(arg, MP_QSTR_note); return mp_obj_new_float(common_hal_synthio_midi_to_hz_float(note)); } @@ -278,7 +278,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(synthio_midi_to_hz_obj, midi_to_hz); //| 24/12 (2.0) corresponds to middle C, 33/12 (2.75) is concert A.""" //| -STATIC mp_obj_t voct_to_hz(mp_obj_t arg) { +static mp_obj_t voct_to_hz(mp_obj_t arg) { mp_float_t note = mp_arg_validate_obj_float_range(arg, -11, 11, MP_QSTR_ctrl); return mp_obj_new_float(common_hal_synthio_voct_to_hz_float(note)); } @@ -290,7 +290,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(synthio_voct_to_hz_obj, voct_to_hz); //| #if CIRCUITPY_AUDIOCORE_DEBUG -STATIC mp_obj_t synthio_lfo_tick(size_t n, const mp_obj_t *args) { +static mp_obj_t synthio_lfo_tick(size_t n, const mp_obj_t *args) { shared_bindings_synthio_lfo_tick(48000); mp_obj_t result[n]; for (size_t i = 0; i < n; i++) { @@ -304,7 +304,7 @@ STATIC mp_obj_t synthio_lfo_tick(size_t n, const mp_obj_t *args) { MP_DEFINE_CONST_FUN_OBJ_VAR(synthio_lfo_tick_obj, 1, synthio_lfo_tick); #endif -STATIC const mp_rom_map_elem_t synthio_module_globals_table[] = { +static const mp_rom_map_elem_t synthio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_synthio) }, { MP_ROM_QSTR(MP_QSTR_Biquad), MP_ROM_PTR(&synthio_biquad_type_obj) }, { MP_ROM_QSTR(MP_QSTR_Math), MP_ROM_PTR(&synthio_math_type) }, @@ -324,7 +324,7 @@ STATIC const mp_rom_map_elem_t synthio_module_globals_table[] = { #endif }; -STATIC MP_DEFINE_CONST_DICT(synthio_module_globals, synthio_module_globals_table); +static MP_DEFINE_CONST_DICT(synthio_module_globals, synthio_module_globals_table); const mp_obj_module_t synthio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/terminalio/Terminal.c b/shared-bindings/terminalio/Terminal.c index 745b3f3a8f7f..1173cbbe244d 100644 --- a/shared-bindings/terminalio/Terminal.c +++ b/shared-bindings/terminalio/Terminal.c @@ -46,7 +46,7 @@ //| a `fontio.BuiltinFont` and the TileGrid's bitmap should match the font's bitmap.""" //| ... -STATIC mp_obj_t terminalio_terminal_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t terminalio_terminal_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_scroll_area, ARG_font, ARG_status_bar }; static const mp_arg_t allowed_args[] = { { MP_QSTR_scroll_area, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -82,14 +82,14 @@ STATIC mp_obj_t terminalio_terminal_make_new(const mp_obj_type_t *type, size_t n //| :rtype: int or None""" //| ... //| -STATIC mp_uint_t terminalio_terminal_write(mp_obj_t self_in, const void *buf_in, mp_uint_t size, int *errcode) { +static mp_uint_t terminalio_terminal_write(mp_obj_t self_in, const void *buf_in, mp_uint_t size, int *errcode) { terminalio_terminal_obj_t *self = MP_OBJ_TO_PTR(self_in); const byte *buf = buf_in; return common_hal_terminalio_terminal_write(self, buf, size, errcode); } -STATIC mp_uint_t terminalio_terminal_ioctl(mp_obj_t self_in, mp_uint_t request, mp_uint_t arg, int *errcode) { +static mp_uint_t terminalio_terminal_ioctl(mp_obj_t self_in, mp_uint_t request, mp_uint_t arg, int *errcode) { terminalio_terminal_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_uint_t ret; if (request == MP_STREAM_POLL) { @@ -105,13 +105,13 @@ STATIC mp_uint_t terminalio_terminal_ioctl(mp_obj_t self_in, mp_uint_t request, return ret; } -STATIC const mp_rom_map_elem_t terminalio_terminal_locals_dict_table[] = { +static const mp_rom_map_elem_t terminalio_terminal_locals_dict_table[] = { // Standard stream methods. { MP_OBJ_NEW_QSTR(MP_QSTR_write), MP_ROM_PTR(&mp_stream_write_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(terminalio_terminal_locals_dict, terminalio_terminal_locals_dict_table); +static MP_DEFINE_CONST_DICT(terminalio_terminal_locals_dict, terminalio_terminal_locals_dict_table); -STATIC const mp_stream_p_t terminalio_terminal_stream_p = { +static const mp_stream_p_t terminalio_terminal_stream_p = { .read = NULL, .write = terminalio_terminal_write, .ioctl = terminalio_terminal_ioctl, diff --git a/shared-bindings/terminalio/__init__.c b/shared-bindings/terminalio/__init__.c index 81256dab58e7..c3760c1d4812 100644 --- a/shared-bindings/terminalio/__init__.c +++ b/shared-bindings/terminalio/__init__.c @@ -27,14 +27,14 @@ //| //| FONT: fontio.BuiltinFont //| """The built in font""" -STATIC const mp_rom_map_elem_t terminalio_module_globals_table[] = { +static const mp_rom_map_elem_t terminalio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_terminalio) }, { MP_ROM_QSTR(MP_QSTR_Terminal), MP_OBJ_FROM_PTR(&terminalio_terminal_type) }, { MP_ROM_QSTR(MP_QSTR_FONT), MP_ROM_PTR(&supervisor_terminal_font) }, }; -STATIC MP_DEFINE_CONST_DICT(terminalio_module_globals, terminalio_module_globals_table); +static MP_DEFINE_CONST_DICT(terminalio_module_globals, terminalio_module_globals_table); const mp_obj_module_t terminalio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/time/__init__.c b/shared-bindings/time/__init__.c index 0ce8e68280f8..dbf626180358 100644 --- a/shared-bindings/time/__init__.c +++ b/shared-bindings/time/__init__.c @@ -43,7 +43,7 @@ //| :rtype: float""" //| ... //| -STATIC mp_obj_t time_monotonic(void) { +static mp_obj_t time_monotonic(void) { uint64_t ticks_ms = common_hal_time_monotonic_ms(); return mp_obj_new_float(uint64_to_float(ticks_ms) / MICROPY_FLOAT_CONST(1000.0)); } @@ -55,7 +55,7 @@ MP_DEFINE_CONST_FUN_OBJ_0(time_monotonic_obj, time_monotonic); //| :param float seconds: the time to sleep in fractional seconds""" //| ... //| -STATIC mp_obj_t time_sleep(mp_obj_t seconds_o) { +static mp_obj_t time_sleep(mp_obj_t seconds_o) { #if MICROPY_PY_BUILTINS_FLOAT mp_float_t seconds = mp_obj_get_float(seconds_o); mp_float_t msecs = MICROPY_FLOAT_CONST(1000.0) * seconds + MICROPY_FLOAT_CONST(0.5); @@ -70,7 +70,7 @@ STATIC mp_obj_t time_sleep(mp_obj_t seconds_o) { MP_DEFINE_CONST_FUN_OBJ_1(time_sleep_obj, time_sleep); #if MICROPY_PY_COLLECTIONS -STATIC mp_obj_t struct_time_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { +static mp_obj_t struct_time_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { mp_arg_check_num(n_args, n_kw, 1, 1, false); size_t len; mp_obj_t *items; @@ -161,7 +161,7 @@ void struct_time_to_tm(mp_obj_t t, timeutils_struct_time_t *tm) { #if MICROPY_LONGINT_IMPL == MICROPY_LONGINT_IMPL_NONE // Function to return a NotImplementedError on platforms that don't // support long integers -STATIC mp_obj_t time_not_implemented(void) { +static mp_obj_t time_not_implemented(void) { mp_raise_NotImplementedError(MP_ERROR_TEXT("No long integer support")); } MP_DEFINE_CONST_FUN_OBJ_0(time_not_implemented_obj, time_not_implemented); @@ -179,7 +179,7 @@ mp_obj_t MP_WEAK rtc_get_time_source_time(void) { //| :rtype: int""" //| ... //| -STATIC mp_obj_t time_time(void) { +static mp_obj_t time_time(void) { timeutils_struct_time_t tm; struct_time_to_tm(rtc_get_time_source_time(), &tm); mp_uint_t secs = timeutils_seconds_since_epoch(tm.tm_year, tm.tm_mon, tm.tm_mday, @@ -198,7 +198,7 @@ MP_DEFINE_CONST_FUN_OBJ_0(time_time_obj, time_time); //| :rtype: int""" //| ... //| -STATIC mp_obj_t time_monotonic_ns(void) { +static mp_obj_t time_monotonic_ns(void) { uint64_t time64 = common_hal_time_monotonic_ns(); return mp_obj_new_int_from_ll((long long)time64); } @@ -214,7 +214,7 @@ MP_DEFINE_CONST_FUN_OBJ_0(time_monotonic_ns_obj, time_monotonic_ns); //| :rtype: time.struct_time""" //| ... //| -STATIC mp_obj_t time_localtime(size_t n_args, const mp_obj_t *args) { +static mp_obj_t time_localtime(size_t n_args, const mp_obj_t *args) { if (n_args == 0 || args[0] == mp_const_none) { return rtc_get_time_source_time(); } @@ -251,7 +251,7 @@ MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(time_localtime_obj, 0, 1, time_localtime); //| :rtype: int""" //| ... //| -STATIC mp_obj_t time_mktime(mp_obj_t t) { +static mp_obj_t time_mktime(mp_obj_t t) { mp_obj_t *elem; size_t len; @@ -276,7 +276,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(time_mktime_obj, time_mktime); #endif // MICROPY_LONGINT_IMPL #endif // MICROPY_PY_COLLECTIONS -STATIC const mp_rom_map_elem_t time_module_globals_table[] = { +static const mp_rom_map_elem_t time_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_time) }, { MP_ROM_QSTR(MP_QSTR_monotonic), MP_ROM_PTR(&time_monotonic_obj) }, @@ -300,7 +300,7 @@ STATIC const mp_rom_map_elem_t time_module_globals_table[] = { #endif }; -STATIC MP_DEFINE_CONST_DICT(time_module_globals, time_module_globals_table); +static MP_DEFINE_CONST_DICT(time_module_globals, time_module_globals_table); const mp_obj_module_t time_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/touchio/TouchIn.c b/shared-bindings/touchio/TouchIn.c index 34739236e3b8..d435ae250c80 100644 --- a/shared-bindings/touchio/TouchIn.c +++ b/shared-bindings/touchio/TouchIn.c @@ -36,7 +36,7 @@ //| //| :param ~microcontroller.Pin pin: the pin to read from""" //| ... -STATIC mp_obj_t touchio_touchin_make_new(const mp_obj_type_t *type, +static mp_obj_t touchio_touchin_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { // check number of arguments mp_arg_check_num(n_args, n_kw, 1, 1, false); @@ -53,14 +53,14 @@ STATIC mp_obj_t touchio_touchin_make_new(const mp_obj_type_t *type, //| def deinit(self) -> None: //| """Deinitialises the TouchIn and releases any hardware resources for reuse.""" //| ... -STATIC mp_obj_t touchio_touchin_deinit(mp_obj_t self_in) { +static mp_obj_t touchio_touchin_deinit(mp_obj_t self_in) { touchio_touchin_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_touchio_touchin_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(touchio_touchin_deinit_obj, touchio_touchin_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(touchio_touchin_deinit_obj, touchio_touchin_deinit); -STATIC void check_for_deinit(touchio_touchin_obj_t *self) { +static void check_for_deinit(touchio_touchin_obj_t *self) { if (common_hal_touchio_touchin_deinited(self)) { raise_deinited_error(); } @@ -75,18 +75,18 @@ STATIC void check_for_deinit(touchio_touchin_obj_t *self) { //| """Automatically deinitializes the hardware when exiting a context. See //| :ref:`lifetime-and-contextmanagers` for more info.""" //| ... -STATIC mp_obj_t touchio_touchin_obj___exit__(size_t n_args, const mp_obj_t *args) { +static mp_obj_t touchio_touchin_obj___exit__(size_t n_args, const mp_obj_t *args) { (void)n_args; common_hal_touchio_touchin_deinit(args[0]); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(touchio_touchin___exit___obj, 4, 4, touchio_touchin_obj___exit__); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(touchio_touchin___exit___obj, 4, 4, touchio_touchin_obj___exit__); //| value: bool //| """Whether the touch pad is being touched or not. (read-only) //| //| True when `raw_value` > `threshold`.""" -STATIC mp_obj_t touchio_touchin_obj_get_value(mp_obj_t self_in) { +static mp_obj_t touchio_touchin_obj_get_value(mp_obj_t self_in) { touchio_touchin_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return mp_obj_new_bool(common_hal_touchio_touchin_get_value(self)); @@ -99,7 +99,7 @@ MP_PROPERTY_GETTER(touchio_touchin_value_obj, //| raw_value: int //| """The raw touch measurement as an `int`. (read-only)""" -STATIC mp_obj_t touchio_touchin_obj_get_raw_value(mp_obj_t self_in) { +static mp_obj_t touchio_touchin_obj_get_raw_value(mp_obj_t self_in) { touchio_touchin_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_touchio_touchin_get_raw_value(self)); @@ -125,7 +125,7 @@ MP_PROPERTY_GETTER(touchio_touchin_raw_value_obj, //| touch = touchio.TouchIn(board.A1) //| touch.threshold = 7300""" //| -STATIC mp_obj_t touchio_touchin_obj_get_threshold(mp_obj_t self_in) { +static mp_obj_t touchio_touchin_obj_get_threshold(mp_obj_t self_in) { touchio_touchin_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(common_hal_touchio_touchin_get_threshold(self)); @@ -133,7 +133,7 @@ STATIC mp_obj_t touchio_touchin_obj_get_threshold(mp_obj_t self_in) { MP_DEFINE_CONST_FUN_OBJ_1(touchio_touchin_get_threshold_obj, touchio_touchin_obj_get_threshold); -STATIC mp_obj_t touchio_touchin_obj_set_threshold(mp_obj_t self_in, mp_obj_t threshold_obj) { +static mp_obj_t touchio_touchin_obj_set_threshold(mp_obj_t self_in, mp_obj_t threshold_obj) { touchio_touchin_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); uint32_t new_threshold = mp_obj_get_int(threshold_obj); @@ -149,7 +149,7 @@ MP_PROPERTY_GETSET(touchio_touchin_threshold_obj, (mp_obj_t)&touchio_touchin_set_threshold_obj); -STATIC const mp_rom_map_elem_t touchio_touchin_locals_dict_table[] = { +static const mp_rom_map_elem_t touchio_touchin_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) }, { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&touchio_touchin___exit___obj) }, { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&touchio_touchin_deinit_obj) }, @@ -159,7 +159,7 @@ STATIC const mp_rom_map_elem_t touchio_touchin_locals_dict_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR_threshold), MP_ROM_PTR(&touchio_touchin_threshold_obj)}, }; -STATIC MP_DEFINE_CONST_DICT(touchio_touchin_locals_dict, touchio_touchin_locals_dict_table); +static MP_DEFINE_CONST_DICT(touchio_touchin_locals_dict, touchio_touchin_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( touchio_touchin_type, diff --git a/shared-bindings/touchio/__init__.c b/shared-bindings/touchio/__init__.c index ee1cc19f72f5..804e55b4117d 100644 --- a/shared-bindings/touchio/__init__.c +++ b/shared-bindings/touchio/__init__.c @@ -39,12 +39,12 @@ //| This example will initialize the the device, and print the //| :py:data:`~touchio.TouchIn.value`.""" -STATIC const mp_rom_map_elem_t touchio_module_globals_table[] = { +static const mp_rom_map_elem_t touchio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_touchio) }, { MP_ROM_QSTR(MP_QSTR_TouchIn), MP_ROM_PTR(&touchio_touchin_type) }, }; -STATIC MP_DEFINE_CONST_DICT(touchio_module_globals, touchio_module_globals_table); +static MP_DEFINE_CONST_DICT(touchio_module_globals, touchio_module_globals_table); const mp_obj_module_t touchio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/traceback/__init__.c b/shared-bindings/traceback/__init__.c index 587cf43aed9f..d1cf33070502 100644 --- a/shared-bindings/traceback/__init__.c +++ b/shared-bindings/traceback/__init__.c @@ -19,7 +19,7 @@ //| ... //| -STATIC void traceback_exception_common(bool is_print_exception, mp_print_t *print, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static void traceback_exception_common(bool is_print_exception, mp_print_t *print, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_exc, ARG_value, ARG_tb, ARG_limit, ARG_file, ARG_chain }; static const mp_arg_t allowed_args[] = { { MP_QSTR_, MP_ARG_OBJ | MP_ARG_REQUIRED, {.u_obj = MP_OBJ_NULL} }, @@ -133,7 +133,7 @@ STATIC void traceback_exception_common(bool is_print_exception, mp_print_t *prin //| :param bool chain: If `True` then chained exceptions will be printed. //| """ //| -STATIC mp_obj_t traceback_format_exception(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t traceback_format_exception(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { mp_print_t print; vstr_t vstr; vstr_init_print(&vstr, 0, &print); @@ -142,7 +142,7 @@ STATIC mp_obj_t traceback_format_exception(size_t n_args, const mp_obj_t *pos_ar return mp_obj_new_list(1, &output); } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(traceback_format_exception_obj, 0, traceback_format_exception); +static MP_DEFINE_CONST_FUN_OBJ_KW(traceback_format_exception_obj, 0, traceback_format_exception); //| def print_exception( //| exc: BaseException | Type[BaseException], @@ -177,21 +177,21 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_KW(traceback_format_exception_obj, 0, traceback_f //| ... //| -STATIC mp_obj_t traceback_print_exception(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t traceback_print_exception(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { mp_print_t print = mp_plat_print; traceback_exception_common(true, &print, n_args, pos_args, kw_args); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(traceback_print_exception_obj, 0, traceback_print_exception); +static MP_DEFINE_CONST_FUN_OBJ_KW(traceback_print_exception_obj, 0, traceback_print_exception); -STATIC const mp_rom_map_elem_t traceback_module_globals_table[] = { +static const mp_rom_map_elem_t traceback_module_globals_table[] = { // module name { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_traceback) }, // module functions { MP_ROM_QSTR(MP_QSTR_format_exception), MP_ROM_PTR(&traceback_format_exception_obj) }, { MP_ROM_QSTR(MP_QSTR_print_exception), MP_ROM_PTR(&traceback_print_exception_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(traceback_module_globals, traceback_module_globals_table); +static MP_DEFINE_CONST_DICT(traceback_module_globals, traceback_module_globals_table); const mp_obj_module_t traceback_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/uheap/__init__.c b/shared-bindings/uheap/__init__.c index f80235df7d03..0170c56c04b5 100644 --- a/shared-bindings/uheap/__init__.c +++ b/shared-bindings/uheap/__init__.c @@ -19,19 +19,19 @@ //| estimated size.""" //| ... //| -STATIC mp_obj_t uheap_info(mp_obj_t obj) { +static mp_obj_t uheap_info(mp_obj_t obj) { uint32_t size = shared_module_uheap_info(obj); return MP_OBJ_NEW_SMALL_INT(size); } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(uheap_info_obj, uheap_info); +static MP_DEFINE_CONST_FUN_OBJ_1(uheap_info_obj, uheap_info); -STATIC const mp_rom_map_elem_t uheap_module_globals_table[] = { +static const mp_rom_map_elem_t uheap_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_uheap) }, { MP_ROM_QSTR(MP_QSTR_info), MP_ROM_PTR(&uheap_info_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(uheap_module_globals, uheap_module_globals_table); +static MP_DEFINE_CONST_DICT(uheap_module_globals, uheap_module_globals_table); const mp_obj_module_t uheap_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/usb/__init__.c b/shared-bindings/usb/__init__.c index afa70940bad7..d1a61be7bc4f 100644 --- a/shared-bindings/usb/__init__.c +++ b/shared-bindings/usb/__init__.c @@ -18,12 +18,12 @@ //| """ //| -STATIC mp_rom_map_elem_t usb_module_globals_table[] = { +static mp_rom_map_elem_t usb_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_usb) }, { MP_ROM_QSTR(MP_QSTR_core), MP_OBJ_FROM_PTR(&usb_core_module) }, }; -STATIC MP_DEFINE_CONST_DICT(usb_module_globals, usb_module_globals_table); +static MP_DEFINE_CONST_DICT(usb_module_globals, usb_module_globals_table); const mp_obj_module_t usb_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/usb/core/Device.c b/shared-bindings/usb/core/Device.c index 6ff038581b82..813b89a896c5 100644 --- a/shared-bindings/usb/core/Device.c +++ b/shared-bindings/usb/core/Device.c @@ -50,7 +50,7 @@ //| idVendor: int //| """The USB vendor ID of the device""" -STATIC mp_obj_t usb_core_device_obj_get_idVendor(mp_obj_t self_in) { +static mp_obj_t usb_core_device_obj_get_idVendor(mp_obj_t self_in) { usb_core_device_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_usb_core_device_get_idVendor(self)); } @@ -61,7 +61,7 @@ MP_PROPERTY_GETTER(usb_core_device_idVendor_obj, //| idProduct: int //| """The USB product ID of the device""" -STATIC mp_obj_t usb_core_device_obj_get_idProduct(mp_obj_t self_in) { +static mp_obj_t usb_core_device_obj_get_idProduct(mp_obj_t self_in) { usb_core_device_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_usb_core_device_get_idProduct(self)); } @@ -72,7 +72,7 @@ MP_PROPERTY_GETTER(usb_core_device_idProduct_obj, //| serial_number: str //| """The USB device's serial number string.""" -STATIC mp_obj_t usb_core_device_obj_get_serial_number(mp_obj_t self_in) { +static mp_obj_t usb_core_device_obj_get_serial_number(mp_obj_t self_in) { usb_core_device_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_usb_core_device_get_serial_number(self); } @@ -83,7 +83,7 @@ MP_PROPERTY_GETTER(usb_core_device_serial_number_obj, //| product: str //| """The USB device's product string.""" -STATIC mp_obj_t usb_core_device_obj_get_product(mp_obj_t self_in) { +static mp_obj_t usb_core_device_obj_get_product(mp_obj_t self_in) { usb_core_device_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_usb_core_device_get_product(self); } @@ -94,7 +94,7 @@ MP_PROPERTY_GETTER(usb_core_device_product_obj, //| manufacturer: str //| """The USB device's manufacturer string.""" -STATIC mp_obj_t usb_core_device_obj_get_manufacturer(mp_obj_t self_in) { +static mp_obj_t usb_core_device_obj_get_manufacturer(mp_obj_t self_in) { usb_core_device_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_usb_core_device_get_manufacturer(self); } @@ -113,7 +113,7 @@ MP_PROPERTY_GETTER(usb_core_device_manufacturer_obj, //| without arguments is enough to get the device ready. //| """ //| ... -STATIC mp_obj_t usb_core_device_set_configuration(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t usb_core_device_set_configuration(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_configuration }; static const mp_arg_t allowed_args[] = { { MP_QSTR_configuration, MP_ARG_INT, {.u_int = 1} }, @@ -136,7 +136,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(usb_core_device_set_configuration_obj, 1, usb_core_de //| :returns: the number of bytes written //| """ //| ... -STATIC mp_obj_t usb_core_device_write(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t usb_core_device_write(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_endpoint, ARG_data, ARG_timeout }; static const mp_arg_t allowed_args[] = { { MP_QSTR_endpoint, MP_ARG_REQUIRED | MP_ARG_INT }, @@ -166,7 +166,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(usb_core_device_write_obj, 2, usb_core_device_write); //| :returns: the number of bytes read //| """ //| ... -STATIC mp_obj_t usb_core_device_read(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t usb_core_device_read(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_endpoint, ARG_size_or_buffer, ARG_timeout }; static const mp_arg_t allowed_args[] = { { MP_QSTR_endpoint, MP_ARG_REQUIRED | MP_ARG_INT }, @@ -211,7 +211,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(usb_core_device_read_obj, 2, usb_core_device_read); //| number of bytes read. //| """ //| ... -STATIC mp_obj_t usb_core_device_ctrl_transfer(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t usb_core_device_ctrl_transfer(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_bmRequestType, ARG_bRequest, ARG_wValue, ARG_wIndex, ARG_data_or_wLength, ARG_timeout }; static const mp_arg_t allowed_args[] = { { MP_QSTR_bmRequestType, MP_ARG_REQUIRED | MP_ARG_INT }, @@ -252,7 +252,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(usb_core_device_ctrl_transfer_obj, 2, usb_core_device //| :param int interface: the device interface number to check //| """ //| ... -STATIC mp_obj_t usb_core_device_is_kernel_driver_active(mp_obj_t self_in, mp_obj_t interface_in) { +static mp_obj_t usb_core_device_is_kernel_driver_active(mp_obj_t self_in, mp_obj_t interface_in) { usb_core_device_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_int_t interface = mp_obj_get_int(interface_in); bool active = common_hal_usb_core_device_is_kernel_driver_active(self, interface); @@ -268,7 +268,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(usb_core_device_is_kernel_driver_active_obj, usb_core_ //| :param int interface: the device interface number to stop CircuitPython on //| """ //| ... -STATIC mp_obj_t usb_core_device_detach_kernel_driver(mp_obj_t self_in, mp_obj_t interface_in) { +static mp_obj_t usb_core_device_detach_kernel_driver(mp_obj_t self_in, mp_obj_t interface_in) { usb_core_device_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_int_t interface = mp_obj_get_int(interface_in); common_hal_usb_core_device_detach_kernel_driver(self, interface); @@ -283,7 +283,7 @@ MP_DEFINE_CONST_FUN_OBJ_2(usb_core_device_detach_kernel_driver_obj, usb_core_dev //| """ //| ... //| -STATIC mp_obj_t usb_core_device_attach_kernel_driver(mp_obj_t self_in, mp_obj_t interface_in) { +static mp_obj_t usb_core_device_attach_kernel_driver(mp_obj_t self_in, mp_obj_t interface_in) { usb_core_device_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_int_t interface = mp_obj_get_int(interface_in); common_hal_usb_core_device_attach_kernel_driver(self, interface); @@ -292,7 +292,7 @@ STATIC mp_obj_t usb_core_device_attach_kernel_driver(mp_obj_t self_in, mp_obj_t MP_DEFINE_CONST_FUN_OBJ_2(usb_core_device_attach_kernel_driver_obj, usb_core_device_attach_kernel_driver); -STATIC const mp_rom_map_elem_t usb_core_device_locals_dict_table[] = { +static const mp_rom_map_elem_t usb_core_device_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_idVendor), MP_ROM_PTR(&usb_core_device_idVendor_obj) }, { MP_ROM_QSTR(MP_QSTR_idProduct), MP_ROM_PTR(&usb_core_device_idProduct_obj) }, { MP_ROM_QSTR(MP_QSTR_serial_number), MP_ROM_PTR(&usb_core_device_serial_number_obj) }, @@ -309,7 +309,7 @@ STATIC const mp_rom_map_elem_t usb_core_device_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_attach_kernel_driver), MP_ROM_PTR(&usb_core_device_attach_kernel_driver_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(usb_core_device_locals_dict, usb_core_device_locals_dict_table); +static MP_DEFINE_CONST_DICT(usb_core_device_locals_dict, usb_core_device_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( usb_core_device_type, diff --git a/shared-bindings/usb/core/__init__.c b/shared-bindings/usb/core/__init__.c index b1f0056dd863..99be3888bf87 100644 --- a/shared-bindings/usb/core/__init__.c +++ b/shared-bindings/usb/core/__init__.c @@ -69,7 +69,7 @@ typedef struct { } usb_core_devices_obj_t; // This is an internal iterator type to use with find. -STATIC mp_obj_t _next_device(usb_core_devices_obj_t *iter) { +static mp_obj_t _next_device(usb_core_devices_obj_t *iter) { // Brute force check all possible device numbers for one that matches. usb_core_device_obj_t temp_device; for (size_t i = iter->next_index; i < 256; i++) { @@ -96,7 +96,7 @@ STATIC mp_obj_t _next_device(usb_core_devices_obj_t *iter) { return mp_const_none; } -STATIC mp_obj_t usb_core_devices_iternext(mp_obj_t self_in) { +static mp_obj_t usb_core_devices_iternext(mp_obj_t self_in) { mp_check_self(mp_obj_is_type(self_in, &usb_core_devices_type)); usb_core_devices_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_obj_t device = _next_device(self); @@ -113,7 +113,7 @@ MP_DEFINE_CONST_OBJ_TYPE( iter, usb_core_devices_iternext ); -STATIC mp_obj_t usb_core_find(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t usb_core_find(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_find_all, ARG_idVendor, ARG_idProduct }; static const mp_arg_t allowed_args[] = { { MP_QSTR_find_all, MP_ARG_BOOL, {.u_bool = false} }, @@ -146,7 +146,7 @@ STATIC mp_obj_t usb_core_find(size_t n_args, const mp_obj_t *pos_args, mp_map_t MP_DEFINE_CONST_FUN_OBJ_KW(usb_core_find_obj, 0, usb_core_find); -STATIC mp_rom_map_elem_t usb_core_module_globals_table[] = { +static mp_rom_map_elem_t usb_core_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_usb_dot_core) }, // Functions { MP_ROM_QSTR(MP_QSTR_find), MP_OBJ_FROM_PTR(&usb_core_find_obj) }, @@ -159,7 +159,7 @@ STATIC mp_rom_map_elem_t usb_core_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_USBTimeoutError), MP_OBJ_FROM_PTR(&mp_type_usb_core_USBTimeoutError) }, }; -STATIC MP_DEFINE_CONST_DICT(usb_core_module_globals, usb_core_module_globals_table); +static MP_DEFINE_CONST_DICT(usb_core_module_globals, usb_core_module_globals_table); void usb_core_exception_print(const mp_print_t *print, mp_obj_t o_in, mp_print_kind_t kind) { mp_print_kind_t k = kind & ~PRINT_EXC_SUBCLASS; diff --git a/shared-bindings/usb_cdc/Serial.c b/shared-bindings/usb_cdc/Serial.c index ae77d793a169..9fc5de21bcda 100644 --- a/shared-bindings/usb_cdc/Serial.c +++ b/shared-bindings/usb_cdc/Serial.c @@ -76,7 +76,7 @@ //| ... // These three methods are used by the shared stream methods. -STATIC mp_uint_t usb_cdc_serial_read_stream(mp_obj_t self_in, void *buf_in, mp_uint_t size, int *errcode) { +static mp_uint_t usb_cdc_serial_read_stream(mp_obj_t self_in, void *buf_in, mp_uint_t size, int *errcode) { usb_cdc_serial_obj_t *self = MP_OBJ_TO_PTR(self_in); byte *buf = buf_in; @@ -88,14 +88,14 @@ STATIC mp_uint_t usb_cdc_serial_read_stream(mp_obj_t self_in, void *buf_in, mp_u return common_hal_usb_cdc_serial_read(self, buf, size, errcode); } -STATIC mp_uint_t usb_cdc_serial_write_stream(mp_obj_t self_in, const void *buf_in, mp_uint_t size, int *errcode) { +static mp_uint_t usb_cdc_serial_write_stream(mp_obj_t self_in, const void *buf_in, mp_uint_t size, int *errcode) { usb_cdc_serial_obj_t *self = MP_OBJ_TO_PTR(self_in); const byte *buf = buf_in; return common_hal_usb_cdc_serial_write(self, buf, size, errcode); } -STATIC mp_uint_t usb_cdc_serial_ioctl_stream(mp_obj_t self_in, mp_uint_t request, mp_uint_t arg, int *errcode) { +static mp_uint_t usb_cdc_serial_ioctl_stream(mp_obj_t self_in, mp_uint_t request, mp_uint_t arg, int *errcode) { usb_cdc_serial_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_uint_t ret = 0; switch (request) { @@ -129,7 +129,7 @@ STATIC mp_uint_t usb_cdc_serial_ioctl_stream(mp_obj_t self_in, mp_uint_t request //| Most terminal programs and ``pyserial`` assert DTR when opening a serial connection. //| However, the C# ``SerialPort`` API does not. You must set ``SerialPort.DtrEnable``. //| """ -STATIC mp_obj_t usb_cdc_serial_get_connected(mp_obj_t self_in) { +static mp_obj_t usb_cdc_serial_get_connected(mp_obj_t self_in) { usb_cdc_serial_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_bool(common_hal_usb_cdc_serial_get_connected(self)); } @@ -140,7 +140,7 @@ MP_PROPERTY_GETTER(usb_cdc_serial_connected_obj, //| in_waiting: int //| """Returns the number of bytes waiting to be read on the USB serial input. (read-only)""" -STATIC mp_obj_t usb_cdc_serial_get_in_waiting(mp_obj_t self_in) { +static mp_obj_t usb_cdc_serial_get_in_waiting(mp_obj_t self_in) { usb_cdc_serial_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_int(common_hal_usb_cdc_serial_get_in_waiting(self)); } @@ -151,7 +151,7 @@ MP_PROPERTY_GETTER(usb_cdc_serial_in_waiting_obj, //| out_waiting: int //| """Returns the number of bytes waiting to be written on the USB serial output. (read-only)""" -STATIC mp_obj_t usb_cdc_serial_get_out_waiting(mp_obj_t self_in) { +static mp_obj_t usb_cdc_serial_get_out_waiting(mp_obj_t self_in) { usb_cdc_serial_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_int(common_hal_usb_cdc_serial_get_out_waiting(self)); } @@ -163,7 +163,7 @@ MP_PROPERTY_GETTER(usb_cdc_serial_out_waiting_obj, //| def reset_input_buffer(self) -> None: //| """Clears any unread bytes.""" //| ... -STATIC mp_obj_t usb_cdc_serial_reset_input_buffer(mp_obj_t self_in) { +static mp_obj_t usb_cdc_serial_reset_input_buffer(mp_obj_t self_in) { usb_cdc_serial_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_usb_cdc_serial_reset_input_buffer(self); return mp_const_none; @@ -173,7 +173,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(usb_cdc_serial_reset_input_buffer_obj, usb_cdc_serial_ //| def reset_output_buffer(self) -> None: //| """Clears any unwritten bytes.""" //| ... -STATIC mp_obj_t usb_cdc_serial_reset_output_buffer(mp_obj_t self_in) { +static mp_obj_t usb_cdc_serial_reset_output_buffer(mp_obj_t self_in) { usb_cdc_serial_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_usb_cdc_serial_reset_output_buffer(self); return mp_const_none; @@ -183,14 +183,14 @@ MP_DEFINE_CONST_FUN_OBJ_1(usb_cdc_serial_reset_output_buffer_obj, usb_cdc_serial //| timeout: Optional[float] //| """The initial value of `timeout` is ``None``. If ``None``, wait indefinitely to satisfy //| the conditions of a read operation. If 0, do not wait. If > 0, wait only ``timeout`` seconds.""" -STATIC mp_obj_t usb_cdc_serial_get_timeout(mp_obj_t self_in) { +static mp_obj_t usb_cdc_serial_get_timeout(mp_obj_t self_in) { usb_cdc_serial_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_float_t timeout = common_hal_usb_cdc_serial_get_timeout(self); return (timeout < 0.0f) ? mp_const_none : mp_obj_new_float(self->timeout); } MP_DEFINE_CONST_FUN_OBJ_1(usb_cdc_serial_get_timeout_obj, usb_cdc_serial_get_timeout); -STATIC mp_obj_t usb_cdc_serial_set_timeout(mp_obj_t self_in, mp_obj_t timeout_in) { +static mp_obj_t usb_cdc_serial_set_timeout(mp_obj_t self_in, mp_obj_t timeout_in) { usb_cdc_serial_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_usb_cdc_serial_set_timeout(self, timeout_in == mp_const_none ? -1.0f : mp_obj_get_float(timeout_in)); @@ -207,14 +207,14 @@ MP_PROPERTY_GETSET(usb_cdc_serial_timeout_obj, //| writing all the bytes passed to ``write()``.If 0, do not wait. //| If > 0, wait only ``write_timeout`` seconds.""" //| -STATIC mp_obj_t usb_cdc_serial_get_write_timeout(mp_obj_t self_in) { +static mp_obj_t usb_cdc_serial_get_write_timeout(mp_obj_t self_in) { usb_cdc_serial_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_float_t write_timeout = common_hal_usb_cdc_serial_get_write_timeout(self); return (write_timeout < 0.0f) ? mp_const_none : mp_obj_new_float(self->write_timeout); } MP_DEFINE_CONST_FUN_OBJ_1(usb_cdc_serial_get_write_timeout_obj, usb_cdc_serial_get_write_timeout); -STATIC mp_obj_t usb_cdc_serial_set_write_timeout(mp_obj_t self_in, mp_obj_t write_timeout_in) { +static mp_obj_t usb_cdc_serial_set_write_timeout(mp_obj_t self_in, mp_obj_t write_timeout_in) { usb_cdc_serial_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_usb_cdc_serial_set_write_timeout(self, write_timeout_in == mp_const_none ? -1.0f : mp_obj_get_float(write_timeout_in)); @@ -227,7 +227,7 @@ MP_PROPERTY_GETSET(usb_cdc_serial_write_timeout_obj, (mp_obj_t)&usb_cdc_serial_set_write_timeout_obj); -STATIC const mp_rom_map_elem_t usb_cdc_serial_locals_dict_table[] = { +static const mp_rom_map_elem_t usb_cdc_serial_locals_dict_table[] = { // Standard stream methods. { MP_ROM_QSTR(MP_QSTR_flush), MP_ROM_PTR(&mp_stream_flush_obj) }, { MP_OBJ_NEW_QSTR(MP_QSTR_read), MP_ROM_PTR(&mp_stream_read_obj) }, @@ -250,9 +250,9 @@ STATIC const mp_rom_map_elem_t usb_cdc_serial_locals_dict_table[] = { }; -STATIC MP_DEFINE_CONST_DICT(usb_cdc_serial_locals_dict, usb_cdc_serial_locals_dict_table); +static MP_DEFINE_CONST_DICT(usb_cdc_serial_locals_dict, usb_cdc_serial_locals_dict_table); -STATIC const mp_stream_p_t usb_cdc_serial_stream_p = { +static const mp_stream_p_t usb_cdc_serial_stream_p = { .read = usb_cdc_serial_read_stream, .write = usb_cdc_serial_write_stream, .ioctl = usb_cdc_serial_ioctl_stream, diff --git a/shared-bindings/usb_cdc/__init__.c b/shared-bindings/usb_cdc/__init__.c index cde90ecbc31e..3a2c43c3e922 100644 --- a/shared-bindings/usb_cdc/__init__.c +++ b/shared-bindings/usb_cdc/__init__.c @@ -47,7 +47,7 @@ //| Equivalent to ``usb_cdc.enable(console=False, data=False)``.""" //| ... //| -STATIC mp_obj_t usb_cdc_disable(void) { +static mp_obj_t usb_cdc_disable(void) { if (!common_hal_usb_cdc_disable()) { mp_raise_RuntimeError(MP_ERROR_TEXT("Cannot change USB devices now")); } @@ -70,7 +70,7 @@ MP_DEFINE_CONST_FUN_OBJ_0(usb_cdc_disable_obj, usb_cdc_disable); //| """ //| ... //| -STATIC mp_obj_t usb_cdc_enable(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t usb_cdc_enable(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_console, ARG_data }; static const mp_arg_t allowed_args[] = { { MP_QSTR_console, MP_ARG_KW_ONLY | MP_ARG_BOOL, {.u_bool = true } }, diff --git a/shared-bindings/usb_hid/Device.c b/shared-bindings/usb_hid/Device.c index 6b300a522c0e..1afdda509f41 100644 --- a/shared-bindings/usb_hid/Device.c +++ b/shared-bindings/usb_hid/Device.c @@ -72,7 +72,7 @@ //| """Consumer Control device supporting sent values from 1-652, with no rollover. //| Uses Report ID 3 for its IN report.""" -STATIC mp_obj_t usb_hid_device_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t usb_hid_device_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { usb_hid_device_obj_t *self = mp_obj_malloc(usb_hid_device_obj_t, &usb_hid_device_type); enum { ARG_report_descriptor, ARG_usage_page, ARG_usage, ARG_report_ids, ARG_in_report_lengths, ARG_out_report_lengths }; static const mp_arg_t allowed_args[] = { @@ -161,7 +161,7 @@ STATIC mp_obj_t usb_hid_device_make_new(const mp_obj_type_t *type, size_t n_args //| In addition, there may be USB wakeup settings in the host computer BIOS/UEFI. //| """ //| ... -STATIC mp_obj_t usb_hid_device_send_report(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t usb_hid_device_send_report(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { usb_hid_device_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); enum { ARG_report, ARG_report_id }; @@ -195,7 +195,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(usb_hid_device_send_report_obj, 1, usb_hid_device_sen //| will return `None` until next report is received. //| """ //| ... -STATIC mp_obj_t usb_hid_device_get_last_received_report(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t usb_hid_device_get_last_received_report(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { usb_hid_device_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); enum { ARG_report_id }; @@ -218,7 +218,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(usb_hid_device_get_last_received_report_obj, 1, usb_h //| usage_page: int //| """The device usage page identifier, which designates a category of device. (read-only)""" -STATIC mp_obj_t usb_hid_device_obj_get_usage_page(mp_obj_t self_in) { +static mp_obj_t usb_hid_device_obj_get_usage_page(mp_obj_t self_in) { usb_hid_device_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_usb_hid_device_get_usage_page(self)); } @@ -233,7 +233,7 @@ MP_PROPERTY_GETTER(usb_hid_device_usage_page_obj, //| For example, Keyboard is 0x06 within the generic desktop usage page 0x01. //| Mouse is 0x02 within the same usage page.""" //| -STATIC mp_obj_t usb_hid_device_obj_get_usage(mp_obj_t self_in) { +static mp_obj_t usb_hid_device_obj_get_usage(mp_obj_t self_in) { usb_hid_device_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_NEW_SMALL_INT(common_hal_usb_hid_device_get_usage(self)); } @@ -243,7 +243,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(usb_hid_device_get_usage_obj, MP_PROPERTY_GETTER(usb_hid_device_usage_obj, (mp_obj_t)&usb_hid_device_get_usage_obj); -STATIC const mp_rom_map_elem_t usb_hid_device_locals_dict_table[] = { +static const mp_rom_map_elem_t usb_hid_device_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_send_report), MP_ROM_PTR(&usb_hid_device_send_report_obj) }, { MP_ROM_QSTR(MP_QSTR_get_last_received_report), MP_ROM_PTR(&usb_hid_device_get_last_received_report_obj) }, { MP_ROM_QSTR(MP_QSTR_usage_page), MP_ROM_PTR(&usb_hid_device_usage_page_obj) }, @@ -254,7 +254,7 @@ STATIC const mp_rom_map_elem_t usb_hid_device_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_CONSUMER_CONTROL), MP_ROM_PTR(&usb_hid_device_consumer_control_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(usb_hid_device_locals_dict, usb_hid_device_locals_dict_table); +static MP_DEFINE_CONST_DICT(usb_hid_device_locals_dict, usb_hid_device_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( usb_hid_device_type, diff --git a/shared-bindings/usb_hid/__init__.c b/shared-bindings/usb_hid/__init__.c index 321cea30470a..49a9662c9562 100644 --- a/shared-bindings/usb_hid/__init__.c +++ b/shared-bindings/usb_hid/__init__.c @@ -36,7 +36,7 @@ //| as `usb_cdc` or `storage` to free up endpoints for use by `usb_hid`. //| """ //| -STATIC mp_obj_t usb_hid_disable(void) { +static mp_obj_t usb_hid_disable(void) { if (!common_hal_usb_hid_disable()) { mp_raise_RuntimeError(MP_ERROR_TEXT("Cannot change USB devices now")); } @@ -88,7 +88,7 @@ MP_DEFINE_CONST_FUN_OBJ_0(usb_hid_disable_obj, usb_hid_disable); //| """ //| ... //| -STATIC mp_obj_t usb_hid_enable(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t usb_hid_enable(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_devices, ARG_boot_device }; static const mp_arg_t allowed_args[] = { { MP_QSTR_devices, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -130,7 +130,7 @@ MP_DEFINE_CONST_FUN_OBJ_KW(usb_hid_enable_obj, 1, usb_hid_enable); //| :rtype int: //| """ //| -STATIC mp_obj_t usb_hid_get_boot_device(void) { +static mp_obj_t usb_hid_get_boot_device(void) { return MP_OBJ_NEW_SMALL_INT(common_hal_usb_hid_get_boot_device()); } MP_DEFINE_CONST_FUN_OBJ_0(usb_hid_get_boot_device_obj, usb_hid_get_boot_device); @@ -147,7 +147,7 @@ MP_DEFINE_CONST_FUN_OBJ_0(usb_hid_get_boot_device_obj, usb_hid_get_boot_device); //| """ //| ... //| -STATIC mp_obj_t usb_hid_set_interface_name(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t usb_hid_set_interface_name(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { static const mp_arg_t allowed_args[] = { { MP_QSTR_interface_name, MP_ARG_OBJ | MP_ARG_REQUIRED, {.u_rom_obj = mp_const_none} } }; @@ -169,7 +169,7 @@ STATIC mp_obj_t usb_hid_set_interface_name(size_t n_args, const mp_obj_t *pos_ar MP_DEFINE_CONST_FUN_OBJ_KW(usb_hid_set_interface_name_obj, 1, usb_hid_set_interface_name); // usb_hid.devices is set once the usb devices are determined, after boot.py runs. -STATIC mp_map_elem_t usb_hid_module_globals_table[] = { +static mp_map_elem_t usb_hid_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_usb_hid) }, { MP_ROM_QSTR(MP_QSTR_Device), MP_OBJ_FROM_PTR(&usb_hid_device_type) }, { MP_ROM_QSTR(MP_QSTR_devices), mp_const_none }, @@ -179,7 +179,7 @@ STATIC mp_map_elem_t usb_hid_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_set_interface_name), MP_OBJ_FROM_PTR(&usb_hid_set_interface_name_obj) }, }; -STATIC MP_DEFINE_MUTABLE_DICT(usb_hid_module_globals, usb_hid_module_globals_table); +static MP_DEFINE_MUTABLE_DICT(usb_hid_module_globals, usb_hid_module_globals_table); const mp_obj_module_t usb_hid_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/usb_host/Port.c b/shared-bindings/usb_host/Port.c index ae0852bb0dfd..10e38c8f3a67 100644 --- a/shared-bindings/usb_host/Port.c +++ b/shared-bindings/usb_host/Port.c @@ -28,7 +28,7 @@ //| """ //| ... //| -STATIC mp_obj_t usb_host_port_make_new(const mp_obj_type_t *type, +static mp_obj_t usb_host_port_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { // check number of arguments mp_arg_check_num(n_args, n_kw, 2, 2, false); @@ -44,10 +44,10 @@ STATIC mp_obj_t usb_host_port_make_new(const mp_obj_type_t *type, return (mp_obj_t)self; } -STATIC const mp_rom_map_elem_t usb_host_port_locals_dict_table[] = { +static const mp_rom_map_elem_t usb_host_port_locals_dict_table[] = { }; -STATIC MP_DEFINE_CONST_DICT(usb_host_port_locals_dict, usb_host_port_locals_dict_table); +static MP_DEFINE_CONST_DICT(usb_host_port_locals_dict, usb_host_port_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( usb_host_port_type, diff --git a/shared-bindings/usb_host/__init__.c b/shared-bindings/usb_host/__init__.c index e311db310576..d71231aef15d 100644 --- a/shared-bindings/usb_host/__init__.c +++ b/shared-bindings/usb_host/__init__.c @@ -40,7 +40,7 @@ //| This function is a CircuitPython extension not present in PyUSB //| """ //| -STATIC mp_obj_t usb_set_user_keymap(mp_obj_t buf_in) { +static mp_obj_t usb_set_user_keymap(mp_obj_t buf_in) { mp_buffer_info_t bufinfo; mp_get_buffer_raise(buf_in, &bufinfo, MP_BUFFER_READ); usb_keymap_set(bufinfo.buf, bufinfo.len); @@ -49,13 +49,13 @@ STATIC mp_obj_t usb_set_user_keymap(mp_obj_t buf_in) { MP_DEFINE_CONST_FUN_OBJ_1(usb_set_user_keymap_obj, usb_set_user_keymap); -STATIC mp_map_elem_t usb_host_module_globals_table[] = { +static mp_map_elem_t usb_host_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_usb_host) }, { MP_ROM_QSTR(MP_QSTR_Port), MP_OBJ_FROM_PTR(&usb_host_port_type) }, { MP_ROM_QSTR(MP_QSTR_set_user_keymap), MP_OBJ_FROM_PTR(&usb_set_user_keymap_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(usb_host_module_globals, usb_host_module_globals_table); +static MP_DEFINE_CONST_DICT(usb_host_module_globals, usb_host_module_globals_table); const mp_obj_module_t usb_host_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/usb_midi/PortIn.c b/shared-bindings/usb_midi/PortIn.c index a200af01bae5..38662a4468cd 100644 --- a/shared-bindings/usb_midi/PortIn.c +++ b/shared-bindings/usb_midi/PortIn.c @@ -46,7 +46,7 @@ //| // These three methods are used by the shared stream methods. -STATIC mp_uint_t usb_midi_portin_read(mp_obj_t self_in, void *buf_in, mp_uint_t size, int *errcode) { +static mp_uint_t usb_midi_portin_read(mp_obj_t self_in, void *buf_in, mp_uint_t size, int *errcode) { usb_midi_portin_obj_t *self = MP_OBJ_TO_PTR(self_in); byte *buf = buf_in; @@ -58,7 +58,7 @@ STATIC mp_uint_t usb_midi_portin_read(mp_obj_t self_in, void *buf_in, mp_uint_t return common_hal_usb_midi_portin_read(self, buf, size, errcode); } -STATIC mp_uint_t usb_midi_portin_ioctl(mp_obj_t self_in, mp_uint_t request, mp_uint_t arg, int *errcode) { +static mp_uint_t usb_midi_portin_ioctl(mp_obj_t self_in, mp_uint_t request, mp_uint_t arg, int *errcode) { usb_midi_portin_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_uint_t ret; if (request == MP_STREAM_POLL) { @@ -74,14 +74,14 @@ STATIC mp_uint_t usb_midi_portin_ioctl(mp_obj_t self_in, mp_uint_t request, mp_u return ret; } -STATIC const mp_rom_map_elem_t usb_midi_portin_locals_dict_table[] = { +static const mp_rom_map_elem_t usb_midi_portin_locals_dict_table[] = { // Standard stream methods. { MP_OBJ_NEW_QSTR(MP_QSTR_read), MP_ROM_PTR(&mp_stream_read_obj) }, { MP_OBJ_NEW_QSTR(MP_QSTR_readinto), MP_ROM_PTR(&mp_stream_readinto_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(usb_midi_portin_locals_dict, usb_midi_portin_locals_dict_table); +static MP_DEFINE_CONST_DICT(usb_midi_portin_locals_dict, usb_midi_portin_locals_dict_table); -STATIC const mp_stream_p_t usb_midi_portin_stream_p = { +static const mp_stream_p_t usb_midi_portin_stream_p = { .read = usb_midi_portin_read, .write = NULL, .ioctl = usb_midi_portin_ioctl, diff --git a/shared-bindings/usb_midi/PortOut.c b/shared-bindings/usb_midi/PortOut.c index 1fbba74d66d0..c39683c3f09d 100644 --- a/shared-bindings/usb_midi/PortOut.c +++ b/shared-bindings/usb_midi/PortOut.c @@ -33,14 +33,14 @@ //| ... //| -STATIC mp_uint_t usb_midi_portout_write(mp_obj_t self_in, const void *buf_in, mp_uint_t size, int *errcode) { +static mp_uint_t usb_midi_portout_write(mp_obj_t self_in, const void *buf_in, mp_uint_t size, int *errcode) { usb_midi_portout_obj_t *self = MP_OBJ_TO_PTR(self_in); const byte *buf = buf_in; return common_hal_usb_midi_portout_write(self, buf, size, errcode); } -STATIC mp_uint_t usb_midi_portout_ioctl(mp_obj_t self_in, mp_uint_t request, mp_uint_t arg, int *errcode) { +static mp_uint_t usb_midi_portout_ioctl(mp_obj_t self_in, mp_uint_t request, mp_uint_t arg, int *errcode) { usb_midi_portout_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_uint_t ret; if (request == MP_STREAM_POLL) { @@ -56,13 +56,13 @@ STATIC mp_uint_t usb_midi_portout_ioctl(mp_obj_t self_in, mp_uint_t request, mp_ return ret; } -STATIC const mp_rom_map_elem_t usb_midi_portout_locals_dict_table[] = { +static const mp_rom_map_elem_t usb_midi_portout_locals_dict_table[] = { // Standard stream methods. { MP_OBJ_NEW_QSTR(MP_QSTR_write), MP_ROM_PTR(&mp_stream_write_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(usb_midi_portout_locals_dict, usb_midi_portout_locals_dict_table); +static MP_DEFINE_CONST_DICT(usb_midi_portout_locals_dict, usb_midi_portout_locals_dict_table); -STATIC const mp_stream_p_t usb_midi_portout_stream_p = { +static const mp_stream_p_t usb_midi_portout_stream_p = { .read = NULL, .write = usb_midi_portout_write, .ioctl = usb_midi_portout_ioctl, diff --git a/shared-bindings/usb_midi/__init__.c b/shared-bindings/usb_midi/__init__.c index e4372fa91311..c29cb3b4414f 100644 --- a/shared-bindings/usb_midi/__init__.c +++ b/shared-bindings/usb_midi/__init__.c @@ -30,7 +30,7 @@ //| Can be called in ``boot.py``, before USB is connected.""" //| ... //| -STATIC mp_obj_t usb_midi_disable(void) { +static mp_obj_t usb_midi_disable(void) { if (!common_hal_usb_midi_disable()) { mp_raise_RuntimeError(MP_ERROR_TEXT("Cannot change USB devices now")); } @@ -50,7 +50,7 @@ MP_DEFINE_CONST_FUN_OBJ_0(usb_midi_disable_obj, usb_midi_disable); //| """ //| ... //| -STATIC mp_obj_t usb_midi_enable(void) { +static mp_obj_t usb_midi_enable(void) { if (!common_hal_usb_midi_enable()) { mp_raise_RuntimeError(MP_ERROR_TEXT("Cannot change USB devices now")); } @@ -96,7 +96,7 @@ static void set_name(mp_obj_t name_obj, qstr arg_name_qstr, char **custom_name_p //| """ //| ... //| -STATIC mp_obj_t usb_midi_set_names(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t usb_midi_set_names(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_streaming_interface_name, ARG_audio_control_interface_name, ARG_in_jack_name, ARG_out_jack_name }; static const mp_arg_t allowed_args[] = { { MP_QSTR_streaming_interface_name, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_rom_obj = mp_const_none} }, diff --git a/shared-bindings/usb_video/USBFramebuffer.c b/shared-bindings/usb_video/USBFramebuffer.c index 9bbcdde67415..f89424fa88c7 100644 --- a/shared-bindings/usb_video/USBFramebuffer.c +++ b/shared-bindings/usb_video/USBFramebuffer.c @@ -33,7 +33,7 @@ static void check_for_deinit(usb_video_uvcframebuffer_obj_t *self) { //| //| def __new__(self): //| """Returns the singleton framebuffer object, if USB video is enabled""" -STATIC mp_obj_t usb_video_uvcframebuffer_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t usb_video_uvcframebuffer_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { static const mp_arg_t allowed_args[] = {}; mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)]; mp_arg_parse_all_kw_array(n_args, n_kw, all_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args); @@ -45,7 +45,7 @@ STATIC mp_obj_t usb_video_uvcframebuffer_make_new(const mp_obj_type_t *type, siz //| """Transmits the color data in the buffer to the pixels so that //| they are shown.""" //| ... -STATIC mp_obj_t usb_video_uvcframebuffer_refresh(mp_obj_t self_in) { +static mp_obj_t usb_video_uvcframebuffer_refresh(mp_obj_t self_in) { usb_video_uvcframebuffer_obj_t *self = (usb_video_uvcframebuffer_obj_t *)self_in; check_for_deinit(self); shared_module_usb_video_uvcframebuffer_refresh(self); @@ -55,7 +55,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(usb_video_uvcframebuffer_refresh_obj, usb_video_uvcfra //| width: int //| """The width of the display, in pixels""" -STATIC mp_obj_t usb_video_uvcframebuffer_get_width(mp_obj_t self_in) { +static mp_obj_t usb_video_uvcframebuffer_get_width(mp_obj_t self_in) { usb_video_uvcframebuffer_obj_t *self = (usb_video_uvcframebuffer_obj_t *)self_in; check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(shared_module_usb_video_uvcframebuffer_get_width(self)); @@ -67,7 +67,7 @@ MP_PROPERTY_GETTER(usb_video_uvcframebuffer_width_obj, //| height: int //| """The height of the display, in pixels""" //| -STATIC mp_obj_t usb_video_uvcframebuffer_get_height(mp_obj_t self_in) { +static mp_obj_t usb_video_uvcframebuffer_get_height(mp_obj_t self_in) { usb_video_uvcframebuffer_obj_t *self = (usb_video_uvcframebuffer_obj_t *)self_in; check_for_deinit(self); return MP_OBJ_NEW_SMALL_INT(shared_module_usb_video_uvcframebuffer_get_height(self)); @@ -77,46 +77,46 @@ MP_DEFINE_CONST_FUN_OBJ_1(usb_video_uvcframebuffer_get_height_obj, usb_video_uvc MP_PROPERTY_GETTER(usb_video_uvcframebuffer_height_obj, (mp_obj_t)&usb_video_uvcframebuffer_get_height_obj); -STATIC const mp_rom_map_elem_t usb_video_uvcframebuffer_locals_dict_table[] = { +static const mp_rom_map_elem_t usb_video_uvcframebuffer_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_refresh), MP_ROM_PTR(&usb_video_uvcframebuffer_refresh_obj) }, { MP_ROM_QSTR(MP_QSTR_width), MP_ROM_PTR(&usb_video_uvcframebuffer_width_obj) }, { MP_ROM_QSTR(MP_QSTR_height), MP_ROM_PTR(&usb_video_uvcframebuffer_height_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(usb_video_uvcframebuffer_locals_dict, usb_video_uvcframebuffer_locals_dict_table); +static MP_DEFINE_CONST_DICT(usb_video_uvcframebuffer_locals_dict, usb_video_uvcframebuffer_locals_dict_table); -STATIC void usb_video_uvcframebuffer_get_bufinfo(mp_obj_t self_in, mp_buffer_info_t *bufinfo) { +static void usb_video_uvcframebuffer_get_bufinfo(mp_obj_t self_in, mp_buffer_info_t *bufinfo) { shared_module_usb_video_uvcframebuffer_get_bufinfo(self_in, bufinfo); } // These version exists so that the prototype matches the protocol, // avoiding a type cast that can hide errors -STATIC void usb_video_uvcframebuffer_swapbuffers(mp_obj_t self_in, uint8_t *dirty_row_bitmap) { +static void usb_video_uvcframebuffer_swapbuffers(mp_obj_t self_in, uint8_t *dirty_row_bitmap) { (void)dirty_row_bitmap; shared_module_usb_video_uvcframebuffer_refresh(self_in); } -STATIC void usb_video_uvcframebuffer_deinit_proto(mp_obj_t self_in) { +static void usb_video_uvcframebuffer_deinit_proto(mp_obj_t self_in) { /* NOTHING */ } -STATIC int usb_video_uvcframebuffer_get_width_proto(mp_obj_t self_in) { +static int usb_video_uvcframebuffer_get_width_proto(mp_obj_t self_in) { return shared_module_usb_video_uvcframebuffer_get_width(self_in); } -STATIC int usb_video_uvcframebuffer_get_height_proto(mp_obj_t self_in) { +static int usb_video_uvcframebuffer_get_height_proto(mp_obj_t self_in) { return shared_module_usb_video_uvcframebuffer_get_height(self_in); } -STATIC int usb_video_uvcframebuffer_get_native_frames_per_second_proto(mp_obj_t self_in) { +static int usb_video_uvcframebuffer_get_native_frames_per_second_proto(mp_obj_t self_in) { return 10; } -STATIC bool usb_video_uvcframebuffer_get_reverse_pixels_in_word_proto(mp_obj_t self_in) { +static bool usb_video_uvcframebuffer_get_reverse_pixels_in_word_proto(mp_obj_t self_in) { return true; } -STATIC const framebuffer_p_t usb_video_uvcframebuffer_proto = { +static const framebuffer_p_t usb_video_uvcframebuffer_proto = { MP_PROTO_IMPLEMENT(MP_QSTR_protocol_framebuffer) .get_bufinfo = usb_video_uvcframebuffer_get_bufinfo, .get_width = usb_video_uvcframebuffer_get_width_proto, @@ -127,7 +127,7 @@ STATIC const framebuffer_p_t usb_video_uvcframebuffer_proto = { .get_reverse_pixels_in_word = usb_video_uvcframebuffer_get_reverse_pixels_in_word_proto, }; -STATIC mp_int_t usb_video_uvcframebuffer_get_buffer(mp_obj_t self_in, mp_buffer_info_t *bufinfo, mp_uint_t flags) { +static mp_int_t usb_video_uvcframebuffer_get_buffer(mp_obj_t self_in, mp_buffer_info_t *bufinfo, mp_uint_t flags) { shared_module_usb_video_uvcframebuffer_get_bufinfo(self_in, bufinfo); bufinfo->typecode = 'H'; return 0; diff --git a/shared-bindings/usb_video/__init__.c b/shared-bindings/usb_video/__init__.c index bcf8a108d4b1..189acd9109c6 100644 --- a/shared-bindings/usb_video/__init__.c +++ b/shared-bindings/usb_video/__init__.c @@ -60,7 +60,7 @@ //| This message can be seen in ``boot_out.txt``.""" //| -STATIC mp_obj_t usb_video_enable_framebuffer(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t usb_video_enable_framebuffer(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_width, ARG_height }; static const mp_arg_t allowed_args[] = { { MP_QSTR_width, MP_ARG_REQUIRED | MP_ARG_INT, { .u_int = 0 } }, @@ -78,7 +78,7 @@ STATIC mp_obj_t usb_video_enable_framebuffer(size_t n_args, const mp_obj_t *pos_ return mp_const_none; }; -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(usb_video_enable_framebuffer_obj, 0, usb_video_enable_framebuffer); +static MP_DEFINE_CONST_FUN_OBJ_KW(usb_video_enable_framebuffer_obj, 0, usb_video_enable_framebuffer); static const mp_rom_map_elem_t usb_video_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_usb_video) }, diff --git a/shared-bindings/ustack/__init__.c b/shared-bindings/ustack/__init__.c index ec61f1629cb0..3002254db258 100644 --- a/shared-bindings/ustack/__init__.c +++ b/shared-bindings/ustack/__init__.c @@ -22,10 +22,10 @@ //| """Return the maximum excursion of the stack so far.""" //| ... //| -STATIC mp_obj_t max_stack_usage(void) { +static mp_obj_t max_stack_usage(void) { return MP_OBJ_NEW_SMALL_INT(shared_module_ustack_max_stack_usage()); } -STATIC MP_DEFINE_CONST_FUN_OBJ_0(max_stack_usage_obj, max_stack_usage); +static MP_DEFINE_CONST_FUN_OBJ_0(max_stack_usage_obj, max_stack_usage); #endif // MICROPY_MAX_STACK_USAGE @@ -35,22 +35,22 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_0(max_stack_usage_obj, max_stack_usage); //| of just printing it.""" //| ... //| -STATIC mp_obj_t stack_size(void) { +static mp_obj_t stack_size(void) { return MP_OBJ_NEW_SMALL_INT(shared_module_ustack_stack_size()); } -STATIC MP_DEFINE_CONST_FUN_OBJ_0(stack_size_obj, stack_size); +static MP_DEFINE_CONST_FUN_OBJ_0(stack_size_obj, stack_size); //| def stack_usage() -> int: //| """Return how much stack is currently in use. //| Same as micropython.stack_use(); duplicated here for convenience.""" //| ... //| -STATIC mp_obj_t stack_usage(void) { +static mp_obj_t stack_usage(void) { return MP_OBJ_NEW_SMALL_INT(shared_module_ustack_stack_usage()); } -STATIC MP_DEFINE_CONST_FUN_OBJ_0(stack_usage_obj, stack_usage); +static MP_DEFINE_CONST_FUN_OBJ_0(stack_usage_obj, stack_usage); -STATIC const mp_rom_map_elem_t ustack_module_globals_table[] = { +static const mp_rom_map_elem_t ustack_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_ustack) }, #if MICROPY_MAX_STACK_USAGE { MP_ROM_QSTR(MP_QSTR_max_stack_usage), MP_ROM_PTR(&max_stack_usage_obj) }, @@ -59,7 +59,7 @@ STATIC const mp_rom_map_elem_t ustack_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_stack_usage), MP_ROM_PTR(&stack_usage_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(ustack_module_globals, ustack_module_globals_table); +static MP_DEFINE_CONST_DICT(ustack_module_globals, ustack_module_globals_table); const mp_obj_module_t ustack_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/vectorio/Circle.c b/shared-bindings/vectorio/Circle.c index 0d3d0681bfbb..d2f31d6b86d8 100644 --- a/shared-bindings/vectorio/Circle.c +++ b/shared-bindings/vectorio/Circle.c @@ -60,7 +60,7 @@ static mp_obj_t vectorio_circle_make_new(const mp_obj_type_t *type, size_t n_arg return MP_OBJ_FROM_PTR(self); } -STATIC const vectorio_draw_protocol_t circle_draw_protocol = { +static const vectorio_draw_protocol_t circle_draw_protocol = { MP_PROTO_IMPLEMENT(MP_QSTR_protocol_draw) .draw_get_protocol_self = (draw_get_protocol_self_fun)common_hal_vectorio_circle_get_draw_protocol, .draw_protocol_impl = &vectorio_vector_shape_draw_protocol_impl @@ -69,13 +69,13 @@ STATIC const vectorio_draw_protocol_t circle_draw_protocol = { //| radius: int //| """The radius of the circle in pixels.""" -STATIC mp_obj_t vectorio_circle_obj_get_radius(mp_obj_t self_in) { +static mp_obj_t vectorio_circle_obj_get_radius(mp_obj_t self_in) { vectorio_circle_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_int(common_hal_vectorio_circle_get_radius(self)); } MP_DEFINE_CONST_FUN_OBJ_1(vectorio_circle_get_radius_obj, vectorio_circle_obj_get_radius); -STATIC mp_obj_t vectorio_circle_obj_set_radius(mp_obj_t self_in, mp_obj_t radius) { +static mp_obj_t vectorio_circle_obj_set_radius(mp_obj_t self_in, mp_obj_t radius) { vectorio_circle_t *self = MP_OBJ_TO_PTR(self_in); common_hal_vectorio_circle_set_radius(self, mp_obj_get_int(radius)); return mp_const_none; @@ -88,13 +88,13 @@ MP_PROPERTY_GETSET(vectorio_circle_radius_obj, //| color_index: int //| """The color_index of the circle as 0 based index of the palette.""" -STATIC mp_obj_t vectorio_circle_obj_get_color_index(mp_obj_t self_in) { +static mp_obj_t vectorio_circle_obj_get_color_index(mp_obj_t self_in) { vectorio_circle_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_int(common_hal_vectorio_circle_get_color_index(self)); } MP_DEFINE_CONST_FUN_OBJ_1(vectorio_circle_get_color_index_obj, vectorio_circle_obj_get_color_index); -STATIC mp_obj_t vectorio_circle_obj_set_color_index(mp_obj_t self_in, mp_obj_t color_index) { +static mp_obj_t vectorio_circle_obj_set_color_index(mp_obj_t self_in, mp_obj_t color_index) { vectorio_circle_t *self = MP_OBJ_TO_PTR(self_in); common_hal_vectorio_circle_set_color_index(self, mp_obj_get_int(color_index)); return mp_const_none; @@ -124,7 +124,7 @@ MP_PROPERTY_GETSET(vectorio_circle_color_index_obj, //| """The pixel shader of the circle.""" //| -STATIC const mp_rom_map_elem_t vectorio_circle_locals_dict_table[] = { +static const mp_rom_map_elem_t vectorio_circle_locals_dict_table[] = { // Functions { MP_ROM_QSTR(MP_QSTR_contains), MP_ROM_PTR(&vectorio_vector_shape_contains_obj) }, // Properties @@ -136,7 +136,7 @@ STATIC const mp_rom_map_elem_t vectorio_circle_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_location), MP_ROM_PTR(&vectorio_vector_shape_location_obj) }, { MP_ROM_QSTR(MP_QSTR_pixel_shader), MP_ROM_PTR(&vectorio_vector_shape_pixel_shader_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(vectorio_circle_locals_dict, vectorio_circle_locals_dict_table); +static MP_DEFINE_CONST_DICT(vectorio_circle_locals_dict, vectorio_circle_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( vectorio_circle_type, diff --git a/shared-bindings/vectorio/Polygon.c b/shared-bindings/vectorio/Polygon.c index 2a5236c3f022..05228465f6c1 100644 --- a/shared-bindings/vectorio/Polygon.c +++ b/shared-bindings/vectorio/Polygon.c @@ -68,7 +68,7 @@ static mp_obj_t vectorio_polygon_make_new(const mp_obj_type_t *type, size_t n_ar return MP_OBJ_FROM_PTR(self); } -STATIC const vectorio_draw_protocol_t polygon_draw_protocol = { +static const vectorio_draw_protocol_t polygon_draw_protocol = { MP_PROTO_IMPLEMENT(MP_QSTR_protocol_draw) .draw_get_protocol_self = (draw_get_protocol_self_fun)common_hal_vectorio_polygon_get_draw_protocol, .draw_protocol_impl = &vectorio_vector_shape_draw_protocol_impl @@ -77,13 +77,13 @@ STATIC const vectorio_draw_protocol_t polygon_draw_protocol = { //| points: List[Tuple[int, int]] //| """Vertices for the polygon.""" -STATIC mp_obj_t vectorio_polygon_obj_get_points(mp_obj_t self_in) { +static mp_obj_t vectorio_polygon_obj_get_points(mp_obj_t self_in) { vectorio_polygon_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_vectorio_polygon_get_points(self); } MP_DEFINE_CONST_FUN_OBJ_1(vectorio_polygon_get_points_obj, vectorio_polygon_obj_get_points); -STATIC mp_obj_t vectorio_polygon_obj_set_points(mp_obj_t self_in, mp_obj_t points) { +static mp_obj_t vectorio_polygon_obj_set_points(mp_obj_t self_in, mp_obj_t points) { vectorio_polygon_t *self = MP_OBJ_TO_PTR(self_in); common_hal_vectorio_polygon_set_points(self, points); @@ -97,13 +97,13 @@ MP_PROPERTY_GETSET(vectorio_polygon_points_obj, //| color_index: int //| """The color_index of the polygon as 0 based index of the palette.""" -STATIC mp_obj_t vectorio_polygon_obj_get_color_index(mp_obj_t self_in) { +static mp_obj_t vectorio_polygon_obj_get_color_index(mp_obj_t self_in) { vectorio_polygon_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_int(common_hal_vectorio_polygon_get_color_index(self)); } MP_DEFINE_CONST_FUN_OBJ_1(vectorio_polygon_get_color_index_obj, vectorio_polygon_obj_get_color_index); -STATIC mp_obj_t vectorio_polygon_obj_set_color_index(mp_obj_t self_in, mp_obj_t color_index) { +static mp_obj_t vectorio_polygon_obj_set_color_index(mp_obj_t self_in, mp_obj_t color_index) { vectorio_polygon_t *self = MP_OBJ_TO_PTR(self_in); common_hal_vectorio_polygon_set_color_index(self, mp_obj_get_int(color_index)); return mp_const_none; @@ -133,7 +133,7 @@ MP_PROPERTY_GETSET(vectorio_polygon_color_index_obj, //| """The pixel shader of the polygon.""" //| -STATIC const mp_rom_map_elem_t vectorio_polygon_locals_dict_table[] = { +static const mp_rom_map_elem_t vectorio_polygon_locals_dict_table[] = { // Functions { MP_ROM_QSTR(MP_QSTR_contains), MP_ROM_PTR(&vectorio_vector_shape_contains_obj) }, // Properties @@ -145,7 +145,7 @@ STATIC const mp_rom_map_elem_t vectorio_polygon_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_location), MP_ROM_PTR(&vectorio_vector_shape_location_obj) }, { MP_ROM_QSTR(MP_QSTR_pixel_shader), MP_ROM_PTR(&vectorio_vector_shape_pixel_shader_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(vectorio_polygon_locals_dict, vectorio_polygon_locals_dict_table); +static MP_DEFINE_CONST_DICT(vectorio_polygon_locals_dict, vectorio_polygon_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( vectorio_polygon_type, diff --git a/shared-bindings/vectorio/Rectangle.c b/shared-bindings/vectorio/Rectangle.c index 5f51dfb39d59..d1f2e6193ce3 100644 --- a/shared-bindings/vectorio/Rectangle.c +++ b/shared-bindings/vectorio/Rectangle.c @@ -64,7 +64,7 @@ static mp_obj_t vectorio_rectangle_make_new(const mp_obj_type_t *type, size_t n_ return MP_OBJ_FROM_PTR(self); } -STATIC const vectorio_draw_protocol_t rectangle_draw_protocol = { +static const vectorio_draw_protocol_t rectangle_draw_protocol = { MP_PROTO_IMPLEMENT(MP_QSTR_protocol_draw) .draw_get_protocol_self = (draw_get_protocol_self_fun)common_hal_vectorio_rectangle_get_draw_protocol, .draw_protocol_impl = &vectorio_vector_shape_draw_protocol_impl @@ -72,13 +72,13 @@ STATIC const vectorio_draw_protocol_t rectangle_draw_protocol = { //| width: int //| """The width of the rectangle in pixels.""" -STATIC mp_obj_t vectorio_rectangle_obj_get_width(mp_obj_t self_in) { +static mp_obj_t vectorio_rectangle_obj_get_width(mp_obj_t self_in) { vectorio_rectangle_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_int(common_hal_vectorio_rectangle_get_width(self)); } MP_DEFINE_CONST_FUN_OBJ_1(vectorio_rectangle_get_width_obj, vectorio_rectangle_obj_get_width); -STATIC mp_obj_t vectorio_rectangle_obj_set_width(mp_obj_t self_in, mp_obj_t width) { +static mp_obj_t vectorio_rectangle_obj_set_width(mp_obj_t self_in, mp_obj_t width) { vectorio_rectangle_t *self = MP_OBJ_TO_PTR(self_in); common_hal_vectorio_rectangle_set_width(self, mp_obj_get_int(width)); return mp_const_none; @@ -94,13 +94,13 @@ const mp_obj_property_t vectorio_rectangle_width_obj = { //| height: int //| """The height of the rectangle in pixels.""" -STATIC mp_obj_t vectorio_rectangle_obj_get_height(mp_obj_t self_in) { +static mp_obj_t vectorio_rectangle_obj_get_height(mp_obj_t self_in) { vectorio_rectangle_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_int(common_hal_vectorio_rectangle_get_height(self)); } MP_DEFINE_CONST_FUN_OBJ_1(vectorio_rectangle_get_height_obj, vectorio_rectangle_obj_get_height); -STATIC mp_obj_t vectorio_rectangle_obj_set_height(mp_obj_t self_in, mp_obj_t height) { +static mp_obj_t vectorio_rectangle_obj_set_height(mp_obj_t self_in, mp_obj_t height) { vectorio_rectangle_t *self = MP_OBJ_TO_PTR(self_in); common_hal_vectorio_rectangle_set_height(self, mp_obj_get_int(height)); return mp_const_none; @@ -116,13 +116,13 @@ const mp_obj_property_t vectorio_rectangle_height_obj = { //| color_index: int //| """The color_index of the rectangle in 1 based index of the palette.""" -STATIC mp_obj_t vectorio_rectangle_obj_get_color_index(mp_obj_t self_in) { +static mp_obj_t vectorio_rectangle_obj_get_color_index(mp_obj_t self_in) { vectorio_rectangle_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_int(common_hal_vectorio_rectangle_get_color_index(self)); } MP_DEFINE_CONST_FUN_OBJ_1(vectorio_rectangle_get_color_index_obj, vectorio_rectangle_obj_get_color_index); -STATIC mp_obj_t vectorio_rectangle_obj_set_color_index(mp_obj_t self_in, mp_obj_t color_index) { +static mp_obj_t vectorio_rectangle_obj_set_color_index(mp_obj_t self_in, mp_obj_t color_index) { vectorio_rectangle_t *self = MP_OBJ_TO_PTR(self_in); common_hal_vectorio_rectangle_set_color_index(self, mp_obj_get_int(color_index)); return mp_const_none; @@ -154,7 +154,7 @@ const mp_obj_property_t vectorio_rectangle_color_index_obj = { //| """The pixel shader of the rectangle.""" //| -STATIC const mp_rom_map_elem_t vectorio_rectangle_locals_dict_table[] = { +static const mp_rom_map_elem_t vectorio_rectangle_locals_dict_table[] = { // Functions { MP_ROM_QSTR(MP_QSTR_contains), MP_ROM_PTR(&vectorio_vector_shape_contains_obj) }, // Properties @@ -167,7 +167,7 @@ STATIC const mp_rom_map_elem_t vectorio_rectangle_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_location), MP_ROM_PTR(&vectorio_vector_shape_location_obj) }, { MP_ROM_QSTR(MP_QSTR_pixel_shader), MP_ROM_PTR(&vectorio_vector_shape_pixel_shader_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(vectorio_rectangle_locals_dict, vectorio_rectangle_locals_dict_table); +static MP_DEFINE_CONST_DICT(vectorio_rectangle_locals_dict, vectorio_rectangle_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( vectorio_rectangle_type, diff --git a/shared-bindings/vectorio/VectorShape.c b/shared-bindings/vectorio/VectorShape.c index 83ecca8b23db..041600bff4e4 100644 --- a/shared-bindings/vectorio/VectorShape.c +++ b/shared-bindings/vectorio/VectorShape.c @@ -89,7 +89,7 @@ vectorio_draw_protocol_impl_t vectorio_vector_shape_draw_protocol_impl = { // y: int // """true if x,y lies inside the shape.""" // -STATIC mp_obj_t vectorio_vector_shape_obj_contains(mp_obj_t wrapper_shape, mp_obj_t x_obj, mp_obj_t y_obj) { +static mp_obj_t vectorio_vector_shape_obj_contains(mp_obj_t wrapper_shape, mp_obj_t x_obj, mp_obj_t y_obj) { // Relies on the fact that only vector_shape impl gets matched with a VectorShape. const vectorio_draw_protocol_t *draw_protocol = mp_proto_get(MP_QSTR_protocol_draw, wrapper_shape); vectorio_vector_shape_t *self = MP_OBJ_TO_PTR(draw_protocol->draw_get_protocol_self(wrapper_shape)); @@ -104,7 +104,7 @@ MP_DEFINE_CONST_FUN_OBJ_3(vectorio_vector_shape_contains_obj, vectorio_vector_sh // x: int // """X position of the center point of the shape in the parent.""" // -STATIC mp_obj_t vectorio_vector_shape_obj_get_x(mp_obj_t wrapper_shape) { +static mp_obj_t vectorio_vector_shape_obj_get_x(mp_obj_t wrapper_shape) { // Relies on the fact that only vector_shape impl gets matched with a VectorShape. const vectorio_draw_protocol_t *draw_protocol = mp_proto_get(MP_QSTR_protocol_draw, wrapper_shape); vectorio_vector_shape_t *self = MP_OBJ_TO_PTR(draw_protocol->draw_get_protocol_self(wrapper_shape)); @@ -113,7 +113,7 @@ STATIC mp_obj_t vectorio_vector_shape_obj_get_x(mp_obj_t wrapper_shape) { } MP_DEFINE_CONST_FUN_OBJ_1(vectorio_vector_shape_get_x_obj, vectorio_vector_shape_obj_get_x); -STATIC mp_obj_t vectorio_vector_shape_obj_set_x(mp_obj_t wrapper_shape, mp_obj_t x_obj) { +static mp_obj_t vectorio_vector_shape_obj_set_x(mp_obj_t wrapper_shape, mp_obj_t x_obj) { // Relies on the fact that only vector_shape impl gets matched with a VectorShape. const vectorio_draw_protocol_t *draw_protocol = mp_proto_get(MP_QSTR_protocol_draw, wrapper_shape); vectorio_vector_shape_t *self = MP_OBJ_TO_PTR(draw_protocol->draw_get_protocol_self(wrapper_shape)); @@ -132,7 +132,7 @@ MP_PROPERTY_GETSET(vectorio_vector_shape_x_obj, // y: int // """Y position of the center point of the shape in the parent.""" // -STATIC mp_obj_t vectorio_vector_shape_obj_get_y(mp_obj_t wrapper_shape) { +static mp_obj_t vectorio_vector_shape_obj_get_y(mp_obj_t wrapper_shape) { // Relies on the fact that only vector_shape impl gets matched with a VectorShape. const vectorio_draw_protocol_t *draw_protocol = mp_proto_get(MP_QSTR_protocol_draw, wrapper_shape); vectorio_vector_shape_t *self = MP_OBJ_TO_PTR(draw_protocol->draw_get_protocol_self(wrapper_shape)); @@ -141,7 +141,7 @@ STATIC mp_obj_t vectorio_vector_shape_obj_get_y(mp_obj_t wrapper_shape) { } MP_DEFINE_CONST_FUN_OBJ_1(vectorio_vector_shape_get_y_obj, vectorio_vector_shape_obj_get_y); -STATIC mp_obj_t vectorio_vector_shape_obj_set_y(mp_obj_t wrapper_shape, mp_obj_t y_obj) { +static mp_obj_t vectorio_vector_shape_obj_set_y(mp_obj_t wrapper_shape, mp_obj_t y_obj) { // Relies on the fact that only vector_shape impl gets matched with a VectorShape. const vectorio_draw_protocol_t *draw_protocol = mp_proto_get(MP_QSTR_protocol_draw, wrapper_shape); vectorio_vector_shape_t *self = MP_OBJ_TO_PTR(draw_protocol->draw_get_protocol_self(wrapper_shape)); @@ -160,7 +160,7 @@ MP_PROPERTY_GETSET(vectorio_vector_shape_y_obj, // location: Tuple[int, int] // """location of the center point of the shape in the parent.""" // -STATIC mp_obj_t vectorio_vector_shape_obj_get_location(mp_obj_t wrapper_shape) { +static mp_obj_t vectorio_vector_shape_obj_get_location(mp_obj_t wrapper_shape) { // Relies on the fact that only vector_shape impl gets matched with a VectorShape. const vectorio_draw_protocol_t *draw_protocol = mp_proto_get(MP_QSTR_protocol_draw, wrapper_shape); vectorio_vector_shape_t *self = MP_OBJ_TO_PTR(draw_protocol->draw_get_protocol_self(wrapper_shape)); @@ -169,7 +169,7 @@ STATIC mp_obj_t vectorio_vector_shape_obj_get_location(mp_obj_t wrapper_shape) { } MP_DEFINE_CONST_FUN_OBJ_1(vectorio_vector_shape_get_location_obj, vectorio_vector_shape_obj_get_location); -STATIC mp_obj_t vectorio_vector_shape_obj_set_location(mp_obj_t wrapper_shape, mp_obj_t location_obj) { +static mp_obj_t vectorio_vector_shape_obj_set_location(mp_obj_t wrapper_shape, mp_obj_t location_obj) { // Relies on the fact that only vector_shape impl gets matched with a VectorShape. const vectorio_draw_protocol_t *draw_protocol = mp_proto_get(MP_QSTR_protocol_draw, wrapper_shape); vectorio_vector_shape_t *self = MP_OBJ_TO_PTR(draw_protocol->draw_get_protocol_self(wrapper_shape)); @@ -188,7 +188,7 @@ MP_PROPERTY_GETSET(vectorio_vector_shape_location_obj, // hidden: bool // """Hide the shape or not.""" // -STATIC mp_obj_t vectorio_vector_shape_obj_get_hidden(mp_obj_t wrapper_shape) { +static mp_obj_t vectorio_vector_shape_obj_get_hidden(mp_obj_t wrapper_shape) { // Relies on the fact that only vector_shape impl gets matched with a VectorShape. const vectorio_draw_protocol_t *draw_protocol = mp_proto_get(MP_QSTR_protocol_draw, wrapper_shape); vectorio_vector_shape_t *self = MP_OBJ_TO_PTR(draw_protocol->draw_get_protocol_self(wrapper_shape)); @@ -196,7 +196,7 @@ STATIC mp_obj_t vectorio_vector_shape_obj_get_hidden(mp_obj_t wrapper_shape) { } MP_DEFINE_CONST_FUN_OBJ_1(vectorio_vector_shape_get_hidden_obj, vectorio_vector_shape_obj_get_hidden); -STATIC mp_obj_t vectorio_vector_shape_obj_set_hidden(mp_obj_t wrapper_shape, mp_obj_t hidden_obj) { +static mp_obj_t vectorio_vector_shape_obj_set_hidden(mp_obj_t wrapper_shape, mp_obj_t hidden_obj) { // Relies on the fact that only vector_shape impl gets matched with a VectorShape. const vectorio_draw_protocol_t *draw_protocol = mp_proto_get(MP_QSTR_protocol_draw, wrapper_shape); vectorio_vector_shape_t *self = MP_OBJ_TO_PTR(draw_protocol->draw_get_protocol_self(wrapper_shape)); @@ -214,7 +214,7 @@ MP_PROPERTY_GETSET(vectorio_vector_shape_hidden_obj, // pixel_shader: Union[ColorConverter, Palette] // """The pixel shader of the shape.""" // -STATIC mp_obj_t vectorio_vector_shape_obj_get_pixel_shader(mp_obj_t wrapper_shape) { +static mp_obj_t vectorio_vector_shape_obj_get_pixel_shader(mp_obj_t wrapper_shape) { // Relies on the fact that only vector_shape impl gets matched with a VectorShape. const vectorio_draw_protocol_t *draw_protocol = mp_proto_get(MP_QSTR_protocol_draw, wrapper_shape); vectorio_vector_shape_t *self = MP_OBJ_TO_PTR(draw_protocol->draw_get_protocol_self(wrapper_shape)); @@ -223,7 +223,7 @@ STATIC mp_obj_t vectorio_vector_shape_obj_get_pixel_shader(mp_obj_t wrapper_shap } MP_DEFINE_CONST_FUN_OBJ_1(vectorio_vector_shape_get_pixel_shader_obj, vectorio_vector_shape_obj_get_pixel_shader); -STATIC mp_obj_t vectorio_vector_shape_obj_set_pixel_shader(mp_obj_t wrapper_shape, mp_obj_t pixel_shader) { +static mp_obj_t vectorio_vector_shape_obj_set_pixel_shader(mp_obj_t wrapper_shape, mp_obj_t pixel_shader) { // Relies on the fact that only vector_shape impl gets matched with a VectorShape. const vectorio_draw_protocol_t *draw_protocol = mp_proto_get(MP_QSTR_protocol_draw, wrapper_shape); vectorio_vector_shape_t *self = MP_OBJ_TO_PTR(draw_protocol->draw_get_protocol_self(wrapper_shape)); @@ -243,9 +243,9 @@ MP_PROPERTY_GETSET(vectorio_vector_shape_pixel_shader_obj, (mp_obj_t)&vectorio_vector_shape_set_pixel_shader_obj); -STATIC const mp_rom_map_elem_t vectorio_vector_shape_locals_dict_table[] = { +static const mp_rom_map_elem_t vectorio_vector_shape_locals_dict_table[] = { }; -STATIC MP_DEFINE_CONST_DICT(vectorio_vector_shape_locals_dict, vectorio_vector_shape_locals_dict_table); +static MP_DEFINE_CONST_DICT(vectorio_vector_shape_locals_dict, vectorio_vector_shape_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( vectorio_vector_shape_type, diff --git a/shared-bindings/vectorio/__init__.c b/shared-bindings/vectorio/__init__.c index cc9501217182..7e9473eefdcb 100644 --- a/shared-bindings/vectorio/__init__.c +++ b/shared-bindings/vectorio/__init__.c @@ -37,14 +37,14 @@ //| //| """ -STATIC const mp_rom_map_elem_t vectorio_module_globals_table[] = { +static const mp_rom_map_elem_t vectorio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_vectorio) }, { MP_ROM_QSTR(MP_QSTR_Circle), MP_ROM_PTR(&vectorio_circle_type) }, { MP_ROM_QSTR(MP_QSTR_Polygon), MP_ROM_PTR(&vectorio_polygon_type) }, { MP_ROM_QSTR(MP_QSTR_Rectangle), MP_ROM_PTR(&vectorio_rectangle_type) }, }; -STATIC MP_DEFINE_CONST_DICT(vectorio_module_globals, vectorio_module_globals_table); +static MP_DEFINE_CONST_DICT(vectorio_module_globals, vectorio_module_globals_table); const mp_obj_module_t vectorio_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/warnings/__init__.c b/shared-bindings/warnings/__init__.c index b19229ab6468..1d726bc61a8a 100644 --- a/shared-bindings/warnings/__init__.c +++ b/shared-bindings/warnings/__init__.c @@ -33,7 +33,7 @@ //| """ //| ... //| -STATIC mp_obj_t warnings_warn(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t warnings_warn(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_message, ARG_category }; static const mp_arg_t allowed_args[] = { { MP_QSTR_message, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -51,14 +51,14 @@ STATIC mp_obj_t warnings_warn(size_t n_args, const mp_obj_t *pos_args, mp_map_t common_hal_warnings_warn(mp_obj_str_get_str(args[ARG_message].u_obj), MP_OBJ_TO_PTR(category_obj)); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(warnings_warn_obj, 1, warnings_warn); +static MP_DEFINE_CONST_FUN_OBJ_KW(warnings_warn_obj, 1, warnings_warn); //| def simplefilter(action: str) -> None: //| """Set the action to take on all warnings. This is a subset of the CPython //| behavior because it allows for per-category changes.""" //| ... //| -STATIC mp_obj_t warnings_simplefilter(mp_obj_t action_in) { +static mp_obj_t warnings_simplefilter(mp_obj_t action_in) { const char *action_str = mp_obj_str_get_str(action_in); warnings_action_t action; if (strcmp(action_str, "error") == 0) { @@ -75,14 +75,14 @@ STATIC mp_obj_t warnings_simplefilter(mp_obj_t action_in) { } MP_DEFINE_CONST_FUN_OBJ_1(warnings_simplefilter_obj, warnings_simplefilter); -STATIC const mp_rom_map_elem_t warnings_module_globals_table[] = { +static const mp_rom_map_elem_t warnings_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_warnings) }, { MP_ROM_QSTR(MP_QSTR_warn), MP_ROM_PTR(&warnings_warn_obj) }, { MP_ROM_QSTR(MP_QSTR_simplefilter), MP_ROM_PTR(&warnings_simplefilter_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(warnings_module_globals, warnings_module_globals_table); +static MP_DEFINE_CONST_DICT(warnings_module_globals, warnings_module_globals_table); const mp_obj_module_t warnings_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/watchdog/WatchDogMode.c b/shared-bindings/watchdog/WatchDogMode.c index b3747a032c24..3aee1203d38f 100644 --- a/shared-bindings/watchdog/WatchDogMode.c +++ b/shared-bindings/watchdog/WatchDogMode.c @@ -24,7 +24,7 @@ MAKE_ENUM_MAP(watchdog_watchdogmode) { MAKE_ENUM_MAP_ENTRY(watchdogmode, RAISE), MAKE_ENUM_MAP_ENTRY(watchdogmode, RESET), }; -STATIC MP_DEFINE_CONST_DICT(watchdog_watchdogmode_locals_dict, watchdog_watchdogmode_locals_table); +static MP_DEFINE_CONST_DICT(watchdog_watchdogmode_locals_dict, watchdog_watchdogmode_locals_table); MAKE_PRINTER(watchdog, watchdog_watchdogmode); diff --git a/shared-bindings/watchdog/WatchDogTimer.c b/shared-bindings/watchdog/WatchDogTimer.c index 103e667a7b2d..8ff8ba2f9c28 100644 --- a/shared-bindings/watchdog/WatchDogTimer.c +++ b/shared-bindings/watchdog/WatchDogTimer.c @@ -37,14 +37,14 @@ //| """Feed the watchdog timer. This must be called regularly, otherwise //| the timer will expire. Silently does nothing if the watchdog isn't active.""" //| ... -STATIC mp_obj_t watchdog_watchdogtimer_feed(mp_obj_t self_in) { +static mp_obj_t watchdog_watchdogtimer_feed(mp_obj_t self_in) { watchdog_watchdogtimer_obj_t *self = MP_OBJ_TO_PTR(self_in); if (common_hal_watchdog_get_mode(self) != WATCHDOGMODE_NONE) { common_hal_watchdog_feed(self); } return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(watchdog_watchdogtimer_feed_obj, watchdog_watchdogtimer_feed); +static MP_DEFINE_CONST_FUN_OBJ_1(watchdog_watchdogtimer_feed_obj, watchdog_watchdogtimer_feed); //| def deinit(self) -> None: //| """Stop the watchdog timer. @@ -56,23 +56,23 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(watchdog_watchdogtimer_feed_obj, watchdog_watch //| //| """ //| ... -STATIC mp_obj_t watchdog_watchdogtimer_deinit(mp_obj_t self_in) { +static mp_obj_t watchdog_watchdogtimer_deinit(mp_obj_t self_in) { watchdog_watchdogtimer_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_watchdog_deinit(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(watchdog_watchdogtimer_deinit_obj, watchdog_watchdogtimer_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(watchdog_watchdogtimer_deinit_obj, watchdog_watchdogtimer_deinit); //| timeout: float //| """The maximum number of seconds that can elapse between calls //| to `feed()`. Setting the timeout will also feed the watchdog.""" -STATIC mp_obj_t watchdog_watchdogtimer_obj_get_timeout(mp_obj_t self_in) { +static mp_obj_t watchdog_watchdogtimer_obj_get_timeout(mp_obj_t self_in) { watchdog_watchdogtimer_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_float(common_hal_watchdog_get_timeout(self)); } MP_DEFINE_CONST_FUN_OBJ_1(watchdog_watchdogtimer_get_timeout_obj, watchdog_watchdogtimer_obj_get_timeout); -STATIC mp_obj_t watchdog_watchdogtimer_obj_set_timeout(mp_obj_t self_in, mp_obj_t timeout_obj) { +static mp_obj_t watchdog_watchdogtimer_obj_set_timeout(mp_obj_t self_in, mp_obj_t timeout_obj) { watchdog_watchdogtimer_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_float_t timeout = mp_obj_get_float(timeout_obj); @@ -102,13 +102,13 @@ MP_PROPERTY_GETSET(watchdog_watchdogtimer_timeout_obj, //| //| Once set, the `WatchDogTimer` will perform the specified action if the timer expires.""" //| -STATIC mp_obj_t watchdog_watchdogtimer_obj_get_mode(mp_obj_t self_in) { +static mp_obj_t watchdog_watchdogtimer_obj_get_mode(mp_obj_t self_in) { watchdog_watchdogtimer_obj_t *self = MP_OBJ_TO_PTR(self_in); return cp_enum_find(&watchdog_watchdogmode_type, common_hal_watchdog_get_mode(self)); } MP_DEFINE_CONST_FUN_OBJ_1(watchdog_watchdogtimer_get_mode_obj, watchdog_watchdogtimer_obj_get_mode); -STATIC mp_obj_t watchdog_watchdogtimer_obj_set_mode(mp_obj_t self_in, mp_obj_t obj) { +static mp_obj_t watchdog_watchdogtimer_obj_set_mode(mp_obj_t self_in, mp_obj_t obj) { watchdog_watchdogtimer_obj_t *self = MP_OBJ_TO_PTR(self_in); watchdog_watchdogmode_t mode = (obj == mp_const_none) ? WATCHDOGMODE_NONE : cp_enum_value(&watchdog_watchdogmode_type, obj, MP_QSTR_mode); common_hal_watchdog_set_mode(self, mode); @@ -120,13 +120,13 @@ MP_PROPERTY_GETSET(watchdog_watchdogtimer_mode_obj, (mp_obj_t)&watchdog_watchdogtimer_get_mode_obj, (mp_obj_t)&watchdog_watchdogtimer_set_mode_obj); -STATIC const mp_rom_map_elem_t watchdog_watchdogtimer_locals_dict_table[] = { +static const mp_rom_map_elem_t watchdog_watchdogtimer_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_feed), MP_ROM_PTR(&watchdog_watchdogtimer_feed_obj) }, { MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&watchdog_watchdogtimer_deinit_obj) }, { MP_ROM_QSTR(MP_QSTR_timeout), MP_ROM_PTR(&watchdog_watchdogtimer_timeout_obj) }, { MP_ROM_QSTR(MP_QSTR_mode), MP_ROM_PTR(&watchdog_watchdogtimer_mode_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(watchdog_watchdogtimer_locals_dict, watchdog_watchdogtimer_locals_dict_table); +static MP_DEFINE_CONST_DICT(watchdog_watchdogtimer_locals_dict, watchdog_watchdogtimer_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( watchdog_watchdogtimer_type, diff --git a/shared-bindings/watchdog/__init__.c b/shared-bindings/watchdog/__init__.c index a5d6a40c9e10..4e338844a0a1 100644 --- a/shared-bindings/watchdog/__init__.c +++ b/shared-bindings/watchdog/__init__.c @@ -74,13 +74,13 @@ mp_obj_exception_t mp_watchdog_timeout_exception = { .traceback = (mp_obj_traceback_t *)&mp_const_empty_traceback_obj, }; -STATIC const mp_rom_map_elem_t watchdog_module_globals_table[] = { +static const mp_rom_map_elem_t watchdog_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_watchdog) }, { MP_ROM_QSTR(MP_QSTR_WatchDogMode), MP_ROM_PTR(&watchdog_watchdogmode_type) }, { MP_ROM_QSTR(MP_QSTR_WatchDogTimeout), MP_ROM_PTR(&mp_type_WatchDogTimeout) }, }; -STATIC MP_DEFINE_CONST_DICT(watchdog_module_globals, watchdog_module_globals_table); +static MP_DEFINE_CONST_DICT(watchdog_module_globals, watchdog_module_globals_table); const mp_obj_module_t watchdog_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/wifi/AuthMode.c b/shared-bindings/wifi/AuthMode.c index 422bbd10ecdf..c2c653727d6f 100644 --- a/shared-bindings/wifi/AuthMode.c +++ b/shared-bindings/wifi/AuthMode.c @@ -49,7 +49,7 @@ MAKE_ENUM_MAP(wifi_authmode) { MAKE_ENUM_MAP_ENTRY(authmode, PSK), MAKE_ENUM_MAP_ENTRY(authmode, ENTERPRISE), }; -STATIC MP_DEFINE_CONST_DICT(wifi_authmode_locals_dict, wifi_authmode_locals_table); +static MP_DEFINE_CONST_DICT(wifi_authmode_locals_dict, wifi_authmode_locals_table); MAKE_PRINTER(wifi, wifi_authmode); diff --git a/shared-bindings/wifi/Monitor.c b/shared-bindings/wifi/Monitor.c index dfacaed4f54f..a2e91dca4b4a 100644 --- a/shared-bindings/wifi/Monitor.c +++ b/shared-bindings/wifi/Monitor.c @@ -24,7 +24,7 @@ //| //| """ //| ... -STATIC mp_obj_t wifi_monitor_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { +static mp_obj_t wifi_monitor_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_channel, ARG_queue }; static const mp_arg_t allowed_args[] = { { MP_QSTR_channel, MP_ARG_INT | MP_ARG_KW_ONLY, {.u_int = 1} }, @@ -49,12 +49,12 @@ STATIC mp_obj_t wifi_monitor_make_new(const mp_obj_type_t *type, size_t n_args, //| channel: int //| """The WiFi channel to scan.""" -STATIC mp_obj_t wifi_monitor_obj_get_channel(mp_obj_t self_in) { +static mp_obj_t wifi_monitor_obj_get_channel(mp_obj_t self_in) { return common_hal_wifi_monitor_get_channel(self_in); } MP_DEFINE_CONST_FUN_OBJ_1(wifi_monitor_get_channel_obj, wifi_monitor_obj_get_channel); -STATIC mp_obj_t wifi_monitor_obj_set_channel(mp_obj_t self_in, mp_obj_t channel) { +static mp_obj_t wifi_monitor_obj_set_channel(mp_obj_t self_in, mp_obj_t channel) { mp_int_t c = mp_obj_get_int(channel); if (c < 1 || c > 13) { mp_raise_ValueError_varg(MP_ERROR_TEXT("%q out of bounds"), MP_QSTR_channel); @@ -70,7 +70,7 @@ MP_PROPERTY_GETSET(wifi_monitor_channel_obj, //| queue: int //| """The queue size for buffering the packet.""" -STATIC mp_obj_t wifi_monitor_obj_get_queue(mp_obj_t self_in) { +static mp_obj_t wifi_monitor_obj_get_queue(mp_obj_t self_in) { return common_hal_wifi_monitor_get_queue(self_in); } MP_DEFINE_CONST_FUN_OBJ_1(wifi_monitor_get_queue_obj, wifi_monitor_obj_get_queue); @@ -81,16 +81,16 @@ MP_PROPERTY_GETTER(wifi_monitor_queue_obj, //| def deinit(self) -> None: //| """De-initialize `wifi.Monitor` singleton.""" //| ... -STATIC mp_obj_t wifi_monitor_obj_deinit(mp_obj_t self_in) { +static mp_obj_t wifi_monitor_obj_deinit(mp_obj_t self_in) { common_hal_wifi_monitor_deinit(self_in); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(wifi_monitor_deinit_obj, wifi_monitor_obj_deinit); +static MP_DEFINE_CONST_FUN_OBJ_1(wifi_monitor_deinit_obj, wifi_monitor_obj_deinit); //| def lost(self) -> int: //| """Returns the packet loss count. The counter resets after each poll.""" //| ... -STATIC mp_obj_t wifi_monitor_obj_get_lost(mp_obj_t self_in) { +static mp_obj_t wifi_monitor_obj_get_lost(mp_obj_t self_in) { return common_hal_wifi_monitor_get_lost(self_in); } MP_DEFINE_CONST_FUN_OBJ_1(wifi_monitor_lost_obj, wifi_monitor_obj_get_lost); @@ -98,7 +98,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(wifi_monitor_lost_obj, wifi_monitor_obj_get_lost); //| def queued(self) -> int: //| """Returns the packet queued count.""" //| ... -STATIC mp_obj_t wifi_monitor_obj_get_queued(mp_obj_t self_in) { +static mp_obj_t wifi_monitor_obj_get_queued(mp_obj_t self_in) { if (common_hal_wifi_monitor_deinited()) { return mp_obj_new_int_from_uint(0); } @@ -110,7 +110,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(wifi_monitor_queued_obj, wifi_monitor_obj_get_queued); //| """Returns the monitor packet.""" //| ... //| -STATIC mp_obj_t wifi_monitor_obj_get_packet(mp_obj_t self_in) { +static mp_obj_t wifi_monitor_obj_get_packet(mp_obj_t self_in) { if (common_hal_wifi_monitor_deinited()) { raise_deinited_error(); } @@ -118,7 +118,7 @@ STATIC mp_obj_t wifi_monitor_obj_get_packet(mp_obj_t self_in) { } MP_DEFINE_CONST_FUN_OBJ_1(wifi_monitor_packet_obj, wifi_monitor_obj_get_packet); -STATIC const mp_rom_map_elem_t wifi_monitor_locals_dict_table[] = { +static const mp_rom_map_elem_t wifi_monitor_locals_dict_table[] = { // properties { MP_ROM_QSTR(MP_QSTR_channel), MP_ROM_PTR(&wifi_monitor_channel_obj) }, { MP_ROM_QSTR(MP_QSTR_queue), MP_ROM_PTR(&wifi_monitor_queue_obj) }, @@ -129,7 +129,7 @@ STATIC const mp_rom_map_elem_t wifi_monitor_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_queued), MP_ROM_PTR(&wifi_monitor_queued_obj) }, { MP_ROM_QSTR(MP_QSTR_packet), MP_ROM_PTR(&wifi_monitor_packet_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(wifi_monitor_locals_dict, wifi_monitor_locals_dict_table); +static MP_DEFINE_CONST_DICT(wifi_monitor_locals_dict, wifi_monitor_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( wifi_monitor_type, diff --git a/shared-bindings/wifi/Network.c b/shared-bindings/wifi/Network.c index 195757f53893..3b9c0b6116c1 100644 --- a/shared-bindings/wifi/Network.c +++ b/shared-bindings/wifi/Network.c @@ -20,7 +20,7 @@ //| ssid: str //| """String id of the network""" -STATIC mp_obj_t wifi_network_get_ssid(mp_obj_t self) { +static mp_obj_t wifi_network_get_ssid(mp_obj_t self) { return common_hal_wifi_network_get_ssid(self); } @@ -32,7 +32,7 @@ MP_PROPERTY_GETTER(wifi_network_ssid_obj, //| bssid: bytes //| """BSSID of the network (usually the AP's MAC address)""" -STATIC mp_obj_t wifi_network_get_bssid(mp_obj_t self) { +static mp_obj_t wifi_network_get_bssid(mp_obj_t self) { return common_hal_wifi_network_get_bssid(self); } @@ -44,7 +44,7 @@ MP_PROPERTY_GETTER(wifi_network_bssid_obj, //| rssi: int //| """Signal strength of the network""" -STATIC mp_obj_t wifi_network_get_rssi(mp_obj_t self) { +static mp_obj_t wifi_network_get_rssi(mp_obj_t self) { return common_hal_wifi_network_get_rssi(self); } @@ -56,7 +56,7 @@ MP_PROPERTY_GETTER(wifi_network_rssi_obj, //| channel: int //| """Channel number the network is operating on""" -STATIC mp_obj_t wifi_network_get_channel(mp_obj_t self) { +static mp_obj_t wifi_network_get_channel(mp_obj_t self) { return common_hal_wifi_network_get_channel(self); } @@ -67,7 +67,7 @@ MP_PROPERTY_GETTER(wifi_network_channel_obj, //| country: str //| """String id of the country code""" -STATIC mp_obj_t wifi_network_get_country(mp_obj_t self) { +static mp_obj_t wifi_network_get_country(mp_obj_t self) { return common_hal_wifi_network_get_country(self); } @@ -79,7 +79,7 @@ MP_PROPERTY_GETTER(wifi_network_country_obj, //| authmode: str //| """String id of the authmode""" //| -STATIC mp_obj_t wifi_network_get_authmode(mp_obj_t self) { +static mp_obj_t wifi_network_get_authmode(mp_obj_t self) { return common_hal_wifi_network_get_authmode(self); } @@ -88,7 +88,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(wifi_network_get_authmode_obj, wifi_network_get_authmo MP_PROPERTY_GETTER(wifi_network_authmode_obj, (mp_obj_t)&wifi_network_get_authmode_obj); -STATIC const mp_rom_map_elem_t wifi_network_locals_dict_table[] = { +static const mp_rom_map_elem_t wifi_network_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_ssid), MP_ROM_PTR(&wifi_network_ssid_obj) }, { MP_ROM_QSTR(MP_QSTR_bssid), MP_ROM_PTR(&wifi_network_bssid_obj) }, { MP_ROM_QSTR(MP_QSTR_rssi), MP_ROM_PTR(&wifi_network_rssi_obj) }, @@ -97,7 +97,7 @@ STATIC const mp_rom_map_elem_t wifi_network_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_authmode), MP_ROM_PTR(&wifi_network_authmode_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(wifi_network_locals_dict, wifi_network_locals_dict_table); +static MP_DEFINE_CONST_DICT(wifi_network_locals_dict, wifi_network_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( wifi_network_type, diff --git a/shared-bindings/wifi/Packet.c b/shared-bindings/wifi/Packet.c index df383f13f76d..9d7befa7a8aa 100644 --- a/shared-bindings/wifi/Packet.c +++ b/shared-bindings/wifi/Packet.c @@ -34,7 +34,7 @@ MAKE_ENUM_MAP(wifi_packet) { MAKE_ENUM_MAP_ENTRY(packet, RAW), MAKE_ENUM_MAP_ENTRY(packet, RSSI), }; -STATIC MP_DEFINE_CONST_DICT(wifi_packet_locals_dict, wifi_packet_locals_table); +static MP_DEFINE_CONST_DICT(wifi_packet_locals_dict, wifi_packet_locals_table); MAKE_PRINTER(wifi, wifi_packet); diff --git a/shared-bindings/wifi/Radio.c b/shared-bindings/wifi/Radio.c index c58d09e42e36..3dcea68a20b2 100644 --- a/shared-bindings/wifi/Radio.c +++ b/shared-bindings/wifi/Radio.c @@ -15,7 +15,7 @@ #define MAC_ADDRESS_LENGTH 6 -STATIC bool hostname_valid(const char *ptr, size_t len) { +static bool hostname_valid(const char *ptr, size_t len) { #if 0 // validated by mp_arg_validate_length_range if (len == 0 || len > 253) { // at most 253 characters long @@ -51,7 +51,7 @@ STATIC bool hostname_valid(const char *ptr, size_t len) { return !(partlen > 63); } -STATIC void validate_hex_password(const uint8_t *buf, size_t len) { +static void validate_hex_password(const uint8_t *buf, size_t len) { for (size_t i = 0; i < len; i++) { if (!unichar_isxdigit(buf[i])) { mp_raise_ValueError_varg(MP_ERROR_TEXT("Invalid hex password")); @@ -78,7 +78,7 @@ STATIC void validate_hex_password(const uint8_t *buf, size_t len) { //| """``True`` when the wifi radio is enabled. //| If you set the value to ``False``, any open sockets will be closed. //| """ -STATIC mp_obj_t wifi_radio_get_enabled(mp_obj_t self) { +static mp_obj_t wifi_radio_get_enabled(mp_obj_t self) { return mp_obj_new_bool(common_hal_wifi_radio_get_enabled(self)); } MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_enabled_obj, wifi_radio_get_enabled); @@ -90,7 +90,7 @@ static mp_obj_t wifi_radio_set_enabled(mp_obj_t self, mp_obj_t value) { return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_2(wifi_radio_set_enabled_obj, wifi_radio_set_enabled); +static MP_DEFINE_CONST_FUN_OBJ_2(wifi_radio_set_enabled_obj, wifi_radio_set_enabled); MP_PROPERTY_GETSET(wifi_radio_enabled_obj, (mp_obj_t)&wifi_radio_get_enabled_obj, @@ -99,13 +99,13 @@ MP_PROPERTY_GETSET(wifi_radio_enabled_obj, //| hostname: Union[str | ReadableBuffer] //| """Hostname for wifi interface. When the hostname is altered after interface started/connected //| the changes would only be reflected once the interface restarts/reconnects.""" -STATIC mp_obj_t wifi_radio_get_hostname(mp_obj_t self_in) { +static mp_obj_t wifi_radio_get_hostname(mp_obj_t self_in) { wifi_radio_obj_t *self = MP_OBJ_TO_PTR(self_in); return common_hal_wifi_radio_get_hostname(self); } MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_hostname_obj, wifi_radio_get_hostname); -STATIC mp_obj_t wifi_radio_set_hostname(mp_obj_t self_in, mp_obj_t hostname_in) { +static mp_obj_t wifi_radio_set_hostname(mp_obj_t self_in, mp_obj_t hostname_in) { mp_buffer_info_t hostname; mp_get_buffer_raise(hostname_in, &hostname, MP_BUFFER_READ); @@ -134,14 +134,14 @@ MP_PROPERTY_GETSET(wifi_radio_hostname_obj, //| """ -STATIC mp_obj_t _wifi_radio_get_mac_address(mp_obj_t self_in) { +static mp_obj_t _wifi_radio_get_mac_address(mp_obj_t self_in) { wifi_radio_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_FROM_PTR(common_hal_wifi_radio_get_mac_address(self)); } MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_mac_address_obj, _wifi_radio_get_mac_address); #if CIRCUITPY_WIFI_RADIO_SETTABLE_MAC_ADDRESS -STATIC mp_obj_t wifi_radio_set_mac_address(mp_obj_t self_in, mp_obj_t mac_address_in) { +static mp_obj_t wifi_radio_set_mac_address(mp_obj_t self_in, mp_obj_t mac_address_in) { mp_buffer_info_t mac_address; mp_get_buffer_raise(mac_address_in, &mac_address, MP_BUFFER_READ); @@ -168,13 +168,13 @@ MP_PROPERTY_GETTER(wifi_radio_mac_address_obj, //| tx_power: float //| """Wifi transmission power, in dBm.""" -STATIC mp_obj_t wifi_radio_get_tx_power(mp_obj_t self_in) { +static mp_obj_t wifi_radio_get_tx_power(mp_obj_t self_in) { wifi_radio_obj_t *self = MP_OBJ_TO_PTR(self_in); return mp_obj_new_float(common_hal_wifi_radio_get_tx_power(self)); } MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_tx_power_obj, wifi_radio_get_tx_power); -STATIC mp_obj_t wifi_radio_set_tx_power(mp_obj_t self_in, mp_obj_t tx_power_in) { +static mp_obj_t wifi_radio_set_tx_power(mp_obj_t self_in, mp_obj_t tx_power_in) { mp_float_t tx_power = mp_obj_get_float(tx_power_in); wifi_radio_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_wifi_radio_set_tx_power(self, tx_power); @@ -192,14 +192,14 @@ MP_PROPERTY_GETSET(wifi_radio_tx_power_obj, //| //| **Limitations:** Not settable on RP2040 CYW43 boards, such as Pi Pico W. //| """ -STATIC mp_obj_t wifi_radio_get_mac_address_ap(mp_obj_t self_in) { +static mp_obj_t wifi_radio_get_mac_address_ap(mp_obj_t self_in) { wifi_radio_obj_t *self = MP_OBJ_TO_PTR(self_in); return MP_OBJ_FROM_PTR(common_hal_wifi_radio_get_mac_address_ap(self)); } MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_mac_address_ap_obj, wifi_radio_get_mac_address_ap); #if CIRCUITPY_WIFI_RADIO_SETTABLE_MAC_ADDRESS -STATIC mp_obj_t wifi_radio_set_mac_address_ap(mp_obj_t self_in, mp_obj_t mac_address_in) { +static mp_obj_t wifi_radio_set_mac_address_ap(mp_obj_t self_in, mp_obj_t mac_address_in) { mp_buffer_info_t mac_address; mp_get_buffer_raise(mac_address_in, &mac_address, MP_BUFFER_READ); @@ -234,7 +234,7 @@ MP_PROPERTY_GETTER(wifi_radio_mac_address_ap_obj, //| In the raspberrypi port (RP2040 CYW43), ``start_channel`` and ``stop_channel`` are ignored. //| """ //| ... -STATIC mp_obj_t wifi_radio_start_scanning_networks(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t wifi_radio_start_scanning_networks(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_start_channel, ARG_stop_channel }; static const mp_arg_t allowed_args[] = { { MP_QSTR_start_channel, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 1} }, @@ -258,24 +258,24 @@ STATIC mp_obj_t wifi_radio_start_scanning_networks(size_t n_args, const mp_obj_t return common_hal_wifi_radio_start_scanning_networks(self, start_channel, stop_channel); } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(wifi_radio_start_scanning_networks_obj, 1, wifi_radio_start_scanning_networks); +static MP_DEFINE_CONST_FUN_OBJ_KW(wifi_radio_start_scanning_networks_obj, 1, wifi_radio_start_scanning_networks); //| def stop_scanning_networks(self) -> None: //| """Stop scanning for Wifi networks and free any resources used to do it.""" //| ... -STATIC mp_obj_t wifi_radio_stop_scanning_networks(mp_obj_t self_in) { +static mp_obj_t wifi_radio_stop_scanning_networks(mp_obj_t self_in) { wifi_radio_obj_t *self = MP_OBJ_TO_PTR(self_in); common_hal_wifi_radio_stop_scanning_networks(self); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_stop_scanning_networks_obj, wifi_radio_stop_scanning_networks); +static MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_stop_scanning_networks_obj, wifi_radio_stop_scanning_networks); //| def start_station(self) -> None: //| """Starts a Station.""" //| ... -STATIC mp_obj_t wifi_radio_start_station(mp_obj_t self) { +static mp_obj_t wifi_radio_start_station(mp_obj_t self) { common_hal_wifi_radio_start_station(self); return mp_const_none; } @@ -284,7 +284,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_start_station_obj, wifi_radio_start_station //| def stop_station(self) -> None: //| """Stops the Station.""" //| ... -STATIC mp_obj_t wifi_radio_stop_station(mp_obj_t self) { +static mp_obj_t wifi_radio_stop_station(mp_obj_t self) { common_hal_wifi_radio_stop_station(self); return mp_const_none; } @@ -327,7 +327,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_stop_station_obj, wifi_radio_stop_station); //| In the raspberrypi port (RP2040 CYW43), ``max_connections`` is ignored. //| """ //| ... -STATIC mp_obj_t wifi_radio_start_ap(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t wifi_radio_start_ap(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_ssid, ARG_password, ARG_channel, ARG_authmode, ARG_max_connections }; static const mp_arg_t allowed_args[] = { { MP_QSTR_ssid, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -379,12 +379,12 @@ STATIC mp_obj_t wifi_radio_start_ap(size_t n_args, const mp_obj_t *pos_args, mp_ common_hal_wifi_radio_start_ap(self, ssid.buf, ssid.len, password.buf, password.len, channel, authmode, args[ARG_max_connections].u_int); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(wifi_radio_start_ap_obj, 1, wifi_radio_start_ap); +static MP_DEFINE_CONST_FUN_OBJ_KW(wifi_radio_start_ap_obj, 1, wifi_radio_start_ap); //| def stop_ap(self) -> None: //| """Stops the access point.""" //| ... -STATIC mp_obj_t wifi_radio_stop_ap(mp_obj_t self) { +static mp_obj_t wifi_radio_stop_ap(mp_obj_t self) { common_hal_wifi_radio_stop_ap(self); return mp_const_none; } @@ -392,7 +392,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_stop_ap_obj, wifi_radio_stop_ap); //| ap_active: bool //| """True if running as an access point. (read-only)""" -STATIC mp_obj_t wifi_radio_get_ap_active(mp_obj_t self) { +static mp_obj_t wifi_radio_get_ap_active(mp_obj_t self) { return mp_obj_new_bool(common_hal_wifi_radio_get_ap_active(self)); } MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_ap_active_obj, wifi_radio_get_ap_active); @@ -425,7 +425,7 @@ MP_PROPERTY_GETTER(wifi_radio_ap_active_obj, //| If ``bssid`` is given and not None, the scan will start at the first channel or the one given and //| connect to the AP with the given ``bssid`` and ``ssid``.""" //| ... -STATIC mp_obj_t wifi_radio_connect(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t wifi_radio_connect(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_ssid, ARG_password, ARG_channel, ARG_bssid, ARG_timeout }; static const mp_arg_t allowed_args[] = { { MP_QSTR_ssid, MP_ARG_REQUIRED | MP_ARG_OBJ }, @@ -484,11 +484,11 @@ STATIC mp_obj_t wifi_radio_connect(size_t n_args, const mp_obj_t *pos_args, mp_m return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(wifi_radio_connect_obj, 1, wifi_radio_connect); +static MP_DEFINE_CONST_FUN_OBJ_KW(wifi_radio_connect_obj, 1, wifi_radio_connect); //| connected: bool //| """True if connected to an access point (read-only).""" -STATIC mp_obj_t wifi_radio_get_connected(mp_obj_t self) { +static mp_obj_t wifi_radio_get_connected(mp_obj_t self) { return mp_obj_new_bool(common_hal_wifi_radio_get_connected(self)); } MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_connected_obj, wifi_radio_get_connected); @@ -498,7 +498,7 @@ MP_PROPERTY_GETTER(wifi_radio_connected_obj, //| ipv4_gateway: Optional[ipaddress.IPv4Address] //| """IP v4 Address of the station gateway when connected to an access point. None otherwise. (read-only)""" -STATIC mp_obj_t wifi_radio_get_ipv4_gateway(mp_obj_t self) { +static mp_obj_t wifi_radio_get_ipv4_gateway(mp_obj_t self) { return common_hal_wifi_radio_get_ipv4_gateway(self); } MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_ipv4_gateway_obj, wifi_radio_get_ipv4_gateway); @@ -508,7 +508,7 @@ MP_PROPERTY_GETTER(wifi_radio_ipv4_gateway_obj, //| ipv4_gateway_ap: Optional[ipaddress.IPv4Address] //| """IP v4 Address of the access point gateway, when enabled. None otherwise. (read-only)""" -STATIC mp_obj_t wifi_radio_get_ipv4_gateway_ap(mp_obj_t self) { +static mp_obj_t wifi_radio_get_ipv4_gateway_ap(mp_obj_t self) { return common_hal_wifi_radio_get_ipv4_gateway_ap(self); } MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_ipv4_gateway_ap_obj, wifi_radio_get_ipv4_gateway_ap); @@ -518,7 +518,7 @@ MP_PROPERTY_GETTER(wifi_radio_ipv4_gateway_ap_obj, //| ipv4_subnet: Optional[ipaddress.IPv4Address] //| """IP v4 Address of the station subnet when connected to an access point. None otherwise. (read-only)""" -STATIC mp_obj_t wifi_radio_get_ipv4_subnet(mp_obj_t self) { +static mp_obj_t wifi_radio_get_ipv4_subnet(mp_obj_t self) { return common_hal_wifi_radio_get_ipv4_subnet(self); } MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_ipv4_subnet_obj, wifi_radio_get_ipv4_subnet); @@ -528,7 +528,7 @@ MP_PROPERTY_GETTER(wifi_radio_ipv4_subnet_obj, //| ipv4_subnet_ap: Optional[ipaddress.IPv4Address] //| """IP v4 Address of the access point subnet, when enabled. None otherwise. (read-only)""" -STATIC mp_obj_t wifi_radio_get_ipv4_subnet_ap(mp_obj_t self) { +static mp_obj_t wifi_radio_get_ipv4_subnet_ap(mp_obj_t self) { return common_hal_wifi_radio_get_ipv4_subnet_ap(self); } MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_ipv4_subnet_ap_obj, wifi_radio_get_ipv4_subnet_ap); @@ -552,7 +552,7 @@ MP_PROPERTY_GETTER(wifi_radio_ipv4_subnet_ap_obj, //| In the raspberrypi port (RP2040 CYW43), the access point needs to be started before the IP v4 address can be set. //| """ //| ... -STATIC mp_obj_t wifi_radio_set_ipv4_address(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t wifi_radio_set_ipv4_address(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_ipv4, ARG_netmask, ARG_gateway, ARG_ipv4_dns }; static const mp_arg_t allowed_args[] = { { MP_QSTR_ipv4, MP_ARG_REQUIRED | MP_ARG_KW_ONLY | MP_ARG_OBJ, }, @@ -568,7 +568,7 @@ STATIC mp_obj_t wifi_radio_set_ipv4_address(size_t n_args, const mp_obj_t *pos_a common_hal_wifi_radio_set_ipv4_address(self, args[ARG_ipv4].u_obj, args[ARG_netmask].u_obj, args[ARG_gateway].u_obj, args[ARG_ipv4_dns].u_obj); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(wifi_radio_set_ipv4_address_obj, 1, wifi_radio_set_ipv4_address); +static MP_DEFINE_CONST_FUN_OBJ_KW(wifi_radio_set_ipv4_address_obj, 1, wifi_radio_set_ipv4_address); //| def set_ipv4_address_ap( //| self, @@ -579,7 +579,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_KW(wifi_radio_set_ipv4_address_obj, 1, wifi_radio //| ) -> None: //| """Sets the IP v4 address of the access point. Must include the netmask and gateway.""" //| ... -STATIC mp_obj_t wifi_radio_set_ipv4_address_ap(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t wifi_radio_set_ipv4_address_ap(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_ipv4, ARG_netmask, ARG_gateway }; static const mp_arg_t allowed_args[] = { { MP_QSTR_ipv4, MP_ARG_REQUIRED | MP_ARG_KW_ONLY | MP_ARG_OBJ, }, @@ -594,11 +594,11 @@ STATIC mp_obj_t wifi_radio_set_ipv4_address_ap(size_t n_args, const mp_obj_t *po common_hal_wifi_radio_set_ipv4_address_ap(self, args[ARG_ipv4].u_obj, args[ARG_netmask].u_obj, args[ARG_gateway].u_obj); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(wifi_radio_set_ipv4_address_ap_obj, 1, wifi_radio_set_ipv4_address_ap); +static MP_DEFINE_CONST_FUN_OBJ_KW(wifi_radio_set_ipv4_address_ap_obj, 1, wifi_radio_set_ipv4_address_ap); //| ipv4_address: Optional[ipaddress.IPv4Address] //| """IP v4 Address of the station when connected to an access point. None otherwise. (read-only)""" -STATIC mp_obj_t _wifi_radio_get_ipv4_address(mp_obj_t self) { +static mp_obj_t _wifi_radio_get_ipv4_address(mp_obj_t self) { return common_hal_wifi_radio_get_ipv4_address(self); } MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_ipv4_address_obj, _wifi_radio_get_ipv4_address); @@ -608,7 +608,7 @@ MP_PROPERTY_GETTER(wifi_radio_ipv4_address_obj, //| ipv4_address_ap: Optional[ipaddress.IPv4Address] //| """IP v4 Address of the access point, when enabled. None otherwise. (read-only)""" -STATIC mp_obj_t wifi_radio_get_ipv4_address_ap(mp_obj_t self) { +static mp_obj_t wifi_radio_get_ipv4_address_ap(mp_obj_t self) { return common_hal_wifi_radio_get_ipv4_address_ap(self); } MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_ipv4_address_ap_obj, wifi_radio_get_ipv4_address_ap); @@ -618,12 +618,12 @@ MP_PROPERTY_GETTER(wifi_radio_ipv4_address_ap_obj, //| ipv4_dns: ipaddress.IPv4Address //| """IP v4 Address of the DNS server to be used.""" -STATIC mp_obj_t wifi_radio_get_ipv4_dns(mp_obj_t self) { +static mp_obj_t wifi_radio_get_ipv4_dns(mp_obj_t self) { return common_hal_wifi_radio_get_ipv4_dns(self); } MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_ipv4_dns_obj, wifi_radio_get_ipv4_dns); -STATIC mp_obj_t wifi_radio_set_ipv4_dns(mp_obj_t self, mp_obj_t ipv4_dns_addr) { +static mp_obj_t wifi_radio_set_ipv4_dns(mp_obj_t self, mp_obj_t ipv4_dns_addr) { common_hal_wifi_radio_set_ipv4_dns(self, ipv4_dns_addr); return mp_const_none; @@ -636,7 +636,7 @@ MP_PROPERTY_GETSET(wifi_radio_ipv4_dns_obj, //| ap_info: Optional[Network] //| """Network object containing BSSID, SSID, authmode, channel, country and RSSI when connected to an access point. None otherwise.""" -STATIC mp_obj_t wifi_radio_get_ap_info(mp_obj_t self) { +static mp_obj_t wifi_radio_get_ap_info(mp_obj_t self) { return common_hal_wifi_radio_get_ap_info(self); } MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_ap_info_obj, wifi_radio_get_ap_info); @@ -646,7 +646,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_ap_info_obj, wifi_radio_get_ap_info); //| mac: bytearray (read-only) //| rssi: int (read-only, None on Raspberry Pi Pico W) //| ipv4_address: ipv4_address (read-only, None if station connected but no address assigned yet or self-assigned address)""" -STATIC mp_obj_t wifi_radio_get_stations_ap(mp_obj_t self) { +static mp_obj_t wifi_radio_get_stations_ap(mp_obj_t self) { return common_hal_wifi_radio_get_stations_ap(self); } @@ -658,7 +658,7 @@ MP_PROPERTY_GETTER(wifi_radio_stations_ap_obj, //| def start_dhcp(self) -> None: //| """Starts the station DHCP client.""" //| ... -STATIC mp_obj_t wifi_radio_start_dhcp_client(mp_obj_t self) { +static mp_obj_t wifi_radio_start_dhcp_client(mp_obj_t self) { common_hal_wifi_radio_start_dhcp_client(self); return mp_const_none; } @@ -667,7 +667,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_start_dhcp_client_obj, wifi_radio_start_dhc //| def stop_dhcp(self) -> None: //| """Stops the station DHCP client. Needed to assign a static IP address.""" //| ... -STATIC mp_obj_t wifi_radio_stop_dhcp_client(mp_obj_t self) { +static mp_obj_t wifi_radio_stop_dhcp_client(mp_obj_t self) { common_hal_wifi_radio_stop_dhcp_client(self); return mp_const_none; } @@ -676,7 +676,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_stop_dhcp_client_obj, wifi_radio_stop_dhcp_ //| def start_dhcp_ap(self) -> None: //| """Starts the access point DHCP server.""" //| ... -STATIC mp_obj_t wifi_radio_start_dhcp_server(mp_obj_t self) { +static mp_obj_t wifi_radio_start_dhcp_server(mp_obj_t self) { common_hal_wifi_radio_start_dhcp_server(self); return mp_const_none; } @@ -685,7 +685,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_start_dhcp_server_obj, wifi_radio_start_dhc //| def stop_dhcp_ap(self) -> None: //| """Stops the access point DHCP server. Needed to assign a static IP address.""" //| ... -STATIC mp_obj_t wifi_radio_stop_dhcp_server(mp_obj_t self) { +static mp_obj_t wifi_radio_stop_dhcp_server(mp_obj_t self) { common_hal_wifi_radio_stop_dhcp_server(self); return mp_const_none; } @@ -701,7 +701,7 @@ MP_PROPERTY_GETTER(wifi_radio_ap_info_obj, //| Returns None when it times out.""" //| ... //| -STATIC mp_obj_t wifi_radio_ping(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { +static mp_obj_t wifi_radio_ping(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_ip, ARG_timeout }; static const mp_arg_t allowed_args[] = { { MP_QSTR_ip, MP_ARG_REQUIRED | MP_ARG_OBJ, }, @@ -724,9 +724,9 @@ STATIC mp_obj_t wifi_radio_ping(size_t n_args, const mp_obj_t *pos_args, mp_map_ return mp_obj_new_float(time_ms / 1000.0); } -STATIC MP_DEFINE_CONST_FUN_OBJ_KW(wifi_radio_ping_obj, 1, wifi_radio_ping); +static MP_DEFINE_CONST_FUN_OBJ_KW(wifi_radio_ping_obj, 1, wifi_radio_ping); -STATIC const mp_rom_map_elem_t wifi_radio_locals_dict_table[] = { +static const mp_rom_map_elem_t wifi_radio_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_enabled), MP_ROM_PTR(&wifi_radio_enabled_obj) }, { MP_ROM_QSTR(MP_QSTR_hostname), MP_ROM_PTR(&wifi_radio_hostname_obj) }, @@ -770,7 +770,7 @@ STATIC const mp_rom_map_elem_t wifi_radio_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_ping), MP_ROM_PTR(&wifi_radio_ping_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(wifi_radio_locals_dict, wifi_radio_locals_dict_table); +static MP_DEFINE_CONST_DICT(wifi_radio_locals_dict, wifi_radio_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( wifi_radio_type, diff --git a/shared-bindings/wifi/ScannedNetworks.c b/shared-bindings/wifi/ScannedNetworks.c index 5b44d466ccd3..dea3474d423e 100644 --- a/shared-bindings/wifi/ScannedNetworks.c +++ b/shared-bindings/wifi/ScannedNetworks.c @@ -16,7 +16,7 @@ //| """Iterates over all `wifi.Network` objects found while scanning. This object is always created //| by a `wifi.Radio`: it has no user-visible constructor.""" //| -STATIC mp_obj_t scannednetworks_iternext(mp_obj_t self_in) { +static mp_obj_t scannednetworks_iternext(mp_obj_t self_in) { mp_check_self(mp_obj_is_type(self_in, &wifi_scannednetworks_type)); wifi_scannednetworks_obj_t *self = MP_OBJ_TO_PTR(self_in); mp_obj_t network = common_hal_wifi_scannednetworks_next(self); diff --git a/shared-bindings/wifi/__init__.c b/shared-bindings/wifi/__init__.c index 0bd9e8c7b64a..988b07147c2d 100644 --- a/shared-bindings/wifi/__init__.c +++ b/shared-bindings/wifi/__init__.c @@ -20,13 +20,13 @@ //| This object is the sole instance of `wifi.Radio`.""" // Called when wifi is imported. -STATIC mp_obj_t wifi___init__(void) { +static mp_obj_t wifi___init__(void) { common_hal_wifi_init(true); return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_0(wifi___init___obj, wifi___init__); +static MP_DEFINE_CONST_FUN_OBJ_0(wifi___init___obj, wifi___init__); -STATIC const mp_rom_map_elem_t wifi_module_globals_table[] = { +static const mp_rom_map_elem_t wifi_module_globals_table[] = { // Name { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_wifi) }, @@ -44,7 +44,7 @@ STATIC const mp_rom_map_elem_t wifi_module_globals_table[] = { // Properties { MP_ROM_QSTR(MP_QSTR_radio), MP_ROM_PTR(&common_hal_wifi_radio_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(wifi_module_globals, wifi_module_globals_table); +static MP_DEFINE_CONST_DICT(wifi_module_globals, wifi_module_globals_table); const mp_obj_module_t wifi_module = { .base = { &mp_type_module }, diff --git a/shared-bindings/zlib/__init__.c b/shared-bindings/zlib/__init__.c index 237c68f3b762..f9db723c4fc3 100644 --- a/shared-bindings/zlib/__init__.c +++ b/shared-bindings/zlib/__init__.c @@ -48,7 +48,7 @@ //| """ //| ... //| -STATIC mp_obj_t zlib_decompress(size_t n_args, const mp_obj_t *args) { +static mp_obj_t zlib_decompress(size_t n_args, const mp_obj_t *args) { mp_int_t wbits = 0; if (n_args > 1) { wbits = MP_OBJ_SMALL_INT_VALUE(args[1]); @@ -56,14 +56,14 @@ STATIC mp_obj_t zlib_decompress(size_t n_args, const mp_obj_t *args) { return common_hal_zlib_decompress(args[0], wbits); } -STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(zlib_decompress_obj, 1, 3, zlib_decompress); +static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(zlib_decompress_obj, 1, 3, zlib_decompress); -STATIC const mp_rom_map_elem_t zlib_globals_table[] = { +static const mp_rom_map_elem_t zlib_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_zlib) }, { MP_ROM_QSTR(MP_QSTR_decompress), MP_ROM_PTR(&zlib_decompress_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(zlib_globals, zlib_globals_table); +static MP_DEFINE_CONST_DICT(zlib_globals, zlib_globals_table); const mp_obj_module_t zlib_module = { .base = { &mp_type_module }, diff --git a/shared-module/_eve/__init__.c b/shared-module/_eve/__init__.c index c2d81ce76aa1..881528ca0da0 100644 --- a/shared-module/_eve/__init__.c +++ b/shared-module/_eve/__init__.c @@ -10,7 +10,7 @@ #include "shared-bindings/_eve/__init__.h" #include "shared-module/_eve/__init__.h" -STATIC void write(common_hal__eve_t *eve, size_t len, void *buf) { +static void write(common_hal__eve_t *eve, size_t len, void *buf) { eve->dest[2] = mp_obj_new_bytearray_by_ref(len, buf); mp_call_method_n_kw(1, 0, eve->dest); } diff --git a/shared-module/adafruit_pixelbuf/PixelBuf.c b/shared-module/adafruit_pixelbuf/PixelBuf.c index 8f5aa434ccd2..0eb1afe9adb1 100644 --- a/shared-module/adafruit_pixelbuf/PixelBuf.c +++ b/shared-module/adafruit_pixelbuf/PixelBuf.c @@ -120,7 +120,7 @@ void common_hal_adafruit_pixelbuf_pixelbuf_set_brightness(mp_obj_t self_in, mp_f } } -STATIC uint8_t _pixelbuf_get_as_uint8(mp_obj_t obj) { +static uint8_t _pixelbuf_get_as_uint8(mp_obj_t obj) { if (mp_obj_is_small_int(obj)) { return MP_OBJ_SMALL_INT_VALUE(obj); #if MICROPY_LONGINT_IMPL != MICROPY_LONGINT_IMPL_NONE @@ -224,7 +224,7 @@ void common_hal_adafruit_pixelbuf_pixelbuf_set_pixel_color(mp_obj_t self_in, siz pixelbuf_set_pixel_color(self, index, r, g, b, w); } -STATIC void _pixelbuf_set_pixel(pixelbuf_pixelbuf_obj_t *self, size_t index, mp_obj_t value) { +static void _pixelbuf_set_pixel(pixelbuf_pixelbuf_obj_t *self, size_t index, mp_obj_t value) { uint8_t r; uint8_t g; uint8_t b; diff --git a/shared-module/audiomp3/MP3Decoder.c b/shared-module/audiomp3/MP3Decoder.c index 70ee318fd965..d42e0477dafe 100644 --- a/shared-module/audiomp3/MP3Decoder.c +++ b/shared-module/audiomp3/MP3Decoder.c @@ -30,7 +30,7 @@ * * Sets self->eof if any read of the file returns 0 bytes */ -STATIC bool mp3file_update_inbuf_always(audiomp3_mp3file_obj_t *self) { +static bool mp3file_update_inbuf_always(audiomp3_mp3file_obj_t *self) { // If we didn't previously reach the end of file, we can try reading now if (!self->eof && self->inbuf_offset != 0) { @@ -69,7 +69,7 @@ STATIC bool mp3file_update_inbuf_always(audiomp3_mp3file_obj_t *self) { * This variant is introduced so that at the site of the * add_background_callback_core call, the prototype matches. */ -STATIC void mp3file_update_inbuf_cb(void *self) { +static void mp3file_update_inbuf_cb(void *self) { mp3file_update_inbuf_always(self); } @@ -77,7 +77,7 @@ STATIC void mp3file_update_inbuf_cb(void *self) { * * Returns the same as mp3file_update_inbuf_always. */ -STATIC bool mp3file_update_inbuf_half(audiomp3_mp3file_obj_t *self) { +static bool mp3file_update_inbuf_half(audiomp3_mp3file_obj_t *self) { // If buffer is over half full, do nothing if (self->inbuf_offset < self->inbuf_length / 2) { return true; @@ -92,7 +92,7 @@ STATIC bool mp3file_update_inbuf_half(audiomp3_mp3file_obj_t *self) { // http://id3.org/d3v2.3.0 // http://id3.org/id3v2.3.0 -STATIC void mp3file_skip_id3v2(audiomp3_mp3file_obj_t *self) { +static void mp3file_skip_id3v2(audiomp3_mp3file_obj_t *self) { mp3file_update_inbuf_half(self); if (BYTES_LEFT(self) < 10) { return; @@ -126,7 +126,7 @@ STATIC void mp3file_skip_id3v2(audiomp3_mp3file_obj_t *self) { /* If a sync word can be found, advance to it and return true. Otherwise, * return false. */ -STATIC bool mp3file_find_sync_word(audiomp3_mp3file_obj_t *self) { +static bool mp3file_find_sync_word(audiomp3_mp3file_obj_t *self) { do { mp3file_update_inbuf_half(self); int offset = MP3FindSyncWord(READ_PTR(self), BYTES_LEFT(self)); @@ -140,7 +140,7 @@ STATIC bool mp3file_find_sync_word(audiomp3_mp3file_obj_t *self) { return false; } -STATIC bool mp3file_get_next_frame_info(audiomp3_mp3file_obj_t *self, MP3FrameInfo *fi) { +static bool mp3file_get_next_frame_info(audiomp3_mp3file_obj_t *self, MP3FrameInfo *fi) { int err; do { err = MP3GetNextFrameInfo(self->decoder, fi, READ_PTR(self)); diff --git a/shared-module/bitbangio/I2C.c b/shared-module/bitbangio/I2C.c index 0b062608203a..0089bdc1e1e1 100644 --- a/shared-module/bitbangio/I2C.c +++ b/shared-module/bitbangio/I2C.c @@ -13,17 +13,17 @@ #include "shared-bindings/microcontroller/__init__.h" #include "shared-bindings/digitalio/DigitalInOut.h" -STATIC void delay(bitbangio_i2c_obj_t *self) { +static void delay(bitbangio_i2c_obj_t *self) { // We need to use an accurate delay to get acceptable I2C // speeds (eg 1us should be not much more than 1us). common_hal_mcu_delay_us(self->us_delay); } -STATIC void scl_low(bitbangio_i2c_obj_t *self) { +static void scl_low(bitbangio_i2c_obj_t *self) { common_hal_digitalio_digitalinout_set_value(&self->scl, false); } -STATIC void scl_release(bitbangio_i2c_obj_t *self) { +static void scl_release(bitbangio_i2c_obj_t *self) { common_hal_digitalio_digitalinout_set_value(&self->scl, true); uint32_t count = self->us_timeout; delay(self); @@ -39,22 +39,22 @@ STATIC void scl_release(bitbangio_i2c_obj_t *self) { } } -STATIC void sda_low(bitbangio_i2c_obj_t *self) { +static void sda_low(bitbangio_i2c_obj_t *self) { common_hal_digitalio_digitalinout_set_value(&self->sda, false); } -STATIC void sda_release(bitbangio_i2c_obj_t *self) { +static void sda_release(bitbangio_i2c_obj_t *self) { common_hal_digitalio_digitalinout_set_value(&self->sda, true); } -STATIC bool sda_read(bitbangio_i2c_obj_t *self) { +static bool sda_read(bitbangio_i2c_obj_t *self) { common_hal_digitalio_digitalinout_switch_to_input(&self->sda, PULL_UP); bool value = common_hal_digitalio_digitalinout_get_value(&self->sda); common_hal_digitalio_digitalinout_switch_to_output(&self->sda, true, DRIVE_MODE_OPEN_DRAIN); return value; } -STATIC void start(bitbangio_i2c_obj_t *self) { +static void start(bitbangio_i2c_obj_t *self) { sda_release(self); delay(self); scl_release(self); @@ -62,7 +62,7 @@ STATIC void start(bitbangio_i2c_obj_t *self) { delay(self); } -STATIC void stop(bitbangio_i2c_obj_t *self) { +static void stop(bitbangio_i2c_obj_t *self) { delay(self); sda_low(self); delay(self); @@ -71,7 +71,7 @@ STATIC void stop(bitbangio_i2c_obj_t *self) { delay(self); } -STATIC int write_byte(bitbangio_i2c_obj_t *self, uint8_t val) { +static int write_byte(bitbangio_i2c_obj_t *self, uint8_t val) { delay(self); scl_low(self); @@ -97,7 +97,7 @@ STATIC int write_byte(bitbangio_i2c_obj_t *self, uint8_t val) { return !ret; } -STATIC bool read_byte(bitbangio_i2c_obj_t *self, uint8_t *val, bool ack) { +static bool read_byte(bitbangio_i2c_obj_t *self, uint8_t *val, bool ack) { delay(self); scl_low(self); delay(self); diff --git a/shared-module/bitmaptools/__init__.c b/shared-module/bitmaptools/__init__.c index df329aacf1c2..8a41e387e513 100644 --- a/shared-module/bitmaptools/__init__.c +++ b/shared-module/bitmaptools/__init__.c @@ -372,7 +372,7 @@ void common_hal_bitmaptools_boundary_fill(displayio_bitmap_t *destination, } -STATIC void draw_line(displayio_bitmap_t *destination, +static void draw_line(displayio_bitmap_t *destination, int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint32_t value) { @@ -484,7 +484,7 @@ void common_hal_bitmaptools_draw_line(displayio_bitmap_t *destination, draw_line(destination, x0, y0, x1, y1, value); } -STATIC int32_t ith(void *data, size_t i, int element_size) { +static int32_t ith(void *data, size_t i, int element_size) { switch (element_size) { default: case 1: @@ -685,7 +685,7 @@ enum { SWAP_RB = 1 << 1, }; -STATIC void fill_row(displayio_bitmap_t *bitmap, int swap, int16_t *luminance_data, int y, int mx) { +static void fill_row(displayio_bitmap_t *bitmap, int swap, int16_t *luminance_data, int y, int mx) { if (y >= bitmap->height) { return; } @@ -973,7 +973,7 @@ void common_hal_bitmaptools_alphablend(displayio_bitmap_t *dest, displayio_bitma } } -STATIC void draw_circle(displayio_bitmap_t *destination, +static void draw_circle(displayio_bitmap_t *destination, int16_t x, int16_t y, int16_t radius, uint32_t value) { diff --git a/shared-module/busdisplay/BusDisplay.c b/shared-module/busdisplay/BusDisplay.c index 603ade26f833..001f2f20c03e 100644 --- a/shared-module/busdisplay/BusDisplay.c +++ b/shared-module/busdisplay/BusDisplay.c @@ -196,7 +196,7 @@ mp_obj_t common_hal_busdisplay_busdisplay_get_root_group(busdisplay_busdisplay_o return self->core.current_group; } -STATIC const displayio_area_t *_get_refresh_areas(busdisplay_busdisplay_obj_t *self) { +static const displayio_area_t *_get_refresh_areas(busdisplay_busdisplay_obj_t *self) { if (self->core.full_refresh) { self->core.area.next = NULL; return &self->core.area; @@ -206,14 +206,14 @@ STATIC const displayio_area_t *_get_refresh_areas(busdisplay_busdisplay_obj_t *s return NULL; } -STATIC void _send_pixels(busdisplay_busdisplay_obj_t *self, uint8_t *pixels, uint32_t length) { +static void _send_pixels(busdisplay_busdisplay_obj_t *self, uint8_t *pixels, uint32_t length) { if (!self->bus.data_as_commands) { self->bus.send(self->bus.bus, DISPLAY_COMMAND, CHIP_SELECT_TOGGLE_EVERY_BYTE, &self->write_ram_command, 1); } self->bus.send(self->bus.bus, DISPLAY_DATA, CHIP_SELECT_UNTOUCHED, pixels, length); } -STATIC bool _refresh_area(busdisplay_busdisplay_obj_t *self, const displayio_area_t *area) { +static bool _refresh_area(busdisplay_busdisplay_obj_t *self, const displayio_area_t *area) { uint16_t buffer_size = 128; // In uint32_ts displayio_area_t clipped; @@ -305,7 +305,7 @@ STATIC bool _refresh_area(busdisplay_busdisplay_obj_t *self, const displayio_are return true; } -STATIC void _refresh_display(busdisplay_busdisplay_obj_t *self) { +static void _refresh_display(busdisplay_busdisplay_obj_t *self) { if (!displayio_display_bus_is_free(&self->bus)) { // A refresh on this bus is already in progress. Try next display. return; diff --git a/shared-module/displayio/TileGrid.c b/shared-module/displayio/TileGrid.c index 923065d7c546..137dc02250e0 100644 --- a/shared-module/displayio/TileGrid.c +++ b/shared-module/displayio/TileGrid.c @@ -89,7 +89,7 @@ bool displayio_tilegrid_get_previous_area(displayio_tilegrid_t *self, displayio_ return true; } -STATIC void _update_current_x(displayio_tilegrid_t *self) { +static void _update_current_x(displayio_tilegrid_t *self) { uint16_t width; if (self->transpose_xy) { width = self->pixel_height; @@ -122,7 +122,7 @@ STATIC void _update_current_x(displayio_tilegrid_t *self) { } } -STATIC void _update_current_y(displayio_tilegrid_t *self) { +static void _update_current_y(displayio_tilegrid_t *self) { uint16_t height; if (self->transpose_xy) { height = self->pixel_width; diff --git a/shared-module/displayio/__init__.c b/shared-module/displayio/__init__.c index fe4a4cc84a3f..42865f0f4cc9 100644 --- a/shared-module/displayio/__init__.c +++ b/shared-module/displayio/__init__.c @@ -55,7 +55,7 @@ displayio_buffer_transform_t null_transform = { }; #if CIRCUITPY_RGBMATRIX || CIRCUITPY_IS31FL3741 || CIRCUITPY_VIDEOCORE -STATIC bool any_display_uses_this_framebuffer(mp_obj_base_t *obj) { +static bool any_display_uses_this_framebuffer(mp_obj_base_t *obj) { for (uint8_t i = 0; i < CIRCUITPY_DISPLAY_LIMIT; i++) { if (displays[i].display_base.type == &framebufferio_framebufferdisplay_type) { framebufferio_framebufferdisplay_obj_t *display = &displays[i].framebuffer_display; diff --git a/shared-module/epaperdisplay/EPaperDisplay.c b/shared-module/epaperdisplay/EPaperDisplay.c index 23a69d7f320d..fc6abdbb4c32 100644 --- a/shared-module/epaperdisplay/EPaperDisplay.c +++ b/shared-module/epaperdisplay/EPaperDisplay.c @@ -102,7 +102,7 @@ bool common_hal_epaperdisplay_epaperdisplay_set_root_group(epaperdisplay_epaperd return displayio_display_core_set_root_group(&self->core, root_group); } -STATIC const displayio_area_t *epaperdisplay_epaperdisplay_get_refresh_areas(epaperdisplay_epaperdisplay_obj_t *self) { +static const displayio_area_t *epaperdisplay_epaperdisplay_get_refresh_areas(epaperdisplay_epaperdisplay_obj_t *self) { if (self->core.full_refresh) { self->core.area.next = NULL; return &self->core.area; @@ -127,7 +127,7 @@ uint16_t common_hal_epaperdisplay_epaperdisplay_get_height(epaperdisplay_epaperd return displayio_display_core_get_height(&self->core); } -STATIC void wait_for_busy(epaperdisplay_epaperdisplay_obj_t *self) { +static void wait_for_busy(epaperdisplay_epaperdisplay_obj_t *self) { if (self->busy.base.type == &mp_type_NoneType) { return; } @@ -136,7 +136,7 @@ STATIC void wait_for_busy(epaperdisplay_epaperdisplay_obj_t *self) { } } -STATIC void send_command_sequence(epaperdisplay_epaperdisplay_obj_t *self, +static void send_command_sequence(epaperdisplay_epaperdisplay_obj_t *self, bool should_wait_for_busy, const uint8_t *sequence, uint32_t sequence_len) { uint32_t i = 0; while (i < sequence_len) { @@ -179,7 +179,7 @@ void epaperdisplay_epaperdisplay_change_refresh_mode_parameters(epaperdisplay_ep self->milliseconds_per_frame = seconds_per_frame * 1000; } -STATIC void epaperdisplay_epaperdisplay_start_refresh(epaperdisplay_epaperdisplay_obj_t *self) { +static void epaperdisplay_epaperdisplay_start_refresh(epaperdisplay_epaperdisplay_obj_t *self) { if (!displayio_display_bus_is_free(&self->bus)) { // Can't acquire display bus; skip updating this display. Try next display. return; @@ -206,7 +206,7 @@ uint32_t common_hal_epaperdisplay_epaperdisplay_get_time_to_refresh(epaperdispla return self->milliseconds_per_frame - elapsed_time; } -STATIC void epaperdisplay_epaperdisplay_finish_refresh(epaperdisplay_epaperdisplay_obj_t *self) { +static void epaperdisplay_epaperdisplay_finish_refresh(epaperdisplay_epaperdisplay_obj_t *self) { // Actually refresh the display now that all pixel RAM has been updated. send_command_sequence(self, false, self->refresh_sequence, self->refresh_sequence_len); @@ -249,7 +249,7 @@ mp_obj_t common_hal_epaperdisplay_epaperdisplay_get_root_group(epaperdisplay_epa return self->core.current_group; } -STATIC bool epaperdisplay_epaperdisplay_refresh_area(epaperdisplay_epaperdisplay_obj_t *self, const displayio_area_t *area) { +static bool epaperdisplay_epaperdisplay_refresh_area(epaperdisplay_epaperdisplay_obj_t *self, const displayio_area_t *area) { uint16_t buffer_size = 128; // In uint32_ts displayio_area_t clipped; @@ -364,7 +364,7 @@ STATIC bool epaperdisplay_epaperdisplay_refresh_area(epaperdisplay_epaperdisplay return true; } -STATIC bool _clean_area(epaperdisplay_epaperdisplay_obj_t *self) { +static bool _clean_area(epaperdisplay_epaperdisplay_obj_t *self) { uint16_t width = displayio_display_core_get_width(&self->core); uint16_t height = displayio_display_core_get_height(&self->core); diff --git a/shared-module/framebufferio/FramebufferDisplay.c b/shared-module/framebufferio/FramebufferDisplay.c index 348d8c0e646a..c9fe52e0e40b 100644 --- a/shared-module/framebufferio/FramebufferDisplay.c +++ b/shared-module/framebufferio/FramebufferDisplay.c @@ -105,7 +105,7 @@ mp_obj_t common_hal_framebufferio_framebufferdisplay_get_framebuffer(framebuffer return self->framebuffer; } -STATIC const displayio_area_t *_get_refresh_areas(framebufferio_framebufferdisplay_obj_t *self) { +static const displayio_area_t *_get_refresh_areas(framebufferio_framebufferdisplay_obj_t *self) { if (self->core.full_refresh) { self->core.area.next = NULL; return &self->core.area; @@ -116,7 +116,7 @@ STATIC const displayio_area_t *_get_refresh_areas(framebufferio_framebufferdispl } #define MARK_ROW_DIRTY(r) (dirty_row_bitmask[r / 8] |= (1 << (r & 7))) -STATIC bool _refresh_area(framebufferio_framebufferdisplay_obj_t *self, const displayio_area_t *area, uint8_t *dirty_row_bitmask) { +static bool _refresh_area(framebufferio_framebufferdisplay_obj_t *self, const displayio_area_t *area, uint8_t *dirty_row_bitmask) { uint16_t buffer_size = CIRCUITPY_DISPLAY_AREA_BUFFER_SIZE / sizeof(uint32_t); // In uint32_ts displayio_area_t clipped; @@ -210,7 +210,7 @@ STATIC bool _refresh_area(framebufferio_framebufferdisplay_obj_t *self, const di return true; } -STATIC void _refresh_display(framebufferio_framebufferdisplay_obj_t *self) { +static void _refresh_display(framebufferio_framebufferdisplay_obj_t *self) { self->framebuffer_protocol->get_bufinfo(self->framebuffer, &self->bufinfo); if (!self->bufinfo.buf) { return; @@ -297,7 +297,7 @@ void common_hal_framebufferio_framebufferdisplay_set_auto_refresh(framebufferio_ self->auto_refresh = auto_refresh; } -STATIC void _update_backlight(framebufferio_framebufferdisplay_obj_t *self) { +static void _update_backlight(framebufferio_framebufferdisplay_obj_t *self) { // TODO(tannewt): Fade the backlight based on it's existing value and a target value. The target // should account for ambient light when possible. } diff --git a/shared-module/msgpack/__init__.c b/shared-module/msgpack/__init__.c index f686dbc6e3cc..a98fb02de39d 100644 --- a/shared-module/msgpack/__init__.c +++ b/shared-module/msgpack/__init__.c @@ -30,7 +30,7 @@ typedef struct _msgpack_stream_t { int errcode; } msgpack_stream_t; -STATIC msgpack_stream_t get_stream(mp_obj_t stream_obj, int flags) { +static msgpack_stream_t get_stream(mp_obj_t stream_obj, int flags) { const mp_stream_p_t *stream_p = mp_get_stream_raise(stream_obj, flags); msgpack_stream_t s = {stream_obj, stream_p->read, stream_p->write, 0}; return s; @@ -39,7 +39,7 @@ STATIC msgpack_stream_t get_stream(mp_obj_t stream_obj, int flags) { //////////////////////////////////////////////////////////////// // readers -STATIC void read(msgpack_stream_t *s, void *buf, mp_uint_t size) { +static void read(msgpack_stream_t *s, void *buf, mp_uint_t size) { if (size == 0) { return; } @@ -55,13 +55,13 @@ STATIC void read(msgpack_stream_t *s, void *buf, mp_uint_t size) { } } -STATIC uint8_t read1(msgpack_stream_t *s) { +static uint8_t read1(msgpack_stream_t *s) { uint8_t res = 0; read(s, &res, 1); return res; } -STATIC uint16_t read2(msgpack_stream_t *s) { +static uint16_t read2(msgpack_stream_t *s) { uint16_t res = 0; read(s, &res, 2); int n = 1; @@ -71,7 +71,7 @@ STATIC uint16_t read2(msgpack_stream_t *s) { return res; } -STATIC uint32_t read4(msgpack_stream_t *s) { +static uint32_t read4(msgpack_stream_t *s) { uint32_t res = 0; read(s, &res, 4); int n = 1; @@ -81,7 +81,7 @@ STATIC uint32_t read4(msgpack_stream_t *s) { return res; } -STATIC uint64_t read8(msgpack_stream_t *s) { +static uint64_t read8(msgpack_stream_t *s) { uint64_t res = 0; read(s, &res, 8); int n = 1; @@ -91,7 +91,7 @@ STATIC uint64_t read8(msgpack_stream_t *s) { return res; } -STATIC size_t read_size(msgpack_stream_t *s, uint8_t len_index) { +static size_t read_size(msgpack_stream_t *s, uint8_t len_index) { size_t res = 0; switch (len_index) { case 0: @@ -110,7 +110,7 @@ STATIC size_t read_size(msgpack_stream_t *s, uint8_t len_index) { //////////////////////////////////////////////////////////////// // writers -STATIC void write(msgpack_stream_t *s, const void *buf, mp_uint_t size) { +static void write(msgpack_stream_t *s, const void *buf, mp_uint_t size) { mp_uint_t ret = s->write(s->stream_obj, buf, size, &s->errcode); if (s->errcode != 0) { mp_raise_OSError(s->errcode); @@ -120,11 +120,11 @@ STATIC void write(msgpack_stream_t *s, const void *buf, mp_uint_t size) { } } -STATIC void write1(msgpack_stream_t *s, uint8_t obj) { +static void write1(msgpack_stream_t *s, uint8_t obj) { write(s, &obj, 1); } -STATIC void write2(msgpack_stream_t *s, uint16_t obj) { +static void write2(msgpack_stream_t *s, uint16_t obj) { int n = 1; if (*(char *)&n == 1) { obj = __builtin_bswap16(obj); @@ -132,7 +132,7 @@ STATIC void write2(msgpack_stream_t *s, uint16_t obj) { write(s, &obj, 2); } -STATIC void write4(msgpack_stream_t *s, uint32_t obj) { +static void write4(msgpack_stream_t *s, uint32_t obj) { int n = 1; if (*(char *)&n == 1) { obj = __builtin_bswap32(obj); @@ -141,7 +141,7 @@ STATIC void write4(msgpack_stream_t *s, uint32_t obj) { } // compute and write msgpack size code (array structures) -STATIC void write_size(msgpack_stream_t *s, uint8_t code, size_t size) { +static void write_size(msgpack_stream_t *s, uint8_t code, size_t size) { if ((uint8_t)size == size) { write1(s, code); write1(s, size); @@ -160,7 +160,7 @@ STATIC void write_size(msgpack_stream_t *s, uint8_t code, size_t size) { // This is a helper function to iterate through a dictionary. The state of // the iteration is held in *cur and should be initialised with zero for the // first call. Will return NULL when no more elements are available. -STATIC mp_map_elem_t *dict_iter_next(mp_obj_dict_t *dict, size_t *cur) { +static mp_map_elem_t *dict_iter_next(mp_obj_dict_t *dict, size_t *cur) { size_t max = dict->map.alloc; mp_map_t *map = &dict->map; @@ -174,7 +174,7 @@ STATIC mp_map_elem_t *dict_iter_next(mp_obj_dict_t *dict, size_t *cur) { return NULL; } -STATIC void pack_int(msgpack_stream_t *s, int32_t x) { +static void pack_int(msgpack_stream_t *s, int32_t x) { if (x > -32 && x < 128) { write1(s, x); } else if ((int8_t)x == x) { @@ -189,14 +189,14 @@ STATIC void pack_int(msgpack_stream_t *s, int32_t x) { } } -STATIC void pack_bin(msgpack_stream_t *s, const uint8_t *data, size_t len) { +static void pack_bin(msgpack_stream_t *s, const uint8_t *data, size_t len) { write_size(s, 0xc4, len); if (len > 0) { write(s, data, len); } } -STATIC void pack_ext(msgpack_stream_t *s, int8_t code, const uint8_t *data, size_t len) { +static void pack_ext(msgpack_stream_t *s, int8_t code, const uint8_t *data, size_t len) { if (len == 1) { write1(s, 0xd4); } else if (len == 2) { @@ -216,7 +216,7 @@ STATIC void pack_ext(msgpack_stream_t *s, int8_t code, const uint8_t *data, size } } -STATIC void pack_str(msgpack_stream_t *s, const char *str, size_t len) { +static void pack_str(msgpack_stream_t *s, const char *str, size_t len) { if (len < 32) { write1(s, 0b10100000 | (uint8_t)len); } else { @@ -227,7 +227,7 @@ STATIC void pack_str(msgpack_stream_t *s, const char *str, size_t len) { } } -STATIC void pack_array(msgpack_stream_t *s, size_t len) { +static void pack_array(msgpack_stream_t *s, size_t len) { // only writes the header, manually write the objects after calling pack_array! if (len < 16) { write1(s, 0b10010000 | (uint8_t)len); @@ -240,7 +240,7 @@ STATIC void pack_array(msgpack_stream_t *s, size_t len) { } } -STATIC void pack_dict(msgpack_stream_t *s, size_t len) { +static void pack_dict(msgpack_stream_t *s, size_t len) { // only writes the header, manually write the objects after calling pack_array! if (len < 16) { write1(s, 0b10000000 | (uint8_t)len); @@ -253,7 +253,7 @@ STATIC void pack_dict(msgpack_stream_t *s, size_t len) { } } -STATIC void pack(mp_obj_t obj, msgpack_stream_t *s, mp_obj_t default_handler) { +static void pack(mp_obj_t obj, msgpack_stream_t *s, mp_obj_t default_handler) { if (mp_obj_is_small_int(obj)) { // int int32_t x = MP_OBJ_SMALL_INT_VALUE(obj); @@ -324,9 +324,9 @@ STATIC void pack(mp_obj_t obj, msgpack_stream_t *s, mp_obj_t default_handler) { //////////////////////////////////////////////////////////////// // unpacker -STATIC mp_obj_t unpack(msgpack_stream_t *s, mp_obj_t ext_hook, bool use_list); +static mp_obj_t unpack(msgpack_stream_t *s, mp_obj_t ext_hook, bool use_list); -STATIC mp_obj_t unpack_array_elements(msgpack_stream_t *s, size_t size, mp_obj_t ext_hook, bool use_list) { +static mp_obj_t unpack_array_elements(msgpack_stream_t *s, size_t size, mp_obj_t ext_hook, bool use_list) { if (use_list) { mp_obj_list_t *t = MP_OBJ_TO_PTR(mp_obj_new_list(size, NULL)); for (size_t i = 0; i < size; i++) { @@ -342,7 +342,7 @@ STATIC mp_obj_t unpack_array_elements(msgpack_stream_t *s, size_t size, mp_obj_t } } -STATIC mp_obj_t unpack_bytes(msgpack_stream_t *s, size_t size) { +static mp_obj_t unpack_bytes(msgpack_stream_t *s, size_t size) { vstr_t vstr; vstr_init_len(&vstr, size); byte *p = (byte *)vstr.buf; @@ -358,7 +358,7 @@ STATIC mp_obj_t unpack_bytes(msgpack_stream_t *s, size_t size) { return mp_obj_new_bytes_from_vstr(&vstr); } -STATIC mp_obj_t unpack_ext(msgpack_stream_t *s, size_t size, mp_obj_t ext_hook) { +static mp_obj_t unpack_ext(msgpack_stream_t *s, size_t size, mp_obj_t ext_hook) { int8_t code = read1(s); mp_obj_t data = unpack_bytes(s, size); if (ext_hook != mp_const_none) { @@ -371,7 +371,7 @@ STATIC mp_obj_t unpack_ext(msgpack_stream_t *s, size_t size, mp_obj_t ext_hook) } } -STATIC mp_obj_t unpack(msgpack_stream_t *s, mp_obj_t ext_hook, bool use_list) { +static mp_obj_t unpack(msgpack_stream_t *s, mp_obj_t ext_hook, bool use_list) { uint8_t code = read1(s); if (((code & 0b10000000) == 0) || ((code & 0b11100000) == 0b11100000)) { // int diff --git a/shared-module/os/__init__.c b/shared-module/os/__init__.c index fbe720a89c8b..81296db854cd 100644 --- a/shared-module/os/__init__.c +++ b/shared-module/os/__init__.c @@ -20,7 +20,7 @@ // as needed. It does not provide uname. // Version of mp_vfs_lookup_path that takes and returns uPy string objects. -STATIC mp_vfs_mount_t *lookup_path(const char *path, mp_obj_t *path_out) { +static mp_vfs_mount_t *lookup_path(const char *path, mp_obj_t *path_out) { const char *p_out; *path_out = mp_const_none; mp_vfs_mount_t *vfs = mp_vfs_lookup_path(path, &p_out); @@ -32,7 +32,7 @@ STATIC mp_vfs_mount_t *lookup_path(const char *path, mp_obj_t *path_out) { } // Strip off trailing slashes to please underlying libraries -STATIC mp_vfs_mount_t *lookup_dir_path(const char *path, mp_obj_t *path_out) { +static mp_vfs_mount_t *lookup_dir_path(const char *path, mp_obj_t *path_out) { const char *p_out; *path_out = mp_const_none; mp_vfs_mount_t *vfs = mp_vfs_lookup_path(path, &p_out); @@ -46,7 +46,7 @@ STATIC mp_vfs_mount_t *lookup_dir_path(const char *path, mp_obj_t *path_out) { return vfs; } -STATIC mp_obj_t mp_vfs_proxy_call(mp_vfs_mount_t *vfs, qstr meth_name, size_t n_args, const mp_obj_t *args) { +static mp_obj_t mp_vfs_proxy_call(mp_vfs_mount_t *vfs, qstr meth_name, size_t n_args, const mp_obj_t *args) { if (vfs == MP_VFS_NONE) { // mount point not found mp_raise_OSError(MP_ENODEV); diff --git a/shared-module/os/getenv.c b/shared-module/os/getenv.c index 55872eff7a71..39c3b4cee4ac 100644 --- a/shared-module/os/getenv.c +++ b/shared-module/os/getenv.c @@ -28,7 +28,7 @@ #include "extmod/vfs.h" #include "extmod/vfs_fat.h" typedef FIL file_arg; -STATIC bool open_file(const char *name, file_arg *active_file) { +static bool open_file(const char *name, file_arg *active_file) { #if defined(UNIX) nlr_buf_t nlr; if (nlr_push(&nlr) == 0) { @@ -51,27 +51,27 @@ STATIC bool open_file(const char *name, file_arg *active_file) { return result == FR_OK; #endif } -STATIC void close_file(file_arg *active_file) { +static void close_file(file_arg *active_file) { // nothing } -STATIC bool is_eof(file_arg *active_file) { +static bool is_eof(file_arg *active_file) { return f_eof(active_file) || f_error(active_file); } // Return 0 if there is no next character (EOF). -STATIC uint8_t get_next_byte(FIL *active_file) { +static uint8_t get_next_byte(FIL *active_file) { uint8_t character = 0; UINT quantity_read; // If there's an error or quantity_read is 0, character will remain 0. f_read(active_file, &character, 1, &quantity_read); return character; } -STATIC void seek_eof(file_arg *active_file) { +static void seek_eof(file_arg *active_file) { f_lseek(active_file, f_size(active_file)); } // For a fixed buffer, record the required size rather than throwing -STATIC void vstr_add_byte_nonstd(vstr_t *vstr, byte b) { +static void vstr_add_byte_nonstd(vstr_t *vstr, byte b) { if (!vstr->fixed_buf || vstr->alloc > vstr->len) { vstr_add_byte(vstr, b); } else { @@ -80,7 +80,7 @@ STATIC void vstr_add_byte_nonstd(vstr_t *vstr, byte b) { } // For a fixed buffer, record the required size rather than throwing -STATIC void vstr_add_char_nonstd(vstr_t *vstr, unichar c) { +static void vstr_add_char_nonstd(vstr_t *vstr, unichar c) { size_t ulen = (c < 0x80) ? 1 : (c < 0x800) ? 2 : @@ -92,7 +92,7 @@ STATIC void vstr_add_char_nonstd(vstr_t *vstr, unichar c) { } } -STATIC void next_line(file_arg *active_file) { +static void next_line(file_arg *active_file) { uint8_t character; do { character = get_next_byte(active_file); @@ -101,7 +101,7 @@ STATIC void next_line(file_arg *active_file) { // Discard whitespace, except for newlines, returning the next character after the whitespace. // Return 0 if there is no next character (EOF). -STATIC uint8_t consume_whitespace(file_arg *active_file) { +static uint8_t consume_whitespace(file_arg *active_file) { uint8_t character; do { character = get_next_byte(active_file); @@ -115,7 +115,7 @@ STATIC uint8_t consume_whitespace(file_arg *active_file) { // If result is true, the key matches and file pointer is pointing just after the "=". // If the result is false, the key does NOT match and the file pointer is // pointing at the start of the next line, if any -STATIC bool key_matches(file_arg *active_file, const char *key) { +static bool key_matches(file_arg *active_file, const char *key) { uint8_t character; character = consume_whitespace(active_file); if (character == '[' || character == 0) { @@ -151,7 +151,7 @@ STATIC bool key_matches(file_arg *active_file, const char *key) { return true; } -STATIC os_getenv_err_t read_unicode_escape(file_arg *active_file, int sz, vstr_t *buf) { +static os_getenv_err_t read_unicode_escape(file_arg *active_file, int sz, vstr_t *buf) { char hex_buf[sz + 1]; for (int i = 0; i < sz; i++) { hex_buf[i] = get_next_byte(active_file); @@ -170,7 +170,7 @@ STATIC os_getenv_err_t read_unicode_escape(file_arg *active_file, int sz, vstr_t } // Read a quoted string -STATIC os_getenv_err_t read_string_value(file_arg *active_file, vstr_t *buf) { +static os_getenv_err_t read_string_value(file_arg *active_file, vstr_t *buf) { while (true) { int character = get_next_byte(active_file); switch (character) { @@ -236,7 +236,7 @@ STATIC os_getenv_err_t read_string_value(file_arg *active_file, vstr_t *buf) { } // Read a numeric value (non-quoted value) as a string -STATIC os_getenv_err_t read_bare_value(file_arg *active_file, vstr_t *buf, int first_character) { +static os_getenv_err_t read_bare_value(file_arg *active_file, vstr_t *buf, int first_character) { int character = first_character; while (true) { switch (character) { @@ -253,7 +253,7 @@ STATIC os_getenv_err_t read_bare_value(file_arg *active_file, vstr_t *buf, int f } } -STATIC mp_int_t read_value(file_arg *active_file, vstr_t *buf, bool *quoted) { +static mp_int_t read_value(file_arg *active_file, vstr_t *buf, bool *quoted) { uint8_t character; character = consume_whitespace(active_file); *quoted = (character == '"'); @@ -265,7 +265,7 @@ STATIC mp_int_t read_value(file_arg *active_file, vstr_t *buf, bool *quoted) { } } -STATIC os_getenv_err_t os_getenv_vstr(const char *path, const char *key, vstr_t *buf, bool *quoted) { +static os_getenv_err_t os_getenv_vstr(const char *path, const char *key, vstr_t *buf, bool *quoted) { file_arg active_file; if (!open_file(path, &active_file)) { return GETENV_ERR_OPEN; @@ -282,7 +282,7 @@ STATIC os_getenv_err_t os_getenv_vstr(const char *path, const char *key, vstr_t return result; } -STATIC os_getenv_err_t os_getenv_buf_terminated(const char *key, char *value, size_t value_len, bool *quoted) { +static os_getenv_err_t os_getenv_buf_terminated(const char *key, char *value, size_t value_len, bool *quoted) { vstr_t buf; vstr_init_fixed_buf(&buf, value_len, value); os_getenv_err_t result = os_getenv_vstr(GETENV_PATH, key, &buf, quoted); @@ -297,7 +297,7 @@ STATIC os_getenv_err_t os_getenv_buf_terminated(const char *key, char *value, si return result; } -STATIC void print_dont_raise(const mp_obj_type_t *exc_type, mp_rom_error_text_t fmt, ...) { +static void print_dont_raise(const mp_obj_type_t *exc_type, mp_rom_error_text_t fmt, ...) { va_list argptr; va_start(argptr, fmt); mp_vcprintf(&mp_plat_print, fmt, argptr); @@ -305,7 +305,7 @@ STATIC void print_dont_raise(const mp_obj_type_t *exc_type, mp_rom_error_text_t va_end(argptr); } -STATIC void handle_getenv_error(os_getenv_err_t error, void (*handle)(const mp_obj_type_t *exc_type, mp_rom_error_text_t fmt, ...)) { +static void handle_getenv_error(os_getenv_err_t error, void (*handle)(const mp_obj_type_t *exc_type, mp_rom_error_text_t fmt, ...)) { if (error == GETENV_OK) { return; } @@ -340,14 +340,14 @@ STATIC void handle_getenv_error(os_getenv_err_t error, void (*handle)(const mp_o } } -STATIC void common_hal_os_getenv_showerr(const char *key, os_getenv_err_t result) { +static void common_hal_os_getenv_showerr(const char *key, os_getenv_err_t result) { if (result != GETENV_OK && result != GETENV_ERR_OPEN && result != GETENV_ERR_NOT_FOUND) { mp_cprintf(&mp_plat_print, MP_ERROR_TEXT("An error occurred while retrieving '%s':\n"), key); handle_getenv_error(result, print_dont_raise); } } -STATIC +static os_getenv_err_t common_hal_os_getenv_str_inner(const char *key, char *value, size_t value_len) { bool quoted; os_getenv_err_t result = os_getenv_buf_terminated(key, value, value_len, "ed); @@ -385,7 +385,7 @@ mp_obj_t common_hal_os_getenv(const char *key, mp_obj_t default_) { return common_hal_os_getenv_path(GETENV_PATH, key, default_); } -STATIC os_getenv_err_t common_hal_os_getenv_int_inner(const char *key, mp_int_t *value) { +static os_getenv_err_t common_hal_os_getenv_int_inner(const char *key, mp_int_t *value) { char buf[16]; bool quoted; os_getenv_err_t result = os_getenv_buf_terminated(key, buf, sizeof(buf), "ed); diff --git a/shared-module/qrio/QRDecoder.c b/shared-module/qrio/QRDecoder.c index 73f3a052e166..f3559f72c374 100644 --- a/shared-module/qrio/QRDecoder.c +++ b/shared-module/qrio/QRDecoder.c @@ -42,7 +42,7 @@ void shared_module_qrio_qrdecoder_set_width(qrdecoder_qrdecoder_obj_t *self, int } } -STATIC mp_obj_t data_type(int type) { +static mp_obj_t data_type(int type) { switch (type) { case QUIRC_ECI_ISO_8859_1: return MP_OBJ_NEW_QSTR(MP_QSTR_iso_8859_hyphen_1); @@ -78,7 +78,7 @@ STATIC mp_obj_t data_type(int type) { return mp_obj_new_int(type); } -STATIC void quirc_fill_buffer(qrdecoder_qrdecoder_obj_t *self, void *buf, qrio_pixel_policy_t policy) { +static void quirc_fill_buffer(qrdecoder_qrdecoder_obj_t *self, void *buf, qrio_pixel_policy_t policy) { int width, height; uint8_t *framebuffer = quirc_begin(self->quirc, &width, &height); uint8_t *src = buf; diff --git a/shared-module/random/__init__.c b/shared-module/random/__init__.c index 9a6e050850ae..26d11313962f 100644 --- a/shared-module/random/__init__.c +++ b/shared-module/random/__init__.c @@ -18,10 +18,10 @@ // http://www.literatecode.com/yasmarang // Public Domain -STATIC uint32_t yasmarang_pad = 0xeda4baba, yasmarang_n = 69, yasmarang_d = 233; -STATIC uint8_t yasmarang_dat = 0; +static uint32_t yasmarang_pad = 0xeda4baba, yasmarang_n = 69, yasmarang_d = 233; +static uint8_t yasmarang_dat = 0; -STATIC uint32_t yasmarang(void) { +static uint32_t yasmarang(void) { if (yasmarang_pad == 0xeda4baba) { if (!common_hal_os_urandom((uint8_t *)&yasmarang_pad, sizeof(uint32_t))) { yasmarang_pad = common_hal_time_monotonic_ms() & 0xffffffff; @@ -40,7 +40,7 @@ STATIC uint32_t yasmarang(void) { // returns an unsigned integer below the given argument // n must not be zero -STATIC uint32_t yasmarang_randbelow(uint32_t n) { +static uint32_t yasmarang_randbelow(uint32_t n) { uint32_t mask = 1; while ((n & mask) < n) { mask = (mask << 1) | 1; @@ -80,7 +80,7 @@ mp_int_t shared_modules_random_randrange(mp_int_t start, mp_int_t stop, mp_int_t } // returns a number in the range [0..1) using Yasmarang to fill in the fraction bits -STATIC mp_float_t yasmarang_float(void) { +static mp_float_t yasmarang_float(void) { #if MICROPY_FLOAT_IMPL == MICROPY_FLOAT_IMPL_DOUBLE typedef uint64_t mp_float_int_t; #elif MICROPY_FLOAT_IMPL == MICROPY_FLOAT_IMPL_FLOAT diff --git a/shared-module/rgbmatrix/RGBMatrix.c b/shared-module/rgbmatrix/RGBMatrix.c index 86028b358e82..db14c6a6b0dd 100644 --- a/shared-module/rgbmatrix/RGBMatrix.c +++ b/shared-module/rgbmatrix/RGBMatrix.c @@ -22,7 +22,7 @@ extern Protomatter_core *_PM_protoPtr; -STATIC void common_hal_rgbmatrix_rgbmatrix_construct1(rgbmatrix_rgbmatrix_obj_t *self, mp_obj_t framebuffer); +static void common_hal_rgbmatrix_rgbmatrix_construct1(rgbmatrix_rgbmatrix_obj_t *self, mp_obj_t framebuffer); void common_hal_rgbmatrix_rgbmatrix_construct(rgbmatrix_rgbmatrix_obj_t *self, int width, int bit_depth, uint8_t rgb_count, uint8_t *rgb_pins, uint8_t addr_count, uint8_t *addr_pins, uint8_t clock_pin, uint8_t latch_pin, uint8_t oe_pin, bool doublebuffer, mp_obj_t framebuffer, int8_t tile, bool serpentine, void *timer) { self->width = width; @@ -49,7 +49,7 @@ void common_hal_rgbmatrix_rgbmatrix_construct(rgbmatrix_rgbmatrix_obj_t *self, i common_hal_rgbmatrix_rgbmatrix_construct1(self, framebuffer); } -STATIC void common_hal_rgbmatrix_rgbmatrix_construct1(rgbmatrix_rgbmatrix_obj_t *self, mp_obj_t framebuffer) { +static void common_hal_rgbmatrix_rgbmatrix_construct1(rgbmatrix_rgbmatrix_obj_t *self, mp_obj_t framebuffer) { if (framebuffer != mp_const_none) { mp_get_buffer_raise(self->framebuffer, &self->bufinfo, MP_BUFFER_READ); if (mp_get_buffer(self->framebuffer, &self->bufinfo, MP_BUFFER_RW)) { @@ -114,21 +114,21 @@ STATIC void common_hal_rgbmatrix_rgbmatrix_construct1(rgbmatrix_rgbmatrix_obj_t self->paused = 0; } -STATIC void free_pin(uint8_t *pin) { +static void free_pin(uint8_t *pin) { if (*pin != COMMON_HAL_MCU_NO_PIN) { common_hal_mcu_pin_reset_number(*pin); } *pin = COMMON_HAL_MCU_NO_PIN; } -STATIC void free_pin_seq(uint8_t *seq, int count) { +static void free_pin_seq(uint8_t *seq, int count) { for (int i = 0; i < count; i++) { free_pin(&seq[i]); } } extern int pm_row_count; -STATIC void common_hal_rgbmatrix_rgbmatrix_deinit1(rgbmatrix_rgbmatrix_obj_t *self) { +static void common_hal_rgbmatrix_rgbmatrix_deinit1(rgbmatrix_rgbmatrix_obj_t *self) { common_hal_rgbmatrix_timer_disable(self->timer); if (_PM_protoPtr == &self->protomatter) { diff --git a/shared-module/sdcardio/SDCard.c b/shared-module/sdcardio/SDCard.c index 38c2a59935d3..48df8823f962 100644 --- a/shared-module/sdcardio/SDCard.c +++ b/shared-module/sdcardio/SDCard.c @@ -32,7 +32,7 @@ #define TOKEN_STOP_TRAN (0xFD) #define TOKEN_DATA (0xFE) -STATIC bool lock_and_configure_bus(sdcardio_sdcard_obj_t *self) { +static bool lock_and_configure_bus(sdcardio_sdcard_obj_t *self) { if (!common_hal_busio_spi_try_lock(self->bus)) { return false; } @@ -41,13 +41,13 @@ STATIC bool lock_and_configure_bus(sdcardio_sdcard_obj_t *self) { return true; } -STATIC void lock_bus_or_throw(sdcardio_sdcard_obj_t *self) { +static void lock_bus_or_throw(sdcardio_sdcard_obj_t *self) { if (!lock_and_configure_bus(self)) { mp_raise_OSError(EAGAIN); } } -STATIC void clock_card(sdcardio_sdcard_obj_t *self, int bytes) { +static void clock_card(sdcardio_sdcard_obj_t *self, int bytes) { uint8_t buf[] = {0xff}; common_hal_digitalio_digitalinout_set_value(&self->cs, true); for (int i = 0; i < bytes; i++) { @@ -55,7 +55,7 @@ STATIC void clock_card(sdcardio_sdcard_obj_t *self, int bytes) { } } -STATIC void extraclock_and_unlock_bus(sdcardio_sdcard_obj_t *self) { +static void extraclock_and_unlock_bus(sdcardio_sdcard_obj_t *self) { clock_card(self, 1); common_hal_busio_spi_unlock(self->bus); } @@ -76,7 +76,7 @@ static uint8_t CRC7(const uint8_t *data, uint8_t n) { } #define READY_TIMEOUT_NS (300 * 1000 * 1000) // 300ms -STATIC int wait_for_ready(sdcardio_sdcard_obj_t *self) { +static int wait_for_ready(sdcardio_sdcard_obj_t *self) { uint64_t deadline = common_hal_time_monotonic_ns() + READY_TIMEOUT_NS; while (common_hal_time_monotonic_ns() < deadline) { uint8_t b; @@ -89,7 +89,7 @@ STATIC int wait_for_ready(sdcardio_sdcard_obj_t *self) { } // Note: this is never called while "in cmd25" (in fact, it's only used by `exit_cmd25`) -STATIC bool cmd_nodata(sdcardio_sdcard_obj_t *self, int cmd, int response) { +static bool cmd_nodata(sdcardio_sdcard_obj_t *self, int cmd, int response) { uint8_t cmdbuf[2] = {cmd, 0xff}; assert(!self->in_cmd25); @@ -107,7 +107,7 @@ STATIC bool cmd_nodata(sdcardio_sdcard_obj_t *self, int cmd, int response) { } -STATIC int exit_cmd25(sdcardio_sdcard_obj_t *self) { +static int exit_cmd25(sdcardio_sdcard_obj_t *self) { if (self->in_cmd25) { DEBUG_PRINT("exit cmd25\n"); self->in_cmd25 = false; @@ -117,7 +117,7 @@ STATIC int exit_cmd25(sdcardio_sdcard_obj_t *self) { } // In Python API, defaults are response=None, data_block=True, wait=True -STATIC int cmd(sdcardio_sdcard_obj_t *self, int cmd, int arg, void *response_buf, size_t response_len, bool data_block, bool wait) { +static int cmd(sdcardio_sdcard_obj_t *self, int cmd, int arg, void *response_buf, size_t response_len, bool data_block, bool wait) { int r = exit_cmd25(self); if (r < 0) { return r; @@ -177,11 +177,11 @@ STATIC int cmd(sdcardio_sdcard_obj_t *self, int cmd, int arg, void *response_buf return cmdbuf[0]; } -STATIC int block_cmd(sdcardio_sdcard_obj_t *self, int cmd_, int block, void *response_buf, size_t response_len, bool data_block, bool wait) { +static int block_cmd(sdcardio_sdcard_obj_t *self, int cmd_, int block, void *response_buf, size_t response_len, bool data_block, bool wait) { return cmd(self, cmd_, block * self->cdv, response_buf, response_len, true, true); } -STATIC mp_rom_error_text_t init_card_v1(sdcardio_sdcard_obj_t *self) { +static mp_rom_error_text_t init_card_v1(sdcardio_sdcard_obj_t *self) { for (int i = 0; i < CMD_TIMEOUT; i++) { if (cmd(self, 41, 0, NULL, 0, true, true) == 0) { return NULL; @@ -190,7 +190,7 @@ STATIC mp_rom_error_text_t init_card_v1(sdcardio_sdcard_obj_t *self) { return MP_ERROR_TEXT("timeout waiting for v1 card"); } -STATIC mp_rom_error_text_t init_card_v2(sdcardio_sdcard_obj_t *self) { +static mp_rom_error_text_t init_card_v2(sdcardio_sdcard_obj_t *self) { for (int i = 0; i < CMD_TIMEOUT; i++) { uint8_t ocr[4]; common_hal_time_delay_ms(50); @@ -207,7 +207,7 @@ STATIC mp_rom_error_text_t init_card_v2(sdcardio_sdcard_obj_t *self) { return MP_ERROR_TEXT("timeout waiting for v2 card"); } -STATIC mp_rom_error_text_t init_card(sdcardio_sdcard_obj_t *self) { +static mp_rom_error_text_t init_card(sdcardio_sdcard_obj_t *self) { clock_card(self, 10); common_hal_digitalio_digitalinout_set_value(&self->cs, false); @@ -316,7 +316,7 @@ void common_hal_sdcardio_sdcard_deinit(sdcardio_sdcard_obj_t *self) { common_hal_digitalio_digitalinout_deinit(&self->cs); } -STATIC void common_hal_sdcardio_check_for_deinit(sdcardio_sdcard_obj_t *self) { +static void common_hal_sdcardio_check_for_deinit(sdcardio_sdcard_obj_t *self) { if (!self->bus) { raise_deinited_error(); } @@ -327,7 +327,7 @@ int common_hal_sdcardio_sdcard_get_blockcount(sdcardio_sdcard_obj_t *self) { return self->sectors; } -STATIC int readinto(sdcardio_sdcard_obj_t *self, void *buf, size_t size) { +static int readinto(sdcardio_sdcard_obj_t *self, void *buf, size_t size) { uint8_t aux[2] = {0, 0}; while (aux[0] != 0xfe) { common_hal_busio_spi_read(self->bus, aux, 1, 0xff); @@ -388,7 +388,7 @@ int common_hal_sdcardio_sdcard_readblocks(sdcardio_sdcard_obj_t *self, uint32_t return sdcardio_sdcard_readblocks(MP_OBJ_FROM_PTR(self), buf->buf, start_block, buf->len / 512); } -STATIC int _write(sdcardio_sdcard_obj_t *self, uint8_t token, void *buf, size_t size) { +static int _write(sdcardio_sdcard_obj_t *self, uint8_t token, void *buf, size_t size) { wait_for_ready(self); uint8_t cmd[2]; diff --git a/shared-module/sharpdisplay/SharpMemoryFramebuffer.c b/shared-module/sharpdisplay/SharpMemoryFramebuffer.c index 04846723f5b8..3c6eaf065df7 100644 --- a/shared-module/sharpdisplay/SharpMemoryFramebuffer.c +++ b/shared-module/sharpdisplay/SharpMemoryFramebuffer.c @@ -18,7 +18,7 @@ #define JDI_BIT_WRITECMD_LSB (0x90) #define SHARPMEM_BIT_VCOM_LSB (0x40) -STATIC uint8_t bitrev(uint8_t n) { +static uint8_t bitrev(uint8_t n) { uint8_t r = 0; for (int i = 0; i < 8; i++) {r |= ((n >> i) & 1) << (7 - i); } @@ -33,7 +33,7 @@ int common_hal_sharpdisplay_framebuffer_get_height(sharpdisplay_framebuffer_obj_ return self->height; } -STATIC int common_hal_sharpdisplay_framebuffer_get_row_stride(sharpdisplay_framebuffer_obj_t *self) { +static int common_hal_sharpdisplay_framebuffer_get_row_stride(sharpdisplay_framebuffer_obj_t *self) { if (self->jdi_display) { return (self->width + 1) / 2 + 2; } else { @@ -41,15 +41,15 @@ STATIC int common_hal_sharpdisplay_framebuffer_get_row_stride(sharpdisplay_frame } } -STATIC int common_hal_sharpdisplay_framebuffer_get_first_pixel_offset(sharpdisplay_framebuffer_obj_t *self) { +static int common_hal_sharpdisplay_framebuffer_get_first_pixel_offset(sharpdisplay_framebuffer_obj_t *self) { return 2; } -STATIC bool common_hal_sharpdisplay_framebuffer_get_reverse_pixels_in_byte(sharpdisplay_framebuffer_obj_t *self) { +static bool common_hal_sharpdisplay_framebuffer_get_reverse_pixels_in_byte(sharpdisplay_framebuffer_obj_t *self) { return true; } -STATIC bool common_hal_sharpdisplay_framebuffer_get_pixels_in_byte_share_row(sharpdisplay_framebuffer_obj_t *self) { +static bool common_hal_sharpdisplay_framebuffer_get_pixels_in_byte_share_row(sharpdisplay_framebuffer_obj_t *self) { return true; } @@ -139,7 +139,7 @@ void common_hal_sharpdisplay_framebuffer_construct( common_hal_sharpdisplay_framebuffer_get_bufinfo(self, NULL); } -STATIC void common_hal_sharpdisplay_framebuffer_swapbuffers(sharpdisplay_framebuffer_obj_t *self, uint8_t *dirty_row_bitmask) { +static void common_hal_sharpdisplay_framebuffer_swapbuffers(sharpdisplay_framebuffer_obj_t *self, uint8_t *dirty_row_bitmask) { // claim SPI bus if (!common_hal_busio_spi_try_lock(self->bus)) { return; @@ -177,57 +177,57 @@ STATIC void common_hal_sharpdisplay_framebuffer_swapbuffers(sharpdisplay_framebu self->full_refresh = false; } -STATIC void sharpdisplay_framebuffer_deinit(mp_obj_t self_in) { +static void sharpdisplay_framebuffer_deinit(mp_obj_t self_in) { sharpdisplay_framebuffer_obj_t *self = self_in; common_hal_sharpdisplay_framebuffer_deinit(self); } -STATIC void sharpdisplay_framebuffer_get_bufinfo(mp_obj_t self_in, mp_buffer_info_t *bufinfo) { +static void sharpdisplay_framebuffer_get_bufinfo(mp_obj_t self_in, mp_buffer_info_t *bufinfo) { sharpdisplay_framebuffer_obj_t *self = self_in; common_hal_sharpdisplay_framebuffer_get_bufinfo(self, bufinfo); } -STATIC int sharpdisplay_framebuffer_get_color_depth(mp_obj_t self_in) { +static int sharpdisplay_framebuffer_get_color_depth(mp_obj_t self_in) { sharpdisplay_framebuffer_obj_t *self = MP_OBJ_TO_PTR(self_in); return self->jdi_display ? 4 : 1; } -STATIC bool sharpdisplay_framebuffer_get_grayscale(mp_obj_t self_in) { +static bool sharpdisplay_framebuffer_get_grayscale(mp_obj_t self_in) { sharpdisplay_framebuffer_obj_t *self = MP_OBJ_TO_PTR(self_in); return !self->jdi_display; } -STATIC int sharpdisplay_framebuffer_get_height(mp_obj_t self_in) { +static int sharpdisplay_framebuffer_get_height(mp_obj_t self_in) { sharpdisplay_framebuffer_obj_t *self = self_in; return common_hal_sharpdisplay_framebuffer_get_height(self); } -STATIC int sharpdisplay_framebuffer_get_width(mp_obj_t self_in) { +static int sharpdisplay_framebuffer_get_width(mp_obj_t self_in) { sharpdisplay_framebuffer_obj_t *self = self_in; return common_hal_sharpdisplay_framebuffer_get_width(self); } -STATIC int sharpdisplay_framebuffer_get_first_pixel_offset(mp_obj_t self_in) { +static int sharpdisplay_framebuffer_get_first_pixel_offset(mp_obj_t self_in) { sharpdisplay_framebuffer_obj_t *self = self_in; return common_hal_sharpdisplay_framebuffer_get_first_pixel_offset(self); } -STATIC bool sharpdisplay_framebuffer_get_pixels_in_byte_share_row(mp_obj_t self_in) { +static bool sharpdisplay_framebuffer_get_pixels_in_byte_share_row(mp_obj_t self_in) { sharpdisplay_framebuffer_obj_t *self = self_in; return common_hal_sharpdisplay_framebuffer_get_pixels_in_byte_share_row(self); } -STATIC bool sharpdisplay_framebuffer_get_reverse_pixels_in_byte(mp_obj_t self_in) { +static bool sharpdisplay_framebuffer_get_reverse_pixels_in_byte(mp_obj_t self_in) { sharpdisplay_framebuffer_obj_t *self = self_in; return common_hal_sharpdisplay_framebuffer_get_reverse_pixels_in_byte(self); } -STATIC int sharpdisplay_framebuffer_get_row_stride(mp_obj_t self_in) { +static int sharpdisplay_framebuffer_get_row_stride(mp_obj_t self_in) { sharpdisplay_framebuffer_obj_t *self = self_in; return common_hal_sharpdisplay_framebuffer_get_row_stride(self); } -STATIC void sharpdisplay_framebuffer_swapbuffers(mp_obj_t self_in, uint8_t *dirty_row_bitmask) { +static void sharpdisplay_framebuffer_swapbuffers(mp_obj_t self_in, uint8_t *dirty_row_bitmask) { sharpdisplay_framebuffer_obj_t *self = self_in; common_hal_sharpdisplay_framebuffer_swapbuffers(self, dirty_row_bitmask); } diff --git a/shared-module/ssl/SSLSocket.c b/shared-module/ssl/SSLSocket.c index 71f671529cde..9303964af719 100644 --- a/shared-module/ssl/SSLSocket.c +++ b/shared-module/ssl/SSLSocket.c @@ -32,7 +32,7 @@ #ifdef MBEDTLS_DEBUG_C #include "mbedtls/debug.h" -STATIC void mbedtls_debug(void *ctx, int level, const char *file, int line, const char *str) { +static void mbedtls_debug(void *ctx, int level, const char *file, int line, const char *str) { (void)ctx; (void)level; mp_printf(&mp_plat_print, "DBG:%s:%04d: %s\n", file, line, str); @@ -42,7 +42,7 @@ STATIC void mbedtls_debug(void *ctx, int level, const char *file, int line, cons #define DEBUG_PRINT(...) do {} while (0) #endif -STATIC NORETURN void mbedtls_raise_error(int err) { +static NORETURN void mbedtls_raise_error(int err) { // _mbedtls_ssl_send and _mbedtls_ssl_recv (below) turn positive error codes from the // underlying socket into negative codes to pass them through mbedtls. Here we turn them // positive again so they get interpreted as the OSError they really are. The @@ -90,7 +90,7 @@ STATIC NORETURN void mbedtls_raise_error(int err) { // it is not OK to exit them by raising an exception (nlr_jump'ing through // foreign code is not permitted). Instead, preserve the error number of any OSError // and turn anything else into -MP_EINVAL. -STATIC int call_method_errno(size_t n_args, const mp_obj_t *args) { +static int call_method_errno(size_t n_args, const mp_obj_t *args) { nlr_buf_t nlr; mp_int_t result = -MP_EINVAL; if (nlr_push(&nlr) == 0) { @@ -168,7 +168,7 @@ static mp_obj_t ssl_socket_accept(ssl_sslsocket_obj_t *self) { return mp_call_method_n_kw(0, 0, self->accept_args); } -STATIC int _mbedtls_ssl_send(void *ctx, const byte *buf, size_t len) { +static int _mbedtls_ssl_send(void *ctx, const byte *buf, size_t len) { ssl_sslsocket_obj_t *self = (ssl_sslsocket_obj_t *)ctx; mp_int_t out_sz = ssl_socket_send(self, buf, len); @@ -183,7 +183,7 @@ STATIC int _mbedtls_ssl_send(void *ctx, const byte *buf, size_t len) { return out_sz; } -STATIC int _mbedtls_ssl_recv(void *ctx, byte *buf, size_t len) { +static int _mbedtls_ssl_recv(void *ctx, byte *buf, size_t len) { ssl_sslsocket_obj_t *self = (ssl_sslsocket_obj_t *)ctx; mp_int_t out_sz = ssl_socket_recv_into(self, buf, len); @@ -376,7 +376,7 @@ void common_hal_ssl_sslsocket_close(ssl_sslsocket_obj_t *self) { mbedtls_entropy_free(&self->entropy); } -STATIC void do_handshake(ssl_sslsocket_obj_t *self) { +static void do_handshake(ssl_sslsocket_obj_t *self) { int ret; while ((ret = mbedtls_ssl_handshake(&self->ssl)) != 0) { if (ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE) { diff --git a/shared-module/storage/__init__.c b/shared-module/storage/__init__.c index e859d4109418..12486aff752f 100644 --- a/shared-module/storage/__init__.c +++ b/shared-module/storage/__init__.c @@ -131,7 +131,7 @@ bool common_hal_storage_enable_usb_drive(void) { } #endif // CIRCUITPY_USB_MSC -STATIC mp_obj_t mp_vfs_proxy_call(mp_vfs_mount_t *vfs, qstr meth_name, size_t n_args, const mp_obj_t *args) { +static mp_obj_t mp_vfs_proxy_call(mp_vfs_mount_t *vfs, qstr meth_name, size_t n_args, const mp_obj_t *args) { if (vfs == MP_VFS_NONE) { // mount point not found mp_raise_OSError(MP_ENODEV); @@ -223,7 +223,7 @@ void common_hal_storage_umount_object(mp_obj_t vfs_obj) { mp_vfs_proxy_call(vfs, MP_QSTR_umount, 0, NULL); } -STATIC mp_obj_t storage_object_from_path(const char *mount_path) { +static mp_obj_t storage_object_from_path(const char *mount_path) { for (mp_vfs_mount_t **vfsp = &MP_STATE_VM(vfs_mount_table); *vfsp != NULL; vfsp = &(*vfsp)->next) { if (strcmp(mount_path, (*vfsp)->str) == 0) { return (*vfsp)->obj; diff --git a/shared-module/struct/__init__.c b/shared-module/struct/__init__.c index 57468044e429..715b50430211 100644 --- a/shared-module/struct/__init__.c +++ b/shared-module/struct/__init__.c @@ -13,7 +13,7 @@ #include "py/parsenum.h" #include "shared-bindings/struct/__init__.h" -STATIC void struct_validate_format(char fmt) { +static void struct_validate_format(char fmt) { #if MICROPY_NONSTANDARD_TYPECODES if (fmt == 'S' || fmt == 'O') { mp_raise_RuntimeError(MP_ERROR_TEXT("'S' and 'O' are not supported format types")); @@ -21,7 +21,7 @@ STATIC void struct_validate_format(char fmt) { #endif } -STATIC char get_fmt_type(const char **fmt) { +static char get_fmt_type(const char **fmt) { char t = **fmt; switch (t) { case '!': @@ -40,7 +40,7 @@ STATIC char get_fmt_type(const char **fmt) { return t; } -STATIC mp_uint_t get_fmt_num(const char **p) { +static mp_uint_t get_fmt_num(const char **p) { const char *num = *p; uint len = 1; while (unichar_isdigit(*++num)) { @@ -51,7 +51,7 @@ STATIC mp_uint_t get_fmt_num(const char **p) { return val; } -STATIC mp_uint_t calcsize_items(const char *fmt) { +static mp_uint_t calcsize_items(const char *fmt) { mp_uint_t cnt = 0; while (*fmt) { int num = 1; diff --git a/shared-module/synthio/Biquad.c b/shared-module/synthio/Biquad.c index f821d583812c..366d51645522 100644 --- a/shared-module/synthio/Biquad.c +++ b/shared-module/synthio/Biquad.c @@ -75,7 +75,7 @@ mp_obj_t common_hal_synthio_new_bpf(mp_float_t w0, mp_float_t Q) { } #define BIQUAD_SHIFT (15) -STATIC int32_t biquad_scale_arg_obj(mp_obj_t arg) { +static int32_t biquad_scale_arg_obj(mp_obj_t arg) { return (int32_t)MICROPY_FLOAT_C_FUN(round)(MICROPY_FLOAT_C_FUN(ldexp)(mp_obj_get_float(arg), BIQUAD_SHIFT)); } void synthio_biquad_filter_assign(biquad_filter_state *st, mp_obj_t biquad_obj) { diff --git a/shared-module/synthio/MidiTrack.c b/shared-module/synthio/MidiTrack.c index 9c70bbb009e0..2391a8bb7c7c 100644 --- a/shared-module/synthio/MidiTrack.c +++ b/shared-module/synthio/MidiTrack.c @@ -8,12 +8,12 @@ #include "shared-bindings/synthio/MidiTrack.h" -STATIC void record_midi_stream_error(synthio_miditrack_obj_t *self) { +static void record_midi_stream_error(synthio_miditrack_obj_t *self) { self->error_location = self->pos; self->pos = self->track.len; } -STATIC mp_obj_t parse_note(synthio_miditrack_obj_t *self) { +static mp_obj_t parse_note(synthio_miditrack_obj_t *self) { uint8_t *buffer = self->track.buf; size_t len = self->track.len; if (self->pos + 1 >= len) { @@ -84,7 +84,7 @@ static void decode_until_pause(synthio_miditrack_obj_t *self) { } while (self->pos < len && self->synth.span.dur == 0); } -STATIC void start_parse(synthio_miditrack_obj_t *self) { +static void start_parse(synthio_miditrack_obj_t *self) { self->pos = 0; self->error_location = -1; self->synth.span.dur = decode_duration(self); diff --git a/shared-module/synthio/Note.c b/shared-module/synthio/Note.c index 724ca8c41183..49dfbb7f429d 100644 --- a/shared-module/synthio/Note.c +++ b/shared-module/synthio/Note.c @@ -176,9 +176,9 @@ void synthio_note_start(synthio_note_obj_t *self, int32_t sample_rate) { #define BEND_SCALE (32768) #define BEND_OFFSET (BEND_SCALE) -STATIC uint16_t pitch_bend_table[] = { 0, 1948, 4013, 6200, 8517, 10972, 13573, 16329, 19248, 22341, 25618, 29090, 32768 }; +static uint16_t pitch_bend_table[] = { 0, 1948, 4013, 6200, 8517, 10972, 13573, 16329, 19248, 22341, 25618, 29090, 32768 }; -STATIC uint32_t pitch_bend(uint32_t frequency_scaled, int32_t bend_value) { +static uint32_t pitch_bend(uint32_t frequency_scaled, int32_t bend_value) { int octave = bend_value >> 15; bend_value &= 0x7fff; uint32_t bend_value_semitone = (uint32_t)bend_value * 24; // 65536/semitone diff --git a/shared-module/synthio/Synthesizer.c b/shared-module/synthio/Synthesizer.c index 44d6aa93c576..e4b343f6ba21 100644 --- a/shared-module/synthio/Synthesizer.c +++ b/shared-module/synthio/Synthesizer.c @@ -80,11 +80,11 @@ void common_hal_synthio_synthesizer_release_all(synthio_synthesizer_obj_t *self) } } -STATIC bool is_note(mp_obj_t note_in) { +static bool is_note(mp_obj_t note_in) { return mp_obj_is_small_int(note_in) || mp_obj_is_type(note_in, &synthio_note_type); } -STATIC mp_obj_t validate_note(mp_obj_t note_in) { +static mp_obj_t validate_note(mp_obj_t note_in) { if (mp_obj_is_small_int(note_in)) { mp_arg_validate_int_range(mp_obj_get_int(note_in), 0, 127, MP_QSTR_note); } else { diff --git a/shared-module/synthio/__init__.c b/shared-module/synthio/__init__.c index e86d737a02e7..630c3de86988 100644 --- a/shared-module/synthio/__init__.c +++ b/shared-module/synthio/__init__.c @@ -16,13 +16,13 @@ mp_float_t synthio_global_rate_scale; uint8_t synthio_global_tick; -STATIC const int16_t square_wave[] = {-32768, 32767}; +static const int16_t square_wave[] = {-32768, 32767}; -STATIC const uint16_t notes[] = {8372, 8870, 9397, 9956, 10548, 11175, 11840, +static const uint16_t notes[] = {8372, 8870, 9397, 9956, 10548, 11175, 11840, 12544, 13290, 14080, 14917, 15804}; // 9th octave -STATIC int64_t round_float_to_int64(mp_float_t f) { +static int64_t round_float_to_int64(mp_float_t f) { return (int64_t)(f + MICROPY_FLOAT_CONST(0.5)); } @@ -34,7 +34,7 @@ mp_float_t common_hal_synthio_voct_to_hz_float(mp_float_t octave) { return notes[0] * MICROPY_FLOAT_C_FUN(pow)(2., octave - 7); } -STATIC int16_t convert_time_to_rate(uint32_t sample_rate, mp_obj_t time_in, int16_t difference) { +static int16_t convert_time_to_rate(uint32_t sample_rate, mp_obj_t time_in, int16_t difference) { mp_float_t time = mp_obj_get_float(time_in); int num_samples = (int)MICROPY_FLOAT_C_FUN(round)(time * sample_rate); if (num_samples == 0) { @@ -75,7 +75,7 @@ void synthio_envelope_definition_set(synthio_envelope_definition_t *envelope, mp : envelope->attack_level); } -STATIC void synthio_envelope_state_step(synthio_envelope_state_t *state, synthio_envelope_definition_t *def, size_t n_steps) { +static void synthio_envelope_state_step(synthio_envelope_state_t *state, synthio_envelope_definition_t *def, size_t n_steps) { state->substep += n_steps; while (state->substep >= SYNTHIO_MAX_DUR) { // max n_steps should be SYNTHIO_MAX_DUR so this loop executes at most @@ -102,7 +102,7 @@ STATIC void synthio_envelope_state_step(synthio_envelope_state_t *state, synthio } } -STATIC void synthio_envelope_state_init(synthio_envelope_state_t *state, synthio_envelope_definition_t *def) { +static void synthio_envelope_state_init(synthio_envelope_state_t *state, synthio_envelope_definition_t *def) { state->level = 0; state->substep = 0; state->state = SYNTHIO_ENVELOPE_STATE_ATTACK; @@ -110,11 +110,11 @@ STATIC void synthio_envelope_state_init(synthio_envelope_state_t *state, synthio synthio_envelope_state_step(state, def, SYNTHIO_MAX_DUR); } -STATIC void synthio_envelope_state_release(synthio_envelope_state_t *state, synthio_envelope_definition_t *def) { +static void synthio_envelope_state_release(synthio_envelope_state_t *state, synthio_envelope_definition_t *def) { state->state = SYNTHIO_ENVELOPE_STATE_RELEASE; } -STATIC synthio_envelope_definition_t *synthio_synth_get_note_envelope(synthio_synth_t *synth, mp_obj_t note_obj) { +static synthio_envelope_definition_t *synthio_synth_get_note_envelope(synthio_synth_t *synth, mp_obj_t note_obj) { synthio_envelope_definition_t *def = &synth->global_envelope_definition; if (!mp_obj_is_small_int(note_obj)) { synthio_note_obj_t *note = MP_OBJ_TO_PTR(note_obj); @@ -142,7 +142,7 @@ STATIC synthio_envelope_definition_t *synthio_synth_get_note_envelope(synthio_sy // much additional processing. // // https://en.wikipedia.org/wiki/Dynamic_range_compression -STATIC +static int16_t mix_down_sample(int32_t sample) { if (sample < RANGE_LOW) { sample = (((sample - RANGE_LOW) * RANGE_SCALE) >> RANGE_SHIFT) + RANGE_LOW; @@ -267,7 +267,7 @@ static bool synth_note_into_buffer(synthio_synth_t *synth, int chan, int32_t *ou return true; } -STATIC mp_obj_t synthio_synth_get_note_filter(mp_obj_t note_obj) { +static mp_obj_t synthio_synth_get_note_filter(mp_obj_t note_obj) { if (note_obj == mp_const_none) { return mp_const_none; } @@ -278,7 +278,7 @@ STATIC mp_obj_t synthio_synth_get_note_filter(mp_obj_t note_obj) { return mp_const_none; } -STATIC void sum_with_loudness(int32_t *out_buffer32, int32_t *tmp_buffer32, int16_t loudness[2], size_t dur, int synth_chan) { +static void sum_with_loudness(int32_t *out_buffer32, int32_t *tmp_buffer32, int16_t loudness[2], size_t dur, int synth_chan) { if (synth_chan == 1) { for (size_t i = 0; i < dur; i++) { *out_buffer32++ += (*tmp_buffer32++ *loudness[0]) >> 16; @@ -417,7 +417,7 @@ void synthio_synth_get_buffer_structure(synthio_synth_t *synth, bool single_chan } } -STATIC void parse_common(mp_buffer_info_t *bufinfo, mp_obj_t o, int16_t what, mp_int_t max_len) { +static void parse_common(mp_buffer_info_t *bufinfo, mp_obj_t o, int16_t what, mp_int_t max_len) { if (o != mp_const_none) { mp_get_buffer_raise(o, bufinfo, MP_BUFFER_READ); if (bufinfo->typecode != 'h') { @@ -433,7 +433,7 @@ void synthio_synth_parse_waveform(mp_buffer_info_t *bufinfo_waveform, mp_obj_t w parse_common(bufinfo_waveform, waveform_obj, MP_QSTR_waveform, SYNTHIO_WAVEFORM_SIZE); } -STATIC int find_channel_with_note(synthio_synth_t *synth, mp_obj_t note) { +static int find_channel_with_note(synthio_synth_t *synth, mp_obj_t note) { for (int i = 0; i < CIRCUITPY_SYNTHIO_MAX_CHANNELS; i++) { if (synth->span.note_obj[i] == note) { return i; diff --git a/shared-module/usb/core/Device.c b/shared-module/usb/core/Device.c index b7cbee9192ce..4ed0d410523e 100644 --- a/shared-module/usb/core/Device.c +++ b/shared-module/usb/core/Device.c @@ -18,7 +18,7 @@ // Track what device numbers are mounted. We can't use tuh_ready() because it is // true before enumeration completes and TinyUSB drivers are started. -STATIC size_t _mounted_devices = 0; +static size_t _mounted_devices = 0; void tuh_mount_cb(uint8_t dev_addr) { _mounted_devices |= 1 << dev_addr; @@ -28,8 +28,8 @@ void tuh_umount_cb(uint8_t dev_addr) { _mounted_devices &= ~(1 << dev_addr); } -STATIC xfer_result_t _xfer_result; -STATIC size_t _actual_len; +static xfer_result_t _xfer_result; +static size_t _actual_len; bool common_hal_usb_core_device_construct(usb_core_device_obj_t *self, uint8_t device_number) { if (!tuh_inited()) { mp_raise_RuntimeError(MP_ERROR_TEXT("No usb host port initialized")); @@ -61,7 +61,7 @@ uint16_t common_hal_usb_core_device_get_idProduct(usb_core_device_obj_t *self) { return pid; } -STATIC void _transfer_done_cb(tuh_xfer_t *xfer) { +static void _transfer_done_cb(tuh_xfer_t *xfer) { // Store the result so we stop waiting for the transfer. _xfer_result = xfer->result; // The passed in xfer is not the original one we passed in, so we need to @@ -69,7 +69,7 @@ STATIC void _transfer_done_cb(tuh_xfer_t *xfer) { _actual_len = xfer->actual_len; } -STATIC bool _wait_for_callback(void) { +static bool _wait_for_callback(void) { while (!mp_hal_is_interrupted() && _xfer_result == 0xff) { // The background tasks include TinyUSB which will call the function @@ -81,7 +81,7 @@ STATIC bool _wait_for_callback(void) { return result == XFER_RESULT_SUCCESS; } -STATIC mp_obj_t _get_string(const uint16_t *temp_buf) { +static mp_obj_t _get_string(const uint16_t *temp_buf) { size_t utf16_len = ((temp_buf[0] & 0xff) - 2) / sizeof(uint16_t); if (utf16_len == 0) { return mp_const_none; @@ -89,7 +89,7 @@ STATIC mp_obj_t _get_string(const uint16_t *temp_buf) { return utf16le_to_string(temp_buf + 1, utf16_len); } -STATIC void _get_langid(usb_core_device_obj_t *self) { +static void _get_langid(usb_core_device_obj_t *self) { if (self->first_langid != 0) { return; } @@ -155,7 +155,7 @@ void common_hal_usb_core_device_set_configuration(usb_core_device_obj_t *self, m _wait_for_callback(); } -STATIC size_t _xfer(tuh_xfer_t *xfer, mp_int_t timeout) { +static size_t _xfer(tuh_xfer_t *xfer, mp_int_t timeout) { _xfer_result = 0xff; xfer->complete_cb = _transfer_done_cb; if (!tuh_edpt_xfer(xfer)) { @@ -189,7 +189,7 @@ STATIC size_t _xfer(tuh_xfer_t *xfer, mp_int_t timeout) { return 0; } -STATIC bool _open_endpoint(usb_core_device_obj_t *self, mp_int_t endpoint) { +static bool _open_endpoint(usb_core_device_obj_t *self, mp_int_t endpoint) { bool endpoint_open = false; size_t open_size = sizeof(self->open_endpoints); size_t first_free = open_size; diff --git a/shared-module/usb/utf16le.c b/shared-module/usb/utf16le.c index 8c7208a3325a..358b7615f493 100644 --- a/shared-module/usb/utf16le.c +++ b/shared-module/usb/utf16le.c @@ -11,14 +11,14 @@ typedef struct { size_t len; } utf16_str; -STATIC uint32_t utf16str_peek_unit(utf16_str *utf) { +static uint32_t utf16str_peek_unit(utf16_str *utf) { if (!utf->len) { return 0; } return *utf->buf; } -STATIC uint32_t utf16str_next_unit(utf16_str *utf) { +static uint32_t utf16str_next_unit(utf16_str *utf) { uint32_t result = utf16str_peek_unit(utf); if (utf->len) { utf->len--; @@ -26,7 +26,7 @@ STATIC uint32_t utf16str_next_unit(utf16_str *utf) { } return result; } -STATIC uint32_t utf16str_next_codepoint(utf16_str *utf) { +static uint32_t utf16str_next_codepoint(utf16_str *utf) { uint32_t unichr = utf16str_next_unit(utf); if (unichr >= 0xd800 && unichr < 0xdc00) { uint32_t low_surrogate = utf16str_peek_unit(utf); @@ -38,7 +38,7 @@ STATIC uint32_t utf16str_next_codepoint(utf16_str *utf) { return unichr; } -STATIC void _convert_utf16le_to_utf8(vstr_t *vstr, utf16_str *utf) { +static void _convert_utf16le_to_utf8(vstr_t *vstr, utf16_str *utf) { while (utf->len) { vstr_add_char(vstr, utf16str_next_codepoint(utf)); } diff --git a/shared-module/usb_hid/Device.c b/shared-module/usb_hid/Device.c index 82393ba602f0..437f5e6c5715 100644 --- a/shared-module/usb_hid/Device.c +++ b/shared-module/usb_hid/Device.c @@ -146,7 +146,7 @@ const usb_hid_device_obj_t usb_hid_device_consumer_control_obj = { char *custom_usb_hid_interface_name; -STATIC size_t get_report_id_idx(usb_hid_device_obj_t *self, size_t report_id) { +static size_t get_report_id_idx(usb_hid_device_obj_t *self, size_t report_id) { for (size_t i = 0; i < self->num_report_ids; i++) { if (report_id == self->report_ids[i]) { return i; diff --git a/shared-module/usb_video/__init__.c b/shared-module/usb_video/__init__.c index 98298f722fb5..241c9d768f84 100644 --- a/shared-module/usb_video/__init__.c +++ b/shared-module/usb_video/__init__.c @@ -142,7 +142,7 @@ size_t usb_video_add_descriptor(uint8_t *descriptor_buf, descriptor_counts_t *de background_callback_t usb_video_cb; -STATIC void usb_video_cb_fun(void *unused) { +static void usb_video_cb_fun(void *unused) { (void)unused; static unsigned start_ms = 0; diff --git a/shared/runtime/context_manager_helpers.c b/shared/runtime/context_manager_helpers.c index df8f2d41bec9..56955da089c3 100644 --- a/shared/runtime/context_manager_helpers.c +++ b/shared/runtime/context_manager_helpers.c @@ -8,7 +8,7 @@ #include "py/obj.h" -STATIC mp_obj_t default___enter__(mp_obj_t self_in) { +static mp_obj_t default___enter__(mp_obj_t self_in) { return self_in; } MP_DEFINE_CONST_FUN_OBJ_1(default___enter___obj, default___enter__); diff --git a/supervisor/shared/background_callback.c b/supervisor/shared/background_callback.c index dc0560c50a52..309210b7a12a 100644 --- a/supervisor/shared/background_callback.c +++ b/supervisor/shared/background_callback.c @@ -14,7 +14,7 @@ #include "supervisor/shared/tick.h" #include "shared-bindings/microcontroller/__init__.h" -STATIC volatile background_callback_t *volatile callback_head, *volatile callback_tail; +static volatile background_callback_t *volatile callback_head, *volatile callback_tail; #ifndef CALLBACK_CRITICAL_BEGIN #define CALLBACK_CRITICAL_BEGIN (common_hal_mcu_disable_interrupts()) diff --git a/supervisor/shared/bluetooth/bluetooth.c b/supervisor/shared/bluetooth/bluetooth.c index 920e88b4a335..b1b116b9c01f 100644 --- a/supervisor/shared/bluetooth/bluetooth.c +++ b/supervisor/shared/bluetooth/bluetooth.c @@ -65,22 +65,22 @@ const uint8_t private_advertising_data[] = { 0x02, 0x01, 0x06, // 0-2 Flags uint8_t circuitpython_scan_response_data[31]; #if CIRCUITPY_BLE_FILE_SERVICE || CIRCUITPY_SERIAL_BLE -STATIC bool boot_in_discovery_mode = false; -STATIC bool advertising = false; -STATIC bool _private_advertising = false; -STATIC bool ble_started = false; +static bool boot_in_discovery_mode = false; +static bool advertising = false; +static bool _private_advertising = false; +static bool ble_started = false; #define WORKFLOW_UNSET 0 #define WORKFLOW_ENABLED 1 #define WORKFLOW_DISABLED 2 -STATIC uint8_t workflow_state = WORKFLOW_UNSET; -STATIC bool was_connected = false; +static uint8_t workflow_state = WORKFLOW_UNSET; +static bool was_connected = false; #if CIRCUITPY_STATUS_BAR // To detect when the title bar changes. -STATIC bool _last_connected = false; -STATIC bool _last_advertising = false; +static bool _last_connected = false; +static bool _last_advertising = false; #endif #if CIRCUITPY_STATUS_BAR @@ -113,7 +113,7 @@ void supervisor_bluetooth_status(void) { } #endif -STATIC void supervisor_bluetooth_start_advertising(void) { +static void supervisor_bluetooth_start_advertising(void) { if (workflow_state != WORKFLOW_ENABLED) { return; } diff --git a/supervisor/shared/bluetooth/file_transfer.c b/supervisor/shared/bluetooth/file_transfer.c index 1157b231bb57..de21d7e71e95 100644 --- a/supervisor/shared/bluetooth/file_transfer.c +++ b/supervisor/shared/bluetooth/file_transfer.c @@ -23,26 +23,26 @@ #include "supervisor/shared/bluetooth/file_transfer_protocol.h" #include "supervisor/shared/workflow.h" -STATIC bleio_service_obj_t supervisor_ble_service; -STATIC bleio_uuid_obj_t supervisor_ble_service_uuid; -STATIC bleio_characteristic_obj_t supervisor_ble_version_characteristic; -STATIC bleio_uuid_obj_t supervisor_ble_version_uuid; -STATIC bleio_characteristic_obj_t supervisor_ble_transfer_characteristic; -STATIC bleio_uuid_obj_t supervisor_ble_transfer_uuid; +static bleio_service_obj_t supervisor_ble_service; +static bleio_uuid_obj_t supervisor_ble_service_uuid; +static bleio_characteristic_obj_t supervisor_ble_version_characteristic; +static bleio_uuid_obj_t supervisor_ble_version_uuid; +static bleio_characteristic_obj_t supervisor_ble_transfer_characteristic; +static bleio_uuid_obj_t supervisor_ble_transfer_uuid; // This is the base UUID for the file transfer service. const uint8_t file_transfer_base_uuid[16] = {0x72, 0x65, 0x66, 0x73, 0x6e, 0x61, 0x72, 0x54, 0x65, 0x6c, 0x69, 0x46, 0x00, 0x00, 0xaf, 0xad }; -STATIC mp_obj_list_t characteristic_list; -STATIC mp_obj_t characteristic_list_items[2]; +static mp_obj_list_t characteristic_list; +static mp_obj_t characteristic_list_items[2]; // 2 * 10 ringbuf packets, 512 for a disk sector and 12 for the file transfer write header. #define PACKET_BUFFER_SIZE (2 * 10 + 512 + 12) // uint32_t so its aligned -STATIC uint32_t _buffer[PACKET_BUFFER_SIZE / 4 + 1]; -STATIC uint32_t _outgoing1[BLE_GATTS_VAR_ATTR_LEN_MAX / 4]; -STATIC uint32_t _outgoing2[BLE_GATTS_VAR_ATTR_LEN_MAX / 4]; -STATIC ble_drv_evt_handler_entry_t static_handler_entry; -STATIC bleio_packet_buffer_obj_t _transfer_packet_buffer; +static uint32_t _buffer[PACKET_BUFFER_SIZE / 4 + 1]; +static uint32_t _outgoing1[BLE_GATTS_VAR_ATTR_LEN_MAX / 4]; +static uint32_t _outgoing2[BLE_GATTS_VAR_ATTR_LEN_MAX / 4]; +static ble_drv_evt_handler_entry_t static_handler_entry; +static bleio_packet_buffer_obj_t _transfer_packet_buffer; void supervisor_start_bluetooth_file_transfer(void) { supervisor_ble_service_uuid.base.type = &bleio_uuid_type; @@ -108,7 +108,7 @@ void supervisor_start_bluetooth_file_transfer(void) { // FATFS has a two second timestamp resolution but the BLE API allows for nanosecond resolution. // This function truncates the time the time to a resolution storable by FATFS and fills in the // FATFS encoded version into fattime. -STATIC uint64_t truncate_time(uint64_t input_time, DWORD *fattime) { +static uint64_t truncate_time(uint64_t input_time, DWORD *fattime) { timeutils_struct_time_t tm; uint64_t seconds_since_epoch = timeutils_seconds_since_epoch_from_nanoseconds_since_1970(input_time); timeutils_seconds_since_epoch_to_struct_time(seconds_since_epoch, &tm); @@ -120,9 +120,9 @@ STATIC uint64_t truncate_time(uint64_t input_time, DWORD *fattime) { } // Used by read and write. -STATIC FIL active_file; -STATIC fs_user_mount_t *active_mount; -STATIC uint8_t _process_read(const uint8_t *raw_buf, size_t command_len) { +static FIL active_file; +static fs_user_mount_t *active_mount; +static uint8_t _process_read(const uint8_t *raw_buf, size_t command_len) { struct read_command *command = (struct read_command *)raw_buf; size_t header_size = sizeof(struct read_command); size_t response_size = sizeof(struct read_data); @@ -187,7 +187,7 @@ STATIC uint8_t _process_read(const uint8_t *raw_buf, size_t command_len) { return READ_PACING; } -STATIC uint8_t _process_read_pacing(const uint8_t *raw_buf, size_t command_len) { +static uint8_t _process_read_pacing(const uint8_t *raw_buf, size_t command_len) { struct read_pacing *command = (struct read_pacing *)raw_buf; struct read_data response; response.command = READ_DATA; @@ -226,10 +226,10 @@ STATIC uint8_t _process_read_pacing(const uint8_t *raw_buf, size_t command_len) } // Used by write and write data to know when the write is complete. -STATIC size_t total_write_length; -STATIC uint64_t _truncated_time; +static size_t total_write_length; +static uint64_t _truncated_time; -STATIC uint8_t _process_write(const uint8_t *raw_buf, size_t command_len) { +static uint8_t _process_write(const uint8_t *raw_buf, size_t command_len) { struct write_command *command = (struct write_command *)raw_buf; size_t header_size = sizeof(struct write_command); struct write_pacing response; @@ -301,7 +301,7 @@ STATIC uint8_t _process_write(const uint8_t *raw_buf, size_t command_len) { return WRITE_DATA; } -STATIC uint8_t _process_write_data(const uint8_t *raw_buf, size_t command_len) { +static uint8_t _process_write_data(const uint8_t *raw_buf, size_t command_len) { struct write_data *command = (struct write_data *)raw_buf; size_t header_size = sizeof(struct write_data); struct write_pacing response; @@ -350,7 +350,7 @@ STATIC uint8_t _process_write_data(const uint8_t *raw_buf, size_t command_len) { return WRITE_DATA; } -STATIC uint8_t _process_delete(const uint8_t *raw_buf, size_t command_len) { +static uint8_t _process_delete(const uint8_t *raw_buf, size_t command_len) { const struct delete_command *command = (struct delete_command *)raw_buf; size_t header_size = sizeof(struct delete_command); struct delete_status response; @@ -388,7 +388,7 @@ STATIC uint8_t _process_delete(const uint8_t *raw_buf, size_t command_len) { // NULL-terminate the path and remove any trailing /. Older versions of the // protocol require it but newer ones do not. -STATIC void _terminate_path(char *path, size_t path_length) { +static void _terminate_path(char *path, size_t path_length) { // -1 because fatfs doesn't want a trailing / if (path[path_length - 1] == '/') { path[path_length - 1] = '\0'; @@ -397,7 +397,7 @@ STATIC void _terminate_path(char *path, size_t path_length) { } } -STATIC uint8_t _process_mkdir(const uint8_t *raw_buf, size_t command_len) { +static uint8_t _process_mkdir(const uint8_t *raw_buf, size_t command_len) { const struct mkdir_command *command = (struct mkdir_command *)raw_buf; size_t header_size = sizeof(struct mkdir_command); struct mkdir_status response; @@ -430,7 +430,7 @@ STATIC uint8_t _process_mkdir(const uint8_t *raw_buf, size_t command_len) { return ANY_COMMAND; } -STATIC void send_listdir_entry_header(const struct listdir_entry *entry, mp_int_t max_packet_size) { +static void send_listdir_entry_header(const struct listdir_entry *entry, mp_int_t max_packet_size) { mp_int_t response_size = sizeof(struct listdir_entry); if (max_packet_size >= response_size) { common_hal_bleio_packet_buffer_write(&_transfer_packet_buffer, (const uint8_t *)entry, response_size, NULL, 0); @@ -441,7 +441,7 @@ STATIC void send_listdir_entry_header(const struct listdir_entry *entry, mp_int_ common_hal_bleio_packet_buffer_write(&_transfer_packet_buffer, ((const uint8_t *)entry) + 16, response_size - 16, NULL, 0); } -STATIC uint8_t _process_listdir(uint8_t *raw_buf, size_t command_len) { +static uint8_t _process_listdir(uint8_t *raw_buf, size_t command_len) { const struct listdir_command *command = (struct listdir_command *)raw_buf; struct listdir_entry *entry = (struct listdir_entry *)raw_buf; size_t header_size = sizeof(struct listdir_command); @@ -540,7 +540,7 @@ STATIC uint8_t _process_listdir(uint8_t *raw_buf, size_t command_len) { return ANY_COMMAND; } -STATIC uint8_t _process_move(const uint8_t *raw_buf, size_t command_len) { +static uint8_t _process_move(const uint8_t *raw_buf, size_t command_len) { const struct move_command *command = (struct move_command *)raw_buf; size_t header_size = sizeof(struct move_command); struct move_status response; @@ -581,10 +581,10 @@ STATIC uint8_t _process_move(const uint8_t *raw_buf, size_t command_len) { // Background state that must live across background calls. After the _process // helpers to force them to not use them. -STATIC uint8_t current_command[COMMAND_SIZE] __attribute__ ((aligned(4))); -STATIC volatile size_t current_offset; -STATIC uint8_t next_command; -STATIC bool running = false; +static uint8_t current_command[COMMAND_SIZE] __attribute__ ((aligned(4))); +static volatile size_t current_offset; +static uint8_t next_command; +static bool running = false; void supervisor_bluetooth_file_transfer_background(void) { if (running) { return; diff --git a/supervisor/shared/bluetooth/serial.c b/supervisor/shared/bluetooth/serial.c index 09428939ce55..179bd23cacfb 100644 --- a/supervisor/shared/bluetooth/serial.c +++ b/supervisor/shared/bluetooth/serial.c @@ -21,31 +21,31 @@ #include "py/mpstate.h" -STATIC bleio_service_obj_t supervisor_ble_circuitpython_service; -STATIC bleio_uuid_obj_t supervisor_ble_circuitpython_service_uuid; -STATIC bleio_characteristic_obj_t supervisor_ble_circuitpython_rx_characteristic; -STATIC bleio_uuid_obj_t supervisor_ble_circuitpython_rx_uuid; -STATIC bleio_characteristic_obj_t supervisor_ble_circuitpython_tx_characteristic; -STATIC bleio_uuid_obj_t supervisor_ble_circuitpython_tx_uuid; -STATIC bleio_characteristic_obj_t supervisor_ble_circuitpython_version_characteristic; -STATIC bleio_uuid_obj_t supervisor_ble_circuitpython_version_uuid; +static bleio_service_obj_t supervisor_ble_circuitpython_service; +static bleio_uuid_obj_t supervisor_ble_circuitpython_service_uuid; +static bleio_characteristic_obj_t supervisor_ble_circuitpython_rx_characteristic; +static bleio_uuid_obj_t supervisor_ble_circuitpython_rx_uuid; +static bleio_characteristic_obj_t supervisor_ble_circuitpython_tx_characteristic; +static bleio_uuid_obj_t supervisor_ble_circuitpython_tx_uuid; +static bleio_characteristic_obj_t supervisor_ble_circuitpython_version_characteristic; +static bleio_uuid_obj_t supervisor_ble_circuitpython_version_uuid; // This is the base UUID for the CircuitPython service. const uint8_t circuitpython_base_uuid[16] = {0x6e, 0x68, 0x74, 0x79, 0x50, 0x74, 0x69, 0x75, 0x63, 0x72, 0x69, 0x43, 0x00, 0x00, 0xaf, 0xad }; -STATIC mp_obj_list_t characteristic_list; -STATIC mp_obj_t characteristic_list_items[3]; +static mp_obj_list_t characteristic_list; +static mp_obj_t characteristic_list_items[3]; -STATIC uint32_t _outgoing1[BLE_GATTS_VAR_ATTR_LEN_MAX / 4]; -STATIC uint32_t _outgoing2[BLE_GATTS_VAR_ATTR_LEN_MAX / 4]; -STATIC ble_drv_evt_handler_entry_t rx_static_handler_entry; -STATIC ble_drv_evt_handler_entry_t tx_static_handler_entry; -STATIC bleio_packet_buffer_obj_t _tx_packet_buffer; -STATIC uint32_t _incoming[64]; -STATIC bleio_characteristic_buffer_obj_t _rx_buffer; +static uint32_t _outgoing1[BLE_GATTS_VAR_ATTR_LEN_MAX / 4]; +static uint32_t _outgoing2[BLE_GATTS_VAR_ATTR_LEN_MAX / 4]; +static ble_drv_evt_handler_entry_t rx_static_handler_entry; +static ble_drv_evt_handler_entry_t tx_static_handler_entry; +static bleio_packet_buffer_obj_t _tx_packet_buffer; +static uint32_t _incoming[64]; +static bleio_characteristic_buffer_obj_t _rx_buffer; // Internal enabling so we can disable while printing BLE debugging. -STATIC bool _enabled; +static bool _enabled; void supervisor_start_bluetooth_serial(void) { supervisor_ble_circuitpython_service_uuid.base.type = &bleio_uuid_type; diff --git a/supervisor/shared/external_flash/external_flash.c b/supervisor/shared/external_flash/external_flash.c index 0b2a02c2d28b..b029286fa418 100644 --- a/supervisor/shared/external_flash/external_flash.c +++ b/supervisor/shared/external_flash/external_flash.c @@ -25,7 +25,7 @@ // The currently cached sector in the cache, ram or flash based. static uint32_t current_sector; -STATIC const external_flash_device possible_devices[] = {EXTERNAL_FLASH_DEVICES}; +static const external_flash_device possible_devices[] = {EXTERNAL_FLASH_DEVICES}; #define EXTERNAL_FLASH_DEVICE_COUNT MP_ARRAY_SIZE(possible_devices) static const external_flash_device *flash_device = NULL; diff --git a/supervisor/shared/flash.c b/supervisor/shared/flash.c index 4af62cb30c2a..37fba60ae8b3 100644 --- a/supervisor/shared/flash.c +++ b/supervisor/shared/flash.c @@ -17,9 +17,9 @@ // there is a singleton Flash object const mp_obj_type_t supervisor_flash_type; -STATIC const mp_obj_base_t supervisor_flash_obj = {&supervisor_flash_type}; +static const mp_obj_base_t supervisor_flash_obj = {&supervisor_flash_type}; -STATIC mp_obj_t supervisor_flash_obj_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { +static mp_obj_t supervisor_flash_obj_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { // check arguments mp_arg_check_num(n_args, n_kw, 0, 0, false); @@ -127,23 +127,23 @@ void PLACE_IN_ITCM(supervisor_flash_flush)(void) { filesystem_dirty = false; } -STATIC mp_obj_t supervisor_flash_obj_readblocks(mp_obj_t self, mp_obj_t block_num, mp_obj_t buf) { +static mp_obj_t supervisor_flash_obj_readblocks(mp_obj_t self, mp_obj_t block_num, mp_obj_t buf) { mp_buffer_info_t bufinfo; mp_get_buffer_raise(buf, &bufinfo, MP_BUFFER_WRITE); mp_uint_t ret = flash_read_blocks(self, bufinfo.buf, mp_obj_get_int(block_num), bufinfo.len / FILESYSTEM_BLOCK_SIZE); return MP_OBJ_NEW_SMALL_INT(ret); } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(supervisor_flash_obj_readblocks_obj, supervisor_flash_obj_readblocks); +static MP_DEFINE_CONST_FUN_OBJ_3(supervisor_flash_obj_readblocks_obj, supervisor_flash_obj_readblocks); -STATIC mp_obj_t supervisor_flash_obj_writeblocks(mp_obj_t self, mp_obj_t block_num, mp_obj_t buf) { +static mp_obj_t supervisor_flash_obj_writeblocks(mp_obj_t self, mp_obj_t block_num, mp_obj_t buf) { mp_buffer_info_t bufinfo; mp_get_buffer_raise(buf, &bufinfo, MP_BUFFER_READ); mp_uint_t ret = flash_write_blocks(self, bufinfo.buf, mp_obj_get_int(block_num), bufinfo.len / FILESYSTEM_BLOCK_SIZE); return MP_OBJ_NEW_SMALL_INT(ret); } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(supervisor_flash_obj_writeblocks_obj, supervisor_flash_obj_writeblocks); +static MP_DEFINE_CONST_FUN_OBJ_3(supervisor_flash_obj_writeblocks_obj, supervisor_flash_obj_writeblocks); -STATIC bool flash_ioctl(mp_obj_t self_in, size_t cmd, size_t arg, mp_int_t *out_value) { +static bool flash_ioctl(mp_obj_t self_in, size_t cmd, size_t arg, mp_int_t *out_value) { if (out_value != NULL) { *out_value = 0; } @@ -169,7 +169,7 @@ STATIC bool flash_ioctl(mp_obj_t self_in, size_t cmd, size_t arg, mp_int_t *out_ return true; } -STATIC mp_obj_t supervisor_flash_obj_ioctl(mp_obj_t self, mp_obj_t cmd_in, mp_obj_t arg_in) { +static mp_obj_t supervisor_flash_obj_ioctl(mp_obj_t self, mp_obj_t cmd_in, mp_obj_t arg_in) { mp_int_t cmd = mp_obj_get_int(cmd_in); mp_int_t arg = mp_obj_get_int(arg_in); mp_int_t out_value; @@ -178,15 +178,15 @@ STATIC mp_obj_t supervisor_flash_obj_ioctl(mp_obj_t self, mp_obj_t cmd_in, mp_ob } return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_3(supervisor_flash_obj_ioctl_obj, supervisor_flash_obj_ioctl); +static MP_DEFINE_CONST_FUN_OBJ_3(supervisor_flash_obj_ioctl_obj, supervisor_flash_obj_ioctl); -STATIC const mp_rom_map_elem_t supervisor_flash_obj_locals_dict_table[] = { +static const mp_rom_map_elem_t supervisor_flash_obj_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_readblocks), MP_ROM_PTR(&supervisor_flash_obj_readblocks_obj) }, { MP_ROM_QSTR(MP_QSTR_writeblocks), MP_ROM_PTR(&supervisor_flash_obj_writeblocks_obj) }, { MP_ROM_QSTR(MP_QSTR_ioctl), MP_ROM_PTR(&supervisor_flash_obj_ioctl_obj) }, }; -STATIC MP_DEFINE_CONST_DICT(supervisor_flash_obj_locals_dict, supervisor_flash_obj_locals_dict_table); +static MP_DEFINE_CONST_DICT(supervisor_flash_obj_locals_dict, supervisor_flash_obj_locals_dict_table); MP_DEFINE_CONST_OBJ_TYPE( supervisor_flash_type, diff --git a/supervisor/shared/serial.c b/supervisor/shared/serial.c index b8d6e2d28f08..068525f4a415 100644 --- a/supervisor/shared/serial.c +++ b/supervisor/shared/serial.c @@ -64,7 +64,7 @@ static bool _serial_console_write_disabled; static bool _serial_display_write_disabled; #if CIRCUITPY_CONSOLE_UART -STATIC void console_uart_print_strn(void *env, const char *str, size_t len) { +static void console_uart_print_strn(void *env, const char *str, size_t len) { (void)env; int uart_errcode; common_hal_busio_uart_write(&console_uart, (const uint8_t *)str, len, &uart_errcode); diff --git a/supervisor/shared/translate/translate.c b/supervisor/shared/translate/translate.c index 00083347c9cd..958e0a2144f9 100644 --- a/supervisor/shared/translate/translate.c +++ b/supervisor/shared/translate/translate.c @@ -23,7 +23,7 @@ void serial_write_compressed(mp_rom_error_text_t compressed) { mp_printf(MP_PYTHON_PRINTER, "%S", compressed); } -STATIC void get_word(int n, const mchar_t **pos, const mchar_t **end) { +static void get_word(int n, const mchar_t **pos, const mchar_t **end) { int len = minlen; int i = 0; *pos = words; @@ -37,7 +37,7 @@ STATIC void get_word(int n, const mchar_t **pos, const mchar_t **end) { *end = *pos + len; } -STATIC void put_utf8(vstr_t *vstr, int u) { +static void put_utf8(vstr_t *vstr, int u) { if (u >= translation_offstart) { u += translation_offset; } diff --git a/supervisor/shared/usb/host_keyboard.c b/supervisor/shared/usb/host_keyboard.c index 0aaecbd3b218..78c3f3673ba0 100644 --- a/supervisor/shared/usb/host_keyboard.c +++ b/supervisor/shared/usb/host_keyboard.c @@ -20,19 +20,19 @@ // Buffer the incoming serial data in the background so that we can look for the // interrupt character. -STATIC ringbuf_t _incoming_ringbuf; -STATIC uint8_t _buf[16]; +static ringbuf_t _incoming_ringbuf; +static uint8_t _buf[16]; -STATIC uint8_t _dev_addr; -STATIC uint8_t _interface; +static uint8_t _dev_addr; +static uint8_t _interface; #define FLAG_SHIFT (1) #define FLAG_NUMLOCK (2) #define FLAG_CTRL (4) #define FLAG_STRING (8) -STATIC uint8_t user_keymap[384]; -STATIC size_t user_keymap_len = 0; +static uint8_t user_keymap[384]; +static size_t user_keymap_len = 0; void usb_keymap_set(const uint8_t *buf, size_t len) { user_keymap_len = len = MIN(len, sizeof(user_keymap)); @@ -100,7 +100,7 @@ struct keycode_mapper { #define CTRL_F12 "\e[24;5~" -STATIC struct keycode_mapper keycode_to_ascii[] = { +static struct keycode_mapper keycode_to_ascii[] = { { HID_KEY_A, HID_KEY_Z, 'a', 0, NULL}, { HID_KEY_1, HID_KEY_9, 0, FLAG_SHIFT, "!@#$%^&*()" }, @@ -126,7 +126,7 @@ STATIC struct keycode_mapper keycode_to_ascii[] = { }; -STATIC bool report_contains(const hid_keyboard_report_t *report, uint8_t key) { +static bool report_contains(const hid_keyboard_report_t *report, uint8_t key) { for (int i = 0; i < 6; i++) { if (report->keycode[i] == key) { return true; @@ -135,20 +135,20 @@ STATIC bool report_contains(const hid_keyboard_report_t *report, uint8_t key) { return false; } -STATIC const char *old_buf = NULL; -STATIC size_t buf_size = 0; +static const char *old_buf = NULL; +static size_t buf_size = 0; // this matches Linux default of 500ms to first repeat, 1/20s thereafter enum { initial_repeat_time = 500, default_repeat_time = 50 }; -STATIC uint64_t repeat_deadline; -STATIC void repeat_f(void *unused); +static uint64_t repeat_deadline; +static void repeat_f(void *unused); background_callback_t repeat_cb = {repeat_f, NULL, NULL, NULL}; -STATIC void set_repeat_deadline(uint64_t new_deadline) { +static void set_repeat_deadline(uint64_t new_deadline) { repeat_deadline = new_deadline; background_callback_add_core(&repeat_cb); } -STATIC void send_bufn_core(const char *buf, size_t n) { +static void send_bufn_core(const char *buf, size_t n) { old_buf = buf; buf_size = n; // repeat_timeout = millis() + repeat_time; @@ -166,22 +166,22 @@ STATIC void send_bufn_core(const char *buf, size_t n) { } } -STATIC void send_bufn(const char *buf, size_t n) { +static void send_bufn(const char *buf, size_t n) { send_bufn_core(buf, n); set_repeat_deadline(supervisor_ticks_ms64() + initial_repeat_time); } -STATIC void send_bufz(const char *buf) { +static void send_bufz(const char *buf) { send_bufn(buf, strlen(buf)); } -STATIC void send_byte(uint8_t code) { +static void send_byte(uint8_t code) { static char buf[1]; buf[0] = code; send_bufn(buf, 1); } -STATIC void send_repeat(void) { +static void send_repeat(void) { if (old_buf) { uint64_t now = supervisor_ticks_ms64(); if (now >= repeat_deadline) { @@ -193,20 +193,20 @@ STATIC void send_repeat(void) { } } -STATIC void repeat_f(void *unused) { +static void repeat_f(void *unused) { send_repeat(); } hid_keyboard_report_t old_report; -STATIC const char *skip_nuls(const char *buf, size_t n) { +static const char *skip_nuls(const char *buf, size_t n) { while (n--) { buf += strlen(buf) + 1; } return buf; } -STATIC void process_event(uint8_t dev_addr, uint8_t instance, const hid_keyboard_report_t *report) { +static void process_event(uint8_t dev_addr, uint8_t instance, const hid_keyboard_report_t *report) { bool has_altgr = (user_keymap_len > 256); bool altgr = has_altgr && report->modifier & 0x40; bool alt = has_altgr ? report->modifier & 0x4 : report->modifier & 0x44; diff --git a/supervisor/shared/usb/usb_msc_flash.c b/supervisor/shared/usb/usb_msc_flash.c index 45ec7cb5aaa2..201a818c0bf7 100644 --- a/supervisor/shared/usb/usb_msc_flash.c +++ b/supervisor/shared/usb/usb_msc_flash.c @@ -40,7 +40,7 @@ static fs_user_mount_t *get_vfs(int lun) { return current_mount->obj; } -STATIC void _usb_msc_uneject(void) { +static void _usb_msc_uneject(void) { for (uint8_t i = 0; i < sizeof(ejected); i++) { ejected[i] = false; locked[i] = false; diff --git a/supervisor/shared/web_workflow/web_workflow.c b/supervisor/shared/web_workflow/web_workflow.c index a03338c90f9e..71dbd29ebba4 100644 --- a/supervisor/shared/web_workflow/web_workflow.c +++ b/supervisor/shared/web_workflow/web_workflow.c @@ -171,7 +171,7 @@ static bool _base64_in_place(char *buf, size_t in_len, size_t out_len) { return true; } -STATIC void _update_encoded_ip(void) { +static void _update_encoded_ip(void) { uint32_t ipv4_address = 0; if (common_hal_wifi_radio_get_enabled(&common_hal_wifi_radio_obj)) { ipv4_address = wifi_radio_get_ipv4_address(&common_hal_wifi_radio_obj); @@ -381,7 +381,7 @@ void web_workflow_send_raw(socketpool_socket_obj_t *socket, bool flush, const ui } } -STATIC void _print_raw(void *env, const char *str, size_t len) { +static void _print_raw(void *env, const char *str, size_t len) { web_workflow_send_raw((socketpool_socket_obj_t *)env, false, (const uint8_t *)str, (size_t)len); } @@ -421,7 +421,7 @@ static void _send_chunk(socketpool_socket_obj_t *socket, const char *chunk) { web_workflow_send_raw(socket, strlen(chunk) == 0, (const uint8_t *)"\r\n", 2); } -STATIC void _print_chunk(void *env, const char *str, size_t len) { +static void _print_chunk(void *env, const char *str, size_t len) { mp_print_t _socket_print = {env, _print_raw}; mp_printf(&_socket_print, "%X\r\n", len); web_workflow_send_raw((socketpool_socket_obj_t *)env, false, (const uint8_t *)str, len); @@ -925,7 +925,7 @@ static void _reply_with_diskinfo_json(socketpool_socket_obj_t *socket, _request // FATFS has a two second timestamp resolution but the BLE API allows for nanosecond resolution. // This function truncates the time the time to a resolution storable by FATFS and fills in the // FATFS encoded version into fattime. -STATIC uint64_t truncate_time(uint64_t input_time, DWORD *fattime) { +static uint64_t truncate_time(uint64_t input_time, DWORD *fattime) { timeutils_struct_time_t tm; uint64_t seconds_since_epoch = timeutils_seconds_since_epoch_from_nanoseconds_since_1970(input_time); timeutils_seconds_since_epoch_to_struct_time(seconds_since_epoch, &tm); @@ -936,7 +936,7 @@ STATIC uint64_t truncate_time(uint64_t input_time, DWORD *fattime) { return truncated_time; } -STATIC void _discard_incoming(socketpool_socket_obj_t *socket, size_t amount) { +static void _discard_incoming(socketpool_socket_obj_t *socket, size_t amount) { size_t discarded = 0; while (discarded < amount) { uint8_t bytes[64]; diff --git a/supervisor/shared/web_workflow/websocket.c b/supervisor/shared/web_workflow/websocket.c index 4ee06791097c..accd2398e1e5 100644 --- a/supervisor/shared/web_workflow/websocket.c +++ b/supervisor/shared/web_workflow/websocket.c @@ -29,10 +29,10 @@ typedef struct { // Buffer the incoming serial data in the background so that we can look for the // interrupt character. -STATIC ringbuf_t _incoming_ringbuf; -STATIC uint8_t _buf[16]; +static ringbuf_t _incoming_ringbuf; +static uint8_t _buf[16]; // make sure background is not called recursively -STATIC bool in_web_background = false; +static bool in_web_background = false; static _websocket cp_serial; diff --git a/supervisor/shared/workflow.c b/supervisor/shared/workflow.c index 7c5046ffe61d..152e67b27b1e 100644 --- a/supervisor/shared/workflow.c +++ b/supervisor/shared/workflow.c @@ -174,7 +174,7 @@ FRESULT supervisor_workflow_mkdir_parents(DWORD fattime, char *path) { return result; } -STATIC FRESULT supervisor_workflow_delete_directory_contents(FATFS *fs, const TCHAR *path) { +static FRESULT supervisor_workflow_delete_directory_contents(FATFS *fs, const TCHAR *path) { FF_DIR dir; FILINFO file_info; // Check the stack since we're putting paths on it. From 41eee0d5ea73fe772ebce669a86efa2b3f67e60d Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Tue, 21 May 2024 16:37:08 -0400 Subject: [PATCH 049/227] Add tests for chained exceptions (failing) --- tests/circuitpython/traceback_test_chained.py | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/tests/circuitpython/traceback_test_chained.py b/tests/circuitpython/traceback_test_chained.py index dac99e00b454..15d383b0b8e7 100644 --- a/tests/circuitpython/traceback_test_chained.py +++ b/tests/circuitpython/traceback_test_chained.py @@ -72,3 +72,61 @@ def print_exc_info(e, chain=True): print_exc_info(e, chain=False) print_exc_info(e) print() + +class SomeException(RuntimeError): + pass + +try: + try: + raise Exception("inner") + except Exception as inner: + raise SomeException("outer") from inner +except Exception as e: + print_exc_info(e) + +try: + try: + raise Exception("inner") + except Exception as inner: + l = inner + raise SomeException("outer") from l +except Exception as e: + print_exc_info(e) +print() + +try: + try: + raise SomeException("inner") + except Exception as inner: + raise Exception("outer") from inner +except Exception as e: + print_exc_info(e) + +try: + try: + raise SomeException("inner") + except Exception as inner: + l = inner + raise Exception("outer") from l +except Exception as e: + print(e, e.__cause__, e.__context__) + print_exc_info(e) +print() + +try: + try: + raise SomeException("inner") + except Exception as inner: + raise SomeException("outer") from inner +except Exception as e: + print_exc_info(e) + +try: + try: + raise SomeException("inner") + except Exception as inner: + l = inner + raise SomeException("outer") from l +except Exception as e: + print_exc_info(e) +print() From 49cbbd198a522e4bd0aa63be160995766447a7ee Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Tue, 21 May 2024 16:40:58 -0400 Subject: [PATCH 050/227] Fix chaining non-built-in exceptions --- py/obj.c | 20 +++-- tests/circuitpython/traceback_test_chained.py | 1 - .../traceback_test_chained.py.exp | 75 +++++++++++++++++++ 3 files changed, 90 insertions(+), 6 deletions(-) diff --git a/py/obj.c b/py/obj.c index f981d27cda2b..aa206c1a931e 100644 --- a/py/obj.c +++ b/py/obj.c @@ -143,18 +143,28 @@ void mp_obj_print(mp_obj_t o_in, mp_print_kind_t kind) { mp_obj_print_helper(MP_PYTHON_PRINTER, o_in, kind); } +// CIRCUITPY-CHANGE +static mp_obj_t mp_load_attr_or_none(mp_obj_t base, qstr attr) { + mp_obj_t dest[2]; + mp_load_method_protected(base, attr, dest, true); + return dest[0] == MP_OBJ_NULL ? mp_const_none : dest[0]; +} + // CIRCUITPY-CHANGE static void mp_obj_print_inner_exception(const mp_print_t *print, mp_obj_t self_in, mp_int_t limit) { #if MICROPY_CPYTHON_EXCEPTION_CHAIN mp_obj_exception_t *self = mp_obj_exception_get_native(self_in); mp_rom_error_text_t msg = MP_ERROR_TEXT("During handling of the above exception, another exception occurred:"); - mp_obj_exception_t *inner = NULL; - if (self->cause) { + mp_obj_t inner_obj = mp_const_none; + if (!self->suppress_context) { + inner_obj = mp_load_attr_or_none(self_in, MP_QSTR___context__); + } + if (inner_obj == mp_const_none) { msg = MP_ERROR_TEXT("The above exception was the direct cause of the following exception:"); - inner = self->cause; - } else if (!self->suppress_context) { - inner = self->context; + inner_obj = mp_load_attr_or_none(self_in, MP_QSTR___cause__); } + mp_obj_exception_t *inner = mp_obj_is_exception_instance(inner_obj) ? + mp_obj_exception_get_native(inner_obj) : NULL; if (inner && !inner->marked) { inner->marked = true; mp_obj_print_exception_with_limit(print, MP_OBJ_FROM_PTR(inner), limit); diff --git a/tests/circuitpython/traceback_test_chained.py b/tests/circuitpython/traceback_test_chained.py index 15d383b0b8e7..3b96eb7a3ca9 100644 --- a/tests/circuitpython/traceback_test_chained.py +++ b/tests/circuitpython/traceback_test_chained.py @@ -109,7 +109,6 @@ class SomeException(RuntimeError): l = inner raise Exception("outer") from l except Exception as e: - print(e, e.__cause__, e.__context__) print_exc_info(e) print() diff --git a/tests/circuitpython/traceback_test_chained.py.exp b/tests/circuitpython/traceback_test_chained.py.exp index a979adc24c04..498be1f0b798 100644 --- a/tests/circuitpython/traceback_test_chained.py.exp +++ b/tests/circuitpython/traceback_test_chained.py.exp @@ -74,3 +74,78 @@ ZeroDivisionError: division by zero ------------------------------------------------------------------------ +------------------------------------------------------------------------ +Traceback (most recent call last): + File "circuitpython/traceback_test_chained.py", line 81, in +Exception: inner + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "circuitpython/traceback_test_chained.py", line 83, in +SomeException: outer +------------------------------------------------------------------------ + +------------------------------------------------------------------------ +Traceback (most recent call last): + File "circuitpython/traceback_test_chained.py", line 89, in +Exception: inner + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "circuitpython/traceback_test_chained.py", line 92, in +SomeException: outer +------------------------------------------------------------------------ + + +------------------------------------------------------------------------ +Traceback (most recent call last): + File "circuitpython/traceback_test_chained.py", line 99, in +RuntimeError: inner + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "circuitpython/traceback_test_chained.py", line 101, in +Exception: outer +------------------------------------------------------------------------ + +------------------------------------------------------------------------ +Traceback (most recent call last): + File "circuitpython/traceback_test_chained.py", line 107, in +RuntimeError: inner + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "circuitpython/traceback_test_chained.py", line 110, in +Exception: outer +------------------------------------------------------------------------ + + +------------------------------------------------------------------------ +Traceback (most recent call last): + File "circuitpython/traceback_test_chained.py", line 117, in +RuntimeError: inner + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "circuitpython/traceback_test_chained.py", line 119, in +SomeException: outer +------------------------------------------------------------------------ + +------------------------------------------------------------------------ +Traceback (most recent call last): + File "circuitpython/traceback_test_chained.py", line 125, in +RuntimeError: inner + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "circuitpython/traceback_test_chained.py", line 128, in +SomeException: outer +------------------------------------------------------------------------ + + From 94db02f3695d32b6d7df7ef4ccdb582b49a6b25c Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Tue, 21 May 2024 16:49:10 -0400 Subject: [PATCH 051/227] function may be unused --- py/obj.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/py/obj.c b/py/obj.c index aa206c1a931e..85deaff8e680 100644 --- a/py/obj.c +++ b/py/obj.c @@ -144,11 +144,13 @@ void mp_obj_print(mp_obj_t o_in, mp_print_kind_t kind) { } // CIRCUITPY-CHANGE +#if MICROPY_CPYTHON_EXCEPTION_CHAIN static mp_obj_t mp_load_attr_or_none(mp_obj_t base, qstr attr) { mp_obj_t dest[2]; mp_load_method_protected(base, attr, dest, true); return dest[0] == MP_OBJ_NULL ? mp_const_none : dest[0]; } +#endif // CIRCUITPY-CHANGE static void mp_obj_print_inner_exception(const mp_print_t *print, mp_obj_t self_in, mp_int_t limit) { From 16e9fe6ce6b68f811890d160aca2a63fdaad1ca4 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Tue, 21 May 2024 18:26:26 -0400 Subject: [PATCH 052/227] fix a few regexps that are better as raw strings --- tools/ci_fetch_deps.py | 2 +- tools/fwsizes.py | 2 +- tools/gen_ld_files.py | 2 +- tools/hci_trace_to_pcap.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/ci_fetch_deps.py b/tools/ci_fetch_deps.py index bf465d0ecfb4..cbae4b3ff5e0 100644 --- a/tools/ci_fetch_deps.py +++ b/tools/ci_fetch_deps.py @@ -11,7 +11,7 @@ def _git_version(): version_str = subprocess.check_output(["git", "--version"], encoding="ascii", errors="replace") - version_str = re.search("([0-9]\.*)*[0-9]", version_str).group(0) + version_str = re.search(r"([0-9]\.*)*[0-9]", version_str).group(0) return tuple(int(part) for part in version_str.split(".")) diff --git a/tools/fwsizes.py b/tools/fwsizes.py index 64d1af8b00ac..003e29d34bda 100644 --- a/tools/fwsizes.py +++ b/tools/fwsizes.py @@ -7,7 +7,7 @@ for fn in os.listdir(): if os.path.isfile(fn) and ("build-arm " in fn or "build-riscv " in fn): - board = re.split("[()]", fn)[1] + board = re.split(r"[()]", fn)[1] if board in ( "spresense", "teensy40", diff --git a/tools/gen_ld_files.py b/tools/gen_ld_files.py index 28f73d9be29e..372bfb606b50 100755 --- a/tools/gen_ld_files.py +++ b/tools/gen_ld_files.py @@ -28,7 +28,7 @@ defines = {} # -REMOVE_UL_RE = re.compile("([0-9]+)UL") +REMOVE_UL_RE = re.compile(r"([0-9]+)UL") def remove_UL(s): diff --git a/tools/hci_trace_to_pcap.py b/tools/hci_trace_to_pcap.py index d55df3fb61ee..1f6b0d686015 100755 --- a/tools/hci_trace_to_pcap.py +++ b/tools/hci_trace_to_pcap.py @@ -66,7 +66,7 @@ with open(sys.argv[1], "r") as f: for line in f: line = line.strip() - m = re.match("([<>]) \\[ *([0-9]+)\\] ([A-Fa-f0-9:]+)", line) + m = re.match(r"([<>]) \[ *([0-9]+)\] ([A-Fa-f0-9:]+)", line) if not m: continue From 39c203aabb7503ae0548c37614ebe084dbdf09a9 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Wed, 22 May 2024 15:16:29 -0400 Subject: [PATCH 053/227] update frozen modules for 9.1.0-beta.3 --- frozen/Adafruit_CircuitPython_ConnectionManager | 2 +- frozen/Adafruit_CircuitPython_ESP32SPI | 2 +- frozen/Adafruit_CircuitPython_Requests | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frozen/Adafruit_CircuitPython_ConnectionManager b/frozen/Adafruit_CircuitPython_ConnectionManager index 0a4f7452765a..b514b44ce328 160000 --- a/frozen/Adafruit_CircuitPython_ConnectionManager +++ b/frozen/Adafruit_CircuitPython_ConnectionManager @@ -1 +1 @@ -Subproject commit 0a4f7452765a1fbfdd1245a1f67a49ce74d8edfc +Subproject commit b514b44ce32833d07ff3a02ee7be9edb31be284a diff --git a/frozen/Adafruit_CircuitPython_ESP32SPI b/frozen/Adafruit_CircuitPython_ESP32SPI index 56864ac052b4..deb2a5fef202 160000 --- a/frozen/Adafruit_CircuitPython_ESP32SPI +++ b/frozen/Adafruit_CircuitPython_ESP32SPI @@ -1 +1 @@ -Subproject commit 56864ac052b4c085880d00c96a18170868bb8233 +Subproject commit deb2a5fef202866334d4a1b62a328ab9dfa928ff diff --git a/frozen/Adafruit_CircuitPython_Requests b/frozen/Adafruit_CircuitPython_Requests index d500e0c97bdb..fac4012e7938 160000 --- a/frozen/Adafruit_CircuitPython_Requests +++ b/frozen/Adafruit_CircuitPython_Requests @@ -1 +1 @@ -Subproject commit d500e0c97bdb592e7848cdd92a6736a1e5272df3 +Subproject commit fac4012e79389b35ad6abd5af04ea4dd7fc3ad5b From c9b5002897b467403561d28ae182bc1bcfabc7e2 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Fri, 24 May 2024 10:24:25 -0400 Subject: [PATCH 054/227] shared-bindings/analogio/AnalogIn.c: fix Espressif limitations doc --- shared-bindings/analogio/AnalogIn.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/shared-bindings/analogio/AnalogIn.c b/shared-bindings/analogio/AnalogIn.c index d46975b43743..f56ce600c247 100644 --- a/shared-bindings/analogio/AnalogIn.c +++ b/shared-bindings/analogio/AnalogIn.c @@ -38,10 +38,11 @@ MP_WEAK const mcu_pin_obj_t *common_hal_analogio_analogin_validate_pin(mp_obj_t //| //| :param ~microcontroller.Pin pin: the pin to read from //| -//| **Limitations:** On Espressif ESP32, `AnalogIn` is not available when WiFi is in use: -//| the hardware makes use of the ADC. Attempts to use `AnalogIn` will raise `espidf.IDFError`. -//| On other Espressif chips, the ADC is available, but is shared with WiFi. -//| WiFi use takes precedence and may temporarily cause `espidf.IDFError` to be raise. +//| **Limitations:** On Espressif ESP32, pins that use ADC2 are not available when WiFi is enabled: +//| the hardware makes use of ADC2. +//| Attempts to use `AnalogIn` in that situation will raise `espidf.IDFError`. +//| On other Espressif chips, ADC2 is available, but is shared with WiFi. +//| WiFi use takes precedence and may temporarily cause `espidf.IDFError` to be raised //| when you read a value. You can retry the read. //| """ //| ... From 5850f01cbe644d82924fc1f65cbcd44663ebc520 Mon Sep 17 00:00:00 2001 From: Bill Sideris Date: Sat, 25 May 2024 00:56:56 +0300 Subject: [PATCH 055/227] Some cardputer definition improvements --- ports/espressif/boards/m5stack_cardputer/mpconfigboard.h | 2 +- ports/espressif/boards/m5stack_cardputer/mpconfigboard.mk | 3 ++- ports/espressif/boards/m5stack_cardputer/pins.c | 2 ++ ports/espressif/boards/m5stack_cardputer/sdkconfig | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ports/espressif/boards/m5stack_cardputer/mpconfigboard.h b/ports/espressif/boards/m5stack_cardputer/mpconfigboard.h index 8cd0d86db9a2..1e91998f1f0e 100644 --- a/ports/espressif/boards/m5stack_cardputer/mpconfigboard.h +++ b/ports/espressif/boards/m5stack_cardputer/mpconfigboard.h @@ -8,7 +8,7 @@ // Micropython setup -#define MICROPY_HW_BOARD_NAME "M5 Stack Cardputer" +#define MICROPY_HW_BOARD_NAME "M5Stack Cardputer" #define MICROPY_HW_MCU_NAME "ESP32S3" #define MICROPY_HW_NEOPIXEL (&pin_GPIO21) diff --git a/ports/espressif/boards/m5stack_cardputer/mpconfigboard.mk b/ports/espressif/boards/m5stack_cardputer/mpconfigboard.mk index d3edbf918089..35145f389672 100644 --- a/ports/espressif/boards/m5stack_cardputer/mpconfigboard.mk +++ b/ports/espressif/boards/m5stack_cardputer/mpconfigboard.mk @@ -1,6 +1,6 @@ USB_VID = 0x303A USB_PID = 0x81DA -USB_PRODUCT = "M5STACK Cardputer - CircuitPython" +USB_PRODUCT = "M5Stack Cardputer - CircuitPython" USB_MANUFACTURER = "M5STACK" IDF_TARGET = esp32s3 @@ -11,3 +11,4 @@ CIRCUITPY_ESP_FLASH_SIZE = 8MB CIRCUITPY_ESPCAMERA = 0 CIRCUITPY_GIFIO = 1 +CIRCUITPY_MAX3421E = 0 diff --git a/ports/espressif/boards/m5stack_cardputer/pins.c b/ports/espressif/boards/m5stack_cardputer/pins.c index 7fff3e11e5e7..6740c02bca9a 100644 --- a/ports/espressif/boards/m5stack_cardputer/pins.c +++ b/ports/espressif/boards/m5stack_cardputer/pins.c @@ -15,9 +15,11 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO1) }, { MP_ROM_QSTR(MP_QSTR_PORTA1), MP_ROM_PTR(&pin_GPIO1) }, { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_G1), MP_ROM_PTR(&pin_GPIO1) }, { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO2) }, { MP_ROM_QSTR(MP_QSTR_PORTA2), MP_ROM_PTR(&pin_GPIO2) }, { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_G2), MP_ROM_PTR(&pin_GPIO2) }, // Keyboard { MP_ROM_QSTR(MP_QSTR_KB_COL_0), MP_ROM_PTR(&pin_GPIO13) }, diff --git a/ports/espressif/boards/m5stack_cardputer/sdkconfig b/ports/espressif/boards/m5stack_cardputer/sdkconfig index f5ef79768114..b48116f764dc 100644 --- a/ports/espressif/boards/m5stack_cardputer/sdkconfig +++ b/ports/espressif/boards/m5stack_cardputer/sdkconfig @@ -7,7 +7,7 @@ # # LWIP # -CONFIG_LWIP_LOCAL_HOSTNAME="espressif-esp32s3" +CONFIG_LWIP_LOCAL_HOSTNAME="m5stack-cardputer" # end of LWIP # end of Component config From eb4cd43c707ab10d7c3653c25865df5576604b75 Mon Sep 17 00:00:00 2001 From: Kyle Mohr <6644803+kylefmohr@users.noreply.github.com> Date: Sat, 25 May 2024 01:10:35 +0000 Subject: [PATCH 056/227] init --- .../boards/waveshare_esp32_s3_tiny/board.c | 9 +++ .../waveshare_esp32_s3_tiny/mpconfigboard.h | 15 +++++ .../waveshare_esp32_s3_tiny/mpconfigboard.mk | 14 +++++ .../boards/waveshare_esp32_s3_tiny/pins.c | 61 +++++++++++++++++++ .../boards/waveshare_esp32_s3_tiny/sdkconfig | 15 +++++ 5 files changed, 114 insertions(+) create mode 100644 ports/espressif/boards/waveshare_esp32_s3_tiny/board.c create mode 100644 ports/espressif/boards/waveshare_esp32_s3_tiny/mpconfigboard.h create mode 100644 ports/espressif/boards/waveshare_esp32_s3_tiny/mpconfigboard.mk create mode 100644 ports/espressif/boards/waveshare_esp32_s3_tiny/pins.c create mode 100644 ports/espressif/boards/waveshare_esp32_s3_tiny/sdkconfig diff --git a/ports/espressif/boards/waveshare_esp32_s3_tiny/board.c b/ports/espressif/boards/waveshare_esp32_s3_tiny/board.c new file mode 100644 index 000000000000..a3a9eec04714 --- /dev/null +++ b/ports/espressif/boards/waveshare_esp32_s3_tiny/board.c @@ -0,0 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "supervisor/board.h" + +// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/espressif/boards/waveshare_esp32_s3_tiny/mpconfigboard.h b/ports/espressif/boards/waveshare_esp32_s3_tiny/mpconfigboard.h new file mode 100644 index 000000000000..9e479267d21c --- /dev/null +++ b/ports/espressif/boards/waveshare_esp32_s3_tiny/mpconfigboard.h @@ -0,0 +1,15 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +// Micropython setup + +#define MICROPY_HW_BOARD_NAME "Waveshare ESP32-S3-Tiny" +#define MICROPY_HW_MCU_NAME "ESP32S3" + +#define MICROPY_HW_NEOPIXEL (&pin_GPIO38) + +#define DEFAULT_UART_BUS_RX (&pin_GPIO19) +#define DEFAULT_UART_BUS_TX (&pin_GPIO20) diff --git a/ports/espressif/boards/waveshare_esp32_s3_tiny/mpconfigboard.mk b/ports/espressif/boards/waveshare_esp32_s3_tiny/mpconfigboard.mk new file mode 100644 index 000000000000..334e3159c87c --- /dev/null +++ b/ports/espressif/boards/waveshare_esp32_s3_tiny/mpconfigboard.mk @@ -0,0 +1,14 @@ +USB_VID = 0x303a +USB_PID = 0x81F8 +USB_PRODUCT = "ESP32-S3-Tiny" +USB_MANUFACTURER = "Waveshare Electronics" + +IDF_TARGET = esp32s3 + +CIRCUITPY_ESP_FLASH_MODE = qio +CIRCUITPY_ESP_FLASH_FREQ = 80m +CIRCUITPY_ESP_FLASH_SIZE = 4MB + +CIRCUITPY_ESP_PSRAM_SIZE = 2MB +CIRCUITPY_ESP_PSRAM_MODE = qio +CIRCUITPY_ESP_PSRAM_FREQ = 80m diff --git a/ports/espressif/boards/waveshare_esp32_s3_tiny/pins.c b/ports/espressif/boards/waveshare_esp32_s3_tiny/pins.c new file mode 100644 index 000000000000..79a20e91b83b --- /dev/null +++ b/ports/espressif/boards/waveshare_esp32_s3_tiny/pins.c @@ -0,0 +1,61 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "shared-bindings/board/__init__.h" + +STATIC const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_IO1), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_IO2), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_IO3), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_IO4), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_IO5), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_IO6), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_IO7), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_IO8), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_IO9), MP_ROM_PTR(&pin_GPIO9) }, + { MP_ROM_QSTR(MP_QSTR_IO10), MP_ROM_PTR(&pin_GPIO10) }, + { MP_ROM_QSTR(MP_QSTR_IO11), MP_ROM_PTR(&pin_GPIO11) }, + { MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_IO13), MP_ROM_PTR(&pin_GPIO13) }, + { MP_ROM_QSTR(MP_QSTR_IO14), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_IO15), MP_ROM_PTR(&pin_GPIO15) }, + { MP_ROM_QSTR(MP_QSTR_IO16), MP_ROM_PTR(&pin_GPIO16) }, + { MP_ROM_QSTR(MP_QSTR_IO17), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_IO18), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_IO21), MP_ROM_PTR(&pin_GPIO21) }, + { MP_ROM_QSTR(MP_QSTR_IO33), MP_ROM_PTR(&pin_GPIO33) }, + { MP_ROM_QSTR(MP_QSTR_IO34), MP_ROM_PTR(&pin_GPIO34) }, + { MP_ROM_QSTR(MP_QSTR_IO35), MP_ROM_PTR(&pin_GPIO35) }, + { MP_ROM_QSTR(MP_QSTR_IO36), MP_ROM_PTR(&pin_GPIO36) }, + { MP_ROM_QSTR(MP_QSTR_IO37), MP_ROM_PTR(&pin_GPIO37) }, + { MP_ROM_QSTR(MP_QSTR_IO38), MP_ROM_PTR(&pin_GPIO38) }, + { MP_ROM_QSTR(MP_QSTR_IO39), MP_ROM_PTR(&pin_GPIO39) }, + { MP_ROM_QSTR(MP_QSTR_IO40), MP_ROM_PTR(&pin_GPIO40) }, + { MP_ROM_QSTR(MP_QSTR_IO41), MP_ROM_PTR(&pin_GPIO41) }, + { MP_ROM_QSTR(MP_QSTR_IO42), MP_ROM_PTR(&pin_GPIO42) }, + { MP_ROM_QSTR(MP_QSTR_IO43), MP_ROM_PTR(&pin_GPIO43) }, + { MP_ROM_QSTR(MP_QSTR_IO44), MP_ROM_PTR(&pin_GPIO44) }, + { MP_ROM_QSTR(MP_QSTR_IO45), MP_ROM_PTR(&pin_GPIO45) }, + { MP_ROM_QSTR(MP_QSTR_IO46), MP_ROM_PTR(&pin_GPIO46) }, + { MP_ROM_QSTR(MP_QSTR_IO47), MP_ROM_PTR(&pin_GPIO47) }, + { MP_ROM_QSTR(MP_QSTR_IO48), MP_ROM_PTR(&pin_GPIO48) }, + + // NEOPIXEL + { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO38) }, + + // UART + { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO20) }, + { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO19) }, + { MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) }, + // Any pins can be I2C + { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, + // Any pins can be SPI + { MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) }, +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); diff --git a/ports/espressif/boards/waveshare_esp32_s3_tiny/sdkconfig b/ports/espressif/boards/waveshare_esp32_s3_tiny/sdkconfig new file mode 100644 index 000000000000..a491b9f5f019 --- /dev/null +++ b/ports/espressif/boards/waveshare_esp32_s3_tiny/sdkconfig @@ -0,0 +1,15 @@ +# +# Espressif IoT Development Framework Configuration +# +# +# Component config +# +# +# LWIP +# +CONFIG_LWIP_LOCAL_HOSTNAME="waveshare-esp32-s3-tiny" +# end of LWIP + +# end of Component config + +# end of Espressif IoT Development Framework Configuration From b5b13f535654e62402d438c4039e3ca510334a87 Mon Sep 17 00:00:00 2001 From: Tobias Schmale Date: Sat, 25 May 2024 15:35:46 +0000 Subject: [PATCH 057/227] espulp: update docs --- ports/espressif/bindings/espulp/ULP.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/ports/espressif/bindings/espulp/ULP.c b/ports/espressif/bindings/espulp/ULP.c index 4613d785a7c3..223ae5db0464 100644 --- a/ports/espressif/bindings/espulp/ULP.c +++ b/ports/espressif/bindings/espulp/ULP.c @@ -91,7 +91,9 @@ STATIC mp_obj_t espulp_ulp_obj___exit__(size_t n_args, const mp_obj_t *args) { STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(espulp_ulp___exit___obj, 4, 4, espulp_ulp_obj___exit__); //| def set_wakeup_period(self, period_index: int, period_us: int) -> None: -//| """Sets the wakeup period for the ULP.""" +//| """Sets the wakeup period in microseconds for the ULP. +//| Up to 5 different wakeup periods can be stored (`period_index` = 0..4). +//| By default, period index 0 is used.""" //| ... STATIC mp_obj_t espulp_ulp_set_wakeup_period(mp_obj_t self_in, mp_obj_t period_index, mp_obj_t period_us) { espulp_ulp_obj_t *self = MP_OBJ_TO_PTR(self_in); @@ -108,10 +110,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_3(espulp_ulp_set_wakeup_period_obj, espulp_ulp_se //| self, //| program: ReadableBuffer, //| *, -//| entrypoint: int, +//| entrypoint: int = 0, //| pins: Sequence[microcontroller.Pin] = () //| ) -> None: -//| """Loads the program into ULP memory and then runs the program, starting at entry_point. +//| """Loads the program into ULP memory and then runs the program. +//| `entry_point` specifies the offset (in bytes) of the first instruction +//| from the start of the program. //| The given pins are claimed and not reset until `halt()` is called. //| //| The program will continue to run even when the running Python is halted.""" From fb4da28f61e702e59f63ba7ae264e92235b3923c Mon Sep 17 00:00:00 2001 From: Tobias Schmale Date: Sun, 26 May 2024 12:59:39 +0000 Subject: [PATCH 058/227] espulp: update docs and fix halt() for esp32 --- ports/espressif/bindings/espulp/ULP.c | 11 ++++++++--- ports/espressif/common-hal/espulp/ULP.c | 23 ++++++++++++++++------- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/ports/espressif/bindings/espulp/ULP.c b/ports/espressif/bindings/espulp/ULP.c index 223ae5db0464..ecc903edaf4f 100644 --- a/ports/espressif/bindings/espulp/ULP.c +++ b/ports/espressif/bindings/espulp/ULP.c @@ -39,7 +39,8 @@ //| Raises an exception if another ULP has been instantiated. This //| ensures that is is only used by one piece of code at a time. //| -//| :param Architecture arch: The ulp arch""" +//| :param Architecture arch: The ulp arch. Only `FSM` architecture +//| is currently supported.""" //| ... STATIC mp_obj_t espulp_ulp_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_arch }; @@ -148,7 +149,9 @@ STATIC mp_obj_t espulp_ulp_run(size_t n_args, const mp_obj_t *pos_args, mp_map_t for (mp_uint_t i = 0; i < num_pins; i++) { mp_obj_t pin_obj = mp_obj_subscr(pins_in, MP_OBJ_NEW_SMALL_INT(i), MP_OBJ_SENTINEL); - validate_obj_is_free_pin(pin_obj, MP_QSTR_pin); + // common-hal checks that pin is free (that way a possible "ULP already running" error + // is triggered before a possible "Pin in use" error, if ulp.run is called twice with the same pins). + validate_obj_is_pin(pin_obj, MP_QSTR_pin); const mcu_pin_obj_t *pin = ((const mcu_pin_obj_t *)pin_obj); if (pin->number >= 32) { raise_ValueError_invalid_pin(); @@ -162,7 +165,9 @@ STATIC mp_obj_t espulp_ulp_run(size_t n_args, const mp_obj_t *pos_args, mp_map_t STATIC MP_DEFINE_CONST_FUN_OBJ_KW(espulp_ulp_run_obj, 2, espulp_ulp_run); //| def halt(self) -> None: -//| """Halts the running program and releases the pins given in `run()`.""" +//| """Halts the running program and releases the pins given in `run()`. +//| Note: for the FSM ULP, a running ULP program is not actually interupted. +//| Instead, only the wakeup timer is stopped.""" //| ... STATIC mp_obj_t espulp_ulp_halt(mp_obj_t self_in) { espulp_ulp_obj_t *self = MP_OBJ_TO_PTR(self_in); diff --git a/ports/espressif/common-hal/espulp/ULP.c b/ports/espressif/common-hal/espulp/ULP.c index bd5d03e23f59..905172ace2e6 100644 --- a/ports/espressif/common-hal/espulp/ULP.c +++ b/ports/espressif/common-hal/espulp/ULP.c @@ -131,13 +131,22 @@ void common_hal_espulp_ulp_run(espulp_ulp_obj_t *self, uint32_t *program, size_t } void common_hal_espulp_ulp_halt(espulp_ulp_obj_t *self) { - #ifdef CONFIG_ULP_COPROC_TYPE_RISCV - if (self->arch == RISCV) { - ulp_riscv_timer_stop(); - ulp_riscv_halt(); - } - #endif - CLEAR_PERI_REG_MASK(RTC_CNTL_ULP_CP_TIMER_REG, RTC_CNTL_ULP_CP_SLP_TIMER_EN); + switch (self->arch) { + #ifdef CONFIG_ULP_COPROC_TYPE_FSM + case FSM: + ulp_timer_stop(); + break; + #endif + #ifdef CONFIG_ULP_COPROC_TYPE_RISCV + case RISCV: + ulp_riscv_timer_stop(); + ulp_riscv_halt(); + break; + #endif + default: + mp_raise_NotImplementedError(NULL); + break; + } // Release pins we were using. for (uint8_t i = 0; i < 32; i++) { From 91309402ea74b655789b978e534af41c53939373 Mon Sep 17 00:00:00 2001 From: Tobias Schmale Date: Sun, 26 May 2024 13:01:36 +0000 Subject: [PATCH 059/227] espulp: fix indentation --- ports/espressif/common-hal/espulp/ULP.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ports/espressif/common-hal/espulp/ULP.c b/ports/espressif/common-hal/espulp/ULP.c index 905172ace2e6..6946fc065d2e 100644 --- a/ports/espressif/common-hal/espulp/ULP.c +++ b/ports/espressif/common-hal/espulp/ULP.c @@ -131,7 +131,7 @@ void common_hal_espulp_ulp_run(espulp_ulp_obj_t *self, uint32_t *program, size_t } void common_hal_espulp_ulp_halt(espulp_ulp_obj_t *self) { - switch (self->arch) { + switch (self->arch) { #ifdef CONFIG_ULP_COPROC_TYPE_FSM case FSM: ulp_timer_stop(); @@ -146,7 +146,7 @@ void common_hal_espulp_ulp_halt(espulp_ulp_obj_t *self) { default: mp_raise_NotImplementedError(NULL); break; - } + } // Release pins we were using. for (uint8_t i = 0; i < 32; i++) { From 52878c69cf1a0c32fac7b61fe0d677daed724507 Mon Sep 17 00:00:00 2001 From: Tobias Schmale Date: Sun, 26 May 2024 14:21:37 +0000 Subject: [PATCH 060/227] fix pre-commit issues --- ports/espressif/bindings/espulp/ULP.c | 16 ++++++++-------- ports/espressif/common-hal/espulp/ULP.c | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/ports/espressif/bindings/espulp/ULP.c b/ports/espressif/bindings/espulp/ULP.c index e2d2f3a4ffb1..de4deb4ff937 100644 --- a/ports/espressif/bindings/espulp/ULP.c +++ b/ports/espressif/bindings/espulp/ULP.c @@ -19,7 +19,7 @@ //| Raises an exception if another ULP has been instantiated. This //| ensures that is is only used by one piece of code at a time. //| -//| :param Architecture arch: The ulp arch. Only `FSM` architecture +//| :param Architecture arch: The ulp arch. Only `FSM` architecture //| is currently supported.""" //| ... static mp_obj_t espulp_ulp_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { @@ -72,9 +72,9 @@ static mp_obj_t espulp_ulp_obj___exit__(size_t n_args, const mp_obj_t *args) { static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(espulp_ulp___exit___obj, 4, 4, espulp_ulp_obj___exit__); //| def set_wakeup_period(self, period_index: int, period_us: int) -> None: -//| """Sets the wakeup period in microseconds for the ULP. -//| Up to 5 different wakeup periods can be stored (`period_index` = 0..4). -//| By default, period index 0 is used.""" +//| """Sets the wakeup period in microseconds for the ULP. +//| Up to 5 different wakeup periods can be stored (`period_index` = 0..4). +//| By default, period index 0 is used.""" //| ... static mp_obj_t espulp_ulp_set_wakeup_period(mp_obj_t self_in, mp_obj_t period_index, mp_obj_t period_us) { espulp_ulp_obj_t *self = MP_OBJ_TO_PTR(self_in); @@ -96,7 +96,7 @@ static MP_DEFINE_CONST_FUN_OBJ_3(espulp_ulp_set_wakeup_period_obj, espulp_ulp_se //| ) -> None: //| """Loads the program into ULP memory and then runs the program. //| `entry_point` specifies the offset (in bytes) of the first instruction -//| from the start of the program. +//| from the start of the program. //| The given pins are claimed and not reset until `halt()` is called. //| //| The program will continue to run even when the running Python is halted.""" @@ -131,7 +131,7 @@ static mp_obj_t espulp_ulp_run(size_t n_args, const mp_obj_t *pos_args, mp_map_t mp_obj_t pin_obj = mp_obj_subscr(pins_in, MP_OBJ_NEW_SMALL_INT(i), MP_OBJ_SENTINEL); // common-hal checks that pin is free (that way a possible "ULP already running" error // is triggered before a possible "Pin in use" error, if ulp.run is called twice with the same pins). - validate_obj_is_pin(pin_obj, MP_QSTR_pin); + validate_obj_is_pin(pin_obj, MP_QSTR_pin); const mcu_pin_obj_t *pin = ((const mcu_pin_obj_t *)pin_obj); if (pin->number >= 32) { raise_ValueError_invalid_pin(); @@ -146,8 +146,8 @@ static MP_DEFINE_CONST_FUN_OBJ_KW(espulp_ulp_run_obj, 2, espulp_ulp_run); //| def halt(self) -> None: //| """Halts the running program and releases the pins given in `run()`. -//| Note: for the FSM ULP, a running ULP program is not actually interupted. -//| Instead, only the wakeup timer is stopped.""" +//| Note: for the FSM ULP, a running ULP program is not actually interrupted. +//| Instead, only the wakeup timer is stopped.""" //| ... static mp_obj_t espulp_ulp_halt(mp_obj_t self_in) { espulp_ulp_obj_t *self = MP_OBJ_TO_PTR(self_in); diff --git a/ports/espressif/common-hal/espulp/ULP.c b/ports/espressif/common-hal/espulp/ULP.c index 816d1ca61b7c..60b5a79e2a39 100644 --- a/ports/espressif/common-hal/espulp/ULP.c +++ b/ports/espressif/common-hal/espulp/ULP.c @@ -79,7 +79,7 @@ void common_hal_espulp_ulp_run(espulp_ulp_obj_t *self, uint32_t *program, size_t // Main purpose of ULP is to run while main cpu is in deep sleep, so // ensure GPIO Power Domain remains enabled during deep sleep, // if any GPIO were supplied here. - if (pins_used > 0){ + if (pins_used > 0) { esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); } From 008ae936dabc56e72f2adb52b991cd850fddbcef Mon Sep 17 00:00:00 2001 From: Tim Date: Sun, 26 May 2024 08:17:51 -0700 Subject: [PATCH 061/227] add board summaries --- docs/board_summaries.py | 180 +++++++++++++++++++++++++++++++++ docs/shared_bindings_matrix.py | 117 +++++++++++++++++---- 2 files changed, 275 insertions(+), 22 deletions(-) create mode 100644 docs/board_summaries.py diff --git a/docs/board_summaries.py b/docs/board_summaries.py new file mode 100644 index 000000000000..13cbe793abe7 --- /dev/null +++ b/docs/board_summaries.py @@ -0,0 +1,180 @@ +# The MIT License (MIT) +# +# SPDX-FileCopyrightText: Copyright (c) 2024 Tim Chinowsky +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# + +import re +from shared_bindings_matrix import support_matrix_by_board + + +def module_incidence_matrix_csvs(support_matrix, rows=1000, present="1", absent=""): + all_modules = set() + for info in support_matrix.values(): + all_modules.update(info["modules"]) + all_modules = sorted(all_modules) + csvs = [] + row = 0 + for board, info in support_matrix.items(): + if (row % rows) == 0: + csv = ["board,branded_name,mcu,flash,port,pins," + + ','.join(all_modules) + '\n'] + chip_pin_set = set([chip_pin for _, chip_pin in info["pins"]]) + n_chip_pins = len(chip_pin_set) + module_incidence = [present if m in info["modules"] + else absent for m in all_modules] + line = f"{board},{info.get('branded_name')},{info.get('mcu')}," + \ + f"{info.get('flash')},{info.get('port')},{n_chip_pins}," + \ + ','.join(module_incidence) + '\n' + csv.append(line) + row += 1 + if (row % rows) == 0: + csvs.append(csv) + if (row % rows) != 0: + csvs.append(csv) + return csvs + + +def frozen_incidence_matrix_csvs(support_matrix, rows=1000, present="1", absent=""): + all_frozen = set() + for info in support_matrix.values(): + frozen = info["frozen_libraries"] + frozen = [f[0] if type(f) == tuple else f for f in frozen] + all_frozen.update(frozen) + all_frozen = sorted(all_frozen) + csvs = [] + row = 0 + for board, info in support_matrix.items(): + if (row % rows) == 0: + csv = ["board,branded_name,mcu,flash,port,pins," + + ",".join(all_frozen) + "\n"] + # remove urls if present + frozen = info["frozen_libraries"] + + chip_pin_set = set([chip_pin for _, chip_pin in info["pins"]]) + n_chip_pins = len(chip_pin_set) + + frozen = [f[0] if type(f) == tuple else f for f in frozen] + frozen_incidence = [present if f in frozen else absent for f in all_frozen] + line = f"{board},{info.get('branded_name')},{info.get('mcu')}," + \ + f"{info.get('flash')},{info.get('port')},{n_chip_pins}," + \ + ",".join(frozen_incidence) + '\n' + csv.append(line) + row += 1 + if (row % rows) == 0: + csvs.append(csv) + if (row % rows) != 0: + csvs.append(csv) + return csvs + + +def summarize_pins(pins): + """Given a list of pin names, generate a compact string + like "BUTTON, LED1:4, PA0:10;13:14, PB5:7, SCL, SDA" + summarizing the names in the list""" + pin_prefixes = {} + for p in pins: + match = re.match(r'^(.*?)(\d*)$', p) + if match: + prefix = match.group(1) + n_str = match.group(2) + else: + raise ValueError("Cannot parse pin name") + if prefix in pin_prefixes : + pin_prefixes[prefix].add(n_str) + else: + pin_prefixes[prefix] = {n_str} + + return ', '.join([f"{prefix}{span_string(pin_prefixes[prefix])}" + for prefix in sorted(pin_prefixes.keys())]) + + +def int_or_zero(s): + try: + return int(s) + except ValueError: + return 0 + + +def span_string(number_strs): + int_strs = sorted([(int_or_zero(s), s) for s in number_strs]) + last_i = None + last_s = None + run = False + for i, s in int_strs: + if last_i is None: + out = s + elif i != last_i + 1: + if run: + out += f":{last_s};{s}" + else: + out += f";{s}" + run = False + else: + run = True + last_i = i + last_s = s + if run: + out += f":{s}" + return out + + +def board_pins_matrix_csvs(support_matrix, rows=1000): + csvs = [] + row = 0 + for board, info in support_matrix.items(): + if (row % rows) == 0: + csv = ["board,branded_name,mcu,flash,port,n_board_pins," + "board_pins,n_chip_pins,chip_pins\n"] + board_pins = [board_pin for board_pin, _ in info["pins"]] + chip_pins = [chip_pin for _, chip_pin in info["pins"]] + line = f"{board},{info.get('branded_name')},{info.get('mcu')}," + \ + f"{info.get('flash')},{info.get('port')}," + \ + str(len(set(board_pins))) + ',"' + summarize_pins(board_pins) + '",' + \ + str(len(set(chip_pins))) + ',"' + summarize_pins(chip_pins) + '"\n' + csv.append(line) + row += 1 + if (row % rows) == 0: + csvs.append(csv) + if (row % rows) != 0: + csvs.append(csv) + return csvs + + +def write_csvs(rows=1000, present="1", absent="0"): + print('generating csvs...') + s = support_matrix_by_board(use_branded_name=False, add_port=True, + add_chips=True, add_pins=True, + add_branded_name=True) + csvs = {"modules": module_incidence_matrix_csvs(s, rows=rows, + present=present, absent=absent), + "frozen": frozen_incidence_matrix_csvs(s, rows=rows, + present=present, absent=absent), + "pins": board_pins_matrix_csvs(s, rows=rows)} + for key in csvs: + for i in range(len(csvs[key])): + filename = f"{key}_{i}.csv" + print(f'writing {filename}') + with open(filename, "w") as f: + f.writelines(csvs[key][i]) + + +if __name__ == "__main__": + write_csvs() diff --git a/docs/shared_bindings_matrix.py b/docs/shared_bindings_matrix.py index 3fd00e9b66ca..0f98a5e16755 100644 --- a/docs/shared_bindings_matrix.py +++ b/docs/shared_bindings_matrix.py @@ -26,8 +26,7 @@ import pathlib import re import subprocess -import sys -import functools + from concurrent.futures import ThreadPoolExecutor @@ -57,7 +56,8 @@ ALIASES_BRAND_NAMES = { "circuitplayground_express_4h": "Adafruit Circuit Playground Express 4-H", - "circuitplayground_express_digikey_pycon2019": "Circuit Playground Express Digi-Key PyCon 2019", + "circuitplayground_express_digikey_pycon2019": + "Circuit Playground Express Digi-Key PyCon 2019", "edgebadge": "Adafruit EdgeBadge", "pyportal_pynt": "Adafruit PyPortal Pynt", "gemma_m0_pycon2018": "Adafruit Gemma M0 PyCon 2018", @@ -87,7 +87,7 @@ "usb": "CIRCUITPY_PYUSB", } -MODULES_NOT_IN_BINDINGS = [ "binascii", "errno", "json", "re", "ulab" ] +MODULES_NOT_IN_BINDINGS = ["binascii", "errno", "json", "re", "ulab"] FROZEN_EXCLUDES = ["examples", "docs", "tests", "utils", "conf.py", "setup.py"] """Files and dirs at the root of a frozen directory that should be ignored. @@ -105,7 +105,8 @@ def get_circuitpython_root_dir(): def get_bindings(): - """Get a list of modules in shared-bindings and ports/*/bindings based on folder names.""" + """Get a list of modules in shared-bindings and ports/*/bindings + based on folder names.""" shared_bindings_modules = [ module.name for module in (get_circuitpython_root_dir() / "shared-bindings").iterdir() @@ -114,7 +115,8 @@ def get_bindings(): bindings_modules = [] for d in get_circuitpython_root_dir().glob("ports/*/bindings"): bindings_modules.extend(module.name for module in d.iterdir() if d.is_dir()) - return shared_bindings_modules + bindings_modules + MODULES_NOT_IN_BINDINGS + list(ADDITIONAL_MODULES.keys()) + return shared_bindings_modules + bindings_modules + MODULES_NOT_IN_BINDINGS + \ + list(ADDITIONAL_MODULES.keys()) def get_board_mapping(): @@ -127,7 +129,6 @@ def get_board_mapping(): board_path = root_dir / "ports" / port / "boards" for board_path in os.scandir(board_path): if board_path.is_dir(): - board_files = os.listdir(board_path.path) board_id = board_path.name aliases = ALIASES_BY_BOARD.get(board_path.name, []) boards[board_id] = { @@ -181,7 +182,10 @@ def get_settings_from_makefile(port_dir, board_name): } contents = subprocess.run( - ["make", "-C", port_dir, "-f", "Makefile", f"BOARD={board_name}", "print-CFLAGS", "print-CIRCUITPY_BUILD_EXTENSIONS", "print-FROZEN_MPY_DIRS", "print-SRC_PATTERNS", "print-SRC_SUPERVISOR"], + ["make", "-C", port_dir, "-f", "Makefile", f"BOARD={board_name}", + "print-CFLAGS", "print-CIRCUITPY_BUILD_EXTENSIONS", + "print-FROZEN_MPY_DIRS", "print-SRC_PATTERNS", + "print-SRC_SUPERVISOR"], encoding="utf-8", errors="replace", stdout=subprocess.PIPE, @@ -288,7 +292,6 @@ def lookup_setting(settings, key, default=""): return value -@functools.cache def all_ports_all_boards(ports=SUPPORTED_PORTS): for port in ports: port_dir = get_circuitpython_root_dir() / "ports" / port @@ -298,7 +301,9 @@ def all_ports_all_boards(ports=SUPPORTED_PORTS): yield (port, entry) -def support_matrix_by_board(use_branded_name=True, withurl=True): +def support_matrix_by_board(use_branded_name=True, withurl=True, + add_port=False, add_chips=False, + add_pins=False, add_branded_name=False): """Compiles a list of the available core modules available for each board. """ @@ -309,17 +314,64 @@ def support_matrix(arg): port_dir = get_circuitpython_root_dir() / "ports" / port settings = get_settings_from_makefile(str(port_dir), entry.name) - if use_branded_name: + if use_branded_name or add_branded_name: with open(entry / "mpconfigboard.h") as get_name: board_contents = get_name.read() board_name_re = re.search( r"(?<=MICROPY_HW_BOARD_NAME)\s+(.+)", board_contents ) if board_name_re: - board_name = board_name_re.group(1).strip('"') + branded_name = board_name_re.group(1).strip('"') + if '"' in branded_name: # sometimes the closing " is not at line end + branded_name = branded_name[:branded_name.index('"')] + board_name = branded_name + + if use_branded_name: + board_name = branded_name else: board_name = entry.name + if add_chips: + with open(entry / "mpconfigboard.h") as get_name: + board_contents = get_name.read() + mcu_re = re.search( + r'(?<=MICROPY_HW_MCU_NAME)\s+(.+)', board_contents + ) + if mcu_re: + mcu = mcu_re.group(1).strip('"') + if '"' in mcu: # in case the closing " is not at line end + mcu = mcu[:mcu.index('"')] + else: + mcu = "" + with open(entry / "mpconfigboard.mk") as get_name: + board_contents = get_name.read() + flash_re = re.search( + r'(?<=EXTERNAL_FLASH_DEVICES)\s+=\s+(.+)', board_contents + ) + if flash_re: + # deal with the variability in the way multiple flash chips + # are denoted. We want them to end up as a quoted, + # comma separated string + flash = flash_re.group(1).replace('"','') + flash = f'"{flash}"' + else: + flash = "" + + if add_pins: + pins = [] + try: + with open(entry / "pins.c") as get_name: + pin_lines = get_name.readlines() + except FileNotFoundError: # silabs boards have no pins.c + pass + else: + for p in pin_lines: + pin_re = re.search(r"QSTR_([^\)]+).+pin_([^\)]+)", p) + if pin_re: + board_pin = pin_re.group(1) + chip_pin = pin_re.group(2) + pins.append((board_pin, chip_pin)) + board_modules = [] for module in base: key = base[module]["key"] @@ -344,14 +396,25 @@ def support_matrix(arg): frozen_modules.sort() # generate alias boards too + + board_info = { + "modules": board_modules, + "frozen_libraries": frozen_modules, + "extensions": board_extensions, + } + if add_branded_name: + board_info["branded_name"] = branded_name + if add_port: + board_info["port"] = port + if add_chips: + board_info["mcu"] = mcu + board_info["flash"] = flash + if add_pins: + board_info["pins"] = pins board_matrix = [ ( board_name, - { - "modules": board_modules, - "frozen_libraries": frozen_modules, - "extensions": board_extensions, - }, + board_info ) ] if entry.name in ALIASES_BY_BOARD: @@ -361,14 +424,24 @@ def support_matrix(arg): alias = ALIASES_BRAND_NAMES[alias] else: alias = alias.replace("_", " ").title() + board_info = { + "modules": board_modules, + "frozen_libraries": frozen_modules, + "extensions": board_extensions, + } + if add_branded_name: + board_info["branded_name"] = branded_name + if add_port: + board_info["port"] = port + if add_chips: + board_info["mcu"] = mcu + board_info["flash"] = flash + if add_pins: + board_info["pins"] = pins board_matrix.append( ( alias, - { - "modules": board_modules, - "frozen_libraries": frozen_modules, - "extensions": board_extensions, - }, + board_info ) ) From 8d578670be362d3f462a5dda2bd5ed6fb290c50c Mon Sep 17 00:00:00 2001 From: Tuan Nguyen Date: Sun, 26 May 2024 22:59:13 +0700 Subject: [PATCH 062/227] espressif: Enable the _eve module by default for future ESP boards - Refactored build configurations into mpconfigport Signed-off-by: Tuan Nguyen --- .../boards/adafruit_feather_esp32_v2/mpconfigboard.mk | 2 -- .../boards/adafruit_feather_esp32s2/mpconfigboard.mk | 2 -- .../mpconfigboard.mk | 2 -- .../adafruit_feather_esp32s3_nopsram/mpconfigboard.mk | 2 -- .../boards/adafruit_feather_huzzah32/mpconfigboard.mk | 2 -- .../boards/adafruit_huzzah32_breakout/mpconfigboard.mk | 2 -- .../boards/adafruit_itsybitsy_esp32/mpconfigboard.mk | 2 -- .../boards/adafruit_matrixportal_s3/mpconfigboard.mk | 2 -- .../boards/adafruit_metro_esp32s2/mpconfigboard.mk | 2 -- .../boards/adafruit_metro_esp32s3/mpconfigboard.mk | 2 -- .../boards/adafruit_qtpy_esp32_pico/mpconfigboard.mk | 2 -- .../boards/adafruit_qtpy_esp32s2/mpconfigboard.mk | 2 -- .../mpconfigboard.mk | 2 -- .../adafruit_qtpy_esp32s3_nopsram/mpconfigboard.mk | 2 -- .../boards/adafruit_qualia_s3_rgb666/mpconfigboard.mk | 2 -- .../boards/ai_thinker_esp32-c3s-2m/mpconfigboard.mk | 2 -- .../boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.mk | 2 -- .../boards/arduino_nano_esp32s3/mpconfigboard.mk | 2 -- .../mpconfigboard.mk | 2 -- .../mpconfigboard.mk | 2 -- .../espressif_esp32_devkitc_v4_wrover/mpconfigboard.mk | 2 -- .../boards/espressif_esp32_eye/mpconfigboard.mk | 2 -- .../boards/espressif_esp32_lyrat/mpconfigboard.mk | 2 -- .../espressif_esp32c6_devkitc_1_n8/mpconfigboard.mk | 2 -- .../espressif_esp32c6_devkitm_1_n4/mpconfigboard.mk | 2 -- .../espressif_esp32h2_devkitm_1_n4/mpconfigboard.mk | 2 -- .../espressif_esp32s2_devkitc_1_n4/mpconfigboard.mk | 2 -- .../espressif_esp32s2_devkitc_1_n4r2/mpconfigboard.mk | 2 -- .../espressif_esp32s2_devkitc_1_n8r2/mpconfigboard.mk | 2 -- .../espressif_esp32s3_devkitc_1_n32r8/mpconfigboard.mk | 2 -- .../espressif_esp32s3_devkitc_1_n8/mpconfigboard.mk | 2 -- .../espressif_esp32s3_devkitc_1_n8r2/mpconfigboard.mk | 2 -- .../espressif_esp32s3_devkitc_1_n8r8/mpconfigboard.mk | 2 -- .../espressif_esp32s3_devkitm_1_n8/mpconfigboard.mk | 2 -- .../boards/espressif_esp32s3_eye/mpconfigboard.mk | 2 -- .../boards/espressif_saola_1_wroom/mpconfigboard.mk | 2 -- .../boards/espressif_saola_1_wrover/mpconfigboard.mk | 2 -- ports/espressif/mpconfigport.mk | 9 +++++++++ 38 files changed, 9 insertions(+), 74 deletions(-) diff --git a/ports/espressif/boards/adafruit_feather_esp32_v2/mpconfigboard.mk b/ports/espressif/boards/adafruit_feather_esp32_v2/mpconfigboard.mk index bad82f5caef7..2569b1cabb11 100644 --- a/ports/espressif/boards/adafruit_feather_esp32_v2/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_feather_esp32_v2/mpconfigboard.mk @@ -10,5 +10,3 @@ CIRCUITPY_ESP_FLASH_SIZE = 8MB CIRCUITPY_ESP_PSRAM_SIZE = 2MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 40m - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_feather_esp32s2/mpconfigboard.mk b/ports/espressif/boards/adafruit_feather_esp32s2/mpconfigboard.mk index df77ff19e61e..891c70311550 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s2/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_feather_esp32s2/mpconfigboard.mk @@ -12,5 +12,3 @@ CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESP_PSRAM_SIZE = 2MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 80m - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/mpconfigboard.mk b/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/mpconfigboard.mk index 63e05d845c63..68abfe8cca7f 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_feather_esp32s3_4mbflash_2mbpsram/mpconfigboard.mk @@ -16,5 +16,3 @@ CIRCUITPY_ESP_PSRAM_FREQ = 80m OPTIMIZATION_FLAGS = -Os CIRCUITPY_ESPCAMERA = 0 CIRCUITPY_PARALLELDISPLAYBUS = 0 - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/mpconfigboard.mk b/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/mpconfigboard.mk index 4619daf5d7f4..bf0dc3f320f5 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_feather_esp32s3_nopsram/mpconfigboard.mk @@ -9,5 +9,3 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 8MB CIRCUITPY_ESPCAMERA = 0 - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_feather_huzzah32/mpconfigboard.mk b/ports/espressif/boards/adafruit_feather_huzzah32/mpconfigboard.mk index e1c91c7cefad..c6ca0ba66eb4 100644 --- a/ports/espressif/boards/adafruit_feather_huzzah32/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_feather_huzzah32/mpconfigboard.mk @@ -8,5 +8,3 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESPCAMERA = 0 - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_huzzah32_breakout/mpconfigboard.mk b/ports/espressif/boards/adafruit_huzzah32_breakout/mpconfigboard.mk index acdf9bde2c8d..3d53e1594222 100644 --- a/ports/espressif/boards/adafruit_huzzah32_breakout/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_huzzah32_breakout/mpconfigboard.mk @@ -8,5 +8,3 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESPCAMERA = 0 - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_itsybitsy_esp32/mpconfigboard.mk b/ports/espressif/boards/adafruit_itsybitsy_esp32/mpconfigboard.mk index 5f3391c3b476..a32c17b806df 100644 --- a/ports/espressif/boards/adafruit_itsybitsy_esp32/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_itsybitsy_esp32/mpconfigboard.mk @@ -10,5 +10,3 @@ CIRCUITPY_ESP_FLASH_SIZE = 8MB CIRCUITPY_ESP_PSRAM_SIZE = 2MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 40m - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_matrixportal_s3/mpconfigboard.mk b/ports/espressif/boards/adafruit_matrixportal_s3/mpconfigboard.mk index c79da8c2a137..51a03b346102 100644 --- a/ports/espressif/boards/adafruit_matrixportal_s3/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_matrixportal_s3/mpconfigboard.mk @@ -17,5 +17,3 @@ CIRCUITPY_ESPCAMERA = 0 # Not enough pins. CIRCUITPY_PARALLELDISPLAYBUS = 0 - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.mk b/ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.mk index d6f80819f9d5..20fa567f1bcd 100644 --- a/ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.mk @@ -12,5 +12,3 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_PSRAM_SIZE = 2MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 80m - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_metro_esp32s3/mpconfigboard.mk b/ports/espressif/boards/adafruit_metro_esp32s3/mpconfigboard.mk index 0366348fba49..2fd5a40f2591 100644 --- a/ports/espressif/boards/adafruit_metro_esp32s3/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_metro_esp32s3/mpconfigboard.mk @@ -12,5 +12,3 @@ CIRCUITPY_ESP_FLASH_SIZE = 16MB CIRCUITPY_ESP_PSRAM_MODE = opi CIRCUITPY_ESP_PSRAM_FREQ = 80m CIRCUITPY_ESP_PSRAM_SIZE = 8MB - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_qtpy_esp32_pico/mpconfigboard.mk b/ports/espressif/boards/adafruit_qtpy_esp32_pico/mpconfigboard.mk index ddda1e36af1b..e27e48cf51ea 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32_pico/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_qtpy_esp32_pico/mpconfigboard.mk @@ -13,5 +13,3 @@ CIRCUITPY_ESP_PSRAM_FREQ = 80m # Not enough pins. CIRCUITPY_PARALLELDISPLAYBUS = 0 - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.mk b/ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.mk index c76d5eca5d57..4d5b1b636df2 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.mk @@ -16,5 +16,3 @@ CIRCUITPY_ESP_PSRAM_FREQ = 80m # Not enough pins. CIRCUITPY_PARALLELDISPLAYBUS = 0 - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/mpconfigboard.mk b/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/mpconfigboard.mk index 6bdbd69924b0..afc6e335c1a4 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_qtpy_esp32s3_4mbflash_2mbpsram/mpconfigboard.mk @@ -16,5 +16,3 @@ CIRCUITPY_ESP_PSRAM_FREQ = 80m CIRCUITPY_ESPCAMERA = 0 # Not enough pins. CIRCUITPY_PARALLELDISPLAYBUS = 0 - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/mpconfigboard.mk b/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/mpconfigboard.mk index a0dba9920411..43ac269cd099 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_qtpy_esp32s3_nopsram/mpconfigboard.mk @@ -14,5 +14,3 @@ CIRCUITPY_ESPCAMERA = 0 # Not enough pins. CIRCUITPY_PARALLELDISPLAYBUS = 0 - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/adafruit_qualia_s3_rgb666/mpconfigboard.mk b/ports/espressif/boards/adafruit_qualia_s3_rgb666/mpconfigboard.mk index 69bb6aa95095..65c872cf74b8 100644 --- a/ports/espressif/boards/adafruit_qualia_s3_rgb666/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_qualia_s3_rgb666/mpconfigboard.mk @@ -14,5 +14,3 @@ CIRCUITPY_ESP_PSRAM_MODE = opi CIRCUITPY_ESP_PSRAM_FREQ = 80m CIRCUITPY_DOTCLOCKFRAMEBUFFER = 1 - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/ai_thinker_esp32-c3s-2m/mpconfigboard.mk b/ports/espressif/boards/ai_thinker_esp32-c3s-2m/mpconfigboard.mk index 524c306582ad..515b6da5c07c 100644 --- a/ports/espressif/boards/ai_thinker_esp32-c3s-2m/mpconfigboard.mk +++ b/ports/espressif/boards/ai_thinker_esp32-c3s-2m/mpconfigboard.mk @@ -10,5 +10,3 @@ CIRCUITPY_ESP_FLASH_SIZE = 2MB CIRCUITPY_DUALBANK = 0 CIRCUITPY_ESP_USB_SERIAL_JTAG = 0 - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.mk b/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.mk index cda74878377b..43c5bd8d89fa 100644 --- a/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.mk +++ b/ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.mk @@ -12,5 +12,3 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_PSRAM_SIZE = 8MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 80m - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/arduino_nano_esp32s3/mpconfigboard.mk b/ports/espressif/boards/arduino_nano_esp32s3/mpconfigboard.mk index 6bf584881bf3..3abf3d9afcbb 100644 --- a/ports/espressif/boards/arduino_nano_esp32s3/mpconfigboard.mk +++ b/ports/espressif/boards/arduino_nano_esp32s3/mpconfigboard.mk @@ -23,5 +23,3 @@ QSPI_FLASH_FILESYSTEM = 1 EXTERNAL_FLASH_DEVICES = GD25WQ128E CIRCUITPY_ESPCAMERA = 0 - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/mpconfigboard.mk b/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/mpconfigboard.mk index 6bf584881bf3..3abf3d9afcbb 100644 --- a/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/mpconfigboard.mk +++ b/ports/espressif/boards/arduino_nano_esp32s3_inverted_statusled/mpconfigboard.mk @@ -23,5 +23,3 @@ QSPI_FLASH_FILESYSTEM = 1 EXTERNAL_FLASH_DEVICES = GD25WQ128E CIRCUITPY_ESPCAMERA = 0 - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/mpconfigboard.mk index e6a4593358c5..495a505fe761 100644 --- a/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/mpconfigboard.mk @@ -8,5 +8,3 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESPCAMERA = 0 - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/mpconfigboard.mk index 285f89715a8d..6ff7d4e519bd 100644 --- a/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32_devkitc_v4_wrover/mpconfigboard.mk @@ -12,5 +12,3 @@ CIRCUITPY_ESPCAMERA = 0 CIRCUITPY_ESP_PSRAM_SIZE = 8MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 40m - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32_eye/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32_eye/mpconfigboard.mk index 091cb9808dde..72eb1db85a01 100644 --- a/ports/espressif/boards/espressif_esp32_eye/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32_eye/mpconfigboard.mk @@ -20,5 +20,3 @@ CIRCUITPY_PS2IO = 0 CIRCUITPY_ROTARYIO = 0 CIRCUITPY_TOUCHIO = 0 CIRCUITPY_KEYPAD = 0 - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32_lyrat/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32_lyrat/mpconfigboard.mk index e4a53e27ef7a..b1dd2f9f8774 100644 --- a/ports/espressif/boards/espressif_esp32_lyrat/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32_lyrat/mpconfigboard.mk @@ -12,5 +12,3 @@ CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 40m CIRCUITPY_ESPCAMERA = 0 - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/mpconfigboard.mk index af83b79676ec..e15d2bf41e8d 100644 --- a/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32c6_devkitc_1_n8/mpconfigboard.mk @@ -6,5 +6,3 @@ IDF_TARGET = esp32c6 CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 8MB - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/mpconfigboard.mk index 973359406847..75e097afa84b 100644 --- a/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/mpconfigboard.mk @@ -6,5 +6,3 @@ IDF_TARGET = esp32c6 CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/mpconfigboard.mk index dc94f7de2d0f..82eb611bdf3d 100644 --- a/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32h2_devkitm_1_n4/mpconfigboard.mk @@ -6,5 +6,3 @@ IDF_TARGET = esp32h2 CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 48m CIRCUITPY_ESP_FLASH_SIZE = 4MB - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/mpconfigboard.mk index 66391bf4002b..37f0450490c3 100644 --- a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4/mpconfigboard.mk @@ -9,5 +9,3 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESPCAMERA = 0 - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/mpconfigboard.mk index 07f58ad9b964..51abedf36a24 100644 --- a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n4r2/mpconfigboard.mk @@ -12,5 +12,3 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_PSRAM_SIZE = 2MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 80m - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/mpconfigboard.mk index 66b0a7ba54a4..4475b249b639 100644 --- a/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32s2_devkitc_1_n8r2/mpconfigboard.mk @@ -12,5 +12,3 @@ CIRCUITPY_ESP_FLASH_SIZE=8MB CIRCUITPY_ESP_PSRAM_SIZE = 2MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 80m - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/mpconfigboard.mk index a9fd853226e9..223c3af6bfb7 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n32r8/mpconfigboard.mk @@ -12,5 +12,3 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_PSRAM_SIZE = 8MB CIRCUITPY_ESP_PSRAM_MODE = opi CIRCUITPY_ESP_PSRAM_FREQ = 80m - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/mpconfigboard.mk index ecfbe8cbcab2..bd2cd4c0a337 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8/mpconfigboard.mk @@ -9,5 +9,3 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 8MB CIRCUITPY_ESPCAMERA = 0 - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/mpconfigboard.mk index dfe013775e51..50fc4c08e185 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r2/mpconfigboard.mk @@ -12,5 +12,3 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_PSRAM_SIZE = 2MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 80m - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/mpconfigboard.mk index 4f306150f007..432e51c43bc8 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8/mpconfigboard.mk @@ -12,5 +12,3 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_PSRAM_SIZE = 8MB CIRCUITPY_ESP_PSRAM_MODE = opi CIRCUITPY_ESP_PSRAM_FREQ = 80m - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/mpconfigboard.mk index 207bf0af68d3..fdbd686e0902 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/mpconfigboard.mk @@ -9,5 +9,3 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 8MB CIRCUITPY_ESPCAMERA = 0 - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_esp32s3_eye/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32s3_eye/mpconfigboard.mk index e749dca0b1c1..3ea9c72ff004 100644 --- a/ports/espressif/boards/espressif_esp32s3_eye/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32s3_eye/mpconfigboard.mk @@ -12,5 +12,3 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_PSRAM_SIZE = 8MB CIRCUITPY_ESP_PSRAM_MODE = opi CIRCUITPY_ESP_PSRAM_FREQ = 80m - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_saola_1_wroom/mpconfigboard.mk b/ports/espressif/boards/espressif_saola_1_wroom/mpconfigboard.mk index 129b426e8f5c..d00bf432c976 100644 --- a/ports/espressif/boards/espressif_saola_1_wroom/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_saola_1_wroom/mpconfigboard.mk @@ -9,5 +9,3 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESPCAMERA = 0 - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/boards/espressif_saola_1_wrover/mpconfigboard.mk b/ports/espressif/boards/espressif_saola_1_wrover/mpconfigboard.mk index eda1a76656a9..29a0a77d5bee 100644 --- a/ports/espressif/boards/espressif_saola_1_wrover/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_saola_1_wrover/mpconfigboard.mk @@ -12,5 +12,3 @@ CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESP_PSRAM_SIZE = 2MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 80m - -CIRCUITPY__EVE = 1 diff --git a/ports/espressif/mpconfigport.mk b/ports/espressif/mpconfigport.mk index 445c5c69d6a4..3f902e4fe756 100644 --- a/ports/espressif/mpconfigport.mk +++ b/ports/espressif/mpconfigport.mk @@ -45,6 +45,9 @@ CIRCUITPY_TOUCHIO_USE_NATIVE ?= 1 CIRCUITPY_WATCHDOG ?= 1 CIRCUITPY_WIFI ?= 1 +# Enable _eve module +CIRCUITPY__EVE ?= 1 + # Conditionally turn off modules/features ifeq ($(IDF_TARGET),esp32) # Modules @@ -155,6 +158,12 @@ CIRCUITPY_DUALBANK = 0 CIRCUITPY_AUDIOMP3 = 0 endif + +# No room for _eve on boards with 2MB flash +ifeq ($(CIRCUITPY_ESP_FLASH_SIZE),2MB) +CIRCUITPY__EVE = 0 +endif + # Modules dependent on other modules CIRCUITPY_ESPNOW ?= $(CIRCUITPY_WIFI) CIRCUITPY_GIFIO ?= $(CIRCUITPY_DISPLAYIO) From 89cad0c379cf7102c270c927191b94f1709e2072 Mon Sep 17 00:00:00 2001 From: Tobias Schmale Date: Sun, 26 May 2024 16:06:40 +0000 Subject: [PATCH 063/227] espulp: update docs --- ports/espressif/bindings/espulp/ULP.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/ports/espressif/bindings/espulp/ULP.c b/ports/espressif/bindings/espulp/ULP.c index de4deb4ff937..60f2b1ab9c46 100644 --- a/ports/espressif/bindings/espulp/ULP.c +++ b/ports/espressif/bindings/espulp/ULP.c @@ -19,8 +19,8 @@ //| Raises an exception if another ULP has been instantiated. This //| ensures that is is only used by one piece of code at a time. //| -//| :param Architecture arch: The ulp arch. Only `FSM` architecture -//| is currently supported.""" +//| :param Architecture arch: The ulp arch. Only `FSM` architecture is currently supported. +//| """ //| ... static mp_obj_t espulp_ulp_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { enum { ARG_arch }; @@ -72,9 +72,12 @@ static mp_obj_t espulp_ulp_obj___exit__(size_t n_args, const mp_obj_t *args) { static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(espulp_ulp___exit___obj, 4, 4, espulp_ulp_obj___exit__); //| def set_wakeup_period(self, period_index: int, period_us: int) -> None: -//| """Sets the wakeup period in microseconds for the ULP. -//| Up to 5 different wakeup periods can be stored (`period_index` = 0..4). -//| By default, period index 0 is used.""" +//| """Sets the wakeup period for the ULP. +//| +//| :param int period_index: = 0..4. Up to 5 different wakeup periods can be stored +//| and used by the wakeup timer. +//| By default, the value stored in period index 0 is used. +//| :param int period_us: The wakeup period given in microseconds.""" //| ... static mp_obj_t espulp_ulp_set_wakeup_period(mp_obj_t self_in, mp_obj_t period_index, mp_obj_t period_us) { espulp_ulp_obj_t *self = MP_OBJ_TO_PTR(self_in); @@ -95,11 +98,14 @@ static MP_DEFINE_CONST_FUN_OBJ_3(espulp_ulp_set_wakeup_period_obj, espulp_ulp_se //| pins: Sequence[microcontroller.Pin] = () //| ) -> None: //| """Loads the program into ULP memory and then runs the program. -//| `entry_point` specifies the offset (in bytes) of the first instruction -//| from the start of the program. -//| The given pins are claimed and not reset until `halt()` is called. //| -//| The program will continue to run even when the running Python is halted.""" +//| The program will continue to run even Python is halted or in deep-sleep. +//| +//| :param ReadableBuffer program: the ULP binary. +//| :param int entrypoint: Specifies the offset (in bytes) of the first instruction +//| from the start of the program. +//| :param Sequence[microcontroller.Pin] pins: Pins made available to the ULP. +//| The pins are claimed and not reset until `halt()` is called.""" //| ... static mp_obj_t espulp_ulp_run(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { espulp_ulp_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]); From e5b94d10403bef74c81c4a53e759b57dc45e4f02 Mon Sep 17 00:00:00 2001 From: Bill Sideris Date: Mon, 27 May 2024 23:38:12 +0300 Subject: [PATCH 064/227] Add BAT_ADC pin --- ports/espressif/boards/m5stack_cardputer/pins.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ports/espressif/boards/m5stack_cardputer/pins.c b/ports/espressif/boards/m5stack_cardputer/pins.c index 6740c02bca9a..f29d7534b156 100644 --- a/ports/espressif/boards/m5stack_cardputer/pins.c +++ b/ports/espressif/boards/m5stack_cardputer/pins.c @@ -71,12 +71,16 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO0) }, { MP_ROM_QSTR(MP_QSTR_BOOT0), MP_ROM_PTR(&pin_GPIO0) }, + // Battery + { MP_ROM_QSTR(MP_QSTR_BAT_ADC), MP_ROM_PTR(&pin_GPIO10) }, + // Other { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, { MP_ROM_QSTR(MP_QSTR_PORTA_I2C), MP_ROM_PTR(&board_i2c_obj) }, { MP_ROM_QSTR(MP_QSTR_TFT_SPI), MP_ROM_PTR(&board_spi_obj) }, { MP_ROM_QSTR(MP_QSTR_SD_SPI), MP_ROM_PTR(&board_sd_spi_obj) }, + { MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)} }; MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); From 5928600cf000725179593c6b843febf7dde58102 Mon Sep 17 00:00:00 2001 From: Bill Sideris Date: Mon, 27 May 2024 23:55:38 +0300 Subject: [PATCH 065/227] Remove extra newline --- ports/espressif/boards/m5stack_cardputer/pins.c | 1 - 1 file changed, 1 deletion(-) diff --git a/ports/espressif/boards/m5stack_cardputer/pins.c b/ports/espressif/boards/m5stack_cardputer/pins.c index f29d7534b156..38c5243e2517 100644 --- a/ports/espressif/boards/m5stack_cardputer/pins.c +++ b/ports/espressif/boards/m5stack_cardputer/pins.c @@ -80,7 +80,6 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_TFT_SPI), MP_ROM_PTR(&board_spi_obj) }, { MP_ROM_QSTR(MP_QSTR_SD_SPI), MP_ROM_PTR(&board_sd_spi_obj) }, - { MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)} }; MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); From ac552b291bc08c0695d1f693dc446096816f8a2d Mon Sep 17 00:00:00 2001 From: Tuan Nguyen Date: Tue, 28 May 2024 10:38:58 +0700 Subject: [PATCH 066/227] espressif: Disable the _eve module on boards with 4MB flash size Signed-off-by: Tuan Nguyen --- ports/espressif/mpconfigport.mk | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ports/espressif/mpconfigport.mk b/ports/espressif/mpconfigport.mk index 3f902e4fe756..717f60154acd 100644 --- a/ports/espressif/mpconfigport.mk +++ b/ports/espressif/mpconfigport.mk @@ -158,9 +158,8 @@ CIRCUITPY_DUALBANK = 0 CIRCUITPY_AUDIOMP3 = 0 endif - -# No room for _eve on boards with 2MB flash -ifeq ($(CIRCUITPY_ESP_FLASH_SIZE),2MB) +# No room for _eve on boards with 4MB flash +ifeq ($(CIRCUITPY_ESP_FLASH_SIZE),4MB) CIRCUITPY__EVE = 0 endif From f4e7c42527e6b173a1c7069643255e513826dda0 Mon Sep 17 00:00:00 2001 From: Brent Picasso Date: Tue, 28 May 2024 10:04:44 -0700 Subject: [PATCH 067/227] add board support for autosportlabs_esp32_can_x2 --- .../boards/autosportlabs_esp32_can_x2/board.c | 9 +++ .../mpconfigboard.h | 17 ++++++ .../mpconfigboard.mk | 14 +++++ .../boards/autosportlabs_esp32_can_x2/pins.c | 56 +++++++++++++++++++ .../autosportlabs_esp32_can_x2/sdkconfig | 15 +++++ 5 files changed, 111 insertions(+) create mode 100644 ports/espressif/boards/autosportlabs_esp32_can_x2/board.c create mode 100644 ports/espressif/boards/autosportlabs_esp32_can_x2/mpconfigboard.h create mode 100644 ports/espressif/boards/autosportlabs_esp32_can_x2/mpconfigboard.mk create mode 100644 ports/espressif/boards/autosportlabs_esp32_can_x2/pins.c create mode 100644 ports/espressif/boards/autosportlabs_esp32_can_x2/sdkconfig diff --git a/ports/espressif/boards/autosportlabs_esp32_can_x2/board.c b/ports/espressif/boards/autosportlabs_esp32_can_x2/board.c new file mode 100644 index 000000000000..a3a9eec04714 --- /dev/null +++ b/ports/espressif/boards/autosportlabs_esp32_can_x2/board.c @@ -0,0 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "supervisor/board.h" + +// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/espressif/boards/autosportlabs_esp32_can_x2/mpconfigboard.h b/ports/espressif/boards/autosportlabs_esp32_can_x2/mpconfigboard.h new file mode 100644 index 000000000000..05d31b9a18c5 --- /dev/null +++ b/ports/espressif/boards/autosportlabs_esp32_can_x2/mpconfigboard.h @@ -0,0 +1,17 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#pragma once + +// Micropython setup + +#define MICROPY_HW_BOARD_NAME "AutosportLabs-ESP32-CAN-X2" +#define MICROPY_HW_MCU_NAME "ESP32S3" + +#define MICROPY_HW_NEOPIXEL (&pin_GPIO48) + +#define DEFAULT_UART_BUS_RX (&pin_GPIO44) +#define DEFAULT_UART_BUS_TX (&pin_GPIO43) diff --git a/ports/espressif/boards/autosportlabs_esp32_can_x2/mpconfigboard.mk b/ports/espressif/boards/autosportlabs_esp32_can_x2/mpconfigboard.mk new file mode 100644 index 000000000000..432e51c43bc8 --- /dev/null +++ b/ports/espressif/boards/autosportlabs_esp32_can_x2/mpconfigboard.mk @@ -0,0 +1,14 @@ +USB_VID = 0x303A +USB_PID = 0x7003 +USB_PRODUCT = "ESP32-S3-DevKitC-1-N8R8" +USB_MANUFACTURER = "Espressif" + +IDF_TARGET = esp32s3 + +CIRCUITPY_ESP_FLASH_SIZE = 8MB +CIRCUITPY_ESP_FLASH_MODE = qio +CIRCUITPY_ESP_FLASH_FREQ = 80m + +CIRCUITPY_ESP_PSRAM_SIZE = 8MB +CIRCUITPY_ESP_PSRAM_MODE = opi +CIRCUITPY_ESP_PSRAM_FREQ = 80m diff --git a/ports/espressif/boards/autosportlabs_esp32_can_x2/pins.c b/ports/espressif/boards/autosportlabs_esp32_can_x2/pins.c new file mode 100644 index 000000000000..8431aef5b1d4 --- /dev/null +++ b/ports/espressif/boards/autosportlabs_esp32_can_x2/pins.c @@ -0,0 +1,56 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "shared-bindings/board/__init__.h" + +static const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_IO1), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_IO2), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_IO3), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_IO4), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_IO5), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_IO6), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_IO7), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_IO8), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_IO9), MP_ROM_PTR(&pin_GPIO9) }, + { MP_ROM_QSTR(MP_QSTR_IO10), MP_ROM_PTR(&pin_GPIO10) }, + { MP_ROM_QSTR(MP_QSTR_IO11), MP_ROM_PTR(&pin_GPIO11) }, + { MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_IO13), MP_ROM_PTR(&pin_GPIO13) }, + { MP_ROM_QSTR(MP_QSTR_IO14), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_IO15), MP_ROM_PTR(&pin_GPIO15) }, + { MP_ROM_QSTR(MP_QSTR_IO16), MP_ROM_PTR(&pin_GPIO16) }, + { MP_ROM_QSTR(MP_QSTR_IO17), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_IO18), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_IO19), MP_ROM_PTR(&pin_GPIO19) }, + { MP_ROM_QSTR(MP_QSTR_IO20), MP_ROM_PTR(&pin_GPIO20) }, + { MP_ROM_QSTR(MP_QSTR_IO21), MP_ROM_PTR(&pin_GPIO21) }, + { MP_ROM_QSTR(MP_QSTR_IO35), MP_ROM_PTR(&pin_GPIO35) }, + { MP_ROM_QSTR(MP_QSTR_IO36), MP_ROM_PTR(&pin_GPIO36) }, + { MP_ROM_QSTR(MP_QSTR_IO37), MP_ROM_PTR(&pin_GPIO37) }, + { MP_ROM_QSTR(MP_QSTR_IO38), MP_ROM_PTR(&pin_GPIO38) }, + { MP_ROM_QSTR(MP_QSTR_IO39), MP_ROM_PTR(&pin_GPIO39) }, + { MP_ROM_QSTR(MP_QSTR_IO40), MP_ROM_PTR(&pin_GPIO40) }, + { MP_ROM_QSTR(MP_QSTR_IO41), MP_ROM_PTR(&pin_GPIO41) }, + { MP_ROM_QSTR(MP_QSTR_IO42), MP_ROM_PTR(&pin_GPIO42) }, + { MP_ROM_QSTR(MP_QSTR_IO43), MP_ROM_PTR(&pin_GPIO43) }, + { MP_ROM_QSTR(MP_QSTR_IO44), MP_ROM_PTR(&pin_GPIO44) }, + { MP_ROM_QSTR(MP_QSTR_IO45), MP_ROM_PTR(&pin_GPIO45) }, + { MP_ROM_QSTR(MP_QSTR_IO46), MP_ROM_PTR(&pin_GPIO46) }, + { MP_ROM_QSTR(MP_QSTR_IO47), MP_ROM_PTR(&pin_GPIO47) }, + { MP_ROM_QSTR(MP_QSTR_IO48), MP_ROM_PTR(&pin_GPIO48) }, + { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_LED1), MP_ROM_PTR(&pin_GPIO2) }, + + { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO43) }, + { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO44) }, + + { MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) }, +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); diff --git a/ports/espressif/boards/autosportlabs_esp32_can_x2/sdkconfig b/ports/espressif/boards/autosportlabs_esp32_can_x2/sdkconfig new file mode 100644 index 000000000000..30ffa1a82961 --- /dev/null +++ b/ports/espressif/boards/autosportlabs_esp32_can_x2/sdkconfig @@ -0,0 +1,15 @@ +# +# Espressif IoT Development Framework Configuration +# +# +# Component config +# +# +# LWIP +# +CONFIG_LWIP_LOCAL_HOSTNAME="autosportlabs-esp32-can-x2" +# end of LWIP + +# end of Component config + +# end of Espressif IoT Development Framework Configuration From 6dcb96a9d5f5126d672bc1971bfcabb1d7f31d7c Mon Sep 17 00:00:00 2001 From: Brent Picasso Date: Tue, 28 May 2024 10:06:41 -0700 Subject: [PATCH 068/227] flip order and formatting for LED1 and LED --- ports/espressif/boards/autosportlabs_esp32_can_x2/pins.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ports/espressif/boards/autosportlabs_esp32_can_x2/pins.c b/ports/espressif/boards/autosportlabs_esp32_can_x2/pins.c index 8431aef5b1d4..7ab58ea4325c 100644 --- a/ports/espressif/boards/autosportlabs_esp32_can_x2/pins.c +++ b/ports/espressif/boards/autosportlabs_esp32_can_x2/pins.c @@ -45,8 +45,9 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_IO46), MP_ROM_PTR(&pin_GPIO46) }, { MP_ROM_QSTR(MP_QSTR_IO47), MP_ROM_PTR(&pin_GPIO47) }, { MP_ROM_QSTR(MP_QSTR_IO48), MP_ROM_PTR(&pin_GPIO48) }, - { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_LED1), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO2) }, { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO43) }, { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO44) }, From 663eb1186a73423dbc1b1dbabdd0855395d4bd20 Mon Sep 17 00:00:00 2001 From: Brent Picasso Date: Tue, 28 May 2024 10:08:26 -0700 Subject: [PATCH 069/227] remove reference to neopixel --- .../espressif/boards/autosportlabs_esp32_can_x2/mpconfigboard.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/ports/espressif/boards/autosportlabs_esp32_can_x2/mpconfigboard.h b/ports/espressif/boards/autosportlabs_esp32_can_x2/mpconfigboard.h index 05d31b9a18c5..8794b511798d 100644 --- a/ports/espressif/boards/autosportlabs_esp32_can_x2/mpconfigboard.h +++ b/ports/espressif/boards/autosportlabs_esp32_can_x2/mpconfigboard.h @@ -11,7 +11,5 @@ #define MICROPY_HW_BOARD_NAME "AutosportLabs-ESP32-CAN-X2" #define MICROPY_HW_MCU_NAME "ESP32S3" -#define MICROPY_HW_NEOPIXEL (&pin_GPIO48) - #define DEFAULT_UART_BUS_RX (&pin_GPIO44) #define DEFAULT_UART_BUS_TX (&pin_GPIO43) From c19d3104c4a9a56dc0085ce0a384c6ee75d3698f Mon Sep 17 00:00:00 2001 From: Brent Picasso Date: Tue, 28 May 2024 10:23:41 -0700 Subject: [PATCH 070/227] update VID, PID, product and manufacturer for ESP32-CAN-X2 --- .../boards/autosportlabs_esp32_can_x2/mpconfigboard.mk | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ports/espressif/boards/autosportlabs_esp32_can_x2/mpconfigboard.mk b/ports/espressif/boards/autosportlabs_esp32_can_x2/mpconfigboard.mk index 432e51c43bc8..295b065961bf 100644 --- a/ports/espressif/boards/autosportlabs_esp32_can_x2/mpconfigboard.mk +++ b/ports/espressif/boards/autosportlabs_esp32_can_x2/mpconfigboard.mk @@ -1,7 +1,7 @@ -USB_VID = 0x303A -USB_PID = 0x7003 -USB_PRODUCT = "ESP32-S3-DevKitC-1-N8R8" -USB_MANUFACTURER = "Espressif" +USB_VID = 0x16D0 +USB_PID = 0x07F2 +USB_PRODUCT = "Autosport Labs ESP32-CAN-X2" +USB_MANUFACTURER = "Autosport Labs" IDF_TARGET = esp32s3 From 2c5e79b004f94fa371000d47a625e757ffd48111 Mon Sep 17 00:00:00 2001 From: Kyle Mohr <6644803+kylefmohr@users.noreply.github.com> Date: Wed, 29 May 2024 17:41:54 +0000 Subject: [PATCH 071/227] Fix color ordering of onboard NeoPixel, add `#pragma once` line --- ports/espressif/boards/waveshare_esp32_s3_tiny/mpconfigboard.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ports/espressif/boards/waveshare_esp32_s3_tiny/mpconfigboard.h b/ports/espressif/boards/waveshare_esp32_s3_tiny/mpconfigboard.h index 9e479267d21c..6eab3fde4515 100644 --- a/ports/espressif/boards/waveshare_esp32_s3_tiny/mpconfigboard.h +++ b/ports/espressif/boards/waveshare_esp32_s3_tiny/mpconfigboard.h @@ -4,11 +4,14 @@ // // SPDX-License-Identifier: MIT +#pragma once + // Micropython setup #define MICROPY_HW_BOARD_NAME "Waveshare ESP32-S3-Tiny" #define MICROPY_HW_MCU_NAME "ESP32S3" +#define MICROPY_HW_NEOPIXEL_ORDER_GRB (1) #define MICROPY_HW_NEOPIXEL (&pin_GPIO38) #define DEFAULT_UART_BUS_RX (&pin_GPIO19) From 0c9a683ad7279f084cb3adcfb0219b547b3fe9b4 Mon Sep 17 00:00:00 2001 From: Tim Date: Wed, 29 May 2024 15:59:52 -0700 Subject: [PATCH 072/227] move board_summaries.py to tools --- {docs => tools}/board_summaries.py | 82 ++++++++++++++++++------------ 1 file changed, 50 insertions(+), 32 deletions(-) rename {docs => tools}/board_summaries.py (69%) diff --git a/docs/board_summaries.py b/tools/board_summaries.py similarity index 69% rename from docs/board_summaries.py rename to tools/board_summaries.py index 13cbe793abe7..08ddc644af48 100644 --- a/docs/board_summaries.py +++ b/tools/board_summaries.py @@ -22,6 +22,10 @@ # import re +import sys + +sys.path.append("../docs") + from shared_bindings_matrix import support_matrix_by_board @@ -34,15 +38,16 @@ def module_incidence_matrix_csvs(support_matrix, rows=1000, present="1", absent= row = 0 for board, info in support_matrix.items(): if (row % rows) == 0: - csv = ["board,branded_name,mcu,flash,port,pins," + - ','.join(all_modules) + '\n'] + csv = ["board,branded_name,mcu,flash,port,pins," + ",".join(all_modules) + "\n"] chip_pin_set = set([chip_pin for _, chip_pin in info["pins"]]) n_chip_pins = len(chip_pin_set) - module_incidence = [present if m in info["modules"] - else absent for m in all_modules] - line = f"{board},{info.get('branded_name')},{info.get('mcu')}," + \ - f"{info.get('flash')},{info.get('port')},{n_chip_pins}," + \ - ','.join(module_incidence) + '\n' + module_incidence = [present if m in info["modules"] else absent for m in all_modules] + line = ( + f"{board},{info.get('branded_name')},{info.get('mcu')}," + + f"{info.get('flash')},{info.get('port')},{n_chip_pins}," + + ",".join(module_incidence) + + "\n" + ) csv.append(line) row += 1 if (row % rows) == 0: @@ -63,8 +68,7 @@ def frozen_incidence_matrix_csvs(support_matrix, rows=1000, present="1", absent= row = 0 for board, info in support_matrix.items(): if (row % rows) == 0: - csv = ["board,branded_name,mcu,flash,port,pins," + - ",".join(all_frozen) + "\n"] + csv = ["board,branded_name,mcu,flash,port,pins," + ",".join(all_frozen) + "\n"] # remove urls if present frozen = info["frozen_libraries"] @@ -73,9 +77,12 @@ def frozen_incidence_matrix_csvs(support_matrix, rows=1000, present="1", absent= frozen = [f[0] if type(f) == tuple else f for f in frozen] frozen_incidence = [present if f in frozen else absent for f in all_frozen] - line = f"{board},{info.get('branded_name')},{info.get('mcu')}," + \ - f"{info.get('flash')},{info.get('port')},{n_chip_pins}," + \ - ",".join(frozen_incidence) + '\n' + line = ( + f"{board},{info.get('branded_name')},{info.get('mcu')}," + + f"{info.get('flash')},{info.get('port')},{n_chip_pins}," + + ",".join(frozen_incidence) + + "\n" + ) csv.append(line) row += 1 if (row % rows) == 0: @@ -91,19 +98,20 @@ def summarize_pins(pins): summarizing the names in the list""" pin_prefixes = {} for p in pins: - match = re.match(r'^(.*?)(\d*)$', p) + match = re.match(r"^(.*?)(\d*)$", p) if match: prefix = match.group(1) n_str = match.group(2) else: raise ValueError("Cannot parse pin name") - if prefix in pin_prefixes : + if prefix in pin_prefixes: pin_prefixes[prefix].add(n_str) else: pin_prefixes[prefix] = {n_str} - return ', '.join([f"{prefix}{span_string(pin_prefixes[prefix])}" - for prefix in sorted(pin_prefixes.keys())]) + return ", ".join( + [f"{prefix}{span_string(pin_prefixes[prefix])}" for prefix in sorted(pin_prefixes.keys())] + ) def int_or_zero(s): @@ -141,14 +149,24 @@ def board_pins_matrix_csvs(support_matrix, rows=1000): row = 0 for board, info in support_matrix.items(): if (row % rows) == 0: - csv = ["board,branded_name,mcu,flash,port,n_board_pins," - "board_pins,n_chip_pins,chip_pins\n"] + csv = [ + "board,branded_name,mcu,flash,port,n_board_pins," + "board_pins,n_chip_pins,chip_pins\n" + ] board_pins = [board_pin for board_pin, _ in info["pins"]] chip_pins = [chip_pin for _, chip_pin in info["pins"]] - line = f"{board},{info.get('branded_name')},{info.get('mcu')}," + \ - f"{info.get('flash')},{info.get('port')}," + \ - str(len(set(board_pins))) + ',"' + summarize_pins(board_pins) + '",' + \ - str(len(set(chip_pins))) + ',"' + summarize_pins(chip_pins) + '"\n' + line = ( + f"{board},{info.get('branded_name')},{info.get('mcu')}," + + f"{info.get('flash')},{info.get('port')}," + + str(len(set(board_pins))) + + ',"' + + summarize_pins(board_pins) + + '",' + + str(len(set(chip_pins))) + + ',"' + + summarize_pins(chip_pins) + + '"\n' + ) csv.append(line) row += 1 if (row % rows) == 0: @@ -159,19 +177,19 @@ def board_pins_matrix_csvs(support_matrix, rows=1000): def write_csvs(rows=1000, present="1", absent="0"): - print('generating csvs...') - s = support_matrix_by_board(use_branded_name=False, add_port=True, - add_chips=True, add_pins=True, - add_branded_name=True) - csvs = {"modules": module_incidence_matrix_csvs(s, rows=rows, - present=present, absent=absent), - "frozen": frozen_incidence_matrix_csvs(s, rows=rows, - present=present, absent=absent), - "pins": board_pins_matrix_csvs(s, rows=rows)} + print("generating csvs...") + s = support_matrix_by_board( + use_branded_name=False, add_port=True, add_chips=True, add_pins=True, add_branded_name=True + ) + csvs = { + "modules": module_incidence_matrix_csvs(s, rows=rows, present=present, absent=absent), + "frozen": frozen_incidence_matrix_csvs(s, rows=rows, present=present, absent=absent), + "pins": board_pins_matrix_csvs(s, rows=rows), + } for key in csvs: for i in range(len(csvs[key])): filename = f"{key}_{i}.csv" - print(f'writing {filename}') + print(f"writing {filename}") with open(filename, "w") as f: f.writelines(csvs[key][i]) From 8d0f00de6541ea8fdfcd2a495f074f6f9185dbd8 Mon Sep 17 00:00:00 2001 From: Tim Date: Thu, 30 May 2024 09:14:48 -0700 Subject: [PATCH 073/227] re-check From d6ddd554621ed468b0d0448100f9e3c45f5e0136 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Tue, 14 May 2024 09:23:23 -0500 Subject: [PATCH 074/227] MP3Decoder: Allow passing any stream-like object This can sort-of play MP3s from a http request, but the buffering is not good enough to play glitch-free. A new kind of buffer that can read ahead further without blocking is needed. --- shared-bindings/audiomp3/MP3Decoder.c | 16 ++-- shared-bindings/audiomp3/MP3Decoder.h | 4 +- shared-module/audiomp3/MP3Decoder.c | 122 ++++++++++++++++++++------ shared-module/audiomp3/MP3Decoder.h | 2 +- 4 files changed, 109 insertions(+), 35 deletions(-) diff --git a/shared-bindings/audiomp3/MP3Decoder.c b/shared-bindings/audiomp3/MP3Decoder.c index 7d33d4c36b04..7bf8b2e46897 100644 --- a/shared-bindings/audiomp3/MP3Decoder.c +++ b/shared-bindings/audiomp3/MP3Decoder.c @@ -10,6 +10,7 @@ #include "shared/runtime/context_manager_helpers.h" #include "py/objproperty.h" #include "py/runtime.h" +#include "py/stream.h" #include "shared-bindings/audiomp3/MP3Decoder.h" #include "shared-bindings/util.h" @@ -68,16 +69,18 @@ static mp_obj_t audiomp3_mp3file_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { mp_arg_check_num(n_args, n_kw, 1, 2, false); - mp_obj_t arg = args[0]; + mp_obj_t stream = args[0]; - if (mp_obj_is_str(arg)) { - arg = mp_call_function_2(MP_OBJ_FROM_PTR(&mp_builtin_open_obj), arg, MP_ROM_QSTR(MP_QSTR_rb)); + if (mp_obj_is_str(stream)) { + stream = mp_call_function_2(MP_OBJ_FROM_PTR(&mp_builtin_open_obj), stream, MP_ROM_QSTR(MP_QSTR_rb)); } audiomp3_mp3file_obj_t *self = m_new_obj_with_finaliser(audiomp3_mp3file_obj_t); self->base.type = &audiomp3_mp3file_type; - if (!mp_obj_is_type(arg, &mp_type_fileio)) { + const mp_stream_p_t *stream_p = mp_get_stream_raise(stream, MP_STREAM_OP_READ); + + if (stream_p->is_text) { mp_raise_TypeError(MP_ERROR_TEXT("file must be a file opened in byte mode")); } uint8_t *buffer = NULL; @@ -88,8 +91,7 @@ static mp_obj_t audiomp3_mp3file_make_new(const mp_obj_type_t *type, size_t n_ar buffer = bufinfo.buf; buffer_size = bufinfo.len; } - common_hal_audiomp3_mp3file_construct(self, MP_OBJ_TO_PTR(arg), - buffer, buffer_size); + common_hal_audiomp3_mp3file_construct(self, stream, buffer, buffer_size); return MP_OBJ_FROM_PTR(self); } @@ -131,7 +133,7 @@ static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audiomp3_mp3file___exit___obj, 4, 4, static mp_obj_t audiomp3_mp3file_obj_get_file(mp_obj_t self_in) { audiomp3_mp3file_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); - return self->file; + return self->stream; } MP_DEFINE_CONST_FUN_OBJ_1(audiomp3_mp3file_get_file_obj, audiomp3_mp3file_obj_get_file); diff --git a/shared-bindings/audiomp3/MP3Decoder.h b/shared-bindings/audiomp3/MP3Decoder.h index 8095c22b0648..4381430c228a 100644 --- a/shared-bindings/audiomp3/MP3Decoder.h +++ b/shared-bindings/audiomp3/MP3Decoder.h @@ -15,9 +15,9 @@ extern const mp_obj_type_t audiomp3_mp3file_type; void common_hal_audiomp3_mp3file_construct(audiomp3_mp3file_obj_t *self, - pyb_file_obj_t *file, uint8_t *buffer, size_t buffer_size); + mp_obj_t stream, uint8_t *buffer, size_t buffer_size); -void common_hal_audiomp3_mp3file_set_file(audiomp3_mp3file_obj_t *self, pyb_file_obj_t *file); +void common_hal_audiomp3_mp3file_set_file(audiomp3_mp3file_obj_t *self, mp_obj_t stream); void common_hal_audiomp3_mp3file_deinit(audiomp3_mp3file_obj_t *self); bool common_hal_audiomp3_mp3file_deinited(audiomp3_mp3file_obj_t *self); uint32_t common_hal_audiomp3_mp3file_get_sample_rate(audiomp3_mp3file_obj_t *self); diff --git a/shared-module/audiomp3/MP3Decoder.c b/shared-module/audiomp3/MP3Decoder.c index d42e0477dafe..892f1a810df7 100644 --- a/shared-module/audiomp3/MP3Decoder.c +++ b/shared-module/audiomp3/MP3Decoder.c @@ -7,12 +7,15 @@ #include "shared-bindings/audiomp3/MP3Decoder.h" +#include #include #include -#include +#include +#include #include "py/mperrno.h" #include "py/runtime.h" +#include "py/stream.h" #include "shared-module/audiomp3/MP3Decoder.h" #include "supervisor/background_callback.h" @@ -20,13 +23,69 @@ #define MAX_BUFFER_LEN (MAX_NSAMP * MAX_NGRAN * MAX_NCHAN * sizeof(int16_t)) +// (near copy of mp_stream_posix_read, but with changes) +// (circuitpy doesn't enable posix stream routines anyway) +STATIC ssize_t stream_read(void *stream, void *buf, size_t len) { + int errcode; + mp_obj_base_t *o = MP_OBJ_TO_PTR(stream); + const mp_stream_p_t *stream_p = MP_OBJ_TYPE_GET_SLOT(o->type, protocol); + if (!stream_p->read) { + return -EINVAL; + } + mp_uint_t out_sz = stream_p->read(MP_OBJ_FROM_PTR(stream), buf, len, &errcode); + if (out_sz == MP_STREAM_ERROR) { + return -errcode; // CIRCUITPY-CHANGE: returns negative errcode value + } else { + return out_sz; + } +} + +// (near copy of mp_stream_posix_read, but with changes) +// (circuitpy doesn't enable posix stream routines anyway) +STATIC ssize_t stream_read_all(void *stream, void *buf, size_t len) { + ssize_t total_read = 0; + while (len) { + ssize_t r = stream_read(stream, buf, len); + if (r <= 0) { + if (total_read) { + break; + } + return r; + } + total_read += r; + buf += r; + len -= r; + } + return total_read; +} + + +// (near copy of mp_stream_posix_lseek, but with changes) +// (circuitpy doesn't enable posix stream routines anyway) +STATIC off_t stream_lseek(void *stream, off_t offset, int whence) { + int errcode; + const mp_obj_base_t *o = stream; + const mp_stream_p_t *stream_p = MP_OBJ_TYPE_GET_SLOT(o->type, protocol); + if (!stream_p->ioctl) { + return -EINVAL; + } + struct mp_stream_seek_t seek_s; + seek_s.offset = offset; + seek_s.whence = whence; + mp_uint_t res = stream_p->ioctl(MP_OBJ_FROM_PTR(stream), MP_STREAM_SEEK, (mp_uint_t)(uintptr_t)&seek_s, &errcode); + if (res == MP_STREAM_ERROR) { + return -errcode; + } + return seek_s.offset; +} + /** Fill the input buffer unconditionally. * * Returns true if the input buffer contains any useful data, * false otherwise. (The input buffer will be padded to the end with * 0 bytes, which do not interfere with MP3 decoding) * - * Raises OSError if f_read fails. + * Raises OSError if stream_read fails. * * Sets self->eof if any read of the file returns 0 bytes */ @@ -41,20 +100,20 @@ static bool mp3file_update_inbuf_always(audiomp3_mp3file_obj_t *self) { self->inbuf_length - self->inbuf_offset); self->inbuf_offset = 0; - UINT to_read = end_of_buffer - new_end_of_data; - UINT bytes_read = 0; + ssize_t to_read = end_of_buffer - new_end_of_data; memset(new_end_of_data, 0, to_read); - if (f_read(&self->file->fp, new_end_of_data, to_read, &bytes_read) != FR_OK) { + ssize_t r = stream_read_all(self->stream, new_end_of_data, to_read); + if (r < 0) { self->eof = true; - mp_raise_OSError(MP_EIO); + mp_raise_OSError(-r); } - if (bytes_read == 0) { + if (r == 0) { self->eof = true; } - if (to_read != bytes_read) { - new_end_of_data += bytes_read; + if (to_read != r) { + new_end_of_data += r; memset(new_end_of_data, 0, end_of_buffer - new_end_of_data); } @@ -119,8 +178,17 @@ static void mp3file_skip_id3v2(audiomp3_mp3file_obj_t *self) { size -= to_consume; // Next, seek in the file after the header - f_lseek(&self->file->fp, f_tell(&self->file->fp) + size); - return; + if (stream_lseek(self->stream, SEEK_CUR, size) == 0) { + return; + } + + // Couldn't seek (might be a socket), so need to actually read and discard all that data + while (size > 0 && !self->eof) { + mp3file_update_inbuf_always(self); + to_consume = MIN(size, BYTES_LEFT(self)); + CONSUME(self, to_consume); + size -= to_consume; + } } /* If a sync word can be found, advance to it and return true. Otherwise, @@ -154,7 +222,7 @@ static bool mp3file_get_next_frame_info(audiomp3_mp3file_obj_t *self, MP3FrameIn } void common_hal_audiomp3_mp3file_construct(audiomp3_mp3file_obj_t *self, - pyb_file_obj_t *file, + mp_obj_t stream, uint8_t *buffer, size_t buffer_size) { // XXX Adafruit_MP3 uses a 2kB input buffer and two 4kB output buffers. @@ -202,14 +270,17 @@ void common_hal_audiomp3_mp3file_construct(audiomp3_mp3file_obj_t *self, } } - common_hal_audiomp3_mp3file_set_file(self, file); + common_hal_audiomp3_mp3file_set_file(self, stream); } -void common_hal_audiomp3_mp3file_set_file(audiomp3_mp3file_obj_t *self, pyb_file_obj_t *file) { +void common_hal_audiomp3_mp3file_set_file(audiomp3_mp3file_obj_t *self, mp_obj_t stream) { background_callback_prevent(); - self->file = file; - f_lseek(&self->file->fp, 0); + self->stream = stream; + + // Seek the beginning of the stream if possible, but ignore any errors + (void)stream_lseek(self->stream, SEEK_SET, 0); + self->inbuf_offset = self->inbuf_length; self->eof = 0; self->other_channel = -1; @@ -243,7 +314,7 @@ void common_hal_audiomp3_mp3file_deinit(audiomp3_mp3file_obj_t *self) { self->inbuf = NULL; self->buffers[0] = NULL; self->buffers[1] = NULL; - self->file = NULL; + self->stream = mp_const_none; self->samples_decoded = 0; } @@ -277,14 +348,15 @@ void audiomp3_mp3file_reset_buffer(audiomp3_mp3file_obj_t *self, // We don't reset the buffer index in case we're looping and we have an odd number of buffer // loads background_callback_prevent(); - f_lseek(&self->file->fp, 0); - self->inbuf_offset = self->inbuf_length; - self->eof = 0; - self->samples_decoded = 0; - self->other_channel = -1; - mp3file_update_inbuf_half(self); - mp3file_skip_id3v2(self); - mp3file_find_sync_word(self); + if (stream_lseek(self->stream, SEEK_SET, 0) == 0) { + self->inbuf_offset = self->inbuf_length; + self->eof = 0; + self->samples_decoded = 0; + self->other_channel = -1; + mp3file_update_inbuf_half(self); + mp3file_skip_id3v2(self); + mp3file_find_sync_word(self); + } background_callback_allow(); } diff --git a/shared-module/audiomp3/MP3Decoder.h b/shared-module/audiomp3/MP3Decoder.h index 726974c2641e..dcf63d550aac 100644 --- a/shared-module/audiomp3/MP3Decoder.h +++ b/shared-module/audiomp3/MP3Decoder.h @@ -25,7 +25,7 @@ typedef struct { uint32_t frame_buffer_size; uint32_t sample_rate; - pyb_file_obj_t *file; + mp_obj_t stream; uint8_t buffer_index; uint8_t channel_count; From a80311d4c071f0d552015e9ed4f0399b8f03b55f Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Thu, 30 May 2024 11:12:17 -0500 Subject: [PATCH 075/227] MP3Decoder: make testable in coverage build An mp3 decoder (note that this needs `audiocore.get_buffer`, not enabled on devices): ```py import sys import audiomp3 import audiocore GET_BUFFER_DONE, GET_BUFFER_MORE_DATA, GET_BUFFER_ERROR = range(3) with audiomp3.MP3Decoder(sys.argv[1]) as decoder, open(sys.argv[2], "wb") as target: while True: res, samples = audiocore.get_buffer(decoder) if res != GET_BUFFER_ERROR: target.write(samples) if res != GET_BUFFER_MORE_DATA: break ``` this doesn't actually add any tests though --- .../unix/variants/coverage/mpconfigvariant.mk | 25 +++++++++++++++++++ shared-bindings/audiomp3/MP3Decoder.c | 8 +++--- shared-module/audiomp3/MP3Decoder.c | 11 ++++++-- shared-module/audiomp3/MP3Decoder.h | 4 +-- 4 files changed, 41 insertions(+), 7 deletions(-) diff --git a/ports/unix/variants/coverage/mpconfigvariant.mk b/ports/unix/variants/coverage/mpconfigvariant.mk index 4e002867ccd8..6b6778c322fc 100644 --- a/ports/unix/variants/coverage/mpconfigvariant.mk +++ b/ports/unix/variants/coverage/mpconfigvariant.mk @@ -34,6 +34,8 @@ SRC_BITMAP := \ shared-bindings/audiomixer/__init__.c \ shared-bindings/audiomixer/Mixer.c \ shared-bindings/audiomixer/MixerVoice.c \ + shared-bindings/audiomp3/__init__.c \ + shared-bindings/audiomp3/MP3Decoder.c \ shared-bindings/bitmapfilter/__init__.c \ shared-bindings/bitmaptools/__init__.c \ shared-bindings/codeop/__init__.c \ @@ -62,6 +64,7 @@ SRC_BITMAP := \ shared-module/audiocore/RawSample.c \ shared-module/audiocore/WaveFile.c \ shared-module/audiomixer/__init__.c \ + shared-module/audiomp3/MP3Decoder.c \ shared-module/audiomixer/Mixer.c \ shared-module/audiomixer/MixerVoice.c \ shared-module/bitmapfilter/__init__.c \ @@ -88,10 +91,32 @@ SRC_BITMAP := \ SRC_C += $(SRC_BITMAP) +SRC_C += $(addprefix lib/mp3/src/, \ + bitstream.c \ + buffers.c \ + dct32.c \ + dequant.c \ + dqchan.c \ + huffman.c \ + hufftabs.c \ + imdct.c \ + mp3dec.c \ + mp3tabs.c \ + polyphase.c \ + scalfact.c \ + stproc.c \ + subband.c \ + trigtabs.c \ +) + +$(BUILD)/lib/mp3/src/buffers.o: CFLAGS += -include "shared-module/audiomp3/__init__.h" -D'MPDEC_ALLOCATOR(x)=malloc(x)' -D'MPDEC_FREE(x)=free(x)' -fwrapv + CFLAGS += \ -DCIRCUITPY_AESIO=1 \ -DCIRCUITPY_AUDIOCORE=1 \ -DCIRCUITPY_AUDIOMIXER=1 \ + -DCIRCUITPY_AUDIOMP3=1 \ + -DCIRCUITPY_AUDIOMP3_USE_PORT_ALLOCATOR=0 \ -DCIRCUITPY_AUDIOCORE_DEBUG=1 \ -DCIRCUITPY_BITMAPTOOLS=1 \ -DCIRCUITPY_CODEOP=1 \ diff --git a/shared-bindings/audiomp3/MP3Decoder.c b/shared-bindings/audiomp3/MP3Decoder.c index 7bf8b2e46897..0d927fc62cf8 100644 --- a/shared-bindings/audiomp3/MP3Decoder.c +++ b/shared-bindings/audiomp3/MP3Decoder.c @@ -137,13 +137,15 @@ static mp_obj_t audiomp3_mp3file_obj_get_file(mp_obj_t self_in) { } MP_DEFINE_CONST_FUN_OBJ_1(audiomp3_mp3file_get_file_obj, audiomp3_mp3file_obj_get_file); -static mp_obj_t audiomp3_mp3file_obj_set_file(mp_obj_t self_in, mp_obj_t file) { +static mp_obj_t audiomp3_mp3file_obj_set_file(mp_obj_t self_in, mp_obj_t stream) { audiomp3_mp3file_obj_t *self = MP_OBJ_TO_PTR(self_in); check_for_deinit(self); - if (!mp_obj_is_type(file, &mp_type_fileio)) { + const mp_stream_p_t *stream_p = mp_get_stream_raise(stream, MP_STREAM_OP_READ); + + if (stream_p->is_text) { mp_raise_TypeError(MP_ERROR_TEXT("file must be a file opened in byte mode")); } - common_hal_audiomp3_mp3file_set_file(self, file); + common_hal_audiomp3_mp3file_set_file(self, stream); return mp_const_none; } MP_DEFINE_CONST_FUN_OBJ_2(audiomp3_mp3file_set_file_obj, audiomp3_mp3file_obj_set_file); diff --git a/shared-module/audiomp3/MP3Decoder.c b/shared-module/audiomp3/MP3Decoder.c index 892f1a810df7..aaab79e6d94a 100644 --- a/shared-module/audiomp3/MP3Decoder.c +++ b/shared-module/audiomp3/MP3Decoder.c @@ -23,6 +23,12 @@ #define MAX_BUFFER_LEN (MAX_NSAMP * MAX_NGRAN * MAX_NCHAN * sizeof(int16_t)) +#if defined(MICROPY_UNIX_COVERAGE) +#define background_callback_prevent() ((void)0) +#define background_callback_allow() ((void)0) +#define background_callback_add(buf, fn, arg) ((fn)((arg))) +#endif + // (near copy of mp_stream_posix_read, but with changes) // (circuitpy doesn't enable posix stream routines anyway) STATIC ssize_t stream_read(void *stream, void *buf, size_t len) { @@ -42,7 +48,8 @@ STATIC ssize_t stream_read(void *stream, void *buf, size_t len) { // (near copy of mp_stream_posix_read, but with changes) // (circuitpy doesn't enable posix stream routines anyway) -STATIC ssize_t stream_read_all(void *stream, void *buf, size_t len) { +// (and the return value semantic is different) +STATIC ssize_t stream_read_all(void *stream, uint8_t *buf, size_t len) { ssize_t total_read = 0; while (len) { ssize_t r = stream_read(stream, buf, len); @@ -170,7 +177,7 @@ static void mp3file_skip_id3v2(audiomp3_mp3file_obj_t *self) { (data[9] & 0x80) == 0)) { return; } - uint32_t size = (data[6] << 21) | (data[7] << 14) | (data[8] << 7) | (data[9]); + int32_t size = (data[6] << 21) | (data[7] << 14) | (data[8] << 7) | (data[9]); size += 10; // size excludes the "header" (but not the "extended header") // First, deduct from size whatever is left in buffer uint32_t to_consume = MIN(size, BYTES_LEFT(self)); diff --git a/shared-module/audiomp3/MP3Decoder.h b/shared-module/audiomp3/MP3Decoder.h index dcf63d550aac..ea946ba852c9 100644 --- a/shared-module/audiomp3/MP3Decoder.h +++ b/shared-module/audiomp3/MP3Decoder.h @@ -18,8 +18,8 @@ typedef struct { struct _MP3DecInfo *decoder; background_callback_t inbuf_fill_cb; uint8_t *inbuf; - uint32_t inbuf_length; - uint32_t inbuf_offset; + int32_t inbuf_length; + int32_t inbuf_offset; int16_t *buffers[2]; uint32_t len; uint32_t frame_buffer_size; From 974b21a07919a048cf1c8b0f2d89d5c3216c4a13 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Thu, 30 May 2024 11:31:27 -0500 Subject: [PATCH 076/227] MP3Decoder: do better at keeping stream buffer full --- shared-module/audiomp3/MP3Decoder.c | 209 +++++++++++++++------------- shared-module/audiomp3/MP3Decoder.h | 13 +- 2 files changed, 124 insertions(+), 98 deletions(-) diff --git a/shared-module/audiomp3/MP3Decoder.c b/shared-module/audiomp3/MP3Decoder.c index aaab79e6d94a..2676c811940a 100644 --- a/shared-module/audiomp3/MP3Decoder.c +++ b/shared-module/audiomp3/MP3Decoder.c @@ -29,6 +29,18 @@ #define background_callback_add(buf, fn, arg) ((fn)((arg))) #endif +STATIC bool stream_readable(void *stream) { + int errcode = 0; + mp_obj_base_t *o = MP_OBJ_TO_PTR(stream); + const mp_stream_p_t *stream_p = MP_OBJ_TYPE_GET_SLOT(o->type, protocol); + if (!stream_p->ioctl) { + return true; + } + + mp_int_t ret = stream_p->ioctl(stream, MP_STREAM_POLL, MP_STREAM_POLL_RD | MP_STREAM_POLL_ERR | MP_STREAM_POLL_HUP, &errcode); + return ret != 0; +} + // (near copy of mp_stream_posix_read, but with changes) // (circuitpy doesn't enable posix stream routines anyway) STATIC ssize_t stream_read(void *stream, void *buf, size_t len) { @@ -46,27 +58,6 @@ STATIC ssize_t stream_read(void *stream, void *buf, size_t len) { } } -// (near copy of mp_stream_posix_read, but with changes) -// (circuitpy doesn't enable posix stream routines anyway) -// (and the return value semantic is different) -STATIC ssize_t stream_read_all(void *stream, uint8_t *buf, size_t len) { - ssize_t total_read = 0; - while (len) { - ssize_t r = stream_read(stream, buf, len); - if (r <= 0) { - if (total_read) { - break; - } - return r; - } - total_read += r; - buf += r; - len -= r; - } - return total_read; -} - - // (near copy of mp_stream_posix_lseek, but with changes) // (circuitpy doesn't enable posix stream routines anyway) STATIC off_t stream_lseek(void *stream, off_t offset, int whence) { @@ -86,6 +77,12 @@ STATIC off_t stream_lseek(void *stream, off_t offset, int whence) { return seek_s.offset; } +#define INPUT_BUFFER_AVAILABLE(i) ((i).write_off - (i).read_off) +#define INPUT_BUFFER_SPACE(i) ((i).size - INPUT_BUFFER_AVAILABLE(i)) +#define INPUT_BUFFER_READ_PTR(i) ((i).buf + (i).read_off) +#define INPUT_BUFFER_CONSUME(i, n) ((i).read_off += (n)) +#define INPUT_BUFFER_CLEAR(i) ((i).read_off = (i).write_off = 0) + /** Fill the input buffer unconditionally. * * Returns true if the input buffer contains any useful data, @@ -97,46 +94,61 @@ STATIC off_t stream_lseek(void *stream, off_t offset, int whence) { * Sets self->eof if any read of the file returns 0 bytes */ static bool mp3file_update_inbuf_always(audiomp3_mp3file_obj_t *self) { - // If we didn't previously reach the end of file, we can try reading now - if (!self->eof && self->inbuf_offset != 0) { - - // Move the unconsumed portion of the buffer to the start - uint8_t *end_of_buffer = self->inbuf + self->inbuf_length; - uint8_t *new_end_of_data = self->inbuf + self->inbuf_length - self->inbuf_offset; - memmove(self->inbuf, self->inbuf + self->inbuf_offset, - self->inbuf_length - self->inbuf_offset); - self->inbuf_offset = 0; - - ssize_t to_read = end_of_buffer - new_end_of_data; - memset(new_end_of_data, 0, to_read); - ssize_t r = stream_read_all(self->stream, new_end_of_data, to_read); - if (r < 0) { - self->eof = true; - mp_raise_OSError(-r); - } + if (self->eof || INPUT_BUFFER_SPACE(self->inbuf) == 0) { + return INPUT_BUFFER_AVAILABLE(self->inbuf) > 0; + } + + // We didn't previously reach EOF and we have input buffer space available - if (r == 0) { + // Move the unconsumed portion of the buffer to the start + if (self->inbuf.read_off) { + memmove(self->inbuf.buf, INPUT_BUFFER_READ_PTR(self->inbuf), INPUT_BUFFER_AVAILABLE(self->inbuf)); + self->inbuf.write_off -= self->inbuf.read_off; + self->inbuf.read_off = 0; + } + + for (size_t to_read; !self->eof && (to_read = INPUT_BUFFER_SPACE(self->inbuf)) > 0;) { + uint8_t *write_ptr = self->inbuf.buf + self->inbuf.write_off; + ssize_t n_read = stream_read(self->stream, write_ptr, to_read); + + if (n_read < 0) { + int errcode = -n_read; + if (mp_is_nonblocking_error(errcode) || errcode == MP_ETIMEDOUT) { + break; + } self->eof = true; + mp_raise_OSError(errcode); } - if (to_read != r) { - new_end_of_data += r; - memset(new_end_of_data, 0, end_of_buffer - new_end_of_data); + if (n_read == 0) { + self->eof = true; } + self->inbuf.write_off += n_read; } // Return true iff there are at least some useful bytes in the buffer - return self->inbuf_offset < self->inbuf_length; + return INPUT_BUFFER_AVAILABLE(self->inbuf) > 0; } /** Update the inbuf from a background callback. * - * This variant is introduced so that at the site of the - * add_background_callback_core call, the prototype matches. + * Re-queue if there's still buffer space available to read stream data */ -static void mp3file_update_inbuf_cb(void *self) { - mp3file_update_inbuf_always(self); +static void mp3file_update_inbuf_cb(void *self_in) { + audiomp3_mp3file_obj_t *self = self_in; + if (!self->eof && stream_readable(self->stream)) { + mp3file_update_inbuf_always(self); + } + + #if !defined(MICROPY_UNIX_COVERAGE) + if (!self->eof && INPUT_BUFFER_SPACE(self->inbuf) > 512) { + background_callback_add( + &self->inbuf_fill_cb, + mp3file_update_inbuf_cb, + self); + } + #endif } /** Fill the input buffer if it is less than half full. @@ -145,18 +157,17 @@ static void mp3file_update_inbuf_cb(void *self) { */ static bool mp3file_update_inbuf_half(audiomp3_mp3file_obj_t *self) { // If buffer is over half full, do nothing - if (self->inbuf_offset < self->inbuf_length / 2) { + if (INPUT_BUFFER_SPACE(self->inbuf) < self->inbuf.size / 2) { return true; } return mp3file_update_inbuf_always(self); } -#define READ_PTR(self) (self->inbuf + self->inbuf_offset) -#define BYTES_LEFT(self) (self->inbuf_length - self->inbuf_offset) -#define CONSUME(self, n) (self->inbuf_offset += n) +#define READ_PTR(self) (INPUT_BUFFER_READ_PTR(self->inbuf)) +#define BYTES_LEFT(self) (INPUT_BUFFER_AVAILABLE(self->inbuf)) +#define CONSUME(self, n) (INPUT_BUFFER_CONSUME(self->inbuf, n)) -// http://id3.org/d3v2.3.0 // http://id3.org/id3v2.3.0 static void mp3file_skip_id3v2(audiomp3_mp3file_obj_t *self) { mp3file_update_inbuf_half(self); @@ -228,54 +239,65 @@ static bool mp3file_get_next_frame_info(audiomp3_mp3file_obj_t *self, MP3FrameIn return err == ERR_MP3_NONE; } +#define DEFAULT_INPUT_BUFFER_SIZE (2048) +#define MIN_USER_BUFFER_SIZE (DEFAULT_INPUT_BUFFER_SIZE + 2 * MAX_BUFFER_LEN) + void common_hal_audiomp3_mp3file_construct(audiomp3_mp3file_obj_t *self, mp_obj_t stream, uint8_t *buffer, size_t buffer_size) { - // XXX Adafruit_MP3 uses a 2kB input buffer and two 4kB output buffers. - // for a whopping total of 10kB buffers (+mp3 decoder state and frame buffer) + // XXX Adafruit_MP3 uses a 2kB input buffer and two 4kB output pcm_buffer. + // for a whopping total of 10kB pcm_buffer (+mp3 decoder state and frame buffer) // At 44kHz, that's 23ms of output audio data. // // We will choose a slightly different allocation strategy for the output: - // Make sure the buffers are sized exactly to match (a multiple of) the + // Make sure the pcm_buffer are sized exactly to match (a multiple of) the // frame size; this is typically 2304 * 2 bytes, so a little bit bigger - // than the two 4kB output buffers, except that the alignment allows to + // than the two 4kB output pcm_buffer, except that the alignment allows to // never allocate that extra frame buffer. - self->inbuf_length = 2048; - self->inbuf_offset = self->inbuf_length; - self->inbuf = m_malloc(self->inbuf_length); - if (self->inbuf == NULL) { - common_hal_audiomp3_mp3file_deinit(self); - m_malloc_fail(self->inbuf_length); - } - self->decoder = MP3InitDecoder(); - if (self->decoder == NULL) { - common_hal_audiomp3_mp3file_deinit(self); - mp_raise_msg(&mp_type_MemoryError, - MP_ERROR_TEXT("Couldn't allocate decoder")); - } - if ((intptr_t)buffer & 1) { buffer += 1; buffer_size -= 1; } - if (buffer_size >= 2 * MAX_BUFFER_LEN) { - self->buffers[0] = (int16_t *)(void *)buffer; - self->buffers[1] = (int16_t *)(void *)(buffer + MAX_BUFFER_LEN); + if (buffer && buffer_size > MIN_USER_BUFFER_SIZE) { + self->pcm_buffer[0] = (int16_t *)(void *)buffer; + self->pcm_buffer[1] = (int16_t *)(void *)(buffer + MAX_BUFFER_LEN); + self->inbuf.buf = buffer + 2 * MAX_BUFFER_LEN; + self->inbuf.size = buffer_size - 2 * MAX_BUFFER_LEN; } else { - self->buffers[0] = m_malloc(MAX_BUFFER_LEN); - if (self->buffers[0] == NULL) { + self->inbuf.size = DEFAULT_INPUT_BUFFER_SIZE; + self->inbuf.buf = m_malloc(DEFAULT_INPUT_BUFFER_SIZE); + if (self->inbuf.buf == NULL) { common_hal_audiomp3_mp3file_deinit(self); - m_malloc_fail(MAX_BUFFER_LEN); + m_malloc_fail(DEFAULT_INPUT_BUFFER_SIZE); } - self->buffers[1] = m_malloc(MAX_BUFFER_LEN); - if (self->buffers[1] == NULL) { - common_hal_audiomp3_mp3file_deinit(self); - m_malloc_fail(MAX_BUFFER_LEN); + if (buffer_size >= 2 * MAX_BUFFER_LEN) { + self->pcm_buffer[0] = (int16_t *)(void *)buffer; + self->pcm_buffer[1] = (int16_t *)(void *)(buffer + MAX_BUFFER_LEN); + } else { + self->pcm_buffer[0] = m_malloc(MAX_BUFFER_LEN); + if (self->pcm_buffer[0] == NULL) { + common_hal_audiomp3_mp3file_deinit(self); + m_malloc_fail(MAX_BUFFER_LEN); + } + + self->pcm_buffer[1] = m_malloc(MAX_BUFFER_LEN); + if (self->pcm_buffer[1] == NULL) { + common_hal_audiomp3_mp3file_deinit(self); + m_malloc_fail(MAX_BUFFER_LEN); + } } } + self->inbuf.read_off = self->inbuf.write_off = 0; + + self->decoder = MP3InitDecoder(); + if (self->decoder == NULL) { + common_hal_audiomp3_mp3file_deinit(self); + mp_raise_msg(&mp_type_MemoryError, + MP_ERROR_TEXT("Couldn't allocate decoder")); + } common_hal_audiomp3_mp3file_set_file(self, stream); } @@ -288,7 +310,7 @@ void common_hal_audiomp3_mp3file_set_file(audiomp3_mp3file_obj_t *self, mp_obj_t // Seek the beginning of the stream if possible, but ignore any errors (void)stream_lseek(self->stream, SEEK_SET, 0); - self->inbuf_offset = self->inbuf_length; + INPUT_BUFFER_CLEAR(self->inbuf); self->eof = 0; self->other_channel = -1; mp3file_update_inbuf_half(self); @@ -298,8 +320,8 @@ void common_hal_audiomp3_mp3file_set_file(audiomp3_mp3file_obj_t *self, mp_obj_t // this is necessary to avoid a glitch at the start of playback of a second // track using the same decoder object means there's still a bug in // get_buffer() that I didn't understand. - memset(self->buffers[0], 0, MAX_BUFFER_LEN); - memset(self->buffers[1], 0, MAX_BUFFER_LEN); + memset(self->pcm_buffer[0], 0, MAX_BUFFER_LEN); + memset(self->pcm_buffer[1], 0, MAX_BUFFER_LEN); MP3FrameInfo fi; bool result = mp3file_get_next_frame_info(self, &fi); background_callback_allow(); @@ -318,15 +340,15 @@ void common_hal_audiomp3_mp3file_set_file(audiomp3_mp3file_obj_t *self, mp_obj_t void common_hal_audiomp3_mp3file_deinit(audiomp3_mp3file_obj_t *self) { MP3FreeDecoder(self->decoder); self->decoder = NULL; - self->inbuf = NULL; - self->buffers[0] = NULL; - self->buffers[1] = NULL; + self->inbuf.buf = NULL; + self->pcm_buffer[0] = NULL; + self->pcm_buffer[1] = NULL; self->stream = mp_const_none; self->samples_decoded = 0; } bool common_hal_audiomp3_mp3file_deinited(audiomp3_mp3file_obj_t *self) { - return self->buffers[0] == NULL; + return self->pcm_buffer[0] == NULL; } uint32_t common_hal_audiomp3_mp3file_get_sample_rate(audiomp3_mp3file_obj_t *self) { @@ -356,11 +378,10 @@ void audiomp3_mp3file_reset_buffer(audiomp3_mp3file_obj_t *self, // loads background_callback_prevent(); if (stream_lseek(self->stream, SEEK_SET, 0) == 0) { - self->inbuf_offset = self->inbuf_length; + INPUT_BUFFER_CLEAR(self->inbuf); self->eof = 0; self->samples_decoded = 0; self->other_channel = -1; - mp3file_update_inbuf_half(self); mp3file_skip_id3v2(self); mp3file_find_sync_word(self); } @@ -372,7 +393,7 @@ audioio_get_buffer_result_t audiomp3_mp3file_get_buffer(audiomp3_mp3file_obj_t * uint8_t channel, uint8_t **bufptr, uint32_t *buffer_length) { - if (!self->inbuf) { + if (!self->inbuf.buf) { *buffer_length = 0; return GET_BUFFER_ERROR; } @@ -383,7 +404,7 @@ audioio_get_buffer_result_t audiomp3_mp3file_get_buffer(audiomp3_mp3file_obj_t * *buffer_length = self->frame_buffer_size; if (channel == self->other_channel) { - *bufptr = (uint8_t *)(self->buffers[self->other_buffer_index] + channel); + *bufptr = (uint8_t *)(self->pcm_buffer[self->other_buffer_index] + channel); self->other_channel = -1; self->samples_decoded += *buffer_length / sizeof(int16_t); return GET_BUFFER_MORE_DATA; @@ -393,7 +414,7 @@ audioio_get_buffer_result_t audiomp3_mp3file_get_buffer(audiomp3_mp3file_obj_t * self->buffer_index = !self->buffer_index; self->other_channel = 1 - channel; self->other_buffer_index = self->buffer_index; - int16_t *buffer = (int16_t *)(void *)self->buffers[self->buffer_index]; + int16_t *buffer = (int16_t *)(void *)self->pcm_buffer[self->buffer_index]; *bufptr = (uint8_t *)buffer; mp3file_skip_id3v2(self); @@ -416,7 +437,7 @@ audioio_get_buffer_result_t audiomp3_mp3file_get_buffer(audiomp3_mp3file_obj_t * mp3file_skip_id3v2(self); int result = mp3file_find_sync_word(self) ? GET_BUFFER_MORE_DATA : GET_BUFFER_DONE; - if (self->inbuf_offset >= 512) { + if (INPUT_BUFFER_SPACE(self->inbuf) > 512) { background_callback_add( &self->inbuf_fill_cb, mp3file_update_inbuf_cb, @@ -442,7 +463,7 @@ void audiomp3_mp3file_get_buffer_structure(audiomp3_mp3file_obj_t *self, bool si float common_hal_audiomp3_mp3file_get_rms_level(audiomp3_mp3file_obj_t *self) { float sumsq = 0.f; // Assumes no DC component to the audio. Is that a safe assumption? - int16_t *buffer = (int16_t *)(void *)self->buffers[self->buffer_index]; + int16_t *buffer = (int16_t *)(void *)self->pcm_buffer[self->buffer_index]; for (size_t i = 0; i < self->frame_buffer_size / sizeof(int16_t); i++) { sumsq += (float)buffer[i] * buffer[i]; } diff --git a/shared-module/audiomp3/MP3Decoder.h b/shared-module/audiomp3/MP3Decoder.h index ea946ba852c9..9ade55f203f2 100644 --- a/shared-module/audiomp3/MP3Decoder.h +++ b/shared-module/audiomp3/MP3Decoder.h @@ -13,14 +13,19 @@ #include "shared-module/audiocore/__init__.h" +typedef struct { + uint8_t *buf; + ssize_t size; + ssize_t read_off; + ssize_t write_off; +} mp3_input_buffer_t; + typedef struct { mp_obj_base_t base; struct _MP3DecInfo *decoder; background_callback_t inbuf_fill_cb; - uint8_t *inbuf; - int32_t inbuf_length; - int32_t inbuf_offset; - int16_t *buffers[2]; + mp3_input_buffer_t inbuf; + int16_t *pcm_buffer[2]; uint32_t len; uint32_t frame_buffer_size; From 9bc89f5fba8a20fbccd9b206f7719e2919bf8b77 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Thu, 30 May 2024 14:21:18 -0500 Subject: [PATCH 077/227] MP3Decoder: better handle INDATA_UNDERFLOW & MAINDATA_UNDERFLOW This allows playback of some 128k http streams from somafm, though glitches occur with some regularity. ```py import time import adafruit_connection_manager import adafruit_requests import audiobusio import audiomixer import audiomp3 import board import wifi pool = adafruit_connection_manager.get_radio_socketpool(wifi.radio) ssl_context = adafruit_connection_manager.get_radio_ssl_context(wifi.radio) requests = adafruit_requests.Session(pool, ssl_context) # todo: parse PLS files like https://somafm.com/nossl/dronezone.pls # todo: figure out why https URLs don't work at all (missing select?) # STREAMING_URL = "http://ice2.somafm.com/dronezone-128-mp3" STREAMING_URL = "http://ice4.somafm.com/tikitime-128-mp3" def get_mp3_stream(): if STREAMING_URL.startswith("http:") or STREAMING_URL.startswith("https:"): return requests.get(STREAMING_URL, headers={"connection": "close"}).socket return open(STREAMING_URL, "rb") mixer_buffer_size = 1152 * 16 mp3_buffer = bytearray(16384) with audiobusio.I2SOut( bit_clock=board.D12, word_select=board.D13, data=board.D11 ) as i2s, get_mp3_stream() as stream, audiomp3.MP3Decoder( stream, mp3_buffer ) as sample, audiomixer.Mixer( channel_count=2, sample_rate=44100, buffer_size=mixer_buffer_size ) as m: v = m.voice[0] print(sample) i2s.play(m) v.play(sample, loop=False) while v.playing: time.sleep(0.1) ``` --- shared-module/audiomp3/MP3Decoder.c | 41 ++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/shared-module/audiomp3/MP3Decoder.c b/shared-module/audiomp3/MP3Decoder.c index 2676c811940a..d687c3877ab1 100644 --- a/shared-module/audiomp3/MP3Decoder.c +++ b/shared-module/audiomp3/MP3Decoder.c @@ -23,6 +23,8 @@ #define MAX_BUFFER_LEN (MAX_NSAMP * MAX_NGRAN * MAX_NCHAN * sizeof(int16_t)) +#define DO_DEBUG (0) + #if defined(MICROPY_UNIX_COVERAGE) #define background_callback_prevent() ((void)0) #define background_callback_allow() ((void)0) @@ -38,6 +40,9 @@ STATIC bool stream_readable(void *stream) { } mp_int_t ret = stream_p->ioctl(stream, MP_STREAM_POLL, MP_STREAM_POLL_RD | MP_STREAM_POLL_ERR | MP_STREAM_POLL_HUP, &errcode); + if (DO_DEBUG) { + mp_printf(&mp_plat_print, "stream_readable ioctl() -> %d [errcode=%d]\n", ret, errcode); + } return ret != 0; } @@ -51,7 +56,13 @@ STATIC ssize_t stream_read(void *stream, void *buf, size_t len) { return -EINVAL; } mp_uint_t out_sz = stream_p->read(MP_OBJ_FROM_PTR(stream), buf, len, &errcode); + if (DO_DEBUG) { + mp_printf(&mp_plat_print, "stream_read(%d) -> %d\n", (int)len, (int)out_sz); + } if (out_sz == MP_STREAM_ERROR) { + if (DO_DEBUG) { + mp_printf(&mp_plat_print, "errcode=%d\n", errcode); + } return -errcode; // CIRCUITPY-CHANGE: returns negative errcode value } else { return out_sz; @@ -127,6 +138,10 @@ static bool mp3file_update_inbuf_always(audiomp3_mp3file_obj_t *self) { self->inbuf.write_off += n_read; } + if (DO_DEBUG) { + mp_printf(&mp_plat_print, "new avail=%d eof=%d\n", (int)INPUT_BUFFER_AVAILABLE(self->inbuf), self->eof); + } + // Return true iff there are at least some useful bytes in the buffer return INPUT_BUFFER_AVAILABLE(self->inbuf) > 0; } @@ -395,18 +410,25 @@ audioio_get_buffer_result_t audiomp3_mp3file_get_buffer(audiomp3_mp3file_obj_t * uint32_t *buffer_length) { if (!self->inbuf.buf) { *buffer_length = 0; + if (DO_DEBUG) { + mp_printf(&mp_plat_print, "%s:%d\n", __FILE__, __LINE__); + } return GET_BUFFER_ERROR; } if (!single_channel_output) { channel = 0; } - *buffer_length = self->frame_buffer_size; + size_t frame_buffer_size_bytes = self->frame_buffer_size; + *buffer_length = frame_buffer_size_bytes; if (channel == self->other_channel) { *bufptr = (uint8_t *)(self->pcm_buffer[self->other_buffer_index] + channel); self->other_channel = -1; self->samples_decoded += *buffer_length / sizeof(int16_t); + if (DO_DEBUG) { + mp_printf(&mp_plat_print, "%s:%d\n", __FILE__, __LINE__); + } return GET_BUFFER_MORE_DATA; } @@ -428,15 +450,26 @@ audioio_get_buffer_result_t audiomp3_mp3file_get_buffer(audiomp3_mp3file_obj_t * CONSUME(self, BYTES_LEFT(self) - bytes_left); if (err) { - *buffer_length = 0; - return GET_BUFFER_DONE; + memset(buffer, 0, frame_buffer_size_bytes); + if (DO_DEBUG) { + mp_printf(&mp_plat_print, "%s:%d err=%d\n", __FILE__, __LINE__, err); + } + if (err != ERR_MP3_INDATA_UNDERFLOW && err != ERR_MP3_MAINDATA_UNDERFLOW) { + memset(buffer, 0, self->frame_buffer_size); + *buffer_length = 0; + self->eof = true; + return GET_BUFFER_ERROR; + } } - self->samples_decoded += *buffer_length / sizeof(int16_t); + self->samples_decoded += frame_buffer_size_bytes / sizeof(int16_t); mp3file_skip_id3v2(self); int result = mp3file_find_sync_word(self) ? GET_BUFFER_MORE_DATA : GET_BUFFER_DONE; + if (DO_DEBUG) { + mp_printf(&mp_plat_print, "%s:%d result=%d\n", __FILE__, __LINE__, result); + } if (INPUT_BUFFER_SPACE(self->inbuf) > 512) { background_callback_add( &self->inbuf_fill_cb, From dffc55ee173f0a72e6946ebbc1d4496a82ba8a75 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Thu, 30 May 2024 14:32:48 -0500 Subject: [PATCH 078/227] MP3Decoder: STATIC -> static --- shared-module/audiomp3/MP3Decoder.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/shared-module/audiomp3/MP3Decoder.c b/shared-module/audiomp3/MP3Decoder.c index d687c3877ab1..38af45fb34f9 100644 --- a/shared-module/audiomp3/MP3Decoder.c +++ b/shared-module/audiomp3/MP3Decoder.c @@ -31,7 +31,7 @@ #define background_callback_add(buf, fn, arg) ((fn)((arg))) #endif -STATIC bool stream_readable(void *stream) { +static bool stream_readable(void *stream) { int errcode = 0; mp_obj_base_t *o = MP_OBJ_TO_PTR(stream); const mp_stream_p_t *stream_p = MP_OBJ_TYPE_GET_SLOT(o->type, protocol); @@ -48,7 +48,7 @@ STATIC bool stream_readable(void *stream) { // (near copy of mp_stream_posix_read, but with changes) // (circuitpy doesn't enable posix stream routines anyway) -STATIC ssize_t stream_read(void *stream, void *buf, size_t len) { +static ssize_t stream_read(void *stream, void *buf, size_t len) { int errcode; mp_obj_base_t *o = MP_OBJ_TO_PTR(stream); const mp_stream_p_t *stream_p = MP_OBJ_TYPE_GET_SLOT(o->type, protocol); @@ -71,7 +71,7 @@ STATIC ssize_t stream_read(void *stream, void *buf, size_t len) { // (near copy of mp_stream_posix_lseek, but with changes) // (circuitpy doesn't enable posix stream routines anyway) -STATIC off_t stream_lseek(void *stream, off_t offset, int whence) { +static off_t stream_lseek(void *stream, off_t offset, int whence) { int errcode; const mp_obj_base_t *o = stream; const mp_stream_p_t *stream_p = MP_OBJ_TYPE_GET_SLOT(o->type, protocol); From 2f3d37176290196be53f106a620938a1f8003e3f Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Thu, 30 May 2024 14:49:09 -0500 Subject: [PATCH 079/227] update expected result due to addition of audiomp3 module --- tests/unix/extra_coverage.py.exp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/tests/unix/extra_coverage.py.exp b/tests/unix/extra_coverage.py.exp index 10bf6c4e4904..4aa9c351b4ba 100644 --- a/tests/unix/extra_coverage.py.exp +++ b/tests/unix/extra_coverage.py.exp @@ -52,15 +52,16 @@ port builtins micropython __future__ _asyncio _thread aesio array audiocore -audiomixer binascii bitmapfilter bitmaptools -cexample cmath codeop collections -cppexample displayio errno example_package -floppyio gc hashlib heapq -io jpegio json locale -math os platform qrio -rainbowio random re select -struct synthio sys time -traceback uctypes ulab zlib +audiomixer audiomp3 binascii bitmapfilter +bitmaptools cexample cmath codeop +collections cppexample displayio errno +example_package floppyio gc +hashlib heapq io jpegio +json locale math os +platform qrio rainbowio random +re select struct synthio +sys time traceback uctypes +ulab zlib me rainbowio random From 86f8210127bfd8f085d4d7466fccf1f1314a4e47 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Thu, 30 May 2024 16:47:58 -0400 Subject: [PATCH 080/227] nordic/bluetooth/ble_drv.c: gc entire event handler list --- ports/nordic/bluetooth/ble_drv.c | 12 ++++++++++-- ports/nordic/bluetooth/ble_drv.h | 1 + ports/nordic/common-hal/_bleio/__init__.c | 1 + 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ports/nordic/bluetooth/ble_drv.c b/ports/nordic/bluetooth/ble_drv.c index 9c70c28d3169..b27a7c54554c 100644 --- a/ports/nordic/bluetooth/ble_drv.c +++ b/ports/nordic/bluetooth/ble_drv.c @@ -31,7 +31,7 @@ volatile sd_flash_operation_status_t sd_flash_operation_status; __attribute__((aligned(4))) static uint8_t m_ble_evt_buf[sizeof(ble_evt_t) + (BLE_GATTS_VAR_ATTR_LEN_MAX)]; -void ble_drv_reset() { +void ble_drv_reset(void) { // Linked list items will be gc'd. MP_STATE_VM(ble_drv_evt_handler_entries) = NULL; sd_flash_operation_status = SD_FLASH_OPERATION_DONE; @@ -136,7 +136,7 @@ void SD_EVT_IRQHandler(void) { const uint32_t err_code = sd_ble_evt_get(m_ble_evt_buf, &evt_len); if (err_code != NRF_SUCCESS) { if (err_code == NRF_ERROR_DATA_SIZE) { - printf("NRF_ERROR_DATA_SIZE\n"); + mp_printf(&mp_plat_print, "NRF_ERROR_DATA_SIZE\n"); } break; @@ -177,4 +177,12 @@ void SD_EVT_IRQHandler(void) { #endif } +void ble_drv_gc_collect(void) { + ble_drv_evt_handler_entry_t *it = MP_STATE_VM(ble_drv_evt_handler_entries); + while (it != NULL) { + gc_collect_ptr(it); + it = it->next; + } +} + MP_REGISTER_ROOT_POINTER(ble_drv_evt_handler_entry_t * ble_drv_evt_handler_entries); diff --git a/ports/nordic/bluetooth/ble_drv.h b/ports/nordic/bluetooth/ble_drv.h index 30318d5264fa..87a18ac5cd77 100644 --- a/ports/nordic/bluetooth/ble_drv.h +++ b/ports/nordic/bluetooth/ble_drv.h @@ -49,6 +49,7 @@ void ble_drv_reset(void); void ble_drv_remove_heap_handlers(void); void ble_drv_add_event_handler(ble_drv_evt_handler_t func, void *param); void ble_drv_remove_event_handler(ble_drv_evt_handler_t func, void *param); +void ble_drv_gc_collect(void); // Allow for user provided entries to prevent allocations outside the VM. void ble_drv_add_event_handler_entry(ble_drv_evt_handler_entry_t *entry, ble_drv_evt_handler_t func, void *param); diff --git a/ports/nordic/common-hal/_bleio/__init__.c b/ports/nordic/common-hal/_bleio/__init__.c index 1f4b81f74d80..33e12eb3680f 100644 --- a/ports/nordic/common-hal/_bleio/__init__.c +++ b/ports/nordic/common-hal/_bleio/__init__.c @@ -248,4 +248,5 @@ void bleio_background(void) { void common_hal_bleio_gc_collect(void) { bleio_adapter_gc_collect(&common_hal_bleio_adapter_obj); + ble_drv_gc_collect(); } From a5c4a863497f47bdc3023b3e2d0fb01e01788075 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Thu, 30 May 2024 16:45:35 -0500 Subject: [PATCH 081/227] MP3Decoder: ssize_t type is not portable, don't use it --- shared-module/audiomp3/MP3Decoder.c | 2 +- shared-module/audiomp3/MP3Decoder.h | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/shared-module/audiomp3/MP3Decoder.c b/shared-module/audiomp3/MP3Decoder.c index 38af45fb34f9..a6d69aec09fa 100644 --- a/shared-module/audiomp3/MP3Decoder.c +++ b/shared-module/audiomp3/MP3Decoder.c @@ -48,7 +48,7 @@ static bool stream_readable(void *stream) { // (near copy of mp_stream_posix_read, but with changes) // (circuitpy doesn't enable posix stream routines anyway) -static ssize_t stream_read(void *stream, void *buf, size_t len) { +static mp_int_t stream_read(void *stream, void *buf, size_t len) { int errcode; mp_obj_base_t *o = MP_OBJ_TO_PTR(stream); const mp_stream_p_t *stream_p = MP_OBJ_TYPE_GET_SLOT(o->type, protocol); diff --git a/shared-module/audiomp3/MP3Decoder.h b/shared-module/audiomp3/MP3Decoder.h index 9ade55f203f2..89328deb4a97 100644 --- a/shared-module/audiomp3/MP3Decoder.h +++ b/shared-module/audiomp3/MP3Decoder.h @@ -15,9 +15,9 @@ typedef struct { uint8_t *buf; - ssize_t size; - ssize_t read_off; - ssize_t write_off; + mp_int_t size; + mp_int_t read_off; + mp_int_t write_off; } mp3_input_buffer_t; typedef struct { From 660822ab97ed70f84b8e999832327089b9453ab2 Mon Sep 17 00:00:00 2001 From: Tobias Schmale Date: Fri, 31 May 2024 08:38:05 +0000 Subject: [PATCH 082/227] update esp-idf and enable riscv ulp --- ports/espressif/bindings/espulp/ULP.c | 4 ++-- ports/espressif/esp-idf | 2 +- ports/espressif/esp-idf-config/sdkconfig-esp32s2.defaults | 2 ++ ports/espressif/esp-idf-config/sdkconfig-esp32s3.defaults | 2 ++ 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ports/espressif/bindings/espulp/ULP.c b/ports/espressif/bindings/espulp/ULP.c index 60f2b1ab9c46..c660987aea5f 100644 --- a/ports/espressif/bindings/espulp/ULP.c +++ b/ports/espressif/bindings/espulp/ULP.c @@ -19,7 +19,7 @@ //| Raises an exception if another ULP has been instantiated. This //| ensures that is is only used by one piece of code at a time. //| -//| :param Architecture arch: The ulp arch. Only `FSM` architecture is currently supported. +//| :param Architecture arch: The ulp arch. //| """ //| ... static mp_obj_t espulp_ulp_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { @@ -103,7 +103,7 @@ static MP_DEFINE_CONST_FUN_OBJ_3(espulp_ulp_set_wakeup_period_obj, espulp_ulp_se //| //| :param ReadableBuffer program: the ULP binary. //| :param int entrypoint: Specifies the offset (in bytes) of the first instruction -//| from the start of the program. +//| from the start of the program (Only used by FSM ULP). //| :param Sequence[microcontroller.Pin] pins: Pins made available to the ULP. //| The pins are claimed and not reset until `halt()` is called.""" //| ... diff --git a/ports/espressif/esp-idf b/ports/espressif/esp-idf index da9dc379bede..0b28b79fafa7 160000 --- a/ports/espressif/esp-idf +++ b/ports/espressif/esp-idf @@ -1 +1 @@ -Subproject commit da9dc379bede0bd684ddf7d95be4630897ca522e +Subproject commit 0b28b79fafa75d36348d84d9eaccdbcd73220571 diff --git a/ports/espressif/esp-idf-config/sdkconfig-esp32s2.defaults b/ports/espressif/esp-idf-config/sdkconfig-esp32s2.defaults index 542d5be27948..66e06667a1a8 100644 --- a/ports/espressif/esp-idf-config/sdkconfig-esp32s2.defaults +++ b/ports/espressif/esp-idf-config/sdkconfig-esp32s2.defaults @@ -53,6 +53,8 @@ CONFIG_NEWLIB_NANO_FORMAT=y # CONFIG_ULP_COPROC_ENABLED=y CONFIG_ULP_COPROC_TYPE_FSM=y +CONFIG_ULP_COPROC_TYPE_RISCV=y # Note: enabling both ULPs simultaneously only works due to a modification of adafruit/esp-idf + # (see adafruit/esp-idf/pull/16) until espressif/esp-idf/issues/12999 is fixed. CONFIG_ULP_COPROC_RESERVE_MEM=8176 # end of Ultra Low Power (ULP) Co-processor diff --git a/ports/espressif/esp-idf-config/sdkconfig-esp32s3.defaults b/ports/espressif/esp-idf-config/sdkconfig-esp32s3.defaults index 15ccb7dba9e3..fe3c3e0a2da8 100644 --- a/ports/espressif/esp-idf-config/sdkconfig-esp32s3.defaults +++ b/ports/espressif/esp-idf-config/sdkconfig-esp32s3.defaults @@ -93,6 +93,8 @@ CONFIG_NEWLIB_NANO_FORMAT=y # CONFIG_ULP_COPROC_ENABLED=y CONFIG_ULP_COPROC_TYPE_FSM=y +CONFIG_ULP_COPROC_TYPE_RISCV=y # Note: enabling both ULPs simultaneously only works due to a modification of adafruit/esp-idf + # (see adafruit/esp-idf/pull/16) until espressif/esp-idf/issues/12999 is fixed. CONFIG_ULP_COPROC_RESERVE_MEM=8176 # end of Ultra Low Power (ULP) Co-processor From 391325143744933aaf9facffcf4bd0e89158e615 Mon Sep 17 00:00:00 2001 From: Thomas Raffler Date: Fri, 31 May 2024 14:57:02 +0200 Subject: [PATCH 083/227] add missing GPIO33 to esp32s3_devkitm --- ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/pins.c | 1 + 1 file changed, 1 insertion(+) diff --git a/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/pins.c b/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/pins.c index 0a30b6614a1d..b966614d386b 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/pins.c +++ b/ports/espressif/boards/espressif_esp32s3_devkitm_1_n8/pins.c @@ -31,6 +31,7 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_IO19), MP_ROM_PTR(&pin_GPIO19) }, { MP_ROM_QSTR(MP_QSTR_IO20), MP_ROM_PTR(&pin_GPIO20) }, { MP_ROM_QSTR(MP_QSTR_IO21), MP_ROM_PTR(&pin_GPIO21) }, + { MP_ROM_QSTR(MP_QSTR_IO33), MP_ROM_PTR(&pin_GPIO33) }, { MP_ROM_QSTR(MP_QSTR_IO34), MP_ROM_PTR(&pin_GPIO34) }, { MP_ROM_QSTR(MP_QSTR_IO35), MP_ROM_PTR(&pin_GPIO35) }, { MP_ROM_QSTR(MP_QSTR_IO36), MP_ROM_PTR(&pin_GPIO36) }, From 79ef1f73b370e5b239e9db80801577143f869f63 Mon Sep 17 00:00:00 2001 From: Scott Shawcroft Date: Fri, 17 May 2024 15:23:42 -0700 Subject: [PATCH 084/227] Support BLE pairing and bonding on ESP --- ports/espressif/common-hal/_bleio/Adapter.c | 41 +++++++++--- .../espressif/common-hal/_bleio/Connection.c | 65 +++++++++++++++---- ports/espressif/common-hal/_bleio/__init__.c | 6 ++ 3 files changed, 88 insertions(+), 24 deletions(-) diff --git a/ports/espressif/common-hal/_bleio/Adapter.c b/ports/espressif/common-hal/_bleio/Adapter.c index 1120c7b914cf..3c08f28ea4da 100644 --- a/ports/espressif/common-hal/_bleio/Adapter.c +++ b/ports/espressif/common-hal/_bleio/Adapter.c @@ -69,6 +69,9 @@ static void _on_sync(void) { xTaskNotifyGive(cp_task); } +// All examples have this. It'd make sense in a header. +void ble_store_config_init(void); + void common_hal_bleio_adapter_set_enabled(bleio_adapter_obj_t *self, bool enabled) { const bool is_enabled = common_hal_bleio_adapter_get_enabled(self); @@ -93,6 +96,20 @@ void common_hal_bleio_adapter_set_enabled(bleio_adapter_obj_t *self, bool enable ble_hs_cfg.sync_cb = _on_sync; // ble_hs_cfg.store_status_cb = ble_store_util_status_rr; + ble_hs_cfg.sm_io_cap = BLE_SM_IO_CAP_NO_IO; + ble_hs_cfg.sm_bonding = 1; + /* Enable the appropriate bit masks to make sure the keys + * that are needed are exchanged + */ + ble_hs_cfg.sm_our_key_dist |= BLE_SM_PAIR_KEY_DIST_ENC; + ble_hs_cfg.sm_their_key_dist |= BLE_SM_PAIR_KEY_DIST_ENC; + + ble_hs_cfg.sm_mitm = 1; + ble_hs_cfg.sm_sc = 1; + /* Stores the IRK */ + ble_hs_cfg.sm_our_key_dist |= BLE_SM_PAIR_KEY_DIST_ID; + ble_hs_cfg.sm_their_key_dist |= BLE_SM_PAIR_KEY_DIST_ID; + ble_svc_gap_init(); ble_svc_gatt_init(); ble_svc_ans_init(); @@ -115,6 +132,8 @@ void common_hal_bleio_adapter_set_enabled(bleio_adapter_obj_t *self, bool enable connection->conn_handle = BLEIO_HANDLE_INVALID; } + ble_store_config_init(); + cp_task = xTaskGetCurrentTaskHandle(); nimble_port_freertos_init(nimble_host_task); @@ -277,10 +296,13 @@ static int _mtu_reply(uint16_t conn_handle, const struct ble_gatt_error *error, uint16_t mtu, void *arg) { bleio_connection_internal_t *connection = (bleio_connection_internal_t *)arg; - if (conn_handle != connection->conn_handle || error->status != 0) { + if (conn_handle != connection->conn_handle) { return 0; } - connection->mtu = mtu; + if (error->status == 0) { + connection->mtu = mtu; + } + xTaskNotify(cp_task, conn_handle, eSetValueWithOverwrite); return 0; } @@ -324,11 +346,11 @@ static int _connect_event(struct ble_gap_event *event, void *self_in) { switch (event->type) { case BLE_GAP_EVENT_CONNECT: if (event->connect.status == 0) { + // This triggers an MTU exchange. Its reply will unblock CP. _new_connection(event->connect.conn_handle); // Set connections objs back to NULL since we have a new // connection and need a new tuple. self->connection_objs = NULL; - xTaskNotify(cp_task, event->connect.conn_handle, eSetValueWithOverwrite); } else { xTaskNotify(cp_task, -event->connect.status, eSetValueWithOverwrite); } @@ -663,7 +685,7 @@ bool common_hal_bleio_adapter_get_advertising(bleio_adapter_obj_t *self) { bool common_hal_bleio_adapter_get_connected(bleio_adapter_obj_t *self) { for (size_t i = 0; i < BLEIO_TOTAL_CONNECTION_COUNT; i++) { bleio_connection_internal_t *connection = &bleio_connections[i]; - if (connection->conn_handle != BLEIO_HANDLE_INVALID) { + if (connection->conn_handle != BLEIO_HANDLE_INVALID && connection->mtu != 0) { return true; } } @@ -678,7 +700,7 @@ mp_obj_t common_hal_bleio_adapter_get_connections(bleio_adapter_obj_t *self) { mp_obj_t items[BLEIO_TOTAL_CONNECTION_COUNT]; for (size_t i = 0; i < BLEIO_TOTAL_CONNECTION_COUNT; i++) { bleio_connection_internal_t *connection = &bleio_connections[i]; - if (connection->conn_handle != BLEIO_HANDLE_INVALID) { + if (connection->conn_handle != BLEIO_HANDLE_INVALID && connection->mtu != 0) { if (connection->connection_obj == mp_const_none) { connection->connection_obj = bleio_connection_new_from_internal(connection); } @@ -691,14 +713,13 @@ mp_obj_t common_hal_bleio_adapter_get_connections(bleio_adapter_obj_t *self) { } void common_hal_bleio_adapter_erase_bonding(bleio_adapter_obj_t *self) { - mp_raise_NotImplementedError(NULL); - // bonding_erase_storage(); + ble_store_clear(); } bool common_hal_bleio_adapter_is_bonded_to_central(bleio_adapter_obj_t *self) { - mp_raise_NotImplementedError(NULL); - // return bonding_peripheral_bond_count() > 0; - return false; + int count; + ble_store_util_count(BLE_STORE_OBJ_TYPE_PEER_SEC, &count); + return count > 0; } void bleio_adapter_gc_collect(bleio_adapter_obj_t *adapter) { diff --git a/ports/espressif/common-hal/_bleio/Connection.c b/ports/espressif/common-hal/_bleio/Connection.c index be416b2fe02f..ea30b1865f59 100644 --- a/ports/espressif/common-hal/_bleio/Connection.c +++ b/ports/espressif/common-hal/_bleio/Connection.c @@ -55,22 +55,31 @@ int bleio_connection_event_cb(struct ble_gap_event *event, void *connection_in) } case BLE_GAP_EVENT_PHY_UPDATE_COMPLETE: { - #if CIRCUITPY_VERBOSE_BLE - mp_printf(&mp_plat_print, "TODO connection event: PHY update complete\n"); - #endif + // Nothing to do here. CircuitPython doesn't tell the user what PHY + // we're on. break; } case BLE_GAP_EVENT_CONN_UPDATE: { - #if CIRCUITPY_VERBOSE_BLE - mp_printf(&mp_plat_print, "TODO connection event: connection update\n"); - #endif + struct ble_gap_conn_desc desc; + int rc = ble_gap_conn_find(event->conn_update.conn_handle, &desc); + assert(rc == 0); + connection->conn_params_updating = false; break; } - case BLE_GAP_EVENT_L2CAP_UPDATE_REQ: { - #if CIRCUITPY_VERBOSE_BLE - mp_printf(&mp_plat_print, "TODO connection event: l2cap update request\n"); - #endif + case BLE_GAP_EVENT_ENC_CHANGE: { + struct ble_gap_conn_desc desc; + ble_gap_conn_find(event->enc_change.conn_handle, &desc); + if (desc.sec_state.encrypted) { + connection->pair_status = PAIR_PAIRED; + } + break; + } + case BLE_GAP_EVENT_MTU: { + if (event->mtu.conn_handle != connection->conn_handle) { + return 0; + } + connection->mtu = event->mtu.value; break; } @@ -113,15 +122,34 @@ void common_hal_bleio_connection_disconnect(bleio_connection_internal_t *self) { } void common_hal_bleio_connection_pair(bleio_connection_internal_t *self, bool bond) { - // TODO: Implement this. + // We may already be trying to pair if we just reconnected to a peer we're + // bonded with. + while (self->pair_status == PAIR_WAITING && !mp_hal_is_interrupted()) { + RUN_BACKGROUND_TASKS; + } + if (self->pair_status == PAIR_PAIRED) { + return; + } + self->pair_status = PAIR_WAITING; + CHECK_NIMBLE_ERROR(ble_gap_security_initiate(self->conn_handle)); + while (self->pair_status == PAIR_WAITING && !mp_hal_is_interrupted()) { + RUN_BACKGROUND_TASKS; + } + if (mp_hal_is_interrupted()) { + return; + } } mp_float_t common_hal_bleio_connection_get_connection_interval(bleio_connection_internal_t *self) { - // TODO: Implement this. while (self->conn_params_updating && !mp_hal_is_interrupted()) { RUN_BACKGROUND_TASKS; } - return 0; + if (mp_hal_is_interrupted()) { + return 0; + } + struct ble_gap_conn_desc desc; + CHECK_NIMBLE_ERROR(ble_gap_conn_find(self->conn_handle, &desc)); + return 1.25f * desc.conn_itvl; } // Return the current negotiated MTU length, minus overhead. @@ -131,7 +159,16 @@ mp_int_t common_hal_bleio_connection_get_max_packet_length(bleio_connection_inte void common_hal_bleio_connection_set_connection_interval(bleio_connection_internal_t *self, mp_float_t new_interval) { self->conn_params_updating = true; - // TODO: Implement this. + struct ble_gap_conn_desc desc; + CHECK_NIMBLE_ERROR(ble_gap_conn_find(self->conn_handle, &desc)); + uint16_t interval = new_interval / 1.25f; + struct ble_gap_upd_params updated = { + .itvl_min = interval, + .itvl_max = interval, + .latency = desc.conn_latency, + .supervision_timeout = desc.supervision_timeout + }; + CHECK_NIMBLE_ERROR(ble_gap_update_params(self->conn_handle, &updated)); } static volatile int _last_discovery_status; diff --git a/ports/espressif/common-hal/_bleio/__init__.c b/ports/espressif/common-hal/_bleio/__init__.c index 361120c84867..0d99a97c23c4 100644 --- a/ports/espressif/common-hal/_bleio/__init__.c +++ b/ports/espressif/common-hal/_bleio/__init__.c @@ -97,6 +97,12 @@ void check_ble_error(int error_code, const char *file, size_t line) { return; } switch (error_code) { + case BLE_HS_ATT_ERR(BLE_ATT_ERR_INSUFFICIENT_AUTHEN): + mp_raise_bleio_SecurityError(MP_ERROR_TEXT("Insufficient authentication")); + return; + case BLE_HS_ATT_ERR(BLE_ATT_ERR_INSUFFICIENT_ENC): + mp_raise_bleio_SecurityError(MP_ERROR_TEXT("Insufficient encryption")); + return; default: #if CIRCUITPY_VERBOSE_BLE if (file) { From 387654d84381659673af2ef7472f77c2b8bc6b96 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Fri, 31 May 2024 18:36:51 -0400 Subject: [PATCH 085/227] Add adafruit_feather_rp2040_adalogger --- .../adafruit_feather_rp2040_adalogger/board.c | 9 +++ .../mpconfigboard.h | 25 +++++++ .../mpconfigboard.mk | 9 +++ .../pico-sdk-configboard.h | 12 ++++ .../adafruit_feather_rp2040_adalogger/pins.c | 70 +++++++++++++++++++ 5 files changed, 125 insertions(+) create mode 100644 ports/raspberrypi/boards/adafruit_feather_rp2040_adalogger/board.c create mode 100644 ports/raspberrypi/boards/adafruit_feather_rp2040_adalogger/mpconfigboard.h create mode 100644 ports/raspberrypi/boards/adafruit_feather_rp2040_adalogger/mpconfigboard.mk create mode 100644 ports/raspberrypi/boards/adafruit_feather_rp2040_adalogger/pico-sdk-configboard.h create mode 100644 ports/raspberrypi/boards/adafruit_feather_rp2040_adalogger/pins.c diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_adalogger/board.c b/ports/raspberrypi/boards/adafruit_feather_rp2040_adalogger/board.c new file mode 100644 index 000000000000..e6a868ab2122 --- /dev/null +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_adalogger/board.c @@ -0,0 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "supervisor/board.h" + +// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_adalogger/mpconfigboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_adalogger/mpconfigboard.h new file mode 100644 index 000000000000..343601694230 --- /dev/null +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_adalogger/mpconfigboard.h @@ -0,0 +1,25 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#pragma once + +#define MICROPY_HW_BOARD_NAME "Adafruit Feather RP2040 Adalogger" +#define MICROPY_HW_MCU_NAME "rp2040" + +#define MICROPY_HW_NEOPIXEL (&pin_GPIO17) + +#define DEFAULT_I2C_BUS_SCL (&pin_GPIO3) +#define DEFAULT_I2C_BUS_SDA (&pin_GPIO2) + +#define DEFAULT_SPI_BUS_SCK (&pin_GPIO14) +#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO15) +#define DEFAULT_SPI_BUS_MISO (&pin_GPIO8) + +#define DEFAULT_UART_BUS_RX (&pin_GPIO1) +#define DEFAULT_UART_BUS_TX (&pin_GPIO0) + +// #define CIRCUITPY_CONSOLE_UART_RX DEFAULT_UART_BUS_RX +// #define CIRCUITPY_CONSOLE_UART_TX DEFAULT_UART_BUS_TX diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_adalogger/mpconfigboard.mk b/ports/raspberrypi/boards/adafruit_feather_rp2040_adalogger/mpconfigboard.mk new file mode 100644 index 000000000000..529853b22f51 --- /dev/null +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_adalogger/mpconfigboard.mk @@ -0,0 +1,9 @@ +USB_VID = 0x239A +USB_PID = 0x815E +USB_PRODUCT = "Feather RP2040 Adalogger" +USB_MANUFACTURER = "Adafruit" + +CHIP_VARIANT = RP2040 +CHIP_FAMILY = rp2 + +EXTERNAL_FLASH_DEVICES = "GD25Q64C,W25Q64JVxQ" diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_adalogger/pico-sdk-configboard.h b/ports/raspberrypi/boards/adafruit_feather_rp2040_adalogger/pico-sdk-configboard.h new file mode 100644 index 000000000000..ce5a7645b4e2 --- /dev/null +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_adalogger/pico-sdk-configboard.h @@ -0,0 +1,12 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#pragma once + +// Put board-specific pico-sdk definitions here. This file must exist. + +// Allow extra time for xosc to start. +#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64 diff --git a/ports/raspberrypi/boards/adafruit_feather_rp2040_adalogger/pins.c b/ports/raspberrypi/boards/adafruit_feather_rp2040_adalogger/pins.c new file mode 100644 index 000000000000..78d09407a651 --- /dev/null +++ b/ports/raspberrypi/boards/adafruit_feather_rp2040_adalogger/pins.c @@ -0,0 +1,70 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "shared-bindings/board/__init__.h" + +static const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) }, + { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO27) }, + { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO28) }, + { MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO29) }, + + { MP_ROM_QSTR(MP_QSTR_D24), MP_ROM_PTR(&pin_GPIO24) }, + { MP_ROM_QSTR(MP_QSTR_D25), MP_ROM_PTR(&pin_GPIO25) }, + + { MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO9) }, + { MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO10) }, + { MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO11) }, + { MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO12) }, + + { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO1) }, + + { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO0) }, + + { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO15) }, + { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO8) }, + + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO3) }, + + { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_BOOT), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_GPIO7) }, + + { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO13) }, + { MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO13) }, + + { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO17) }, + + { MP_ROM_QSTR(MP_QSTR_SD_CARD_DETECT), MP_ROM_PTR(&pin_GPIO16) }, + { MP_ROM_QSTR(MP_QSTR_SD_CLK), MP_ROM_PTR(&pin_GPIO18) }, + + { MP_ROM_QSTR(MP_QSTR_SD_MOSI), MP_ROM_PTR(&pin_GPIO19) }, + { MP_ROM_QSTR(MP_QSTR_SD_CMD), MP_ROM_PTR(&pin_GPIO19) }, + + { MP_ROM_QSTR(MP_QSTR_SD_MISO), MP_ROM_PTR(&pin_GPIO20) }, + { MP_ROM_QSTR(MP_QSTR_SD_DAT0), MP_ROM_PTR(&pin_GPIO20) }, + + { MP_ROM_QSTR(MP_QSTR_SD_DAT1), MP_ROM_PTR(&pin_GPIO21) }, + { MP_ROM_QSTR(MP_QSTR_SD_DAT2), MP_ROM_PTR(&pin_GPIO22) }, + + { MP_ROM_QSTR(MP_QSTR_SD_CS), MP_ROM_PTR(&pin_GPIO23) }, + { MP_ROM_QSTR(MP_QSTR_SD_DAT3), MP_ROM_PTR(&pin_GPIO23) }, + + { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, + { MP_ROM_QSTR(MP_QSTR_STEMMA_I2C), MP_ROM_PTR(&board_i2c_obj) }, + { MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) }, + { MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) }, +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); From 2ddae3d96c56b94bc15ac0673fc4023720e37370 Mon Sep 17 00:00:00 2001 From: Bernhard Bablok Date: Sat, 1 Jun 2024 16:58:15 +0200 Subject: [PATCH 086/227] removed definition of board_display_obj --- ports/atmel-samd/boards/hallowing_m0_express/board.c | 1 - ports/atmel-samd/boards/hallowing_m4_express/board.c | 1 - ports/atmel-samd/boards/monster_m4sk/board.c | 1 - ports/atmel-samd/boards/openbook_m4/board.c | 1 - ports/atmel-samd/boards/pewpew_lcd/board.c | 1 - ports/atmel-samd/boards/pewpew_m4/board.c | 1 - ports/atmel-samd/boards/pygamer/board.c | 1 - ports/atmel-samd/boards/seeeduino_wio_terminal/board.c | 1 - ports/atmel-samd/boards/ugame10/board.c | 1 - ports/espressif/boards/adafruit_esp32s3_camera/board.c | 1 - .../boards/adafruit_feather_esp32s2_reverse_tft/board.c | 1 - ports/espressif/boards/adafruit_feather_esp32s2_tft/board.c | 1 - .../boards/adafruit_feather_esp32s3_reverse_tft/board.c | 1 - ports/espressif/boards/adafruit_feather_esp32s3_tft/board.c | 1 - ports/espressif/boards/adafruit_funhouse/board.c | 1 - ports/espressif/boards/espressif_esp32s3_eye/board.c | 1 - ports/espressif/boards/hexky_s2/board.c | 1 - ports/espressif/boards/m5stack_atoms3/board.c | 1 - ports/espressif/boards/m5stack_cardputer/board.c | 1 - ports/espressif/boards/m5stack_core2/board.c | 1 - ports/espressif/boards/m5stack_core_basic/board.c | 1 - ports/espressif/boards/m5stack_core_fire/board.c | 1 - ports/espressif/boards/m5stack_cores3/board.c | 1 - ports/espressif/boards/m5stack_dial/board.c | 1 - ports/espressif/boards/waveshare_esp32_s3_geek/board.c | 1 - ports/nordic/boards/clue_nrf52840_express/board.c | 1 - ports/nordic/boards/hiibot_bluefi/board.c | 1 - ports/nordic/boards/makerdiary_nrf52840_m2_devkit/board.c | 1 - ports/nordic/boards/ohs2020_badge/board.c | 1 - ports/raspberrypi/boards/adafruit_floppsy_rp2040/board.c | 1 - ports/raspberrypi/boards/adafruit_macropad_rp2040/board.c | 1 - ports/raspberrypi/boards/hack_club_sprig/board.c | 1 - ports/raspberrypi/boards/heiafr_picomo_v2/board.c | 1 - ports/raspberrypi/boards/pajenicko_picopad/board.c | 1 - ports/raspberrypi/boards/pimoroni_picosystem/board.c | 1 - ports/raspberrypi/boards/waveshare_rp2040_geek/board.c | 1 - 36 files changed, 36 deletions(-) diff --git a/ports/atmel-samd/boards/hallowing_m0_express/board.c b/ports/atmel-samd/boards/hallowing_m0_express/board.c index c4915f21300b..637129a0e9d5 100644 --- a/ports/atmel-samd/boards/hallowing_m0_express/board.c +++ b/ports/atmel-samd/boards/hallowing_m0_express/board.c @@ -12,7 +12,6 @@ #include "shared-module/displayio/mipi_constants.h" #include "shared-bindings/busio/SPI.h" -fourwire_fourwire_obj_t board_display_obj; #define DELAY 0x80 diff --git a/ports/atmel-samd/boards/hallowing_m4_express/board.c b/ports/atmel-samd/boards/hallowing_m4_express/board.c index a8237fdd0aa4..bfef5fbcd75d 100644 --- a/ports/atmel-samd/boards/hallowing_m4_express/board.c +++ b/ports/atmel-samd/boards/hallowing_m4_express/board.c @@ -13,7 +13,6 @@ #include "shared-module/displayio/__init__.h" #include "shared-module/displayio/mipi_constants.h" -fourwire_fourwire_obj_t board_display_obj; #define DELAY 0x80 diff --git a/ports/atmel-samd/boards/monster_m4sk/board.c b/ports/atmel-samd/boards/monster_m4sk/board.c index 264f01d1b7c1..1d4fd69b7f70 100644 --- a/ports/atmel-samd/boards/monster_m4sk/board.c +++ b/ports/atmel-samd/boards/monster_m4sk/board.c @@ -12,7 +12,6 @@ #include "shared-module/displayio/__init__.h" #include "shared-module/displayio/mipi_constants.h" -fourwire_fourwire_obj_t board_display_obj; #define DELAY 0x80 diff --git a/ports/atmel-samd/boards/openbook_m4/board.c b/ports/atmel-samd/boards/openbook_m4/board.c index 9ccb634a6f71..032ebe9f628a 100644 --- a/ports/atmel-samd/boards/openbook_m4/board.c +++ b/ports/atmel-samd/boards/openbook_m4/board.c @@ -13,7 +13,6 @@ #include "shared-module/displayio/__init__.h" #include "shared-module/displayio/mipi_constants.h" -fourwire_fourwire_obj_t board_display_obj; #define DELAY 0x80 #define HEIGHT 400 diff --git a/ports/atmel-samd/boards/pewpew_lcd/board.c b/ports/atmel-samd/boards/pewpew_lcd/board.c index bf174481a61a..6a10132e11dc 100644 --- a/ports/atmel-samd/boards/pewpew_lcd/board.c +++ b/ports/atmel-samd/boards/pewpew_lcd/board.c @@ -12,7 +12,6 @@ #include "shared-module/displayio/__init__.h" #include "shared-module/displayio/mipi_constants.h" -fourwire_fourwire_obj_t board_display_obj; #define DELAY 0x80 diff --git a/ports/atmel-samd/boards/pewpew_m4/board.c b/ports/atmel-samd/boards/pewpew_m4/board.c index 6ba7155867a9..2007d755c694 100644 --- a/ports/atmel-samd/boards/pewpew_m4/board.c +++ b/ports/atmel-samd/boards/pewpew_m4/board.c @@ -12,7 +12,6 @@ #include "shared-module/displayio/__init__.h" #include "shared-module/displayio/mipi_constants.h" -fourwire_fourwire_obj_t board_display_obj; typedef struct { const uint32_t *config_data; diff --git a/ports/atmel-samd/boards/pygamer/board.c b/ports/atmel-samd/boards/pygamer/board.c index 91c389bd74f8..53275ac686a1 100644 --- a/ports/atmel-samd/boards/pygamer/board.c +++ b/ports/atmel-samd/boards/pygamer/board.c @@ -13,7 +13,6 @@ #include "shared-module/displayio/mipi_constants.h" #include "supervisor/shared/board.h" -fourwire_fourwire_obj_t board_display_obj; #define DELAY 0x80 diff --git a/ports/atmel-samd/boards/seeeduino_wio_terminal/board.c b/ports/atmel-samd/boards/seeeduino_wio_terminal/board.c index 6390c1def5ed..d3d1ae3a956f 100644 --- a/ports/atmel-samd/boards/seeeduino_wio_terminal/board.c +++ b/ports/atmel-samd/boards/seeeduino_wio_terminal/board.c @@ -13,7 +13,6 @@ #include "shared-module/displayio/mipi_constants.h" #include "shared-bindings/digitalio/DigitalInOut.h" -fourwire_fourwire_obj_t board_display_obj; digitalio_digitalinout_obj_t CTR_5V; digitalio_digitalinout_obj_t CTR_3V3; digitalio_digitalinout_obj_t USB_HOST_ENABLE; diff --git a/ports/atmel-samd/boards/ugame10/board.c b/ports/atmel-samd/boards/ugame10/board.c index 03ba7de54dd7..bbf3839c516f 100644 --- a/ports/atmel-samd/boards/ugame10/board.c +++ b/ports/atmel-samd/boards/ugame10/board.c @@ -12,7 +12,6 @@ #include "shared-module/displayio/mipi_constants.h" #include "shared-bindings/busio/SPI.h" -fourwire_fourwire_obj_t board_display_obj; #define DELAY 0x80 diff --git a/ports/espressif/boards/adafruit_esp32s3_camera/board.c b/ports/espressif/boards/adafruit_esp32s3_camera/board.c index cd187a48efda..027b7ca8b6e4 100644 --- a/ports/espressif/boards/adafruit_esp32s3_camera/board.c +++ b/ports/espressif/boards/adafruit_esp32s3_camera/board.c @@ -18,7 +18,6 @@ #include "esp_err.h" #include "driver/i2c.h" -fourwire_fourwire_obj_t board_display_obj; #define DELAY 0x80 diff --git a/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/board.c b/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/board.c index b649d0796047..60d21ed14bb0 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/board.c +++ b/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/board.c @@ -13,7 +13,6 @@ #include "shared-module/displayio/mipi_constants.h" #include "shared-bindings/board/__init__.h" -fourwire_fourwire_obj_t board_display_obj; #define DELAY 0x80 diff --git a/ports/espressif/boards/adafruit_feather_esp32s2_tft/board.c b/ports/espressif/boards/adafruit_feather_esp32s2_tft/board.c index a2bdb3aaf83f..d1dd85681588 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s2_tft/board.c +++ b/ports/espressif/boards/adafruit_feather_esp32s2_tft/board.c @@ -13,7 +13,6 @@ #include "shared-module/displayio/mipi_constants.h" #include "shared-bindings/board/__init__.h" -fourwire_fourwire_obj_t board_display_obj; #define DELAY 0x80 diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/board.c b/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/board.c index b649d0796047..60d21ed14bb0 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/board.c +++ b/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/board.c @@ -13,7 +13,6 @@ #include "shared-module/displayio/mipi_constants.h" #include "shared-bindings/board/__init__.h" -fourwire_fourwire_obj_t board_display_obj; #define DELAY 0x80 diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_tft/board.c b/ports/espressif/boards/adafruit_feather_esp32s3_tft/board.c index aa796e65f1a4..ff3bfd61d43e 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_tft/board.c +++ b/ports/espressif/boards/adafruit_feather_esp32s3_tft/board.c @@ -13,7 +13,6 @@ #include "shared-module/displayio/mipi_constants.h" #include "shared-bindings/board/__init__.h" -fourwire_fourwire_obj_t board_display_obj; #define DELAY 0x80 diff --git a/ports/espressif/boards/adafruit_funhouse/board.c b/ports/espressif/boards/adafruit_funhouse/board.c index 4537f80df36d..061a6abf0d8c 100644 --- a/ports/espressif/boards/adafruit_funhouse/board.c +++ b/ports/espressif/boards/adafruit_funhouse/board.c @@ -15,7 +15,6 @@ #include "esp_log.h" -fourwire_fourwire_obj_t board_display_obj; #define DELAY 0x80 diff --git a/ports/espressif/boards/espressif_esp32s3_eye/board.c b/ports/espressif/boards/espressif_esp32s3_eye/board.c index 7361c2939684..c48c9428cf46 100644 --- a/ports/espressif/boards/espressif_esp32s3_eye/board.c +++ b/ports/espressif/boards/espressif_esp32s3_eye/board.c @@ -13,7 +13,6 @@ #include "shared-module/displayio/mipi_constants.h" #include "shared-bindings/board/__init__.h" -fourwire_fourwire_obj_t board_display_obj; #define DELAY 0x80 diff --git a/ports/espressif/boards/hexky_s2/board.c b/ports/espressif/boards/hexky_s2/board.c index 5b9c2125f39b..2c076d58e1c2 100644 --- a/ports/espressif/boards/hexky_s2/board.c +++ b/ports/espressif/boards/hexky_s2/board.c @@ -13,7 +13,6 @@ #include "shared-module/displayio/mipi_constants.h" #include "shared-bindings/board/__init__.h" -fourwire_fourwire_obj_t board_display_obj; #define DELAY 0x80 diff --git a/ports/espressif/boards/m5stack_atoms3/board.c b/ports/espressif/boards/m5stack_atoms3/board.c index bd3ba0f604e0..df620976b61b 100644 --- a/ports/espressif/boards/m5stack_atoms3/board.c +++ b/ports/espressif/boards/m5stack_atoms3/board.c @@ -13,7 +13,6 @@ #include "shared-module/displayio/mipi_constants.h" #include "shared-bindings/board/__init__.h" -fourwire_fourwire_obj_t board_display_obj; #define DELAY 0x80 diff --git a/ports/espressif/boards/m5stack_cardputer/board.c b/ports/espressif/boards/m5stack_cardputer/board.c index 71d08ae2c8ca..e529efe665f1 100644 --- a/ports/espressif/boards/m5stack_cardputer/board.c +++ b/ports/espressif/boards/m5stack_cardputer/board.c @@ -22,7 +22,6 @@ #include "py/ringbuf.h" #include "shared/runtime/interrupt_char.h" -fourwire_fourwire_obj_t board_display_obj; keypad_demux_demuxkeymatrix_obj_t board_keyboard; void update_keyboard(keypad_eventqueue_obj_t *queue); diff --git a/ports/espressif/boards/m5stack_core2/board.c b/ports/espressif/boards/m5stack_core2/board.c index c7773560dcce..14d0c2909e35 100644 --- a/ports/espressif/boards/m5stack_core2/board.c +++ b/ports/espressif/boards/m5stack_core2/board.c @@ -21,7 +21,6 @@ #include "../../pmic/axp192/axp192.h" -fourwire_fourwire_obj_t board_display_obj; #define DELAY 0x80 #define PMIC_POWER_SOURCE_USB 0 diff --git a/ports/espressif/boards/m5stack_core_basic/board.c b/ports/espressif/boards/m5stack_core_basic/board.c index 4af3ad74328d..87aa16024c47 100644 --- a/ports/espressif/boards/m5stack_core_basic/board.c +++ b/ports/espressif/boards/m5stack_core_basic/board.c @@ -13,7 +13,6 @@ #include "shared-module/displayio/mipi_constants.h" #include "shared-bindings/board/__init__.h" -fourwire_fourwire_obj_t board_display_obj; // display init sequence according to M5Gfx diff --git a/ports/espressif/boards/m5stack_core_fire/board.c b/ports/espressif/boards/m5stack_core_fire/board.c index 4af3ad74328d..87aa16024c47 100644 --- a/ports/espressif/boards/m5stack_core_fire/board.c +++ b/ports/espressif/boards/m5stack_core_fire/board.c @@ -13,7 +13,6 @@ #include "shared-module/displayio/mipi_constants.h" #include "shared-bindings/board/__init__.h" -fourwire_fourwire_obj_t board_display_obj; // display init sequence according to M5Gfx diff --git a/ports/espressif/boards/m5stack_cores3/board.c b/ports/espressif/boards/m5stack_cores3/board.c index 7f0660944a7f..f49d63499973 100644 --- a/ports/espressif/boards/m5stack_cores3/board.c +++ b/ports/espressif/boards/m5stack_cores3/board.c @@ -14,7 +14,6 @@ #include "shared-module/displayio/mipi_constants.h" #include "shared-bindings/board/__init__.h" -fourwire_fourwire_obj_t board_display_obj; #define DELAY 0x80 #define AXP2101_I2C_ADDRESS 0x34 diff --git a/ports/espressif/boards/m5stack_dial/board.c b/ports/espressif/boards/m5stack_dial/board.c index 0fdda95c5cf9..b60ddc776be7 100644 --- a/ports/espressif/boards/m5stack_dial/board.c +++ b/ports/espressif/boards/m5stack_dial/board.c @@ -13,7 +13,6 @@ #include "shared-module/displayio/mipi_constants.h" #include "shared-bindings/board/__init__.h" -fourwire_fourwire_obj_t board_display_obj; uint8_t display_init_sequence[] = { 0xFE, 0x00, // Inter Register Enable1 (FEh) diff --git a/ports/espressif/boards/waveshare_esp32_s3_geek/board.c b/ports/espressif/boards/waveshare_esp32_s3_geek/board.c index 06044e80f98d..71f742b51f42 100644 --- a/ports/espressif/boards/waveshare_esp32_s3_geek/board.c +++ b/ports/espressif/boards/waveshare_esp32_s3_geek/board.c @@ -14,7 +14,6 @@ #include "shared-module/displayio/mipi_constants.h" #include "shared-bindings/board/__init__.h" -fourwire_fourwire_obj_t board_display_obj; diff --git a/ports/nordic/boards/clue_nrf52840_express/board.c b/ports/nordic/boards/clue_nrf52840_express/board.c index 5841113e97fc..e2cd8a324bab 100644 --- a/ports/nordic/boards/clue_nrf52840_express/board.c +++ b/ports/nordic/boards/clue_nrf52840_express/board.c @@ -12,7 +12,6 @@ #include "shared-module/displayio/__init__.h" #include "shared-module/displayio/mipi_constants.h" -fourwire_fourwire_obj_t board_display_obj; #define DELAY 0x80 diff --git a/ports/nordic/boards/hiibot_bluefi/board.c b/ports/nordic/boards/hiibot_bluefi/board.c index 86076c1aa0e2..73430d675eb2 100644 --- a/ports/nordic/boards/hiibot_bluefi/board.c +++ b/ports/nordic/boards/hiibot_bluefi/board.c @@ -12,7 +12,6 @@ #include "shared-module/displayio/__init__.h" #include "shared-module/displayio/mipi_constants.h" -fourwire_fourwire_obj_t board_display_obj; #define DELAY 0x80 diff --git a/ports/nordic/boards/makerdiary_nrf52840_m2_devkit/board.c b/ports/nordic/boards/makerdiary_nrf52840_m2_devkit/board.c index 6803a8f01fc4..64199b98009f 100644 --- a/ports/nordic/boards/makerdiary_nrf52840_m2_devkit/board.c +++ b/ports/nordic/boards/makerdiary_nrf52840_m2_devkit/board.c @@ -13,7 +13,6 @@ #include "shared-module/displayio/__init__.h" #include "shared-module/displayio/mipi_constants.h" -fourwire_fourwire_obj_t board_display_obj; #define DELAY 0x80 diff --git a/ports/nordic/boards/ohs2020_badge/board.c b/ports/nordic/boards/ohs2020_badge/board.c index 217fab935894..ea716006cb4b 100644 --- a/ports/nordic/boards/ohs2020_badge/board.c +++ b/ports/nordic/boards/ohs2020_badge/board.c @@ -12,7 +12,6 @@ #include "shared-module/displayio/__init__.h" #include "shared-module/displayio/mipi_constants.h" -fourwire_fourwire_obj_t board_display_obj; #define DELAY 0x80 diff --git a/ports/raspberrypi/boards/adafruit_floppsy_rp2040/board.c b/ports/raspberrypi/boards/adafruit_floppsy_rp2040/board.c index 82cc107f0f7e..0750411dafc2 100644 --- a/ports/raspberrypi/boards/adafruit_floppsy_rp2040/board.c +++ b/ports/raspberrypi/boards/adafruit_floppsy_rp2040/board.c @@ -14,7 +14,6 @@ #include "shared-module/displayio/mipi_constants.h" #include "shared-bindings/board/__init__.h" -fourwire_fourwire_obj_t board_display_obj; #define DELAY 0x80 diff --git a/ports/raspberrypi/boards/adafruit_macropad_rp2040/board.c b/ports/raspberrypi/boards/adafruit_macropad_rp2040/board.c index 4386f4ffd4ee..60f3fc7317a8 100644 --- a/ports/raspberrypi/boards/adafruit_macropad_rp2040/board.c +++ b/ports/raspberrypi/boards/adafruit_macropad_rp2040/board.c @@ -14,7 +14,6 @@ #include "supervisor/board.h" #include "supervisor/shared/board.h" -fourwire_fourwire_obj_t board_display_obj; #define DELAY 0x80 diff --git a/ports/raspberrypi/boards/hack_club_sprig/board.c b/ports/raspberrypi/boards/hack_club_sprig/board.c index 769105ce9db9..89b1b3b75b7b 100644 --- a/ports/raspberrypi/boards/hack_club_sprig/board.c +++ b/ports/raspberrypi/boards/hack_club_sprig/board.c @@ -12,7 +12,6 @@ #include "shared-module/displayio/mipi_constants.h" #include "supervisor/shared/board.h" -fourwire_fourwire_obj_t board_display_obj; // display init sequence from CircuitPython library https://github.com/adafruit/Adafruit_CircuitPython_ST7735R/blob/dfae353330cf051d1f31db9e4b681c8d70900cc5/adafruit_st7735r.py uint8_t display_init_sequence[] = { diff --git a/ports/raspberrypi/boards/heiafr_picomo_v2/board.c b/ports/raspberrypi/boards/heiafr_picomo_v2/board.c index 9a316673447f..8c60341489fa 100644 --- a/ports/raspberrypi/boards/heiafr_picomo_v2/board.c +++ b/ports/raspberrypi/boards/heiafr_picomo_v2/board.c @@ -12,7 +12,6 @@ #include "shared-module/displayio/mipi_constants.h" #include "supervisor/shared/board.h" -fourwire_fourwire_obj_t board_display_obj; #define DELAY 0x80 diff --git a/ports/raspberrypi/boards/pajenicko_picopad/board.c b/ports/raspberrypi/boards/pajenicko_picopad/board.c index b52039171e72..0ca13b3ec2e1 100644 --- a/ports/raspberrypi/boards/pajenicko_picopad/board.c +++ b/ports/raspberrypi/boards/pajenicko_picopad/board.c @@ -12,7 +12,6 @@ #include "shared-module/displayio/mipi_constants.h" #include "supervisor/shared/board.h" -fourwire_fourwire_obj_t board_display_obj; #define DELAY 0x80 diff --git a/ports/raspberrypi/boards/pimoroni_picosystem/board.c b/ports/raspberrypi/boards/pimoroni_picosystem/board.c index 00952fd2f5ae..40756b56426e 100644 --- a/ports/raspberrypi/boards/pimoroni_picosystem/board.c +++ b/ports/raspberrypi/boards/pimoroni_picosystem/board.c @@ -12,7 +12,6 @@ #include "shared-module/displayio/mipi_constants.h" #include "supervisor/shared/board.h" -fourwire_fourwire_obj_t board_display_obj; #define DELAY 0x80 diff --git a/ports/raspberrypi/boards/waveshare_rp2040_geek/board.c b/ports/raspberrypi/boards/waveshare_rp2040_geek/board.c index 29202d9e4b9d..71269f0d1852 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_geek/board.c +++ b/ports/raspberrypi/boards/waveshare_rp2040_geek/board.c @@ -14,7 +14,6 @@ #define DELAY 0x80 -fourwire_fourwire_obj_t board_display_obj; // display init sequence according to https://github.com/adafruit/Adafruit_CircuitPython_ST7789 uint8_t display_init_sequence[] = { From 55028d0a2d52a1de191657e7893ec11d1bb7b952 Mon Sep 17 00:00:00 2001 From: Tobias Schmale Date: Sat, 1 Jun 2024 16:06:45 +0000 Subject: [PATCH 087/227] espulp: improve error messages --- locale/circuitpython.pot | 13 +------------ ports/espressif/common-hal/espulp/ULP.c | 26 ++++++++++++------------- 2 files changed, 13 insertions(+), 26 deletions(-) diff --git a/locale/circuitpython.pot b/locale/circuitpython.pot index 3c5f274bd2db..0e3878bc3d8c 100644 --- a/locale/circuitpython.pot +++ b/locale/circuitpython.pot @@ -1173,6 +1173,7 @@ msgstr "" msgid "Interrupted by output function" msgstr "" +#: ports/espressif/common-hal/espulp/ULP.c #: ports/mimxrt10xx/common-hal/audiobusio/__init__.c #: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/bindings/picodvi/Framebuffer.c @@ -1240,10 +1241,6 @@ msgstr "" msgid "Invalid multicast MAC address" msgstr "" -#: ports/espressif/common-hal/espulp/ULP.c -msgid "Invalid parameters" -msgstr "" - #: ports/espressif/common-hal/espidf/__init__.c msgid "Invalid size" msgstr "" @@ -1284,10 +1281,6 @@ msgstr "" msgid "Layer must be a Group or TileGrid subclass" msgstr "" -#: ports/espressif/common-hal/espulp/ULP.c -msgid "Load binary failed" -msgstr "" - #: ports/espressif/common-hal/espidf/__init__.c msgid "MAC address was invalid" msgstr "" @@ -1834,10 +1827,6 @@ msgstr "" msgid "Right format but not supported" msgstr "" -#: ports/espressif/common-hal/espulp/ULP.c -msgid "Run binary failed" -msgstr "" - #: main.c msgid "Running in safe mode! Not running saved code.\n" msgstr "" diff --git a/ports/espressif/common-hal/espulp/ULP.c b/ports/espressif/common-hal/espulp/ULP.c index 60b5a79e2a39..7756054b06a2 100644 --- a/ports/espressif/common-hal/espulp/ULP.c +++ b/ports/espressif/common-hal/espulp/ULP.c @@ -6,6 +6,7 @@ #include "bindings/espulp/__init__.h" #include "bindings/espulp/ULP.h" +#include "bindings/espidf/__init__.h" #include "py/runtime.h" #include "shared-bindings/microcontroller/Pin.h" @@ -37,10 +38,7 @@ void espulp_reset(void) { } void common_hal_espulp_ulp_set_wakeup_period(espulp_ulp_obj_t *self, size_t period_index, uint32_t period_us) { - int _errno = ulp_set_wakeup_period(period_index, period_us); - if (_errno != ESP_OK) { - mp_raise_ValueError(MP_ERROR_TEXT("Invalid parameters")); - } + CHECK_ESP_RESULT(ulp_set_wakeup_period(period_index, period_us)); } void common_hal_espulp_ulp_run(espulp_ulp_obj_t *self, uint32_t *program, size_t length, uint32_t entry_point, uint32_t pin_mask) { @@ -83,24 +81,24 @@ void common_hal_espulp_ulp_run(espulp_ulp_obj_t *self, uint32_t *program, size_t esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); } - int _errno; + esp_err_t result; switch (self->arch) { #ifdef CONFIG_ULP_COPROC_TYPE_FSM case FSM: - _errno = ulp_load_binary(0, (const uint8_t *)program, length / sizeof(uint32_t)); - if (_errno != ESP_OK) { - mp_raise_RuntimeError(MP_ERROR_TEXT("Load binary failed")); - } - _errno = ulp_run(entry_point / sizeof(uint32_t)); - if (_errno != ESP_OK) { - mp_raise_RuntimeError(MP_ERROR_TEXT("Run binary failed")); + result = ulp_load_binary(0, (const uint8_t *)program, length / sizeof(uint32_t)); + if (result != ESP_OK) { + mp_raise_ValueError_varg(MP_ERROR_TEXT("Invalid %q"), MP_QSTR_program); } + CHECK_ESP_RESULT(ulp_run(entry_point / sizeof(uint32_t))); break; #endif #ifdef CONFIG_ULP_COPROC_TYPE_RISCV case RISCV: - ulp_riscv_load_binary((const uint8_t *)program, length); - ulp_riscv_run(); + result = ulp_riscv_load_binary((const uint8_t *)program, length); + if (result != ESP_OK) { + mp_raise_ValueError_varg(MP_ERROR_TEXT("Invalid %q"), MP_QSTR_program); + } + CHECK_ESP_RESULT(ulp_riscv_run()); break; #endif default: From 5d1a8964bb99ac5af3ccf538f71c4695c219db88 Mon Sep 17 00:00:00 2001 From: Tyeth Gundry Date: Sat, 1 Jun 2024 21:20:22 +0000 Subject: [PATCH 088/227] Add branch + fork compatibility --- ...-board-build.yml => build-board-custom.yml} | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) rename .github/workflows/{custom-board-build.yml => build-board-custom.yml} (84%) diff --git a/.github/workflows/custom-board-build.yml b/.github/workflows/build-board-custom.yml similarity index 84% rename from .github/workflows/custom-board-build.yml rename to .github/workflows/build-board-custom.yml index 951f1d08a42e..2e73d49de0ed 100644 --- a/.github/workflows/custom-board-build.yml +++ b/.github/workflows/build-board-custom.yml @@ -1,4 +1,4 @@ -name: Custom board build +name: Build board (custom) on: workflow_dispatch: @@ -21,6 +21,11 @@ on: description: 'Flags: Build flags (e.g. CIRCUITPY_WIFI=1)' required: false type: string + branch: + description: 'Branch (only if Version="latest")' + required: false + default: 'main' + type: string debug: description: 'Make a debug build' required: false @@ -36,7 +41,18 @@ jobs: - name: Set up repository run: | git clone --filter=tree:0 https://github.com/adafruit/circuitpython.git $GITHUB_WORKSPACE + - name: Checkout head / tag + run: | git checkout ${{ inputs.version == 'latest' && 'HEAD' || inputs.version }} + - name: fork compatibility + if: github.repository_owner != 'adafruit' + run: | + git remote add fork https://github.com/${{github.repository}}.git + git fetch fork --filter=tree:0 + - name: branch compatibility + if: inputs.branch != '' && inputs.version == 'latest' + run: | + git checkout -b fork-branch fork/${{inputs.branch}} - name: Set up identifier if: inputs.debug || inputs.flags != '' run: | From a63470aa9af6efd3c31b3f666d774b235bcedfdd Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Sun, 2 Jun 2024 09:53:38 -0400 Subject: [PATCH 089/227] Use micropython-uncrustify from pypi instead of apt package --- .github/workflows/pre-commit.yml | 2 +- requirements-dev.txt | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index bb9fe7a4df7f..ceeba5900d6a 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -33,7 +33,7 @@ jobs: - name: Install dependencies run: | sudo apt-get update - sudo apt-get install -y gettext uncrustify + sudo apt-get install -y gettext - name: Run pre-commit uses: pre-commit/action@v3.0.1 - name: Make patch diff --git a/requirements-dev.txt b/requirements-dev.txt index 7d5766ec5a85..099dfacef13d 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -17,6 +17,7 @@ polib black pyyaml pre-commit +micropython-uncrustify # for combining the Nordic SoftDevice with CircuitPython intelhex From 089b3862e4b72df339625276dd429941373aaef1 Mon Sep 17 00:00:00 2001 From: Daniel Eichhorn Date: Sun, 2 Jun 2024 17:59:40 +0200 Subject: [PATCH 090/227] Add support for ThingPulse Pendrive S3 --- .../boards/thingpulse_pendrive_s3/board.c | 10 +++++ .../thingpulse_pendrive_s3/mpconfigboard.h | 29 +++++++++++++ .../thingpulse_pendrive_s3/mpconfigboard.mk | 19 +++++++++ .../boards/thingpulse_pendrive_s3/pins.c | 42 +++++++++++++++++++ .../boards/thingpulse_pendrive_s3/sdkconfig | 15 +++++++ 5 files changed, 115 insertions(+) create mode 100644 ports/espressif/boards/thingpulse_pendrive_s3/board.c create mode 100644 ports/espressif/boards/thingpulse_pendrive_s3/mpconfigboard.h create mode 100644 ports/espressif/boards/thingpulse_pendrive_s3/mpconfigboard.mk create mode 100644 ports/espressif/boards/thingpulse_pendrive_s3/pins.c create mode 100644 ports/espressif/boards/thingpulse_pendrive_s3/sdkconfig diff --git a/ports/espressif/boards/thingpulse_pendrive_s3/board.c b/ports/espressif/boards/thingpulse_pendrive_s3/board.c new file mode 100644 index 000000000000..5c911678ea24 --- /dev/null +++ b/ports/espressif/boards/thingpulse_pendrive_s3/board.c @@ -0,0 +1,10 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "supervisor/board.h" + + +// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/espressif/boards/thingpulse_pendrive_s3/mpconfigboard.h b/ports/espressif/boards/thingpulse_pendrive_s3/mpconfigboard.h new file mode 100644 index 000000000000..a5e341282ea3 --- /dev/null +++ b/ports/espressif/boards/thingpulse_pendrive_s3/mpconfigboard.h @@ -0,0 +1,29 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#pragma once + +// Micropython setup + +#define MICROPY_HW_BOARD_NAME "ThingPulse Pendrive S3" +#define MICROPY_HW_MCU_NAME "ESP32S3" + +#define MICROPY_HW_NEOPIXEL (&pin_GPIO5) +#define CIRCUITPY_STATUS_LED_POWER (&pin_GPIO21) + +#define MICROPY_HW_LED_STATUS (&pin_GPIO13) + +#define DEFAULT_I2C_BUS_SCL (&pin_GPIO4) +#define DEFAULT_I2C_BUS_SDA (&pin_GPIO3) + +#define DEFAULT_SPI_BUS_SCK (&pin_GPIO36) +#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO35) +#define DEFAULT_SPI_BUS_MISO (&pin_GPIO37) + +#define DEFAULT_UART_BUS_RX (&pin_GPIO38) +#define DEFAULT_UART_BUS_TX (&pin_GPIO39) + +#define DOUBLE_TAP_PIN (&pin_GPIO34) diff --git a/ports/espressif/boards/thingpulse_pendrive_s3/mpconfigboard.mk b/ports/espressif/boards/thingpulse_pendrive_s3/mpconfigboard.mk new file mode 100644 index 000000000000..67cca03d98e7 --- /dev/null +++ b/ports/espressif/boards/thingpulse_pendrive_s3/mpconfigboard.mk @@ -0,0 +1,19 @@ +USB_VID = 0x239A +USB_PID = 0x811C +USB_PRODUCT = "ThingPulse Pendrive S3" +USB_MANUFACTURER = "ThingPulse" + +IDF_TARGET = esp32s3 + +CIRCUITPY_ESP_FLASH_SIZE = 4MB +CIRCUITPY_ESP_FLASH_MODE = qio +CIRCUITPY_ESP_FLASH_FREQ = 80m + +CIRCUITPY_ESP_PSRAM_SIZE = 2MB +CIRCUITPY_ESP_PSRAM_MODE = qio +CIRCUITPY_ESP_PSRAM_FREQ = 80m + +CIRCUITPY_ESPCAMERA = 0 +CIRCUITPY_DISPLAYIO = 1 + +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel diff --git a/ports/espressif/boards/thingpulse_pendrive_s3/pins.c b/ports/espressif/boards/thingpulse_pendrive_s3/pins.c new file mode 100644 index 000000000000..0f87ee7d82f9 --- /dev/null +++ b/ports/espressif/boards/thingpulse_pendrive_s3/pins.c @@ -0,0 +1,42 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "shared-bindings/board/__init__.h" + +static const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_BOOT0), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO0) }, + + { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_TouchIn), MP_ROM_PTR(&pin_GPIO1) }, + + { MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO5) }, + + { MP_ROM_QSTR(MP_QSTR_D33), MP_ROM_PTR(&pin_GPIO33) }, + + { MP_ROM_QSTR(MP_QSTR_D34), MP_ROM_PTR(&pin_GPIO34) }, + { MP_ROM_QSTR(MP_QSTR_CS), MP_ROM_PTR(&pin_GPIO34) }, + + { MP_ROM_QSTR(MP_QSTR_D35), MP_ROM_PTR(&pin_GPIO35) }, + { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO35) }, + + { MP_ROM_QSTR(MP_QSTR_D36), MP_ROM_PTR(&pin_GPIO36) }, + { MP_ROM_QSTR(MP_QSTR_SCLK), MP_ROM_PTR(&pin_GPIO36) }, + + { MP_ROM_QSTR(MP_QSTR_D37), MP_ROM_PTR(&pin_GPIO37) }, + { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO37) }, + + { MP_ROM_QSTR(MP_QSTR_D38), MP_ROM_PTR(&pin_GPIO38) }, + + { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO39) }, + { MP_ROM_QSTR(MP_QSTR_D39), MP_ROM_PTR(&pin_GPIO39) }, + +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); diff --git a/ports/espressif/boards/thingpulse_pendrive_s3/sdkconfig b/ports/espressif/boards/thingpulse_pendrive_s3/sdkconfig new file mode 100644 index 000000000000..f5ef79768114 --- /dev/null +++ b/ports/espressif/boards/thingpulse_pendrive_s3/sdkconfig @@ -0,0 +1,15 @@ +# +# Espressif IoT Development Framework Configuration +# +# +# Component config +# +# +# LWIP +# +CONFIG_LWIP_LOCAL_HOSTNAME="espressif-esp32s3" +# end of LWIP + +# end of Component config + +# end of Espressif IoT Development Framework Configuration From 3cbad861402783d25c70a4ee1bfadcd949658a53 Mon Sep 17 00:00:00 2001 From: Daniel Eichhorn Date: Sun, 2 Jun 2024 19:15:53 +0200 Subject: [PATCH 091/227] Use unique PID --- ports/espressif/boards/thingpulse_pendrive_s3/mpconfigboard.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/espressif/boards/thingpulse_pendrive_s3/mpconfigboard.mk b/ports/espressif/boards/thingpulse_pendrive_s3/mpconfigboard.mk index 67cca03d98e7..7dad07cd9cb9 100644 --- a/ports/espressif/boards/thingpulse_pendrive_s3/mpconfigboard.mk +++ b/ports/espressif/boards/thingpulse_pendrive_s3/mpconfigboard.mk @@ -1,5 +1,5 @@ USB_VID = 0x239A -USB_PID = 0x811C +USB_PID = 0x813A USB_PRODUCT = "ThingPulse Pendrive S3" USB_MANUFACTURER = "ThingPulse" From 13b31ca8c7fdc698da3fa5029c7bb9ff0ff1ae3f Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Sun, 2 Jun 2024 15:00:51 -0400 Subject: [PATCH 092/227] requirements-dev.txt: silabs needs setuptools --- requirements-dev.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/requirements-dev.txt b/requirements-dev.txt index 099dfacef13d..050b61224119 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -36,3 +36,6 @@ jsmin # for Silicon Labs Configurator (SLC) websockets colorama + +# for silabs builds +setuptools From 6f6821d61a2619c206c2737ec74b9e85d476790a Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Mon, 3 Jun 2024 19:22:08 +0200 Subject: [PATCH 093/227] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: CircuitPython/main Translate-URL: https://hosted.weblate.org/projects/circuitpython/main/ --- locale/ID.po | 1 + locale/cs.po | 1 + locale/de_DE.po | 1 + locale/el.po | 1 + locale/en_GB.po | 1 + locale/es.po | 1 + locale/fil.po | 1 + locale/fr.po | 1 + locale/hi.po | 1 + locale/it_IT.po | 1 + locale/ja.po | 1 + locale/ko.po | 1 + locale/nl.po | 1 + locale/pl.po | 1 + locale/pt_BR.po | 1 + locale/ru.po | 1 + locale/sv.po | 1 + locale/tr.po | 1 + locale/zh_Latn_pinyin.po | 1 + 19 files changed, 19 insertions(+) diff --git a/locale/ID.po b/locale/ID.po index d85f6f388ab3..000cd715b99a 100644 --- a/locale/ID.po +++ b/locale/ID.po @@ -1181,6 +1181,7 @@ msgstr "" msgid "Interrupted by output function" msgstr "" +#: ports/espressif/common-hal/espulp/ULP.c #: ports/mimxrt10xx/common-hal/audiobusio/__init__.c #: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/bindings/picodvi/Framebuffer.c diff --git a/locale/cs.po b/locale/cs.po index 7fdf26cd6ee5..21e2ca0323f2 100644 --- a/locale/cs.po +++ b/locale/cs.po @@ -1193,6 +1193,7 @@ msgstr "Chyba přerušení." msgid "Interrupted by output function" msgstr "" +#: ports/espressif/common-hal/espulp/ULP.c #: ports/mimxrt10xx/common-hal/audiobusio/__init__.c #: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/bindings/picodvi/Framebuffer.c diff --git a/locale/de_DE.po b/locale/de_DE.po index f9c197930d24..412f2a6ccf28 100644 --- a/locale/de_DE.po +++ b/locale/de_DE.po @@ -1204,6 +1204,7 @@ msgstr "Interrupt Fehler." msgid "Interrupted by output function" msgstr "Unterbrochen durch Ausgabefunktion" +#: ports/espressif/common-hal/espulp/ULP.c #: ports/mimxrt10xx/common-hal/audiobusio/__init__.c #: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/bindings/picodvi/Framebuffer.c diff --git a/locale/el.po b/locale/el.po index c250697172dc..1ac3c85fc0d3 100644 --- a/locale/el.po +++ b/locale/el.po @@ -1199,6 +1199,7 @@ msgstr "" msgid "Interrupted by output function" msgstr "" +#: ports/espressif/common-hal/espulp/ULP.c #: ports/mimxrt10xx/common-hal/audiobusio/__init__.c #: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/bindings/picodvi/Framebuffer.c diff --git a/locale/en_GB.po b/locale/en_GB.po index aa5e7fd76960..025504633275 100644 --- a/locale/en_GB.po +++ b/locale/en_GB.po @@ -1192,6 +1192,7 @@ msgstr "Interrupt error." msgid "Interrupted by output function" msgstr "Interrupted by output function" +#: ports/espressif/common-hal/espulp/ULP.c #: ports/mimxrt10xx/common-hal/audiobusio/__init__.c #: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/bindings/picodvi/Framebuffer.c diff --git a/locale/es.po b/locale/es.po index f70d342389da..fb96f629bc39 100644 --- a/locale/es.po +++ b/locale/es.po @@ -1212,6 +1212,7 @@ msgstr "Error de interrupción." msgid "Interrupted by output function" msgstr "" +#: ports/espressif/common-hal/espulp/ULP.c #: ports/mimxrt10xx/common-hal/audiobusio/__init__.c #: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/bindings/picodvi/Framebuffer.c diff --git a/locale/fil.po b/locale/fil.po index ab05962a9b60..1872a7ac482a 100644 --- a/locale/fil.po +++ b/locale/fil.po @@ -1183,6 +1183,7 @@ msgstr "" msgid "Interrupted by output function" msgstr "" +#: ports/espressif/common-hal/espulp/ULP.c #: ports/mimxrt10xx/common-hal/audiobusio/__init__.c #: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/bindings/picodvi/Framebuffer.c diff --git a/locale/fr.po b/locale/fr.po index 8b83a47ac5aa..88b819d8636b 100644 --- a/locale/fr.po +++ b/locale/fr.po @@ -1221,6 +1221,7 @@ msgstr "Erreur d'interruption." msgid "Interrupted by output function" msgstr "" +#: ports/espressif/common-hal/espulp/ULP.c #: ports/mimxrt10xx/common-hal/audiobusio/__init__.c #: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/bindings/picodvi/Framebuffer.c diff --git a/locale/hi.po b/locale/hi.po index cb5fda556fc5..7d8e3deea65a 100644 --- a/locale/hi.po +++ b/locale/hi.po @@ -1175,6 +1175,7 @@ msgstr "" msgid "Interrupted by output function" msgstr "" +#: ports/espressif/common-hal/espulp/ULP.c #: ports/mimxrt10xx/common-hal/audiobusio/__init__.c #: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/bindings/picodvi/Framebuffer.c diff --git a/locale/it_IT.po b/locale/it_IT.po index ae516669f31a..444224ff857b 100644 --- a/locale/it_IT.po +++ b/locale/it_IT.po @@ -1183,6 +1183,7 @@ msgstr "" msgid "Interrupted by output function" msgstr "" +#: ports/espressif/common-hal/espulp/ULP.c #: ports/mimxrt10xx/common-hal/audiobusio/__init__.c #: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/bindings/picodvi/Framebuffer.c diff --git a/locale/ja.po b/locale/ja.po index a02492e43b07..63368c8a851c 100644 --- a/locale/ja.po +++ b/locale/ja.po @@ -1192,6 +1192,7 @@ msgstr "" msgid "Interrupted by output function" msgstr "" +#: ports/espressif/common-hal/espulp/ULP.c #: ports/mimxrt10xx/common-hal/audiobusio/__init__.c #: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/bindings/picodvi/Framebuffer.c diff --git a/locale/ko.po b/locale/ko.po index 670921208f4b..cd45202e7c76 100644 --- a/locale/ko.po +++ b/locale/ko.po @@ -1227,6 +1227,7 @@ msgstr "인터럽트 오류." msgid "Interrupted by output function" msgstr "출력 함수로 인해 종료되었다" +#: ports/espressif/common-hal/espulp/ULP.c #: ports/mimxrt10xx/common-hal/audiobusio/__init__.c #: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/bindings/picodvi/Framebuffer.c diff --git a/locale/nl.po b/locale/nl.po index fad65cb26684..00528e35cbe3 100644 --- a/locale/nl.po +++ b/locale/nl.po @@ -1178,6 +1178,7 @@ msgstr "" msgid "Interrupted by output function" msgstr "" +#: ports/espressif/common-hal/espulp/ULP.c #: ports/mimxrt10xx/common-hal/audiobusio/__init__.c #: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/bindings/picodvi/Framebuffer.c diff --git a/locale/pl.po b/locale/pl.po index 5c2fd1e4a5db..d0c18bc148b4 100644 --- a/locale/pl.po +++ b/locale/pl.po @@ -1197,6 +1197,7 @@ msgstr "" msgid "Interrupted by output function" msgstr "" +#: ports/espressif/common-hal/espulp/ULP.c #: ports/mimxrt10xx/common-hal/audiobusio/__init__.c #: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/bindings/picodvi/Framebuffer.c diff --git a/locale/pt_BR.po b/locale/pt_BR.po index 3ce5a9afdf1d..0670c9df12f3 100644 --- a/locale/pt_BR.po +++ b/locale/pt_BR.po @@ -1208,6 +1208,7 @@ msgstr "Erro de interrupção." msgid "Interrupted by output function" msgstr "Interrompido pela função de saída" +#: ports/espressif/common-hal/espulp/ULP.c #: ports/mimxrt10xx/common-hal/audiobusio/__init__.c #: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/bindings/picodvi/Framebuffer.c diff --git a/locale/ru.po b/locale/ru.po index aa0dca71bb6e..d4de92ac6c21 100644 --- a/locale/ru.po +++ b/locale/ru.po @@ -1219,6 +1219,7 @@ msgstr "Прерванная ошибка." msgid "Interrupted by output function" msgstr "" +#: ports/espressif/common-hal/espulp/ULP.c #: ports/mimxrt10xx/common-hal/audiobusio/__init__.c #: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/bindings/picodvi/Framebuffer.c diff --git a/locale/sv.po b/locale/sv.po index d40015f44f3b..2b64d61e22ea 100644 --- a/locale/sv.po +++ b/locale/sv.po @@ -1200,6 +1200,7 @@ msgstr "Interrupt-fel." msgid "Interrupted by output function" msgstr "Avbruten av utgångsfunktion" +#: ports/espressif/common-hal/espulp/ULP.c #: ports/mimxrt10xx/common-hal/audiobusio/__init__.c #: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/bindings/picodvi/Framebuffer.c diff --git a/locale/tr.po b/locale/tr.po index b62d4d0a925c..35b42151a14c 100644 --- a/locale/tr.po +++ b/locale/tr.po @@ -1188,6 +1188,7 @@ msgstr "" msgid "Interrupted by output function" msgstr "" +#: ports/espressif/common-hal/espulp/ULP.c #: ports/mimxrt10xx/common-hal/audiobusio/__init__.c #: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/bindings/picodvi/Framebuffer.c diff --git a/locale/zh_Latn_pinyin.po b/locale/zh_Latn_pinyin.po index 52db1a87c8ba..49e662a00ac1 100644 --- a/locale/zh_Latn_pinyin.po +++ b/locale/zh_Latn_pinyin.po @@ -1206,6 +1206,7 @@ msgstr "zhōng duàn cuò wù." msgid "Interrupted by output function" msgstr "bèi shūchū gōngnéng zhōngduàn" +#: ports/espressif/common-hal/espulp/ULP.c #: ports/mimxrt10xx/common-hal/audiobusio/__init__.c #: ports/mimxrt10xx/common-hal/pwmio/PWMOut.c #: ports/raspberrypi/bindings/picodvi/Framebuffer.c From d687580c3d7d5884ff2a6d7f08609c5408a05e20 Mon Sep 17 00:00:00 2001 From: tyeth Date: Mon, 3 Jun 2024 20:07:08 +0100 Subject: [PATCH 094/227] Correct custom board build branch logic --- .github/workflows/build-board-custom.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-board-custom.yml b/.github/workflows/build-board-custom.yml index 2e73d49de0ed..e479540be63a 100644 --- a/.github/workflows/build-board-custom.yml +++ b/.github/workflows/build-board-custom.yml @@ -50,7 +50,11 @@ jobs: git remote add fork https://github.com/${{github.repository}}.git git fetch fork --filter=tree:0 - name: branch compatibility - if: inputs.branch != '' && inputs.version == 'latest' + if: inputs.branch != 'main' && inputs.version == 'latest' && github.repository_owner == 'adafruit' + run: | + git checkout ${{inputs.branch}} + - name: branch compatibility (fork) + if: inputs.branch != '' && inputs.version == 'latest' && github.repository_owner != 'adafruit' run: | git checkout -b fork-branch fork/${{inputs.branch}} - name: Set up identifier From f81a3aed686f085821489462099e10c0e5540554 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Mon, 3 Jun 2024 15:41:09 -0500 Subject: [PATCH 095/227] MP3Decoder: avoid all blocking reads in background This gets MP3 playback of a soma.fm stream working for up to a minute at a time, though it's still vulnerable to network glitches. * the buffer can empty, in which case a single block of audio plays repeatedly in max headroom stutter fashion * the server eventually (after 1 to 5 5 minutes) stops getting packets at all. At this point stream playback stops, with the internal error indicating a problem MP3 decoding (which doesn't quite make sense): -9, ERR_MP3_INVALID_HUFFCODES. * other combinations of audiomixer buffer & mp3 buffer might give different results ```py import time import adafruit_connection_manager import adafruit_requests import audiobusio import audiomixer import audiomp3 import board import wifi pool = adafruit_connection_manager.get_radio_socketpool(wifi.radio) ssl_context = adafruit_connection_manager.get_radio_ssl_context(wifi.radio) requests = adafruit_requests.Session(pool, ssl_context) # todo: parse PLS files like https://somafm.com/nossl/dronezone.pls # todo: figure out why https URLs don't work at all (missing select?) # STREAMING_URL = "http://ice2.somafm.com/dronezone-128-mp3" STREAMING_URL = "http://ice4.somafm.com/tikitime-128-mp3" def get_mp3_stream(): if STREAMING_URL.startswith("http:") or STREAMING_URL.startswith("https:"): return requests.get(STREAMING_URL, headers={"connection": "close"}).socket return open(STREAMING_URL, "rb") mixer_buffer_size = 1152 * 2 mp3_buffer = bytearray(32768) with audiobusio.I2SOut( bit_clock=board.D12, word_select=board.D13, data=board.D11 ) as i2s, get_mp3_stream() as stream, audiomp3.MP3Decoder( stream, mp3_buffer ) as sample, audiomixer.Mixer( channel_count=2, sample_rate=44100, buffer_size=mixer_buffer_size ) as m: v = m.voice[0] print(sample) i2s.play(m) v.play(sample, loop=False) while v.playing: time.sleep(0.1) ``` --- shared-module/audiomp3/MP3Decoder.c | 57 +++++++++++++++++------------ 1 file changed, 34 insertions(+), 23 deletions(-) diff --git a/shared-module/audiomp3/MP3Decoder.c b/shared-module/audiomp3/MP3Decoder.c index a6d69aec09fa..88a3bb9999ce 100644 --- a/shared-module/audiomp3/MP3Decoder.c +++ b/shared-module/audiomp3/MP3Decoder.c @@ -104,7 +104,7 @@ static off_t stream_lseek(void *stream, off_t offset, int whence) { * * Sets self->eof if any read of the file returns 0 bytes */ -static bool mp3file_update_inbuf_always(audiomp3_mp3file_obj_t *self) { +static bool mp3file_update_inbuf_always(audiomp3_mp3file_obj_t *self, bool block_ok) { if (self->eof || INPUT_BUFFER_SPACE(self->inbuf) == 0) { return INPUT_BUFFER_AVAILABLE(self->inbuf) > 0; } @@ -118,7 +118,7 @@ static bool mp3file_update_inbuf_always(audiomp3_mp3file_obj_t *self) { self->inbuf.read_off = 0; } - for (size_t to_read; !self->eof && (to_read = INPUT_BUFFER_SPACE(self->inbuf)) > 0;) { + for (size_t to_read; !self->eof && (to_read = INPUT_BUFFER_SPACE(self->inbuf)) > 0 && (block_ok || stream_readable(self->stream));) { uint8_t *write_ptr = self->inbuf.buf + self->inbuf.write_off; ssize_t n_read = stream_read(self->stream, write_ptr, to_read); @@ -152,8 +152,11 @@ static bool mp3file_update_inbuf_always(audiomp3_mp3file_obj_t *self) { */ static void mp3file_update_inbuf_cb(void *self_in) { audiomp3_mp3file_obj_t *self = self_in; + if (common_hal_audiomp3_mp3file_deinited(self_in)) { + return; + } if (!self->eof && stream_readable(self->stream)) { - mp3file_update_inbuf_always(self); + mp3file_update_inbuf_always(self, false); } #if !defined(MICROPY_UNIX_COVERAGE) @@ -170,13 +173,13 @@ static void mp3file_update_inbuf_cb(void *self_in) { * * Returns the same as mp3file_update_inbuf_always. */ -static bool mp3file_update_inbuf_half(audiomp3_mp3file_obj_t *self) { +static bool mp3file_update_inbuf_half(audiomp3_mp3file_obj_t *self, bool block_ok) { // If buffer is over half full, do nothing if (INPUT_BUFFER_SPACE(self->inbuf) < self->inbuf.size / 2) { return true; } - return mp3file_update_inbuf_always(self); + return mp3file_update_inbuf_always(self, block_ok); } #define READ_PTR(self) (INPUT_BUFFER_READ_PTR(self->inbuf)) @@ -184,8 +187,8 @@ static bool mp3file_update_inbuf_half(audiomp3_mp3file_obj_t *self) { #define CONSUME(self, n) (INPUT_BUFFER_CONSUME(self->inbuf, n)) // http://id3.org/id3v2.3.0 -static void mp3file_skip_id3v2(audiomp3_mp3file_obj_t *self) { - mp3file_update_inbuf_half(self); +static void mp3file_skip_id3v2(audiomp3_mp3file_obj_t *self, bool block_ok) { + mp3file_update_inbuf_half(self, block_ok); if (BYTES_LEFT(self) < 10) { return; } @@ -206,6 +209,9 @@ static void mp3file_skip_id3v2(audiomp3_mp3file_obj_t *self) { int32_t size = (data[6] << 21) | (data[7] << 14) | (data[8] << 7) | (data[9]); size += 10; // size excludes the "header" (but not the "extended header") // First, deduct from size whatever is left in buffer + if (DO_DEBUG) { + mp_printf(&mp_plat_print, "%s:%d id3 size %d\n", __FILE__, __LINE__, size); + } uint32_t to_consume = MIN(size, BYTES_LEFT(self)); CONSUME(self, to_consume); size -= to_consume; @@ -217,7 +223,7 @@ static void mp3file_skip_id3v2(audiomp3_mp3file_obj_t *self) { // Couldn't seek (might be a socket), so need to actually read and discard all that data while (size > 0 && !self->eof) { - mp3file_update_inbuf_always(self); + mp3file_update_inbuf_always(self, true); to_consume = MIN(size, BYTES_LEFT(self)); CONSUME(self, to_consume); size -= to_consume; @@ -227,13 +233,13 @@ static void mp3file_skip_id3v2(audiomp3_mp3file_obj_t *self) { /* If a sync word can be found, advance to it and return true. Otherwise, * return false. */ -static bool mp3file_find_sync_word(audiomp3_mp3file_obj_t *self) { +static bool mp3file_find_sync_word(audiomp3_mp3file_obj_t *self, bool block_ok) { do { - mp3file_update_inbuf_half(self); + mp3file_update_inbuf_half(self, block_ok); int offset = MP3FindSyncWord(READ_PTR(self), BYTES_LEFT(self)); if (offset >= 0) { CONSUME(self, offset); - mp3file_update_inbuf_half(self); + mp3file_update_inbuf_half(self, block_ok); return true; } CONSUME(self, MAX(0, BYTES_LEFT(self) - 16)); @@ -241,7 +247,7 @@ static bool mp3file_find_sync_word(audiomp3_mp3file_obj_t *self) { return false; } -static bool mp3file_get_next_frame_info(audiomp3_mp3file_obj_t *self, MP3FrameInfo *fi) { +static bool mp3file_get_next_frame_info(audiomp3_mp3file_obj_t *self, MP3FrameInfo *fi, bool block_ok) { int err; do { err = MP3GetNextFrameInfo(self->decoder, fi, READ_PTR(self)); @@ -249,7 +255,7 @@ static bool mp3file_get_next_frame_info(audiomp3_mp3file_obj_t *self, MP3FrameIn break; } CONSUME(self, 1); - mp3file_find_sync_word(self); + mp3file_find_sync_word(self, block_ok); } while (!self->eof); return err == ERR_MP3_NONE; } @@ -328,8 +334,8 @@ void common_hal_audiomp3_mp3file_set_file(audiomp3_mp3file_obj_t *self, mp_obj_t INPUT_BUFFER_CLEAR(self->inbuf); self->eof = 0; self->other_channel = -1; - mp3file_update_inbuf_half(self); - mp3file_find_sync_word(self); + mp3file_update_inbuf_half(self, true); + mp3file_find_sync_word(self, true); // It **SHOULD** not be necessary to do this; the buffer should be filled // with fresh content before it is returned by get_buffer(). The fact that // this is necessary to avoid a glitch at the start of playback of a second @@ -338,7 +344,7 @@ void common_hal_audiomp3_mp3file_set_file(audiomp3_mp3file_obj_t *self, mp_obj_t memset(self->pcm_buffer[0], 0, MAX_BUFFER_LEN); memset(self->pcm_buffer[1], 0, MAX_BUFFER_LEN); MP3FrameInfo fi; - bool result = mp3file_get_next_frame_info(self, &fi); + bool result = mp3file_get_next_frame_info(self, &fi, true); background_callback_allow(); if (!result) { mp_raise_msg(&mp_type_RuntimeError, @@ -353,7 +359,9 @@ void common_hal_audiomp3_mp3file_set_file(audiomp3_mp3file_obj_t *self, mp_obj_t } void common_hal_audiomp3_mp3file_deinit(audiomp3_mp3file_obj_t *self) { - MP3FreeDecoder(self->decoder); + if (self->decoder) { + MP3FreeDecoder(self->decoder); + } self->decoder = NULL; self->inbuf.buf = NULL; self->pcm_buffer[0] = NULL; @@ -397,8 +405,8 @@ void audiomp3_mp3file_reset_buffer(audiomp3_mp3file_obj_t *self, self->eof = 0; self->samples_decoded = 0; self->other_channel = -1; - mp3file_skip_id3v2(self); - mp3file_find_sync_word(self); + mp3file_skip_id3v2(self, false); + mp3file_find_sync_word(self, false); } background_callback_allow(); } @@ -439,8 +447,8 @@ audioio_get_buffer_result_t audiomp3_mp3file_get_buffer(audiomp3_mp3file_obj_t * int16_t *buffer = (int16_t *)(void *)self->pcm_buffer[self->buffer_index]; *bufptr = (uint8_t *)buffer; - mp3file_skip_id3v2(self); - if (!mp3file_find_sync_word(self)) { + mp3file_skip_id3v2(self, false); + if (!mp3file_find_sync_word(self, false)) { *buffer_length = 0; return self->eof ? GET_BUFFER_DONE : GET_BUFFER_ERROR; } @@ -464,8 +472,8 @@ audioio_get_buffer_result_t audiomp3_mp3file_get_buffer(audiomp3_mp3file_obj_t * self->samples_decoded += frame_buffer_size_bytes / sizeof(int16_t); - mp3file_skip_id3v2(self); - int result = mp3file_find_sync_word(self) ? GET_BUFFER_MORE_DATA : GET_BUFFER_DONE; + mp3file_skip_id3v2(self, false); + int result = mp3file_find_sync_word(self, false) ? GET_BUFFER_MORE_DATA : GET_BUFFER_DONE; if (DO_DEBUG) { mp_printf(&mp_plat_print, "%s:%d result=%d\n", __FILE__, __LINE__, result); @@ -477,6 +485,9 @@ audioio_get_buffer_result_t audiomp3_mp3file_get_buffer(audiomp3_mp3file_obj_t * self); } + if (DO_DEBUG) { + mp_printf(&mp_plat_print, "post-decode avail=%d eof=%d\n", (int)INPUT_BUFFER_AVAILABLE(self->inbuf), self->eof); + } return result; } From 254cac059e875a57470e275a39c00ea7bc8da597 Mon Sep 17 00:00:00 2001 From: Scott Shawcroft Date: Mon, 3 Jun 2024 15:31:48 -0700 Subject: [PATCH 096/227] Make time_to_refresh return 0 correctly Redo Feather C6 pinout so it include standard D# labels for feathers Fixes #9244 --- .../pins.c | 61 ++++++++++++------- shared-bindings/epaperdisplay/EPaperDisplay.c | 6 +- shared-module/epaperdisplay/EPaperDisplay.c | 9 ++- 3 files changed, 51 insertions(+), 25 deletions(-) diff --git a/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/pins.c b/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/pins.c index f12c49323590..055f9d59eaef 100644 --- a/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/pins.c +++ b/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/pins.c @@ -11,54 +11,71 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { // External pins are in silkscreen order, from top to bottom, left side, then right side { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO1) }, - { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_IO1), MP_ROM_PTR(&pin_GPIO1) }, { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO4) }, - { MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_IO4), MP_ROM_PTR(&pin_GPIO4) }, { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO3) }, - { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_IO3), MP_ROM_PTR(&pin_GPIO3) }, { MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO2) }, - { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_IO2), MP_ROM_PTR(&pin_GPIO2) }, { MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_GPIO6) }, - { MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_IO6), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_D24), MP_ROM_PTR(&pin_GPIO6) }, { MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_GPIO5) }, - { MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO5) }, - - { MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_GPIO7) }, - - { MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_GPIO8) }, - - { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO9) }, - { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO9) }, - { MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO9) }, + { MP_ROM_QSTR(MP_QSTR_IO5), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_D25), MP_ROM_PTR(&pin_GPIO5) }, { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO21) }, - { MP_ROM_QSTR(MP_QSTR_D21), MP_ROM_PTR(&pin_GPIO21) }, + { MP_ROM_QSTR(MP_QSTR_IO21), MP_ROM_PTR(&pin_GPIO21) }, { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO22) }, - { MP_ROM_QSTR(MP_QSTR_D22), MP_ROM_PTR(&pin_GPIO22) }, + { MP_ROM_QSTR(MP_QSTR_IO22), MP_ROM_PTR(&pin_GPIO22) }, { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO23) }, - { MP_ROM_QSTR(MP_QSTR_D23), MP_ROM_PTR(&pin_GPIO23) }, + { MP_ROM_QSTR(MP_QSTR_IO23), MP_ROM_PTR(&pin_GPIO23) }, { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO17) }, - { MP_ROM_QSTR(MP_QSTR_D17), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_IO17), MP_ROM_PTR(&pin_GPIO17) }, { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO16) }, - { MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO16) }, + { MP_ROM_QSTR(MP_QSTR_IO16), MP_ROM_PTR(&pin_GPIO16) }, + + { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO9) }, + { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO9) }, + { MP_ROM_QSTR(MP_QSTR_IO9), MP_ROM_PTR(&pin_GPIO9) }, + // Right side { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO15) }, - { MP_ROM_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_GPIO16) }, + { MP_ROM_QSTR(MP_QSTR_IO15), MP_ROM_PTR(&pin_GPIO15) }, + { MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO15) }, + + { MP_ROM_QSTR(MP_QSTR_IO14), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO14) }, + + { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO0) }, + + { MP_ROM_QSTR(MP_QSTR_IO8), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO8) }, + + { MP_ROM_QSTR(MP_QSTR_IO7), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO7) }, + + // These two are shared with the left side! + { MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO6) }, + + { MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO5) }, { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO18) }, - { MP_ROM_QSTR(MP_QSTR_D18), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_IO18), MP_ROM_PTR(&pin_GPIO18) }, { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO19) }, - { MP_ROM_QSTR(MP_QSTR_D19), MP_ROM_PTR(&pin_GPIO19) }, + { MP_ROM_QSTR(MP_QSTR_IO19), MP_ROM_PTR(&pin_GPIO19) }, { MP_ROM_QSTR(MP_QSTR_I2C_POWER), MP_ROM_PTR(&pin_GPIO20) }, diff --git a/shared-bindings/epaperdisplay/EPaperDisplay.c b/shared-bindings/epaperdisplay/EPaperDisplay.c index ff7c1670ddf5..ea7296920e2a 100644 --- a/shared-bindings/epaperdisplay/EPaperDisplay.c +++ b/shared-bindings/epaperdisplay/EPaperDisplay.c @@ -277,9 +277,11 @@ MP_DEFINE_CONST_FUN_OBJ_1(epaperdisplay_epaperdisplay_refresh_obj, epaperdisplay //| """Time, in fractional seconds, until the ePaper display can be refreshed.""" static mp_obj_t epaperdisplay_epaperdisplay_obj_get_time_to_refresh(mp_obj_t self_in) { epaperdisplay_epaperdisplay_obj_t *self = native_display(self_in); - // band aid fix for - // sleeping for display.time_to_refresh might not be long enough due to rounding error (?) uint32_t refresh_ms = common_hal_epaperdisplay_epaperdisplay_get_time_to_refresh(self); + if (refresh_ms == 0) { + return mp_obj_new_float(0.0); + } + // Make sure non-zero values are always more than zero (the float conversion may round down.) return mp_obj_new_float((refresh_ms + 100) / 1000.0); } MP_DEFINE_CONST_FUN_OBJ_1(epaperdisplay_epaperdisplay_get_time_to_refresh_obj, epaperdisplay_epaperdisplay_obj_get_time_to_refresh); diff --git a/shared-module/epaperdisplay/EPaperDisplay.c b/shared-module/epaperdisplay/EPaperDisplay.c index fc6abdbb4c32..9f43195b8cf5 100644 --- a/shared-module/epaperdisplay/EPaperDisplay.c +++ b/shared-module/epaperdisplay/EPaperDisplay.c @@ -131,7 +131,8 @@ static void wait_for_busy(epaperdisplay_epaperdisplay_obj_t *self) { if (self->busy.base.type == &mp_type_NoneType) { return; } - while (common_hal_digitalio_digitalinout_get_value(&self->busy) == self->busy_state) { + while (common_hal_digitalio_digitalinout_get_value(&self->busy) == self->busy_state && + !mp_hal_is_interrupted()) { RUN_BACKGROUND_TASKS; } } @@ -165,6 +166,9 @@ static void send_command_sequence(epaperdisplay_epaperdisplay_obj_t *self, if (should_wait_for_busy) { wait_for_busy(self); } + if (mp_hal_is_interrupted()) { + return; + } i += 2 + data_size; if (self->two_byte_sequence_length) { i++; @@ -191,6 +195,9 @@ static void epaperdisplay_epaperdisplay_start_refresh(epaperdisplay_epaperdispla common_hal_time_delay_ms(self->start_up_time_ms); send_command_sequence(self, true, self->start_sequence, self->start_sequence_len); + if (mp_hal_is_interrupted()) { + return; + } displayio_display_core_start_refresh(&self->core); } From 3855d82f860ac658d3c36756e78b065d71939cfe Mon Sep 17 00:00:00 2001 From: Daniel Eichhorn Date: Tue, 4 Jun 2024 07:37:39 +0200 Subject: [PATCH 097/227] Use PID allocated in Espressif Repository --- .../espressif/boards/thingpulse_pendrive_s3/mpconfigboard.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ports/espressif/boards/thingpulse_pendrive_s3/mpconfigboard.mk b/ports/espressif/boards/thingpulse_pendrive_s3/mpconfigboard.mk index 7dad07cd9cb9..66f5a4aba706 100644 --- a/ports/espressif/boards/thingpulse_pendrive_s3/mpconfigboard.mk +++ b/ports/espressif/boards/thingpulse_pendrive_s3/mpconfigboard.mk @@ -1,5 +1,5 @@ -USB_VID = 0x239A -USB_PID = 0x813A +USB_VID = 0x303A +USB_PID = 0x8204 USB_PRODUCT = "ThingPulse Pendrive S3" USB_MANUFACTURER = "ThingPulse" From ccdcecc2523c60990d82cf2e5389eb372256fbc2 Mon Sep 17 00:00:00 2001 From: Bill Sideris Date: Tue, 4 Jun 2024 15:56:27 +0300 Subject: [PATCH 098/227] Initial nodemcu_esp32c2 board configuration (dupe creator id) --- .../espressif/boards/nodemcu_esp32c2/board.c | 29 ++++++++++++++ .../boards/nodemcu_esp32c2/mpconfigboard.h | 36 +++++++++++++++++ .../boards/nodemcu_esp32c2/mpconfigboard.mk | 8 ++++ ports/espressif/boards/nodemcu_esp32c2/pins.c | 32 +++++++++++++++ .../boards/nodemcu_esp32c2/sdkconfig | 40 +++++++++++++++++++ 5 files changed, 145 insertions(+) create mode 100644 ports/espressif/boards/nodemcu_esp32c2/board.c create mode 100644 ports/espressif/boards/nodemcu_esp32c2/mpconfigboard.h create mode 100644 ports/espressif/boards/nodemcu_esp32c2/mpconfigboard.mk create mode 100644 ports/espressif/boards/nodemcu_esp32c2/pins.c create mode 100644 ports/espressif/boards/nodemcu_esp32c2/sdkconfig diff --git a/ports/espressif/boards/nodemcu_esp32c2/board.c b/ports/espressif/boards/nodemcu_esp32c2/board.c new file mode 100644 index 000000000000..d6e20133fc42 --- /dev/null +++ b/ports/espressif/boards/nodemcu_esp32c2/board.c @@ -0,0 +1,29 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2024 Bill Sideris, independently providing these changes. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "supervisor/board.h" + +// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/espressif/boards/nodemcu_esp32c2/mpconfigboard.h b/ports/espressif/boards/nodemcu_esp32c2/mpconfigboard.h new file mode 100644 index 000000000000..1b6362dfabe6 --- /dev/null +++ b/ports/espressif/boards/nodemcu_esp32c2/mpconfigboard.h @@ -0,0 +1,36 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2024 Bill Sideris, independently providing these changes. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +// Micropython setup + +#define MICROPY_HW_BOARD_NAME "NodeMcu-ESP32-C2" +#define MICROPY_HW_MCU_NAME "ESP32C2" + +#define DEFAULT_UART_BUS_RX (&pin_GPIO19) +#define DEFAULT_UART_BUS_TX (&pin_GPIO20) + +#define CIRCUITPY_CONSOLE_UART_RX DEFAULT_UART_BUS_RX +#define CIRCUITPY_CONSOLE_UART_TX DEFAULT_UART_BUS_TX diff --git a/ports/espressif/boards/nodemcu_esp32c2/mpconfigboard.mk b/ports/espressif/boards/nodemcu_esp32c2/mpconfigboard.mk new file mode 100644 index 000000000000..0925e8de64d2 --- /dev/null +++ b/ports/espressif/boards/nodemcu_esp32c2/mpconfigboard.mk @@ -0,0 +1,8 @@ +CIRCUITPY_CREATOR_ID = 0x000C303A +CIRCUITPY_CREATION_ID = 0x00C20000 + +IDF_TARGET = esp32c2 + +CIRCUITPY_ESP_FLASH_MODE = qio +CIRCUITPY_ESP_FLASH_FREQ = 60m +CIRCUITPY_ESP_FLASH_SIZE = 4MB diff --git a/ports/espressif/boards/nodemcu_esp32c2/pins.c b/ports/espressif/boards/nodemcu_esp32c2/pins.c new file mode 100644 index 000000000000..04cd1b1929be --- /dev/null +++ b/ports/espressif/boards/nodemcu_esp32c2/pins.c @@ -0,0 +1,32 @@ +#include "shared-bindings/board/__init__.h" + +STATIC const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + // Module on top, from top to bottom, left to right + { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_IO1), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_IO2), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_IO3), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_IO4), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_IO5), MP_ROM_PTR(&pin_GPIO5) }, + + { MP_ROM_QSTR(MP_QSTR_IO18), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_IO10), MP_ROM_PTR(&pin_GPIO10) }, + { MP_ROM_QSTR(MP_QSTR_IO9), MP_ROM_PTR(&pin_GPIO9) }, + { MP_ROM_QSTR(MP_QSTR_IO7), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_IO6), MP_ROM_PTR(&pin_GPIO6) }, + + // Dupe pin on board, labeled both as TX and TX0 + { MP_ROM_QSTR(MP_QSTR_IO20), MP_ROM_PTR(&pin_GPIO20) }, + { MP_ROM_QSTR(MP_QSTR_TX0), MP_ROM_PTR(&pin_GPIO20) }, + { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO20) }, + + // Dupe pin on board, labeled both as RX and RX0 + { MP_ROM_QSTR(MP_QSTR_IO19), MP_ROM_PTR(&pin_GPIO19) }, + { MP_ROM_QSTR(MP_QSTR_RX0), MP_ROM_PTR(&pin_GPIO19) }, + { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO19) }, + + { MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) }, +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); diff --git a/ports/espressif/boards/nodemcu_esp32c2/sdkconfig b/ports/espressif/boards/nodemcu_esp32c2/sdkconfig new file mode 100644 index 000000000000..ed7abbdd59b0 --- /dev/null +++ b/ports/espressif/boards/nodemcu_esp32c2/sdkconfig @@ -0,0 +1,40 @@ +# +# Espressif IoT Development Framework Configuration +# +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 +# end of Serial flasher config + +# +# Component config +# +# +# Hardware Settings +# +# +# Main XTAL Config +# +CONFIG_XTAL_FREQ_26=y +# CONFIG_XTAL_FREQ_40 is not set +CONFIG_XTAL_FREQ=26 +# end of Main XTAL Config + +# end of Hardware Settings + +# +# ESP System Settings +# +CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 +# end of ESP System Settings + +# +# LWIP +# +CONFIG_LWIP_LOCAL_HOSTNAME="nodemcu-esp32c2" +# end of LWIP + +# end of Component config + +# end of Espressif IoT Development Framework Configuration From 46b172e1680bc78cec14058abe06b95ea6628e17 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Tue, 4 Jun 2024 12:02:05 -0400 Subject: [PATCH 099/227] picow: turn off CIRCUITPY_USB_HOST and CIRCUITPY_PICODVI --- ports/raspberrypi/boards/raspberry_pi_pico_w/mpconfigboard.mk | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ports/raspberrypi/boards/raspberry_pi_pico_w/mpconfigboard.mk b/ports/raspberrypi/boards/raspberry_pi_pico_w/mpconfigboard.mk index cbe80fd084ea..157c0eb03be3 100644 --- a/ports/raspberrypi/boards/raspberry_pi_pico_w/mpconfigboard.mk +++ b/ports/raspberrypi/boards/raspberry_pi_pico_w/mpconfigboard.mk @@ -8,6 +8,8 @@ CHIP_FAMILY = rp2 EXTERNAL_FLASH_DEVICES = "W25Q16JVxQ" +CIRCUITPY_USB_HOST = 0 + CIRCUITPY__EVE = 1 CIRCUITPY_CYW43 = 1 @@ -18,7 +20,6 @@ CIRCUITPY_MDNS = 1 CIRCUITPY_SOCKETPOOL = 1 CIRCUITPY_WIFI = 1 -CIRCUITPY_PICODVI = 1 CFLAGS += -DCYW43_PIN_WL_HOST_WAKE=24 -DCYW43_PIN_WL_REG_ON=23 -DCYW43_WL_GPIO_COUNT=3 -DCYW43_WL_GPIO_LED_PIN=0 # Must be accompanied by a linker script change From f4993b9b8ad83760164cb42f87ebf4bec8a2e693 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Tue, 4 Jun 2024 12:18:04 -0500 Subject: [PATCH 100/227] monster m4sk: disable a bunch of non-applicable modules this hardware lacks the necessary I/O to connect any of these buses. (re)enable synthio, it should fit now. --- ports/atmel-samd/boards/monster_m4sk/mpconfigboard.mk | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/ports/atmel-samd/boards/monster_m4sk/mpconfigboard.mk b/ports/atmel-samd/boards/monster_m4sk/mpconfigboard.mk index 77513fcf27a2..f0530c5646b6 100644 --- a/ports/atmel-samd/boards/monster_m4sk/mpconfigboard.mk +++ b/ports/atmel-samd/boards/monster_m4sk/mpconfigboard.mk @@ -10,4 +10,13 @@ CHIP_FAMILY = samd51 QSPI_FLASH_FILESYSTEM = 1 EXTERNAL_FLASH_DEVICES = "GD25Q64C,W25Q64JVxQ" LONGINT_IMPL = MPZ -CIRCUITPY_SYNTHIO = 0 + +CIRCUITPY_EPAPERDISPLAY = 0 +CIRCUITPY_FLOPPYIO = 0 +CIRCUITPY_I2CDISPLAYBUS = 0 +CIRCUITPY_KEYPAD = 0 +CIRCUITPY_KEYPAD = 0 +CIRCUITPY_PARALLELDISPLAYBUS = 0 +CIRCUITPY_RGBMATRIX = 0 +CIRCUITPY_SHARPDISPLAY = 0 +CIRCUITPY_SYNTHIO = 1 From 4465f85027cd8a74abb82eee3a30f8cbe11d1c65 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Tue, 4 Jun 2024 12:18:29 -0500 Subject: [PATCH 101/227] evo m51: disable MP3 playback & sort block of configuration settings --- ports/atmel-samd/boards/aloriumtech_evo_m51/mpconfigboard.mk | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ports/atmel-samd/boards/aloriumtech_evo_m51/mpconfigboard.mk b/ports/atmel-samd/boards/aloriumtech_evo_m51/mpconfigboard.mk index 4dc054a4e13b..95c32475a1fb 100644 --- a/ports/atmel-samd/boards/aloriumtech_evo_m51/mpconfigboard.mk +++ b/ports/atmel-samd/boards/aloriumtech_evo_m51/mpconfigboard.mk @@ -12,6 +12,7 @@ QSPI_FLASH_FILESYSTEM = 1 EXTERNAL_FLASH_DEVICES = GD25Q16C LONGINT_IMPL = MPZ +CIRCUITPY_AUDIOMP3 = 0 +CIRCUITPY_JPEGIO = 0 CIRCUITPY_PS2IO = 1 CIRCUITPY_SYNTHIO = 0 -CIRCUITPY_JPEGIO = 0 From 6f6b680c18bd8131236838483f1c0d855c763c87 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Tue, 4 Jun 2024 12:24:34 -0500 Subject: [PATCH 102/227] MP3Decoder: improve some comments --- shared-module/audiomp3/MP3Decoder.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/shared-module/audiomp3/MP3Decoder.c b/shared-module/audiomp3/MP3Decoder.c index 88a3bb9999ce..0c84c98e83f6 100644 --- a/shared-module/audiomp3/MP3Decoder.c +++ b/shared-module/audiomp3/MP3Decoder.c @@ -46,8 +46,9 @@ static bool stream_readable(void *stream) { return ret != 0; } -// (near copy of mp_stream_posix_read, but with changes) -// (circuitpy doesn't enable posix stream routines anyway) +// This is a near copy of mp_stream_posix_read, but avoiding use of global +// errno value & with added prints for debugging purposes. (circuitpython doesn't +// enable mp_stream_posix_read anyway) static mp_int_t stream_read(void *stream, void *buf, size_t len) { int errcode; mp_obj_base_t *o = MP_OBJ_TO_PTR(stream); @@ -69,8 +70,8 @@ static mp_int_t stream_read(void *stream, void *buf, size_t len) { } } -// (near copy of mp_stream_posix_lseek, but with changes) -// (circuitpy doesn't enable posix stream routines anyway) +// This is a near copy of mp_stream_posix_lseek, but avoiding use of global +// errno value (circuitpython doesn't enable posix stream routines anyway) static off_t stream_lseek(void *stream, off_t offset, int whence) { int errcode; const mp_obj_base_t *o = stream; @@ -267,7 +268,7 @@ void common_hal_audiomp3_mp3file_construct(audiomp3_mp3file_obj_t *self, mp_obj_t stream, uint8_t *buffer, size_t buffer_size) { - // XXX Adafruit_MP3 uses a 2kB input buffer and two 4kB output pcm_buffer. + // Note: Adafruit_MP3 uses a 2kB input buffer and two 4kB output pcm_buffer. // for a whopping total of 10kB pcm_buffer (+mp3 decoder state and frame buffer) // At 44kHz, that's 23ms of output audio data. // From bb1f1abad43169a4848cfa76f77a2ca5614a0c60 Mon Sep 17 00:00:00 2001 From: Seon Rozenblum Date: Wed, 5 Jun 2024 10:19:18 +1000 Subject: [PATCH 103/227] Added new UM FeatherS3 Neo. --- .../unexpectedmaker_feathers3_neo/board.c | 9 ++ .../mpconfigboard.h | 29 ++++ .../mpconfigboard.mk | 17 +++ .../unexpectedmaker_feathers3_neo/pins.c | 139 ++++++++++++++++++ .../unexpectedmaker_feathers3_neo/sdkconfig | 15 ++ 5 files changed, 209 insertions(+) create mode 100644 ports/espressif/boards/unexpectedmaker_feathers3_neo/board.c create mode 100644 ports/espressif/boards/unexpectedmaker_feathers3_neo/mpconfigboard.h create mode 100644 ports/espressif/boards/unexpectedmaker_feathers3_neo/mpconfigboard.mk create mode 100644 ports/espressif/boards/unexpectedmaker_feathers3_neo/pins.c create mode 100644 ports/espressif/boards/unexpectedmaker_feathers3_neo/sdkconfig diff --git a/ports/espressif/boards/unexpectedmaker_feathers3_neo/board.c b/ports/espressif/boards/unexpectedmaker_feathers3_neo/board.c new file mode 100644 index 000000000000..a3a9eec04714 --- /dev/null +++ b/ports/espressif/boards/unexpectedmaker_feathers3_neo/board.c @@ -0,0 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "supervisor/board.h" + +// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/espressif/boards/unexpectedmaker_feathers3_neo/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_feathers3_neo/mpconfigboard.h new file mode 100644 index 000000000000..037190d9aa8e --- /dev/null +++ b/ports/espressif/boards/unexpectedmaker_feathers3_neo/mpconfigboard.h @@ -0,0 +1,29 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#pragma once + +// Micropython setup + +#define MICROPY_HW_BOARD_NAME "FeatherS3 Neo" +#define MICROPY_HW_MCU_NAME "ESP32S3" + +#define MICROPY_HW_NEOPIXEL (&pin_GPIO40) +#define CIRCUITPY_STATUS_LED_POWER (&pin_GPIO39) + +#define MICROPY_HW_LED_STATUS (&pin_GPIO13) + +#define DEFAULT_I2C_BUS_SCL (&pin_GPIO9) +#define DEFAULT_I2C_BUS_SDA (&pin_GPIO8) + +#define DEFAULT_SPI_BUS_SCK (&pin_GPIO36) +#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO35) +#define DEFAULT_SPI_BUS_MISO (&pin_GPIO37) + +#define DEFAULT_UART_BUS_RX (&pin_GPIO44) +#define DEFAULT_UART_BUS_TX (&pin_GPIO43) + +// #define DOUBLE_TAP_PIN (&pin_GPIO47) diff --git a/ports/espressif/boards/unexpectedmaker_feathers3_neo/mpconfigboard.mk b/ports/espressif/boards/unexpectedmaker_feathers3_neo/mpconfigboard.mk new file mode 100644 index 000000000000..8483b42c05fc --- /dev/null +++ b/ports/espressif/boards/unexpectedmaker_feathers3_neo/mpconfigboard.mk @@ -0,0 +1,17 @@ +USB_VID = 0x303A +USB_PID = 0x81FC +USB_PRODUCT = "FeatherS3 Neo" +USB_MANUFACTURER = "UnexpectedMaker" + +IDF_TARGET = esp32s3 + +CIRCUITPY_ESP_FLASH_SIZE = 8MB +CIRCUITPY_ESP_FLASH_MODE = qio +CIRCUITPY_ESP_FLASH_FREQ = 80m + +CIRCUITPY_ESP_PSRAM_SIZE = 2MB +CIRCUITPY_ESP_PSRAM_MODE = qio +CIRCUITPY_ESP_PSRAM_FREQ = 80m + +# Include these Python libraries in firmware. +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel diff --git a/ports/espressif/boards/unexpectedmaker_feathers3_neo/pins.c b/ports/espressif/boards/unexpectedmaker_feathers3_neo/pins.c new file mode 100644 index 000000000000..558781eb7050 --- /dev/null +++ b/ports/espressif/boards/unexpectedmaker_feathers3_neo/pins.c @@ -0,0 +1,139 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit +// Industries +// +// SPDX-License-Identifier: MIT + +#include "shared-bindings/board/__init__.h" + +static const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + {MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0)}, + {MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO0)}, + + {MP_ROM_QSTR(MP_QSTR_IO18), MP_ROM_PTR(&pin_GPIO18)}, + {MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO18)}, + {MP_ROM_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_GPIO18)}, + + {MP_ROM_QSTR(MP_QSTR_IO17), MP_ROM_PTR(&pin_GPIO17)}, + {MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO17)}, + {MP_ROM_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_GPIO17)}, + + {MP_ROM_QSTR(MP_QSTR_IO14), MP_ROM_PTR(&pin_GPIO14)}, + {MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO14)}, + {MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO14)}, + + {MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_GPIO12)}, + {MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO12)}, + {MP_ROM_QSTR(MP_QSTR_D17), MP_ROM_PTR(&pin_GPIO12)}, + + {MP_ROM_QSTR(MP_QSTR_IO6), MP_ROM_PTR(&pin_GPIO6)}, + {MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_GPIO6)}, + {MP_ROM_QSTR(MP_QSTR_D18), MP_ROM_PTR(&pin_GPIO6)}, + + {MP_ROM_QSTR(MP_QSTR_IO5), MP_ROM_PTR(&pin_GPIO5)}, + {MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_GPIO5)}, + {MP_ROM_QSTR(MP_QSTR_D19), MP_ROM_PTR(&pin_GPIO5)}, + + {MP_ROM_QSTR(MP_QSTR_IO36), MP_ROM_PTR(&pin_GPIO36)}, + {MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO36)}, + {MP_ROM_QSTR(MP_QSTR_D25), MP_ROM_PTR(&pin_GPIO36)}, + + {MP_ROM_QSTR(MP_QSTR_IO35), MP_ROM_PTR(&pin_GPIO35)}, + {MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO35)}, + {MP_ROM_QSTR(MP_QSTR_D24), MP_ROM_PTR(&pin_GPIO35)}, + + {MP_ROM_QSTR(MP_QSTR_IO37), MP_ROM_PTR(&pin_GPIO37)}, + {MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO37)}, + {MP_ROM_QSTR(MP_QSTR_D23), MP_ROM_PTR(&pin_GPIO37)}, + + {MP_ROM_QSTR(MP_QSTR_IO44), MP_ROM_PTR(&pin_GPIO44)}, + {MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO44)}, + {MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO44)}, + + {MP_ROM_QSTR(MP_QSTR_IO43), MP_ROM_PTR(&pin_GPIO43)}, + {MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO43)}, + {MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO43)}, + + // { MP_ROM_QSTR(MP_QSTR_IO42), MP_ROM_PTR(&pin_GPIO42) }, + // { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO42) }, + + {MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO8)}, + {MP_ROM_QSTR(MP_QSTR_IO8), MP_ROM_PTR(&pin_GPIO8)}, + {MP_ROM_QSTR(MP_QSTR_A11), MP_ROM_PTR(&pin_GPIO8)}, + {MP_ROM_QSTR(MP_QSTR_D21), MP_ROM_PTR(&pin_GPIO8)}, + + {MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO9)}, + {MP_ROM_QSTR(MP_QSTR_IO9), MP_ROM_PTR(&pin_GPIO9)}, + {MP_ROM_QSTR(MP_QSTR_A12), MP_ROM_PTR(&pin_GPIO9)}, + {MP_ROM_QSTR(MP_QSTR_D22), MP_ROM_PTR(&pin_GPIO9)}, + + {MP_ROM_QSTR(MP_QSTR_IO33), MP_ROM_PTR(&pin_GPIO33)}, + {MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO33)}, + + {MP_ROM_QSTR(MP_QSTR_IO34), MP_ROM_PTR(&pin_GPIO34)}, + {MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO34)}, + + {MP_ROM_QSTR(MP_QSTR_IO38), MP_ROM_PTR(&pin_GPIO38)}, + {MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO38)}, + + {MP_ROM_QSTR(MP_QSTR_IO1), MP_ROM_PTR(&pin_GPIO1)}, + {MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO1)}, + {MP_ROM_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_GPIO1)}, + + {MP_ROM_QSTR(MP_QSTR_IO3), MP_ROM_PTR(&pin_GPIO3)}, + {MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO3)}, + {MP_ROM_QSTR(MP_QSTR_A7), MP_ROM_PTR(&pin_GPIO3)}, + + {MP_ROM_QSTR(MP_QSTR_IO7), MP_ROM_PTR(&pin_GPIO7)}, + {MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO7)}, + {MP_ROM_QSTR(MP_QSTR_A8), MP_ROM_PTR(&pin_GPIO7)}, + + {MP_ROM_QSTR(MP_QSTR_IO10), MP_ROM_PTR(&pin_GPIO10)}, + {MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO10)}, + {MP_ROM_QSTR(MP_QSTR_A9), MP_ROM_PTR(&pin_GPIO10)}, + + {MP_ROM_QSTR(MP_QSTR_IO11), MP_ROM_PTR(&pin_GPIO11)}, + {MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO11)}, + {MP_ROM_QSTR(MP_QSTR_A10), MP_ROM_PTR(&pin_GPIO11)}, + + // Blue LED + {MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO13)}, + + // Battery voltage sense pin + {MP_ROM_QSTR(MP_QSTR_BATTERY), MP_ROM_PTR(&pin_GPIO2)}, + {MP_ROM_QSTR(MP_QSTR_VBAT), MP_ROM_PTR(&pin_GPIO2)}, + {MP_ROM_QSTR(MP_QSTR_VBAT_SENSE), MP_ROM_PTR(&pin_GPIO2)}, + {MP_ROM_QSTR(MP_QSTR_VOLTAGE_MONITOR), MP_ROM_PTR(&pin_GPIO2)}, + + // 5V present sense pin + {MP_ROM_QSTR(MP_QSTR_VBUS), MP_ROM_PTR(&pin_GPIO15)}, + {MP_ROM_QSTR(MP_QSTR_VBUS_SENSE), MP_ROM_PTR(&pin_GPIO15)}, + + // Neopixel pins + {MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO40)}, + {MP_ROM_QSTR(MP_QSTR_NEOPIXEL_MATRIX), MP_ROM_PTR(&pin_GPIO16)}, + + // Ambient Light Sensor + {MP_ROM_QSTR(MP_QSTR_IO4), MP_ROM_PTR(&pin_GPIO4)}, + {MP_ROM_QSTR(MP_QSTR_AMB), MP_ROM_PTR(&pin_GPIO4)}, + + // Second LDO Enable control - also used for matrix and status RGB LED + {MP_ROM_QSTR(MP_QSTR_LDO2), MP_ROM_PTR(&pin_GPIO39)}, + {MP_ROM_QSTR(MP_QSTR_IO39), MP_ROM_PTR(&pin_GPIO39)}, + {MP_ROM_QSTR(MP_QSTR_NEOPIXEL_MATRIX_POWER), MP_ROM_PTR(&pin_GPIO39)}, + {MP_ROM_QSTR(MP_QSTR_NEOPIXEL_POWER), MP_ROM_PTR(&pin_GPIO39)}, + + // I2C + {MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj)}, + {MP_ROM_QSTR(MP_QSTR_STEMMA_I2C), MP_ROM_PTR(&board_i2c_obj)}, + + // SPI + {MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj)}, + + // UART + {MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj)}, +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); diff --git a/ports/espressif/boards/unexpectedmaker_feathers3_neo/sdkconfig b/ports/espressif/boards/unexpectedmaker_feathers3_neo/sdkconfig new file mode 100644 index 000000000000..df8f15b54391 --- /dev/null +++ b/ports/espressif/boards/unexpectedmaker_feathers3_neo/sdkconfig @@ -0,0 +1,15 @@ +# +# Espressif IoT Development Framework Configuration +# +# +# Component config +# +# +# LWIP +# +CONFIG_LWIP_LOCAL_HOSTNAME="UMFeatherS3 Neo" +# end of LWIP + +# end of Component config + +# end of Espressif IoT Development Framework Configuration From c5324c0e9dbec59feeabab799c0e14c765677c20 Mon Sep 17 00:00:00 2001 From: Seon Rozenblum Date: Wed, 5 Jun 2024 11:08:47 +1000 Subject: [PATCH 104/227] Add UM FeatherS3 Neo board support for 9.0.x --- .../unexpectedmaker_feathers3_neo/board.c | 9 ++ .../mpconfigboard.h | 29 ++++ .../mpconfigboard.mk | 17 +++ .../unexpectedmaker_feathers3_neo/pins.c | 139 ++++++++++++++++++ .../unexpectedmaker_feathers3_neo/sdkconfig | 15 ++ 5 files changed, 209 insertions(+) create mode 100644 ports/espressif/boards/unexpectedmaker_feathers3_neo/board.c create mode 100644 ports/espressif/boards/unexpectedmaker_feathers3_neo/mpconfigboard.h create mode 100644 ports/espressif/boards/unexpectedmaker_feathers3_neo/mpconfigboard.mk create mode 100644 ports/espressif/boards/unexpectedmaker_feathers3_neo/pins.c create mode 100644 ports/espressif/boards/unexpectedmaker_feathers3_neo/sdkconfig diff --git a/ports/espressif/boards/unexpectedmaker_feathers3_neo/board.c b/ports/espressif/boards/unexpectedmaker_feathers3_neo/board.c new file mode 100644 index 000000000000..a3a9eec04714 --- /dev/null +++ b/ports/espressif/boards/unexpectedmaker_feathers3_neo/board.c @@ -0,0 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "supervisor/board.h" + +// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/espressif/boards/unexpectedmaker_feathers3_neo/mpconfigboard.h b/ports/espressif/boards/unexpectedmaker_feathers3_neo/mpconfigboard.h new file mode 100644 index 000000000000..037190d9aa8e --- /dev/null +++ b/ports/espressif/boards/unexpectedmaker_feathers3_neo/mpconfigboard.h @@ -0,0 +1,29 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#pragma once + +// Micropython setup + +#define MICROPY_HW_BOARD_NAME "FeatherS3 Neo" +#define MICROPY_HW_MCU_NAME "ESP32S3" + +#define MICROPY_HW_NEOPIXEL (&pin_GPIO40) +#define CIRCUITPY_STATUS_LED_POWER (&pin_GPIO39) + +#define MICROPY_HW_LED_STATUS (&pin_GPIO13) + +#define DEFAULT_I2C_BUS_SCL (&pin_GPIO9) +#define DEFAULT_I2C_BUS_SDA (&pin_GPIO8) + +#define DEFAULT_SPI_BUS_SCK (&pin_GPIO36) +#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO35) +#define DEFAULT_SPI_BUS_MISO (&pin_GPIO37) + +#define DEFAULT_UART_BUS_RX (&pin_GPIO44) +#define DEFAULT_UART_BUS_TX (&pin_GPIO43) + +// #define DOUBLE_TAP_PIN (&pin_GPIO47) diff --git a/ports/espressif/boards/unexpectedmaker_feathers3_neo/mpconfigboard.mk b/ports/espressif/boards/unexpectedmaker_feathers3_neo/mpconfigboard.mk new file mode 100644 index 000000000000..8483b42c05fc --- /dev/null +++ b/ports/espressif/boards/unexpectedmaker_feathers3_neo/mpconfigboard.mk @@ -0,0 +1,17 @@ +USB_VID = 0x303A +USB_PID = 0x81FC +USB_PRODUCT = "FeatherS3 Neo" +USB_MANUFACTURER = "UnexpectedMaker" + +IDF_TARGET = esp32s3 + +CIRCUITPY_ESP_FLASH_SIZE = 8MB +CIRCUITPY_ESP_FLASH_MODE = qio +CIRCUITPY_ESP_FLASH_FREQ = 80m + +CIRCUITPY_ESP_PSRAM_SIZE = 2MB +CIRCUITPY_ESP_PSRAM_MODE = qio +CIRCUITPY_ESP_PSRAM_FREQ = 80m + +# Include these Python libraries in firmware. +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel diff --git a/ports/espressif/boards/unexpectedmaker_feathers3_neo/pins.c b/ports/espressif/boards/unexpectedmaker_feathers3_neo/pins.c new file mode 100644 index 000000000000..558781eb7050 --- /dev/null +++ b/ports/espressif/boards/unexpectedmaker_feathers3_neo/pins.c @@ -0,0 +1,139 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit +// Industries +// +// SPDX-License-Identifier: MIT + +#include "shared-bindings/board/__init__.h" + +static const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + {MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0)}, + {MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO0)}, + + {MP_ROM_QSTR(MP_QSTR_IO18), MP_ROM_PTR(&pin_GPIO18)}, + {MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO18)}, + {MP_ROM_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_GPIO18)}, + + {MP_ROM_QSTR(MP_QSTR_IO17), MP_ROM_PTR(&pin_GPIO17)}, + {MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO17)}, + {MP_ROM_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_GPIO17)}, + + {MP_ROM_QSTR(MP_QSTR_IO14), MP_ROM_PTR(&pin_GPIO14)}, + {MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO14)}, + {MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO14)}, + + {MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_GPIO12)}, + {MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO12)}, + {MP_ROM_QSTR(MP_QSTR_D17), MP_ROM_PTR(&pin_GPIO12)}, + + {MP_ROM_QSTR(MP_QSTR_IO6), MP_ROM_PTR(&pin_GPIO6)}, + {MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_GPIO6)}, + {MP_ROM_QSTR(MP_QSTR_D18), MP_ROM_PTR(&pin_GPIO6)}, + + {MP_ROM_QSTR(MP_QSTR_IO5), MP_ROM_PTR(&pin_GPIO5)}, + {MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_GPIO5)}, + {MP_ROM_QSTR(MP_QSTR_D19), MP_ROM_PTR(&pin_GPIO5)}, + + {MP_ROM_QSTR(MP_QSTR_IO36), MP_ROM_PTR(&pin_GPIO36)}, + {MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO36)}, + {MP_ROM_QSTR(MP_QSTR_D25), MP_ROM_PTR(&pin_GPIO36)}, + + {MP_ROM_QSTR(MP_QSTR_IO35), MP_ROM_PTR(&pin_GPIO35)}, + {MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO35)}, + {MP_ROM_QSTR(MP_QSTR_D24), MP_ROM_PTR(&pin_GPIO35)}, + + {MP_ROM_QSTR(MP_QSTR_IO37), MP_ROM_PTR(&pin_GPIO37)}, + {MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO37)}, + {MP_ROM_QSTR(MP_QSTR_D23), MP_ROM_PTR(&pin_GPIO37)}, + + {MP_ROM_QSTR(MP_QSTR_IO44), MP_ROM_PTR(&pin_GPIO44)}, + {MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO44)}, + {MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO44)}, + + {MP_ROM_QSTR(MP_QSTR_IO43), MP_ROM_PTR(&pin_GPIO43)}, + {MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO43)}, + {MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO43)}, + + // { MP_ROM_QSTR(MP_QSTR_IO42), MP_ROM_PTR(&pin_GPIO42) }, + // { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO42) }, + + {MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO8)}, + {MP_ROM_QSTR(MP_QSTR_IO8), MP_ROM_PTR(&pin_GPIO8)}, + {MP_ROM_QSTR(MP_QSTR_A11), MP_ROM_PTR(&pin_GPIO8)}, + {MP_ROM_QSTR(MP_QSTR_D21), MP_ROM_PTR(&pin_GPIO8)}, + + {MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO9)}, + {MP_ROM_QSTR(MP_QSTR_IO9), MP_ROM_PTR(&pin_GPIO9)}, + {MP_ROM_QSTR(MP_QSTR_A12), MP_ROM_PTR(&pin_GPIO9)}, + {MP_ROM_QSTR(MP_QSTR_D22), MP_ROM_PTR(&pin_GPIO9)}, + + {MP_ROM_QSTR(MP_QSTR_IO33), MP_ROM_PTR(&pin_GPIO33)}, + {MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO33)}, + + {MP_ROM_QSTR(MP_QSTR_IO34), MP_ROM_PTR(&pin_GPIO34)}, + {MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO34)}, + + {MP_ROM_QSTR(MP_QSTR_IO38), MP_ROM_PTR(&pin_GPIO38)}, + {MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO38)}, + + {MP_ROM_QSTR(MP_QSTR_IO1), MP_ROM_PTR(&pin_GPIO1)}, + {MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO1)}, + {MP_ROM_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_GPIO1)}, + + {MP_ROM_QSTR(MP_QSTR_IO3), MP_ROM_PTR(&pin_GPIO3)}, + {MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO3)}, + {MP_ROM_QSTR(MP_QSTR_A7), MP_ROM_PTR(&pin_GPIO3)}, + + {MP_ROM_QSTR(MP_QSTR_IO7), MP_ROM_PTR(&pin_GPIO7)}, + {MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO7)}, + {MP_ROM_QSTR(MP_QSTR_A8), MP_ROM_PTR(&pin_GPIO7)}, + + {MP_ROM_QSTR(MP_QSTR_IO10), MP_ROM_PTR(&pin_GPIO10)}, + {MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO10)}, + {MP_ROM_QSTR(MP_QSTR_A9), MP_ROM_PTR(&pin_GPIO10)}, + + {MP_ROM_QSTR(MP_QSTR_IO11), MP_ROM_PTR(&pin_GPIO11)}, + {MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO11)}, + {MP_ROM_QSTR(MP_QSTR_A10), MP_ROM_PTR(&pin_GPIO11)}, + + // Blue LED + {MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO13)}, + + // Battery voltage sense pin + {MP_ROM_QSTR(MP_QSTR_BATTERY), MP_ROM_PTR(&pin_GPIO2)}, + {MP_ROM_QSTR(MP_QSTR_VBAT), MP_ROM_PTR(&pin_GPIO2)}, + {MP_ROM_QSTR(MP_QSTR_VBAT_SENSE), MP_ROM_PTR(&pin_GPIO2)}, + {MP_ROM_QSTR(MP_QSTR_VOLTAGE_MONITOR), MP_ROM_PTR(&pin_GPIO2)}, + + // 5V present sense pin + {MP_ROM_QSTR(MP_QSTR_VBUS), MP_ROM_PTR(&pin_GPIO15)}, + {MP_ROM_QSTR(MP_QSTR_VBUS_SENSE), MP_ROM_PTR(&pin_GPIO15)}, + + // Neopixel pins + {MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO40)}, + {MP_ROM_QSTR(MP_QSTR_NEOPIXEL_MATRIX), MP_ROM_PTR(&pin_GPIO16)}, + + // Ambient Light Sensor + {MP_ROM_QSTR(MP_QSTR_IO4), MP_ROM_PTR(&pin_GPIO4)}, + {MP_ROM_QSTR(MP_QSTR_AMB), MP_ROM_PTR(&pin_GPIO4)}, + + // Second LDO Enable control - also used for matrix and status RGB LED + {MP_ROM_QSTR(MP_QSTR_LDO2), MP_ROM_PTR(&pin_GPIO39)}, + {MP_ROM_QSTR(MP_QSTR_IO39), MP_ROM_PTR(&pin_GPIO39)}, + {MP_ROM_QSTR(MP_QSTR_NEOPIXEL_MATRIX_POWER), MP_ROM_PTR(&pin_GPIO39)}, + {MP_ROM_QSTR(MP_QSTR_NEOPIXEL_POWER), MP_ROM_PTR(&pin_GPIO39)}, + + // I2C + {MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj)}, + {MP_ROM_QSTR(MP_QSTR_STEMMA_I2C), MP_ROM_PTR(&board_i2c_obj)}, + + // SPI + {MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj)}, + + // UART + {MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj)}, +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); diff --git a/ports/espressif/boards/unexpectedmaker_feathers3_neo/sdkconfig b/ports/espressif/boards/unexpectedmaker_feathers3_neo/sdkconfig new file mode 100644 index 000000000000..df8f15b54391 --- /dev/null +++ b/ports/espressif/boards/unexpectedmaker_feathers3_neo/sdkconfig @@ -0,0 +1,15 @@ +# +# Espressif IoT Development Framework Configuration +# +# +# Component config +# +# +# LWIP +# +CONFIG_LWIP_LOCAL_HOSTNAME="UMFeatherS3 Neo" +# end of LWIP + +# end of Component config + +# end of Espressif IoT Development Framework Configuration From 5dcefaf55144ff48c18a65906a92578cc013b437 Mon Sep 17 00:00:00 2001 From: Seth Kerr Date: Sat, 1 Jun 2024 13:23:54 -0600 Subject: [PATCH 105/227] add odt rpga feather --- .../boards/odt_rpga_feather/board.c | 9 +++ .../boards/odt_rpga_feather/mpconfigboard.h | 26 +++++++ .../boards/odt_rpga_feather/mpconfigboard.mk | 12 +++ .../odt_rpga_feather/pico-sdk-configboard.h | 11 +++ .../boards/odt_rpga_feather/pins.c | 73 +++++++++++++++++++ 5 files changed, 131 insertions(+) create mode 100644 ports/raspberrypi/boards/odt_rpga_feather/board.c create mode 100644 ports/raspberrypi/boards/odt_rpga_feather/mpconfigboard.h create mode 100644 ports/raspberrypi/boards/odt_rpga_feather/mpconfigboard.mk create mode 100644 ports/raspberrypi/boards/odt_rpga_feather/pico-sdk-configboard.h create mode 100644 ports/raspberrypi/boards/odt_rpga_feather/pins.c diff --git a/ports/raspberrypi/boards/odt_rpga_feather/board.c b/ports/raspberrypi/boards/odt_rpga_feather/board.c new file mode 100644 index 000000000000..e6a868ab2122 --- /dev/null +++ b/ports/raspberrypi/boards/odt_rpga_feather/board.c @@ -0,0 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "supervisor/board.h" + +// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/raspberrypi/boards/odt_rpga_feather/mpconfigboard.h b/ports/raspberrypi/boards/odt_rpga_feather/mpconfigboard.h new file mode 100644 index 000000000000..9246831a32c2 --- /dev/null +++ b/ports/raspberrypi/boards/odt_rpga_feather/mpconfigboard.h @@ -0,0 +1,26 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#pragma once + +#define MICROPY_HW_BOARD_NAME "Oak Dev Tech RPGA Feather" +#define MICROPY_HW_MCU_NAME "rp2040" + +#define MICROPY_HW_LED_STATUS (&pin_GPIO25) + +#define DEFAULT_I2C_BUS_SCL (&pin_GPIO11) +#define DEFAULT_I2C_BUS_SDA (&pin_GPIO10) + +#define CIRCUITPY_BOARD_I2C (2) +#define CIRCUITPY_BOARD_I2C_PIN {{.scl = &pin_GPIO11, .sda = &pin_GPIO10}, \ + {.scl = &pin_GPIO9, .sda = &pin_GPIO8}} + +#define DEFAULT_SPI_BUS_SCK (&pin_GPIO2) +#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO3) +#define DEFAULT_SPI_BUS_MISO (&pin_GPIO0) + +#define DEFAULT_UART_BUS_RX (&pin_GPIO9) +#define DEFAULT_UART_BUS_TX (&pin_GPIO8) diff --git a/ports/raspberrypi/boards/odt_rpga_feather/mpconfigboard.mk b/ports/raspberrypi/boards/odt_rpga_feather/mpconfigboard.mk new file mode 100644 index 000000000000..09cae7d68b28 --- /dev/null +++ b/ports/raspberrypi/boards/odt_rpga_feather/mpconfigboard.mk @@ -0,0 +1,12 @@ +USB_VID = 0x1209 +USB_PID = 0x4DF6 +USB_PRODUCT = "RPGA Feather" +USB_MANUFACTURER = "Oak Dev Tech" + +CHIP_VARIANT = RP2040 +CHIP_FAMILY = rp2 + +EXTERNAL_FLASH_DEVICES = "W25Q16JVxQ" + +CIRCUITPY__EVE = 1 +CIRCUITPY_FLOPPYIO = 0 diff --git a/ports/raspberrypi/boards/odt_rpga_feather/pico-sdk-configboard.h b/ports/raspberrypi/boards/odt_rpga_feather/pico-sdk-configboard.h new file mode 100644 index 000000000000..a301cec5acad --- /dev/null +++ b/ports/raspberrypi/boards/odt_rpga_feather/pico-sdk-configboard.h @@ -0,0 +1,11 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#pragma once + +// Put board-specific pico-sdk definitions here. This file must exist. +// Allow extra time for xosc to start. +#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64 diff --git a/ports/raspberrypi/boards/odt_rpga_feather/pins.c b/ports/raspberrypi/boards/odt_rpga_feather/pins.c new file mode 100644 index 000000000000..77681f84f1b5 --- /dev/null +++ b/ports/raspberrypi/boards/odt_rpga_feather/pins.c @@ -0,0 +1,73 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "shared-bindings/board/__init__.h" + +CIRCUITPY_BOARD_BUS_SINGLETON(stemma_i2c, i2c, 2) + +static const mp_rom_map_elem_t board_global_dict_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + { MP_ROM_QSTR(MP_QSTR_D26), MP_ROM_PTR(&pin_GPIO26) }, + { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) }, + { MP_ROM_QSTR(MP_QSTR_D27), MP_ROM_PTR(&pin_GPIO27) }, + { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO27) }, + { MP_ROM_QSTR(MP_QSTR_D28), MP_ROM_PTR(&pin_GPIO28) }, + { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO28) }, + { MP_ROM_QSTR(MP_QSTR_A29), MP_ROM_PTR(&pin_GPIO29) }, + { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO29) }, + + { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_CS), MP_ROM_PTR(&pin_GPIO1) }, + + { MP_ROM_QSTR(MP_QSTR_STEMMA_SDA), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_STEMMA_SCL), MP_ROM_PTR(&pin_GPIO9) }, + { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO9) }, + { MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO9) }, + + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO10) }, + { MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO10) }, + { MP_ROM_QSTR(MP_QSTR_F45), MP_ROM_PTR(&pin_GPIO10) }, + { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO11) }, + { MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO11) }, + { MP_ROM_QSTR(MP_QSTR_F46), MP_ROM_PTR(&pin_GPIO11) }, + + { MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_F47), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_D20), MP_ROM_PTR(&pin_GPIO20) }, + { MP_ROM_QSTR(MP_QSTR_F48), MP_ROM_PTR(&pin_GPIO20) }, + + { MP_ROM_QSTR(MP_QSTR_F2), MP_ROM_PTR(&pin_GPIO16) }, + { MP_ROM_QSTR(MP_QSTR_F3), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_F4), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_F6), MP_ROM_PTR(&pin_GPIO19) }, + + { MP_ROM_QSTR(MP_QSTR_CDONE), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_F_RST), MP_ROM_PTR(&pin_GPIO4) }, + + { MP_ROM_QSTR(MP_QSTR_F_SCK), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_F_MOSI), MP_ROM_PTR(&pin_GPIO15) }, + { MP_ROM_QSTR(MP_QSTR_F_MISO), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_F_CSN), MP_ROM_PTR(&pin_GPIO13) }, + + { MP_ROM_QSTR(MP_QSTR_D21), MP_ROM_PTR(&pin_GPIO21) }, + { MP_ROM_QSTR(MP_QSTR_D22), MP_ROM_PTR(&pin_GPIO22) }, + { MP_ROM_QSTR(MP_QSTR_DD23), MP_ROM_PTR(&pin_GPIO23) }, + { MP_ROM_QSTR(MP_QSTR_D24), MP_ROM_PTR(&pin_GPIO24) }, + { MP_ROM_QSTR(MP_QSTR_D25), MP_ROM_PTR(&pin_GPIO25) }, + { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO25) }, + + { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, + { MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) }, + { MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) }, + + { MP_ROM_QSTR(MP_QSTR_STEMMA_I2C), MP_ROM_PTR(&board_stemma_i2c_obj) }, +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table); From cb295c57d729ebcf0f2b51db7c57435b69f33ad3 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Wed, 5 Jun 2024 10:20:33 -0500 Subject: [PATCH 106/227] MP3Decoder: Make it possible to start in the middle of an MP3 You can now, e.g., ``` with open("/whatever.mp3") as mp3_file: mp3_file.seek(16000*30) decoder.file = mp3_file i2s.play(decoder) ``` to start about 30 seconds into a 128kbit/s CBR track. If a track is looped, the loop will start at the beginning. This also changes the behavior if the track is started & stopped: it will continue from where it left off, except if it had prevously run to completion. To get other behavior, you can seek the file and then re-assign the file property. --- shared-bindings/audiomp3/MP3Decoder.c | 16 ++++++++++++---- shared-module/audiomp3/MP3Decoder.c | 5 +---- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/shared-bindings/audiomp3/MP3Decoder.c b/shared-bindings/audiomp3/MP3Decoder.c index 0d927fc62cf8..7a596f90dbc5 100644 --- a/shared-bindings/audiomp3/MP3Decoder.c +++ b/shared-bindings/audiomp3/MP3Decoder.c @@ -28,13 +28,13 @@ //| """Load a .mp3 file for playback with `audioio.AudioOut` or `audiobusio.I2SOut`. //| //| :param Union[str, typing.BinaryIO] file: The name of a mp3 file (preferred) or an already opened mp3 file -//| :param ~circuitpython_typing.WriteableBuffer buffer: Optional pre-allocated buffer, that will be split in half and used for double-buffering of the data. If not provided, two buffers are allocated internally. The specific buffer size required depends on the mp3 file. +//| :param ~circuitpython_typing.WriteableBuffer buffer: Optional pre-allocated buffer, that will be split and used for buffering the data. The buffer is split into two parts for decoded data and the remainder is used for pre-decoded data. When playing from a socket, a larger buffer can help reduce playback glitches at the expense of increased memory usage. //| //| Playback of mp3 audio is CPU intensive, and the //| exact limit depends on many factors such as the particular -//| microcontroller, SD card or flash performance, and other -//| code in use such as displayio. If playback is garbled, -//| skips, or plays as static, first try using a "simpler" mp3: +//| microcontroller, SD card or flash performance, network performance, and +//| other code in use such as displayio. If playback is garbled, skips, or plays as +//| static, first try using a "simpler" mp3: //| //| * Use constant bit rate (CBR) not VBR or ABR (variable or average bit rate) when encoding your mp3 file //| * Use a lower sample rate (e.g., 11.025kHz instead of 48kHz) @@ -64,6 +64,14 @@ //| while a.playing: //| pass //| print("stopped") +//| +//| It is possible to seek within a file before playing it:: +//| +//| with open("/test.mp3", "rb") as stream: +//| stream.seek(128000 * 30 // 8) # Seek about 30s into a 128kbit/s stream +//| decoder.file = stream +//| +//| If the stream is played with ``loop = True``, the loop will start at the beginning. //| """ //| ... diff --git a/shared-module/audiomp3/MP3Decoder.c b/shared-module/audiomp3/MP3Decoder.c index 0c84c98e83f6..c6887b88536d 100644 --- a/shared-module/audiomp3/MP3Decoder.c +++ b/shared-module/audiomp3/MP3Decoder.c @@ -329,9 +329,6 @@ void common_hal_audiomp3_mp3file_set_file(audiomp3_mp3file_obj_t *self, mp_obj_t self->stream = stream; - // Seek the beginning of the stream if possible, but ignore any errors - (void)stream_lseek(self->stream, SEEK_SET, 0); - INPUT_BUFFER_CLEAR(self->inbuf); self->eof = 0; self->other_channel = -1; @@ -401,7 +398,7 @@ void audiomp3_mp3file_reset_buffer(audiomp3_mp3file_obj_t *self, // We don't reset the buffer index in case we're looping and we have an odd number of buffer // loads background_callback_prevent(); - if (stream_lseek(self->stream, SEEK_SET, 0) == 0) { + if (self->eof && stream_lseek(self->stream, SEEK_SET, 0) == 0) { INPUT_BUFFER_CLEAR(self->inbuf); self->eof = 0; self->samples_decoded = 0; From 2d18769a3bb71e4b0c7ff0299272cdd7b1fc22f3 Mon Sep 17 00:00:00 2001 From: Bill Sideris Date: Wed, 5 Jun 2024 21:34:59 +0300 Subject: [PATCH 107/227] Update creator stuff --- ports/espressif/boards/nodemcu_esp32c2/mpconfigboard.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ports/espressif/boards/nodemcu_esp32c2/mpconfigboard.mk b/ports/espressif/boards/nodemcu_esp32c2/mpconfigboard.mk index 0925e8de64d2..dd90b325b6d3 100644 --- a/ports/espressif/boards/nodemcu_esp32c2/mpconfigboard.mk +++ b/ports/espressif/boards/nodemcu_esp32c2/mpconfigboard.mk @@ -1,5 +1,5 @@ -CIRCUITPY_CREATOR_ID = 0x000C303A -CIRCUITPY_CREATION_ID = 0x00C20000 +CIRCUITPY_CREATOR_ID = 0xD03E0000 +CIRCUITPY_CREATION_ID = 0x00C20001 IDF_TARGET = esp32c2 From 6cb956ec864c6cfc83e786aba1597ee8ba6fa384 Mon Sep 17 00:00:00 2001 From: Bill Sideris Date: Wed, 5 Jun 2024 22:16:20 +0300 Subject: [PATCH 108/227] Update readme implementation --- README.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 3c169a96ed36..d2bc4b418bde 100644 --- a/README.rst +++ b/README.rst @@ -228,7 +228,9 @@ Supported Support status ================ ============================================================ atmel-samd ``SAMD21`` stable | ``SAMD51`` stable cxd56 stable -espressif ``ESP32`` beta | ``ESP32-C3`` beta | ``ESP32-S2`` stable | ``ESP32-S3`` beta +espressif ``ESP32`` beta | ``ESP32-H2`` alpha +.. ``ESP32-C2`` alpha | ``ESP32-C3`` beta | ``ESP32-C6`` beta +.. ``ESP32-S2`` stable | ``ESP32-S3`` stable litex alpha mimxrt10xx alpha nordic stable From 6c9eaf141528721628ef1f2520b9370d2accf0ac Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Wed, 5 Jun 2024 14:52:07 -0500 Subject: [PATCH 109/227] MP3Decoder: better handle underflows of mp3 stream * Don't consume in the case of "indata overflow". Doing so leaves us at a bad boundary within the MP3 data and can continue decoding from an inappropriate spot i.e., one that looks likede mp3 data but is NOT. because there are many crashing bugs in the helix mp3 library on invalid input data, we must do our best to avoid them, and this is one way to do that. * clear the output buffer in the case there's not a sync word in the buffer. this can also happen when too little data is available. this changes more "stuttering" conditions into "silent" conditions. With these changes, I can get through 3+ plays of "idea.mp3" from a local http server with long pauses (but not stuttering glitches or safe mode crashes). I was also able to play through 10+ minutes of http://ice2.somafm.com/dronezone-128-mp3 without crashing or "end of stream", though again there are pauses due to packet loss. I think this is good now, except for the problems that arise when the socket layer doesn't deliver a fresh packet for a long time. --- shared-module/audiomp3/MP3Decoder.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/shared-module/audiomp3/MP3Decoder.c b/shared-module/audiomp3/MP3Decoder.c index c6887b88536d..19867271f605 100644 --- a/shared-module/audiomp3/MP3Decoder.c +++ b/shared-module/audiomp3/MP3Decoder.c @@ -447,14 +447,16 @@ audioio_get_buffer_result_t audiomp3_mp3file_get_buffer(audiomp3_mp3file_obj_t * mp3file_skip_id3v2(self, false); if (!mp3file_find_sync_word(self, false)) { + memset(buffer, 0, self->frame_buffer_size); *buffer_length = 0; return self->eof ? GET_BUFFER_DONE : GET_BUFFER_ERROR; } int bytes_left = BYTES_LEFT(self); uint8_t *inbuf = READ_PTR(self); int err = MP3Decode(self->decoder, &inbuf, &bytes_left, buffer, 0); - CONSUME(self, BYTES_LEFT(self) - bytes_left); - + if (err != ERR_MP3_INDATA_UNDERFLOW) { + CONSUME(self, BYTES_LEFT(self) - bytes_left); + } if (err) { memset(buffer, 0, frame_buffer_size_bytes); if (DO_DEBUG) { From 6ec5d3fabe640dae78e034d426fa3fcb0b59b9c5 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Wed, 5 Jun 2024 23:29:47 -0400 Subject: [PATCH 110/227] web_workflow.c: use absolute path --- supervisor/shared/web_workflow/web_workflow.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/supervisor/shared/web_workflow/web_workflow.c b/supervisor/shared/web_workflow/web_workflow.c index 71dbd29ebba4..8cb9237f5af2 100644 --- a/supervisor/shared/web_workflow/web_workflow.c +++ b/supervisor/shared/web_workflow/web_workflow.c @@ -1261,8 +1261,15 @@ static bool _reply(socketpool_socket_obj_t *socket, _request *request) { _reply_missing(socket, request); return false; } - path += strlen(vfs->str); + // Check if the vfs name is one character long: it must be "/" in that case. + // If so don't remove the mount point name. We must use an absolute path + // because otherwise the path will be adjusted by os.getcwd() when it's looked up. + if (strlen(vfs->str) != 1) { + // Remove the mount point directory name, such as "/sd". + path += strlen(vfs->str); + } pathlen = strlen(path); + } FATFS *fs = &fs_mount->fatfs; if (directory) { From 24f91dbde7690bdda8bc28ff1b3e68f8adc52ea7 Mon Sep 17 00:00:00 2001 From: Bill Sideris Date: Thu, 6 Jun 2024 22:32:42 +0300 Subject: [PATCH 111/227] Update paperwork --- .../espressif_esp8684_devkitc_02_n4/board.c | 30 ++++--------------- .../espressif/boards/nodemcu_esp32c2/board.c | 30 ++++--------------- 2 files changed, 10 insertions(+), 50 deletions(-) diff --git a/ports/espressif/boards/espressif_esp8684_devkitc_02_n4/board.c b/ports/espressif/boards/espressif_esp8684_devkitc_02_n4/board.c index 164430c88c92..a3a9eec04714 100644 --- a/ports/espressif/boards/espressif_esp8684_devkitc_02_n4/board.c +++ b/ports/espressif/boards/espressif_esp8684_devkitc_02_n4/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" diff --git a/ports/espressif/boards/nodemcu_esp32c2/board.c b/ports/espressif/boards/nodemcu_esp32c2/board.c index d6e20133fc42..3dc0ea2def1d 100644 --- a/ports/espressif/boards/nodemcu_esp32c2/board.c +++ b/ports/espressif/boards/nodemcu_esp32c2/board.c @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Bill Sideris, independently providing these changes. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Bill Sideris, independently providing these changes. +// +// SPDX-License-Identifier: MIT #include "supervisor/board.h" From 1790c75cf5e1699f54c1bf9a2aacdf24696a51f5 Mon Sep 17 00:00:00 2001 From: Bill Sideris Date: Thu, 6 Jun 2024 22:35:07 +0300 Subject: [PATCH 112/227] Update paperwork elsewhere too --- .../mpconfigboard.h | 30 ++++--------------- .../boards/nodemcu_esp32c2/mpconfigboard.h | 30 ++++--------------- 2 files changed, 10 insertions(+), 50 deletions(-) diff --git a/ports/espressif/boards/espressif_esp8684_devkitc_02_n4/mpconfigboard.h b/ports/espressif/boards/espressif_esp8684_devkitc_02_n4/mpconfigboard.h index 6d88ac52d2ae..e343e4bfc1e3 100644 --- a/ports/espressif/boards/espressif_esp8684_devkitc_02_n4/mpconfigboard.h +++ b/ports/espressif/boards/espressif_esp8684_devkitc_02_n4/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT // Micropython setup diff --git a/ports/espressif/boards/nodemcu_esp32c2/mpconfigboard.h b/ports/espressif/boards/nodemcu_esp32c2/mpconfigboard.h index 1b6362dfabe6..88021224ef11 100644 --- a/ports/espressif/boards/nodemcu_esp32c2/mpconfigboard.h +++ b/ports/espressif/boards/nodemcu_esp32c2/mpconfigboard.h @@ -1,28 +1,8 @@ -/* - * This file is part of the MicroPython project, http://micropython.org/ - * - * The MIT License (MIT) - * - * Copyright (c) 2024 Bill Sideris, independently providing these changes. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 Bill Sideris, independently providing these changes. +// +// SPDX-License-Identifier: MIT // Micropython setup From e4f6656df685468dc1e181374cdfaf5c2cbb6f71 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Thu, 6 Jun 2024 16:56:24 -0400 Subject: [PATCH 113/227] Further fix to use absolute paths in remote workflows --- supervisor/shared/filesystem.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/supervisor/shared/filesystem.c b/supervisor/shared/filesystem.c index 1a4e7bcd051d..e5edb148e414 100644 --- a/supervisor/shared/filesystem.c +++ b/supervisor/shared/filesystem.c @@ -232,7 +232,13 @@ fs_user_mount_t *filesystem_for_path(const char *path_in, const char **path_unde fs_mount = filesystem_circuitpy(); } else { fs_mount = MP_OBJ_TO_PTR(vfs->obj); - *path_under_mount += strlen(vfs->str); + // Check if the vfs name is one character long: it must be "/" in that case. + // If so don't remove the mount point name. We must use an absolute path + // because otherwise the path will be adjusted by os.getcwd() when it's looked up. + if (strlen(vfs->str) != 1) { + // Remove the mount point directory name, such as "/sd". + path_under_mount += strlen(vfs->str); + } } return fs_mount; } From 367ff749a3e24117f96764ad443adb826c2b0f00 Mon Sep 17 00:00:00 2001 From: Bernhard Bablok Date: Fri, 7 Jun 2024 10:00:15 +0200 Subject: [PATCH 114/227] added board Sunton 3.2in ESP32 240x320 capacitive touch display --- .../boards/sunton_esp32_2432S032C/board.c | 103 ++++++++++++++++++ .../sunton_esp32_2432S032C/mpconfigboard.h | 28 +++++ .../sunton_esp32_2432S032C/mpconfigboard.mk | 15 +++ .../boards/sunton_esp32_2432S032C/pins.c | 70 ++++++++++++ .../boards/sunton_esp32_2432S032C/sdkconfig | 0 5 files changed, 216 insertions(+) create mode 100644 ports/espressif/boards/sunton_esp32_2432S032C/board.c create mode 100644 ports/espressif/boards/sunton_esp32_2432S032C/mpconfigboard.h create mode 100644 ports/espressif/boards/sunton_esp32_2432S032C/mpconfigboard.mk create mode 100644 ports/espressif/boards/sunton_esp32_2432S032C/pins.c create mode 100644 ports/espressif/boards/sunton_esp32_2432S032C/sdkconfig diff --git a/ports/espressif/boards/sunton_esp32_2432S032C/board.c b/ports/espressif/boards/sunton_esp32_2432S032C/board.c new file mode 100644 index 000000000000..24757be36579 --- /dev/null +++ b/ports/espressif/boards/sunton_esp32_2432S032C/board.c @@ -0,0 +1,103 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "supervisor/board.h" +#include "mpconfigboard.h" +#include "shared-bindings/busio/SPI.h" +#include "shared-bindings/fourwire/FourWire.h" +#include "shared-bindings/microcontroller/Pin.h" +#include "shared-module/displayio/__init__.h" +#include "shared-bindings/board/__init__.h" +#include "supervisor/shared/board.h" + +#include "shared-module/displayio/mipi_constants.h" +#include "components/driver/gpio/include/driver/gpio.h" +#include "components/hal/include/hal/gpio_hal.h" +#include "common-hal/microcontroller/Pin.h" + +#define DELAY 0x80 + +// ST7789 +uint8_t display_init_sequence[] = { + 0x01, 0 | DELAY, 0x96, // _SWRESET and Delay 150ms + 0x11, 0 | DELAY, 0xFF, // _SLPOUT and Delay 500ms + 0x3A, 0x81, 0x55, 0x0A, // _COLMOD and Delay 10ms + 0x36, 0x01, 0x08, // _MADCTL (BGR) + 0x21, 0 | DELAY, 0x0A, // _INVON Hack and Delay 10ms + 0x13, 0 | DELAY, 0x0A, // _NORON and Delay 10ms + 0x36, 0x01, 0xA0, // _MADCTL (Landscape) + 0xE0, 0x0E, 0xD0, 0x00, 0x02, 0x07, 0x0A, 0x28, 0x32, 0x44, + 0x42, 0x06, 0x0E, 0x12, 0x14, 0x17, // gamma-curve positive + 0xE1, 0x0E, 0xD0, 0x00, 0x02, 0x07, 0x0A, 0x28, 0x31, 0x54, + 0x47, 0x0E, 0x1C, 0x17, 0x1B, 0x1E, // gamma-curve negative + 0x29, 0 | DELAY, 0xFF, // _DISPON and Delay 500ms +}; + +static void display_init(void) { + busio_spi_obj_t *spi = common_hal_board_create_spi(0); + fourwire_fourwire_obj_t *bus = &allocate_display_bus()->fourwire_bus; + bus->base.type = &fourwire_fourwire_type; + + common_hal_fourwire_fourwire_construct( + bus, + spi, + &pin_GPIO2, // TFT_DC + &pin_GPIO15, // TFT_CS + NULL, // TFT_RST + 26600000, // Baudrate + 0, // Polarity + 0 // Phase + ); + + busdisplay_busdisplay_obj_t *display = &allocate_display()->display; + display->base.type = &busdisplay_busdisplay_type; + + common_hal_busdisplay_busdisplay_construct(display, + bus, + 320, // Width + 240, // Height + 0, // column start + 0, // row start + 0, // rotation + 16, // Color depth + false, // Grayscale + false, // pixels in a byte share a row. Only valid for depths < 8 + 1, // bytes per cell. Only valid for depths < 8 + false, // reverse_pixels_in_byte. Only valid for depths < 8 + true, // reverse_pixels_in_word + MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command + MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command + MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command + display_init_sequence, + sizeof(display_init_sequence), + &pin_GPIO27, // backlight pin + NO_BRIGHTNESS_COMMAND, + 1.0f, // brightness + false, // single_byte_bounds + false, // data_as_commands + true, // auto_refresh + 60, // native_frames_per_second + true, // backlight_on_high + false, // SH1107_addressing + 50000); // backlight pwm frequency +} + +void board_init(void) { + display_init(); +} + +bool espressif_board_reset_pin_number(gpio_num_t pin_number) { + // Pull the speaker pin low to reduce noise on reset + if (pin_number == 26) { + // Turn on audio + gpio_set_direction(pin_number, GPIO_MODE_DEF_OUTPUT); + gpio_set_level(pin_number, false); + return true; + } + return false; +} + +// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/espressif/boards/sunton_esp32_2432S032C/mpconfigboard.h b/ports/espressif/boards/sunton_esp32_2432S032C/mpconfigboard.h new file mode 100644 index 000000000000..68ce206afa99 --- /dev/null +++ b/ports/espressif/boards/sunton_esp32_2432S032C/mpconfigboard.h @@ -0,0 +1,28 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#pragma once + +// Micropython setup + +#define MICROPY_HW_BOARD_NAME "sunton_esp32_2432S032C" +#define MICROPY_HW_MCU_NAME "ESP32" +#define MICROPY_HW_LED_STATUS (&pin_GPIO16) +#define MICROPY_HW_LED_STATUS_INVERTED (1) + +#define CIRCUITPY_BOOT_BUTTON (&pin_GPIO0) + +#define DEFAULT_I2C_BUS_SDA (&pin_GPIO21) +#define DEFAULT_I2C_BUS_SCL (&pin_GPIO22) + +#define CIRCUITPY_BOARD_SPI (2) +#define CIRCUITPY_BOARD_SPI_PIN { \ + {.clock = &pin_GPIO14, .mosi = &pin_GPIO13, .miso = &pin_GPIO12}, /*LCD*/ \ + {.clock = &pin_GPIO18, .mosi = &pin_GPIO23, .miso = &pin_GPIO19}, /*SD*/ \ +} + +#define CIRCUITPY_CONSOLE_UART_TX (&pin_GPIO1) +#define CIRCUITPY_CONSOLE_UART_RX (&pin_GPIO3) diff --git a/ports/espressif/boards/sunton_esp32_2432S032C/mpconfigboard.mk b/ports/espressif/boards/sunton_esp32_2432S032C/mpconfigboard.mk new file mode 100644 index 000000000000..43241e5edf84 --- /dev/null +++ b/ports/espressif/boards/sunton_esp32_2432S032C/mpconfigboard.mk @@ -0,0 +1,15 @@ +CIRCUITPY_CREATOR_ID = 0x19991000 +CIRCUITPY_CREATION_ID = 0x00AA032C + +IDF_TARGET = esp32 + +CIRCUITPY_ESP_FLASH_MODE = dio +CIRCUITPY_ESP_FLASH_FREQ = 40m +CIRCUITPY_ESP_FLASH_SIZE = 4MB + +CIRCUITPY_ESPCAMERA = 0 + +# Override partition layout to preserve compatibility because the default has changed. +FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 diff --git a/ports/espressif/boards/sunton_esp32_2432S032C/pins.c b/ports/espressif/boards/sunton_esp32_2432S032C/pins.c new file mode 100644 index 000000000000..5d1561bfd38a --- /dev/null +++ b/ports/espressif/boards/sunton_esp32_2432S032C/pins.c @@ -0,0 +1,70 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "shared-bindings/board/__init__.h" +#include "shared-module/displayio/__init__.h" + +CIRCUITPY_BOARD_BUS_SINGLETON(lcd_spi, spi, 0) +CIRCUITPY_BOARD_BUS_SINGLETON(sd_spi, spi, 1) + +static const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + // Boot button + { MP_ROM_QSTR(MP_QSTR_BOOT0), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO0) }, + + // RGB LED + { MP_ROM_QSTR(MP_QSTR_LED_GREEN), MP_ROM_PTR(&pin_GPIO16) }, + { MP_ROM_QSTR(MP_QSTR_LED_RED), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_LED_BLUE), MP_ROM_PTR(&pin_GPIO17) }, + + // CDS Light sensor (Not present on all boards) + { MP_ROM_QSTR(MP_QSTR_LDR), MP_ROM_PTR(&pin_GPIO34) }, + + // Speaker pin + { MP_ROM_QSTR(MP_QSTR_SPEAKER), MP_ROM_PTR(&pin_GPIO26) }, + + // User available GPIOs: + // P3 pin 1 and CN1 pin 2, shared with touch-interrupt and SDA + { MP_ROM_QSTR(MP_QSTR_IO21), MP_ROM_PTR(&pin_GPIO21) }, + // P3 pin 2 and CN1 pin 3, shared with SCL + { MP_ROM_QSTR(MP_QSTR_IO22), MP_ROM_PTR(&pin_GPIO22) }, + // P3 pin 3, input only + { MP_ROM_QSTR(MP_QSTR_IO35), MP_ROM_PTR(&pin_GPIO35) }, + + // I2C + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO21) }, + { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO22) }, + + // TF card slot (SPI) + { MP_ROM_QSTR(MP_QSTR_SD_MOSI), MP_ROM_PTR(&pin_GPIO23) }, + { MP_ROM_QSTR(MP_QSTR_SD_MISO), MP_ROM_PTR(&pin_GPIO19) }, + { MP_ROM_QSTR(MP_QSTR_SD_SCK), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_SD_CS), MP_ROM_PTR(&pin_GPIO5) }, + + // ST7789 (SPI) + { MP_ROM_QSTR(MP_QSTR_LCD_MOSI), MP_ROM_PTR(&pin_GPIO13) }, + { MP_ROM_QSTR(MP_QSTR_LCD_MISO), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_LCD_SCK), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_LCD_CS), MP_ROM_PTR(&pin_GPIO15) }, + { MP_ROM_QSTR(MP_QSTR_LCD_DC), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_LCD_BCKL), MP_ROM_PTR(&pin_GPIO27) }, + + // GT911 (I2C) + { MP_ROM_QSTR(MP_QSTR_TOUCH_SDA), MP_ROM_PTR(&pin_GPIO33) }, + { MP_ROM_QSTR(MP_QSTR_TOUCH_SCL), MP_ROM_PTR(&pin_GPIO32) }, + { MP_ROM_QSTR(MP_QSTR_TOUCH_RST), MP_ROM_PTR(&pin_GPIO25) }, + { MP_ROM_QSTR(MP_QSTR_TOUCH_INT), MP_ROM_PTR(&pin_GPIO21) }, + + // objects + { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, + { MP_ROM_QSTR(MP_QSTR_LCD_SPI), MP_ROM_PTR(&board_lcd_spi_obj) }, + { MP_ROM_QSTR(MP_QSTR_SD_SPI), MP_ROM_PTR(&board_sd_spi_obj) }, + { MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display) }, + +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); diff --git a/ports/espressif/boards/sunton_esp32_2432S032C/sdkconfig b/ports/espressif/boards/sunton_esp32_2432S032C/sdkconfig new file mode 100644 index 000000000000..e69de29bb2d1 From b6ff640108e5d2c390c732215f170e1a6fba58c3 Mon Sep 17 00:00:00 2001 From: bablokb Date: Fri, 7 Jun 2024 08:29:22 +0000 Subject: [PATCH 115/227] fixed indentation --- ports/espressif/boards/sunton_esp32_2432S032C/mpconfigboard.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ports/espressif/boards/sunton_esp32_2432S032C/mpconfigboard.h b/ports/espressif/boards/sunton_esp32_2432S032C/mpconfigboard.h index 68ce206afa99..4db72f34c11a 100644 --- a/ports/espressif/boards/sunton_esp32_2432S032C/mpconfigboard.h +++ b/ports/espressif/boards/sunton_esp32_2432S032C/mpconfigboard.h @@ -20,8 +20,8 @@ #define CIRCUITPY_BOARD_SPI (2) #define CIRCUITPY_BOARD_SPI_PIN { \ - {.clock = &pin_GPIO14, .mosi = &pin_GPIO13, .miso = &pin_GPIO12}, /*LCD*/ \ - {.clock = &pin_GPIO18, .mosi = &pin_GPIO23, .miso = &pin_GPIO19}, /*SD*/ \ + {.clock = &pin_GPIO14, .mosi = &pin_GPIO13, .miso = &pin_GPIO12}, /*LCD*/ \ + {.clock = &pin_GPIO18, .mosi = &pin_GPIO23, .miso = &pin_GPIO19}, /*SD*/ \ } #define CIRCUITPY_CONSOLE_UART_TX (&pin_GPIO1) From 7969638740e6d9b44bd55ed8fbfb6ed29aa686b5 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Fri, 7 Jun 2024 14:37:29 -0500 Subject: [PATCH 116/227] SSLSocket: Add stream protocol including select. This assumes that the SSL layer is readable/writable exactly when the underlying socket is readable/writable. --- shared-bindings/ssl/SSLSocket.c | 56 +++++++++++++++++++++++++++++++-- shared-bindings/ssl/SSLSocket.h | 2 ++ shared-module/ssl/SSLSocket.c | 15 +++++++++ 3 files changed, 70 insertions(+), 3 deletions(-) diff --git a/shared-bindings/ssl/SSLSocket.c b/shared-bindings/ssl/SSLSocket.c index e244f77c76a9..a791da4093f8 100644 --- a/shared-bindings/ssl/SSLSocket.c +++ b/shared-bindings/ssl/SSLSocket.c @@ -10,10 +10,11 @@ #include #include "shared/runtime/context_manager_helpers.h" -#include "py/objtuple.h" +#include "py/mperrno.h" #include "py/objlist.h" +#include "py/objtuple.h" #include "py/runtime.h" -#include "py/mperrno.h" +#include "py/stream.h" #include "shared/netutils/netutils.h" @@ -247,9 +248,58 @@ static const mp_rom_map_elem_t ssl_sslsocket_locals_dict_table[] = { static MP_DEFINE_CONST_DICT(ssl_sslsocket_locals_dict, ssl_sslsocket_locals_dict_table); +static mp_uint_t sslsocket_read(mp_obj_t self_in, void *buf, mp_uint_t size, int *errorcode) { + ssl_sslsocket_obj_t *self = MP_OBJ_TO_PTR(self_in); + mp_int_t ret = common_hal_ssl_sslsocket_recv_into(self, buf, size); + if (ret < 0) { + *errorcode = -ret; + return MP_STREAM_ERROR; + } + return ret; +} + +static mp_uint_t sslsocket_write(mp_obj_t self_in, const void *buf, mp_uint_t size, int *errorcode) { + ssl_sslsocket_obj_t *self = MP_OBJ_TO_PTR(self_in); + mp_int_t ret = common_hal_ssl_sslsocket_send(self, buf, size); + if (ret < 0) { + *errorcode = -ret; + return MP_STREAM_ERROR; + } + return ret; +} + +static mp_uint_t sslsocket_ioctl(mp_obj_t self_in, mp_uint_t request, mp_uint_t arg, int *errcode) { + ssl_sslsocket_obj_t *self = MP_OBJ_TO_PTR(self_in); + mp_uint_t ret; + if (request == MP_STREAM_POLL) { + mp_uint_t flags = arg; + ret = 0; + if ((flags & MP_STREAM_POLL_RD) && common_hal_ssl_sslsocket_readable(self) > 0) { + ret |= MP_STREAM_POLL_RD; + } + if ((flags & MP_STREAM_POLL_WR) && common_hal_ssl_sslsocket_writable(self)) { + ret |= MP_STREAM_POLL_WR; + } + } else { + *errcode = MP_EINVAL; + ret = MP_STREAM_ERROR; + } + return ret; +} + + +static const mp_stream_p_t sslsocket_stream_p = { + .read = sslsocket_read, + .write = sslsocket_write, + .ioctl = sslsocket_ioctl, + .is_text = false, +}; + + MP_DEFINE_CONST_OBJ_TYPE( ssl_sslsocket_type, MP_QSTR_SSLSocket, MP_TYPE_FLAG_NONE, - locals_dict, &ssl_sslsocket_locals_dict + locals_dict, &ssl_sslsocket_locals_dict, + protocol, &sslsocket_stream_p ); diff --git a/shared-bindings/ssl/SSLSocket.h b/shared-bindings/ssl/SSLSocket.h index 4079048a6cb1..bb46576330f5 100644 --- a/shared-bindings/ssl/SSLSocket.h +++ b/shared-bindings/ssl/SSLSocket.h @@ -20,6 +20,8 @@ void common_hal_ssl_sslsocket_close(ssl_sslsocket_obj_t *self); void common_hal_ssl_sslsocket_connect(ssl_sslsocket_obj_t *self, mp_obj_t addr); bool common_hal_ssl_sslsocket_get_closed(ssl_sslsocket_obj_t *self); bool common_hal_ssl_sslsocket_get_connected(ssl_sslsocket_obj_t *self); +bool common_hal_ssl_sslsocket_readable(ssl_sslsocket_obj_t *self); +bool common_hal_ssl_sslsocket_writable(ssl_sslsocket_obj_t *self); void common_hal_ssl_sslsocket_listen(ssl_sslsocket_obj_t *self, int backlog); mp_uint_t common_hal_ssl_sslsocket_recv_into(ssl_sslsocket_obj_t *self, uint8_t *buf, uint32_t len); mp_uint_t common_hal_ssl_sslsocket_send(ssl_sslsocket_obj_t *self, const uint8_t *buf, uint32_t len); diff --git a/shared-module/ssl/SSLSocket.c b/shared-module/ssl/SSLSocket.c index 9303964af719..3b0f437086a6 100644 --- a/shared-module/ssl/SSLSocket.c +++ b/shared-module/ssl/SSLSocket.c @@ -448,3 +448,18 @@ void common_hal_ssl_sslsocket_setsockopt(ssl_sslsocket_obj_t *self, mp_obj_t lev void common_hal_ssl_sslsocket_settimeout(ssl_sslsocket_obj_t *self, mp_obj_t timeout_obj) { ssl_socket_settimeout(self, timeout_obj); } + +static bool poll_common(ssl_sslsocket_obj_t *self, int mode) { + const mp_stream_p_t *stream_p = mp_get_stream_raise(self->sock_obj, MP_STREAM_OP_IOCTL); + int errcode; + mp_int_t ret = stream_p->ioctl(self->sock_obj, MP_STREAM_POLL, mode, &errcode); + return ret != 0; +} + +bool common_hal_ssl_sslsocket_readable(ssl_sslsocket_obj_t *self) { + return poll_common(self, MP_STREAM_POLL_RD); +} + +bool common_hal_ssl_sslsocket_writable(ssl_sslsocket_obj_t *self) { + return poll_common(self, MP_STREAM_POLL_WR); +} From 1259682d45cd9393659d0cabd369516114095705 Mon Sep 17 00:00:00 2001 From: bablokb Date: Sat, 8 Jun 2024 08:24:21 +0000 Subject: [PATCH 117/227] changed as suggested --- .../boards/sunton_esp32_2432S032C/mpconfigboard.mk | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/ports/espressif/boards/sunton_esp32_2432S032C/mpconfigboard.mk b/ports/espressif/boards/sunton_esp32_2432S032C/mpconfigboard.mk index 43241e5edf84..15e3b102c9bf 100644 --- a/ports/espressif/boards/sunton_esp32_2432S032C/mpconfigboard.mk +++ b/ports/espressif/boards/sunton_esp32_2432S032C/mpconfigboard.mk @@ -3,13 +3,8 @@ CIRCUITPY_CREATION_ID = 0x00AA032C IDF_TARGET = esp32 -CIRCUITPY_ESP_FLASH_MODE = dio +CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 40m CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESPCAMERA = 0 - -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 From 467ceef94d7a8d23dc3b97acc03c9d82998fdb48 Mon Sep 17 00:00:00 2001 From: Bill Sideris Date: Sat, 8 Jun 2024 22:09:20 +0300 Subject: [PATCH 118/227] "Refer to latest release" --- README.rst | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-) diff --git a/README.rst b/README.rst index d2bc4b418bde..c5f01d283cf3 100644 --- a/README.rst +++ b/README.rst @@ -223,26 +223,9 @@ Ports Ports include the code unique to a microcontroller line. -================ ============================================================ -Supported Support status -================ ============================================================ -atmel-samd ``SAMD21`` stable | ``SAMD51`` stable -cxd56 stable -espressif ``ESP32`` beta | ``ESP32-H2`` alpha -.. ``ESP32-C2`` alpha | ``ESP32-C3`` beta | ``ESP32-C6`` beta -.. ``ESP32-S2`` stable | ``ESP32-S3`` stable -litex alpha -mimxrt10xx alpha -nordic stable -raspberrypi stable -silabs (efr32) alpha -stm ``F4`` stable | ``others`` beta -unix alpha -================ ============================================================ - -- ``stable`` Highly unlikely to have bugs or missing functionality. -- ``beta`` Being actively improved but may be missing functionality and have bugs. -- ``alpha`` Will have bugs and missing functionality. +The following ports are available: ``atmel-samd``, ``cxd56``, ``espressif``, ``litex``, ``mimxrt10xx``, ``nordic``, ``raspberrypi``, ``silabs`` (``efr32``), ``stm``, ``unix``. + +However they are not all stable. For details, refer to the `latest release `__ notes. Boards ~~~~~~ From 22ef8ebd0dcfddc397bb35f6a9fcda290d69901a Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Sat, 8 Jun 2024 17:48:24 -0400 Subject: [PATCH 119/227] Apply suggestions from code review --- README.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.rst b/README.rst index c5f01d283cf3..1d2c1a0c3851 100644 --- a/README.rst +++ b/README.rst @@ -223,9 +223,10 @@ Ports Ports include the code unique to a microcontroller line. -The following ports are available: ``atmel-samd``, ``cxd56``, ``espressif``, ``litex``, ``mimxrt10xx``, ``nordic``, ``raspberrypi``, ``silabs`` (``efr32``), ``stm``, ``unix``. +The following ports are available: ``atmel-samd``, ``cxd56``, ``espressif``, ``litex``, ``mimxrt10xx``, ``nordic``, ``raspberrypi``, ``renode``, ``silabs`` (``efr32``), ``stm``, ``unix``. -However they are not all stable. For details, refer to the `latest release `__ notes. +However, not all ports are not fully functional. Some have limited limited functionality and known serious bugs. +For details, refer to the **Port status** section in the `latest release `__ notes. Boards ~~~~~~ From 49a612056e3b6cff2526dd13fed05af3b5a62867 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Mon, 10 Jun 2024 12:07:48 -0500 Subject: [PATCH 120/227] take micropython tricks for selectability of ssl sockets --- shared-module/ssl/SSLSocket.c | 34 ++++++++++++++++++++++++++++++++-- shared-module/ssl/SSLSocket.h | 1 + 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/shared-module/ssl/SSLSocket.c b/shared-module/ssl/SSLSocket.c index 3b0f437086a6..9e3a62586006 100644 --- a/shared-module/ssl/SSLSocket.c +++ b/shared-module/ssl/SSLSocket.c @@ -22,6 +22,8 @@ #include "mbedtls/version.h" +#define MP_STREAM_POLL_RDWR (MP_STREAM_POLL_RD | MP_STREAM_POLL_WR) + #if defined(MBEDTLS_ERROR_C) #include "../../lib/mbedtls_errors/mp_mbedtls_errors.c" #endif @@ -220,6 +222,7 @@ ssl_sslsocket_obj_t *common_hal_ssl_sslcontext_wrap_socket(ssl_sslcontext_obj_t o->base.type = &ssl_sslsocket_type; o->ssl_context = self; o->sock_obj = socket; + o->poll_mask = 0; mp_load_method(socket, MP_QSTR_accept, o->accept_args); mp_load_method(socket, MP_QSTR_bind, o->bind_args); @@ -331,6 +334,7 @@ ssl_sslsocket_obj_t *common_hal_ssl_sslcontext_wrap_socket(ssl_sslcontext_obj_t } mp_uint_t common_hal_ssl_sslsocket_recv_into(ssl_sslsocket_obj_t *self, uint8_t *buf, uint32_t len) { + self->poll_mask = 0; int ret = mbedtls_ssl_read(&self->ssl, buf, len); DEBUG_PRINT("recv_into mbedtls_ssl_read() -> %d\n", ret); if (ret == MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY) { @@ -342,17 +346,24 @@ mp_uint_t common_hal_ssl_sslsocket_recv_into(ssl_sslsocket_obj_t *self, uint8_t DEBUG_PRINT("returning %d\n", ret); return ret; } + if (ret == MBEDTLS_ERR_SSL_WANT_WRITE) { + self->poll_mask = MP_STREAM_POLL_WR; + } DEBUG_PRINT("raising errno [error case] %d\n", ret); mbedtls_raise_error(ret); } mp_uint_t common_hal_ssl_sslsocket_send(ssl_sslsocket_obj_t *self, const uint8_t *buf, uint32_t len) { + self->poll_mask = 0; int ret = mbedtls_ssl_write(&self->ssl, buf, len); DEBUG_PRINT("send mbedtls_ssl_write() -> %d\n", ret); if (ret >= 0) { DEBUG_PRINT("returning %d\n", ret); return ret; } + if (ret == MBEDTLS_ERR_SSL_WANT_READ) { + self->poll_mask = MP_STREAM_POLL_RD; + } DEBUG_PRINT("raising errno [error case] %d\n", ret); mbedtls_raise_error(ret); } @@ -449,10 +460,29 @@ void common_hal_ssl_sslsocket_settimeout(ssl_sslsocket_obj_t *self, mp_obj_t tim ssl_socket_settimeout(self, timeout_obj); } -static bool poll_common(ssl_sslsocket_obj_t *self, int mode) { +static bool poll_common(ssl_sslsocket_obj_t *self, uintptr_t arg) { + // Take into account that the library might have buffered data already + int has_pending = 0; + if (arg & MP_STREAM_POLL_RD) { + has_pending = mbedtls_ssl_check_pending(&self->ssl); + if (has_pending) { + // Shortcut if we only need to read and we have buffered data, no need to go to the underlying socket + return true; + } + } + + // If the library signaled us that it needs reading or writing, only + // check that direction + if (self->poll_mask && (arg & MP_STREAM_POLL_RDWR)) { + arg = (arg & ~MP_STREAM_POLL_RDWR) | self->poll_mask; + } + + // If direction the library needed is available, return a fake + // result to the caller so that it reenters a read or a write to + // allow the handshake to progress const mp_stream_p_t *stream_p = mp_get_stream_raise(self->sock_obj, MP_STREAM_OP_IOCTL); int errcode; - mp_int_t ret = stream_p->ioctl(self->sock_obj, MP_STREAM_POLL, mode, &errcode); + mp_int_t ret = stream_p->ioctl(self->sock_obj, MP_STREAM_POLL, arg, &errcode); return ret != 0; } diff --git a/shared-module/ssl/SSLSocket.h b/shared-module/ssl/SSLSocket.h index b9baad3ce174..f7f3d1ae83ce 100644 --- a/shared-module/ssl/SSLSocket.h +++ b/shared-module/ssl/SSLSocket.h @@ -29,6 +29,7 @@ typedef struct ssl_sslsocket_obj { mbedtls_x509_crt cacert; mbedtls_x509_crt cert; mbedtls_pk_context pkey; + uintptr_t poll_mask; bool closed; mp_obj_t accept_args[2]; mp_obj_t bind_args[3]; From 8b39b3b6a6484a84808b9277763203cfb17182a0 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Mon, 10 Jun 2024 18:13:59 -0400 Subject: [PATCH 121/227] shared-module/usb_hid/Device.c: update tud_hid_set_report_cb() --- shared-module/usb_hid/Device.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/shared-module/usb_hid/Device.c b/shared-module/usb_hid/Device.c index 437f5e6c5715..d6c4697210f6 100644 --- a/shared-module/usb_hid/Device.c +++ b/shared-module/usb_hid/Device.c @@ -282,7 +282,12 @@ void tud_hid_set_report_cb(uint8_t itf, uint8_t report_id, hid_report_type_t rep usb_hid_device_obj_t *hid_device = NULL; size_t id_idx; - if (report_id == 0 && report_type == HID_REPORT_TYPE_INVALID) { + // As of https://github.com/hathach/tinyusb/pull/2253, HID_REPORT_TYPE_INVALID reports are not + // sent to this callback, but are instead sent to tud_hid_report_fail_cb(), which we don't bother + // to implement. + // So this callback is only going to see HID_REPORT_TYPE_OUTPUT. + // HID_REPORT_TYPE_FEATURE is not used yet. + if (report_id == 0) { // This could be a report with a non-zero report ID in the first byte, or // it could be for report ID 0. // Heuristic: see if there's a device with report ID 0, and if its report length matches @@ -299,12 +304,10 @@ void tud_hid_set_report_cb(uint8_t itf, uint8_t report_id, hid_report_type_t rep buffer++; bufsize--; } - } else if (report_type != HID_REPORT_TYPE_OUTPUT && report_type != HID_REPORT_TYPE_FEATURE) { - return; } // report_id might be changed due to parsing above, so test again. - if ((report_id == 0 && report_type == HID_REPORT_TYPE_INVALID) || + if ((report_id == 0) || // Fetch the matching device if we don't already have the report_id 0 device. (usb_hid_get_device_with_report_id(report_id, &hid_device, &id_idx) && hid_device && From 63aeb11d7e4633dc0925faab84bacee54a925d4c Mon Sep 17 00:00:00 2001 From: Scott Shawcroft Date: Tue, 4 Jun 2024 12:16:08 -0700 Subject: [PATCH 122/227] Improve ESP BLE and turn on BLE workflow The BLE workflow will broadcast publicly when the web workflow isn't activated. --- .gitmodules | 2 +- locale/circuitpython.pot | 12 ++- main.c | 10 +- ports/espressif/Makefile | 2 + .../mpconfigboard.h | 4 +- ports/espressif/common-hal/_bleio/Adapter.c | 97 ++++++++++++++----- .../common-hal/_bleio/Characteristic.c | 24 ++++- .../espressif/common-hal/_bleio/Connection.c | 8 +- .../common-hal/_bleio/PacketBuffer.c | 2 +- .../common-hal/_bleio/PacketBuffer.h | 3 + ports/espressif/common-hal/_bleio/__init__.c | 28 +++++- ports/espressif/common-hal/_bleio/__init__.h | 6 +- ports/espressif/esp-idf | 2 +- ports/espressif/mpconfigport.mk | 3 + ports/nordic/common-hal/_bleio/Adapter.h | 2 + ports/nordic/common-hal/_bleio/PacketBuffer.c | 2 +- ports/nordic/common-hal/_bleio/PacketBuffer.h | 4 + shared-bindings/_bleio/Adapter.h | 1 + shared-bindings/_bleio/PacketBuffer.h | 9 +- shared-bindings/_bleio/__init__.c | 1 + shared-bindings/_bleio/__init__.h | 4 + supervisor/shared/bluetooth/bluetooth.c | 44 ++++++--- supervisor/shared/bluetooth/file_transfer.c | 17 ++-- supervisor/shared/bluetooth/serial.c | 21 ++-- supervisor/shared/safe_mode.c | 15 +-- 25 files changed, 242 insertions(+), 81 deletions(-) diff --git a/.gitmodules b/.gitmodules index b0a12ffe205e..510991a5a391 100644 --- a/.gitmodules +++ b/.gitmodules @@ -143,7 +143,7 @@ [submodule "ports/espressif/esp-idf"] path = ports/espressif/esp-idf url = https://github.com/adafruit/esp-idf.git - branch = circuitpython-v5.1.3 + branch = circuitpython-v5.2.2 [submodule "ports/espressif/esp-protocols"] path = ports/espressif/esp-protocols url = https://github.com/espressif/esp-protocols.git diff --git a/locale/circuitpython.pot b/locale/circuitpython.pot index 0e3878bc3d8c..feb9457088c6 100644 --- a/locale/circuitpython.pot +++ b/locale/circuitpython.pot @@ -113,7 +113,7 @@ msgstr "" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #: ports/raspberrypi/common-hal/usb_host/Port.c #: shared-bindings/digitalio/DigitalInOut.c -#: shared-bindings/microcontroller/Pin.c +#: shared-bindings/microcontroller/Pin.c shared-module/max3421e/Max3421E.c msgid "%q in use" msgstr "" @@ -1114,10 +1114,12 @@ msgstr "" msgid "Input/output error" msgstr "" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient authentication" msgstr "" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient encryption" msgstr "" @@ -1154,6 +1156,7 @@ 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/max3421e/Max3421E.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 @@ -1285,6 +1288,10 @@ msgstr "" msgid "MAC address was invalid" msgstr "" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "MITM security not supported" +msgstr "" + #: shared-bindings/is31fl3741/IS31FL3741.c msgid "Mapping must be a tuple" msgstr "" @@ -2139,6 +2146,7 @@ msgstr "" msgid "Unknown BLE error: %d" msgstr "" +#: ports/espressif/common-hal/max3421e/Max3421E.c #: ports/raspberrypi/common-hal/wifi/__init__.c #, c-format msgid "Unknown error code %d" @@ -3810,7 +3818,7 @@ msgstr "" msgid "pop from empty %q" msgstr "" -#: shared-bindings/socketpool/Socket.c shared-bindings/ssl/SSLSocket.c +#: shared-bindings/socketpool/Socket.c msgid "port must be >= 0" msgstr "" diff --git a/main.c b/main.c index 3988bc9e7dc0..a463fbe4afe6 100644 --- a/main.c +++ b/main.c @@ -1006,10 +1006,6 @@ int __attribute__((used)) main(void) { supervisor_status_bar_init(); #endif - #if CIRCUITPY_BLEIO - // Early init so that a reset press can cause BLE public advertising. - supervisor_bluetooth_init(); - #endif #if !INTERNAL_FLASH_FILESYSTEM // Set up anything that might need to get done before we try to use SPI flash @@ -1027,6 +1023,12 @@ int __attribute__((used)) main(void) { set_safe_mode(SAFE_MODE_NO_CIRCUITPY); } + #if CIRCUITPY_BLEIO + // Early init so that a reset press can cause BLE public advertising. Need the filesystem to + // read settings.toml. + supervisor_bluetooth_init(); + #endif + #if CIRCUITPY_ALARM // Record which alarm woke us up, if any. // common_hal_alarm_record_wake_alarm() should return a static, non-heap object diff --git a/ports/espressif/Makefile b/ports/espressif/Makefile index 17641f683a79..629376add113 100644 --- a/ports/espressif/Makefile +++ b/ports/espressif/Makefile @@ -229,11 +229,13 @@ LDFLAGS += \ -Tesp32c6.rom.newlib.ld \ -Tesp32c6.rom.coexist.ld \ -Tesp32c6.rom.heap.ld \ + -Tesp32c6.rom.systimer.ld \ -Tesp32c6.rom.wdt.ld else ifeq ($(IDF_TARGET),esp32h2) LDFLAGS += \ -Tesp32h2.rom.heap.ld \ -Tesp32h2.rom.newlib.ld \ + -Tesp32h2.rom.systimer.ld \ -Tesp32h2.rom.wdt.ld else ifeq ($(IDF_TARGET),esp32s2) LDFLAGS += \ diff --git a/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/mpconfigboard.h b/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/mpconfigboard.h index c3d168ac16d2..969bf468574f 100644 --- a/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/mpconfigboard.h @@ -11,7 +11,9 @@ #define MICROPY_HW_BOARD_NAME "Adafruit Feather ESP32-C6 4MB Flash No PSRAM" #define MICROPY_HW_MCU_NAME "ESP32C6" -#define MICROPY_HW_NEOPIXEL (&pin_GPIO9) +// Don't use the neopixel for status because we can't use it at the same time as +// the boot button. +// #define MICROPY_HW_NEOPIXEL (&pin_GPIO9) #define MICROPY_HW_LED_STATUS (&pin_GPIO15) diff --git a/ports/espressif/common-hal/_bleio/Adapter.c b/ports/espressif/common-hal/_bleio/Adapter.c index 3c08f28ea4da..e3a7a77a87b9 100644 --- a/ports/espressif/common-hal/_bleio/Adapter.c +++ b/ports/espressif/common-hal/_bleio/Adapter.c @@ -39,6 +39,7 @@ #include "common-hal/_bleio/Connection.h" #include "esp_bt.h" +#include "esp_mac.h" #include "esp_nimble_hci.h" #include "nvs_flash.h" @@ -48,11 +49,6 @@ bleio_connection_internal_t bleio_connections[BLEIO_TOTAL_CONNECTION_COUNT]; -// static void bluetooth_adapter_background(void *data) { -// supervisor_bluetooth_background(); -// bleio_background(); -// } - bool ble_active = false; static void nimble_host_task(void *param) { @@ -63,7 +59,7 @@ static void nimble_host_task(void *param) { static TaskHandle_t cp_task = NULL; static void _on_sync(void) { - int rc = ble_hs_util_ensure_addr(0); + int rc = ble_hs_util_ensure_addr(false); assert(rc == 0); xTaskNotifyGive(cp_task); @@ -72,6 +68,8 @@ static void _on_sync(void) { // All examples have this. It'd make sense in a header. void ble_store_config_init(void); +char default_ble_name[] = { 'C', 'I', 'R', 'C', 'U', 'I', 'T', 'P', 'Y', 0, 0, 0, 0, 0, 0, 0}; + void common_hal_bleio_adapter_set_enabled(bleio_adapter_obj_t *self, bool enabled) { const bool is_enabled = common_hal_bleio_adapter_get_enabled(self); @@ -81,15 +79,6 @@ void common_hal_bleio_adapter_set_enabled(bleio_adapter_obj_t *self, bool enable } if (enabled) { - esp_err_t err = nvs_flash_init(); - if (err == ESP_ERR_NVS_NO_FREE_PAGES || err == ESP_ERR_NVS_NEW_VERSION_FOUND) { - // NVS partition was truncated and needs to be erased - // Retry nvs_flash_init - ESP_ERROR_CHECK(nvs_flash_erase()); - err = nvs_flash_init(); - } - ESP_ERROR_CHECK(err); - CHECK_ESP_RESULT(nimble_port_init()); // ble_hs_cfg.reset_cb = blecent_on_reset; @@ -104,8 +93,8 @@ void common_hal_bleio_adapter_set_enabled(bleio_adapter_obj_t *self, bool enable ble_hs_cfg.sm_our_key_dist |= BLE_SM_PAIR_KEY_DIST_ENC; ble_hs_cfg.sm_their_key_dist |= BLE_SM_PAIR_KEY_DIST_ENC; - ble_hs_cfg.sm_mitm = 1; - ble_hs_cfg.sm_sc = 1; + ble_hs_cfg.sm_mitm = 0; + ble_hs_cfg.sm_sc = 0; /* Stores the IRK */ ble_hs_cfg.sm_our_key_dist |= BLE_SM_PAIR_KEY_DIST_ID; ble_hs_cfg.sm_their_key_dist |= BLE_SM_PAIR_KEY_DIST_ID; @@ -122,7 +111,17 @@ void common_hal_bleio_adapter_set_enabled(bleio_adapter_obj_t *self, bool enable } else #endif { - ble_svc_gap_device_name_set("CIRCUITPY"); + uint8_t mac[6]; + esp_read_mac(mac, ESP_MAC_BT); + mp_int_t len = sizeof(default_ble_name) - 1; + default_ble_name[len - 6] = nibble_to_hex_lower[mac[3] >> 4 & 0xf]; + default_ble_name[len - 5] = nibble_to_hex_lower[mac[3] & 0xf]; + default_ble_name[len - 4] = nibble_to_hex_lower[mac[4] >> 4 & 0xf]; + default_ble_name[len - 3] = nibble_to_hex_lower[mac[4] & 0xf]; + default_ble_name[len - 2] = nibble_to_hex_lower[mac[5] >> 4 & 0xf]; + default_ble_name[len - 1] = nibble_to_hex_lower[mac[5] & 0xf]; + default_ble_name[len] = '\0'; // for now we add null for compatibility with C ASCIIZ strings + ble_svc_gap_device_name_set(default_ble_name); } // Clear all of the internal connection objects. @@ -180,6 +179,14 @@ bool common_hal_bleio_adapter_set_address(bleio_adapter_obj_t *self, bleio_addre return result == 0; } +uint16_t bleio_adapter_get_name(char *buf, uint16_t len) { + const char *name = ble_svc_gap_device_name(); + uint16_t full_len = strlen(name); + memcpy(buf, name, MIN(full_len, len)); + + return full_len; +} + mp_obj_str_t *common_hal_bleio_adapter_get_name(bleio_adapter_obj_t *self) { const char *name = ble_svc_gap_device_name(); @@ -487,6 +494,7 @@ static int _advertising_event(struct ble_gap_event *event, void *self_in) { #endif break; } + background_callback_add_core(&bleio_background_callback); return 0; } @@ -499,6 +507,8 @@ uint32_t _common_hal_bleio_adapter_start_advertising(bleio_adapter_obj_t *self, if (ble_gap_adv_active() && !self->user_advertising) { return BLE_HS_EBUSY; } + // Override anonymous because it isn't working with the ESP-IDF. + anonymous = false; uint32_t rc; @@ -521,12 +531,19 @@ uint32_t _common_hal_bleio_adapter_start_advertising(bleio_adapter_obj_t *self, bool extended = advertising_data_len > BLE_ADV_LEGACY_DATA_MAX_LEN || scan_response_data_len > BLE_ADV_LEGACY_DATA_MAX_LEN; + bool scannable = scan_response_data_len > 0; + bool legacy_pdu = !extended && !anonymous; + if (legacy_pdu && connectable) { + // Connectable legacy advertisements are always scannable too. + scannable = true; + } + struct ble_gap_ext_adv_params adv_params = { .connectable = connectable, - .scannable = scan_response_data_len > 0, + .scannable = scannable, .directed = directed_to != NULL, .high_duty_directed = high_duty_directed, - .legacy_pdu = !extended, + .legacy_pdu = legacy_pdu, .anonymous = anonymous, .include_tx_power = extended, .scan_req_notif = false, @@ -712,14 +729,46 @@ mp_obj_t common_hal_bleio_adapter_get_connections(bleio_adapter_obj_t *self) { return self->connection_objs; } +#define NIMBLE_NVS_PEER_SEC_KEY "peer_sec" +#define NIMBLE_NVS_OUR_SEC_KEY "our_sec" +#define NIMBLE_NVS_CCCD_SEC_KEY "cccd_sec" +#define NIMBLE_NVS_PEER_RECORDS_KEY "p_dev_rec" +#define NIMBLE_NVS_NAMESPACE "nimble_bond" + +// Implement bonding control ourselves when the adapter isn't enabled so that it +// can run when BLE is off. void common_hal_bleio_adapter_erase_bonding(bleio_adapter_obj_t *self) { - ble_store_clear(); + if (common_hal_bleio_adapter_get_enabled(self)) { + ble_store_clear(); + } else { + nvs_handle_t nimble_handle; + esp_err_t err = nvs_open(NIMBLE_NVS_NAMESPACE, NVS_READWRITE, &nimble_handle); + if (err != ESP_OK) { + return; + } + nvs_erase_all(nimble_handle); + nvs_commit(nimble_handle); + nvs_close(nimble_handle); + } } bool common_hal_bleio_adapter_is_bonded_to_central(bleio_adapter_obj_t *self) { - int count; - ble_store_util_count(BLE_STORE_OBJ_TYPE_PEER_SEC, &count); - return count > 0; + if (common_hal_bleio_adapter_get_enabled(self)) { + int count; + ble_store_util_count(BLE_STORE_OBJ_TYPE_PEER_SEC, &count); + return count > 0; + } + nvs_handle_t nimble_handle; + esp_err_t err = nvs_open(NIMBLE_NVS_NAMESPACE, NVS_READONLY, &nimble_handle); + if (err != ESP_OK) { + return false; + } + err = nvs_find_key(nimble_handle, "peer_sec_1", NULL); + nvs_close(nimble_handle); + if (err == ESP_OK) { + return true; + } + return false; } void bleio_adapter_gc_collect(bleio_adapter_obj_t *adapter) { diff --git a/ports/espressif/common-hal/_bleio/Characteristic.c b/ports/espressif/common-hal/_bleio/Characteristic.c index 4df80a53d991..a095add66736 100644 --- a/ports/espressif/common-hal/_bleio/Characteristic.c +++ b/ports/espressif/common-hal/_bleio/Characteristic.c @@ -17,7 +17,6 @@ #include "common-hal/_bleio/Adapter.h" #include "common-hal/_bleio/Service.h" -// #include "common-hal/_bleio/bonding.h" static int characteristic_on_ble_gap_evt(struct ble_gap_event *event, void *param); @@ -57,6 +56,22 @@ void common_hal_bleio_characteristic_construct(bleio_characteristic_obj_t *self, if ((props & CHAR_PROP_WRITE_NO_RESPONSE) != 0) { self->flags |= BLE_GATT_CHR_F_WRITE_NO_RSP; } + if (read_perm == SECURITY_MODE_ENC_WITH_MITM || write_perm == SECURITY_MODE_ENC_WITH_MITM || + read_perm == SECURITY_MODE_SIGNED_WITH_MITM || write_perm == SECURITY_MODE_SIGNED_WITH_MITM) { + mp_raise_NotImplementedError(MP_ERROR_TEXT("MITM security not supported")); + } + if (read_perm == SECURITY_MODE_ENC_NO_MITM) { + self->flags |= BLE_GATT_CHR_F_READ_ENC; + } + if (read_perm == SECURITY_MODE_SIGNED_NO_MITM) { + self->flags |= BLE_GATT_CHR_F_READ_AUTHEN; + } + if (write_perm == SECURITY_MODE_ENC_NO_MITM) { + self->flags |= BLE_GATT_CHR_F_WRITE_ENC; + } + if (write_perm == SECURITY_MODE_SIGNED_NO_MITM) { + self->flags |= BLE_GATT_CHR_F_WRITE_AUTHEN; + } if (initial_value_bufinfo != NULL) { // Copy the initial value if it's on the heap. Otherwise it's internal and we may not be able @@ -72,6 +87,12 @@ void common_hal_bleio_characteristic_construct(bleio_characteristic_obj_t *self, self->current_value = initial_value_bufinfo->buf; assert(self->current_value_len == max_length); } + } else { + self->current_value = port_malloc(max_length, false); + if (self->current_value != NULL) { + self->current_value_alloc = max_length; + self->current_value_len = 0; + } } if (gc_alloc_possible()) { @@ -294,6 +315,7 @@ int bleio_characteristic_access_cb(uint16_t conn_handle, uint16_t attr_handle, bleio_packet_buffer_extend(MP_OBJ_FROM_PTR(self->observer), conn_handle, self->current_value, self->current_value_len); } } + background_callback_add_core(&bleio_background_callback); return rc; } return BLE_ATT_ERR_UNLIKELY; diff --git a/ports/espressif/common-hal/_bleio/Connection.c b/ports/espressif/common-hal/_bleio/Connection.c index ea30b1865f59..5957cd5edcf6 100644 --- a/ports/espressif/common-hal/_bleio/Connection.c +++ b/ports/espressif/common-hal/_bleio/Connection.c @@ -91,14 +91,18 @@ int bleio_connection_event_cb(struct ble_gap_event *event, void *connection_in) case BLE_GAP_EVENT_NOTIFY_TX: MP_FALLTHROUGH; case BLE_GAP_EVENT_SUBSCRIBE: - return ble_event_run_handlers(event); + int status = ble_event_run_handlers(event); + background_callback_add_core(&bleio_background_callback); + return status; default: #if CIRCUITPY_VERBOSE_BLE mp_printf(&mp_plat_print, "Unhandled connection event: %d\n", event->type); #endif - return 0; + break; } + + background_callback_add_core(&bleio_background_callback); return 0; } diff --git a/ports/espressif/common-hal/_bleio/PacketBuffer.c b/ports/espressif/common-hal/_bleio/PacketBuffer.c index e6886811966d..28b86305be5d 100644 --- a/ports/espressif/common-hal/_bleio/PacketBuffer.c +++ b/ports/espressif/common-hal/_bleio/PacketBuffer.c @@ -157,7 +157,7 @@ void _common_hal_bleio_packet_buffer_construct( bleio_packet_buffer_obj_t *self, bleio_characteristic_obj_t *characteristic, uint32_t *incoming_buffer, size_t incoming_buffer_size, uint32_t *outgoing_buffer1, uint32_t *outgoing_buffer2, size_t max_packet_size, - void *static_handler_entry) { + ble_event_handler_t *static_handler_entry) { self->characteristic = characteristic; self->client = self->characteristic->service->is_remote; self->max_packet_size = max_packet_size; diff --git a/ports/espressif/common-hal/_bleio/PacketBuffer.h b/ports/espressif/common-hal/_bleio/PacketBuffer.h index e17a6c742521..0ab084c5b017 100644 --- a/ports/espressif/common-hal/_bleio/PacketBuffer.h +++ b/ports/espressif/common-hal/_bleio/PacketBuffer.h @@ -8,6 +8,7 @@ #include "py/ringbuf.h" #include "shared-bindings/_bleio/Characteristic.h" +#include "common-hal/_bleio/ble_events.h" typedef struct { mp_obj_base_t base; @@ -28,4 +29,6 @@ typedef struct { bool packet_queued; } bleio_packet_buffer_obj_t; +typedef ble_event_handler_entry_t ble_event_handler_t; + void bleio_packet_buffer_extend(bleio_packet_buffer_obj_t *self, uint16_t conn_handle, const uint8_t *buffer, size_t len); diff --git a/ports/espressif/common-hal/_bleio/__init__.c b/ports/espressif/common-hal/_bleio/__init__.c index 0d99a97c23c4..f3f59c685e13 100644 --- a/ports/espressif/common-hal/_bleio/__init__.c +++ b/ports/espressif/common-hal/_bleio/__init__.c @@ -19,9 +19,13 @@ #include "supervisor/shared/bluetooth/bluetooth.h" #include "common-hal/_bleio/__init__.h" -// #include "common-hal/_bleio/bonding.h" #include "common-hal/_bleio/ble_events.h" +#include "nvs_flash.h" + + +background_callback_t bleio_background_callback; + void bleio_user_reset() { // Stop any user scanning or advertising. common_hal_bleio_adapter_stop_scan(&common_hal_bleio_adapter_obj); @@ -36,7 +40,6 @@ void bleio_user_reset() { // Turn off BLE on a reset or reload. void bleio_reset() { // Set this explicitly to save data. - common_hal_bleio_adapter_obj.base.type = &bleio_adapter_type; if (!common_hal_bleio_adapter_get_enabled(&common_hal_bleio_adapter_obj)) { return; } @@ -52,7 +55,26 @@ void bleio_reset() { // It currently only has properties and no state. Inited by bleio_reset bleio_adapter_obj_t common_hal_bleio_adapter_obj; -void bleio_background(void) { +void bleio_background(void *data) { + (void)data; + supervisor_bluetooth_background(); +} + +void common_hal_bleio_init(void) { + common_hal_bleio_adapter_obj.base.type = &bleio_adapter_type; + + esp_err_t err = nvs_flash_init(); + if (err == ESP_ERR_NVS_NO_FREE_PAGES || err == ESP_ERR_NVS_NEW_VERSION_FOUND) { + // NVS partition was truncated and needs to be erased + // Retry nvs_flash_init + ESP_ERROR_CHECK(nvs_flash_erase()); + err = nvs_flash_init(); + } + ESP_ERROR_CHECK(err); + + + bleio_background_callback.fun = bleio_background; + bleio_background_callback.data = NULL; } void common_hal_bleio_gc_collect(void) { diff --git a/ports/espressif/common-hal/_bleio/__init__.h b/ports/espressif/common-hal/_bleio/__init__.h index 146281a9f8dc..1852bd870a6d 100644 --- a/ports/espressif/common-hal/_bleio/__init__.h +++ b/ports/espressif/common-hal/_bleio/__init__.h @@ -6,9 +6,13 @@ #pragma once +#include "supervisor/background_callback.h" + #include "freertos/FreeRTOS.h" // IWYU pragma: keep; for BaseType_t -void bleio_background(void); +void bleio_background(void *data); + +extern background_callback_t bleio_background_callback; // typedef struct { // ble_gap_enc_key_t own_enc; diff --git a/ports/espressif/esp-idf b/ports/espressif/esp-idf index 0b28b79fafa7..d58f9ce0b479 160000 --- a/ports/espressif/esp-idf +++ b/ports/espressif/esp-idf @@ -1 +1 @@ -Subproject commit 0b28b79fafa75d36348d84d9eaccdbcd73220571 +Subproject commit d58f9ce0b4799e63490917b7bfc1300a10bc1f43 diff --git a/ports/espressif/mpconfigport.mk b/ports/espressif/mpconfigport.mk index f9d0260acb8f..95ff29fc1e23 100644 --- a/ports/espressif/mpconfigport.mk +++ b/ports/espressif/mpconfigport.mk @@ -201,6 +201,9 @@ CIRCUITPY_GIFIO ?= $(CIRCUITPY_DISPLAYIO) CIRCUITPY_JPEGIO ?= $(CIRCUITPY_DISPLAYIO) CIRCUITPY_QRIO ?= $(CIRCUITPY_ESPCAMERA) +CIRCUITPY_BLE_FILE_SERVICE ?= $(CIRCUITPY_BLEIO) +CIRCUITPY_SERIAL_BLE ?= $(CIRCUITPY_BLEIO) + # Features dependent on other features ifneq ($(CIRCUITPY_USB_DEVICE),0) CIRCUITPY_BUILD_EXTENSIONS ?= bin,uf2 diff --git a/ports/nordic/common-hal/_bleio/Adapter.h b/ports/nordic/common-hal/_bleio/Adapter.h index 5a4a147d32a7..5bc1805d0727 100644 --- a/ports/nordic/common-hal/_bleio/Adapter.h +++ b/ports/nordic/common-hal/_bleio/Adapter.h @@ -20,6 +20,8 @@ #define BLEIO_TOTAL_CONNECTION_COUNT 5 #endif +#define BLEIO_HANDLE_INVALID BLE_CONN_HANDLE_INVALID + extern bleio_connection_internal_t bleio_connections[BLEIO_TOTAL_CONNECTION_COUNT]; typedef struct { diff --git a/ports/nordic/common-hal/_bleio/PacketBuffer.c b/ports/nordic/common-hal/_bleio/PacketBuffer.c index 3e0a0a56a4f8..f3058f6c23d9 100644 --- a/ports/nordic/common-hal/_bleio/PacketBuffer.c +++ b/ports/nordic/common-hal/_bleio/PacketBuffer.c @@ -194,7 +194,7 @@ void _common_hal_bleio_packet_buffer_construct( bleio_packet_buffer_obj_t *self, bleio_characteristic_obj_t *characteristic, uint32_t *incoming_buffer, size_t incoming_buffer_size, uint32_t *outgoing_buffer1, uint32_t *outgoing_buffer2, size_t max_packet_size, - void *static_handler_entry) { + ble_event_handler_t *static_handler_entry) { self->characteristic = characteristic; self->client = self->characteristic->service->is_remote; diff --git a/ports/nordic/common-hal/_bleio/PacketBuffer.h b/ports/nordic/common-hal/_bleio/PacketBuffer.h index c55efd0293b6..a8573b048fa7 100644 --- a/ports/nordic/common-hal/_bleio/PacketBuffer.h +++ b/ports/nordic/common-hal/_bleio/PacketBuffer.h @@ -11,6 +11,8 @@ #include "py/ringbuf.h" #include "shared-bindings/_bleio/Characteristic.h" +#include "bluetooth/ble_drv.h" + typedef struct { mp_obj_base_t base; bleio_characteristic_obj_t *characteristic; @@ -29,3 +31,5 @@ typedef struct { bool client; bool packet_queued; } bleio_packet_buffer_obj_t; + +typedef ble_drv_evt_handler_entry_t ble_event_handler_t; diff --git a/shared-bindings/_bleio/Adapter.h b/shared-bindings/_bleio/Adapter.h index c6b7aeefc960..0bc6f051ff3f 100644 --- a/shared-bindings/_bleio/Adapter.h +++ b/shared-bindings/_bleio/Adapter.h @@ -35,6 +35,7 @@ uint16_t bleio_adapter_get_name(char *buf, uint16_t len); extern mp_obj_str_t *common_hal_bleio_adapter_get_name(bleio_adapter_obj_t *self); extern void common_hal_bleio_adapter_set_name(bleio_adapter_obj_t *self, const char *name); +// Returns 0 if ok, otherwise a BLE stack specific error code. extern uint32_t _common_hal_bleio_adapter_start_advertising(bleio_adapter_obj_t *self, bool connectable, bool anonymous, uint32_t timeout, float interval, const uint8_t *advertising_data, uint16_t advertising_data_len, diff --git a/shared-bindings/_bleio/PacketBuffer.h b/shared-bindings/_bleio/PacketBuffer.h index 25d7127a67ec..99b86a944962 100644 --- a/shared-bindings/_bleio/PacketBuffer.h +++ b/shared-bindings/_bleio/PacketBuffer.h @@ -10,6 +10,13 @@ extern const mp_obj_type_t bleio_packet_buffer_type; +// Maximum size of a packet. +#ifdef BLE_GATTS_VAR_ATTR_LEN_MAX +#define BLEIO_PACKET_BUFFER_MAX_PACKET_SIZE BLE_GATTS_VAR_ATTR_LEN_MAX +#else +#define BLEIO_PACKET_BUFFER_MAX_PACKET_SIZE 512 +#endif + void common_hal_bleio_packet_buffer_construct( bleio_packet_buffer_obj_t *self, bleio_characteristic_obj_t *characteristic, size_t buffer_size, size_t max_packet_size); @@ -18,7 +25,7 @@ void _common_hal_bleio_packet_buffer_construct( bleio_packet_buffer_obj_t *self, bleio_characteristic_obj_t *characteristic, uint32_t *incoming_buffer, size_t incoming_buffer_size, uint32_t *outgoing_buffer1, uint32_t *outgoing_buffer2, size_t outgoing_buffer_size, - void *static_handler_entry); + ble_event_handler_t *static_handler_entry); mp_int_t common_hal_bleio_packet_buffer_write(bleio_packet_buffer_obj_t *self, const uint8_t *data, size_t len, uint8_t *header, size_t header_len); mp_int_t common_hal_bleio_packet_buffer_readinto(bleio_packet_buffer_obj_t *self, uint8_t *data, size_t len); mp_int_t common_hal_bleio_packet_buffer_get_incoming_packet_length(bleio_packet_buffer_obj_t *self); diff --git a/shared-bindings/_bleio/__init__.c b/shared-bindings/_bleio/__init__.c index 2643a59618a6..c0cd439f7d92 100644 --- a/shared-bindings/_bleio/__init__.c +++ b/shared-bindings/_bleio/__init__.c @@ -82,6 +82,7 @@ NORETURN void mp_raise_bleio_SecurityError(mp_rom_error_text_t fmt, ...) { // Called when _bleio is imported. static mp_obj_t bleio___init__(void) { // HCI cannot be enabled on import, because we need to setup the HCI adapter first. + common_hal_bleio_init(); #if !CIRCUITPY_BLEIO_HCI common_hal_bleio_adapter_set_enabled(&common_hal_bleio_adapter_obj, true); #endif diff --git a/shared-bindings/_bleio/__init__.h b/shared-bindings/_bleio/__init__.h index 0feb538d81d8..faf11ea1d063 100644 --- a/shared-bindings/_bleio/__init__.h +++ b/shared-bindings/_bleio/__init__.h @@ -39,6 +39,10 @@ void bleio_user_reset(void); // Completely resets the BLE stack including BLE connections. void bleio_reset(void); +// Init any state needed before calling any bleio functions including those +// having to do with bonding. This doesn't enable the BLE adapter though. +void common_hal_bleio_init(void); + extern mp_obj_t bleio_set_adapter(mp_obj_t adapter_obj); NORETURN void mp_raise_bleio_BluetoothError(mp_rom_error_text_t msg, ...); diff --git a/supervisor/shared/bluetooth/bluetooth.c b/supervisor/shared/bluetooth/bluetooth.c index b1b116b9c01f..877fbc6ef262 100644 --- a/supervisor/shared/bluetooth/bluetooth.c +++ b/supervisor/shared/bluetooth/bluetooth.c @@ -12,6 +12,7 @@ #include "shared-bindings/_bleio/Adapter.h" #if defined(CIRCUITPY_BOOT_BUTTON) #include "shared-bindings/digitalio/DigitalInOut.h" +#include "shared-bindings/time/__init__.h" #endif #include "shared-bindings/microcontroller/Processor.h" #include "shared-bindings/microcontroller/ResetReason.h" @@ -28,18 +29,21 @@ #if CIRCUITPY_BLE_FILE_SERVICE #include "supervisor/shared/bluetooth/file_transfer.h" -#include "bluetooth/ble_drv.h" #endif #if CIRCUITPY_SERIAL_BLE #include "supervisor/shared/bluetooth/serial.h" -#include "bluetooth/ble_drv.h" #endif #if CIRCUITPY_STATUS_BAR #include "supervisor/shared/status_bar.h" #endif +#if CIRCUITPY_WEB_WORKFLOW && CIRCUITPY_WIFI && CIRCUITPY_OS_GETENV +#include "shared-module/os/__init__.h" +#endif + + // This standard advertisement advertises the CircuitPython editing service and a CIRCUITPY short name. const uint8_t public_advertising_data[] = { 0x02, 0x01, 0x06, // 0-2 Flags 0x02, 0x0a, 0xec, // 3-5 TX power level -20 @@ -138,7 +142,7 @@ static void supervisor_bluetooth_start_advertising(void) { _private_advertising = true; // Advertise with less power when doing so publicly to reduce who can hear us. This will make it // harder for someone with bad intentions to pair from a distance. - if (!bonded || boot_in_discovery_mode) { + if (!bonded && boot_in_discovery_mode) { tx_power = -20; adv = public_advertising_data; adv_len = sizeof(public_advertising_data); @@ -169,7 +173,7 @@ static void supervisor_bluetooth_start_advertising(void) { tx_power, NULL); // This may fail if we are already advertising. - advertising = status == NRF_SUCCESS; + advertising = status == 0; } #endif // CIRCUITPY_BLE_FILE_SERVICE || CIRCUITPY_SERIAL_BLE @@ -193,26 +197,18 @@ void supervisor_bluetooth_init(void) { return; } + common_hal_bleio_init(); if (ble_mode == 0) { port_set_saved_word(BLE_DISCOVERY_DATA_GUARD | (0x01 << 8)); } // Wait for a while to allow for reset. - #ifdef CIRCUITPY_BOOT_BUTTON - digitalio_digitalinout_obj_t boot_button; - common_hal_digitalio_digitalinout_construct(&boot_button, CIRCUITPY_BOOT_BUTTON); - common_hal_digitalio_digitalinout_switch_to_input(&boot_button, PULL_UP); - #endif #if CIRCUITPY_STATUS_LED status_led_init(); #endif uint64_t start_ticks = supervisor_ticks_ms64(); uint64_t diff = 0; if (ble_mode != 0) { - #ifdef CIRCUITPY_STATUS_LED - new_status_color(0x0000ff); - #endif - common_hal_bleio_adapter_erase_bonding(&common_hal_bleio_adapter_obj); boot_in_discovery_mode = true; reset_state = 0x0; } @@ -221,7 +217,14 @@ void supervisor_bluetooth_init(void) { // Checking here allows us to have the status LED solidly on even if no button was // pressed. bool bonded = common_hal_bleio_adapter_is_bonded_to_central(&common_hal_bleio_adapter_obj); - if (!bonded) { + bool wifi_workflow_active = false; + #if CIRCUITPY_WEB_WORKFLOW && CIRCUITPY_WIFI && CIRCUITPY_OS_GETENV + char _api_password[64]; + const size_t api_password_len = sizeof(_api_password) - 1; + os_getenv_err_t result = common_hal_os_getenv_str("CIRCUITPY_WEB_API_PASSWORD", _api_password + 1, api_password_len); + wifi_workflow_active = result == GETENV_OK; + #endif + if (!bonded && !wifi_workflow_active) { boot_in_discovery_mode = true; } #endif @@ -235,14 +238,23 @@ void supervisor_bluetooth_init(void) { new_status_color(BLACK); } #endif + // Init the boot button every time in case it is used for LEDs. #ifdef CIRCUITPY_BOOT_BUTTON - if (!common_hal_digitalio_digitalinout_get_value(&boot_button)) { + digitalio_digitalinout_obj_t boot_button; + common_hal_digitalio_digitalinout_construct(&boot_button, CIRCUITPY_BOOT_BUTTON); + common_hal_digitalio_digitalinout_switch_to_input(&boot_button, PULL_UP); + common_hal_time_delay_ms(1); + bool button_pressed = !common_hal_digitalio_digitalinout_get_value(&boot_button); + common_hal_digitalio_digitalinout_deinit(&boot_button); + if (button_pressed) { boot_in_discovery_mode = true; - break; } #endif diff = supervisor_ticks_ms64() - start_ticks; } + if (boot_in_discovery_mode) { + common_hal_bleio_adapter_erase_bonding(&common_hal_bleio_adapter_obj); + } #if CIRCUITPY_STATUS_LED new_status_color(BLACK); status_led_deinit(); diff --git a/supervisor/shared/bluetooth/file_transfer.c b/supervisor/shared/bluetooth/file_transfer.c index de21d7e71e95..aa49c0a899a8 100644 --- a/supervisor/shared/bluetooth/file_transfer.c +++ b/supervisor/shared/bluetooth/file_transfer.c @@ -14,8 +14,6 @@ #include "shared-bindings/_bleio/Service.h" #include "shared-bindings/_bleio/UUID.h" -#include "bluetooth/ble_drv.h" - #include "supervisor/fatfs.h" #include "supervisor/filesystem.h" #include "supervisor/shared/reload.h" @@ -39,9 +37,9 @@ static mp_obj_t characteristic_list_items[2]; #define PACKET_BUFFER_SIZE (2 * 10 + 512 + 12) // uint32_t so its aligned static uint32_t _buffer[PACKET_BUFFER_SIZE / 4 + 1]; -static uint32_t _outgoing1[BLE_GATTS_VAR_ATTR_LEN_MAX / 4]; -static uint32_t _outgoing2[BLE_GATTS_VAR_ATTR_LEN_MAX / 4]; -static ble_drv_evt_handler_entry_t static_handler_entry; +static uint32_t _outgoing1[BLEIO_PACKET_BUFFER_MAX_PACKET_SIZE / 4]; +static uint32_t _outgoing2[BLEIO_PACKET_BUFFER_MAX_PACKET_SIZE / 4]; +static ble_event_handler_t static_handler_entry; static bleio_packet_buffer_obj_t _transfer_packet_buffer; void supervisor_start_bluetooth_file_transfer(void) { @@ -60,6 +58,7 @@ void supervisor_start_bluetooth_file_transfer(void) { // Version number supervisor_ble_version_uuid.base.type = &bleio_uuid_type; common_hal_bleio_uuid_construct(&supervisor_ble_version_uuid, 0x0100, file_transfer_base_uuid); + supervisor_ble_version_characteristic.base.type = &bleio_characteristic_type; common_hal_bleio_characteristic_construct(&supervisor_ble_version_characteristic, &supervisor_ble_service, 0, // handle (for remote only) @@ -81,6 +80,7 @@ void supervisor_start_bluetooth_file_transfer(void) { // Active filename. supervisor_ble_transfer_uuid.base.type = &bleio_uuid_type; common_hal_bleio_uuid_construct(&supervisor_ble_transfer_uuid, 0x0200, file_transfer_base_uuid); + supervisor_ble_transfer_characteristic.base.type = &bleio_characteristic_type; common_hal_bleio_characteristic_construct(&supervisor_ble_transfer_characteristic, &supervisor_ble_service, 0, // handle (for remote only) @@ -88,15 +88,16 @@ void supervisor_start_bluetooth_file_transfer(void) { CHAR_PROP_READ | CHAR_PROP_WRITE_NO_RESPONSE | CHAR_PROP_NOTIFY, SECURITY_MODE_ENC_NO_MITM, SECURITY_MODE_ENC_NO_MITM, - BLE_GATTS_VAR_ATTR_LEN_MAX, // max length + BLEIO_PACKET_BUFFER_MAX_PACKET_SIZE, // max length false, // fixed length - NULL, // no initial valuen + NULL, // no initial value NULL); + _transfer_packet_buffer.base.type = &bleio_packet_buffer_type; _common_hal_bleio_packet_buffer_construct( &_transfer_packet_buffer, &supervisor_ble_transfer_characteristic, _buffer, PACKET_BUFFER_SIZE, - _outgoing1, _outgoing2, BLE_GATTS_VAR_ATTR_LEN_MAX, + _outgoing1, _outgoing2, BLEIO_PACKET_BUFFER_MAX_PACKET_SIZE, &static_handler_entry); } diff --git a/supervisor/shared/bluetooth/serial.c b/supervisor/shared/bluetooth/serial.c index 179bd23cacfb..1d88736d91ff 100644 --- a/supervisor/shared/bluetooth/serial.c +++ b/supervisor/shared/bluetooth/serial.c @@ -36,10 +36,10 @@ const uint8_t circuitpython_base_uuid[16] = {0x6e, 0x68, 0x74, 0x79, 0x50, 0x74, static mp_obj_list_t characteristic_list; static mp_obj_t characteristic_list_items[3]; -static uint32_t _outgoing1[BLE_GATTS_VAR_ATTR_LEN_MAX / 4]; -static uint32_t _outgoing2[BLE_GATTS_VAR_ATTR_LEN_MAX / 4]; -static ble_drv_evt_handler_entry_t rx_static_handler_entry; -static ble_drv_evt_handler_entry_t tx_static_handler_entry; +static uint32_t _outgoing1[BLEIO_PACKET_BUFFER_MAX_PACKET_SIZE / 4]; +static uint32_t _outgoing2[BLEIO_PACKET_BUFFER_MAX_PACKET_SIZE / 4]; +static ble_event_handler_t rx_static_handler_entry; +static ble_event_handler_t tx_static_handler_entry; static bleio_packet_buffer_obj_t _tx_packet_buffer; static uint32_t _incoming[64]; static bleio_characteristic_buffer_obj_t _rx_buffer; @@ -64,6 +64,7 @@ void supervisor_start_bluetooth_serial(void) { // RX supervisor_ble_circuitpython_rx_uuid.base.type = &bleio_uuid_type; common_hal_bleio_uuid_construct(&supervisor_ble_circuitpython_rx_uuid, 0x0002, circuitpython_base_uuid); + supervisor_ble_circuitpython_rx_characteristic.base.type = &bleio_characteristic_type; common_hal_bleio_characteristic_construct(&supervisor_ble_circuitpython_rx_characteristic, &supervisor_ble_circuitpython_service, 0, // handle (for remote only) @@ -71,7 +72,7 @@ void supervisor_start_bluetooth_serial(void) { CHAR_PROP_WRITE | CHAR_PROP_WRITE_NO_RESPONSE, SECURITY_MODE_NO_ACCESS, SECURITY_MODE_ENC_NO_MITM, - BLE_GATTS_VAR_ATTR_LEN_MAX, // max length + BLEIO_PACKET_BUFFER_MAX_PACKET_SIZE, // max length false, // fixed length NULL, // no initial value NULL); @@ -79,6 +80,7 @@ void supervisor_start_bluetooth_serial(void) { // TX supervisor_ble_circuitpython_tx_uuid.base.type = &bleio_uuid_type; common_hal_bleio_uuid_construct(&supervisor_ble_circuitpython_tx_uuid, 0x0003, circuitpython_base_uuid); + supervisor_ble_circuitpython_tx_characteristic.base.type = &bleio_characteristic_type; common_hal_bleio_characteristic_construct(&supervisor_ble_circuitpython_tx_characteristic, &supervisor_ble_circuitpython_service, 0, // handle (for remote only) @@ -86,7 +88,7 @@ void supervisor_start_bluetooth_serial(void) { CHAR_PROP_NOTIFY, SECURITY_MODE_ENC_NO_MITM, SECURITY_MODE_NO_ACCESS, - BLE_GATTS_VAR_ATTR_LEN_MAX, // max length + BLEIO_PACKET_BUFFER_MAX_PACKET_SIZE, // max length false, // fixed length NULL, // no initial value NULL); @@ -99,6 +101,7 @@ void supervisor_start_bluetooth_serial(void) { supervisor_ble_circuitpython_version_uuid.base.type = &bleio_uuid_type; common_hal_bleio_uuid_construct(&supervisor_ble_circuitpython_version_uuid, 0x0100, circuitpython_base_uuid); + supervisor_ble_circuitpython_version_characteristic.base.type = &bleio_characteristic_type; common_hal_bleio_characteristic_construct(&supervisor_ble_circuitpython_version_characteristic, &supervisor_ble_circuitpython_service, 0, // handle (for remote only) @@ -115,13 +118,15 @@ void supervisor_start_bluetooth_serial(void) { // Use a PacketBuffer to transmit so that we glom characters to transmit // together and save BLE overhead. + _tx_packet_buffer.base.type = &bleio_packet_buffer_type; _common_hal_bleio_packet_buffer_construct( &_tx_packet_buffer, &supervisor_ble_circuitpython_tx_characteristic, NULL, 0, - _outgoing1, _outgoing2, BLE_GATTS_VAR_ATTR_LEN_MAX, + _outgoing1, _outgoing2, BLEIO_PACKET_BUFFER_MAX_PACKET_SIZE, &tx_static_handler_entry); // Use a CharacteristicBuffer for rx so we can read a single character at a time. + _rx_buffer.base.type = &bleio_characteristic_buffer_type; _common_hal_bleio_characteristic_buffer_construct(&_rx_buffer, &supervisor_ble_circuitpython_rx_characteristic, 0.1f, @@ -143,7 +148,7 @@ void supervisor_stop_bluetooth_serial(void) { } bool ble_serial_connected(void) { - return _tx_packet_buffer.conn_handle != BLE_CONN_HANDLE_INVALID; + return _tx_packet_buffer.conn_handle != BLEIO_HANDLE_INVALID; } uint32_t ble_serial_available(void) { diff --git a/supervisor/shared/safe_mode.c b/supervisor/shared/safe_mode.c index 81bcb749143d..30e5a23729ba 100644 --- a/supervisor/shared/safe_mode.c +++ b/supervisor/shared/safe_mode.c @@ -10,6 +10,7 @@ #if defined(CIRCUITPY_BOOT_BUTTON) #include "shared-bindings/digitalio/DigitalInOut.h" +#include "shared-bindings/time/__init__.h" #endif #include "shared-bindings/microcontroller/Processor.h" #include "shared-bindings/microcontroller/ResetReason.h" @@ -64,11 +65,6 @@ safe_mode_t wait_for_safe_mode_reset(void) { #if CIRCUITPY_STATUS_LED status_led_init(); #endif - #ifdef CIRCUITPY_BOOT_BUTTON - digitalio_digitalinout_obj_t boot_button; - common_hal_digitalio_digitalinout_construct(&boot_button, CIRCUITPY_BOOT_BUTTON); - common_hal_digitalio_digitalinout_switch_to_input(&boot_button, PULL_UP); - #endif uint64_t start_ticks = supervisor_ticks_ms64(); uint64_t diff = 0; bool boot_in_safe_mode = false; @@ -82,8 +78,15 @@ safe_mode_t wait_for_safe_mode_reset(void) { new_status_color(BLACK); } #endif + // Init the boot button every time in case it is used for LEDs. #ifdef CIRCUITPY_BOOT_BUTTON - if (!common_hal_digitalio_digitalinout_get_value(&boot_button)) { + digitalio_digitalinout_obj_t boot_button; + common_hal_digitalio_digitalinout_construct(&boot_button, CIRCUITPY_BOOT_BUTTON); + common_hal_digitalio_digitalinout_switch_to_input(&boot_button, PULL_UP); + common_hal_time_delay_ms(1); + bool button_pressed = !common_hal_digitalio_digitalinout_get_value(&boot_button); + common_hal_digitalio_digitalinout_deinit(&boot_button); + if (button_pressed) { boot_in_safe_mode = true; break; } From 2c379c67afb77ce9bf383e1ce9c9194d0d90dba4 Mon Sep 17 00:00:00 2001 From: Matthew <104187183+MatthewJeffson@users.noreply.github.com> Date: Wed, 12 Jun 2024 10:24:34 +0800 Subject: [PATCH 123/227] Add: add seeed_xiao_esp32c6 --- .../boards/seeed_xiao_esp32c6/board.c | 45 +++++++++++++++ .../boards/seeed_xiao_esp32c6/mpconfigboard.h | 22 +++++++ .../seeed_xiao_esp32c6/mpconfigboard.mk | 10 ++++ .../boards/seeed_xiao_esp32c6/pins.c | 57 +++++++++++++++++++ .../boards/seeed_xiao_esp32c6/sdkconfig | 15 +++++ 5 files changed, 149 insertions(+) create mode 100644 ports/espressif/boards/seeed_xiao_esp32c6/board.c create mode 100644 ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h create mode 100644 ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.mk create mode 100644 ports/espressif/boards/seeed_xiao_esp32c6/pins.c create mode 100644 ports/espressif/boards/seeed_xiao_esp32c6/sdkconfig diff --git a/ports/espressif/boards/seeed_xiao_esp32c6/board.c b/ports/espressif/boards/seeed_xiao_esp32c6/board.c new file mode 100644 index 000000000000..6d4bcef26dba --- /dev/null +++ b/ports/espressif/boards/seeed_xiao_esp32c6/board.c @@ -0,0 +1,45 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2024 Dan Halbert for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "supervisor/board.h" +#include "mpconfigboard.h" +#include "shared-bindings/microcontroller/Pin.h" +#include "components/driver/gpio/include/driver/gpio.h" +#include "components/hal/include/hal/gpio_hal.h" +#include "common-hal/microcontroller/Pin.h" + +bool espressif_board_reset_pin_number(gpio_num_t pin_number) { + if (pin_number == 16) { + // Turn on I2C power by default. + gpio_set_direction(pin_number, GPIO_MODE_DEF_OUTPUT); + gpio_set_level(pin_number, true); + return true; + } + + return false; +} + +// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h b/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h new file mode 100644 index 000000000000..5fec7b953f75 --- /dev/null +++ b/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h @@ -0,0 +1,22 @@ +// Micropython setup + +#define MICROPY_HW_BOARD_NAME "Seeed Xiao ESP32-C6 4MB Flash 512KB SRAM" +#define MICROPY_HW_MCU_NAME "ESP32-C6FH4" + +#define MICROPY_HW_LED_STATUS (&pin_GPIO15) + +#define CIRCUITPY_BOARD_I2C (1) +#define CIRCUITPY_BOARD_I2C_PIN {{.scl = &pin_GPIO23, .sda = &pin_GPIO22}} + +#define CIRCUITPY_BOARD_SPI (1) +#define CIRCUITPY_BOARD_SPI_PIN {{.clock = &pin_GPIO19, .mosi = &pin_GPIO18, .miso = &pin_GPIO20}} + +// TXD0 and RXD0 +#define CIRCUITPY_BOARD_UART (1) +#define CIRCUITPY_BOARD_UART_PIN {{.tx = &pin_GPIO16, .rx = &pin_GPIO17}} + +// For entering safe mode, use BOOT button +#define CIRCUITPY_BOOT_BUTTON (&pin_GPIO9) + +// Explanation of how a user got into safe mode +#define BOARD_USER_SAFE_MODE_ACTION MP_ERROR_TEXT("Keep the BOOT button pressed and then connect to the computer via the data cable. Release the BOOT button after connecting to the computer.") diff --git a/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.mk b/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.mk new file mode 100644 index 000000000000..e7ee13c027ac --- /dev/null +++ b/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.mk @@ -0,0 +1,10 @@ +CIRCUITPY_CREATOR_ID = 0x000C2886 +CIRCUITPY_CREATION_ID = 0x00C30002 + +IDF_TARGET = esp32c6 + +CIRCUITPY_ESP_FLASH_MODE = qio +CIRCUITPY_ESP_FLASH_FREQ = 80m +CIRCUITPY_ESP_FLASH_SIZE = 4MB + +CIRCUITPY_ESP_USB_SERIAL_JTAG = 1 diff --git a/ports/espressif/boards/seeed_xiao_esp32c6/pins.c b/ports/espressif/boards/seeed_xiao_esp32c6/pins.c new file mode 100644 index 000000000000..7284f8e1dc7c --- /dev/null +++ b/ports/espressif/boards/seeed_xiao_esp32c6/pins.c @@ -0,0 +1,57 @@ +#include "shared-bindings/board/__init__.h" + +STATIC const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO0) }, + + { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO1) }, + + { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO2) }, + + { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO21) }, + + { MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO22) }, + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO22) }, + + { MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO23) }, + { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO23) }, + + { MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO16) }, + { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO16) }, + + { MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO17) }, + + { MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_GPIO19) }, + { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO19) }, + + { MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO20) }, + { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO20) }, + + { MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO18) }, + + { MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_MTMS), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_LP_UART_RXD), MP_ROM_PTR(&pin_GPIO4) }, + + { MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_MTDI), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_LP_UART_TXD), MP_ROM_PTR(&pin_GPIO5) }, + + { MP_ROM_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_MTCK), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_LP_I2C_SDA), MP_ROM_PTR(&pin_GPIO6) }, + + { MP_ROM_QSTR(MP_QSTR_MTDO), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_LP_I2C_SCL), MP_ROM_PTR(&pin_GPIO7) }, + + { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, + { MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) }, + { MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) }, +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); diff --git a/ports/espressif/boards/seeed_xiao_esp32c6/sdkconfig b/ports/espressif/boards/seeed_xiao_esp32c6/sdkconfig new file mode 100644 index 000000000000..a69b0b6c770b --- /dev/null +++ b/ports/espressif/boards/seeed_xiao_esp32c6/sdkconfig @@ -0,0 +1,15 @@ +# +# Espressif IoT Development Framework Configuration +# +# +# Component config +# +# +# LWIP +# +CONFIG_LWIP_LOCAL_HOSTNAME="seeed-xiao-esp32c6" +# end of LWIP + +# end of Component config + +# end of Espressif IoT Development Framework Configuration From 4c85b5f02ec60ad5146d63b4e0020432b18b9a5d Mon Sep 17 00:00:00 2001 From: Scott Shawcroft Date: Wed, 12 Jun 2024 11:22:00 -0700 Subject: [PATCH 124/227] Fix other BLE builds --- devices/ble_hci/common-hal/_bleio/__init__.c | 3 +++ ports/nordic/common-hal/_bleio/__init__.c | 3 +++ ports/silabs/common-hal/_bleio/PacketBuffer.c | 2 +- ports/silabs/common-hal/_bleio/PacketBuffer.h | 3 +++ ports/silabs/common-hal/_bleio/__init__.c | 3 +++ shared-bindings/_bleio/PacketBuffer.h | 4 +++- supervisor/shared/bluetooth/serial.c | 3 +++ 7 files changed, 19 insertions(+), 2 deletions(-) diff --git a/devices/ble_hci/common-hal/_bleio/__init__.c b/devices/ble_hci/common-hal/_bleio/__init__.c index 6cdc37f435c3..9663e7069980 100644 --- a/devices/ble_hci/common-hal/_bleio/__init__.c +++ b/devices/ble_hci/common-hal/_bleio/__init__.c @@ -37,6 +37,9 @@ bool vm_used_ble; // } // } +void common_hal_bleio_init(void) { +} + void bleio_user_reset() { // HCI doesn't support the BLE workflow so just do a full reset. bleio_reset(); diff --git a/ports/nordic/common-hal/_bleio/__init__.c b/ports/nordic/common-hal/_bleio/__init__.c index 33e12eb3680f..705bc1453953 100644 --- a/ports/nordic/common-hal/_bleio/__init__.c +++ b/ports/nordic/common-hal/_bleio/__init__.c @@ -74,6 +74,9 @@ void check_sec_status(uint8_t sec_status) { } } +void common_hal_bleio_init(void) { +} + void bleio_user_reset() { // Stop any user scanning or advertising. common_hal_bleio_adapter_stop_scan(&common_hal_bleio_adapter_obj); diff --git a/ports/silabs/common-hal/_bleio/PacketBuffer.c b/ports/silabs/common-hal/_bleio/PacketBuffer.c index 96a7462f6c4e..6cb3e58121cb 100644 --- a/ports/silabs/common-hal/_bleio/PacketBuffer.c +++ b/ports/silabs/common-hal/_bleio/PacketBuffer.c @@ -145,7 +145,7 @@ void _common_hal_bleio_packet_buffer_construct( uint32_t *outgoing_buffer1, uint32_t *outgoing_buffer2, size_t max_packet_size, - void *static_handler_entry) { + ble_event_handler_t static_handler_entry) { bleio_characteristic_properties_t temp_prop; self->characteristic = characteristic; diff --git a/ports/silabs/common-hal/_bleio/PacketBuffer.h b/ports/silabs/common-hal/_bleio/PacketBuffer.h index f79eda6cf3a6..c00db915f946 100644 --- a/ports/silabs/common-hal/_bleio/PacketBuffer.h +++ b/ports/silabs/common-hal/_bleio/PacketBuffer.h @@ -57,6 +57,9 @@ typedef struct { uint8_t len; } bleio_packet_buffer_obj_list_t; +// Unused +typedef void *ble_event_handler_t; + extern bool packet_buffer_on_ble_evt(uint16_t attribute, uint8_t *data, uint16_t len); diff --git a/ports/silabs/common-hal/_bleio/__init__.c b/ports/silabs/common-hal/_bleio/__init__.c index b5d9270af56c..6191a88904a9 100644 --- a/ports/silabs/common-hal/_bleio/__init__.c +++ b/ports/silabs/common-hal/_bleio/__init__.c @@ -51,6 +51,9 @@ const osMutexAttr_t bluetooth_connection_mutex_attr = { .cb_size = osMutexCbSize }; +void common_hal_bleio_init(void) { +} + void bleio_user_reset() { // Stop any user scanning or advertising. common_hal_bleio_adapter_stop_scan(&common_hal_bleio_adapter_obj); diff --git a/shared-bindings/_bleio/PacketBuffer.h b/shared-bindings/_bleio/PacketBuffer.h index 99b86a944962..e9e642e2677e 100644 --- a/shared-bindings/_bleio/PacketBuffer.h +++ b/shared-bindings/_bleio/PacketBuffer.h @@ -20,12 +20,14 @@ extern const mp_obj_type_t bleio_packet_buffer_type; void common_hal_bleio_packet_buffer_construct( bleio_packet_buffer_obj_t *self, bleio_characteristic_obj_t *characteristic, size_t buffer_size, size_t max_packet_size); -// Allocation free +// Allocation free version for BLE workflow use. +#if CIRCUITPY_SERIAL_BLE || CIRCUITPY_BLE_FILE_SERVICE void _common_hal_bleio_packet_buffer_construct( bleio_packet_buffer_obj_t *self, bleio_characteristic_obj_t *characteristic, uint32_t *incoming_buffer, size_t incoming_buffer_size, uint32_t *outgoing_buffer1, uint32_t *outgoing_buffer2, size_t outgoing_buffer_size, ble_event_handler_t *static_handler_entry); +#endif mp_int_t common_hal_bleio_packet_buffer_write(bleio_packet_buffer_obj_t *self, const uint8_t *data, size_t len, uint8_t *header, size_t header_len); mp_int_t common_hal_bleio_packet_buffer_readinto(bleio_packet_buffer_obj_t *self, uint8_t *data, size_t len); mp_int_t common_hal_bleio_packet_buffer_get_incoming_packet_length(bleio_packet_buffer_obj_t *self); diff --git a/supervisor/shared/bluetooth/serial.c b/supervisor/shared/bluetooth/serial.c index 1d88736d91ff..3c8ae71eb482 100644 --- a/supervisor/shared/bluetooth/serial.c +++ b/supervisor/shared/bluetooth/serial.c @@ -36,6 +36,9 @@ const uint8_t circuitpython_base_uuid[16] = {0x6e, 0x68, 0x74, 0x79, 0x50, 0x74, static mp_obj_list_t characteristic_list; static mp_obj_t characteristic_list_items[3]; +#if BLEIO_PACKET_BUFFER_MAX_PACKET_SIZE % 4 != 0 +#error "BLEIO_PACKET_BUFFER_MAX_PACKET_SIZE must be a multiple of 4" +#endif static uint32_t _outgoing1[BLEIO_PACKET_BUFFER_MAX_PACKET_SIZE / 4]; static uint32_t _outgoing2[BLEIO_PACKET_BUFFER_MAX_PACKET_SIZE / 4]; static ble_event_handler_t rx_static_handler_entry; From 6e09428dab0022bfd2b8ae3ff2844efa7be66f6f Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Wed, 12 Jun 2024 15:33:33 -0500 Subject: [PATCH 125/227] Update macos version Move from 11 (deprecated) to 12 (the oldest non-deprecated) Because the artifacts formerly had the macos version number in the mpy-cross binary filename, we have to change the binary name anyway. Rename it without the macos version (e.g., mpy-cross-macos-x64 instead of mpy-cros-macos-11-x64) https://github.blog/changelog/2024-05-20-actions-upcoming-changes-to-github-hosted-macos-runners/ Closes: #9328 --- .github/workflows/build.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 09eb0ebcada0..dc2963fa80cd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -102,7 +102,7 @@ jobs: cp-version: ${{ needs.scheduler.outputs.cp-version }} mpy-cross-mac: - runs-on: macos-11 + runs-on: macos-12 needs: scheduler if: needs.scheduler.outputs.ports != '{}' env: @@ -129,29 +129,29 @@ jobs: run: make -C mpy-cross -j4 - uses: actions/upload-artifact@v4 with: - name: mpy-cross-macos-11-x64 + name: mpy-cross-macos-x64 path: mpy-cross/build/mpy-cross - name: Build mpy-cross (arm64) run: make -C mpy-cross -j4 -f Makefile.m1 V=2 - uses: actions/upload-artifact@v4 with: - name: mpy-cross-macos-11-arm64 + name: mpy-cross-macos-arm64 path: mpy-cross/build-arm64/mpy-cross-arm64 - name: Make universal binary run: lipo -create -output mpy-cross-macos-universal mpy-cross/build/mpy-cross mpy-cross/build-arm64/mpy-cross-arm64 - name: Upload artifact uses: actions/upload-artifact@v4 with: - name: mpy-cross-macos-11-universal + name: mpy-cross-macos-universal path: mpy-cross-macos-universal - name: Upload to S3 if: >- (github.event_name == 'push' && github.ref == 'refs/heads/main' && github.repository_owner == 'adafruit') || (github.event_name == 'release' && (github.event.action == 'published' || github.event.action == 'rerequested')) run: | - [ -z "$AWS_ACCESS_KEY_ID" ] || aws s3 cp mpy-cross-macos-universal s3://adafruit-circuit-python/bin/mpy-cross/macos-11/mpy-cross-macos-11-${{ env.CP_VERSION }}-universal --no-progress --region us-east-1 - [ -z "$AWS_ACCESS_KEY_ID" ] || aws s3 cp mpy-cross/build-arm64/mpy-cross-arm64 s3://adafruit-circuit-python/bin/mpy-cross/macos-11/mpy-cross-macos-11-${{ env.CP_VERSION }}-arm64 --no-progress --region us-east-1 - [ -z "$AWS_ACCESS_KEY_ID" ] || aws s3 cp mpy-cross/build/mpy-cross s3://adafruit-circuit-python/bin/mpy-cross/macos-11/mpy-cross-macos-11-${{ env.CP_VERSION }}-x64 --no-progress --region us-east-1 + [ -z "$AWS_ACCESS_KEY_ID" ] || aws s3 cp mpy-cross-macos-universal s3://adafruit-circuit-python/bin/mpy-cross/macos-12/mpy-cross-macos-${{ env.CP_VERSION }}-universal --no-progress --region us-east-1 + [ -z "$AWS_ACCESS_KEY_ID" ] || aws s3 cp mpy-cross/build-arm64/mpy-cross-arm64 s3://adafruit-circuit-python/bin/mpy-cross/macos-12/mpy-cross-macos-${{ env.CP_VERSION }}-arm64 --no-progress --region us-east-1 + [ -z "$AWS_ACCESS_KEY_ID" ] || aws s3 cp mpy-cross/build/mpy-cross s3://adafruit-circuit-python/bin/mpy-cross/macos-12/mpy-cross-macos-${{ env.CP_VERSION }}-x64 --no-progress --region us-east-1 env: AWS_PAGER: '' AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} From 3215f6c4ffbba6acfa40b03d353fccb2f6381692 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Wed, 12 Jun 2024 16:41:19 -0500 Subject: [PATCH 126/227] SSLSocket: handle exceptions during protocol read/write operations These protocol operations should not raise exceptions, but sometimes they do. Catch the exception and extract the errno value if available. At the same time, harmonize the argument types for the underlying C routines --- shared-bindings/ssl/SSLSocket.c | 29 ++++++++++++++++++++--------- shared-bindings/ssl/SSLSocket.h | 4 ++-- shared-module/ssl/SSLSocket.c | 4 ++-- 3 files changed, 24 insertions(+), 13 deletions(-) diff --git a/shared-bindings/ssl/SSLSocket.c b/shared-bindings/ssl/SSLSocket.c index a791da4093f8..1d2432c0e13f 100644 --- a/shared-bindings/ssl/SSLSocket.c +++ b/shared-bindings/ssl/SSLSocket.c @@ -248,9 +248,22 @@ static const mp_rom_map_elem_t ssl_sslsocket_locals_dict_table[] = { static MP_DEFINE_CONST_DICT(ssl_sslsocket_locals_dict, ssl_sslsocket_locals_dict_table); -static mp_uint_t sslsocket_read(mp_obj_t self_in, void *buf, mp_uint_t size, int *errorcode) { +typedef mp_uint_t (*readwrite_func)(ssl_sslsocket_obj_t *, const uint8_t *, mp_uint_t); + +static mp_int_t readwrite_common(mp_obj_t self_in, readwrite_func fn, const uint8_t *buf, size_t size, int *errorcode) { ssl_sslsocket_obj_t *self = MP_OBJ_TO_PTR(self_in); - mp_int_t ret = common_hal_ssl_sslsocket_recv_into(self, buf, size); + mp_int_t ret; + nlr_buf_t nlr; + if (nlr_push(&nlr) == 0) { + ret = fn(self, buf, size); + nlr_pop(); + } else { + mp_obj_t exc = MP_OBJ_FROM_PTR(nlr.ret_val); + if (nlr_push(&nlr) == 0) { + ret = -mp_obj_get_int(mp_load_attr(exc, MP_QSTR_errno)); + nlr_pop(); + } + } if (ret < 0) { *errorcode = -ret; return MP_STREAM_ERROR; @@ -258,14 +271,12 @@ static mp_uint_t sslsocket_read(mp_obj_t self_in, void *buf, mp_uint_t size, int return ret; } +static mp_uint_t sslsocket_read(mp_obj_t self_in, void *buf, mp_uint_t size, int *errorcode) { + return readwrite_common(self_in, (readwrite_func)common_hal_ssl_sslsocket_recv_into, buf, size, errorcode); +} + static mp_uint_t sslsocket_write(mp_obj_t self_in, const void *buf, mp_uint_t size, int *errorcode) { - ssl_sslsocket_obj_t *self = MP_OBJ_TO_PTR(self_in); - mp_int_t ret = common_hal_ssl_sslsocket_send(self, buf, size); - if (ret < 0) { - *errorcode = -ret; - return MP_STREAM_ERROR; - } - return ret; + return readwrite_common(self_in, common_hal_ssl_sslsocket_send, buf, size, errorcode); } static mp_uint_t sslsocket_ioctl(mp_obj_t self_in, mp_uint_t request, mp_uint_t arg, int *errcode) { diff --git a/shared-bindings/ssl/SSLSocket.h b/shared-bindings/ssl/SSLSocket.h index bb46576330f5..85467fee089a 100644 --- a/shared-bindings/ssl/SSLSocket.h +++ b/shared-bindings/ssl/SSLSocket.h @@ -23,7 +23,7 @@ bool common_hal_ssl_sslsocket_get_connected(ssl_sslsocket_obj_t *self); bool common_hal_ssl_sslsocket_readable(ssl_sslsocket_obj_t *self); bool common_hal_ssl_sslsocket_writable(ssl_sslsocket_obj_t *self); void common_hal_ssl_sslsocket_listen(ssl_sslsocket_obj_t *self, int backlog); -mp_uint_t common_hal_ssl_sslsocket_recv_into(ssl_sslsocket_obj_t *self, uint8_t *buf, uint32_t len); -mp_uint_t common_hal_ssl_sslsocket_send(ssl_sslsocket_obj_t *self, const uint8_t *buf, uint32_t len); +mp_uint_t common_hal_ssl_sslsocket_recv_into(ssl_sslsocket_obj_t *self, uint8_t *buf, mp_uint_t len); +mp_uint_t common_hal_ssl_sslsocket_send(ssl_sslsocket_obj_t *self, const uint8_t *buf, mp_uint_t len); void common_hal_ssl_sslsocket_settimeout(ssl_sslsocket_obj_t *self, mp_obj_t timeout_obj); void common_hal_ssl_sslsocket_setsockopt(ssl_sslsocket_obj_t *self, mp_obj_t level, mp_obj_t optname, mp_obj_t optval); diff --git a/shared-module/ssl/SSLSocket.c b/shared-module/ssl/SSLSocket.c index 9e3a62586006..0b40bd663c7d 100644 --- a/shared-module/ssl/SSLSocket.c +++ b/shared-module/ssl/SSLSocket.c @@ -333,7 +333,7 @@ ssl_sslsocket_obj_t *common_hal_ssl_sslcontext_wrap_socket(ssl_sslcontext_obj_t } } -mp_uint_t common_hal_ssl_sslsocket_recv_into(ssl_sslsocket_obj_t *self, uint8_t *buf, uint32_t len) { +mp_uint_t common_hal_ssl_sslsocket_recv_into(ssl_sslsocket_obj_t *self, uint8_t *buf, mp_uint_t len) { self->poll_mask = 0; int ret = mbedtls_ssl_read(&self->ssl, buf, len); DEBUG_PRINT("recv_into mbedtls_ssl_read() -> %d\n", ret); @@ -353,7 +353,7 @@ mp_uint_t common_hal_ssl_sslsocket_recv_into(ssl_sslsocket_obj_t *self, uint8_t mbedtls_raise_error(ret); } -mp_uint_t common_hal_ssl_sslsocket_send(ssl_sslsocket_obj_t *self, const uint8_t *buf, uint32_t len) { +mp_uint_t common_hal_ssl_sslsocket_send(ssl_sslsocket_obj_t *self, const uint8_t *buf, mp_uint_t len) { self->poll_mask = 0; int ret = mbedtls_ssl_write(&self->ssl, buf, len); DEBUG_PRINT("send mbedtls_ssl_write() -> %d\n", ret); From 50bcceef69a2fb3d74b35dc2566730c8b472be92 Mon Sep 17 00:00:00 2001 From: Scott Shawcroft Date: Wed, 12 Jun 2024 16:36:08 -0700 Subject: [PATCH 127/227] Fix connection timeout and packetbuffer error --- ports/espressif/common-hal/_bleio/Adapter.c | 3 ++- ports/espressif/common-hal/_bleio/PacketBuffer.c | 5 ++++- ports/espressif/common-hal/_bleio/__init__.c | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ports/espressif/common-hal/_bleio/Adapter.c b/ports/espressif/common-hal/_bleio/Adapter.c index e3a7a77a87b9..0a8550408d89 100644 --- a/ports/espressif/common-hal/_bleio/Adapter.c +++ b/ports/espressif/common-hal/_bleio/Adapter.c @@ -408,7 +408,8 @@ mp_obj_t common_hal_bleio_adapter_connect(bleio_adapter_obj_t *self, bleio_addre _connect_event, self)); int error_code; - CHECK_NOTIFY(xTaskNotifyWait(0, 0, (uint32_t *)&error_code, 200)); + // Wait an extra 50 ms to give the connect method the opportunity to time out. + CHECK_NOTIFY(xTaskNotifyWait(0, 0, (uint32_t *)&error_code, pdMS_TO_TICKS(timeout * 1000 + 50))); // Negative values are error codes, connection handle otherwise. if (error_code < 0) { CHECK_BLE_ERROR(-error_code); diff --git a/ports/espressif/common-hal/_bleio/PacketBuffer.c b/ports/espressif/common-hal/_bleio/PacketBuffer.c index 28b86305be5d..8640bf7e42b7 100644 --- a/ports/espressif/common-hal/_bleio/PacketBuffer.c +++ b/ports/espressif/common-hal/_bleio/PacketBuffer.c @@ -92,6 +92,8 @@ static int queue_next_write(bleio_packet_buffer_obj_t *self) { // Allocate an mbuf because the functions below consume it. struct os_mbuf *om = ble_hs_mbuf_from_flat(self->outgoing[self->pending_index], self->pending_size); if (om == NULL) { + // We may not have any more mbufs if BLE busy. It isn't a problem (yet) so we'll + // just skip queueing for now. return BLE_HS_ENOMEM; } size_t pending_size = self->pending_size; @@ -331,7 +333,8 @@ mp_int_t common_hal_bleio_packet_buffer_write(bleio_packet_buffer_obj_t *self, c // If no writes are queued then sneak in this data. if (!self->packet_queued) { - CHECK_NIMBLE_ERROR(queue_next_write(self)); + // This will queue up the packet even if it can't send immediately. + queue_next_write(self); } return num_bytes_written; } diff --git a/ports/espressif/common-hal/_bleio/__init__.c b/ports/espressif/common-hal/_bleio/__init__.c index f3f59c685e13..eb51e9f45670 100644 --- a/ports/espressif/common-hal/_bleio/__init__.c +++ b/ports/espressif/common-hal/_bleio/__init__.c @@ -99,7 +99,7 @@ void check_nimble_error(int rc, const char *file, size_t line) { mp_raise_ConnectionError(MP_ERROR_TEXT("Not connected")); return; default: - #if CIRCUITPY_VERBOSE_BLE + #if CIRCUITPY_VERBOSE_BLE || CIRCUITPY_DEBUG if (file) { mp_raise_bleio_BluetoothError(MP_ERROR_TEXT("Unknown system firmware error at %s:%d: %d"), file, line, rc); } @@ -126,7 +126,7 @@ void check_ble_error(int error_code, const char *file, size_t line) { mp_raise_bleio_SecurityError(MP_ERROR_TEXT("Insufficient encryption")); return; default: - #if CIRCUITPY_VERBOSE_BLE + #if CIRCUITPY_VERBOSE_BLE || CIRCUITPY_DEBUG if (file) { mp_raise_bleio_BluetoothError(MP_ERROR_TEXT("Unknown BLE error at %s:%d: %d"), file, line, error_code); } From a6499b4c5a1e0e13ba1e7c001b0de212b81d4f31 Mon Sep 17 00:00:00 2001 From: Matthew <104187183+MatthewJeffson@users.noreply.github.com> Date: Thu, 13 Jun 2024 11:40:27 +0800 Subject: [PATCH 128/227] Update mpconfigboard.h --- ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h | 1 - 1 file changed, 1 deletion(-) diff --git a/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h b/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h index 5fec7b953f75..bdda924b0c8e 100644 --- a/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h +++ b/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h @@ -19,4 +19,3 @@ #define CIRCUITPY_BOOT_BUTTON (&pin_GPIO9) // Explanation of how a user got into safe mode -#define BOARD_USER_SAFE_MODE_ACTION MP_ERROR_TEXT("Keep the BOOT button pressed and then connect to the computer via the data cable. Release the BOOT button after connecting to the computer.") From 611185e1ed4fd486e276ce95ed22b61fb78141fc Mon Sep 17 00:00:00 2001 From: Matthew <104187183+MatthewJeffson@users.noreply.github.com> Date: Thu, 13 Jun 2024 11:44:10 +0800 Subject: [PATCH 129/227] update --- ports/espressif/boards/seeed_xiao_esp32c6/board.c | 2 +- ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h | 2 +- ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.mk | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ports/espressif/boards/seeed_xiao_esp32c6/board.c b/ports/espressif/boards/seeed_xiao_esp32c6/board.c index 6d4bcef26dba..501117b750be 100644 --- a/ports/espressif/boards/seeed_xiao_esp32c6/board.c +++ b/ports/espressif/boards/seeed_xiao_esp32c6/board.c @@ -42,4 +42,4 @@ bool espressif_board_reset_pin_number(gpio_num_t pin_number) { return false; } -// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. +// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. \ No newline at end of file diff --git a/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h b/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h index bdda924b0c8e..4cc11617a2c9 100644 --- a/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h +++ b/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h @@ -18,4 +18,4 @@ // For entering safe mode, use BOOT button #define CIRCUITPY_BOOT_BUTTON (&pin_GPIO9) -// Explanation of how a user got into safe mode +// Explanation of how a user got into safe mode \ No newline at end of file diff --git a/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.mk b/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.mk index e7ee13c027ac..935c681361ee 100644 --- a/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.mk +++ b/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.mk @@ -7,4 +7,4 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB -CIRCUITPY_ESP_USB_SERIAL_JTAG = 1 +CIRCUITPY_ESP_USB_SERIAL_JTAG = 1 \ No newline at end of file From 878f3c7a219c0c331d83510e02b316134662f62a Mon Sep 17 00:00:00 2001 From: Matthew <104187183+MatthewJeffson@users.noreply.github.com> Date: Thu, 13 Jun 2024 11:46:41 +0800 Subject: [PATCH 130/227] update --- ports/espressif/boards/seeed_xiao_esp32c6/board.c | 2 +- ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h | 2 +- ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.mk | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ports/espressif/boards/seeed_xiao_esp32c6/board.c b/ports/espressif/boards/seeed_xiao_esp32c6/board.c index 501117b750be..6d4bcef26dba 100644 --- a/ports/espressif/boards/seeed_xiao_esp32c6/board.c +++ b/ports/espressif/boards/seeed_xiao_esp32c6/board.c @@ -42,4 +42,4 @@ bool espressif_board_reset_pin_number(gpio_num_t pin_number) { return false; } -// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. \ No newline at end of file +// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h b/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h index 4cc11617a2c9..bdda924b0c8e 100644 --- a/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h +++ b/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h @@ -18,4 +18,4 @@ // For entering safe mode, use BOOT button #define CIRCUITPY_BOOT_BUTTON (&pin_GPIO9) -// Explanation of how a user got into safe mode \ No newline at end of file +// Explanation of how a user got into safe mode diff --git a/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.mk b/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.mk index 935c681361ee..e7ee13c027ac 100644 --- a/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.mk +++ b/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.mk @@ -7,4 +7,4 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB -CIRCUITPY_ESP_USB_SERIAL_JTAG = 1 \ No newline at end of file +CIRCUITPY_ESP_USB_SERIAL_JTAG = 1 From 4d4d65467793dcfadc42e45c927736f45c60c413 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Thu, 13 Jun 2024 11:11:17 -0500 Subject: [PATCH 131/227] MP3Decoder: set the nonblocking flag as needed this makes SSL sockets (which return readable when not yet actually readable) work better. --- shared-bindings/audiomp3/MP3Decoder.c | 6 ++++++ shared-module/audiomp3/MP3Decoder.c | 22 +++++++++++++++++++++- shared-module/audiomp3/MP3Decoder.h | 2 ++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/shared-bindings/audiomp3/MP3Decoder.c b/shared-bindings/audiomp3/MP3Decoder.c index 7a596f90dbc5..0ddb9856da42 100644 --- a/shared-bindings/audiomp3/MP3Decoder.c +++ b/shared-bindings/audiomp3/MP3Decoder.c @@ -72,6 +72,12 @@ //| decoder.file = stream //| //| If the stream is played with ``loop = True``, the loop will start at the beginning. +//| +//| It is possible to stream an mp3 from a socket, including a secure socket. +//| The MP3Decoder may change the timeout and non-blocking status of the socket. +//| Using a larger decode buffer with a stream can be helpful to avoid data underruns. +//| An `adafruit_requests` request must be made with ``headers={"Connection": "close"}`` so +//| that the socket closes when the stream ends. //| """ //| ... diff --git a/shared-module/audiomp3/MP3Decoder.c b/shared-module/audiomp3/MP3Decoder.c index 19867271f605..f59f4a4510b6 100644 --- a/shared-module/audiomp3/MP3Decoder.c +++ b/shared-module/audiomp3/MP3Decoder.c @@ -95,6 +95,18 @@ static off_t stream_lseek(void *stream, off_t offset, int whence) { #define INPUT_BUFFER_CONSUME(i, n) ((i).read_off += (n)) #define INPUT_BUFFER_CLEAR(i) ((i).read_off = (i).write_off = 0) +static void stream_set_blocking(audiomp3_mp3file_obj_t *self, bool block_ok) { + if (!self->settimeout_args[0]) { + return; + } + if (block_ok == self->block_ok) { + return; + } + self->block_ok = block_ok; + self->settimeout_args[2] = block_ok ? mp_const_none : mp_obj_new_int(0); + mp_call_method_n_kw(1, 0, self->settimeout_args); +} + /** Fill the input buffer unconditionally. * * Returns true if the input buffer contains any useful data, @@ -110,6 +122,8 @@ static bool mp3file_update_inbuf_always(audiomp3_mp3file_obj_t *self, bool block return INPUT_BUFFER_AVAILABLE(self->inbuf) > 0; } + stream_set_blocking(self, block_ok); + // We didn't previously reach EOF and we have input buffer space available // Move the unconsumed portion of the buffer to the start @@ -119,7 +133,7 @@ static bool mp3file_update_inbuf_always(audiomp3_mp3file_obj_t *self, bool block self->inbuf.read_off = 0; } - for (size_t to_read; !self->eof && (to_read = INPUT_BUFFER_SPACE(self->inbuf)) > 0 && (block_ok || stream_readable(self->stream));) { + for (size_t to_read; !self->eof && (to_read = INPUT_BUFFER_SPACE(self->inbuf)) > 0;) { uint8_t *write_ptr = self->inbuf.buf + self->inbuf.write_off; ssize_t n_read = stream_read(self->stream, write_ptr, to_read); @@ -328,9 +342,14 @@ void common_hal_audiomp3_mp3file_set_file(audiomp3_mp3file_obj_t *self, mp_obj_t background_callback_prevent(); self->stream = stream; + mp_load_method_maybe(stream, MP_QSTR_settimeout, self->settimeout_args); INPUT_BUFFER_CLEAR(self->inbuf); self->eof = 0; + + self->block_ok = false; + stream_set_blocking(self, true); + self->other_channel = -1; mp3file_update_inbuf_half(self, true); mp3file_find_sync_word(self, true); @@ -365,6 +384,7 @@ void common_hal_audiomp3_mp3file_deinit(audiomp3_mp3file_obj_t *self) { self->pcm_buffer[0] = NULL; self->pcm_buffer[1] = NULL; self->stream = mp_const_none; + self->settimeout_args[0] = MP_OBJ_NULL; self->samples_decoded = 0; } diff --git a/shared-module/audiomp3/MP3Decoder.h b/shared-module/audiomp3/MP3Decoder.h index 89328deb4a97..9f1b97a5a516 100644 --- a/shared-module/audiomp3/MP3Decoder.h +++ b/shared-module/audiomp3/MP3Decoder.h @@ -35,6 +35,8 @@ typedef struct { uint8_t buffer_index; uint8_t channel_count; bool eof; + bool block_ok; + mp_obj_t settimeout_args[3]; int8_t other_channel; int8_t other_buffer_index; From e00e2473db471bf8cdd69178c87375839fc10b47 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Thu, 13 Jun 2024 11:39:40 -0500 Subject: [PATCH 132/227] doc fix --- shared-bindings/audiomp3/MP3Decoder.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared-bindings/audiomp3/MP3Decoder.c b/shared-bindings/audiomp3/MP3Decoder.c index 0ddb9856da42..ff715720d028 100644 --- a/shared-bindings/audiomp3/MP3Decoder.c +++ b/shared-bindings/audiomp3/MP3Decoder.c @@ -76,7 +76,7 @@ //| It is possible to stream an mp3 from a socket, including a secure socket. //| The MP3Decoder may change the timeout and non-blocking status of the socket. //| Using a larger decode buffer with a stream can be helpful to avoid data underruns. -//| An `adafruit_requests` request must be made with ``headers={"Connection": "close"}`` so +//| An ``adafruit_requests`` request must be made with ``headers={"Connection": "close"}`` so //| that the socket closes when the stream ends. //| """ //| ... From 7c85f6a15af330770d7d7ccf2700d5eb9f83c222 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Thu, 13 Jun 2024 11:41:24 -0500 Subject: [PATCH 133/227] ensure variable is initialized --- shared-bindings/ssl/SSLSocket.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared-bindings/ssl/SSLSocket.c b/shared-bindings/ssl/SSLSocket.c index 1d2432c0e13f..3ed4fa366243 100644 --- a/shared-bindings/ssl/SSLSocket.c +++ b/shared-bindings/ssl/SSLSocket.c @@ -252,7 +252,7 @@ typedef mp_uint_t (*readwrite_func)(ssl_sslsocket_obj_t *, const uint8_t *, mp_u static mp_int_t readwrite_common(mp_obj_t self_in, readwrite_func fn, const uint8_t *buf, size_t size, int *errorcode) { ssl_sslsocket_obj_t *self = MP_OBJ_TO_PTR(self_in); - mp_int_t ret; + mp_int_t ret = -EIO; nlr_buf_t nlr; if (nlr_push(&nlr) == 0) { ret = fn(self, buf, size); From 3c0609ff004766cae40081a007a9692ec416333c Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Thu, 13 Jun 2024 19:23:43 +0200 Subject: [PATCH 134/227] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: CircuitPython/main Translate-URL: https://hosted.weblate.org/projects/circuitpython/main/ --- locale/ID.po | 12 ++++++++++-- locale/cs.po | 12 ++++++++++-- locale/de_DE.po | 12 ++++++++++-- locale/el.po | 12 ++++++++++-- locale/en_GB.po | 12 ++++++++++-- locale/es.po | 12 ++++++++++-- locale/fil.po | 12 ++++++++++-- locale/fr.po | 12 ++++++++++-- locale/hi.po | 12 ++++++++++-- locale/it_IT.po | 12 ++++++++++-- locale/ja.po | 12 ++++++++++-- locale/ko.po | 12 ++++++++++-- locale/nl.po | 12 ++++++++++-- locale/pl.po | 12 ++++++++++-- locale/pt_BR.po | 12 ++++++++++-- locale/ru.po | 12 ++++++++++-- locale/sv.po | 12 ++++++++++-- locale/tr.po | 12 ++++++++++-- locale/zh_Latn_pinyin.po | 12 ++++++++++-- 19 files changed, 190 insertions(+), 38 deletions(-) diff --git a/locale/ID.po b/locale/ID.po index 000cd715b99a..c6162f7ef86a 100644 --- a/locale/ID.po +++ b/locale/ID.po @@ -116,7 +116,7 @@ msgstr "" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #: ports/raspberrypi/common-hal/usb_host/Port.c #: shared-bindings/digitalio/DigitalInOut.c -#: shared-bindings/microcontroller/Pin.c +#: shared-bindings/microcontroller/Pin.c shared-module/max3421e/Max3421E.c msgid "%q in use" msgstr "%q sedang digunakan" @@ -1122,10 +1122,12 @@ msgstr "" msgid "Input/output error" msgstr "Kesalahan input/output" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient authentication" msgstr "Otentikasi tidak cukup" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient encryption" msgstr "Enkripsi tidak cukup" @@ -1162,6 +1164,7 @@ msgstr "Kesalahan internal #%d" #: 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/max3421e/Max3421E.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 @@ -1293,6 +1296,10 @@ msgstr "" msgid "MAC address was invalid" msgstr "" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "MITM security not supported" +msgstr "" + #: shared-bindings/is31fl3741/IS31FL3741.c msgid "Mapping must be a tuple" msgstr "" @@ -2159,6 +2166,7 @@ msgstr "" msgid "Unknown BLE error: %d" msgstr "" +#: ports/espressif/common-hal/max3421e/Max3421E.c #: ports/raspberrypi/common-hal/wifi/__init__.c #, c-format msgid "Unknown error code %d" @@ -3832,7 +3840,7 @@ msgstr "Muncul dari PulseIn yang kosong" msgid "pop from empty %q" msgstr "" -#: shared-bindings/socketpool/Socket.c shared-bindings/ssl/SSLSocket.c +#: shared-bindings/socketpool/Socket.c msgid "port must be >= 0" msgstr "" diff --git a/locale/cs.po b/locale/cs.po index 21e2ca0323f2..2ebbab940426 100644 --- a/locale/cs.po +++ b/locale/cs.po @@ -124,7 +124,7 @@ msgstr "%q v %q musí být typu %q, ne %q" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #: ports/raspberrypi/common-hal/usb_host/Port.c #: shared-bindings/digitalio/DigitalInOut.c -#: shared-bindings/microcontroller/Pin.c +#: shared-bindings/microcontroller/Pin.c shared-module/max3421e/Max3421E.c msgid "%q in use" msgstr "%q se právě používá" @@ -1134,10 +1134,12 @@ msgstr "Vstup trval příliš dlouho" msgid "Input/output error" msgstr "Chyba vstupu/výstupu" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient authentication" msgstr "Nedostatečná autentizace" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient encryption" msgstr "Nedostatečné šifrování" @@ -1174,6 +1176,7 @@ msgstr "Vnitřní chyba #%d" #: 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/max3421e/Max3421E.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 @@ -1305,6 +1308,10 @@ msgstr "Vrstva musí být Group nebo TileGrid" msgid "MAC address was invalid" msgstr "MAC adresa byla chybná" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "MITM security not supported" +msgstr "" + #: shared-bindings/is31fl3741/IS31FL3741.c msgid "Mapping must be a tuple" msgstr "" @@ -2165,6 +2172,7 @@ msgstr "Neznámá chyba BLE na %s:%d: %d" msgid "Unknown BLE error: %d" msgstr "Neznámá chyba BLE: %d" +#: ports/espressif/common-hal/max3421e/Max3421E.c #: ports/raspberrypi/common-hal/wifi/__init__.c #, c-format msgid "Unknown error code %d" @@ -3841,7 +3849,7 @@ msgstr "" msgid "pop from empty %q" msgstr "pop z prázdného %q" -#: shared-bindings/socketpool/Socket.c shared-bindings/ssl/SSLSocket.c +#: shared-bindings/socketpool/Socket.c msgid "port must be >= 0" msgstr "port musí být >= 0" diff --git a/locale/de_DE.po b/locale/de_DE.po index 412f2a6ccf28..db3a52504267 100644 --- a/locale/de_DE.po +++ b/locale/de_DE.po @@ -126,7 +126,7 @@ msgstr "%q in %q muss von Typ %q sein, nicht %q" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #: ports/raspberrypi/common-hal/usb_host/Port.c #: shared-bindings/digitalio/DigitalInOut.c -#: shared-bindings/microcontroller/Pin.c +#: shared-bindings/microcontroller/Pin.c shared-module/max3421e/Max3421E.c msgid "%q in use" msgstr "%q in Benutzung" @@ -1145,10 +1145,12 @@ msgstr "Input benötigt zu lange" msgid "Input/output error" msgstr "Eingabe-/Ausgabefehler" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient authentication" msgstr "Unzureichende Authentifizierung" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient encryption" msgstr "Unzureichende Verschlüsselung" @@ -1185,6 +1187,7 @@ msgstr "Interner Fehler #%d" #: 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/max3421e/Max3421E.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 @@ -1316,6 +1319,10 @@ msgstr "Ebene muss eine Gruppe oder eine TileGrid Subklasse sein" msgid "MAC address was invalid" msgstr "MAC Adresse war ungültig" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "MITM security not supported" +msgstr "" + #: shared-bindings/is31fl3741/IS31FL3741.c msgid "Mapping must be a tuple" msgstr "Zuordnung muss ein Tupel sein" @@ -2191,6 +2198,7 @@ msgstr "Unbekannter BLE-Fehler bei %s:%d: %d" msgid "Unknown BLE error: %d" msgstr "Unbekannter BLE-Fehler: %d" +#: ports/espressif/common-hal/max3421e/Max3421E.c #: ports/raspberrypi/common-hal/wifi/__init__.c #, c-format msgid "Unknown error code %d" @@ -3898,7 +3906,7 @@ msgstr "pop von einem leeren PulseIn" msgid "pop from empty %q" msgstr "Pop aus leerem %q" -#: shared-bindings/socketpool/Socket.c shared-bindings/ssl/SSLSocket.c +#: shared-bindings/socketpool/Socket.c msgid "port must be >= 0" msgstr "Port muss >= 0 sein" diff --git a/locale/el.po b/locale/el.po index 1ac3c85fc0d3..621ceaabfd79 100644 --- a/locale/el.po +++ b/locale/el.po @@ -128,7 +128,7 @@ msgstr "%q στο %q πρέπει να είναι τύπου %q, όχι %q" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #: ports/raspberrypi/common-hal/usb_host/Port.c #: shared-bindings/digitalio/DigitalInOut.c -#: shared-bindings/microcontroller/Pin.c +#: shared-bindings/microcontroller/Pin.c shared-module/max3421e/Max3421E.c msgid "%q in use" msgstr "%q είναι σε χρήση" @@ -1140,10 +1140,12 @@ msgstr "" msgid "Input/output error" msgstr "" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient authentication" msgstr "" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient encryption" msgstr "" @@ -1180,6 +1182,7 @@ 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/max3421e/Max3421E.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 @@ -1311,6 +1314,10 @@ msgstr "" msgid "MAC address was invalid" msgstr "" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "MITM security not supported" +msgstr "" + #: shared-bindings/is31fl3741/IS31FL3741.c msgid "Mapping must be a tuple" msgstr "" @@ -2167,6 +2174,7 @@ msgstr "" msgid "Unknown BLE error: %d" msgstr "" +#: ports/espressif/common-hal/max3421e/Max3421E.c #: ports/raspberrypi/common-hal/wifi/__init__.c #, c-format msgid "Unknown error code %d" @@ -3838,7 +3846,7 @@ msgstr "" msgid "pop from empty %q" msgstr "" -#: shared-bindings/socketpool/Socket.c shared-bindings/ssl/SSLSocket.c +#: shared-bindings/socketpool/Socket.c msgid "port must be >= 0" msgstr "" diff --git a/locale/en_GB.po b/locale/en_GB.po index 025504633275..672226e4ea00 100644 --- a/locale/en_GB.po +++ b/locale/en_GB.po @@ -126,7 +126,7 @@ msgstr "%q in %q must be of type %q, not %q" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #: ports/raspberrypi/common-hal/usb_host/Port.c #: shared-bindings/digitalio/DigitalInOut.c -#: shared-bindings/microcontroller/Pin.c +#: shared-bindings/microcontroller/Pin.c shared-module/max3421e/Max3421E.c msgid "%q in use" msgstr "%q in use" @@ -1133,10 +1133,12 @@ msgstr "Input taking too long" msgid "Input/output error" msgstr "Input/output error" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient authentication" msgstr "Insufficient authentication" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient encryption" msgstr "Insufficient encryption" @@ -1173,6 +1175,7 @@ msgstr "Internal error #%d" #: 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/max3421e/Max3421E.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 @@ -1304,6 +1307,10 @@ msgstr "Layer must be a Group or TileGrid subclass" msgid "MAC address was invalid" msgstr "MAC address was invalid" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "MITM security not supported" +msgstr "" + #: shared-bindings/is31fl3741/IS31FL3741.c msgid "Mapping must be a tuple" msgstr "Mapping must be a tuple" @@ -2167,6 +2174,7 @@ msgstr "Unknown BLE error at %s:%d: %d" msgid "Unknown BLE error: %d" msgstr "Unknown BLE error: %d" +#: ports/espressif/common-hal/max3421e/Max3421E.c #: ports/raspberrypi/common-hal/wifi/__init__.c #, c-format msgid "Unknown error code %d" @@ -3848,7 +3856,7 @@ msgstr "pop from an empty PulseIn" msgid "pop from empty %q" msgstr "pop from empty %q" -#: shared-bindings/socketpool/Socket.c shared-bindings/ssl/SSLSocket.c +#: shared-bindings/socketpool/Socket.c msgid "port must be >= 0" msgstr "port must be >= 0" diff --git a/locale/es.po b/locale/es.po index fb96f629bc39..b7787786d422 100644 --- a/locale/es.po +++ b/locale/es.po @@ -128,7 +128,7 @@ msgstr "%q en %q debe ser del tipo %q, no %q" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #: ports/raspberrypi/common-hal/usb_host/Port.c #: shared-bindings/digitalio/DigitalInOut.c -#: shared-bindings/microcontroller/Pin.c +#: shared-bindings/microcontroller/Pin.c shared-module/max3421e/Max3421E.c msgid "%q in use" msgstr "%q está siendo utilizado" @@ -1153,10 +1153,12 @@ msgstr "La entrada está durando mucho tiempo" msgid "Input/output error" msgstr "error Input/output" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient authentication" msgstr "Autenticación insuficiente" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient encryption" msgstr "Cifrado insuficiente" @@ -1193,6 +1195,7 @@ msgstr "Error interno #%d" #: 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/max3421e/Max3421E.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 @@ -1324,6 +1327,10 @@ msgstr "El Layer debe ser un grupo o una subclase de TileGrid" msgid "MAC address was invalid" msgstr "La dirección MAC es incorrecta" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "MITM security not supported" +msgstr "" + #: shared-bindings/is31fl3741/IS31FL3741.c msgid "Mapping must be a tuple" msgstr "El mapping debe ser una dupla" @@ -2198,6 +2205,7 @@ msgstr "Error BLE desconocido en %s:%d: %d" msgid "Unknown BLE error: %d" msgstr "Error BLE desconocido: %d" +#: ports/espressif/common-hal/max3421e/Max3421E.c #: ports/raspberrypi/common-hal/wifi/__init__.c #, c-format msgid "Unknown error code %d" @@ -3887,7 +3895,7 @@ msgstr "pop de un PulseIn vacío" msgid "pop from empty %q" msgstr "pop desde %q vacía" -#: shared-bindings/socketpool/Socket.c shared-bindings/ssl/SSLSocket.c +#: shared-bindings/socketpool/Socket.c msgid "port must be >= 0" msgstr "port debe ser be >= 0" diff --git a/locale/fil.po b/locale/fil.po index 1872a7ac482a..d7df8a28cbde 100644 --- a/locale/fil.po +++ b/locale/fil.po @@ -114,7 +114,7 @@ msgstr "" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #: ports/raspberrypi/common-hal/usb_host/Port.c #: shared-bindings/digitalio/DigitalInOut.c -#: shared-bindings/microcontroller/Pin.c +#: shared-bindings/microcontroller/Pin.c shared-module/max3421e/Max3421E.c msgid "%q in use" msgstr "%q ay ginagamit" @@ -1124,10 +1124,12 @@ msgstr "" msgid "Input/output error" msgstr "May mali sa Input/Output" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient authentication" msgstr "" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient encryption" msgstr "" @@ -1164,6 +1166,7 @@ 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/max3421e/Max3421E.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 @@ -1295,6 +1298,10 @@ msgstr "" msgid "MAC address was invalid" msgstr "" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "MITM security not supported" +msgstr "" + #: shared-bindings/is31fl3741/IS31FL3741.c msgid "Mapping must be a tuple" msgstr "" @@ -2153,6 +2160,7 @@ msgstr "" msgid "Unknown BLE error: %d" msgstr "" +#: ports/espressif/common-hal/max3421e/Max3421E.c #: ports/raspberrypi/common-hal/wifi/__init__.c #, c-format msgid "Unknown error code %d" @@ -3838,7 +3846,7 @@ msgstr "pop mula sa walang laman na PulseIn" msgid "pop from empty %q" msgstr "" -#: shared-bindings/socketpool/Socket.c shared-bindings/ssl/SSLSocket.c +#: shared-bindings/socketpool/Socket.c msgid "port must be >= 0" msgstr "" diff --git a/locale/fr.po b/locale/fr.po index 88b819d8636b..df20ca2bad0a 100644 --- a/locale/fr.po +++ b/locale/fr.po @@ -129,7 +129,7 @@ msgstr "%q dans %q doit être de type %q, pas %q" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #: ports/raspberrypi/common-hal/usb_host/Port.c #: shared-bindings/digitalio/DigitalInOut.c -#: shared-bindings/microcontroller/Pin.c +#: shared-bindings/microcontroller/Pin.c shared-module/max3421e/Max3421E.c msgid "%q in use" msgstr "%q en cours d'utilisation" @@ -1162,10 +1162,12 @@ msgstr "L'entrée prend trop de temps" msgid "Input/output error" msgstr "Erreur d'entrée/sortie" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient authentication" msgstr "Authentification insuffisante" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient encryption" msgstr "Chiffrement insuffisant" @@ -1202,6 +1204,7 @@ msgstr "Erreur interne #%d" #: 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/max3421e/Max3421E.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 @@ -1333,6 +1336,10 @@ msgstr "Le calque doit être une sous-classe de Group ou TileGrid" msgid "MAC address was invalid" msgstr "Adresse physique (MAC) invalide" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "MITM security not supported" +msgstr "" + #: shared-bindings/is31fl3741/IS31FL3741.c msgid "Mapping must be a tuple" msgstr "Le mapping doit être un tuple" @@ -2215,6 +2222,7 @@ msgstr "Erreur BLE inconnue à %s:%d : %d" msgid "Unknown BLE error: %d" msgstr "Erreur BLE inconnue : %d" +#: ports/espressif/common-hal/max3421e/Max3421E.c #: ports/raspberrypi/common-hal/wifi/__init__.c #, c-format msgid "Unknown error code %d" @@ -3919,7 +3927,7 @@ msgstr "'pop' d'une entrée PulseIn vide" msgid "pop from empty %q" msgstr "pop sur %q vide" -#: shared-bindings/socketpool/Socket.c shared-bindings/ssl/SSLSocket.c +#: shared-bindings/socketpool/Socket.c msgid "port must be >= 0" msgstr "port doit être >= 0" diff --git a/locale/hi.po b/locale/hi.po index 7d8e3deea65a..c133a559337e 100644 --- a/locale/hi.po +++ b/locale/hi.po @@ -115,7 +115,7 @@ msgstr "" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #: ports/raspberrypi/common-hal/usb_host/Port.c #: shared-bindings/digitalio/DigitalInOut.c -#: shared-bindings/microcontroller/Pin.c +#: shared-bindings/microcontroller/Pin.c shared-module/max3421e/Max3421E.c msgid "%q in use" msgstr "" @@ -1116,10 +1116,12 @@ msgstr "" msgid "Input/output error" msgstr "" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient authentication" msgstr "" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient encryption" msgstr "" @@ -1156,6 +1158,7 @@ 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/max3421e/Max3421E.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 @@ -1287,6 +1290,10 @@ msgstr "" msgid "MAC address was invalid" msgstr "" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "MITM security not supported" +msgstr "" + #: shared-bindings/is31fl3741/IS31FL3741.c msgid "Mapping must be a tuple" msgstr "" @@ -2141,6 +2148,7 @@ msgstr "" msgid "Unknown BLE error: %d" msgstr "" +#: ports/espressif/common-hal/max3421e/Max3421E.c #: ports/raspberrypi/common-hal/wifi/__init__.c #, c-format msgid "Unknown error code %d" @@ -3812,7 +3820,7 @@ msgstr "" msgid "pop from empty %q" msgstr "" -#: shared-bindings/socketpool/Socket.c shared-bindings/ssl/SSLSocket.c +#: shared-bindings/socketpool/Socket.c msgid "port must be >= 0" msgstr "" diff --git a/locale/it_IT.po b/locale/it_IT.po index 444224ff857b..1cd44cf1a26a 100644 --- a/locale/it_IT.po +++ b/locale/it_IT.po @@ -117,7 +117,7 @@ msgstr "" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #: ports/raspberrypi/common-hal/usb_host/Port.c #: shared-bindings/digitalio/DigitalInOut.c -#: shared-bindings/microcontroller/Pin.c +#: shared-bindings/microcontroller/Pin.c shared-module/max3421e/Max3421E.c msgid "%q in use" msgstr "%q in uso" @@ -1124,10 +1124,12 @@ msgstr "" msgid "Input/output error" msgstr "Errore input/output" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient authentication" msgstr "" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient encryption" msgstr "" @@ -1164,6 +1166,7 @@ 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/max3421e/Max3421E.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 @@ -1295,6 +1298,10 @@ msgstr "" msgid "MAC address was invalid" msgstr "" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "MITM security not supported" +msgstr "" + #: shared-bindings/is31fl3741/IS31FL3741.c msgid "Mapping must be a tuple" msgstr "" @@ -2155,6 +2162,7 @@ msgstr "" msgid "Unknown BLE error: %d" msgstr "" +#: ports/espressif/common-hal/max3421e/Max3421E.c #: ports/raspberrypi/common-hal/wifi/__init__.c #, c-format msgid "Unknown error code %d" @@ -3844,7 +3852,7 @@ msgstr "pop sun un PulseIn vuoto" msgid "pop from empty %q" msgstr "" -#: shared-bindings/socketpool/Socket.c shared-bindings/ssl/SSLSocket.c +#: shared-bindings/socketpool/Socket.c msgid "port must be >= 0" msgstr "" diff --git a/locale/ja.po b/locale/ja.po index 63368c8a851c..8830833be1a1 100644 --- a/locale/ja.po +++ b/locale/ja.po @@ -126,7 +126,7 @@ msgstr "%q 内の %q は %q 型である必要があり、 %q 型は使用でき #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #: ports/raspberrypi/common-hal/usb_host/Port.c #: shared-bindings/digitalio/DigitalInOut.c -#: shared-bindings/microcontroller/Pin.c +#: shared-bindings/microcontroller/Pin.c shared-module/max3421e/Max3421E.c msgid "%q in use" msgstr "%qは使用中" @@ -1133,10 +1133,12 @@ msgstr "" msgid "Input/output error" msgstr "入力/出力エラー" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient authentication" msgstr "認証が不十分" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient encryption" msgstr "暗号化が不十分" @@ -1173,6 +1175,7 @@ msgstr "内部エラー #%d" #: 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/max3421e/Max3421E.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 @@ -1304,6 +1307,10 @@ msgstr "" msgid "MAC address was invalid" msgstr "" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "MITM security not supported" +msgstr "" + #: shared-bindings/is31fl3741/IS31FL3741.c msgid "Mapping must be a tuple" msgstr "" @@ -2164,6 +2171,7 @@ msgstr "" msgid "Unknown BLE error: %d" msgstr "" +#: ports/espressif/common-hal/max3421e/Max3421E.c #: ports/raspberrypi/common-hal/wifi/__init__.c #, c-format msgid "Unknown error code %d" @@ -3840,7 +3848,7 @@ msgstr "" msgid "pop from empty %q" msgstr "" -#: shared-bindings/socketpool/Socket.c shared-bindings/ssl/SSLSocket.c +#: shared-bindings/socketpool/Socket.c msgid "port must be >= 0" msgstr "" diff --git a/locale/ko.po b/locale/ko.po index cd45202e7c76..89dcda27fd1b 100644 --- a/locale/ko.po +++ b/locale/ko.po @@ -126,7 +126,7 @@ msgstr "%q의 %q는 %q가 아니라 %q 유형이어야 합니다" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #: ports/raspberrypi/common-hal/usb_host/Port.c #: shared-bindings/digitalio/DigitalInOut.c -#: shared-bindings/microcontroller/Pin.c +#: shared-bindings/microcontroller/Pin.c shared-module/max3421e/Max3421E.c msgid "%q in use" msgstr "%q 사용 중입니다" @@ -1168,10 +1168,12 @@ msgstr "입력이 너무 오래 걸린다" msgid "Input/output error" msgstr "입력/출력 오류" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient authentication" msgstr "불충분한 인증" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient encryption" msgstr "불충분한 암호화" @@ -1208,6 +1210,7 @@ msgstr "내부 오류 #%d" #: 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/max3421e/Max3421E.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 @@ -1339,6 +1342,10 @@ msgstr "레이어는 그룹 또는 TileGrid 하위 클래스 여야 합니다" msgid "MAC address was invalid" msgstr "MAC 주소는 잘못되었습니다" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "MITM security not supported" +msgstr "" + #: shared-bindings/is31fl3741/IS31FL3741.c msgid "Mapping must be a tuple" msgstr "매핑은 투플이어야 합니다" @@ -2219,6 +2226,7 @@ msgstr "" msgid "Unknown BLE error: %d" msgstr "" +#: ports/espressif/common-hal/max3421e/Max3421E.c #: ports/raspberrypi/common-hal/wifi/__init__.c #, c-format msgid "Unknown error code %d" @@ -3890,7 +3898,7 @@ msgstr "" msgid "pop from empty %q" msgstr "" -#: shared-bindings/socketpool/Socket.c shared-bindings/ssl/SSLSocket.c +#: shared-bindings/socketpool/Socket.c msgid "port must be >= 0" msgstr "" diff --git a/locale/nl.po b/locale/nl.po index 00528e35cbe3..71125881a9c3 100644 --- a/locale/nl.po +++ b/locale/nl.po @@ -113,7 +113,7 @@ msgstr "" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #: ports/raspberrypi/common-hal/usb_host/Port.c #: shared-bindings/digitalio/DigitalInOut.c -#: shared-bindings/microcontroller/Pin.c +#: shared-bindings/microcontroller/Pin.c shared-module/max3421e/Max3421E.c msgid "%q in use" msgstr "%q in gebruik" @@ -1119,10 +1119,12 @@ msgstr "Invoer duurt te lang" msgid "Input/output error" msgstr "Input/Output fout" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient authentication" msgstr "Onvoldoende authenticatie" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient encryption" msgstr "Onvoldoende encryptie" @@ -1159,6 +1161,7 @@ msgstr "Interne fout #%d" #: 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/max3421e/Max3421E.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 @@ -1290,6 +1293,10 @@ msgstr "" msgid "MAC address was invalid" msgstr "" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "MITM security not supported" +msgstr "" + #: shared-bindings/is31fl3741/IS31FL3741.c msgid "Mapping must be a tuple" msgstr "" @@ -2155,6 +2162,7 @@ msgstr "" msgid "Unknown BLE error: %d" msgstr "" +#: ports/espressif/common-hal/max3421e/Max3421E.c #: ports/raspberrypi/common-hal/wifi/__init__.c #, c-format msgid "Unknown error code %d" @@ -3836,7 +3844,7 @@ msgstr "pop van een lege PulseIn" msgid "pop from empty %q" msgstr "pop van een lege %q" -#: shared-bindings/socketpool/Socket.c shared-bindings/ssl/SSLSocket.c +#: shared-bindings/socketpool/Socket.c msgid "port must be >= 0" msgstr "" diff --git a/locale/pl.po b/locale/pl.po index d0c18bc148b4..91ff5339ffa1 100644 --- a/locale/pl.po +++ b/locale/pl.po @@ -121,7 +121,7 @@ msgstr "%q w %q musi być typu %q, a nie %q" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #: ports/raspberrypi/common-hal/usb_host/Port.c #: shared-bindings/digitalio/DigitalInOut.c -#: shared-bindings/microcontroller/Pin.c +#: shared-bindings/microcontroller/Pin.c shared-module/max3421e/Max3421E.c msgid "%q in use" msgstr "%q w użyciu" @@ -1138,10 +1138,12 @@ msgstr "" msgid "Input/output error" msgstr "Błąd I/O" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient authentication" msgstr "Niewystarczające uwierzytelnienie" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient encryption" msgstr "Niewystarczające szyfrowanie" @@ -1178,6 +1180,7 @@ msgstr "Błąd wewnętrzny #%d" #: 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/max3421e/Max3421E.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 @@ -1309,6 +1312,10 @@ msgstr "" msgid "MAC address was invalid" msgstr "" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "MITM security not supported" +msgstr "" + #: shared-bindings/is31fl3741/IS31FL3741.c msgid "Mapping must be a tuple" msgstr "" @@ -2169,6 +2176,7 @@ msgstr "" msgid "Unknown BLE error: %d" msgstr "" +#: ports/espressif/common-hal/max3421e/Max3421E.c #: ports/raspberrypi/common-hal/wifi/__init__.c #, c-format msgid "Unknown error code %d" @@ -3844,7 +3852,7 @@ msgstr "pop z pustego PulseIn" msgid "pop from empty %q" msgstr "" -#: shared-bindings/socketpool/Socket.c shared-bindings/ssl/SSLSocket.c +#: shared-bindings/socketpool/Socket.c msgid "port must be >= 0" msgstr "" diff --git a/locale/pt_BR.po b/locale/pt_BR.po index 0670c9df12f3..d3a460122a28 100644 --- a/locale/pt_BR.po +++ b/locale/pt_BR.po @@ -126,7 +126,7 @@ msgstr "%q em %q deve ser do tipo %q e não %q" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #: ports/raspberrypi/common-hal/usb_host/Port.c #: shared-bindings/digitalio/DigitalInOut.c -#: shared-bindings/microcontroller/Pin.c +#: shared-bindings/microcontroller/Pin.c shared-module/max3421e/Max3421E.c msgid "%q in use" msgstr "%q em uso" @@ -1149,10 +1149,12 @@ msgstr "A entrada está demorando demais" msgid "Input/output error" msgstr "Erro de entrada/saída" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient authentication" msgstr "Autenticação insuficiente" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient encryption" msgstr "Criptografia insuficiente" @@ -1189,6 +1191,7 @@ msgstr "Erro interno #%d" #: 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/max3421e/Max3421E.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 @@ -1320,6 +1323,10 @@ msgstr "A camada deve ser uma subclasse Group ou TileGrid" msgid "MAC address was invalid" msgstr "O endereço MAC era inválido" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "MITM security not supported" +msgstr "" + #: shared-bindings/is31fl3741/IS31FL3741.c msgid "Mapping must be a tuple" msgstr "O mapeamento deve ser uma tupla" @@ -2199,6 +2206,7 @@ msgstr "Houve um erro BLE desconhecido em %s:%d: %d" msgid "Unknown BLE error: %d" msgstr "Houve um erro BLE desconhecido: %d" +#: ports/espressif/common-hal/max3421e/Max3421E.c #: ports/raspberrypi/common-hal/wifi/__init__.c #, c-format msgid "Unknown error code %d" @@ -3899,7 +3907,7 @@ msgstr "pop a partir de um PulseIn vazio" msgid "pop from empty %q" msgstr "pop a partir do %q vazio" -#: shared-bindings/socketpool/Socket.c shared-bindings/ssl/SSLSocket.c +#: shared-bindings/socketpool/Socket.c msgid "port must be >= 0" msgstr "a porta deve ser > = 0" diff --git a/locale/ru.po b/locale/ru.po index d4de92ac6c21..508060db73ec 100644 --- a/locale/ru.po +++ b/locale/ru.po @@ -128,7 +128,7 @@ msgstr "%q в %q должно быть типа %q, а не %q" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #: ports/raspberrypi/common-hal/usb_host/Port.c #: shared-bindings/digitalio/DigitalInOut.c -#: shared-bindings/microcontroller/Pin.c +#: shared-bindings/microcontroller/Pin.c shared-module/max3421e/Max3421E.c msgid "%q in use" msgstr "%q используется" @@ -1160,10 +1160,12 @@ msgstr "Ввод занимает слишком много времени" msgid "Input/output error" msgstr "Ошибка ввода/вывода" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient authentication" msgstr "Неполная аутентификация" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient encryption" msgstr "Недостаточное шифрование" @@ -1200,6 +1202,7 @@ msgstr "Внутренняя ошибка #%d" #: 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/max3421e/Max3421E.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 @@ -1331,6 +1334,10 @@ msgstr "Слой должен быть группой (Group) или субкл msgid "MAC address was invalid" msgstr "MAC адрес был недействительным" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "MITM security not supported" +msgstr "" + #: shared-bindings/is31fl3741/IS31FL3741.c msgid "Mapping must be a tuple" msgstr "Сопоставление должно быть кортежом" @@ -2205,6 +2212,7 @@ msgstr "Неизвестная ошибка BLE в %s:%d: %d" msgid "Unknown BLE error: %d" msgstr "Неизвестная ошибка BLE: %d" +#: ports/espressif/common-hal/max3421e/Max3421E.c #: ports/raspberrypi/common-hal/wifi/__init__.c #, c-format msgid "Unknown error code %d" @@ -3923,7 +3931,7 @@ msgstr "вытолкнуть из пустого импульсного вход msgid "pop from empty %q" msgstr "Всплывающее окно из пустого %q" -#: shared-bindings/socketpool/Socket.c shared-bindings/ssl/SSLSocket.c +#: shared-bindings/socketpool/Socket.c msgid "port must be >= 0" msgstr "порт должен быть >= 0" diff --git a/locale/sv.po b/locale/sv.po index 2b64d61e22ea..cba644bcb29d 100644 --- a/locale/sv.po +++ b/locale/sv.po @@ -125,7 +125,7 @@ msgstr "%q i %q måste vara av typen %q, inte %q" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #: ports/raspberrypi/common-hal/usb_host/Port.c #: shared-bindings/digitalio/DigitalInOut.c -#: shared-bindings/microcontroller/Pin.c +#: shared-bindings/microcontroller/Pin.c shared-module/max3421e/Max3421E.c msgid "%q in use" msgstr "%q används redan" @@ -1141,10 +1141,12 @@ msgstr "Indata tar för lång tid" msgid "Input/output error" msgstr "Indata-/utdatafel" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient authentication" msgstr "Otillräcklig autentisering" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient encryption" msgstr "Otillräcklig kryptering" @@ -1181,6 +1183,7 @@ msgstr "Internt fel #%d" #: 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/max3421e/Max3421E.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 @@ -1312,6 +1315,10 @@ msgstr "Layer måste vara en underklass av Group eller TileGrid" msgid "MAC address was invalid" msgstr "MAC-adressen var ogiltig" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "MITM security not supported" +msgstr "" + #: shared-bindings/is31fl3741/IS31FL3741.c msgid "Mapping must be a tuple" msgstr "Mappning måste vara en tuple" @@ -2178,6 +2185,7 @@ msgstr "Okänt BLE-fel vid %s:%d: %d" msgid "Unknown BLE error: %d" msgstr "Okänt BLE-fel: %d" +#: ports/espressif/common-hal/max3421e/Max3421E.c #: ports/raspberrypi/common-hal/wifi/__init__.c #, c-format msgid "Unknown error code %d" @@ -3863,7 +3871,7 @@ msgstr "pop från en tom PulseIn" msgid "pop from empty %q" msgstr "pop från tom %q" -#: shared-bindings/socketpool/Socket.c shared-bindings/ssl/SSLSocket.c +#: shared-bindings/socketpool/Socket.c msgid "port must be >= 0" msgstr "port måste vara >= 0" diff --git a/locale/tr.po b/locale/tr.po index 35b42151a14c..3ae980b37c59 100644 --- a/locale/tr.po +++ b/locale/tr.po @@ -121,7 +121,7 @@ msgstr "" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #: ports/raspberrypi/common-hal/usb_host/Port.c #: shared-bindings/digitalio/DigitalInOut.c -#: shared-bindings/microcontroller/Pin.c +#: shared-bindings/microcontroller/Pin.c shared-module/max3421e/Max3421E.c msgid "%q in use" msgstr "%q kullanımda" @@ -1129,10 +1129,12 @@ msgstr "Giriş çok uzun sürüyor" msgid "Input/output error" msgstr "Giriş/çıkış hatası" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient authentication" msgstr "Yetersiz kimlik doğrulama" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient encryption" msgstr "Yetersiz şifreleme" @@ -1169,6 +1171,7 @@ msgstr "Dahili hata #%d" #: 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/max3421e/Max3421E.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 @@ -1301,6 +1304,10 @@ msgstr "Katman, bir Grup ya da TileGrid alt sınıfı olmalıdır" msgid "MAC address was invalid" msgstr "MAC adresi geçersiz" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "MITM security not supported" +msgstr "" + #: shared-bindings/is31fl3741/IS31FL3741.c msgid "Mapping must be a tuple" msgstr "Map tuple olmalıdır" @@ -2158,6 +2165,7 @@ msgstr "" msgid "Unknown BLE error: %d" msgstr "" +#: ports/espressif/common-hal/max3421e/Max3421E.c #: ports/raspberrypi/common-hal/wifi/__init__.c #, c-format msgid "Unknown error code %d" @@ -3829,7 +3837,7 @@ msgstr "" msgid "pop from empty %q" msgstr "" -#: shared-bindings/socketpool/Socket.c shared-bindings/ssl/SSLSocket.c +#: shared-bindings/socketpool/Socket.c msgid "port must be >= 0" msgstr "" diff --git a/locale/zh_Latn_pinyin.po b/locale/zh_Latn_pinyin.po index 49e662a00ac1..ecc4308e7e2b 100644 --- a/locale/zh_Latn_pinyin.po +++ b/locale/zh_Latn_pinyin.po @@ -127,7 +127,7 @@ msgstr "%q zhōng de %q bì xū shì %q lèi xíng, ér bù shì %q" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #: ports/raspberrypi/common-hal/usb_host/Port.c #: shared-bindings/digitalio/DigitalInOut.c -#: shared-bindings/microcontroller/Pin.c +#: shared-bindings/microcontroller/Pin.c shared-module/max3421e/Max3421E.c msgid "%q in use" msgstr "%q zhèngzài bèi shǐyòng" @@ -1147,10 +1147,12 @@ msgstr "Shūrù shíjiānguò zhǎng" msgid "Input/output error" msgstr "Shūrù/shūchū cuòwù" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient authentication" msgstr "Rènzhèng bùzú" +#: ports/espressif/common-hal/_bleio/__init__.c #: ports/nordic/common-hal/_bleio/__init__.c msgid "Insufficient encryption" msgstr "Jiāmì bùzú" @@ -1187,6 +1189,7 @@ msgstr "nèi bù cuò wù #%d" #: 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/max3421e/Max3421E.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 @@ -1318,6 +1321,10 @@ msgstr "tú céng bìxū shì zǔ huò píng pū wǎng gé zi lèi" msgid "MAC address was invalid" msgstr "MAC dì zhǐ wú xiào" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "MITM security not supported" +msgstr "" + #: shared-bindings/is31fl3741/IS31FL3741.c msgid "Mapping must be a tuple" msgstr "yìng shè bì xū shì yuán zǔ" @@ -2184,6 +2191,7 @@ msgstr "%s:%d: %d chù chū xiàn wèi zhī BLE cuò wù" msgid "Unknown BLE error: %d" msgstr "wèi zhī de BLE cuò wù: %d" +#: ports/espressif/common-hal/max3421e/Max3421E.c #: ports/raspberrypi/common-hal/wifi/__init__.c #, c-format msgid "Unknown error code %d" @@ -3869,7 +3877,7 @@ msgstr "cóng kōng mài chōng tán chū" msgid "pop from empty %q" msgstr "cóng kōng %q dànchū" -#: shared-bindings/socketpool/Socket.c shared-bindings/ssl/SSLSocket.c +#: shared-bindings/socketpool/Socket.c msgid "port must be >= 0" msgstr "duān kǒu bì xū wéi >= 0" From ed2f32fadb959fb9e5dbd88f95afa7a08eb64fa6 Mon Sep 17 00:00:00 2001 From: Scott Shawcroft Date: Thu, 6 Jun 2024 16:55:13 -0700 Subject: [PATCH 135/227] Enable deep sleep on all ESP chips Features of each chip is documented in this spreadsheet: https://docs.google.com/spreadsheets/d/1NyKzHOWeWMb8UttDDugeeOANZ4m-idMHM6kiTlUUVIg/edit?usp=sharing Fixes #9056 --- ports/espressif/Makefile | 6 +- .../01space_lcd042_esp32c3/mpconfigboard.mk | 5 +- .../mpconfigboard.mk | 5 +- .../adafruit_qtpy_esp32c3/mpconfigboard.mk | 5 +- .../ai_thinker_esp32-c3s/mpconfigboard.mk | 5 +- .../boards/beetle-esp32-c3/mpconfigboard.mk | 5 +- .../boards/deneyap_kart/mpconfigboard.mk | 5 +- .../boards/deneyap_kart_1a/mpconfigboard.mk | 5 +- .../deneyap_kart_1a_v2/mpconfigboard.mk | 5 +- .../boards/deneyap_kart_g/mpconfigboard.mk | 5 +- .../boards/deneyap_mini/mpconfigboard.mk | 5 +- .../boards/deneyap_mini_v2/mpconfigboard.mk | 5 +- .../doit_esp32_devkit_v1/mpconfigboard.mk | 5 +- .../mpconfigboard.mk | 5 +- .../espressif_esp32_eye/mpconfigboard.mk | 5 +- .../espressif_esp32_lyrat/mpconfigboard.mk | 5 +- .../lilygo_ttgo_t-oi-plus/mpconfigboard.mk | 5 +- .../mpconfigboard.mk | 5 +- .../boards/lolin_c3_mini/mpconfigboard.mk | 5 +- .../boards/lolin_c3_pico/mpconfigboard.mk | 5 +- .../luatos_core_esp32c3/mpconfigboard.mk | 5 +- .../mpconfigboard.mk | 5 +- .../boards/m5stack_atom_echo/mpconfigboard.mk | 5 +- .../boards/m5stack_atom_lite/mpconfigboard.mk | 5 +- .../m5stack_atom_matrix/mpconfigboard.mk | 5 +- .../boards/m5stack_atom_u/mpconfigboard.mk | 5 +- .../boards/m5stack_stamp_c3/mpconfigboard.mk | 5 +- .../boards/m5stack_stick_c/mpconfigboard.mk | 5 +- .../m5stack_stick_c_plus/mpconfigboard.mk | 5 +- .../m5stack_timer_camera_x/mpconfigboard.mk | 5 +- .../mpconfigboard.mk | 5 +- .../boards/microdev_micro_c3/mpconfigboard.mk | 5 +- .../seeed_xiao_esp32c3/mpconfigboard.mk | 5 +- .../boards/sqfmi_watchy/mpconfigboard.mk | 5 +- .../sunton_esp32_2424S012/mpconfigboard.mk | 5 +- .../sunton_esp32_2432S028/mpconfigboard.mk | 5 +- .../unexpectedmaker_tinypico/mpconfigboard.mk | 5 +- .../mpconfigboard.mk | 5 +- .../boards/weact_esp32c6_n4/mpconfigboard.mk | 6 +- .../wemos_lolin32_lite/mpconfigboard.mk | 5 +- .../espressif/common-hal/alarm/SleepMemory.h | 5 +- ports/espressif/common-hal/alarm/__init__.c | 13 +- .../espressif/common-hal/alarm/pin/PinAlarm.c | 219 ++++++++++++++---- ports/espressif/mpconfigport.mk | 26 ++- py/circuitpy_defns.mk | 5 +- py/circuitpy_mpconfig.mk | 3 + shared-bindings/alarm/__init__.c | 10 +- supervisor/shared/workflow.c | 23 +- 48 files changed, 292 insertions(+), 214 deletions(-) diff --git a/ports/espressif/Makefile b/ports/espressif/Makefile index 629376add113..9f2c32e412ba 100644 --- a/ports/espressif/Makefile +++ b/ports/espressif/Makefile @@ -407,7 +407,11 @@ ifeq ($(UF2_BOOTLOADER), 1) FLASH_SIZE_SDKCONFIG ?= esp-idf-config/sdkconfig-flash-$(CIRCUITPY_ESP_FLASH_SIZE).defaults else ifeq ($(CIRCUITPY_ESP_FLASH_SIZE), 4MB) - FLASH_SIZE_SDKCONFIG ?= esp-idf-config/sdkconfig-flash-$(CIRCUITPY_ESP_FLASH_SIZE)-no-ota-no-uf2.defaults + ifeq ($(CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT), 1) + FLASH_SIZE_SDKCONFIG ?= esp-idf-config/sdkconfig-flash-$(CIRCUITPY_ESP_FLASH_SIZE)-no-uf2.defaults + else + FLASH_SIZE_SDKCONFIG ?= esp-idf-config/sdkconfig-flash-$(CIRCUITPY_ESP_FLASH_SIZE)-no-ota-no-uf2.defaults + endif else FLASH_SIZE_SDKCONFIG ?= esp-idf-config/sdkconfig-flash-$(CIRCUITPY_ESP_FLASH_SIZE)-no-uf2.defaults endif diff --git a/ports/espressif/boards/01space_lcd042_esp32c3/mpconfigboard.mk b/ports/espressif/boards/01space_lcd042_esp32c3/mpconfigboard.mk index 887fdf286d7c..f0067c0d22b4 100644 --- a/ports/espressif/boards/01space_lcd042_esp32c3/mpconfigboard.mk +++ b/ports/espressif/boards/01space_lcd042_esp32c3/mpconfigboard.mk @@ -7,9 +7,6 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 CIRCUITPY_ESP_USB_SERIAL_JTAG = 1 diff --git a/ports/espressif/boards/adafruit_huzzah32_breakout/mpconfigboard.mk b/ports/espressif/boards/adafruit_huzzah32_breakout/mpconfigboard.mk index 36639e0313b1..24909715b970 100644 --- a/ports/espressif/boards/adafruit_huzzah32_breakout/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_huzzah32_breakout/mpconfigboard.mk @@ -7,9 +7,6 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 CIRCUITPY_ESPCAMERA = 0 diff --git a/ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.mk b/ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.mk index de5ad5d7cbc2..4063a6395226 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.mk @@ -7,10 +7,7 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 CIRCUITPY_ESP_USB_SERIAL_JTAG = 1 diff --git a/ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.mk b/ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.mk index d1313a82c7f3..f907853f2382 100644 --- a/ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.mk +++ b/ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.mk @@ -7,9 +7,6 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 CIRCUITPY_ESP_USB_SERIAL_JTAG = 0 diff --git a/ports/espressif/boards/beetle-esp32-c3/mpconfigboard.mk b/ports/espressif/boards/beetle-esp32-c3/mpconfigboard.mk index 16159905ba9f..a03e6c32eb2c 100644 --- a/ports/espressif/boards/beetle-esp32-c3/mpconfigboard.mk +++ b/ports/espressif/boards/beetle-esp32-c3/mpconfigboard.mk @@ -8,9 +8,6 @@ CIRCUITPY_ESP_FLASH_MODE=qio CIRCUITPY_ESP_FLASH_FREQ=80m CIRCUITPY_ESP_FLASH_SIZE=4MB -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 CIRCUITPY_ESP_USB_SERIAL_JTAG = 1 diff --git a/ports/espressif/boards/deneyap_kart/mpconfigboard.mk b/ports/espressif/boards/deneyap_kart/mpconfigboard.mk index 59a5748ab7d9..df54649ec529 100644 --- a/ports/espressif/boards/deneyap_kart/mpconfigboard.mk +++ b/ports/espressif/boards/deneyap_kart/mpconfigboard.mk @@ -11,7 +11,4 @@ CIRCUITPY_ESP_PSRAM_SIZE = 8MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 80m -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 diff --git a/ports/espressif/boards/deneyap_kart_1a/mpconfigboard.mk b/ports/espressif/boards/deneyap_kart_1a/mpconfigboard.mk index 4bc7133c24a9..17dfe4fe7686 100644 --- a/ports/espressif/boards/deneyap_kart_1a/mpconfigboard.mk +++ b/ports/espressif/boards/deneyap_kart_1a/mpconfigboard.mk @@ -11,7 +11,4 @@ CIRCUITPY_ESP_PSRAM_SIZE = 8MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 80m -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 diff --git a/ports/espressif/boards/deneyap_kart_1a_v2/mpconfigboard.mk b/ports/espressif/boards/deneyap_kart_1a_v2/mpconfigboard.mk index 16686a212013..cb994090192b 100644 --- a/ports/espressif/boards/deneyap_kart_1a_v2/mpconfigboard.mk +++ b/ports/espressif/boards/deneyap_kart_1a_v2/mpconfigboard.mk @@ -14,10 +14,7 @@ CIRCUITPY_ESP_PSRAM_SIZE = 8MB CIRCUITPY_ESP_PSRAM_MODE = opi CIRCUITPY_ESP_PSRAM_FREQ = 80m -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 CIRCUITPY_ESPCAMERA = 0 CIRCUITPY_BITMAPFILTER = 0 diff --git a/ports/espressif/boards/deneyap_kart_g/mpconfigboard.mk b/ports/espressif/boards/deneyap_kart_g/mpconfigboard.mk index dd721a53f5ad..8aaea636b843 100644 --- a/ports/espressif/boards/deneyap_kart_g/mpconfigboard.mk +++ b/ports/espressif/boards/deneyap_kart_g/mpconfigboard.mk @@ -7,9 +7,6 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 CIRCUITPY_ESP_USB_SERIAL_JTAG = 1 diff --git a/ports/espressif/boards/deneyap_mini/mpconfigboard.mk b/ports/espressif/boards/deneyap_mini/mpconfigboard.mk index 764e78f7488d..007b7ebc82ab 100644 --- a/ports/espressif/boards/deneyap_mini/mpconfigboard.mk +++ b/ports/espressif/boards/deneyap_mini/mpconfigboard.mk @@ -10,9 +10,6 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 CIRCUITPY_ESPCAMERA = 0 diff --git a/ports/espressif/boards/deneyap_mini_v2/mpconfigboard.mk b/ports/espressif/boards/deneyap_mini_v2/mpconfigboard.mk index 315c33a88858..457d4b931614 100644 --- a/ports/espressif/boards/deneyap_mini_v2/mpconfigboard.mk +++ b/ports/espressif/boards/deneyap_mini_v2/mpconfigboard.mk @@ -14,7 +14,4 @@ CIRCUITPY_ESP_PSRAM_SIZE = 2MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 80m -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 diff --git a/ports/espressif/boards/doit_esp32_devkit_v1/mpconfigboard.mk b/ports/espressif/boards/doit_esp32_devkit_v1/mpconfigboard.mk index ee24e1131b76..9f657c6552db 100644 --- a/ports/espressif/boards/doit_esp32_devkit_v1/mpconfigboard.mk +++ b/ports/espressif/boards/doit_esp32_devkit_v1/mpconfigboard.mk @@ -8,7 +8,4 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESPCAMERA = 0 -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 diff --git a/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/mpconfigboard.mk index ed1f5e13b71a..766196f9b30f 100644 --- a/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32_devkitc_v4_wroom_32e/mpconfigboard.mk @@ -7,9 +7,6 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 CIRCUITPY_ESPCAMERA = 0 diff --git a/ports/espressif/boards/espressif_esp32_eye/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32_eye/mpconfigboard.mk index bd067e9ec1d9..92d855842ff3 100644 --- a/ports/espressif/boards/espressif_esp32_eye/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32_eye/mpconfigboard.mk @@ -13,10 +13,7 @@ CIRCUITPY_ESP_PSRAM_SIZE = 8MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 40m -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 CIRCUITPY_CANIO = 0 CIRCUITPY_NEOPIXEL_WRITE = 0 diff --git a/ports/espressif/boards/espressif_esp32_lyrat/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32_lyrat/mpconfigboard.mk index ce0eb3467eeb..4865e8550239 100644 --- a/ports/espressif/boards/espressif_esp32_lyrat/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32_lyrat/mpconfigboard.mk @@ -11,9 +11,6 @@ CIRCUITPY_ESP_PSRAM_SIZE = 4MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 40m -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 CIRCUITPY_ESPCAMERA = 0 diff --git a/ports/espressif/boards/lilygo_ttgo_t-oi-plus/mpconfigboard.mk b/ports/espressif/boards/lilygo_ttgo_t-oi-plus/mpconfigboard.mk index d9bd399cb87a..d7eba6ea262c 100644 --- a/ports/espressif/boards/lilygo_ttgo_t-oi-plus/mpconfigboard.mk +++ b/ports/espressif/boards/lilygo_ttgo_t-oi-plus/mpconfigboard.mk @@ -7,9 +7,6 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 CIRCUITPY_ESP_USB_SERIAL_JTAG = 0 diff --git a/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/mpconfigboard.mk b/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/mpconfigboard.mk index d24fca347638..af1bd8b17898 100644 --- a/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/mpconfigboard.mk +++ b/ports/espressif/boards/lilygo_ttgo_tdisplay_esp32_4m/mpconfigboard.mk @@ -7,9 +7,6 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 CIRCUITPY_ESPCAMERA = 0 diff --git a/ports/espressif/boards/lolin_c3_mini/mpconfigboard.mk b/ports/espressif/boards/lolin_c3_mini/mpconfigboard.mk index f9aa6d8f90a5..36dc38883ff3 100644 --- a/ports/espressif/boards/lolin_c3_mini/mpconfigboard.mk +++ b/ports/espressif/boards/lolin_c3_mini/mpconfigboard.mk @@ -7,9 +7,6 @@ CIRCUITPY_ESP_FLASH_MODE=qio CIRCUITPY_ESP_FLASH_FREQ=80m CIRCUITPY_ESP_FLASH_SIZE=4MB -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 CIRCUITPY_ESP_USB_SERIAL_JTAG = 1 diff --git a/ports/espressif/boards/lolin_c3_pico/mpconfigboard.mk b/ports/espressif/boards/lolin_c3_pico/mpconfigboard.mk index 5fd7ec9db22e..51b1adfe5a1d 100644 --- a/ports/espressif/boards/lolin_c3_pico/mpconfigboard.mk +++ b/ports/espressif/boards/lolin_c3_pico/mpconfigboard.mk @@ -7,10 +7,7 @@ CIRCUITPY_ESP_FLASH_MODE=qio CIRCUITPY_ESP_FLASH_FREQ=80m CIRCUITPY_ESP_FLASH_SIZE=4MB -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 CIRCUITPY_ESP_USB_SERIAL_JTAG = 1 diff --git a/ports/espressif/boards/luatos_core_esp32c3/mpconfigboard.mk b/ports/espressif/boards/luatos_core_esp32c3/mpconfigboard.mk index e2c7765a2017..ea3c7a44621f 100644 --- a/ports/espressif/boards/luatos_core_esp32c3/mpconfigboard.mk +++ b/ports/espressif/boards/luatos_core_esp32c3/mpconfigboard.mk @@ -7,9 +7,6 @@ CIRCUITPY_ESP_FLASH_MODE=dio CIRCUITPY_ESP_FLASH_FREQ=80m CIRCUITPY_ESP_FLASH_SIZE=4MB -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 CIRCUITPY_ESP_USB_SERIAL_JTAG = 1 diff --git a/ports/espressif/boards/luatos_core_esp32c3_ch343/mpconfigboard.mk b/ports/espressif/boards/luatos_core_esp32c3_ch343/mpconfigboard.mk index ec1910762913..bb793f0f2629 100644 --- a/ports/espressif/boards/luatos_core_esp32c3_ch343/mpconfigboard.mk +++ b/ports/espressif/boards/luatos_core_esp32c3_ch343/mpconfigboard.mk @@ -7,9 +7,6 @@ CIRCUITPY_ESP_FLASH_MODE=dio CIRCUITPY_ESP_FLASH_FREQ=80m CIRCUITPY_ESP_FLASH_SIZE=4MB -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 CIRCUITPY_ESP_USB_SERIAL_JTAG = 0 diff --git a/ports/espressif/boards/m5stack_atom_echo/mpconfigboard.mk b/ports/espressif/boards/m5stack_atom_echo/mpconfigboard.mk index 86991d4c6a36..a40381f8a348 100644 --- a/ports/espressif/boards/m5stack_atom_echo/mpconfigboard.mk +++ b/ports/espressif/boards/m5stack_atom_echo/mpconfigboard.mk @@ -7,9 +7,6 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 CIRCUITPY_ESPCAMERA = 0 diff --git a/ports/espressif/boards/m5stack_atom_lite/mpconfigboard.mk b/ports/espressif/boards/m5stack_atom_lite/mpconfigboard.mk index c16c3796ca2e..215fd976df36 100644 --- a/ports/espressif/boards/m5stack_atom_lite/mpconfigboard.mk +++ b/ports/espressif/boards/m5stack_atom_lite/mpconfigboard.mk @@ -7,9 +7,6 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 CIRCUITPY_ESPCAMERA = 0 diff --git a/ports/espressif/boards/m5stack_atom_matrix/mpconfigboard.mk b/ports/espressif/boards/m5stack_atom_matrix/mpconfigboard.mk index 76e440fe41bc..081750d143f9 100644 --- a/ports/espressif/boards/m5stack_atom_matrix/mpconfigboard.mk +++ b/ports/espressif/boards/m5stack_atom_matrix/mpconfigboard.mk @@ -7,9 +7,6 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 CIRCUITPY_ESPCAMERA = 0 diff --git a/ports/espressif/boards/m5stack_atom_u/mpconfigboard.mk b/ports/espressif/boards/m5stack_atom_u/mpconfigboard.mk index 9a84fa2e52fc..abcd5f8724d8 100644 --- a/ports/espressif/boards/m5stack_atom_u/mpconfigboard.mk +++ b/ports/espressif/boards/m5stack_atom_u/mpconfigboard.mk @@ -7,9 +7,6 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 CIRCUITPY_ESPCAMERA = 0 diff --git a/ports/espressif/boards/m5stack_stamp_c3/mpconfigboard.mk b/ports/espressif/boards/m5stack_stamp_c3/mpconfigboard.mk index 482202bee364..2c856c6fc003 100644 --- a/ports/espressif/boards/m5stack_stamp_c3/mpconfigboard.mk +++ b/ports/espressif/boards/m5stack_stamp_c3/mpconfigboard.mk @@ -7,9 +7,6 @@ CIRCUITPY_ESP_FLASH_MODE=qio CIRCUITPY_ESP_FLASH_FREQ=80m CIRCUITPY_ESP_FLASH_SIZE=4MB -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 CIRCUITPY_ESP_USB_SERIAL_JTAG = 0 diff --git a/ports/espressif/boards/m5stack_stick_c/mpconfigboard.mk b/ports/espressif/boards/m5stack_stick_c/mpconfigboard.mk index b1d5b49417b9..ce94e71dff2a 100644 --- a/ports/espressif/boards/m5stack_stick_c/mpconfigboard.mk +++ b/ports/espressif/boards/m5stack_stick_c/mpconfigboard.mk @@ -8,9 +8,6 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESPCAMERA = 0 -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 SRC_C += pmic/axp192/axp192.c diff --git a/ports/espressif/boards/m5stack_stick_c_plus/mpconfigboard.mk b/ports/espressif/boards/m5stack_stick_c_plus/mpconfigboard.mk index b6d3fbe48100..bee1fc7e7811 100644 --- a/ports/espressif/boards/m5stack_stick_c_plus/mpconfigboard.mk +++ b/ports/espressif/boards/m5stack_stick_c_plus/mpconfigboard.mk @@ -8,9 +8,6 @@ CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESPCAMERA = 0 -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 SRC_C += pmic/axp192/axp192.c diff --git a/ports/espressif/boards/m5stack_timer_camera_x/mpconfigboard.mk b/ports/espressif/boards/m5stack_timer_camera_x/mpconfigboard.mk index a9979321367c..4fcacd94d3d2 100644 --- a/ports/espressif/boards/m5stack_timer_camera_x/mpconfigboard.mk +++ b/ports/espressif/boards/m5stack_timer_camera_x/mpconfigboard.mk @@ -11,7 +11,4 @@ CIRCUITPY_ESP_PSRAM_SIZE = 8MB CIRCUITPY_ESP_PSRAM_MODE = opi CIRCUITPY_ESP_PSRAM_FREQ = 80m -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 diff --git a/ports/espressif/boards/makergo_esp32c3_supermini/mpconfigboard.mk b/ports/espressif/boards/makergo_esp32c3_supermini/mpconfigboard.mk index 3d83c635da94..37c27203af31 100644 --- a/ports/espressif/boards/makergo_esp32c3_supermini/mpconfigboard.mk +++ b/ports/espressif/boards/makergo_esp32c3_supermini/mpconfigboard.mk @@ -7,9 +7,6 @@ CIRCUITPY_ESP_FLASH_MODE=dio CIRCUITPY_ESP_FLASH_FREQ=80m CIRCUITPY_ESP_FLASH_SIZE=4MB -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 CIRCUITPY_ESP_USB_SERIAL_JTAG = 1 diff --git a/ports/espressif/boards/microdev_micro_c3/mpconfigboard.mk b/ports/espressif/boards/microdev_micro_c3/mpconfigboard.mk index fcdafae41223..b2ea6005db53 100644 --- a/ports/espressif/boards/microdev_micro_c3/mpconfigboard.mk +++ b/ports/espressif/boards/microdev_micro_c3/mpconfigboard.mk @@ -7,9 +7,6 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 CIRCUITPY_ESP_USB_SERIAL_JTAG = 1 diff --git a/ports/espressif/boards/seeed_xiao_esp32c3/mpconfigboard.mk b/ports/espressif/boards/seeed_xiao_esp32c3/mpconfigboard.mk index 3b787bdf112d..b71a41ef6e31 100644 --- a/ports/espressif/boards/seeed_xiao_esp32c3/mpconfigboard.mk +++ b/ports/espressif/boards/seeed_xiao_esp32c3/mpconfigboard.mk @@ -7,9 +7,6 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 CIRCUITPY_ESP_USB_SERIAL_JTAG = 1 diff --git a/ports/espressif/boards/sqfmi_watchy/mpconfigboard.mk b/ports/espressif/boards/sqfmi_watchy/mpconfigboard.mk index 7fcc1a6e635c..520894ea70a1 100644 --- a/ports/espressif/boards/sqfmi_watchy/mpconfigboard.mk +++ b/ports/espressif/boards/sqfmi_watchy/mpconfigboard.mk @@ -8,9 +8,6 @@ CIRCUITPY_ESP_FLASH_MODE=dio CIRCUITPY_ESP_FLASH_FREQ=40m CIRCUITPY_ESP_FLASH_SIZE=4MB -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 IDF_TARGET = esp32 diff --git a/ports/espressif/boards/sunton_esp32_2424S012/mpconfigboard.mk b/ports/espressif/boards/sunton_esp32_2424S012/mpconfigboard.mk index 7c58fb169cfd..2a84d801bc32 100644 --- a/ports/espressif/boards/sunton_esp32_2424S012/mpconfigboard.mk +++ b/ports/espressif/boards/sunton_esp32_2424S012/mpconfigboard.mk @@ -7,9 +7,6 @@ CIRCUITPY_ESP_FLASH_MODE=qio CIRCUITPY_ESP_FLASH_FREQ=80m CIRCUITPY_ESP_FLASH_SIZE=4MB -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 CIRCUITPY_ESP_USB_SERIAL_JTAG = 1 diff --git a/ports/espressif/boards/sunton_esp32_2432S028/mpconfigboard.mk b/ports/espressif/boards/sunton_esp32_2432S028/mpconfigboard.mk index 6254c3c5b0b5..444c80227ab0 100644 --- a/ports/espressif/boards/sunton_esp32_2432S028/mpconfigboard.mk +++ b/ports/espressif/boards/sunton_esp32_2432S028/mpconfigboard.mk @@ -9,7 +9,4 @@ CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESPCAMERA = 0 -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 diff --git a/ports/espressif/boards/unexpectedmaker_tinypico/mpconfigboard.mk b/ports/espressif/boards/unexpectedmaker_tinypico/mpconfigboard.mk index 3c0ceb6f1b33..4086abba11ea 100644 --- a/ports/espressif/boards/unexpectedmaker_tinypico/mpconfigboard.mk +++ b/ports/espressif/boards/unexpectedmaker_tinypico/mpconfigboard.mk @@ -11,7 +11,4 @@ CIRCUITPY_ESP_PSRAM_SIZE = 8MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 80m -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 diff --git a/ports/espressif/boards/unexpectedmaker_tinypico_nano/mpconfigboard.mk b/ports/espressif/boards/unexpectedmaker_tinypico_nano/mpconfigboard.mk index 92571c32d2ce..550e0d4a76c3 100644 --- a/ports/espressif/boards/unexpectedmaker_tinypico_nano/mpconfigboard.mk +++ b/ports/espressif/boards/unexpectedmaker_tinypico_nano/mpconfigboard.mk @@ -11,7 +11,4 @@ CIRCUITPY_ESP_PSRAM_SIZE = 8MB CIRCUITPY_ESP_PSRAM_MODE = qio CIRCUITPY_ESP_PSRAM_FREQ = 80m -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 diff --git a/ports/espressif/boards/weact_esp32c6_n4/mpconfigboard.mk b/ports/espressif/boards/weact_esp32c6_n4/mpconfigboard.mk index 90d1d9f243e3..45309d289048 100644 --- a/ports/espressif/boards/weact_esp32c6_n4/mpconfigboard.mk +++ b/ports/espressif/boards/weact_esp32c6_n4/mpconfigboard.mk @@ -7,8 +7,6 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 + CIRCUITPY_AUDIOMP3 = 0 diff --git a/ports/espressif/boards/wemos_lolin32_lite/mpconfigboard.mk b/ports/espressif/boards/wemos_lolin32_lite/mpconfigboard.mk index a300f6969f0a..3c456881819d 100644 --- a/ports/espressif/boards/wemos_lolin32_lite/mpconfigboard.mk +++ b/ports/espressif/boards/wemos_lolin32_lite/mpconfigboard.mk @@ -9,7 +9,4 @@ CIRCUITPY_ESP_FLASH_SIZE = 4MB CIRCUITPY_ESPCAMERA = 0 -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 diff --git a/ports/espressif/common-hal/alarm/SleepMemory.h b/ports/espressif/common-hal/alarm/SleepMemory.h index 67a1b4659f69..44a9c7b4adec 100644 --- a/ports/espressif/common-hal/alarm/SleepMemory.h +++ b/ports/espressif/common-hal/alarm/SleepMemory.h @@ -21,7 +21,10 @@ // is set. Any memory not allocated by us can be used by the ESP-IDF for heap or other purposes. // Use half of RTC_SLOW_MEM or RTC_FAST_MEM. -#ifdef CONFIG_IDF_TARGET_ESP32 +#if defined(CONFIG_IDF_TARGET_ESP32H2) +// H2 has 4k of low power RAM +#define SLEEP_MEMORY_LENGTH (2 * 1024) +#elif defined(CONFIG_IDF_TARGET_ESP32) #define SLEEP_MEMORY_LENGTH (3 * 1024) #else #define SLEEP_MEMORY_LENGTH (4 * 1024) diff --git a/ports/espressif/common-hal/alarm/__init__.c b/ports/espressif/common-hal/alarm/__init__.c index d5c4d7625adc..fdf8aaea6d62 100644 --- a/ports/espressif/common-hal/alarm/__init__.c +++ b/ports/espressif/common-hal/alarm/__init__.c @@ -30,7 +30,6 @@ #include "esp_sleep.h" -#include "soc/rtc_cntl_reg.h" #include "components/driver/gpio/include/driver/gpio.h" #include "components/driver/uart/include/driver/uart.h" @@ -49,7 +48,9 @@ void alarm_reset(void) { alarm_sleep_memory_reset(); alarm_pin_pinalarm_reset(); alarm_time_timealarm_reset(); + #if CIRCUITPY_ALARM_TOUCH alarm_touch_touchalarm_reset(); + #endif #if CIRCUITPY_ESPULP espulp_ulpalarm_reset(); #endif @@ -64,9 +65,11 @@ static esp_sleep_wakeup_cause_t _get_wakeup_cause(bool deep_sleep) { if (alarm_time_timealarm_woke_this_cycle()) { return ESP_SLEEP_WAKEUP_TIMER; } + #if CIRCUITPY_ALARM_TOUCH if (alarm_touch_touchalarm_woke_this_cycle()) { return ESP_SLEEP_WAKEUP_TOUCHPAD; } + #endif #if CIRCUITPY_ESPULP if (espulp_ulpalarm_woke_this_cycle()) { return ESP_SLEEP_WAKEUP_ULP; @@ -99,9 +102,11 @@ mp_obj_t common_hal_alarm_record_wake_alarm(void) { return alarm_pin_pinalarm_record_wake_alarm(); } + #if CIRCUITPY_ALARM_TOUCH case ESP_SLEEP_WAKEUP_TOUCHPAD: { return alarm_touch_touchalarm_record_wake_alarm(); } + #endif #if CIRCUITPY_ESPULP case ESP_SLEEP_WAKEUP_ULP: { @@ -121,7 +126,9 @@ mp_obj_t common_hal_alarm_record_wake_alarm(void) { static void _setup_sleep_alarms(bool deep_sleep, size_t n_alarms, const mp_obj_t *alarms) { alarm_pin_pinalarm_set_alarms(deep_sleep, n_alarms, alarms); alarm_time_timealarm_set_alarms(deep_sleep, n_alarms, alarms); + #if CIRCUITPY_ALARM_TOUCH alarm_touch_touchalarm_set_alarm(deep_sleep, n_alarms, alarms); + #endif #if CIRCUITPY_ESPULP espulp_ulpalarm_set_alarm(deep_sleep, n_alarms, alarms); #endif @@ -147,10 +154,12 @@ mp_obj_t common_hal_alarm_light_sleep_until_alarms(size_t n_alarms, const mp_obj wake_alarm = alarm_pin_pinalarm_find_triggered_alarm(n_alarms, alarms); break; } + #if CIRCUITPY_ALARM_TOUCH case ESP_SLEEP_WAKEUP_TOUCHPAD: { wake_alarm = alarm_touch_touchalarm_find_triggered_alarm(n_alarms, alarms); break; } + #endif #if CIRCUITPY_ESPULP case ESP_SLEEP_WAKEUP_ULP: { wake_alarm = espulp_ulpalarm_find_triggered_alarm(n_alarms, alarms); @@ -182,7 +191,9 @@ void common_hal_alarm_set_deep_sleep_alarms(size_t n_alarms, const mp_obj_t *ala void NORETURN common_hal_alarm_enter_deep_sleep(void) { alarm_pin_pinalarm_prepare_for_deep_sleep(); + #if CIRCUITPY_ALARM_TOUCH alarm_touch_touchalarm_prepare_for_deep_sleep(); + #endif #if CIRCUITPY_ESPULP espulp_ulpalarm_prepare_for_deep_sleep(); #endif diff --git a/ports/espressif/common-hal/alarm/pin/PinAlarm.c b/ports/espressif/common-hal/alarm/pin/PinAlarm.c index 302f5afca85f..4046daf0426e 100644 --- a/ports/espressif/common-hal/alarm/pin/PinAlarm.c +++ b/ports/espressif/common-hal/alarm/pin/PinAlarm.c @@ -16,6 +16,10 @@ #include "hal/gpio_ll.h" #include "esp_debug_helpers.h" +#ifdef SOC_PM_SUPPORT_EXT0_WAKEUP +#include "soc/rtc_cntl_reg.h" +#endif + #include "driver/rtc_io.h" #include "freertos/FreeRTOS.h" @@ -57,8 +61,10 @@ static void gpio_interrupt(void *arg) { gpio_ll_get_intr_status(&GPIO, xPortGetCoreID(), (uint32_t *)&pin_31_0_status); gpio_ll_clear_intr_status(&GPIO, pin_31_0_status); + #if SOC_GPIO_PIN_COUNT > 32 gpio_ll_get_intr_status_high(&GPIO, xPortGetCoreID(), (uint32_t *)&pin_63_32_status); gpio_ll_clear_intr_status_high(&GPIO, pin_63_32_status); + #endif // disable the interrupts that fired, maybe all of them for (size_t i = 0; i < 32; i++) { @@ -66,9 +72,11 @@ static void gpio_interrupt(void *arg) { if ((pin_31_0_status & mask) != 0) { gpio_ll_intr_disable(&GPIO, i); } + #if SOC_GPIO_PIN_COUNT > 32 if ((pin_63_32_status & mask) != 0) { gpio_ll_intr_disable(&GPIO, 32 + i); } + #endif } port_wake_main_task_from_isr(); } @@ -98,22 +106,33 @@ mp_obj_t alarm_pin_pinalarm_record_wake_alarm(void) { uint64_t pin_status = ((uint64_t)pin_63_32_status) << 32 | pin_31_0_status; size_t pin_number = 64; + #ifdef SOC_PM_SUPPORT_EXT0_WAKEUP if (cause == ESP_SLEEP_WAKEUP_EXT0) { pin_number = REG_GET_FIELD(RTC_IO_EXT_WAKEUP0_REG, RTC_IO_EXT_WAKEUP0_SEL); - } else { - if (cause == ESP_SLEEP_WAKEUP_EXT1) { - pin_status = esp_sleep_get_ext1_wakeup_status(); - } - // If the cause is GPIO, we've already snagged pin_status in the interrupt. - // We'll only get here if we pretended to deep sleep. Light sleep will - // pass in existing objects. - for (size_t i = 0; i < 64; i++) { - if ((pin_status & (1ull << i)) != 0) { - pin_number = i; - break; - } + } else + #endif + #ifdef SOC_PM_SUPPORT_EXT0_WAKEUP + if (cause == ESP_SLEEP_WAKEUP_EXT1) { + pin_status = esp_sleep_get_ext1_wakeup_status(); + } + #endif + #ifdef SOC_GPIO_SUPPORT_DEEPSLEEP_WAKEUP + if (cause == ESP_SLEEP_WAKEUP_GPIO) { + pin_status = esp_sleep_get_gpio_wakeup_status(); + } + #endif + // If the cause is GPIO, we've already snagged pin_status in the interrupt. + // We'll only get here if we pretended to deep sleep. Light sleep will + // pass in existing objects. + for (size_t i = 0; i < 64; i++) { + if ((pin_status & (1ull << i)) != 0) { + pin_number = i; + break; } } + #ifdef SOC_PM_SUPPORT_EXT0_WAKEUP +} + #endif alarm_pin_pinalarm_obj_t *const alarm = &alarm_wake_alarm.pin_alarm; @@ -157,6 +176,135 @@ void alarm_pin_pinalarm_reset(void) { pin_31_0_status = 0; } +#ifdef SOC_PM_SUPPORT_EXT1_WAKEUP +static esp_err_t _setup_ext1(size_t low_count, size_t high_count) { + esp_err_t result; + if (low_count > 0) { + result = esp_sleep_enable_ext1_wakeup_io(low_alarms, ESP_EXT1_WAKEUP_ANY_LOW); + if (result != ESP_OK) { + return result; + } + } + if (high_count > 0) { + result = esp_sleep_enable_ext1_wakeup_io(high_alarms, ESP_EXT1_WAKEUP_ANY_HIGH); + if (result != ESP_OK) { + return result; + } + } + + #ifdef SOC_PM_SUPPORT_RTC_PERIPH_PD + esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); + #endif + return ESP_OK; +} +#endif + +// How to wake from deep sleep by a pin varies a lot across the ESP line and isn't hidden behind +// the IDF API. So we change our _setup_deep_sleep() implementation based on what the ESP SoC can +// do. +#ifdef CONFIG_IDF_TARGET_ESP32 +static esp_err_t _setup_deep_sleep(size_t low_count, size_t high_count) { + if (low_count > 2 && high_count == 0) { + mp_raise_ValueError(MP_ERROR_TEXT("Can only alarm on two low pins from deep sleep.")); + } + if (low_count > 1 && high_count > 0) { + mp_raise_ValueError(MP_ERROR_TEXT("Can only alarm on one low pin while others alarm high from deep sleep.")); + } + esp_err_t result; + if (high_count > 0) { + result = esp_sleep_enable_ext1_wakeup_io(high_alarms, ESP_EXT1_WAKEUP_ANY_HIGH); + if (result != ESP_OK) { + return result; + } + esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); + } + size_t low_pins[2]; + size_t j = 0; + for (size_t i = 0; i < 64; i++) { + uint64_t mask = 1ull << i; + if ((low_alarms & mask) != 0) { + low_pins[j++] = i; + } + if (j == 2) { + break; + } + } + if (low_count > 1) { + if (esp_sleep_enable_ext1_wakeup_io(1ull << low_pins[1], ESP_EXT1_WAKEUP_ALL_LOW) != ESP_OK) { + mp_raise_ValueError(MP_ERROR_TEXT("Can only alarm on RTC IO from deep sleep.")); + } + esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); + } + if (low_count > 0) { + #ifdef SOC_PM_SUPPORT_EXT0_WAKEUP + if (esp_sleep_enable_ext0_wakeup(low_pins[0], 0) != ESP_OK) { + mp_raise_ValueError(MP_ERROR_TEXT("Can only alarm on RTC IO from deep sleep.")); + } + #endif + } + return ESP_OK; +} +#elif defined(SOC_PM_SUPPORT_EXT0_WAKEUP) // S2 and S3 +static esp_err_t _setup_deep_sleep(size_t low_count, size_t high_count) { + if (low_count > 1 && high_count > 1) { + mp_raise_ValueError(MP_ERROR_TEXT("Can only alarm on one low pin while others alarm high from deep sleep.")); + } + uint64_t ext1_pin_mask; + esp_sleep_ext1_wakeup_mode_t ext1_mode; + + esp_err_t result; + // Only use EXT0 if we need to trigger both directions. + if (low_count > 0 && high_count > 0) { + size_t ext0_pin_number; + size_t level; + if (low_count == 1) { + ext0_pin_number = __builtin_ctzll(low_alarms); + level = 0; + ext1_pin_mask = high_alarms; + ext1_mode = ESP_EXT1_WAKEUP_ANY_HIGH; + } else { + ext0_pin_number = __builtin_ctzll(high_alarms); + level = 1; + ext1_pin_mask = low_alarms; + ext1_mode = ESP_EXT1_WAKEUP_ANY_LOW; + } + result = esp_sleep_enable_ext0_wakeup(ext0_pin_number, level); + if (result != ESP_OK) { + return result; + } + } else if (low_count > 0) { + ext1_pin_mask = low_alarms; + ext1_mode = ESP_EXT1_WAKEUP_ANY_LOW; + } else { + ext1_pin_mask = high_alarms; + ext1_mode = ESP_EXT1_WAKEUP_ANY_HIGH; + } + + esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); + return esp_sleep_enable_ext1_wakeup_io(ext1_pin_mask, ext1_mode); +} +#elif defined(SOC_PM_SUPPORT_EXT1_WAKEUP) && defined(SOC_PM_SUPPORT_EXT1_WAKEUP_MODE_PER_PIN) +static esp_err_t _setup_deep_sleep(size_t low_count, size_t high_count) { + return _setup_ext1(low_count, high_count); +} +#elif defined(SOC_GPIO_SUPPORT_DEEPSLEEP_WAKEUP) +static esp_err_t _setup_deep_sleep(size_t low_count, size_t high_count) { + #ifdef SOC_PM_SUPPORT_EXT1_WAKEUP + // Don't turn on RTC GPIO if we can use EXT1. + if (low_count == 0 || high_count == 0) { + return _setup_ext1(low_count, high_count); + } + #endif + esp_err_t result = esp_deep_sleep_enable_gpio_wakeup(low_alarms, ESP_GPIO_WAKEUP_GPIO_LOW); + if (result != ESP_OK) { + return result; + } + result = esp_deep_sleep_enable_gpio_wakeup(high_alarms, ESP_GPIO_WAKEUP_GPIO_HIGH); + return result; +} +#else +#error "Unsupported deep sleep capabilities." +#endif void alarm_pin_pinalarm_set_alarms(bool deep_sleep, size_t n_alarms, const mp_obj_t *alarms) { // Bitmask of wake up settings. size_t high_count = 0; @@ -184,41 +332,10 @@ void alarm_pin_pinalarm_set_alarms(bool deep_sleep, size_t n_alarms, const mp_ob if (high_count == 0 && low_count == 0) { return; } - if (deep_sleep && low_count > 2 && high_count == 0) { - mp_raise_ValueError(MP_ERROR_TEXT("Can only alarm on two low pins from deep sleep.")); - } - if (deep_sleep && low_count > 1 && high_count > 0) { - mp_raise_ValueError(MP_ERROR_TEXT("Can only alarm on one low pin while others alarm high from deep sleep.")); - } // Only use ext0 and ext1 during deep sleep. if (deep_sleep) { - if (high_count > 0) { - if (esp_sleep_enable_ext1_wakeup(high_alarms, ESP_EXT1_WAKEUP_ANY_HIGH) != ESP_OK) { - mp_raise_ValueError(MP_ERROR_TEXT("Can only alarm on RTC IO from deep sleep.")); - } - esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); - } - size_t low_pins[2]; - size_t j = 0; - for (size_t i = 0; i < 64; i++) { - uint64_t mask = 1ull << i; - if ((low_alarms & mask) != 0) { - low_pins[j++] = i; - } - if (j == 2) { - break; - } - } - if (low_count > 1) { - if (esp_sleep_enable_ext1_wakeup(1ull << low_pins[1], ESP_EXT1_WAKEUP_ALL_LOW) != ESP_OK) { - mp_raise_ValueError(MP_ERROR_TEXT("Can only alarm on RTC IO from deep sleep.")); - } - esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); - } - if (low_count > 0) { - if (esp_sleep_enable_ext0_wakeup(low_pins[0], 0) != ESP_OK) { - mp_raise_ValueError(MP_ERROR_TEXT("Can only alarm on RTC IO from deep sleep.")); - } + if (_setup_deep_sleep(low_count, high_count) != ESP_OK) { + mp_raise_ValueError(MP_ERROR_TEXT("Can only alarm on RTC IO from deep sleep.")); } } else { // Enable GPIO wake up if we're sleeping. @@ -240,7 +357,9 @@ void alarm_pin_pinalarm_set_alarms(bool deep_sleep, size_t n_alarms, const mp_ob continue; } if (rtc_gpio_is_valid_gpio(i)) { + #ifdef SOC_PM_SUPPORT_RTC_PERIPH_PD rtc_gpio_deinit(i); + #endif } gpio_int_type_t interrupt_mode = GPIO_INTR_DISABLE; gpio_pull_mode_t pull_mode = GPIO_FLOATING; @@ -281,12 +400,22 @@ void alarm_pin_pinalarm_prepare_for_deep_sleep(void) { bool low = (low_alarms & mask) != 0; // The pull direction is opposite from alarm value. if (high) { + #ifdef SOC_PM_SUPPORT_RTC_PERIPH_PD rtc_gpio_pullup_dis(i); rtc_gpio_pulldown_en(i); + #else + gpio_pullup_dis(i); + gpio_pulldown_en(i); + #endif } if (low) { + #ifdef SOC_PM_SUPPORT_RTC_PERIPH_PD rtc_gpio_pullup_en(i); rtc_gpio_pulldown_dis(i); + #else + gpio_pullup_en(i); + gpio_pulldown_dis(i); + #endif } } } diff --git a/ports/espressif/mpconfigport.mk b/ports/espressif/mpconfigport.mk index 95ff29fc1e23..55b144bb3f41 100644 --- a/ports/espressif/mpconfigport.mk +++ b/ports/espressif/mpconfigport.mk @@ -10,6 +10,10 @@ LONGINT_IMPL = MPZ # Default to no-psram CIRCUITPY_ESP_PSRAM_SIZE ?= 0 +# New 4MB boards will not have OTA support but more room for alarm, ble and other +# newer features. +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT ?= 0 + # Enable more features CIRCUITPY_FULL_BUILD ?= 1 @@ -18,6 +22,7 @@ CIRCUITPY_SSL_MBEDTLS = 1 # These modules are implemented in ports//common-hal: CIRCUITPY_ALARM ?= 1 +CIRCUITPY_ALARM_TOUCH ?= 0 CIRCUITPY_ANALOGBUFIO ?= 1 CIRCUITPY_AUDIOBUSIO ?= 1 CIRCUITPY_AUDIOBUSIO_PDMIN ?= 0 @@ -51,7 +56,9 @@ CIRCUITPY__EVE ?= 1 # Conditionally turn off modules/features ifeq ($(IDF_TARGET),esp32) # Modules +CIRCUITPY_ALARM_TOUCH = 1 CIRCUITPY_RGBMATRIX = 0 + # Features CIRCUITPY_USB_DEVICE = 0 @@ -60,7 +67,6 @@ else ifeq ($(IDF_TARGET),esp32c2) # C2 ROM spits out the UART at 74880 when connected to a 26mhz crystal! Debug # prints will default to that too. # Modules -CIRCUITPY_ALARM = 0 CIRCUITPY_ESPCAMERA = 0 CIRCUITPY_ESPULP = 0 CIRCUITPY_MEMORYMAP = 0 @@ -95,7 +101,6 @@ CIRCUITPY_ESP_USB_SERIAL_JTAG = 0 else ifeq ($(IDF_TARGET),esp32c3) # Modules -CIRCUITPY_ALARM = 0 CIRCUITPY_ESPCAMERA = 0 CIRCUITPY_ESPULP = 0 CIRCUITPY_MEMORYMAP = 0 @@ -116,7 +121,6 @@ CIRCUITPY_ESP_USB_SERIAL_JTAG ?= 1 else ifeq ($(IDF_TARGET),esp32c6) # Modules -CIRCUITPY_ALARM = 0 CIRCUITPY_ESPCAMERA = 0 CIRCUITPY_ESPULP = 0 CIRCUITPY_MEMORYMAP = 0 @@ -136,7 +140,6 @@ CIRCUITPY_ESP_USB_SERIAL_JTAG ?= 1 else ifeq ($(IDF_TARGET),esp32h2) # Modules -CIRCUITPY_ALARM = 0 CIRCUITPY_ESPCAMERA = 0 CIRCUITPY_ESPULP = 0 CIRCUITPY_MEMORYMAP = 0 @@ -157,6 +160,7 @@ CIRCUITPY_MAX3421E = 0 else ifeq ($(IDF_TARGET),esp32s2) # Modules +CIRCUITPY_ALARM_TOUCH = 1 # No BLE in hw CIRCUITPY_BLEIO = 0 @@ -164,6 +168,7 @@ CIRCUITPY_ESP_USB_SERIAL_JTAG ?= 0 else ifeq ($(IDF_TARGET),esp32s3) # Modules +CIRCUITPY_ALARM_TOUCH = 1 CIRCUITPY_ESP_USB_SERIAL_JTAG ?= 0 # No room for _bleio on boards with 4MB flash @@ -182,6 +187,19 @@ else CIRCUITPY_DUALBANK ?= 1 endif +# We used to default to OTA partition layout but are moving away from it so that +# BLE and alarm can be included. This setting prevents the partition layout from +# changing. +ifeq ($(CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT), 1) +ifeq ($(IDF_TARGET_ARCH), xtensa) + CIRCUITPY_ALARM ?= 1 +else +CIRCUITPY_ALARM = 0 +endif +CIRCUITPY_DUALBANK = 1 +CIRCUITPY_BLEIO = 0 +endif + # No room for dualbank or mp3 on boards with 2MB flash ifeq ($(CIRCUITPY_ESP_FLASH_SIZE),2MB) CIRCUITPY_BITMAPFILTER ?= 0 diff --git a/py/circuitpy_defns.mk b/py/circuitpy_defns.mk index d01869e54426..4b16b677848a 100644 --- a/py/circuitpy_defns.mk +++ b/py/circuitpy_defns.mk @@ -105,7 +105,10 @@ ifeq ($(CIRCUITPY_AESIO),1) SRC_PATTERNS += aesio/% endif ifeq ($(CIRCUITPY_ALARM),1) -SRC_PATTERNS += alarm/% +SRC_PATTERNS += alarm/__init__.c alarm/SleepMemory.c alarm/pin/% alarm/time/% +endif +ifeq ($(CIRCUITPY_ALARM_TOUCH),1) +SRC_PATTERNS += alarm/touch/% endif ifeq ($(CIRCUITPY_ANALOGBUFIO),1) SRC_PATTERNS += analogbufio/% diff --git a/py/circuitpy_mpconfig.mk b/py/circuitpy_mpconfig.mk index 76f8a4fad179..5c0ba355ad74 100644 --- a/py/circuitpy_mpconfig.mk +++ b/py/circuitpy_mpconfig.mk @@ -95,6 +95,9 @@ CFLAGS += -DCIRCUITPY_AESIO=$(CIRCUITPY_AESIO) CIRCUITPY_ALARM ?= 0 CFLAGS += -DCIRCUITPY_ALARM=$(CIRCUITPY_ALARM) +CIRCUITPY_ALARM_TOUCH ?= $(CIRCUITPY_ALARM) +CFLAGS += -DCIRCUITPY_ALARM_TOUCH=$(CIRCUITPY_ALARM_TOUCH) + CIRCUITPY_ANALOGBUFIO ?= 0 CFLAGS += -DCIRCUITPY_ANALOGBUFIO=$(CIRCUITPY_ANALOGBUFIO) diff --git a/shared-bindings/alarm/__init__.c b/shared-bindings/alarm/__init__.c index c74b162d0a3f..7cdc2f7750e5 100644 --- a/shared-bindings/alarm/__init__.c +++ b/shared-bindings/alarm/__init__.c @@ -60,11 +60,13 @@ static void validate_objs_are_alarms(size_t n_args, const mp_obj_t *objs) { for (size_t i = 0; i < n_args; i++) { if (mp_obj_is_type(objs[i], &alarm_pin_pinalarm_type) || - mp_obj_is_type(objs[i], &alarm_time_timealarm_type) || + #if CIRCUITPY_ALARM_TOUCH + mp_obj_is_type(objs[i], &alarm_touch_touchalarm_type) || + #endif #if CIRCUITPY_ESPULP mp_obj_is_type(objs[i], &espulp_ulpalarm_type) || #endif - mp_obj_is_type(objs[i], &alarm_touch_touchalarm_type)) { + mp_obj_is_type(objs[i], &alarm_time_timealarm_type)) { continue; } mp_raise_TypeError_varg(MP_ERROR_TEXT("Expected a kind of %q"), MP_QSTR_Alarm); @@ -227,6 +229,7 @@ static const mp_obj_module_t alarm_time_module = { .globals = (mp_obj_dict_t *)&alarm_time_globals, }; +#if CIRCUITPY_ALARM_TOUCH static const mp_map_elem_t alarm_touch_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_touch) }, { MP_ROM_QSTR(MP_QSTR_TouchAlarm), MP_OBJ_FROM_PTR(&alarm_touch_touchalarm_type) }, @@ -238,6 +241,7 @@ static const mp_obj_module_t alarm_touch_module = { .base = { &mp_type_module }, .globals = (mp_obj_dict_t *)&alarm_touch_globals, }; +#endif // The module table is mutable because .wake_alarm is a mutable attribute. static mp_map_elem_t alarm_module_globals_table[] = { @@ -252,7 +256,9 @@ static mp_map_elem_t alarm_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_pin), MP_OBJ_FROM_PTR(&alarm_pin_module) }, { MP_ROM_QSTR(MP_QSTR_time), MP_OBJ_FROM_PTR(&alarm_time_module) }, + #if CIRCUITPY_ALARM_TOUCH { MP_ROM_QSTR(MP_QSTR_touch), MP_OBJ_FROM_PTR(&alarm_touch_module) }, + #endif { MP_ROM_QSTR(MP_QSTR_SleepMemory), MP_OBJ_FROM_PTR(&alarm_sleep_memory_type) }, { MP_ROM_QSTR(MP_QSTR_sleep_memory), MP_OBJ_FROM_PTR(&alarm_sleep_memory_obj) }, diff --git a/supervisor/shared/workflow.c b/supervisor/shared/workflow.c index 152e67b27b1e..89dd646ea771 100644 --- a/supervisor/shared/workflow.c +++ b/supervisor/shared/workflow.c @@ -18,6 +18,9 @@ #if CIRCUITPY_BLEIO #include "shared-bindings/_bleio/__init__.h" #include "supervisor/shared/bluetooth/bluetooth.h" +#if CIRCUITPY_SERIAL_BLE +#include "supervisor/shared/bluetooth/serial.h" +#endif #endif #if CIRCUITPY_TINYUSB || CIRCUITPY_USB_KEYBOARD_WORKFLOW @@ -27,6 +30,7 @@ #if CIRCUITPY_WEB_WORKFLOW #include "supervisor/shared/web_workflow/web_workflow.h" +#include "supervisor/shared/web_workflow/websocket.h" static background_callback_t workflow_background_cb = {NULL, NULL}; #endif @@ -60,14 +64,27 @@ void supervisor_workflow_request_background(void) { } // Return true if host has completed connection to us (such as USB enumeration). +// This is used to determine when to pretend to deep sleep. bool supervisor_workflow_active(void) { #if CIRCUITPY_USB_DEVICE // Eventually there might be other non-USB workflows, such as BLE. // tud_ready() checks for usb mounted and not suspended. - return tud_ready(); - #else - return false; + if (tud_ready()) { + return true; + } + #endif + #if CIRCUITPY_WEB_WORKFLOW + if (websocket_connected()) { + return true; + } + #endif + #if CIRCUITPY_SERIAL_BLE + if (ble_serial_connected()) { + return true; + } #endif + + return false; } void supervisor_workflow_start(void) { From e01c6ab60f3c3bca11db5693d1db6e29adf95ecc Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Thu, 13 Jun 2024 13:02:11 -0500 Subject: [PATCH 136/227] pull in the setuptools version of distutils for silabs --- requirements-dev.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements-dev.txt b/requirements-dev.txt index 7d5766ec5a85..ba4f1797def5 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -35,3 +35,4 @@ jsmin # for Silicon Labs Configurator (SLC) websockets colorama +setuptools From 42d9b0ab6a3888c1f5a72f25853368bec98bc1e2 Mon Sep 17 00:00:00 2001 From: Kyle Mohr <6644803+kylefmohr@users.noreply.github.com> Date: Thu, 13 Jun 2024 22:28:56 +0000 Subject: [PATCH 137/227] comments indicating neopixel color ordering --- ports/espressif/boards/waveshare_esp32_s3_tiny/mpconfigboard.h | 1 + ports/espressif/boards/waveshare_esp32_s3_tiny/pins.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ports/espressif/boards/waveshare_esp32_s3_tiny/mpconfigboard.h b/ports/espressif/boards/waveshare_esp32_s3_tiny/mpconfigboard.h index 6eab3fde4515..fb33519370c5 100644 --- a/ports/espressif/boards/waveshare_esp32_s3_tiny/mpconfigboard.h +++ b/ports/espressif/boards/waveshare_esp32_s3_tiny/mpconfigboard.h @@ -11,6 +11,7 @@ #define MICROPY_HW_BOARD_NAME "Waveshare ESP32-S3-Tiny" #define MICROPY_HW_MCU_NAME "ESP32S3" +// This corrects the color ordering so that the CircuitPython status lights behave as expected #define MICROPY_HW_NEOPIXEL_ORDER_GRB (1) #define MICROPY_HW_NEOPIXEL (&pin_GPIO38) diff --git a/ports/espressif/boards/waveshare_esp32_s3_tiny/pins.c b/ports/espressif/boards/waveshare_esp32_s3_tiny/pins.c index 79a20e91b83b..62d132af683f 100644 --- a/ports/espressif/boards/waveshare_esp32_s3_tiny/pins.c +++ b/ports/espressif/boards/waveshare_esp32_s3_tiny/pins.c @@ -46,7 +46,7 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_IO47), MP_ROM_PTR(&pin_GPIO47) }, { MP_ROM_QSTR(MP_QSTR_IO48), MP_ROM_PTR(&pin_GPIO48) }, - // NEOPIXEL + // NEOPIXEL (GRB Color Order) { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO38) }, // UART From 6a8b41f9204b6b82d54349353177988da81080ad Mon Sep 17 00:00:00 2001 From: Matthew <104187183+MatthewJeffson@users.noreply.github.com> Date: Fri, 14 Jun 2024 12:42:32 +0800 Subject: [PATCH 138/227] Update ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h Co-authored-by: Scott Shawcroft --- ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h b/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h index bdda924b0c8e..6f803cd9c96e 100644 --- a/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h +++ b/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h @@ -17,5 +17,3 @@ // For entering safe mode, use BOOT button #define CIRCUITPY_BOOT_BUTTON (&pin_GPIO9) - -// Explanation of how a user got into safe mode From 476a66753211719c9509a57ef672f2133fed7834 Mon Sep 17 00:00:00 2001 From: Matthew <104187183+MatthewJeffson@users.noreply.github.com> Date: Fri, 14 Jun 2024 12:50:00 +0800 Subject: [PATCH 139/227] Fix: Trailing Whitespace Issue --- ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h | 2 -- ports/espressif/boards/seeed_xiao_esp32c6/pins.c | 8 ++++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h b/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h index bdda924b0c8e..6f803cd9c96e 100644 --- a/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h +++ b/ports/espressif/boards/seeed_xiao_esp32c6/mpconfigboard.h @@ -17,5 +17,3 @@ // For entering safe mode, use BOOT button #define CIRCUITPY_BOOT_BUTTON (&pin_GPIO9) - -// Explanation of how a user got into safe mode diff --git a/ports/espressif/boards/seeed_xiao_esp32c6/pins.c b/ports/espressif/boards/seeed_xiao_esp32c6/pins.c index 7284f8e1dc7c..0cb7f64e4163 100644 --- a/ports/espressif/boards/seeed_xiao_esp32c6/pins.c +++ b/ports/espressif/boards/seeed_xiao_esp32c6/pins.c @@ -34,19 +34,19 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO18) }, { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO18) }, - + { MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_GPIO4) }, { MP_ROM_QSTR(MP_QSTR_MTMS), MP_ROM_PTR(&pin_GPIO4) }, { MP_ROM_QSTR(MP_QSTR_LP_UART_RXD), MP_ROM_PTR(&pin_GPIO4) }, - + { MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_GPIO5) }, { MP_ROM_QSTR(MP_QSTR_MTDI), MP_ROM_PTR(&pin_GPIO5) }, { MP_ROM_QSTR(MP_QSTR_LP_UART_TXD), MP_ROM_PTR(&pin_GPIO5) }, - + { MP_ROM_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_GPIO6) }, { MP_ROM_QSTR(MP_QSTR_MTCK), MP_ROM_PTR(&pin_GPIO6) }, { MP_ROM_QSTR(MP_QSTR_LP_I2C_SDA), MP_ROM_PTR(&pin_GPIO6) }, - + { MP_ROM_QSTR(MP_QSTR_MTDO), MP_ROM_PTR(&pin_GPIO7) }, { MP_ROM_QSTR(MP_QSTR_LP_I2C_SCL), MP_ROM_PTR(&pin_GPIO7) }, From d0e42f111301d82cda5ca972cada4ad160b196f6 Mon Sep 17 00:00:00 2001 From: hexthat Date: Thu, 13 Jun 2024 17:42:29 +0000 Subject: [PATCH 140/227] Translated using Weblate (Chinese (Pinyin)) Currently translated at 100.0% (995 of 995 strings) Translation: CircuitPython/main Translate-URL: https://hosted.weblate.org/projects/circuitpython/main/zh_Latn/ --- locale/zh_Latn_pinyin.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/locale/zh_Latn_pinyin.po b/locale/zh_Latn_pinyin.po index ecc4308e7e2b..b9c4f34b86cf 100644 --- a/locale/zh_Latn_pinyin.po +++ b/locale/zh_Latn_pinyin.po @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: circuitpython-cn\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-01-04 12:55-0600\n" -"PO-Revision-Date: 2024-05-05 18:07+0000\n" +"PO-Revision-Date: 2024-06-14 15:02+0000\n" "Last-Translator: hexthat \n" "Language-Team: Chinese Hanyu Pinyin\n" "Language: zh_Latn_pinyin\n" @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.5.3\n" +"X-Generator: Weblate 5.6-dev\n" #: main.c msgid "" @@ -1323,7 +1323,7 @@ msgstr "MAC dì zhǐ wú xiào" #: ports/espressif/common-hal/_bleio/Characteristic.c msgid "MITM security not supported" -msgstr "" +msgstr "bù zhīchí MITM ānquánxìng" #: shared-bindings/is31fl3741/IS31FL3741.c msgid "Mapping must be a tuple" From c2503f69b1247721405da67ed0c408642e97e789 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Fri, 14 Jun 2024 13:30:04 -0500 Subject: [PATCH 141/227] remove -12 from file path as well --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dc2963fa80cd..13f758c1bed8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -149,9 +149,9 @@ jobs: (github.event_name == 'push' && github.ref == 'refs/heads/main' && github.repository_owner == 'adafruit') || (github.event_name == 'release' && (github.event.action == 'published' || github.event.action == 'rerequested')) run: | - [ -z "$AWS_ACCESS_KEY_ID" ] || aws s3 cp mpy-cross-macos-universal s3://adafruit-circuit-python/bin/mpy-cross/macos-12/mpy-cross-macos-${{ env.CP_VERSION }}-universal --no-progress --region us-east-1 - [ -z "$AWS_ACCESS_KEY_ID" ] || aws s3 cp mpy-cross/build-arm64/mpy-cross-arm64 s3://adafruit-circuit-python/bin/mpy-cross/macos-12/mpy-cross-macos-${{ env.CP_VERSION }}-arm64 --no-progress --region us-east-1 - [ -z "$AWS_ACCESS_KEY_ID" ] || aws s3 cp mpy-cross/build/mpy-cross s3://adafruit-circuit-python/bin/mpy-cross/macos-12/mpy-cross-macos-${{ env.CP_VERSION }}-x64 --no-progress --region us-east-1 + [ -z "$AWS_ACCESS_KEY_ID" ] || aws s3 cp mpy-cross-macos-universal s3://adafruit-circuit-python/bin/mpy-cross/macos/mpy-cross-macos-${{ env.CP_VERSION }}-universal --no-progress --region us-east-1 + [ -z "$AWS_ACCESS_KEY_ID" ] || aws s3 cp mpy-cross/build-arm64/mpy-cross-arm64 s3://adafruit-circuit-python/bin/mpy-cross/macos/mpy-cross-macos-${{ env.CP_VERSION }}-arm64 --no-progress --region us-east-1 + [ -z "$AWS_ACCESS_KEY_ID" ] || aws s3 cp mpy-cross/build/mpy-cross s3://adafruit-circuit-python/bin/mpy-cross/macos/mpy-cross-macos-${{ env.CP_VERSION }}-x64 --no-progress --region us-east-1 env: AWS_PAGER: '' AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} From 520e13802257041f055707c0677b9eef65194b1f Mon Sep 17 00:00:00 2001 From: Tim Date: Sat, 15 Jun 2024 07:10:58 -0700 Subject: [PATCH 142/227] start pwm fixes --- ports/atmel-samd/common-hal/pwmio/PWMOut.c | 21 +- tools/pwm/README.md | 284 +++++++++++++++++++++ tools/pwm/code.py | 103 ++++++++ tools/pwm/duty.py | 16 ++ tools/pwm/pwm_plot_explainer.png | Bin 0 -> 772360 bytes 5 files changed, 411 insertions(+), 13 deletions(-) create mode 100644 tools/pwm/README.md create mode 100644 tools/pwm/code.py create mode 100644 tools/pwm/duty.py create mode 100644 tools/pwm/pwm_plot_explainer.png diff --git a/ports/atmel-samd/common-hal/pwmio/PWMOut.c b/ports/atmel-samd/common-hal/pwmio/PWMOut.c index 71d6f38d502a..44e78d2cdad0 100644 --- a/ports/atmel-samd/common-hal/pwmio/PWMOut.c +++ b/ports/atmel-samd/common-hal/pwmio/PWMOut.c @@ -254,36 +254,31 @@ extern void common_hal_pwmio_pwmout_set_duty_cycle(pwmio_pwmout_obj_t *self, uin const pin_timer_t *t = self->timer; if (t->is_tc) { uint16_t adjusted_duty = tc_periods[t->index] * duty / 0xffff; + if (adjusted_duty == 0 && duty != 0) { + adjusted_duty = 1; // prevent rounding down to 0 + } #ifdef SAMD21 tc_insts[t->index]->COUNT16.CC[t->wave_output].reg = adjusted_duty; #endif #ifdef SAM_D5X_E5X Tc *tc = tc_insts[t->index]; - while (tc->COUNT16.SYNCBUSY.bit.CC1 != 0) { - } tc->COUNT16.CCBUF[1].reg = adjusted_duty; #endif } else { uint32_t adjusted_duty = ((uint64_t)tcc_periods[t->index]) * duty / 0xffff; + if (adjusted_duty == 0 && duty != 0) { + adjusted_duty = 1; // prevent rounding down to 0 + } uint8_t channel = tcc_channel(t); Tcc *tcc = tcc_insts[t->index]; - - // Write into the CC buffer register, which will be transferred to the - // CC register on an UPDATE (when period is finished). - // Do clock domain syncing as necessary. - - while (tcc->SYNCBUSY.reg != 0) { - } - - // Lock out double-buffering while updating the CCB value. - tcc->CTRLBSET.bit.LUPD = 1; + // Enable double-buffering + tcc->CTRLBCLR.bit.LUPD = 1; #ifdef SAMD21 tcc->CCB[channel].reg = adjusted_duty; #endif #ifdef SAM_D5X_E5X tcc->CCBUF[channel].reg = adjusted_duty; #endif - tcc->CTRLBCLR.bit.LUPD = 1; } } diff --git a/tools/pwm/README.md b/tools/pwm/README.md new file mode 100644 index 000000000000..6dfa819988a9 --- /dev/null +++ b/tools/pwm/README.md @@ -0,0 +1,284 @@ +# PWM testing + +This directory contains tools for testing PWM behavior in CircuitPython. + +1. [CircuitPython PWM test code](code.py) is run on the board to be tested. +2. As the code runs, the state of the PWM signal is logged by a logic analyzer (here Saleae Logic Pro 8). +3. Data collected by the logic analyzer is analyzed and plotted into a PNG image by [CPython code](duty.py). + +Here is a sample plot with key features annotated: + + + + + +
+ + +# PWM expected behavior + + + +(1) A PWM signal has a period (defined as the time between rising edges) and a duty cycle (defined as the ratio of the time between a rising edge and the next falling edge, divided by the period). In a typical application the PWM period will be constant while the duty cycle changes frequently. + +(2) An exception to (1) is that CircuitPython explicitly supports duty cycles of 0% and 100%, where the signal stays constant at a low/high level. In the CP API duty cycle is always specified as a 16-bit value, where 0 corresponds to 0%, 0xFFFF corresponds to 100%, and values in between scale accordingly. + +(3) While in the PWM API the duty cycle is specified as a 16-bit value and the period is specified by a 32-bit frequency value, a given processor may not be able to provide a signal with that precision, but will do its best to approximate what is asked for to the best of its ability. The actual PWM duty and frequency settings resulting from the requested parameters can be obtained from the API. + +(4) The user can set the duty cycle and frequency (if initialized with `variable_frequency=True`) at any time. Changes in duty cycle and frequency should appear in the PWM signal as soon as possible after the set function is invoked. + +(5) Changes in duty cycle should ideally never result in output glitches - that is, the duty cycle of output PWM should never take on a value which has not been set by the user. + +(6) Changes in frequency may (and will usually) result in a transient glitch in duty cycle. PWM hardware is generally not designed for glitch-free frequency transitions. + +(7) PWM frequency and duty cycle should be jitter-free. + +(8) Setting of PWM frequency and duty cycle should be non-blocking operations which return control to the caller as soon as possible. + +(9) As a corollary to (2), PWM settings of 0 and 0xFFFF should be the ONLY settings which result in always low/always high PWM. + Other settings should always provide an oscillating signal. +
+ +# Test method + +To test all of the elements of expected behavior listed above, I exercised the PWM API and captured the resulting output signal on a logic analyzer (Seleae Logic Pro 8). Logic analyzer data was then analyzed and plotted. + +Here is the CP code. It loops through a list of PWM frequencies, staying at each frequency for a specified interval, typically 1 second. At each frequency it repeatedly cycles through a list of duty cycles in a tight loop, updating the duty cycle as frequently as it is able. +For the tests I show here, I used a set of 13 frequencies logarithmically spaced between 1000 Hz and 10 MHz, and duty cycles of 1/9, 2/9, 3/9, 4/9, 5/9, 6/9, 7/9, 8/9, selected to stay away from "special numbers" like 0, 65535, and powers of two. +
+ CircuitPython code + +```python +import board +import pwmio +import random +import time +import microcontroller +import os +import sys + +cr10 = 10**(1/3) + +freqs = [int(f) for f in [1e3, 1e3*cr10, 1e3*cr10*cr10, + 1e4, 1e4*cr10, + 1e4*cr10*cr10, + 1e5, 1e5*cr10, 1e5*cr10*cr10, + 1e6, 1e6*cr10, 1e6*cr10*cr10, + 10000000]] + +top = 65536 +duties = [int(top * frac) for frac in [ 1/9, 8/9, 2/9, 7/9, 3/9, 6/9, 4/9, 5/9 ]] +# duties = [int(top * frac) for frac in [ 1/9 ]] + +freq_duration = 1.0 +duty_duration = 0.00000001 +start_duty = int(65535*0.1) + +print('\n\n') +board_name = sys.implementation[2] + +pins = {"RP2040-Zero": (("GP15", ""),), + "Grand Central": (("D51", "TCC"), ("A15", "TC")), + "Metro M0": (("A2", "TC"), ("A3", "TCC")), + "ESP32-S3-DevKit": (("IO6", ""),), # marked D5 on board for XIAO-ESP32-s3 + "XIAO nRF52840": (("D9", ""),), + } + +for board_key in pins: + if board_key in board_name: + pins_to_use = pins[board_key] + break + +while True: + for pin_name, pin_type in pins_to_use: + pin = getattr(board, pin_name) + print('title="', end="") + print(f"{board_name} at {microcontroller.cpu.frequency} Hz, pin {pin_name}", end="") + if len(pin_type) > 0: + print(f" ({pin_type})", end="") + print('",') + print(f'subtitle="{freq_duration:0.1f}s per frequency",') + print(f'version="{sys.version}",') + print('freq_calls=', end="") + pwm = pwmio.PWMOut(pin, variable_frequency=True) + t0 = time.monotonic() + duty_time = t0 + duty_duration + print('(', end='') + for freq in freqs: + i = 0 + try: + pwm.frequency = freq + except ValueError: + break; + pwm.duty_cycle = start_duty + freq_time = t0 + freq_duration + duty_time = t0 + duty_duration + while time.monotonic() < freq_time: + for duty in duties: + while time.monotonic() < duty_time and time.monotonic() < freq_time: + pass + pwm.duty_cycle = duty + duty_time += duty_duration + i += 1 + if time.monotonic() > freq_time: + break + t0 = freq_time + print(f'({freq}, {i/freq_duration:.0f}), ', end='') + print(')') + print('done.') + pwm.deinit() + time.sleep(5) +``` +
+ +Here is the Python code used to analyze the captured logic analyzer data (typically ~300MB). The plots generated display the frequency and duty cycle of every captured PWM cycle (typically 16M points). + +
+Data analysis code + +```python +import math +import numpy as np +from PIL import Image +import matplotlib.pyplot as plt +from PIL import Image +from PIL import ImageFont +from PIL import ImageDraw + +def read(filename, image_filename=None, height=500, width=500, f_min=100, f_max=1e8, title='', subtitle='', version='', + duty_labels=(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9), freq_calls=tuple(), margin=0.01, + duty_color = (255, 0, 0), freq_color = (0, 255, 0), calls_color = (0, 255, 255), title_color = (255, 255, 255)): + """Read a one channel logic analyzer raw csv data file and generate a plot visualizing the PWM signal + captured in the file. Each line of the file is a pair indicating the times (in seconds) + at which the signal transitioned to that level. For example: + 1.726313020,0 + 1.726313052,1 + 1.726313068,0 + 1.727328804,1 + """ + rising_edge = None + falling_edge = None + pixels = np.zeros((height, width, 3), dtype=np.uint8) * 255 + t0 = None + t1 = None + with open(filename, 'r') as f: + for line in f: + t, val = line.split(',') + try: + t = float(t) + val = int(val) + except ValueError: + val=None + if val is not None: + if t0 is None or tt1: + t1 = t + with open(filename, 'r') as f: + pts = 0 + f_log_max = int(math.log10(f_max)) + f_log_min = int(math.log10(f_min)) + f_log_span = f_log_max - f_log_min + for line in f: + t, val = line.split(',') + try: + t = float(t) + val = int(val) + except ValueError: + val=None + if val==1: + if falling_edge is not None and rising_edge is not None: + period = t - rising_edge + frequency = 1/period + duty_cycle = (falling_edge - rising_edge) / period + x = int(width * (t - t0)/(t1 - t0)) + y_duty = int((1 - duty_cycle) * height) + y_freq = int(height * (1 - (math.log10(frequency) - f_log_min) / f_log_span)) + x = max(0, min(x, width - 1)) + y_duty = max(0, min(y_duty, height - 1)) + y_freq = max(0, min(y_freq, height - 1)) + pixels[y_duty, x] = duty_color + pixels[y_freq, x] = freq_color + pts += 1 + rising_edge = t + elif val==0: + falling_edge = t + image = Image.fromarray(pixels) + draw = ImageDraw.Draw(image) + draw.text((width*margin, height * (1 - margin)), 'Duty cycle', duty_color, anchor='lb') + draw.text((width * 0.5, height * (1 - margin)), 'Call throughput', calls_color, anchor='mb') + draw.text((width*(1-margin), height * (1 - margin)), 'PWM frequency', freq_color, anchor='rb') + + for duty in duty_labels: + draw.text((width*margin, height * (1 - duty)), f'{int(100*duty):d}%', duty_color, anchor='lm') + for exponent in range(f_log_min+1, f_log_max): + draw.text((width*(1-margin), height * (1 - (exponent - f_log_min) / (f_log_span))), + str(10**exponent) + ' Hz', freq_color, anchor='rm') + for freq, count in freq_calls: + draw.text((width * 0.5, height * (1 - (math.log10(freq) - f_log_min) / (f_log_span))), + f'{count} Hz', calls_color, anchor='mm') + subtitle += f', showing {pts} PWM cycles' + draw.text((width*0.5, height * margin), title, title_color, anchor='mm') + draw.text((width*0.5, height * 4 * margin), version, title_color, anchor='mm') + draw.text((width*0.5, height * 8 * margin), subtitle, title_color, anchor='mm') + image.show() + if image_filename is not None: + image.save(image_filename) + return image +``` +
+ +The plots this generates are pretty dense. Here's one, measured on pin 51 of a Metro M4 Grand Central board, annotated to show what is going on: + + + +The PWM performance here looks pretty great except for the thing that got me started on this in the first place - the call to set the PWM duty cycle blocks for a time equal to the PWM period. + +# Measurements on samd21/51 port + +Investigation of PWM on the CP samd21/51 port is complicated by the port's inclusion of two different processor families, each of which have two different types of PWM peripherals (TC and TCC). Moreover, the TC peripheral for the samd21 is not identical to that of the samd51, as is hinted at by these datasheet excerpts: + +
+Datasheet summaries of samd21 and samd51 TC and TCC peripherals + +
+ +The description of TC for the samd51 notably adds mention of double-buffering, while the samd21/51 descriptions for TCC are the same. + +For samd21 and samd51 boards, TC and TCC were chosen by selecting pins which support only one or the other. Here the pins are outlined in red: + +
+Pins implementing TC and TCC on samd21/51 + +
+ +Here is an analysis of data gathered from each of the four types of PWM peripheral using the software described above: + +| | samd21 | samd51 | +| ------ | ----------- | ---------- | +| TC | ![all_samd21_tc](https://github.com/timchinowsky/circuitpython/assets/5445541/03d23303-f346-4e3b-a14e-7fdf1c0dc44f) | ![all_samd51_tc](https://github.com/timchinowsky/circuitpython/assets/5445541/9de21857-812f-4081-9fa3-68ebb3125ec7) | +| TCC | ![all_samd21_tcc](https://github.com/timchinowsky/circuitpython/assets/5445541/ccc69f9e-0ed7-4401-bdd0-6588a71c6b5d) | ![all_samd51_tcc](https://github.com/timchinowsky/circuitpython/assets/5445541/529b4500-0fbf-4357-ad67-9a2d7353ffa9) | + +Key findings: + +* Data from both samd51 peripherals looks good, except for the blocking issue (variation in execution time with PWM frequency) +* Data from samd21 TCC looks good, except for errant frequency measurements at the top two frequencies (pointed out with white arrow). Unlike samd51, execution time does not depend on PWM frequency. +* Data from samd21 TC has a lot of weirdness at all frequencies. + +# Code analysis + + + + + + + + +, https://github.com/adafruit/circuitpython/issues/1644 and to port `audiopwmio` to samd21/51. + + + +
+Datasheet excerpts + +
diff --git a/tools/pwm/code.py b/tools/pwm/code.py new file mode 100644 index 000000000000..9c2429d45b47 --- /dev/null +++ b/tools/pwm/code.py @@ -0,0 +1,103 @@ +import board +import pwmio +import random +import time +import microcontroller +import os +import sys +import random + +cr10 = 10 ** (1 / 3) + +exponents = [ + 2, + 2.333, + 2.667, + 3, + 3.333, + 3.667, + 4, + 4.333, + 4.667, + 5, + 5.333, + 5.667, + 6, + 6.333, + 6.667, + 7, +] +freqs = [int(10**f) for f in exponents] + +top = 65536 +den = 10 +duties = [int(top * num / den) for num in range(1, den)] +duties = [1, 65534, 1] + duties + +freq_duration = 1.0 +duty_duration = 0.00000001 + +print("\n\n") +board_name = sys.implementation[2] + +pins = { + "RP2040-Zero": (("GP15", ""),), + "Grand Central": (("D51", "TCC"), ("A15", "TC")), + "Metro M0": (("A2", "TC"), ("A3", "TCC")), + "ESP32-S3-DevKit": (("IO6", ""),), # marked D5 on board for XIAO-ESP32-s3 + "XIAO nRF52840": (("D9", ""),), +} + +for board_key in pins: + if board_key in board_name: + pins_to_use = pins[board_key] + break + +while True: + for pin_name, pin_type in pins_to_use: + pin = getattr(board, pin_name) + print('title="', end="") + print(f"{board_name} at {microcontroller.cpu.frequency} Hz, pin {pin_name}", end="") + if len(pin_type) > 0: + print(f" ({pin_type})", end="") + print('",') + print(f'subtitle="{freq_duration:0.1f}s per frequency",') + print(f'version="{sys.version}",') + print("freq_calls=", end="") + pwm = pwmio.PWMOut(pin, variable_frequency=True) + t0 = time.monotonic() + duty_time = t0 + duty_duration + print("(", end="") + offset = 0 + increment = 1 + for freq in freqs: + i = 0 + try: + pwm.frequency = freq + except ValueError: + break + freq_time = t0 + freq_duration + duty_time = t0 + duty_duration + while time.monotonic() < freq_time: + j = random.randrange(0, len(duties)) + duty = duties[j] + if j > 1: + duty = duties[j] + offset + if duty > 65533: + duty -= 65533 + pwm.duty_cycle = duty + offset += increment + if offset > 65533: + offset = 0 + while time.monotonic() < duty_time and time.monotonic() < freq_time: + pass + duty_time += duty_duration + i += 1 + if time.monotonic() > freq_time: + break + t0 = freq_time + print(f"({freq}, {i/freq_duration:.0f}), ", end="") + print(")") + print("done.") + pwm.deinit() + time.sleep(5) diff --git a/tools/pwm/duty.py b/tools/pwm/duty.py new file mode 100644 index 000000000000..997211ff9198 --- /dev/null +++ b/tools/pwm/duty.py @@ -0,0 +1,16 @@ +def duty(filename): + rising_edge = None + falling_edge = None + with open(filename, "r") as f: + line = f.readline() + t, val = line.split(",") + t = float(t) + val = int(val) + if val == 0: + if falling_edge and rising_edge is not None: + period = t - falling_edge + duty_cycle = (t - rising_edge) / period + print(t, val, period, duty_cycle) + falling_edge = t + else: + rising_edge = t diff --git a/tools/pwm/pwm_plot_explainer.png b/tools/pwm/pwm_plot_explainer.png new file mode 100644 index 0000000000000000000000000000000000000000..6466723a5864618260c9177c4f51c9b6595af713 GIT binary patch literal 772360 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

&S40}FI|Ni%1~#< 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

M0@ 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

Z`8P9BMAY~kDNT@LJpN->jpwx%2JCg(d&AaLKG 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%0D}oPF2*DcLmS$J$ORnhvwW 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 Date: Sat, 15 Jun 2024 21:32:39 +0000 Subject: [PATCH 143/227] esp: make cpu frequency settable --- locale/circuitpython.pot | 16 +++++++ .../common-hal/microcontroller/Processor.c | 46 ++++++++++++++++++- .../esp-idf-config/sdkconfig.defaults | 2 + ports/espressif/mpconfigport.mk | 2 + 4 files changed, 65 insertions(+), 1 deletion(-) diff --git a/locale/circuitpython.pot b/locale/circuitpython.pot index feb9457088c6..465498879bfb 100644 --- a/locale/circuitpython.pot +++ b/locale/circuitpython.pot @@ -1029,11 +1029,27 @@ msgstr "" msgid "Format not supported" msgstr "" +#: ports/espressif/common-hal/microcontroller/Processor.c +msgid "Frequency must be 20, 40, 80 or 120MHz" +msgstr "" + +#: ports/espressif/common-hal/microcontroller/Processor.c +msgid "Frequency must be 20, 40, 80 or 160MHz" +msgstr "" + +#: ports/espressif/common-hal/microcontroller/Processor.c +msgid "Frequency must be 20, 40, 80, 160 or 240MHz" +msgstr "" + #: ports/mimxrt10xx/common-hal/microcontroller/Processor.c msgid "" "Frequency must be 24, 150, 396, 450, 528, 600, 720, 816, 912, 960 or 1008 Mhz" msgstr "" +#: ports/espressif/common-hal/microcontroller/Processor.c +msgid "Frequency must be 32, 48, 64 or 96MHz" +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" diff --git a/ports/espressif/common-hal/microcontroller/Processor.c b/ports/espressif/common-hal/microcontroller/Processor.c index 5cd3ed86d081..d063f0f54363 100644 --- a/ports/espressif/common-hal/microcontroller/Processor.c +++ b/ports/espressif/common-hal/microcontroller/Processor.c @@ -10,12 +10,14 @@ #include "py/runtime.h" +#include "bindings/espidf/__init__.h" #include "common-hal/microcontroller/Processor.h" #include "shared-bindings/microcontroller/Processor.h" #include "shared-bindings/microcontroller/ResetReason.h" #include "esp_sleep.h" #include "esp_system.h" +#include "esp_pm.h" #include "soc/efuse_reg.h" @@ -44,9 +46,51 @@ float common_hal_mcu_processor_get_voltage(void) { } uint32_t common_hal_mcu_processor_get_frequency(void) { - return CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ * 1000000; + esp_pm_config_t pm; + CHECK_ESP_RESULT(esp_pm_get_configuration(&pm)); + return pm.min_freq_mhz * 1000000; } +#if defined(CIRCUITPY_SETTABLE_PROCESSOR_FREQUENCY) // Don't need a NotImplementedError here if this is false, as that is handled in shared-bindings +static void validate_cpu_frequency(uint32_t freq_mhz) { + #if defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6) + if (freq_mhz != 20 && freq_mhz != 40 && freq_mhz != 80 && freq_mhz != 160) { + mp_raise_ValueError(MP_ERROR_TEXT("Frequency must be 20, 40, 80 or 160MHz")); + } + #elif defined(CONFIG_IDF_TARGET_ESP32C2) + if (freq_mhz != 20 && freq_mhz != 40 && freq_mhz != 80 && freq_mhz != 120) { + mp_raise_ValueError(MP_ERROR_TEXT("Frequency must be 20, 40, 80 or 120MHz")); + } + #elif defined(CONFIG_IDF_TARGET_ESP32H2) + if (freq_mhz != 32 && freq_mhz != 48 && freq_mhz != 64 && freq_mhz != 96) { + mp_raise_ValueError(MP_ERROR_TEXT("Frequency must be 32, 48, 64 or 96MHz")); + } + #else + if (freq_mhz != 20 && freq_mhz != 40 && freq_mhz != 80 && freq_mhz != 160 && freq_mhz != 240) { + mp_raise_ValueError(MP_ERROR_TEXT("Frequency must be 20, 40, 80, 160 or 240MHz")); + } + #endif +} + +void common_hal_mcu_processor_set_frequency(mcu_processor_obj_t *self, uint32_t frequency) { + // Without this check, everything would compile without error, but silently fail at runtime if + // CONFIG_PM_ENABLE is ever accidentally disabled + #if !defined(CONFIG_PM_ENABLE) + #error "common_hal_mcu_processor_set_frequency needs CONFIG_PM_ENABLE to be defined." + #endif + + frequency /= 1000000; + + validate_cpu_frequency(frequency); + + esp_pm_config_t pm; + pm.max_freq_mhz = frequency; + pm.min_freq_mhz = frequency; + pm.light_sleep_enable = false; + CHECK_ESP_RESULT(esp_pm_configure(&pm)); +} +#endif + static uint8_t swap_nibbles(uint8_t v) { return ((v << 4) | (v >> 4)) & 0xff; } diff --git a/ports/espressif/esp-idf-config/sdkconfig.defaults b/ports/espressif/esp-idf-config/sdkconfig.defaults index 6dfa5539be63..edb4b6d86209 100644 --- a/ports/espressif/esp-idf-config/sdkconfig.defaults +++ b/ports/espressif/esp-idf-config/sdkconfig.defaults @@ -34,6 +34,8 @@ CONFIG_GPTIMER_ISR_IRAM_SAFE=y CONFIG_ESP_MAIN_TASK_STACK_SIZE=16384 # CONFIG_ESP_TASK_WDT_INIT is not set # CONFIG_ESP_DEBUG_OCDAWARE is not set + +CONFIG_PM_ENABLE=y # required for CIRCUITPY_SETTABLE_PROCESSOR_FREQUENCY # end of ESP System Settings diff --git a/ports/espressif/mpconfigport.mk b/ports/espressif/mpconfigport.mk index 95ff29fc1e23..1725bf05c4b6 100644 --- a/ports/espressif/mpconfigport.mk +++ b/ports/espressif/mpconfigport.mk @@ -228,3 +228,5 @@ CIRCUITPY_MESSAGE_COMPRESSION_LEVEL ?= 1 CIRCUITPY_AUDIOMP3 ?= 1 CIRCUITPY_AUDIOMP3_USE_PORT_ALLOCATOR ?= 1 + +CIRCUITPY_SETTABLE_PROCESSOR_FREQUENCY ?= 1 From 9d9ec442fc5678b5685bc6b85ed15598ecf785a2 Mon Sep 17 00:00:00 2001 From: Occasional Contributor <140330290+occasional-contributor@users.noreply.github.com> Date: Sat, 15 Jun 2024 20:22:42 -0400 Subject: [PATCH 144/227] Rotate display on Sunton ESP32 2432S028 --- ports/espressif/boards/sunton_esp32_2432S028/board.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/espressif/boards/sunton_esp32_2432S028/board.c b/ports/espressif/boards/sunton_esp32_2432S028/board.c index 17fc0d7d0143..5d7353869402 100644 --- a/ports/espressif/boards/sunton_esp32_2432S028/board.c +++ b/ports/espressif/boards/sunton_esp32_2432S028/board.c @@ -65,7 +65,7 @@ static void display_init(void) { 240, // Height 0, // column start 0, // row start - 0, // rotation + 270, // rotation 16, // Color depth false, // Grayscale false, // pixels in a byte share a row. Only valid for depths < 8 From b2969b777a18429e0c995e9dfcac091a8c8a077a Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Mon, 17 Jun 2024 11:21:21 -0400 Subject: [PATCH 145/227] Update README.rst --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 1d2c1a0c3851..642a55dfb9f4 100644 --- a/README.rst +++ b/README.rst @@ -225,7 +225,7 @@ Ports include the code unique to a microcontroller line. The following ports are available: ``atmel-samd``, ``cxd56``, ``espressif``, ``litex``, ``mimxrt10xx``, ``nordic``, ``raspberrypi``, ``renode``, ``silabs`` (``efr32``), ``stm``, ``unix``. -However, not all ports are not fully functional. Some have limited limited functionality and known serious bugs. +However, not all ports are fully functional. Some have limited limited functionality and known serious bugs. For details, refer to the **Port status** section in the `latest release `__ notes. Boards From 7014c0400503dc443ca503778082db7242b3e90f Mon Sep 17 00:00:00 2001 From: Tim Date: Mon, 17 Jun 2024 09:43:00 -0700 Subject: [PATCH 146/227] add pwm fixes --- ports/atmel-samd/common-hal/pwmio/PWMOut.c | 4 +- tools/pwm/README.md | 283 ++------------------- tools/pwm/code.py | 7 +- tools/pwm/duty.py | 145 ++++++++++- tools/pwm/pr.md | 95 +++++++ tools/pwm/pwm_plot_explainer.png | Bin 772360 -> 777734 bytes tools/pwm/pwm_rounding.png | Bin 0 -> 31492 bytes tools/pwm/ramps_esp32s2_905.png | Bin 0 -> 22386 bytes tools/pwm/ramps_nrf52840_901.png | Bin 0 -> 26353 bytes tools/pwm/ramps_rp2040_904.png | Bin 0 -> 29074 bytes tools/pwm/ramps_samd21_tc_910.png | Bin 0 -> 26196 bytes tools/pwm/ramps_samd21_tc_910_fixed.png | Bin 0 -> 25190 bytes tools/pwm/ramps_samd21_tcc_910.png | Bin 0 -> 25373 bytes tools/pwm/ramps_samd21_tcc_910_fixed.png | Bin 0 -> 23646 bytes tools/pwm/ramps_samd51_tc_910.png | Bin 0 -> 30159 bytes tools/pwm/ramps_samd51_tc_910_fixed.png | Bin 0 -> 28474 bytes tools/pwm/ramps_samd51_tcc_910.png | Bin 0 -> 30925 bytes tools/pwm/ramps_samd51_tcc_910_fixed.png | Bin 0 -> 27905 bytes tools/pwm/samd21_51_board_pinouts.png | Bin 0 -> 1103760 bytes tools/pwm/samd51_benchmarks.png | Bin 0 -> 69586 bytes tools/pwm/samd_tc_tcc_datasheet_blurbs.png | Bin 0 -> 663649 bytes tools/pwm/slow_samd21_tc_910_fixed.png | Bin 0 -> 12173 bytes 22 files changed, 247 insertions(+), 287 deletions(-) create mode 100644 tools/pwm/pr.md create mode 100644 tools/pwm/pwm_rounding.png create mode 100644 tools/pwm/ramps_esp32s2_905.png create mode 100644 tools/pwm/ramps_nrf52840_901.png create mode 100644 tools/pwm/ramps_rp2040_904.png create mode 100644 tools/pwm/ramps_samd21_tc_910.png create mode 100644 tools/pwm/ramps_samd21_tc_910_fixed.png create mode 100644 tools/pwm/ramps_samd21_tcc_910.png create mode 100644 tools/pwm/ramps_samd21_tcc_910_fixed.png create mode 100644 tools/pwm/ramps_samd51_tc_910.png create mode 100644 tools/pwm/ramps_samd51_tc_910_fixed.png create mode 100644 tools/pwm/ramps_samd51_tcc_910.png create mode 100644 tools/pwm/ramps_samd51_tcc_910_fixed.png create mode 100644 tools/pwm/samd21_51_board_pinouts.png create mode 100644 tools/pwm/samd51_benchmarks.png create mode 100644 tools/pwm/samd_tc_tcc_datasheet_blurbs.png create mode 100644 tools/pwm/slow_samd21_tc_910_fixed.png diff --git a/ports/atmel-samd/common-hal/pwmio/PWMOut.c b/ports/atmel-samd/common-hal/pwmio/PWMOut.c index 44e78d2cdad0..fd03cab5457c 100644 --- a/ports/atmel-samd/common-hal/pwmio/PWMOut.c +++ b/ports/atmel-samd/common-hal/pwmio/PWMOut.c @@ -249,8 +249,8 @@ extern void common_hal_pwmio_pwmout_set_duty_cycle(pwmio_pwmout_obj_t *self, uin // Track it here so that if frequency is changed we can use this value to recalculate the // proper duty cycle. // See https://github.com/adafruit/circuitpython/issues/2086 for more details - self->duty_cycle = duty; + self->duty_cycle = duty; const pin_timer_t *t = self->timer; if (t->is_tc) { uint16_t adjusted_duty = tc_periods[t->index] * duty / 0xffff; @@ -271,8 +271,6 @@ extern void common_hal_pwmio_pwmout_set_duty_cycle(pwmio_pwmout_obj_t *self, uin } uint8_t channel = tcc_channel(t); Tcc *tcc = tcc_insts[t->index]; - // Enable double-buffering - tcc->CTRLBCLR.bit.LUPD = 1; #ifdef SAMD21 tcc->CCB[channel].reg = adjusted_duty; #endif diff --git a/tools/pwm/README.md b/tools/pwm/README.md index 6dfa819988a9..b5d11c0b98e5 100644 --- a/tools/pwm/README.md +++ b/tools/pwm/README.md @@ -1,284 +1,33 @@ # PWM testing -This directory contains tools for testing PWM behavior in CircuitPython. +This directory contains tools for testing CircuitPython's PWM API. Running the tests involves three steps: -1. [CircuitPython PWM test code](code.py) is run on the board to be tested. -2. As the code runs, the state of the PWM signal is logged by a logic analyzer (here Saleae Logic Pro 8). -3. Data collected by the logic analyzer is analyzed and plotted into a PNG image by [CPython code](duty.py). +1. [CircuitPython PWM test code `code.py`](code.py) is run on the board to be tested. +2. As the code runs, the state of the PWM signal is logged by a logic analyzer (I used a Saleae Logic Pro 8). +3. Data collected by the logic analyzer is analyzed and plotted into a PNG image by [CPython code `duty.py`](duty.py). Here is a sample plot with key features annotated: - + +The CircuitPython code loops through a list of PWM frequencies ranging from 100 Hz to 10 MHz, staying at each frequency for one second. At each frequency it repeatedly and randomly cycles through a list of duty cycles in a tight loop, updating the duty cycle as frequently as it is able. The captured waveform is analyzed by `duty.py`, which calculates the duration and duty cycle of every observed PWM cycle and plots a point for each. +## PWM expected behavior -

- +These tests can be used to assess how well the PWM API delivers expected behavior, as outlined below: -# PWM expected behavior +1. A PWM signal has a period (defined as the time between rising edges) and a duty cycle (defined as the ratio of the time between a rising edge and the next falling edge, divided by the period). In a typical application the PWM period will be constant while the duty cycle changes frequently. - +2. An exception to (1) is that CircuitPython explicitly supports duty cycles of 0% and 100%, where the signal stays constant at a low/high level. In the CP API duty cycle is always specified as a 16-bit value, where 0 corresponds to 0%, 0xFFFF corresponds to 100%, and values in between scale accordingly. -(1) A PWM signal has a period (defined as the time between rising edges) and a duty cycle (defined as the ratio of the time between a rising edge and the next falling edge, divided by the period). In a typical application the PWM period will be constant while the duty cycle changes frequently. +3. As a corollary to (2), PWM settings of 0 and 0xFFFF should be the ONLY settings which result in always low/always high PWM. Other settings should always result in an oscillating signal. -(2) An exception to (1) is that CircuitPython explicitly supports duty cycles of 0% and 100%, where the signal stays constant at a low/high level. In the CP API duty cycle is always specified as a 16-bit value, where 0 corresponds to 0%, 0xFFFF corresponds to 100%, and values in between scale accordingly. +4. In the PWM API the duty cycle is specified as a 16-bit value and the period is specified by a 32-bit frequency value. A given processor may not be able to provide a signal with that precision, but will do its best to approximate what is asked for. The actual PWM duty and frequency settings resulting from the requested parameters can be obtained from the API. -(3) While in the PWM API the duty cycle is specified as a 16-bit value and the period is specified by a 32-bit frequency value, a given processor may not be able to provide a signal with that precision, but will do its best to approximate what is asked for to the best of its ability. The actual PWM duty and frequency settings resulting from the requested parameters can be obtained from the API. +5. The user can set the duty cycle and frequency (if initialized with `variable_frequency=True`) at any time. Changes in duty cycle and frequency should appear in the PWM signal as soon as possible after the setting function is invoked. The execution time of API calls for setting PWM frequency and duty cycle should be as short as possible and should not depend on the frequency and duty cycle parameters. -(4) The user can set the duty cycle and frequency (if initialized with `variable_frequency=True`) at any time. Changes in duty cycle and frequency should appear in the PWM signal as soon as possible after the set function is invoked. +6. Changes in duty cycle should ideally never result in output glitches -- that is, the duty cycle of the PWM signal should never take on a value which has not been set by the user. -(5) Changes in duty cycle should ideally never result in output glitches - that is, the duty cycle of output PWM should never take on a value which has not been set by the user. +7. Changes in frequency may (and will usually) result in a transient glitch in frequency and duty cycle. PWM hardware is generally not designed for glitch-free frequency transitions. -(6) Changes in frequency may (and will usually) result in a transient glitch in duty cycle. PWM hardware is generally not designed for glitch-free frequency transitions. - -(7) PWM frequency and duty cycle should be jitter-free. - -(8) Setting of PWM frequency and duty cycle should be non-blocking operations which return control to the caller as soon as possible. - -(9) As a corollary to (2), PWM settings of 0 and 0xFFFF should be the ONLY settings which result in always low/always high PWM. - Other settings should always provide an oscillating signal. -
- -# Test method - -To test all of the elements of expected behavior listed above, I exercised the PWM API and captured the resulting output signal on a logic analyzer (Seleae Logic Pro 8). Logic analyzer data was then analyzed and plotted. - -Here is the CP code. It loops through a list of PWM frequencies, staying at each frequency for a specified interval, typically 1 second. At each frequency it repeatedly cycles through a list of duty cycles in a tight loop, updating the duty cycle as frequently as it is able. -For the tests I show here, I used a set of 13 frequencies logarithmically spaced between 1000 Hz and 10 MHz, and duty cycles of 1/9, 2/9, 3/9, 4/9, 5/9, 6/9, 7/9, 8/9, selected to stay away from "special numbers" like 0, 65535, and powers of two. -
- CircuitPython code - -```python -import board -import pwmio -import random -import time -import microcontroller -import os -import sys - -cr10 = 10**(1/3) - -freqs = [int(f) for f in [1e3, 1e3*cr10, 1e3*cr10*cr10, - 1e4, 1e4*cr10, - 1e4*cr10*cr10, - 1e5, 1e5*cr10, 1e5*cr10*cr10, - 1e6, 1e6*cr10, 1e6*cr10*cr10, - 10000000]] - -top = 65536 -duties = [int(top * frac) for frac in [ 1/9, 8/9, 2/9, 7/9, 3/9, 6/9, 4/9, 5/9 ]] -# duties = [int(top * frac) for frac in [ 1/9 ]] - -freq_duration = 1.0 -duty_duration = 0.00000001 -start_duty = int(65535*0.1) - -print('\n\n') -board_name = sys.implementation[2] - -pins = {"RP2040-Zero": (("GP15", ""),), - "Grand Central": (("D51", "TCC"), ("A15", "TC")), - "Metro M0": (("A2", "TC"), ("A3", "TCC")), - "ESP32-S3-DevKit": (("IO6", ""),), # marked D5 on board for XIAO-ESP32-s3 - "XIAO nRF52840": (("D9", ""),), - } - -for board_key in pins: - if board_key in board_name: - pins_to_use = pins[board_key] - break - -while True: - for pin_name, pin_type in pins_to_use: - pin = getattr(board, pin_name) - print('title="', end="") - print(f"{board_name} at {microcontroller.cpu.frequency} Hz, pin {pin_name}", end="") - if len(pin_type) > 0: - print(f" ({pin_type})", end="") - print('",') - print(f'subtitle="{freq_duration:0.1f}s per frequency",') - print(f'version="{sys.version}",') - print('freq_calls=', end="") - pwm = pwmio.PWMOut(pin, variable_frequency=True) - t0 = time.monotonic() - duty_time = t0 + duty_duration - print('(', end='') - for freq in freqs: - i = 0 - try: - pwm.frequency = freq - except ValueError: - break; - pwm.duty_cycle = start_duty - freq_time = t0 + freq_duration - duty_time = t0 + duty_duration - while time.monotonic() < freq_time: - for duty in duties: - while time.monotonic() < duty_time and time.monotonic() < freq_time: - pass - pwm.duty_cycle = duty - duty_time += duty_duration - i += 1 - if time.monotonic() > freq_time: - break - t0 = freq_time - print(f'({freq}, {i/freq_duration:.0f}), ', end='') - print(')') - print('done.') - pwm.deinit() - time.sleep(5) -``` -
- -Here is the Python code used to analyze the captured logic analyzer data (typically ~300MB). The plots generated display the frequency and duty cycle of every captured PWM cycle (typically 16M points). - -
-Data analysis code - -```python -import math -import numpy as np -from PIL import Image -import matplotlib.pyplot as plt -from PIL import Image -from PIL import ImageFont -from PIL import ImageDraw - -def read(filename, image_filename=None, height=500, width=500, f_min=100, f_max=1e8, title='', subtitle='', version='', - duty_labels=(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9), freq_calls=tuple(), margin=0.01, - duty_color = (255, 0, 0), freq_color = (0, 255, 0), calls_color = (0, 255, 255), title_color = (255, 255, 255)): - """Read a one channel logic analyzer raw csv data file and generate a plot visualizing the PWM signal - captured in the file. Each line of the file is a pair indicating the times (in seconds) - at which the signal transitioned to that level. For example: - 1.726313020,0 - 1.726313052,1 - 1.726313068,0 - 1.727328804,1 - """ - rising_edge = None - falling_edge = None - pixels = np.zeros((height, width, 3), dtype=np.uint8) * 255 - t0 = None - t1 = None - with open(filename, 'r') as f: - for line in f: - t, val = line.split(',') - try: - t = float(t) - val = int(val) - except ValueError: - val=None - if val is not None: - if t0 is None or tt1: - t1 = t - with open(filename, 'r') as f: - pts = 0 - f_log_max = int(math.log10(f_max)) - f_log_min = int(math.log10(f_min)) - f_log_span = f_log_max - f_log_min - for line in f: - t, val = line.split(',') - try: - t = float(t) - val = int(val) - except ValueError: - val=None - if val==1: - if falling_edge is not None and rising_edge is not None: - period = t - rising_edge - frequency = 1/period - duty_cycle = (falling_edge - rising_edge) / period - x = int(width * (t - t0)/(t1 - t0)) - y_duty = int((1 - duty_cycle) * height) - y_freq = int(height * (1 - (math.log10(frequency) - f_log_min) / f_log_span)) - x = max(0, min(x, width - 1)) - y_duty = max(0, min(y_duty, height - 1)) - y_freq = max(0, min(y_freq, height - 1)) - pixels[y_duty, x] = duty_color - pixels[y_freq, x] = freq_color - pts += 1 - rising_edge = t - elif val==0: - falling_edge = t - image = Image.fromarray(pixels) - draw = ImageDraw.Draw(image) - draw.text((width*margin, height * (1 - margin)), 'Duty cycle', duty_color, anchor='lb') - draw.text((width * 0.5, height * (1 - margin)), 'Call throughput', calls_color, anchor='mb') - draw.text((width*(1-margin), height * (1 - margin)), 'PWM frequency', freq_color, anchor='rb') - - for duty in duty_labels: - draw.text((width*margin, height * (1 - duty)), f'{int(100*duty):d}%', duty_color, anchor='lm') - for exponent in range(f_log_min+1, f_log_max): - draw.text((width*(1-margin), height * (1 - (exponent - f_log_min) / (f_log_span))), - str(10**exponent) + ' Hz', freq_color, anchor='rm') - for freq, count in freq_calls: - draw.text((width * 0.5, height * (1 - (math.log10(freq) - f_log_min) / (f_log_span))), - f'{count} Hz', calls_color, anchor='mm') - subtitle += f', showing {pts} PWM cycles' - draw.text((width*0.5, height * margin), title, title_color, anchor='mm') - draw.text((width*0.5, height * 4 * margin), version, title_color, anchor='mm') - draw.text((width*0.5, height * 8 * margin), subtitle, title_color, anchor='mm') - image.show() - if image_filename is not None: - image.save(image_filename) - return image -``` -
- -The plots this generates are pretty dense. Here's one, measured on pin 51 of a Metro M4 Grand Central board, annotated to show what is going on: - - - -The PWM performance here looks pretty great except for the thing that got me started on this in the first place - the call to set the PWM duty cycle blocks for a time equal to the PWM period. - -# Measurements on samd21/51 port - -Investigation of PWM on the CP samd21/51 port is complicated by the port's inclusion of two different processor families, each of which have two different types of PWM peripherals (TC and TCC). Moreover, the TC peripheral for the samd21 is not identical to that of the samd51, as is hinted at by these datasheet excerpts: - -
-Datasheet summaries of samd21 and samd51 TC and TCC peripherals - -
- -The description of TC for the samd51 notably adds mention of double-buffering, while the samd21/51 descriptions for TCC are the same. - -For samd21 and samd51 boards, TC and TCC were chosen by selecting pins which support only one or the other. Here the pins are outlined in red: - -
-Pins implementing TC and TCC on samd21/51 - -
- -Here is an analysis of data gathered from each of the four types of PWM peripheral using the software described above: - -| | samd21 | samd51 | -| ------ | ----------- | ---------- | -| TC | ![all_samd21_tc](https://github.com/timchinowsky/circuitpython/assets/5445541/03d23303-f346-4e3b-a14e-7fdf1c0dc44f) | ![all_samd51_tc](https://github.com/timchinowsky/circuitpython/assets/5445541/9de21857-812f-4081-9fa3-68ebb3125ec7) | -| TCC | ![all_samd21_tcc](https://github.com/timchinowsky/circuitpython/assets/5445541/ccc69f9e-0ed7-4401-bdd0-6588a71c6b5d) | ![all_samd51_tcc](https://github.com/timchinowsky/circuitpython/assets/5445541/529b4500-0fbf-4357-ad67-9a2d7353ffa9) | - -Key findings: - -* Data from both samd51 peripherals looks good, except for the blocking issue (variation in execution time with PWM frequency) -* Data from samd21 TCC looks good, except for errant frequency measurements at the top two frequencies (pointed out with white arrow). Unlike samd51, execution time does not depend on PWM frequency. -* Data from samd21 TC has a lot of weirdness at all frequencies. - -# Code analysis - - - - - - - - -, https://github.com/adafruit/circuitpython/issues/1644 and to port `audiopwmio` to samd21/51. - - - -
-Datasheet excerpts - -
+8. PWM frequency and duty cycle should be jitter-free. diff --git a/tools/pwm/code.py b/tools/pwm/code.py index 9c2429d45b47..b7f10670e8be 100644 --- a/tools/pwm/code.py +++ b/tools/pwm/code.py @@ -7,8 +7,6 @@ import sys import random -cr10 = 10 ** (1 / 3) - exponents = [ 2, 2.333, @@ -27,15 +25,15 @@ 6.667, 7, ] + freqs = [int(10**f) for f in exponents] top = 65536 den = 10 duties = [int(top * num / den) for num in range(1, den)] duties = [1, 65534, 1] + duties - freq_duration = 1.0 -duty_duration = 0.00000001 +duty_duration = 0.000000001 print("\n\n") board_name = sys.implementation[2] @@ -45,6 +43,7 @@ "Grand Central": (("D51", "TCC"), ("A15", "TC")), "Metro M0": (("A2", "TC"), ("A3", "TCC")), "ESP32-S3-DevKit": (("IO6", ""),), # marked D5 on board for XIAO-ESP32-s3 + "Feather ESP32-S2": (("D9", ""),), "XIAO nRF52840": (("D9", ""),), } diff --git a/tools/pwm/duty.py b/tools/pwm/duty.py index 997211ff9198..0673f96c2b64 100644 --- a/tools/pwm/duty.py +++ b/tools/pwm/duty.py @@ -1,16 +1,135 @@ -def duty(filename): +import math +import matplotlib.pyplot as plt +import numpy as np +from PIL import Image +from PIL import Image +from PIL import ImageFont +from PIL import ImageDraw + + +def read( + filename, + image_filename=None, + height=480, + width=640, + f_min=10, + f_max=1e8, + title="", + subtitle="", + version="", + duty_labels=(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9), + freq_calls=tuple(), + margin=0.01, + duty_color=(255, 0, 0), + freq_color=(0, 255, 0), + calls_color=(0, 255, 255), + title_color=(255, 255, 255), +): + """Read a one channel logic analyzer raw csv data file and generate a plot visualizing the PWM signal + captured in the file. Each line of the file is a pair indicating the times (in seconds) + at which the signal transitioned to that level. For example: + 1.726313020,0 + 1.726313052,1 + 1.726313068,0 + 1.727328804,1 + """ + left = 80 + right = 80 + bottom = 20 + top = 60 + x0 = left + y0 = top + y1 = height - bottom + x1 = width - right rising_edge = None falling_edge = None + pixels = np.zeros((height, width, 3), dtype=np.uint8) * 255 + t0 = None + t1 = None + val = None with open(filename, "r") as f: - line = f.readline() - t, val = line.split(",") - t = float(t) - val = int(val) - if val == 0: - if falling_edge and rising_edge is not None: - period = t - falling_edge - duty_cycle = (t - rising_edge) / period - print(t, val, period, duty_cycle) - falling_edge = t - else: - rising_edge = t + first = True + for line in f: # find min and max t, excluding first and last values + if val is not None: + if not first: + if t0 is None or t < t0: + t0 = t + if t1 is None or t > t1: + t1 = t + else: + first = False + t, val = line.split(",") + try: + t = float(t) + val = int(val) + except ValueError: + val = None + print("plotting", t1 - t0, "seconds") + + with open(filename, "r") as f: + pts = 0 + f_log_max = int(math.log10(f_max)) + f_log_min = int(math.log10(f_min)) + f_log_span = f_log_max - f_log_min + for line in f: + t, val = line.split(",") + try: + t = float(t) + val = int(val) + except ValueError: + val = None + if val == 1: + if falling_edge is not None and rising_edge is not None: + period = t - rising_edge + frequency = 1 / period + duty_cycle = (falling_edge - rising_edge) / period + x = int((x1 - x0) * (t - t0) / (t1 - t0)) + x0 + y_duty = int((1 - duty_cycle) * (y1 - y0)) + y0 + y_freq = ( + int((y1 - y0) * (1 - (math.log10(frequency) - f_log_min) / f_log_span)) + + y0 + ) + x = max(x0, min(x, x1 - 1)) + y_duty = max(y0, min(y_duty, y1 - 1)) + y_freq = max(y0, min(y_freq, y1 - 1)) + pixels[y_duty, x] = duty_color + pixels[y_freq, x] = freq_color + pts += 1 + rising_edge = t + elif val == 0: + falling_edge = t + image = Image.fromarray(pixels) + draw = ImageDraw.Draw(image) + draw.text((left - 10, top), "Duty", duty_color, anchor="rt") + draw.text((0, top), "Calls", calls_color, anchor="lt") + draw.text((width - right / 2, top), "Freq", freq_color, anchor="mt") + + for duty in duty_labels: + draw.text( + (left - 10, y0 + (y1 - y0) * (1 - duty)), + f"{int(100*duty):d}%", + duty_color, + anchor="rm", + ) + for exponent in range(f_log_min + 1, f_log_max): + draw.text( + (width - right / 2, y0 + (y1 - y0) * (1 - (exponent - f_log_min) / (f_log_span))), + str(10**exponent) + " Hz", + freq_color, + anchor="mm", + ) + for freq, count in freq_calls: + draw.text( + (0, y0 + (y1 - y0) * (1 - (math.log10(freq) - f_log_min) / (f_log_span))), + f"{count} Hz", + calls_color, + anchor="lm", + ) + subtitle += f", showing {pts} PWM cycles" + draw.text((width * 0.5, height * margin), title, title_color, anchor="mm") + draw.text((width * 0.5, height * 4 * margin), version, title_color, anchor="mm") + draw.text((width * 0.5, height * 8 * margin), subtitle, title_color, anchor="mm") + image.show() + if image_filename is not None: + image.save(image_filename) + return image diff --git a/tools/pwm/pr.md b/tools/pwm/pr.md new file mode 100644 index 000000000000..ab055c04a2df --- /dev/null +++ b/tools/pwm/pr.md @@ -0,0 +1,95 @@ +# Fixing API delays and rounding in samd PWM + +Blocking delays are observed when setting `duty_cycle` in the samd port of CircuitPython (see https://github.com/adafruit/circuitpython/issues/7653), behavior which interferes with some applications of PWM, and which differs from from that of other ports. Here is a comparison of execution times of several basic operations on three different ports, showing the off-the-charts slowness of samd in setting PWM duty cycle: + +![](samd51_benchmarks.png) + +Investigation of this issue revealed another problem. In some cases, the API will round a non-zero duty cycle down to zero, causing the PWM signal to stop cycling at all. The cartoon below shows how for instance rounding can transform three PWM cycles, with the first almost 100% duty and the second two close to 0% duty, into one PWM cycle with three times the period and ~33% duty: + +![](pwm_rounding.png) + +The changes proposed in this PR address both of these issues. + +## Implementation + +The CP samd21/51 port serves two different processor families, each of which have two different types of PWM peripherals (TC and TCC). Moreover, the TC peripheral for the samd21 is not identical to that of the samd51, as is hinted at by the datasheet excerpts below. The description of TC for the samd51 notably adds mention of double-buffering, while the samd21/51 descriptions for TCC are identical: + +
+Datasheet summaries of samd21 and samd51 TC and TCC peripherals + +![](samd_tc_tcc_datasheet_blurbs.png) + +
+ +Conditional compilations and `if` statements in `PWMOUT.c` provide separate handling for each of the four combinations of samd21/samd51 and TC/TCC. The code modifications consist of (1) removing synchronization delays and PWM configuration which were found to do more harm than good, and (2) adding `if` statements to disallow rounding down to zero. + +## Testing + +All combinations of samd21/samd51 and TC/TCC were tested separately by selecting board pins which support only one or the other of TC or TCC. The boards and pins used (outlined in red) are shown in the diagram below: + +
+Pins implementing TC and TCC on samd21/51 + +![](samd21_51_board_pinouts.png) + +
+ +Data gathered from each of the four types of PWM peripheral before and after code modifications are shown below. Details of the test tools and procedure are [here](/tools/pwm/README.md). + +### samd51 TCC + +| Before | After | +| ----------- | ---------- | +| ![](ramps_samd51_tcc_910.png) | ![](ramps_samd51_tcc_910_fixed.png) | + +In the "before" plot, the variation with frequency of call throughput (shown in cyan) and PWM ramp slope points out the frequency-dependent delay found when setting duty cycle. The clutter in duty cycle and frequency measurements results from zero-rounding. Neither is seen in the "after" plot - the PWM ramp slope is nearly constant, and duty cycle and frequency measurements contain no outliers other than at frequency transitions. + +### samd51 TC + +| Before | After | +| ----------- | ---------- | +| ![](ramps_samd51_tc_910.png) | ![](ramps_samd51_tc_910_fixed.png) | + +These results are very similar to those for TCC. Both delay and rounding artifacts are seen in the "before" plot and not in the "after" plot. + +### samd21 TCC + +| Before | After | +| ----------- | ---------- | +| ![](ramps_samd21_tcc_910.png) | ![](ramps_samd21_tcc_910_fixed.png) | + +No frequency-dependent delay is seen for samd21 TCC, only rounding artifacts. Compared to samd51, call throughput is ~4x slower (as would be expected for samd21's lower clock rate). No rounding artifacts are seen in the "after" plot. + +### samd21 TC + +| Before | After | +| ----------- | ---------- | +| ![](ramps_samd21_tc_910.png) | ![](ramps_samd21_tc_910_fixed.png) | + +So, this is the problem child. samd21 TC does not provide double buffering of duty cycle registers, so writing to registers may or may not induce duty cycle artifacts depending on when exactly the write happens. My takeaway regarding samd21 TC is, don't expect too much of it, but it's fine for less demanding applications. Here is samd21 tc updating once a second just fine: + +![](slow_samd21_tc_910_fixed.png) + +High-rate samd21 TC should work well if updated in a DMA/ISR framework like that implemented in `audiopwmio` in other ports. A logical next step for samd21/51 is to implement `audiopwmio`. + +## Other ports + +This PR describes PWM fix-ups for samd21/51, but a quick look indicates that other ports could use some attention as well. Here is some test data for three other ports. + +### CircuitPython 9.04 on RP2040 + + + +This looks pretty good except it shows the same rounding down to zero issue as samd51. Probably all ports have this. + +### CircuitPython 9.01 on nRF52840 + + + +Similar to above, looks pretty good except for rounding to zero. Tops out below 5 MHz due to lower clock speed. + +### CircuitPython 9.05 on ESP32 + + + +This is more complicated - looks like frequency tops out at 10 kHz, but duty cycle continues to be adjusted downward as if frequency has increased. Needs investigation. diff --git a/tools/pwm/pwm_plot_explainer.png b/tools/pwm/pwm_plot_explainer.png index 6466723a5864618260c9177c4f51c9b6595af713..7520423a1bfffa95df500597db20bdf90333dbd1 100644 GIT binary patch literal 777734 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

E=udk_FqS+q$s@{-N1XAQu%GMdjcdxgd zdK?wPi>rR7?1@~l$v+$CUAn$ttUf99EoSi(D%%2=r9ysnL|k~BKHTcn2;!Lc^=e~e zGVQK`$Iu0TY(Ti3xMhj-pef!$kfVOhz=MScdDSx38njf-nd;@0F;+8~ns}3b$f*wv zWAH~0(Dh*ZXjNOX;0y~7+S1`vCemIlGQhk_D;(nH!ry6&98{?KmpLWDYP6riyg$g` z(AfeG;A8TXr-u^;w`x_p7piUqBKR4K6h|OGR)9E^<&G zrl1>XRR&M$fwLWSMB)A#E#9n6z>1CZVAFOLXKZE`N~~mgzs(B0%^&4F+Z9AZu!+!`QlVtnG)=)e&CLeFb!c;@+>BHTbodR1G5{*z7h#)PU z=VKEtg?Ky}&r(B)9vm4~`_PCo^{R`$8ao*!ra=8;j!srnQDVp0!dOmZ9@>u>gNwB1 zJqUIke|u2E46upck)68u0b#5qDa1m;(M+6d&;ax zlzMs+mg!+X;VCq_U7@@*}EXuHV!1N~saX9F%2T4HN6SM2*O z&hIvytB2_S5%m>7aco_;!GgQH4H_W0OK=8vcPF^JTX1&|F2S8ZaCg_>?h+jG`riBf z^-e(*HPh35rs#8e@3q!myI?E?^2fYtaK)aQ<+G^n_i?Jzt)Bm zP-V_Mj};lFBP0GDZ8mNF?yFijZv)zke(qMF-yf<(0!2n3YY{ZsU$gJ45zP~IHJ?Uu4#GdW4a6AHF(XmD2bc;c-4aGqKp2rF{|+484O~xEMAOcu_@Hw45IgBnJLj?)&8Vc`#gkis`k^t!(uriIS@X-@%GAnDcgL5VWJfM z(NyvtUM;HUTAfxi``Pj3b>>e}lg(=sO6q!B_P%rOUPR89T_~mJfnKjg0q5_ei`+hu z>9w4$^>#1PBw1WLzyGL0SemTV58&--z05z?(T*R;v#DG3dj9rjX^Jw=EE@s2GBV1x zU+^X-(HPB(%WI1y*2++weGT0f4KLff)r<`;vPwrro}Wk;ep^^#_U!rd;TtmuNi>ML z`{=Zgm0j$3nmk(sV#pOe5i7;khK$b}C+To%sI0QDtWtE?3Dj6oS*XlloFc6W1@%uq z%!x#+9B_L%{sMc#Lc$0;IpAzBzBI$;3hWXG_vd>GY*s(0lVo$b@+vRi1R`G^8XmZ6 zbcE-BOIiK z>|u~I1CJI}er+hwJZMQ-y&0GfC8GoHnc{yA0VIIja9;)Uh*>kOrpkl1Ni!$7q`0jP}OxKY?Y3BEz8!6i~M33H|M8dS;TlhMLLgbR>X zs^1Vm%0>2mFY1|yILfHlf<3Dxe)nw^srwk>H7dnmY8DY%GAVEj?V2dY1Gl{2`ctXS z!>ZM(Jj+uFuamRUik^!GsY^30p9mW12_o1pz&SLJ&=dj;rl12eFuPvJQ>9mpCI<%) zHxFfDM;TyQQ{prx>>AfoBqe{xUD_wh#|ZH;1#t3;n?W;&%lYMHk8HBarY6_*Kh1V4 zqhmEc`40f?Eav8mbo5|QH-V>}LvK7~mr(WG5xP)!S8p}p;IMBH+3Lf>rz-!nPw?RB zigH~Gv13rOFION&U14bM-o z59?)_-URWU)JP}gepP-g8twYaEplh(1ENq)#25snv};i(;Vu@WvnCQPU_X*C^r0-q zi`KOS@eysMK!RYB8)c0nCGIPrlkCex6DbaVFh>iLEjS@82xlq(3e`Zk3WGA$6Ojjl zN>Anul8PLEOYvx-eIySgrLYRRAxHEcjv0M|s3$KdqEeo7J*kmN$jSIJ3`s6A3Pav? zs={lzttF^GLgOF|mZGJLaH$mDePxdT6C{GZzy*=@H~5?-jyV``IK9!sKx5M0#Yn^) zWYx3lrj^t-@NfH})swlaB`$hX7f@r}*rVpu=n-N5H=KXB6+!+udsC=?hn2Cq@mjuG zimQFjYd2m=gv-=D7e?(NCfw;G5t5>?%&NA zMnv8-n)ux%zIQi7!+)rWn#{8?UjRIKF7y-x!0)T!o?8-7Zh}MYa+0tPXWYsXZ{vb6 zhn{~2=9$`78dy$FSqKT?`vQ9OI?9O%K6DQ+6qY2GnFnP=;mrK9C44Jp^(u)iImJ!P z;fP{JTK+q^#yvnGU-zx(tEH<|yy>`Xs#RV`0wt;6@U}91XLYQpGg}5en_?0;dz&J3 zW9I%&_G4ie37V-+N#R%CH=Pz{ha|#6LP3iYU298da+^xt z*Jk6ormxOdtPT)u@jw=ng^{4?7+9`EBXj0VVYCQ@FQ}iBaL;jr&D9PLLV9B0gP+2} z4DYlul`0D%$BB7Xkp*6e@bL5nYs!0BHjmaob`|;~ zge#j|2pX2V2HklBn1gVBf)gyqaaAEGDafRB?CucmGfqc;fQ4M}<>CZ7lA5KlBa&@T zg-d|mV!l#S6eYzkYg9NKD07ijnmJXQFB%6NXCg;{iB&F3R#)A6%ls%5z`$LyG11tR-E(lr7$?THXioCCP^jd#4>Of(e>g`= zl8J7yi{F=o9pBK^-rV`JZ9xOim2He;uIkHnhy_GpQ%1?meB3U}?}WlVW@U@DM1JeM z)$Ys}l9Ju7eHWjJigU4vV9cW=f&{R|=`{h22I z(M4d*Q$+m=m-lZ~=Kvj5+IXDHtgVD)ifg09Z*s1In8zfzOcQo>HF3mq?X$Dh6KTr!;mNf8^3tKrze(?%z+N=y@< ziV-?&)4Cqtyk%o%0RW68$FQX2Mko&Jsins#h`9*IV9Ljkk6(wjZqBic%6C<*ee^8@ z>lT?9{N)|NyUvG~z$^j)+(?Ft;zPbbx-BzJp{6X`t#Du?Hp#1}wsKfqNw(c-GMu^T z`sp*=st-`N_UaYJnzdJ46}toh9|VzK^~OIiWVr_S?Fn2)3Na-n_A|l<*Ko`i#P;`g zsAU--X*{}?Ypc{v7tyZg$O9jP1j9jJb?smMLhL(pTaO|@T+;VGPbWLQ=(wa#0VEx# zn!<}Z_MNWsYwRIg&Lxu?r>7oun&xTev$i}$cl=_ztL!N+Cy8Yu4*iJ6 zfs25O^!7=uytgJUqJb@$|%SP{w$$IG@?3l0HIfiAwBQMFi>@mK_k(dHe}87HHNzW7w$x3h=A*&jE-pC< zVM>1BJJL#dwpK3Eq3oHz>Oz3hktSNzrr?k(t)mpL7$93IGUBX&UWnfoz&QZLfNy8< z{?J$Ns~pkAB@>o73P%oxT8&GjjLTwn%J+PFPJUPeWw}xVUc`&g`U{2g)-1J6V#kB>20~+|m0fJ&=^q*P+F)-~9*-;*2#WjGVKm!E!Hld?nH#AHZ-?In8R@2 zLFjqQSB>ZI{$eOLp&*~#@10!oysJio<|X8lnf?L#w@@wFCQ(co9#x}-xl!SPYgF^{cDL7WY{ z?(oy&b(fMS1R(t4b&q|`^^cv*6Plb2$7wk0DQ5RKL)Xmmyr9t=Qp@wNj3TjzKX=Ay zXvOBdun2FgXb^h-GzmmZQZjmkJpPt&@=)hn7MOvym*uXFf zi%LO<;6)#rQ8~nv0_RJrHOK4>Ad5Jgb@&(O10+QK?nLWO8Pfhj6749i)xsskFqB!s zQWz4{qITw=Bz$9){e}8qQ4~q=y5058L;`oZd}-TBiZ$6?ekNdw;e~Cz(D*XYl+#Cq zeI%&q`dF%LUe=OUAmCk#fcyDKWn!YJRK9Om%r;dOo1CJbPFSJ6eT$pQn%Og%i zqlK)V;pj>PJIzTEEIXk^=X|Q(D~ta&>qk$)%Nc7{x_fnNoZ(w7*-_0R+EFy}nTcR! z1x!7mKnd#UZl*}dNvX3w)*sr38Z(;~YB`LIpD{T*`)>W+sb_g=+woVp7GtNQI8?gy^KBufwO;8<+j+9G{LGf2LcCg484T!Oa)f8nKQ274mq(Q&^b{BT#|nMMT@ zRfWH13V*GLO^jD^!7mVlv?_p8RS}jOCR!C7@4lyyzjpFh!uc;VxYatu5Zp(eN^oJ4rj1whCmty64&jQ2WaPK$-`G7OuPnvFwhOTwn1MozRw6)vE z$a|Om=_TRn4bKK#_0KUTr2O>^PZtvUkGGs&@7EA^j}4B{x-`tqKUpMG3vY6AEtYPc z4L%!>`~+I6mLHdb9N3yODz(_rBCZfyDCrTQgN7o!(t^F^-MNz{4->hz)sD zmmC`=r+tDN`ze>Yn;Kq^M|+K#?4W9krTVAnJeWx)>R85>?eeBO{>H=s{~K=GA4*8M zd-eDC+KcuEBPNKrbvH9+fHB~6;cR1xS=DP2Rbz|x-CLOjr10L;1^|}GxE;vW|M-#o zjOyfZC@=l;u&ZAA7%N)*E3ey?g%uwI8F^V$9CAu@k^Qb6NkT8PyPocRQ(>z;BsW~+ z2ZjfUn;7av@VN2#n|IYHBelw&;p-zT8s~Csg9~$Q(jGdBvQ28vE^+6JT^N zU+i=eh8PGME235~8g*To+1!|T|J}m<)0t*c++|u?A!oEP%buFe<-Wb z=ieI_Ed6=hcYsm*QV|aVcMOe)6q6QK`8riVA^Ez>LwY3Q5L|w1$SK}X5uZRM z*hmB<5?9jYz44^;*-@GQ;Gj)URs~{trwg(S!y?T7ARKLulxR@hlIxRe`DmDNDEa14 zIg3mT8PbY+lV`J{aojGeYVcB+QrK(2(x}?|lww8!S-!GK9h&oX+j;ZaAhcG?hTB@} zDG{&B5qDZuZf>sQ65pn-ZJDf+*;&HwR{r6wjZr#kjYHs~n2${xk&Ewr2T4S98GfL; zoqS>?X?A20oDU7zvfh4J$mFGk@@u>5e*R%z!Q7_qsq9Z1EgEu%S-0WzTd5apOkX#f%f> zy(&fu9-@#gDh&Tf_Lg=d(h=995wPnfQM0i{C<#RuNtMB8%wq+M6-snjf1~6ZYYk2) z8^gb+y{PeSYOvus5i#?$_ ztxPYKZ^3?|jp5O(P`p|22*$QprnxF`8XmZXnw^uyK<1^0SHv9s_C*etSB zEeuuF@e@P=sq#h3bzi_)6;^rq$Ne{yNTxVG`9ngjlrn2Jt9PG|4Z@;RWy9^!@n2>@ z;}SVyg~AW*`jIacbzeUH$JZVNIm74OAlUf$L504g&D=>U)X!L3*lGlx-JzuNw`LD4 zCNccAe198{U2z2d5b3=zL|3NP?qrQwLV4wC zJ7+ssujBClicC>pG(KO#xn7pJoV}jc=5#x(Q?_;Sc`{1fTnTfuq|Ev2g`km-d9*eo z8i-QgQe%7`w|Z31p#L{~p=xtwgmP1FaFCS2XeCbnFlCKzW`dm>W_``oHM*k(gW6iIk>qSJ|BN@L;WOa z_YSln9P_Wm(LV|Fow^a-f>(T$o%f<(giwFk)|M*z3V& z=v?exy%FH`_xre$3&6Lp&bTsvD}u#0H-=Admu_@5NZB{LJ5iYmeTTd_xtL659JM$Z zIR*bh3K-}JujN>K>|5AYt3g9%FrPX_F2s!r2 zs}pS&CA}v%TbdhT5FcesoLyH1W0SE!tQ5_#oQyr zkNUWA{x9IvcN=VC109(qwNtH*V<-j_rYI8K!9?}i-yT5=e_568au0z_u>nLtASGwj zJ8rHd$L180$qIuW780QNeQb4$CQnh&2X52#U#1AohZL+fJ!=JofZez8STGzw;op*x zDJxzEQiV|f8f^)u5^G8X}`$EaP5S4`W_4AXYMe`e_tF>8J zEWSu5rdQLkkFs{!B|rE4V8IPZhr{LGfjx88z2{~E@EY*zT zicumx@ekfPM^X2Bu{xO5%!N{rPW570CCcz3zkxVUuWrSh=gjphB?-XB%njsE(fpql zKrJ-1L_UcgGlco*>5iLeU~G?SH55b+Us6fW#vV#2ms9DA{2A$~+ih97$+PC9_K?-l zyLB2sof!dx4N;TK3N*-Izi$1dA3PQV{}Rjv;wsCBUO+W&vpTWc(!bC$j@q`is7ZST zSqNT-#k#gDw=UFSm=b`@0&jd&DOF0S>y6hRGRZrw>vJp5rPO7Sa85LnPK~>l3+|g0}=FH zJBjB~skmDDJ3fwcn_1iq1R^=&dZGfFM9`xC(rzuO?)7An9iG$j?aHAS*6Rl$Bsv&~ zVi__^l6$By>!Wp_>Q-^mseAH(ZUh!qf-W|{pVIYT&zHXfMDdM@H-1)P?hl@Qvbasrdlf28Y7rm@aIJ zN(_<6?5^=_KscLCPFi||*-8$*mEvQg6@coM6P6k&riU9m8LmY%PaLhgS0Chu_mPKXOUC_?8Yc6F z7#Yn!g#!%l_vV~u(0w0%@_&9^k>>riF|zCb#QjOa+jxKF^>d}>^*M63{y~DpTOPwf zAhAO2!BlG9-LGn+<0FciFHnOO+4MH)zt(i3n z-Ej+bbtZZHcV%3#S&vw)u81E#@M+x_VmE%)9UKic6!?2lie(8A8pH22h2iCQ1zky^ z+Z*{y+sQ?XZt9?v#A3lc*U?HBb)hOln4vTy1sa9dTPM56 zTa?vH9WWnG)`Ng!_Lry}>tkRWjJg;zw$&b6o%@EUuw!Gq)9R$>QoS}ldil9`*xvBG zVV9I6R4%S|?~^b8Q?R6_+ge{0!Q0X7=-i*X-Ky7nOdCPH$J`}g%c}$;G;`lr7iYG% zMRip@nw9Bq-%lTNqg1MyA4l|K&wk4l|03OV{GJ>#KymK?Pn7|hTa_-aLEUUtN&+j- zl_+tUd^86lLaW%~w}CX9V!#x89H3*M|O5M}idr_&Js4@q=WUQiq6LgDeWWN@!Qa7{D)`wiP0&0xmipYeC8HaO@c>`CDK3LT6 znIFU5&-+P8x-4xYpKRvJhF|4p_nhGY133*m+UL42l@fH%f;DNCzz)?}E!h^fq4YJT zl0D}0A{BF}VaNVe!TI#5*L*$QILgp=+5m!11!t$7?YD*x0M-N?(>lX$`GoWf^xkM{ zmN5Vh_6CG*s-YpEWo_3-@w#3x(eXHMT8i!XElKLjPCe}Pw4a6_oA)Gmi}g=XiBpqW;Zx2e9Gv)b zUha7w>4M>QM&ShwGSa(p*=U##J1e+)D&Ww$zoR~nQQ~1=9&k*$Hg+GFLMy<<2>SxJ zZPlwP1*w&!h>VYp5cE}QD?0f>6jBFGlRPnAQ4U`#2~8PvrtAVQoc7Cnv!h3hhLAOq*NTb=(c>UiHr&#XQ- zyts2-MhRG$Xt&=SYnNm z)3UXS?bl`=*OnO`caspXmmj$vSWhoAEe*KS4%m?{JkqKKDES=Mxj)rzuW?Pkwh+5C zeko|ly7-MrP`NjJ5N)|pI^TolG%R6;d}xAt4yHpK}I>O_@(m z!Sb16UN^~Q@66CzCG5;-wx?LP7WGE)HeV_Dyg5ab@K%52-Sh;v7PA(3QyWZ5ViJoa zPS3d(WtH|qqi6uzP<_cZ-z0dfsz(_32?3FtW{8i$RMVOLUHf2O1k}nqq0e2 zE7pij!r_B=SSN$foCC|D$w}9kNY|RS;V_(&snre!Lxic|Jc?D#oZFi1PF%=`hcQ$n z#Avmt6&xl@k=%$L_nf8RZ(`ZQoNgy0Cv*j zl&d*qRfJp7f`qM;Y&_o&hvph30F8s#zk%TuC{QmR3z|g|+}H zy2JCr2Q^BOODKJp-1P6GvfJyk1u=tLS7vwQU=a*pA|aqFxRpyUxE^t5Q9?Ovk17=n z?bKnZSqqAR?P3Q!zJzHD**h0)AR>YTaS*I^$3O#2XMofz7BAVi5Zy%ndQ?!nDjhxU zm#ye;4HDu;0LLi~$!OJ>jg~+rOZ?=H7V$&kkV%vjj-n?OB<>oOASyd-+>b2-8CSU9 zTh>`XN&y*I6rG&(kA{;DLmysvD@=(;Vk{Jz(l<$!4kICly1#$e-&8ICP<3`rj(Y$$ zFp|8`BDv7S4GBmyi5<#NxZ!v(MpvjXJB5YEMw4%G>{d!2!7x)@cP!ZdW5D;FJ$*(s zj|!~k%4Z9;u)Gu~H8N^nGmH~9yE0zyovS`Zz1~;DLv!Lhp>ietz0z%A)7A^jZQ;rj z{@OoxSCcHHW$D~SdpG@O(6f4ObneaV{gvA{<;LahfPqR$J@B8E?!Ea}xr`t9_2ZuoZ{d1Mi z&;UM3Nvl2S+hu2Xl@;EfKb9H10NG@|=}7bBzPaCh#hlU?e!Ny6`qdGREzQK~Mfb#_ zc}I=jBR2T3%`yU7LiJVLi9U7ckBrjL=f>j_$|n#_0k3IzvYyGFZhyoMIEV1( zEsf#WCo{I&0=Tq{3xzP;rJAk&Cmovx8uD2A-WYIG3@wq~wGRI-oHRR2+tVVkU{qQ(bwe6us;8bYa^4D!LDx zLqw%iO@$7I{MQf7pX$v3_)Y5s-Z_il1f5Pu#ix>>1NDEt`kyqcsTWS$oVx!2LYrPmOt{7{pFC7X z*u3~3YJ@aMJV#G?$Ex*75*L*?na`dz9YDQyr_GEjeng3dC4CDu@`2?E)rw!u>9zKX z@feGVQ%rR|x7BP_b{5%%2&;aFN%a>oP>C{N7+hVmTT$UJ9hh1q%|5A62-=roc0&N^ z<%6ik=@Pa+ajfL~%OnI}q9~2$GuW@|5duPk^BL+PAUU`iB2`&#LL>*9T1=I^1N>{(yH{q7 z!8ZdY$D_CNWWfD->t(GRE2{B#dwSSPgOUre))F1+9b2mfYT|b?Pz3W8yre!39JGj3 zh;V>TxiSf!q2&@2LWjEw5R7JMHKhA&xUw7kLeo;By%hSgxn`d?Z5Ws-6`vs(3_f?J zBRMkJ>a!d5^=(}^$#~F#3t>pg;y@f=A95Wcpjuh}mNCZi(_d&u6_Qa-a?G5CMuB{R zKV^L0>dwwDI1p7ZKYJ=JMp$1xc0Bkhe}ww+bbhmXu(Gkn`E5 zP3+TK!wS9Z{B2)^Zn((lofmIYsb(WU9O}Zo3)C}majPPIaxQkf+8_^mP&@W+V0N=@ z)n00?VFGs)Y=@I~Ru2JUQ3X_#-KBU-6;gD1fn>R)WU3%$A{p3=Fml1|R{8NTBO=P- z_N=Gd!x){v)p{L3z{<_d?Lpq*JUHC#8a5cbf|VpGMzU7H`IbB6wuKyY5W!TX25XTST1$BAMtn=W#E zr)b1~H2W{$D^`i}qW8BR=&GfLbsAh z_q4vuD&HX#70oLalXKgD6i1T{-DmQi&9V*epC_KM%juN~Nt29!I%;VUd%m{()nc`T zwlE-5)iOOxWGd%btt6go!R9-j6T7=lB$Om4sL>1GIa2y-Mc_*QE*AfDN90zXpq$zN z=_sDa{?qE#^S=t^?&@$g%?Q@SR6z(R)a>af_*U$NS%|-IE!`*>*p{BJqO8^%+WIHj z`&tMb9<5VwWu?C}OlHxU6I(xy_m7)Y-BeE0Lj)3S(X_ zOXBOOX&5Sz;m~J&u|!iqJKAJ><`gPs0+n$*2R3c+NEOEmgYF8q(0S}qIPQjs^nNhL zML>gI9-!#!>?|sk6;{U@*Tq@j_Y;xhM4C6n5YUJ#q6L5@9r|r71dn~z0`~)hsc@q& zN1jCQkCcK>6V{rcDx`H2TMLP=Wy65ShA=VhOfHr_r=%y5zs-aI|gIH?jIt$yK6?!TZjCybfS%8En zhF5E6!6`*>skAg~CtpnksCIBkPn-O+`dJY!cX4^?vyn znCsIfDkuMT3M_DT?gb*RJ6@7YElwbf+qmCn#N$>$;2Q({_XKb3^PUBLDk^Hb=dJjt zITqZ;jC2-C9AFT+WL_9!eN;togJ4P~AysxI=JJITj-3UXwNQYQtX0a(30VWeNkG6v zMBvCp{}E!Xa&q~tFNW*4N4CtO2kBb!*#0iG*2YF2vB8am_yJ-$G-HK`q=+Q8@jAipAV7dfM@0)_N01z{i;eSLJe z{%QYf>UP;RLoeyRjp-L{>XRjr;|7tQSy%a-3qBtp3nDf`+gXFi-N(eB$ROhh>V_{o z=9MGEM?>3D_wk{@lQB735zNI5Kyoq$h31PU*DGMc5&H=BS3W<^q_IKk2Ux&7+I^7z zW*S*&g{2m#C``NMEeM<~dT$MR{X-1_+9SCL)CgLLywp)#qf)3M3Qz{Ii30aViy3$s z;(?vV42RzSWma-Dl*|f}ha67)o5hP#+g$FMXzz!0qqx8y;$HsFd&$5EHC?l`X2D-? zOF%x&HC#aDl8q<0|uiT?XEejN%7?zWyofBhqcxKHB`W zjD;S?y5Y&IFw?*qc2*v8%5gLCD2EF&pp3itA>#zx_H{nQn@rq zV15+g96&zqU$*B1)H*~Ab(aVjTG`(&!&<3ORWN)e=bwUgGl7B{Wel4JB7KtTs~d+< zC&jGTq{6dW-CR=o>uagecDlI|N1*T`BgK7VK+kHu0Z8J8ap3`>Kg(b^J z-%8c=LMnqnngCEZQ}=^ScEZW`w?=Pv$46OPsO3_Lcj3&Uvp>N&NRIB^MkLKWb*ePs z-v@t^$uF+(X=Ca+#H8sEkE!o-d(x^KuaUO6;PxwNHS$=|OA>VCNAbpXIW`qO0945; zSUfnEdcq;XpszPo0g7TlbV@MW5XvCSL?mInFb_4<%^1O-NN-Zh`+N{m8?cKavaV!%eK4|EE%pOLe%xYSwB7cF;h$j zk)eeMe=7<~j{ov;>iYUjY8m@uLhaa(XK15uMZrbEm%(rnA$o<7jGr*FLVK(x?~T}L zPLlaQHlsA$KE2XSv|x!!OqIzV4@ZA~jqK8(5|}VNIVAjoF!GCS7+}&<^ttGrsq}pQ zE!s3TX0kR8RF@s6D(G$xx2U_ouxWd_yf9nb)C>A&J-}9k$0^D`?5?2HTTu`WrcZ-s zkg?`K(CgCJn~re79|o8o|E_pHY?V#&O}#iXZTLP@l*2%3bK-G)%o@}%;;VDuM}efN zb-z|r+RnDSKst5u7q4rR|?6*1j!7#aKPOh@g!uH4RyXod5_6j~KcL&&z`Xi5{ z4b~to=k@~0-FXl&n`O+ z<_V{~p+pEqsK`e9PL}&~-zGD`t)Re^u>=7ptj=Gg+wIF?@&zrpS90y5*WB_20f*cG z2uKh^9^Ts;8~o$cW0$C|v0i!fu$V534R(n6h{q$~wRShn;WOiUOt(L+(J9PbmmtE% z#-W@wGRn@%WQakj_5QwCsT`%_?F4NCvs=MdM*=a=&S3|%MomCKz>a7VXf^>&Z5ypY zHMFpKLTQYy!ojXVlpc8HVaSIjB%?y)I~)vtESk$I%HrNo<6^wJ+Ye2WKNYwI5h^zGz(4#JyNuyGMl5UW3#%I@Av zrI#@{F4sSGH?G)gC-#@!o;hrHQ7GuzI%0|ybo4b3f32%s z4&tc}Pi){eUUAXnJm<;DEr1kNDPx?J)J*^*J%nNm7!WclOka9sGX*_EsfMY}8l^Z5 z;Hrj%1EquG$3Ja(#yw5x{NIm@8FZSX0RtEK2gkdknFihZ_RkKN?wtwoX22(OD2-UP z(}(eJYvVx)s*^YcSRs;eyR%jb8!yxG&}NacW|ljWS7339@@#KLo((5ztn>9@G1CaE zNT=V;9{_u5On8HZ7etwF+dQiocc;y);?%?_N-TkJpNQ2X##ptMcE6c9@6bmlQKt5d zIKBv&uf3Aj7%c5{ql^ibu5&@=?i<~$?I{pSMT(8sAZyh#6A^+_zD>fRD~O|sFuTll z6V+Z58BD7lHN|rPI3-=Dxag%5vuu{4u5cDM1+PGeb=zJCQWg1-doF$JUWXiXkVAyX zjydvfa*Td0d|H{93VClaz1!~|HvY4p!DxoaD|_uox^v=LI1~x9(+Vrgu`(chicEw8 z3A5;`nBOKb?e_RkoT4-?Ay?muDY#)!JI4kaU}lcVjk&@TRB2tZ@ZM5Cb9a0&e)Q)b z!VSW0|8W~xHeVK$<4%L+3$6&^WDMcdqvBui zF$vPujx@R(9*2`pn}G#tlMaATNOQm?@&_Y)zd25 z`#ZWaIZT5TG~R9<^x2}^rtrk|k!z%65m&DM(tb+zWUOu=pt)wi2vpCYxK-pIEu>=k z&4Bk>)5A}y&8g>htt-PY+Y6j2IvR(%xB{t_q-Ni>85QTqi3mZQR|ty|aqtJS=hW_> zpq?7oTbETkCHRb}98aT^A(>qUA{2|#jV`#uB#v>fqp8QyQlS_EpxZ{ZRi*`e{r$y; z_m3#w0V#S`RI2Yj)gTG_B8)6!$ijfisc4|N5MQCjXVa_r)9ce7ei|ECi^Q}OonHF9 zPce=Pce=Pu$C15N@giyGHyzoNpEP>Z7!EyMVlbykm~B695Y?SNQYJ@?`ciJClZ28a z6(sT2BaC=DI)KjnaH)WLRB)k7Y#3TlU?I$%;218=G1HUEM<-|zmQbr(%sW1qD*bQ= zk>ayd+G{Oz-8qvhO$cYh+669pR7lzwV9vAsm*wM_nq| zkmJHxJti=^b5w$CK}io+2#_?F=#_9u*`$g`Ocav^hV> zkpkI{!eyeTBIAE@gkdBOyAoiv%jw>(>XMFBi0vG}&9OQ*9+TfyiFeJ337HxFY5R7n z5ry~PEz2za|8Lnh$v8tDoZM3-PIsnl&1lPdB-4!L@r-_zl-6d^sTWwhlaqcHIV`!p zQCtVvC`(Ts?3T}BGN5S;c;Gpp#A$(&kce@!Q96>tE8bN~IOWRn@#B%uEKrk9gB8c- z+XIO(!g^N^(jIUzX0!NCm2~vx3uvdOUtT@{Tsv54dUTYw^O(BPYVL^7d0Nd zi#V+>RbU_HD~8`=7jW6UiOx_O!3X>UfmgT$SW*$N98vStdCR8xP;AcGdRs8ibzSzz z&xewwo)cJk>s&rRu+SWM`pq(QC|O&as?&k?%!eLitj7PR1!!+PrbfU>vdv0T#ln&3 z#YK8af3QKx;H)tyJdLum_{w9bufQEPHVvPnSRPH3NSA{t?nDLB5Q!ZI*%RYvA2W5n zgb(MjUNfKq+Qh9sNRgX(QC72Kyx!FATfLUiSr&?Y`h$RpX_jD-xX`Qa@l{h)+;0;I zn343LITnXkpAnrx;14Xhl4)BdZd>4y0jH4vpm|3+j?Sd!YqZ1GO1=iN57c(zo&nOdYHm zFq5hXIYcm36ZwRy;&q!*JAV)m!?X1`sn2y^PxQatI|snxApaS5c=DYuOu;!h$rBlU zABuAh1Y;cmgOx_rZ!+|4G0X7RB%o5l+FuYtvgZOn4=mXWeJhcNx)sXmlU2 z7@#8R!NW5=+5>ytUk)9e_Brd_2yA4pcBIYnv?u~gWzMb>dx`xzOx)lrd!!oewEG^M z=#T=l!z=d(Cr}VU6gvGUN>$|`4COj!ph-H7Bf_(#)Zhpii!*hK`=*?aI)bwUn!uU@ zdxq&?@3>{=Z&BFe_0Ft7lOZ3L73BANGO{h{_?ce*#BZ~Q?XQBRb9S0ZdPM=&QksdH zL{V2#{L&JLDh2c|JYCkx*1xy%t#+|Tbb0iYJV5CC@{Hq`x9@4Mp%mqO0SrAG+98q{ zN<`!yGF;qWd5GAfEacOP)jdJzW_Gmw;I-}2&S0WO8w7FCApVr&*tR=Q4j1CPk0L{n z2tr(cAwS-dCK^1YOzl*o2UY29texXJJ&F5(ajD3kmtN6pT0{!+-o$?Iu#rnAUT>Eq z$|cA2s!u%@shv*&Xv;LeJe znosw1rz^k+RTLrjA1(ST6&u(Ws$`^5J=dQEy??taYmiQs5UK2>g0yrcachQpc+3}X za`Y`Qp~?558r79($n3cndd^+}t@4|qI<{ylnlvqKCcAD6k?0W8X5A?PStV<6L!s(# zjo3qY;4xsSmHsG;Y`rCmFW-dh@b%$?{;%+>fSt}xc({K@>nJqj4dnIHsSz^@`l`4iID`XfZHUbgO{qyjFaH)dm+%|1LcmUru7)iPawIK13CM-Tkp zG~UN94YFpdol<}^>?)Cfv#k(S;AAg*3%@)-tMrswoUJnFrZem!^mOCVv`t?%HSr2R z2LxQxCW^_X(yCPZ3=3;KnkPXyReP1LB2AD*yx^ zljMRjq6=6Q4I&}z_}fn?I&DmtoonB{FVT9Tr!YKX!);qzoAXWGk{u|-swjdg=zy0@ zJkp_1+LEX{&w2P|$oQF`ZN{^MK{BAq9m{RmjN*lkvialUeV-`aso#{xQfgjg0`j4PHCxLnwmR&wXI!Rj(5TCu8u z8+BoA!|OF1h6qL~q(_fSZ>3W6vp!-$`rX>1kPJ80Zrq@I!+fnm)ed4qDla zUFh$R3rrQ5{)n*MA@+nfk{AXKfL~Xk9-qrl#sJS9!0$qZ`Gi~wW62)97|?Wj!?-E z`*od2ncIqwe^Y4KZlj+*5q8Neve&l`4p>=Hh3LjNuCIe9^a=PVI%>pG%zQ;VSVQGP z;jIh}9ig+23)*L>Nde5S{zTZ*qq&f=28%isZQP)B7EMFC~6ssN*Iua#Stk z#W8xW?bx{p+C=e2b{-|1De0q+G9dsiaUdy@o_n<<;IM`pex&K zEHy#Clt$K~Yjg5=>AhR$bIbJVY>@RDUavi-b%lGFBe%#^?8Ovf8=~&#E(=YS?|J>$ zD+ZK>=+x~ZK%uMOEFbgpOt?4yN!nK4a{ z4?)}F=|#186oxQ*hNOb-%1WZFeJ1j{M>4X|140m#5n%E0Kz1%sJQM_4z&l+3D!Bf# z4EdHkP|gKAoX4D?hOd=!MP%@pa>-8TqTQwW6_j_1*ylu=neD+L^Y2`&7dzZ!QtD6#dLEWo^B{qQ2 z)E#sC^6%*8pl-#?hWim4^V#0WwLT{X_4CgEqv|cA>R6(!(Gxtly99T44+Mt|!QI{6 zEg`tOOK^Ah;O=h0-PytIbj`uM#Hb2tcboZ{RHRoKj)+!a2cl*vHchcjPT)^qT zXWAiCiieh-470h!#f=teYESU>UOnQQdiEFYh8bF2ezF=$D(g+8YCWMo zdk)d^xTU2d`7O1CwQO!R;B506B4MTUmS*#)#XI(PEfd}i0a2wO(DykN2+5t2o6ncz z((#wUoRO#yQ;t_QYuzKnZf)p~0?@icM;Arl%4Xbz9``;c-44g?m%!amIw_*&)DrI8 zy5SH~k-j@8txUfi+Tt?200hPm(RIIRZlLjLe>LSDeG?aV>!`fi=>^zJ3c^@wyMiqF z4GB9;EC?^U6)EfewBdft@8K}-XhZg4(c&3vWULVgzcEx;N*ZeD#*Q4l@8ihV3M+)3 zQ}pwA!st{CJ#l16`Z($)LTGajFAeBB@p3J2176MIy%kbaEy@TO$rJ!9;D(10 zz9h)|6mD)CDuo`AkFTGq*2^JI${>BVh~%~h|Ke8jjkZ5ACNcpz#3PSm60#P~P&#kx zxi`FXk2qQgJ5@?B5x?7#gWpJS?XGf#F3dwNSk@m|(s zWih9`cmoh#q?;`+Nb;T`AQ-&E8$hDTe-$wBoD3eb<#CP88*Rq!0BdwY4tkAJwo3Omg#W@xs!RB;yn`FkElSEWv!{tLjt(qY0!hA zRRMw+;e*Of)_Wr$aEPu?6%E(LM7g=V>x*c(cyu9vBDv)FCjud3clFK_+Aw9_?!yOh zd6i@UqSt>y&y$N=Nm}By;&lOiuYO@pZZ%ATj$?7|qw9 z&LP-Txx<7UjKI9`A1A=^ITl!elSTh1ZZ>_(W1-oRukB-i9TTyRsA}j((VwLi2q;hS zb)q4r&ch9!`3BRbI12i3(p?D}Js2+|4IWc0j|q11t{b$>QV{;Oz#}Bg^fE+?103Fk z7a10m(TqR^3-Xo;sUwh;iVsBz@rMQyW9Kk}D6cRWCmVjx=lKB@`(r7}N=j^oZCU*8 zbc5KeTuNSFMAZF%-S{8_gcT1#l!OBH6!@u!q zBHEHdrZXtgjU5ICMIeXp5UwG&Q9BfUV`1D{{V9c-M3IN_RPQSQbZfF$4}k^HBk5S8 zUQlefdUzm1j`GDR^!6huau!&ymjD~KH95qaHs&ypL}lXIv|5ItkD7?}U9Br>QTlX&GArB%w zU^aAwXVKEQ@0Z~s0zf;UDgr-pf<|@Yz>-5hir%5gvdmfl{%)!e#=?Lz79f@CuZ}G# zva`@Jxz;8fv+MMu)49_I5Z_}c@_gv3t^q)wQ_m~Eirgu_!$KpA?k?W<(q0FZ)zn9F z!}nYyMUxj{Do@jIE^91+8Kaat>LFUA-u$rt+0H|VrYq!S$R@*|fZ<9@uedn$Bu5Dg zXsGJbMj;cF_eplz?#b7%+YsoSuxk{^G-P`C_50?&i@Vl`3@ZJ1&%U7$(W zkD>`?*qe_0j6awo_>TF?YHDuDpR9WVpn(dsm!0<#(3<@27X@EwBHx+}G=AxhGt9o6 z2Ck8l(y0UiEhQQ|CIKZK;r#;UC(KtR8hCq5hN%n z2c-uyFUC=fEs|7(TnbCR=0|ai+Z*jlhL%O%nJxO7g9BBUu&atJz1hplPgbseEZ97j zPw1R(c_!U6Qz1c#U{Zg|eI%uG)^)j)b2I!`$SA@Gk{~Kl1DF9!Yoyvx`ke}asD8^y z9fvcP?PuJK^2-BQvtwuw8yKm*yEUfu?|g`)j+}su25|R#F>)12@^#{mf60~a9Lfi_ zg&C8u#44KR;sJ0Ts}5XF@)^z1fjbD#oD{GWDfbfF8xU4XRAi&t;$o-ySl*jH_{V9V^ zyO2X*9~BrnhF(mRlHb(lSI@H;j0TLQ%-B)eI84sNpjbVw14uz6r=-5hQ zM~Spj)5-#1T~@lrtXO$Uf+)jAw;Q*+N(MKyQb)JH`eya+2cBQ)#p$raK>6s@Rr%-e zvQ>|(48e|={PFu^3HWr#cOZgm;9!g4oV{8` z2Z#j+R%ABvs&@0t%L~`4Glq#`!hD6+m%jW6>8YxMOh3N+=Gyb1LkquFYZaG7owi_C z`sA7d3CPCyRePbK;0lq$JEVs3H$EgzPJwKQx(H2hAJRPU>)BI?`LY*9-^nFs9nXyP zSUrJc-;1ihBP5bLUc$laD*uz9(l zys$idkP@zqMzVxlZLYZ(s>CTQ1Uj?MJQR9aUCJdez_ztpSZ|2V#WZJQ z>^KGPW!-Z45mWn(wJHH6t7B9Nq(x~ndp5+T7NT4X8P zmP4>TELn_v>a`}@Wr}Oj*A&AR`KQ|4!z&D%7B!>r`f$@VjKzr7qEB-)$GOd;9!8}( z(O2@uhVRwFnzFYqnEP~p+#Bnyz1czCJk7ey{&IT#kL4w%6YeKc<%gvq`gm5|wb5-H zE_V7;gDF*wiL9RhZEv*xD?)t-g+%pkopH(MyLg}bVr1y4-KYTRW}y42Q@Cg%iye7q>Ba-lCJ8wiC~Pb=Z_R;XufcY ze#*}}$qy!SK%s64FP?SlT2^6nBTuryPDOvAVNc>}97MMRctWo8JWT?!`2HP@K+`bX zW^qwDbxe7j?^4&IsiHOQ26g1>G-Wsgbrg>79OHFjkwIFinxuf)a~}`~h4);eHMkaC z^QPKv7qzFHM(CKCb67Sm{okJz71gY*PbDwh<)utDr6UyvIm&uTbx1uVo0rq*r|mQ{ z(|7VF0vW(zse?E1xW^7hZOA{cQ5`zLx%)M~HNQTt{cVFWF7_vrW24Xc>@zHMR(hJ&=%G8YedPaJj9cPR6PhgXY7hKLu-mR?o}b0d-QUyv-CrasTGjda z70TpoEY9ySmfMalc^Hu0qxX(*+TU~a3WDc~x*BEW`Y+yHsx>-QbGB0Yc3KP5KbPZ7 zY>2{n=PX}s4cBtkKIOQQ1~U19qqJ)8nzQ`y+MmVWr=|RK0k*>zCs3X(t@!*yH_xA9 zskel>*aoDOk%Co1x7BvUzDuysxmMEO#6|Z7BD6{yY zxNrY=+f%^M9Pw)y4?`g8oqR2o=keoEPW|EPljNGzr3l|U zsN#cW>%qp;{@e1m6KqEfl4FIe9S6zcBa+Aa+Re~L6syC7$3c6s!(rB2znK+JsuTK;ezC(@DA+Au}jXp~o-J>t&Cv)#1w|PxFa;tml?#N4ql_ew>2wv}LexCwSpE6Fx zK|A?_V-DS!-?H>U@E4m~&AQJpwNLhL*~iZQ8uYU%tbP)wPkRdeT{CyMb46L*Xx81V zvxi)v>2c1f8jMYdA4$(Pj9xo2=JTy8mrY|Xwc+L)G+sCFv+&-tLI$>@*}**zZk;cz zo^gi?mDs0iFTQ6_YvZ0zZut)rvAEpoP}()n+BF-?YdA$o;hR%AjOm9(fV}52JLX*3 zTtgA&B#zClDo$adDYYb$7I4056O`03H=AYg9Y*q#Am%+a7%b*i;|hAU6YK;2GU6<=rvi_22n^;U}*xeIO3h36LdB;jupbDx}(s%N#-YD zZlne<(PY7XKHo=xGPuI9=+#1JXJ;ce zyBQ+z%E;c>(onT$lm0$Rt^Kx6t#yyhbyRpkYA#*EZ_*8dc&~@B+-;|IEDS5+p$;i z5|i97HkYZnQ@M7K>Hh3rv_<$_>Y-wjE@<5Q)Ya}#b)=!6t(<12jY>H1cN`Tla~L|(#O^7x z{*g5%MI(n2u+zFSjN$S9!@l@^pir1`5&25Hk2}8AsUR(Ul=z!0o`8i8_G}4s)PcBxf zx!y*bCqp7y*N2zHL}g7)>BmUVikBg-NU>nfsj6Z-o9r@)bic0T^l&DvH?RzLk|Yo; zX{+si9_#+tE6y%@l)TM!hGDZ_t|`kwas|_n9K+sbSd4vld&gfCd_+4OUzYh&DE4PN zs)7IWl$l!cv#-~RuvrhQ&wY76de>W$_}N=KGuY#tE%|jqjc+@CC}y+d*5*Z#9B<<1 z>ktw{I_r87JNC>~xy+)kf1$pDxktMVhgDa1P*L~fPomAiwkZ|#%FLk-7vBA}BpV<4 z)8u=+-{ZGN+vGyyjL+yzDRl0ML17L1D=V2{FfoiLIKo;&=GW^1GB7-zv46ZyKw8qt@)&qk<4{>dYqa^?a_y zVPIjIpEU3o#}h`N{$_EUr6_^!_Q^|+nwzNhCon-|Kv$+Q*0F7USOgoqVJz|GxivDw zlQDD-dHO;}E!y|4jzIoK798(22f$4Q+}~VKAx_zsnE!n z4+2h(n503CG&u)vv?|8`p}@eefnkbZo_P(OdR!!n=K+}XyUe&vT-{2WCmC`Rf)atn z??n*E7BN-(rG?T*D}&1A*+!?=GlVXk4bj1uYIARMd{*79$>}8i8z@;^YWI7%xa99{ zJhGUkJTQZj>-W(G@|0^99uKrl(SZWabqy~Dg4$gV1o-CW8aLkt2fuVV6kJ5mOP9y` zIub>_S0+_$3%c6q4~CZZWy`z08xU#V=U9UOu15E}Feh)yoC`6F zaZk+Wex6aR#S>7OoGpiMW!yMqyN0(pxwU#_@&1tC z7zK{l@#dU__B;0C>jp~XSCaqr0;HmPwIVn9xkIjH+Z6e^G2Q|@x%6)CHNcIH^QxcS zp84>*nq3>B>b<$ZxAsiAO{Pf4SWy)f%QDJSsbrJE$!##%D?+nNNPIx^fZ!B-3%xiB z@Gql=oJJj<$o#&Q*LmEf;tys^u}>?zz&`V)dNJD+cE5Of{L&mGLi>YKd;22aJ&jg3 zF8}(t0nT>K3__-*pwU-Fm3i>Idil)J&tq#O0d^{tpSAw<3cf-U@l8nc0@s*P2;AWD zx48IcotM;(e(=2y2IFRB?#1r~4uO{JCiS63wt-QsMhje^x$#-V!N1(t&O?bb2|%wA z#%PENS86@|g&z7XSO@@UZN@fK_58?PN>>MUiHF@ib^J2+8Cd}?oIG{~PXOu?m#X`S zWT#;FtK4N4j`&N;)evLI`wVwKy=SKd6z@N@s-^&5HZEi}krsuyOT%V133>Qc7g5F> zIla$wHjK3_q(M{m2sA5vbRm=Q)%0m#CgiZyBOJc2GQ?KZPsIUbV#`ceBQz6fqZ+AR z?dUCp29CEco+H5KPXUH$uW|#udS0iC^;YvB#!Ob@!N6m;^VNZ9BK~E7*!n;8kyH)W zUQYMEsMZB~Zll&gk)(1}?<2i+zvbqo<52B_C(k%4l?=mP8AA$kx2q>m9Iwl{tj27ktAWIR@SnPFt)bm+E$(X}=W`dA4_HZwG0R+~c*OeY z9}wN_-zRtv=RG`$#@GmE+WC(0?H^q&2r~4E-z9%UlV^R7zX``w4@Pbh++>?{JaZb1 z8H_hXGi_=NO1>5q%(ra-2{WzE4wZr+B%5j<3qN+u-r1XuX%mz@ssyh}Dht%VpCxxE zvU*w`+9QD0mXw?6K(9Dfn)fG7?7rnzl(#6>u^WR2`aTtk=zoO=-RmyH>#^^IfI~A- z*GHc<$4%!g7Laz=8Zxl;;zH|-XyGFoSe$$50Q;*@UoTw%j*W2~<@>==%Q--_06P$@ z973_w>h?h_U=(py;OIT?V2gs35>dkZx`(CkcJnbM1J}Z z4wd}Pw@td;awdK0*ts+B2mx*65&;MYKUkwI!{vU1PxV}UMdH8ygX5vjZOP5>ronRL zwhkNyA9)u9I1ugNX#scOdC>rnQO|Kf@GhgJ83ba8>CDwCU}lku?-%OJ+oY)S;oI=FtZ(8h%`uK)Gbxrdyn!?c}l)%~DmIeaskV|EAbj8PdGa14ldZ;@piA0wa*^yqV?Fiiu2FwlKj~d*TITqC5M! z!;5$s4oInj5fhGOaIJvvr0ikbq%-vAXraLsDe!xKQK{Sqmsv-7-+zj;biL~G3D zXusE_c7NdSX<7Jny`F6%bI!focv%sb=U)GncZenMuHmW1=YrOT*6J*WK^K%DHi%X8{*>f%%s#mm>lzPD6W|tFZ*Y6ou2&M)!APz zfm|H2{?5un)Nt8}zAH(tyMI41Nq&yOXVTd0ZV>ypY^uOKju;Xsr~F)5T$)A`bMCUf3NUoAi63a71-lYP9Dj5>rFxH_n6cy+pTjYc-l?((q)zwu}(#D8xCaxLq zxa|z>p$+rWC5WDW{Z{hcv4Cmhq3a+)M148W#B8!#we2^1+Tue;ydO6Ez-zfmP2>Jw zG8y>%71g`<1k>FfH$-x7(ucA%Q^WD)ybQ6ieDNO`U3=U7$CcX(|1R6*k0pea{oO|j zjJkbKg*dB@@g`2otcO-xI(vQ#PVpawJ6Sm#vuzZF9cUpKquQ$H6BNG_5BoSn5)2l9 z<^Rr+rW!Tx_kP+S=W{$WN~phM<1{}B+o^I{>onQ_VyGbl~Ld%_OnoR?qSX>Tbq-C%?Yt?g(3Ju8|40O zk|g;dW>!Ra2M_XVeu9rrB*W`r;sznTOJQG0A;YOq9T)JgTTIn6~F0fKSjTbZ0L=KL)yq~S)Uq5OjOJ?4XE_l za$d7k!=njhSD)0k^bw_>Y`s)Gl|TqgxfF3#3sQ~!{+{pU+Koi@w#Aer#ffgifvLdMB&{n;$}FK zQB{V>GTn5rtw^ygw`DI#$bk$e^$xz~(0;asN$)En=*Ob`xrsq1Hu2 z{s)W9?n35UM3wou7Nh0YlCoq@e`W8t22~^uq1xzVoJm`Rd{;>NQ*M36k87!H9J7DG z#if-j7ViVf0=KVJO;L_CvqIfLZ#hf;KKCVY<|3`wiwo8H`=VKWM|l(fOqV>0unTJ@ zeXmmE@-t^7(6cDCE>N7eT5LW)IIb7{8trJB{%6LSR%h}7&slBKU7=DB@3302c3zvn z^F>?xsQc?qcGyM-Q}h^*zdQj**xvLU#kxd$;q!@k#*tP_deXhMg9So{e%DDp4Io&5 z+M+{CHURt)K*A0H7w=pe2E%m3tb-bVsqqaTfU<{dVV%SI1E4ZV^Mf9Bq$BwoSnB)e zAgjizI(qCw;0c?FZj{Gww~YWE{N`G+6$4xDp~uGz7xHLhi3p1Kn5tQ}f4XIc5JYwu zL^H7@8$FAa(FpjFJkX7d{g7aX9c6*>2{2%+%;L^r1pySB=nEh47t5udM3oc)!Kk)_ zVh}h(E_pd$`(@4Gd$UV^$w5&0_dFV4mqA&1IknvVb_hu{eBED&aXeRC?I=xJHSEJy zbiERf+l<&=(rN!>-GAztPje9TH%$z<9{|jBHjQ-qi2-3Wc#X* zwmCT6v?}ALHylLligGiJQDCJ- zVjp0zMp0hVXfC;9`bai=FjhNHXST`HkVongTto(!hCRC5R`0p$P2ddqu!zbfw}249 z03L*_l1w?js8D|LLu%y zNx-I-AV#0VEcYroQ>Gs!42o1^;}L;C-Ue`{;qp%9uQ_^7)jSyg-kK0~9FI#X8+~Qn zG{yLZcYy$z4eaYO!kOWmdxTrv+f4uq054A|7oM9vdIYhe^Qz( zr4WpjWM6K5EZ&WuS4ev^0cFola6-S#`22JyclhOyg7# z0-0HoM&D9uYiN$oUBA>)^Uss9#T7e zl`WJeAaaR(DJYUI{-^lIUFV_9azkNxX(j%>q%pUxH&V&0#)|{v>QqzK#!~$4%ijJi zgX8LQOWF6LFX{zu>fgrjgkjq6-G5==(Os4m#bfhL%H-rVQ8{1a685?G%UDoQqf!-F zmA#^78As>X+7|YeQnGg^uhLm${M?8KvpaNToeklwr+B}$HBJ91N1CtH5`9f@Re2-f zG-#;XKg7ZP@$Woe5==$~R>C%F9y|U&Ey}`jNDl##?G11!lpN8T$n7^UM9MsfV`AgT zrGUY~Y0Y66@xz~1;&& zxNR#=KTF;Jm+d3=brMQEcGN+R!uU+Y!l*ZXK+_FRidBt?k;MNu;{5xwC1H32r4{Ct z4y2g*W(L_~m<%_{cU5q(B8FAA_!C z(np)K4M+M;gQ02qXy^A@jpE`CX-Axt)C(#3EIdn*h%1Voz}6-HcVjl^cyH36xrcn$ z`LeDrGXp;b*N0D@KjbGJ#GnVCSr$E3Hdgr81P3!OT#dVH3CoK!W!Mx~2hU=glq}-z z{!A)3u=np(cE`iDu=p5tqc{`I>SZ@-p4d0=;E%`1(K#)@+sroa>n`ZJ);-yj&Du>} z=J^zay|`&#^C*jl?-vJMJm;>Qt}A^|h56z*?s!mLbSxR8oDCh1uSLeI6V0IQR~v<- zFrT1R8{Ih7bTytGCu6DNe@lyhG4YegGI!TVr=yA#kl|LFo2Re2@n%uD>dcO*vhgt{ znIDh%76tf3HeLCSjv(k}=b0vc$r?Xdm1W;~_hs4vpokIHc^hLNA7(GeP1{1wv;V(grz8zSU?s^TdD8&CEDpYA_R-*WDd zYHWesSpiTVV<|Vq`+z8d-G zJ77`f!QbAbmX)Gm%SK%m{gnD-%hJ2<5IU7K=<%s&`{R+b?q4p(&aZ;WydwD|Di+_O z9Rct)bh9$}Y*fN#+H}+u2Q$5|lppb~z5!qYr|wJU6R!LxZg}IRU;wz#kM006+4jdC zkvTK<-#=UZk2)Sx7`3?oBg)oySSmT^o4t|xUhHfE&l|dhgBzZDu9ErW{s%c}M1==r zX#flXrcquciY2*G2mP-U-S%)kGe(Q9o}C6)KAT&V{G}UGk$-~11Oln761c;Ef~u$_ z88XO|eHR5>IIja+m?jq-*LbN_$^tg;B~TysJJr-FLge^Sg#lC63(#-b+W~7S>+<>7 z{W7KDmMw#O?OPO!fmo!i1L4p&de&%XBToVLT7`pk#B62mALd0)21P)kuS}k4q*P`l zt&BCBm;GZl-*r$X!H~xV&)^8I!w&32n9UC~+$-!)v54ra@pt)~zVFN0q8*!37S#%> z>ZErkdgbcXde*Mh_Wu45-#>psg{%71M?F1iyEWo(k^2||5_lVx2Z}9cPpq+lFe;L342R-mLDeaKfYm6Lc>yoc92e?dA6&#-HAoSW>3$&l*ZROvTb-&7BSeR&^3* z_i`^rGjrZ`t|`N7j~W-^k4lY$LY(E7K4^yY+RVmNP_}0&R=nkb?<-omxrxT@p@P$9 zwOXyg=#PqrHEbn&d$WylB9m3V@0cL}+Tg}(Mi-CDir2UF`oOOG<)^+OkCTfOO;&ea z=8mP|)kCi7Swq8UTa%eDV;X#Y{ZCht6`rLwxu&*euk?7yuj1*2!oPp5hFPyTVGd5} ziGjaFu;}Xy%G~1ly;V{myxU*_W}xMpQ7^4*{gKfS>>DsFcFjqnEyK&cSCh-H#8jqa#F&ZjF*HN(q;;vB*pF_S4kWwKvn zN?*X&S{~bl*lOcedDra(%PQT$6P1E2Zp8P#^=b3g*2}S4lS&D@g0V}Z%A2|azRZEr_He=X%qxFH(T5pmSxSuFJ}U)Z@j~Ld$;v^+I>$%W16hxaU7b9?@s4o zvpr8##E+9s=@tW8)KFS~hYoHll;N;jIfW2S&>w==fPw@|cR{};eOw(MxNrCHcf3R* z5(tW|n3Hx*mZ%Aodgsj32bpc3InvYYj>e;p#v^bGZVfq;iLp;qgI0h};%He#q2HNg z&uWR9aEOFxR!!(Wb?lC~cnYmCX2gUeGl~-wizZ4JUM0gg%l**KFBBp*ZntT+(F%7H zXPlLvRy|0CaVCdhA6Ncz6=h;Jk^WbRXFA5MB{lA=R7{`~FWR_%Xj#X0%ff_zEXuIs zBegN)z!%(4?INkMoO2XeY_eTrDveZ6CkT#2Qg%u5LA`REF>E&l+x;$so1ywfD?J{K zJ05m49+Ns>3QtruG?d&YDV{+jZY~xW(jH%c6vbO4BE!EReq=WH^R9qzMel>F6Q{*j zEHlYSk(4!h5mp*O1Y2f4@?LRk8i4Ju&8HF3Mh*QVDUcI0MzR10_1|oS3YZb$@zJK! z`O^&SQ-Y1yrX}3K>w1|B>5~BO`Ht6I=c;axt$E9@6q-MeZ6}~`1|LX27IZ&?9n9aa zT?YQTo+ zQ2t>e^VXro3v6x}!ygM$XaR4k2Tjb4JM<_BBlNK#@@MOM$+RjgD~ zP)=3*osuBy^JuLe2H8`6Vd*QJa?4bK#i`R>e>=9XLT+}+^r>77rngfFj)f=jb2I0e zhJcCTxAuIvnRau$I^3RBUhO@e^b~1%Sz+8Zf2BUaxpNQH&ela^DiNmjbrNaW*%U@l zu=qX@?J%d1(bphj@%zoA#q#Ib#iYXm_cYW!fT>|>v zdCSrDKf76lzW%P+u3pax+w$CqefidX2f40n)~YQNNPRW$L08)kY1P|7zlGn_tKJ42|n}b=J^;H%Y4#$H&U- zd{O6c>+j>X<7bGA&EFKn{Gu=0m*}_vN6KQSe7`zPT0TVQ~j6_PIwZ}akk&Onn5aU7)2IB3!=3xL#Hy~Rgw6-QZ?w7 zRTk(!7mK*rWoY!!r=sg2I}c}#Ny$N1!st^;hh3GG3Ew=Gig}U2OX>3-9JcL#QvRh; z^yKHvd>={CNv|!pJiI%%JTl7fMC5nR9oOxY-MAVxMbUcElMis0<>5ihMMJ>^#nC7! z3#vg&r82lF`(KGan6~4uVd^4ua~DyqyX_V@sPFDw{Q@0d`GfE={2J--7l8xg=!+TG z(INuNsW}2kHh5^)=XfZ`$1~A|go?Nb^XdBZn%HgAi-O)?rrrtPCN^ItC`srGX}8@8 z;?d$gfT4~meyy3SPp(h%j zlhWeeLfMqywki~FBHiJ;+Y^lzyW!=l9;Afcq@{(xT~5vlrM<7Ev0b%VaeeRgU3@;i ztAP%Okt2p{R)?%TpVSkLAVZHd|MY zaY{&XPF2h?lUhY88ka3c&uF_+Pa!|YLH==U1musFPs(IYl1|l4`xz=?lY-zMYA&x@U zd?^;6C4pnos{aq)$k}M(>6rklGRLG0dlMCeAd$`5jMw7p#77VZ=OQZYT@APoo6q^n zm|eUKWr$95Eku4dHKTRt2Sw3}{|JDeBmffX8VqKEGR* z5h4ZFYRi3EWOFlLa!~ycdal&aU1ft?*4uJ1HWO&Bf`b!{#_g=YbO@_#38BLeB)l@x z)NM-vR)|P@Ov$KDvt~qvgZd|(f>m5y`V=2n8zXmTwMm)&2|#Dnq^c~Jo8@Gar>)3U zB}HZpKyM5eUHxjw;et(_#}F>5u{JlAZtQzj{;m3kQ<@Ao80cPv8B@bUOj#vmViTjb zW~l7{9n=cp2fdE%Oa?P%RsNu`z{(aanX!B0RW)3s^BodvE1Oc;Nir?ZdL4~jlQ2dJ z4q}n;ba!cGo%fyuB*)H?yr6cSV_iPHT!^Y{zt70E50AB*&8fL0bxPMP3Bsn#lUr0} ziyks>8Uro|dWEhdcbIHAx)2xWe6lo~%p9@z0~1_yzrV@y{q_KvYU*MEcky*>yU}et z^UEQQo$*sj*LVOlf_(dC9J%CmE1b~(dI4aF>bUIIhrdI@GL;hcjpR^ZFqD_?6xID$ zC0#NGxszB&->Ql|tbMS;Ofz*|5YSQ=7ft@KoZkHKSgYr^rjC0st4nlI9bQ{e75=CQ zjF#ZP;9Pc|HG{lZ%Q?fXU+G@JH_&S#@064` z_AEu%K-er{qZaLkx2CW`&UyCYansuU$TE|!$Y(9!6%1t!!DK&Hexj(fj$Fc8wTX$` zHOeUz&L}CBW929ty?;w8zzsAR-DZT9amgx+UF4M0Bm)ZiItdiv7CN(!8Y?fNSUBq- ztHwT8{{^N%L^SxrB5K5|VRGM8a|`h$#dJ+;dDX2ejJ=`5H+X$bdwJE*&@+emAQ76O z)0x=P9%1UGE@(3Mu_TJYM&<){Wo2c)_Sv?nrLQ-8rTN3k$%z1~4&k??!rRwMoRpje z>C@*d^YP2XJ#%ZwY;p5v+CuuvR7&uh8XJ!Cpy5Hl1<9`y8&m7U$3+XzoGP`ZE;qyH ze+r*(C(6H;<2b!4p@93F33^sX)BQ1b7`}gYIM0ly7Kq_&0PUJIojmskW0%zfEwI9gQ^T4pB|_+W||OxD(JzCjb+LiwbX zOAnh-EDu5Tf;ljr;i-!{AwSRzr{)2qpZyvw*{qJY8^9nv&V|&ahGm+b%Pyfjyqx5C zVcyFe()|k3|1Q|ncWAdCiNX%bs#X=ZX1i?)=9Xd@%7Nufl!P_dfmx6Amii zL$sGr_Y~HOqRV8~1DRuA?35shJ5)H+E6d)lktO2d82C?O5sR?ZO;VY1-|z(uUkBmA zxvHWSR#3|GjZ2#lcLt1pd2}2@#Nyp56L2Mj@5%o&V7Agt0^u4Y zSnE@+$C;DkMjKh0tZC`>iBO*?G_RT!>U@}{8^7N&XKi#!eL_VfzeVuy*LQt>bsjGbp~-^+8I+6Z##uPKP&r#Tt*&ZKQM&$+oC7;4 zvgnknX%I6V{ZVJnAOFB6kq(zA%Gholg!bU%!PLuT*-af{jBVGP8pnLT?n(L_XV6h} z6%_g%#id1v1j|;4X1M|Le4FXFYOYpXsWN8K3BI)WAc`z9D+#9U6W!+qYbkWsvR+(O zL%sg3#gZ^OX~J8dJKl>>7wI-7#7HD=T)xIKQ8+?3U#)QLEUZtHzzp?L&6SU{496Xh zNmrp|+sK}h2kJBS9CY>$KQkN-64;yEo-8nE*6jtpbAu8FB5>**cLx#p^juvzWm6co ze|ukSUkpT~ve-UZ&YiEff}v6>L=FG&z|f-4)58Pz0;M~UNO>djIR&R?%JJyNw>J*e zXNwLsj`9R6D6DPNwJab&EQVzI{L$y21&dW4E;z*pwPp%=S<;k;CtL0xLN`HV6g1)u zLe>^)(wr^2#a&nc;0H70N)?*>g5pC*(Ul(Ys`VHr?x`&3^h1HCNcGWinV!5xEP*JZ zaLg+ET1=xtTinHagd+3kO*&u7))>zApj}Nez5k3VnpK7vUKY$YJ#_G5FkM?KuUeum zGezGl2HL6XZ{K&+Ncu!3EjCuA7fcZ*&iF6)g@Wkej7S~RGptDQ>kmJ~u07BORXoHX zPLMRk@@f^BJqe^2QS^+~yj`l*9U#JhfEDS%;$>1x?Ol`n7!OpCU~ujcJOpU2qVlu= zlNLW?DJZmXM2L8i9*tkmP{q#OtVw@y^Ko0 z#wEwiQHGTU89hYeB>tOT;|%ZnHW7*MAH{6HCrdf-pWNb^{%Zecl8$!sDas^Y3S${I{m|s6Ac-&e@`^_ezQDr(6?u%R z&s8GZjXKM&_B8^7YG-|OrGetJLV6d~-%wj1dK!Nfe>teNjh1AB^C&i$Ie-2^QZS!9 zAfMopWQoHvdD*0^cQ)ZT&DlbaZRpm|LpkxwW91Zf9V@1W#ZBkuZQAY)@LK+PP-5t1 zoKe0P*10g=q}4d1o$9n>yLIy8+vQBs>;BW#OTCw$_l5LmC{fnjeH>v~TLkR>zu)(f zC|pAo58mSIiU6CvK#wsBW1gi~x+m??h}rVXI?UqhZbF5p_OKw-5{+71b`^tKlX;7* zlPOC=L2)EyysaS^Z0)i0JXO~1SyoRdez8WNv8IQ7|CyEl>;VkQsk_mo^XE6yo z4jzp6NNh!e>G9rL$e#BWCXIy3O4XH~Ji3W5{NV6a!?JhM+e zUofdOkD=6GfYmiT_%^eP>BiMS>O9E5g9d;Rq_@R`#HV2eiE9s9NMI3=o!we?V1sm) zqUI4YI|%rvTJ&i=_rXvqSHKSOr)=R90CzlRd8hDvH{eJO)OlK{Hu2!tuJCfH+< z`2?iXZFD9pPxVPQuPY8IUp}>TXfO+o-Xg^yyR%l|R{HysEWN)vq=*7IhAE1#5OdJ7 zEO$n!VMVQ>mTmy%+ibwtS?FX(sC3BTj8cuIyX2+O?pJ(JmM7W|eDQ;Xyb0=koVyRx zN)5CsU-@x=E;uc#0q2UG8_?u<3$4Ky`fVAHZLiC6;GI`BQ7c) zu!8mjxQwUbkHjKiS!}?xX~JUE3g?m!x`p+FBf*i)Wo*W>5vu;AK9aUyn@elOqNhCa zH1r&loCoUaUG0@R{Ox^d3WNzA|JU0?Id7m(IE&kv#?#Z2JgUh=CNH?*cN>f4vvWP?uW5YZ~aa@2RXhMPSe*9w*J{!YNdkSpJjWBJhFFvLQZRIyFVXrM91R| z?Z%$QA&3H_8Fr)UAE8EF0DFDdrrjrI$T+QiFYq=m-oGlh5nkA53EuGgb%Azd1}xxE z5F!K0IYpMD==2%6jkZvD(~33ZqiB^R-t=*!#daFP=`NI zEk6Dy-9#Fls01+&kOR;;F8UT6wr`*sN(1>hS>{68Ukk(BdnUK&`IzNp6@-aX!6Sl z&m1C=ZUAJ}khW*Ud)9gNa1%@X<8_Sx_t7a))b{RU#ov)SQQPN4ccRzw z`)g}A-QY`!qN6cIV(+FOtJzJ|36GV6aJ&32wpj=%2_{4K=`l453C-3nokTx#EZcHqW^+(Mk? zD|8a8z51~ioDFvI5CYEdIOp&UPDA;z#|=$fA$hS*@qkW$*^-`_CS4!9`{Z6NceRRT0>jfb!plp0gw)W7>L3!%iQOEu zZLjd=A5+>BzT=KEf~d6T2iZu8gix5G2g8zY;vntB5mT(shw3nI;YCXy6UoPrh3gsq zTj~A<> z6nb{bvTL0uP!yLdul@lvtEy(n-kqr(KDhHaZI0#hCTf+ad-b7&NQmE^{k$d>_P#$d zc2=1=hd-$yrZ&mj)|Te4&ksrNo7;&x@e=lxZ6WGccUPcf9knQaL5D2Yfi*ZhmnLOr zP;CzuCPjDntg-64Hyg<`haV>PbA!!u`5a<)nuSBeh>H7bWZJU&>0inKA_0KM3ZF2H zxpvX>e$LaU+61Eg!DI;Yjox1Rc|FwAmSGv}Sb1P7LeSE9lMB-hx7I=Z)Apt5jR z7P0_l$bNRU=@MxiC0*J4)-Ka_{JA>8#q|YBWI8hjlh7i+DZeh=IgUeJVfzR5j}gpC z+7?c{9-T%c+rEZ{MiBnJ$CK}dp6>vQon^i|)m<1nldVA)_>#5Ivn2=o&%05IJMfuC zP!Ut*B`1OQ)wKPH{i}O~1M|tWq~juPr`8iM!;)jcSrn8jOhY{(gFKN&x3_d^Vj*Vu zn(f{3mF?{PZ6S^CmdW_#ItMn!EZY)Xh4RrOk^Z?R=NtBnyEJ?6&6Tn%r8CEk>C8vn zq*qKU5+y93=9k=Ll+xRaGm5de90F@YCzvv4>Gy8wbe}q8iXhPoItz6zEPaiiomk&e zApAGWs$!sq6#HIUXsTSv7imf#9jU9l3P!J}PW$w}3q*pg>)Wk+(I{I?TbnO-Gt`=H zdkL95(cNeWqijEE^eEToWuW0?(=7o)Z@ut3EkEOn#YH0FYKmAQX4)3uLs{-=^kfq) z8{}cBK7aA9%v!iP7HIThdq*kZFou6*Jx0#shZQr};*CP0K&w4oxY(Zr2mP>` zisMQcmipFA1uy^4L|uP9JUf5cKcJEcR)|+PJ)n#^1fs8d{J1~H3lUcmZ#usMgb%>f zPLtL2Y3TF;K5ai;0fa>~6>s8e#Y=~UDwH8cZ)@yHyRQxD{i!w&AinVTmAj|he$h(J z!DjXg_%$q#6hWCy_0VQ03cCzg_3+R0DRh)?gcSdhX1m?9@e*#G#2~cdp4n^u_c%L( zWpv;|Z?eAH`WG{fkklgFlnbv8v>btXuPX(#>tEykB{#)G{ss;AjvsiZT(6(H{jNIslk?th|g&UbRO)l zmd@V%m^0q^Zt&S@y_!649`h~wr9{u(^YQrf+1tH;5XL=V35?U>n#4`p8_@9vw{gda)L)J`>rM8ra>l9oqR zM>pM?w7vR%LX8mU7KdL#ch`Nd8rn$RD2vzaAiKnJ0z&6|EQk{78u_XJMNTp7w@xPG z6&dwHsy^RNn7cH`{>*+dcvjPCRaYRr-+cF$ugda*DcrV=!GJkz;Ky@**j%vjXDBmFPhaXO zmao8u@MmuL?26x@+gtaX{@)id86sI=JJ*+kho$4MvGb%d`AZ*RD3G^(& zCEAwk!U_}!2iN|dxwP7HU=W*O?gtf?*9NSjULvB5%fvT-G|v6mlYJqkmF3P#a~4kh zJSbOq}Kj zmvt&rO1Y|`tY=nP&iPhLohA}Am!Xbs_JK5Uh2(6@5NGf!B7@3q>ersth#qN`;@PVo zwgSZNhS}5W$SvNZ)q8Q!z^f4~zqR!@`)>5nTMOx2G zYQ+GVKJ;l74g~%K?}oTb>oQ-NO<5`P5x5Xa;k`$PVSRe}>)$;DISOqed1v;&^u~~s z7Q57Qxo|&i$7wt1KD0SUUMVmkx7^z8@nh&w7MF8>MI_0UD?QffzxpqWRQSgJ@g3>o zs0S4j^_P}}656ECkgxXfgj|{ra&lpBDJBRt{?`=}*p;Z#XzIunb)p7;%$>ZQUTMrD z{}mZWAXU_e%7SS*6Ab5mK3#37kc|_K@$LN= z+ME)nBW+12ZJQU{Q#hKN^D%A=$;xMJI3M|lzW$Im+A7)74V|Qgt%#*fX_8)i@|eR4 zN$IXoJQv5TDv`WIq17Orp>2I!JLWLLSPcu%#siH|GelXvrOzY*J_-tteL8Z&vmaU+$*}W zyAFm$IoxF;vbmRyF~>&&HtbC%AR%jL-e0_{5+A%^^)ZDwpR)g)(j|`P>>2>%~mi z2uOh0q+^jV3uAb(70duia1mB4ECaOY;idmSUP88$+o&~#!vGPs)UtF}9Ra3bcPg)i z{L8q@MPEWZOI9a&cLFO*|0c#{R|$zzQdBRVIc*b^(&31$W|(d2I66-1A0Hh&t$dlg zE9~-~@ZDnFrS#pK3e}H)k$2(T>;*P+!0Fn@J}V?W6k8l*{}v0}QSpE%E6Q zo?*Zej&`tSS}_U;;+bq>NB5~dT&eK3=z%#?db#Ao{5+h*eB=A$GG5H=X)T($A=9FV zFYRhbt2@T6V zdmp@`P#p16p){r?de^6x!v0=ZhqXM?tE7U<@0KoS2p8Ia2@W7 z3=mo5;nn1GBy73;L?0IPSzg`iN!zZvD|aGZY-`Ni~A)-lpw z&d2S<3UUnD@62v){U$DyilPYodjR=51g;xf=)g4>%8P5KMh;_Q=oPG^(ZjO7-)Av8 z6?2Q&m=2*(03nG3oftoF$1m(&#?uTCcdyekIKWD0IH`|CC^S+xsipbw=z4t-fAZxzlnE9OS+ zc>_3RM2U~Ci3rDnD#hp_Y2*3tlBfyiX6pS+VFec$X2hQv($3>eoL7~HFzcyagL3Ea zgJ|9|szwWUZnLSpD1z#7FCV+uG&=l3nbBCCaE(`bU{YCM3H=i@J>P=Pj4Fowu;# z<6>s^3q==yaVovLnJrTt3ht{jKO*lbsnrIa%M4{}D*0Rve6MU4(ZdY=?loo3Tf1>q z%>BVyVD#CRKhHYm#yz$*cgbB1Dy`-4J z{Lhh*8ZR2wR>_oCD~Ubp@H-Up$8XZ@Z*oMGiz6TAw4#(KqK%wik=yVIkznZma?Vda z{Iw*~cq)PVjb19)!8XqhzQ{m6k5oxnOD9Gw%uhRS$C3}b2Rtx9Z%=8~f1-$Q+ zNZfhkol6pOe?2Dccllch&dU zvC`;?`)Yr(>jY|4XYnSpWV02z|KX;**HPos{l9kyu_^$D%gAeRtQFK>6W(M``kmDz@3+h|4K9v)#DCo9=xM=7i=;5Cww44Wzm@b<0|O~>J=rw{gxzsthQ}@dMXsY(R^Kzp8qOo zk4$u+j(|3Y?OV}(muTO@MB)^qz@6#arxSwI^^Pd(zfP~NI@fz!#o}uI=H}JA^>NNP z+Bd(yHFs!au8j7vfDq}`R#9hTb~%BM}rU2NLkruyw)d}I08DMI51SibS^l*(s3JK` zUk{>zf(7AI=SI=fNT}LEy6A6qiD|oOOq8!Ec@28u5-lzCXhp4%FF4G9fSpJ)v#A&` z-!#Otwl7?bbG;C6H}E!KBxt4&Q+oZJ4w%qGC{k_>8%e?%upR&LP{)rk-DsE92%MNe zPbT(F;g{+3-UpK7?GD6acsfvhQjorP6$VvS96D8DlG7^a`2*4)QJu=KjR~5NR4^Kk z2Lp@*wos(V3d}jR&f9*g+{K=(I%#hHA!z*;ZT&}$*+7&QaTP0FdHKI`ijmK5O3$;s zIu3{lwpDQ`jiG=`=(^ckGF>X{WTEfQj_BdD$1Kvu(F;D6$r9T^tUMprnG>cc8v;rM zpCVfMuh`H3s|DcrfeTCHzp-5~-kKX2hx`W3SYbPCgP$)$5RGPAxdoA8_U;F(o)~@$ zSj0P=xA-=ngelTb4cDeDv40%n(~^`Z^6#31sZ+R89GlpAZ1A(JS{#8Obq7-8|G*sk zte4Z1A#g>1Z$yDrpg{Xh%T)dq)Cr8dADa1*$R9TaNgtyT7V`LJ>PeL8-$b-;+p@}N zTddUwr+Crj+rMJ!YDv5~{Uld>HBaZg^Qh7w+LkQyp(7Yh%rEBKTRJx3t_-?!J;m*( z_^InpxbMRDa(ol^+LAWD*PY?%*RnFkNAt(~>C~OzV$~7p-dn5HpYvXHfNI@X zeh+V)JJ6nHT+BbgLr<}wrKe6`H`T+Zml=^2>3{RX*M*D{4UMV&>Da@ONnZ)MUPI;+ zEF;Mg-n{vY9crF|+)^laK@z@IODfoO-tA#vc5}0O-Tg|}&=9+=O`S@E^5!O;hsV2d zAc#f(V5uvwTV&o*UK2Z}obkGxu|XGED6RB|8*)=MT9-QgDOT8ZW0Tv)sTX^Bx%_yB z)X%vxa203Y$B4N_tg>q8*YbkWZ?O(w?~Q?d2atI@ourEFJYlTs$#e1yNSzKbxdFneLPBR z$;7Ef(mNU2efZzVU{h#3RIe*gC;SA)f)=nGC2;Py5D-o`^SP|oGbNmXf>q)`Hfq;@0Sc2 zmzp)B(Pa|6JSbcqR0K)>h#U6$ECOOF=DEfe~=%KLgLzi^k z{Hmff+>AHc4qw{NuEy<&*!TGrs^jCw+(zC%vj`0qkb%l?G#sWdU@gY{qFikSQ4=@{ zbztw=n;}wR@fu4cET@i?>l`mlkwD=A2i(%GJb4uqD-{$uukWr0pU@8e98g`##Tk5m z7$p&nNf}3N^~&JkG2pXCMX9&Sw-Jo0n(pu-Q~mG^VM^M##DoDl-&a-9Bq0``Mm`^K zXA*u$j+s65y}p;&ebd05B6C4sPbv7XLels%>S5V9je1W8`7b>ID6DLXJs_PllGFw6 zuD;T8kFACbe0^&Hs(P2QRq_jHHB8dUfR4o-R3?=lEK9XC!@;jBo1VKbw8$nxiM5l- zAH7=Aq`x%dReO)Fogl8XweWSAjApw%m+8{(L(n8~{2Jn$t2ZD|{VnT}E$}%}o`o#r zA50QmndA`r(j@sHE5#a%0z7XKcZ!|NUN?LA<>;;}nAF3WafRe)fq&JfD%+6zTM+X4B zr16E&ZP-q=+I{?cDmeyXktp0)OxTyXj-bfux`+3^t{hXX*rxfAR(rPSe2T&sjkx>l zn2K2UR}!^$Uw>tl?6k+K*=InW+!xB#*6I2GXDy|FQ1_kEea@9-UWhg-G#y_kb#Ao< zAZQ`;qs+3|scjek#h|1KC=0Gjv<$V3%mU98x1@Nq>@b;tXuUn>*zzvlcQ8C(g#lmq6sAJOy#$^Z)=9h!~ei;(s=dqgK>O`_4y=Q5(vn z(cJz(&C^9C!_A3umI_Lge;-`J34CA_zVfU`qarRzm6{wV_Pz=**G?VgCv9U6Pc0Y+ zjEuj9U2U?&{0_ZUtmnX}FAYd&c_Q)cAj$32pW%HSK6&RUw&J&aHDB%klfI*OP>pl& zavL3I*Va`19&JUFL{RFO(W1W7s%A(0bV&zfj@BG`F$1i4{CSd#!2{Em4>2R0SUf4i z;3t%lN}~n^*V8IFP??=2dFma1lQ{ybLZgYxN{15~D7JCeLP>`0Ao^VmMTd8p0H3Y& zfbQ1C6HY`5VM3)qxGBy6E(jDHE=I`+W4YVei&m}M z(|>h>i!cju9+mH!u1;*1RXqm;wR#6Ur*m0 zZay-^Px+U=X+f!c-0g!lwb2YQKHYmiPC}>zagL zd_CwDJ_PcQXDMpLRY)yUC>{3lBxeF6@p7?M3hh?;2ge-?te*p0JP^~6>0^apX_N`rTsx9BPGhB22UUikJij}Qmhn zi`3szrMk#W!YSaxmq@nlI8_$!fe}SegF5gJN1=u`qk(4Y`7%VW0m{{!2zCiAj;dam zC=&|~37vaI%8^r!Bw#z}VW4*ds5e|Sj;|R@#qhs??hL~ZK}}b<@J#aQ$(j&ARjv|5 zvrFidiDP}&0>TttQ0L_`F8X;fA$0BN`Yy)SSWQEW%SC3?t5}0ZTx%)6;_EINUY&&a zw{4Dd7`!C-gQYC%^DZwVo}h(L;3)Dw{1y23_eGP8N~b2yZfe9ZY{#Y1OIn-^Av4-L z>H^E@g8p!s@bz09Am5xedg(SOtF>PdNnci{uf1@$WGc`eSUJb09o1GK?wk+k6>t%n zVx#-cE3nmWrBgVZ$!3lAUpg3M5>m5onfpL?%&N=lZmMfx>s>SSuE`ROo{um zB|^rFciQ{h_3e5`a*3G!P~oJp>gTr@BU%+>U822(lU5UigB)#l&0mLoJxJJ^Sj?9i zz*|QZ8#_@B!$~dj-z?!RUiO-Bu!+V;3!rgdA={2g45&>D+Se%dAmm@JP5iryjZ7M3 zNy&BS_&$TX$7e_T!uQXC)OsbLCTEv@NIe*5xw_i2gG#bhV{6vGJy%q!4#+k5b)T$H z=j~E}GzMEwJ{lRS%;!siO7WmaEEllD!?o{73U6OuC0h_EXiS@N6x`fst7Xfd_k6l0 z5tKIe6H*oZApDIQ!~W}j>mUJk9Le?&UEZ(zxYO(Nb+yeQ4BwTNGQl}jDRZhto(b4> zxp?U0_LvguJ6~bd>(;RPGxN7}8tyrXehap5X=&cD5YmV`5zi;l=IcN(fSyM!b*=FU zJC2lsIDg?GSSxY_b3Q7VR^mNeC^Hy#ZCGt)WHXxF`A3Zr(T!3N$($Bwl-;U^QvVDY zuy?KklFm-1WO@!L;`H#Nr;Z*S#Cx;A>h40hH zfH)AhJ0i{P%kE?f2>DW-1a(U=Y~WX5w5dqv<)StwT3IhKoaar%WNb@P(12g)_86vVYXEhdJ8gmEu*Q z+MgF6rt~#myO*wy94W9JxLhZ{D%496vE<#4#sOZ&@x~?k!y5WrnEo{*a%)Y7BD2cQTo)BL1tT#WzC7#oz43pfol`A&zuqD~ z5G4wkVE}PZ)1}N>6}pRRap5TDRRJxKZdzps-b86?n6AE#MBPo7>U&}sho@kCI8+qWaXmfec;o)Mux>@u*Wniv6%B#p+2P0TM2JpdOFFW?r? zqHmq?Wd73=(BqSky&zqfVR{^w)GxJ!n|t3wNa|yPgG9?c^VO9A?j0_Rev_$4L&RKg zD0exLs@nJcouH# zT#UMzg3-L1On}COGFQS^zHMx$TL`a$`@g_m1?ivIr6)cuINu0L+$d{5*dr5(Dkz7o zQlid~j!uDnS65O1-L{#=cM??tZZrgJG#B4^^iG9fDrL|PD_})x>rkQSttNYr6qba^ zOTCIR-O$5zVhvwej7}4?b&*X}S4oohNHkIyJUXIWoPH_s!Zadh-0bdV^PdLDZrYrq z!REShpE!)d6d%|;^!Chjy`p+%aV>E0I@6Z(Z|Z%quYm1l@y_cKQ1mt#J6W15s{Ut@ z7Jq-iS5~pMOKv6yz*1$^W{wzMAS8LDQ03}yz_3KlY!yl$+Ha5O`ijM|Dy%vj{jueg zko^3n7oDxB;K($w>SDf}zDZUkxCXnbwAkjVtNsb+nA!`JQ`BGPXTDBgxOo*t4OFjC z|GaPal+S8vmLZ2E2k;d*8Ty5<*UJ^i(~f(Q)IQt9+kq0WaYdAimR^X<(2Y-%$(4bc zm=WBVJvGqEsS<$(iVvB}=xp&QPCleQ`4(bK2~U;I_eg%B8M-)B5S@YX>BQ3yAmgcM zOUr>i98`a-HT}YZ4|EI>JyOH4DCLsqVgB0gpmkzrVC^#tYnwsLqV_+I3x}GP+rmNwdQ(ftE``xT<|dIU3ne1+~oFyW8Y_-6ty@hy(lvW^ z)a9bAkZlnyGFvUBku0+u_#V0N3RqtdTN}jPwEr3pbvLLFp1-T!Ud!{06?vu9)fvo- zl5M?Mpa0lFX3TjZACw9P1b8OQp@{P+#|LYuxyLrWJRv5i4Vg%MQKLl7^Vn{^joF27aNk#MPvK!MW#pWeX2x# zRo(dQ539DabQ{9>pH)!a74zuRnbYD)9$RvRr9EnnngLI(jAiz34SKH^t&~gb8Q%+% zW-*}(t-62zwD|7zqNVblK5Z1b``hzS9mllX_=2vS1m{;Lf|zosvq0w;1j%qVM??$XbL#&!TK;O6d)< zIMUx|tY+7L)xo*-d-o)&Q9X2V_^+K10s7T`lv446 z+egKThzgcZ_XJ5{Z=9zD38mXNn@{9>Iv767Q)5O_8}ffJ7^UiZH&}RAxiKs@Y2K%$ zR$pB4@so^_KD^SIu`(AN@6)ItuMU|pzoDVKz|?Yc`h2|DNbpbg-)-~$k2>cZ0mhSp zZvz6}AO+T>53GL(!gJDxCVe<5h?iZ)4NSDWV=2lI<^40-niQ(l^LF7GYDL-_NWnz< zg6UxA;=_u29nu2405oH!BM!3uuD9gevu4NGXd`1~q4r|ZkU#cY!v`z4Q76Z+zbch~ zmjzqbo@^4YUNB50g4-X4le+&!q1{IwWmd;!jrl;DzfB&}ZI>x&HHeIkm=aXzJs|xB z=Rwp7w0)O-d57DQipv-dD{=F@kX)v#Rf3KbBxFGC{Bzr&D8@gRA$JdY zg*WW>lnP(%3mj}*vz z7M-{T1d3{Jd8`yB7U1LOiy`<_X>a05S&nGL(9z9l_6d(}bPfv31t&ZcGG1v8D9npY z6_l;&rR|=zG7HFjc_Bm`Plrge=GmdG%6j*jViKF_Por)=W^o_IYs{bpxhn$Ep9xeI z2*?!PD>puNU;Bv|PKjm|3(H;YS^M@0uPksRKySw-aUh35Rg|g)b5Uq}W>Hs1S6Q5( z3`Hq|CqHTzVb!nFx|}H8=8>6u2dP}Nj6sEC*|T^)k}P8s9q(GRSHtEX6|qYT0;$g@ zghzL(39k$aj`#l<_z9DJU{3{s=buNQ{w_B)yj)E3>u0#n!C%zWKo1HfXr-s;d$XU5 zZ)=a_a-g`L)!Uz;skIvwrwswVG>-fZYtKV|cs4I{;(sd1J=>A~-BZL}ze7L0BhlCS z(fL`f^Ly01S`3^0k^h!LW1t%a63a#k7+`pMlD9qP{NtfRZAQa8JsfzbIQUKp=&N~% zM9_q>NN;BKx4nzg!=Wlor2q3)aqTy}Dftvz>=sAa0(0Z(L0sP0`Sid-On6j!yogcT zFA?S1+7KLwylm3{Hm%dfP-6FeDefTgaz@`jn3n!BKPPQF?8>m$l2B9cbEA`>mjx~%5Eo*tljFj>n?;Or#m*K2$f658{6$n>x{6j! zX6DqD&+E2U`kPxbGLr0?htbJ&i7TGPgdC2fDL0qb@EM|BtmVEA{OSbwUw-(ZH>t~K z_iHlxwx~OAsN7^q&kaU4T zj-g2NxYro37+Tn@hy?3VVzcTa`^*@k4lZHVTtoy(s`qkuOTRLHD;X5#a?y2|=DGC| z)jy%ed044R%lykpg$=yx_`@*jJE~@lF%$fm{Y9r7d`b3|DO(=yhu{R(NjbdWr7+n~ z1v9(%?mA+VsSZ`OlJ8JRlrY?VUOuXBPw7WddbWrL#{MM~!i0735=K?)7MVQ`Cl<(` z6g>!US8o*H4yrnSvEmTF$ziS_q!?mO6h69Lf}Dd4elwpK+@n+exz?SN&6*1&mI$`? zI}xF-dW4G{ELP+!wY8@(mHUwfBRtG zb*`&EGSgqX&n&t5UT7@d;Zk(+tr3P#(7nAHrh7Zf-?dOjH+~f z? zkMqI!sV+Pk`_)lJ2FJObwjmv=R7k;>13}XbI#!+Pu0dxnKBE@pm@mL!T@-0b3<3qx zSl>zSw1(t{t3$MzJ{dZbqEewuICbeTzw3J za9zfx{sx@*ZNg<%H3tJ{J26&KO?%lsZC)PM^Q-3*@mlSt9+7i(L4TXxBR0N(*WdwTLTo9C=VBaM$)YGS75y6G~6wxnJD%T*?y4dIQw zf8D9{D!*05=?oDpc5uYsFSi5uFQPu)6MRye-^WLwG^!=>6eJB`$gqJ;FShq@7adhr z*-h))oqN;Z8r3_l7Y$z4EU#m$J`pgIah2nWec?K=nbv2C`amJY;PS*CY9hgd%gV)F zVuuJn>mdY;-@jZGilP^7r7{p}-l%PET8+n^kk~1K6MUaKTzc$gV0$z+2SI(Lm`riV zWq=%9Nwp`(V$F;J&z^K6u*{rerBaA4D{S0&f8!h~D)!aKs|VL`x5_`YYseae3j|EB zfzt3%cR|qrEavM3Wzkg1W(xbuvIpXyNtT?DRz6*QW z^*1fmPxMP=206mI$g^lKn}dN+_@;h{Jvta}KadJkp7j_73u73|hF7bK}t z7PkXmY_w}rE_Th zELm8)<)cH{pd{f8Y5X|87D|sPSos9qg{?#nO$@JA^9yzEY01!G%tRJf8Jj=sBcWyq!49Dt4A9L*;v`R?~ z9XHA?+GZzEe}~F{@X5&6c~n9Yi(5K>+`$PYs>jvI6odyXnvpncp(E635qkZ~=)0j& z`Gw!UJM2fSfqtxC-u;o3!B}A~uS|!!eSYM-A9rsQX`+7qJh>4b^Uuxi@KZad$AN}4#uCX8|6GdX^Tw{PIx8Cg2hLDQdPxXr zuT{ldc979(@6;wiI5yunZMsk_o^=wdvBwkQbs&$Ee0_H!;Pi8ouL(=!4CFGfaViJ* z{ls~LHU7U5cBR6}kt6N>Ipru@rqY23T1K?*Pt33zP1e354kH7)1<)KvyW%$Oa1#G| z7097&6~8~)RHCI?dVFCpY?XC7omB9qP@tse^d8wGs#mCL@!7a^!CGMVVyc)b%(0?FY?8dR||64R!%&h=9*=A$`PA(n4Lzg)6EYoLVNY+ zJvSjMmQ7itFVAVh2EjG>ELp%cOo{73;!)*LN{QlZgyGL`@8TzFiwATC0Y=^6hQ)M< zJzKu7vl>87iT;Iat0B3LL~54X(-!lmVpfy5va6*q;V^UqD;x08(X3fY%8zUkdkam6 zc%hbgcr`+BcN2%r%bd+3X{MQ;N8B0K(VgVB^+xoIo_;L<_n?c!mHvT1JoL}|7(S$* z+Pt`${q6`(xfo{{Q|Rw*T}$4;nXl7b1}N@w7Qcd@_)RDUrEn*1&!<47LnvB9Gpdz8 zPt`g6d3i+OXbg4^PyG}*YYj4N!~gO9_?2;zG-U=cVBbKN6TioG?fr5R>E+yCX@A3c zjO}_9fk1!vbQPK`BQcR+V)^XCu_I`#d6Y&nA;#;Ew6J0Fw43H8^f5oqy#LrWCnCzB zOKjm<&)1^0CH)$c*f3fc z7C1q)u%9G`@|aMcd6KJiziQ#&TCk*Y@3;V17Ui>Yb01LKiz`Gjp+^HFeWx?kR?U279wbqN0_&#yUhMdDQvcyz2Yfjl(5Y zHsK&8=G1n~NxK;9V&GSzySbD&PNsMpVt9NH{MR6hK(vzD*Lt@eq1+FNrat{|n|Z6&$JH-u)*w{3i?R7Efp{0+!zRgVl(d zOujVKC$%RyMj@%B?x*Ly6n-rgjT!dGjLZ=fy(EE>AQG8B=Y@UkPJY-EpBmV(f*4?t z>S&QTalu#MR14Ca(v78BCniK z7jG^^>0dc%m}giMtS0c-0{gAB$L>u49!3L z;kzMfk@A>GswRHz0BIy#>E3LYstyD^vE_0Y9{JVy58 zOzqC#aeBTJe0t0}YSvw34^4n!F>72R6(eGHokDZg!bD0yXgISUatpOJLHMx`->&ZY zyDN0-tDh#zEEtNDGI?41z+8e(-;E00j?BkAZzeTz#CvW?E{p(>|Jl9|%qcF2C6SL~N25q01o4a_k=Mgu*l&Fyh$~?$Q@bq7lSVQYM-! zP$x;?e~D7LPeS{)LCm)^z< zTZYLZgCxZn+jQ~Y8&oyY&5!(tIGZ`lIi$1%2*Ut7(74R%*Kyr18C~U4T;}%8(%FaS zG?@sB-S>5mq)@dVJ-EG`9XssAGr-8pV9nhi%zl-{78WA@7GsV9O8v@+SW8iX8Du}u zxeRkc5b8fELqXPgmFuMVuU4-Q5TDw)xejciPLm5mY*O^BLw&N=?^S@ zLs(ygVbx?VM_HT4O92@IzN$$Yg5BQ@QHaC!pmRy!J?uLl83ESfvj151K9?i{av%Sh zdFGzW^E%iJk}@*PhAmH>xGeqOY=iQ%G9scnokmd=lKFS!Rjq?XEI^Y*5zStbB17|I@)J7sa(C*L2Za- z+VRDsS?DwC5;)Ey)K8ehOP0BoztT|d-zac2PhJ5U$3OeO0Tpw&t?%$aGuZHgbShJ6RRq^4lXA+hI2d1a+OT+sj91K` zM8!5xphU5uKb=mYFvQ11P9vEHc^oa$iw8(Bp8TYb0c2t{wI&D>(N!~*wqv}Bopty! z;41G+sc`|VJDxcrJo`mK%VitfyvxMt?Vs&Hxj9M!nS2?Y495fJAzcIe42ud>v0Zwr z>hr7AtT>J&X;;=aW;KO2l1At?g};b=XqD|i#|}<7qu&ruFKW*$W&|rm zE@7&8d2WAGRN*B;uvs}gSnH7+1xQy$P~B8=?o)%9VBbGbgdt>rwY8Ou_%6zM`?Gi< z$p!deX?ALoJZ*SOYLB6ZUS6%i;1yO+&=wf^8oqqym2Nm^8J7TkieZxsxPh%|0OwbH9 z>9lmVHcaIm{i3IHh(?*qwDKq4V)pdjn}@ZZ|1*7@PvJ7DJ4o9D1s4u;+r*?; zDyi7UL3*tf*m+sI<$NIQdQ6Nc)vB4irU&w4(#(<^%@Fs_X7QZJV=Wde8H}pqEuXdK zyxDJlO*h-$vVK1_+T^atM(<9w)hBgEk~sOBRPOOEXR>7fRTcEh{v6sc?%3n%d$_s; zg?n3+JR^V1^NrgMuC>uiLw@>~>i<8vk{?-NQz@MbB1jiY#iG1N(U!b2BU8%CC8J9? zCubO7F2r63|Nl6)_mIn%+ zgsKZW959ZmDaZ-`-WR+nJXsJRul8Mvic+V`QJwT;@`+`V3+Z`KIj9V*4pwtV*+-}7 z?h;Lu5)ffVj<40C-B!VHr9=;%1#i$vAgh14f zU0(n-erT5~-|ng)q*4wsAkJ!s#!&v+PHzHT$+%2BY{DPSPfb3RI|mHz0CM|gp7(-e za(|$%?>y=-0#1v%mfcWmm=O`x)fl=#u+{&@?y@g-BIP4$_qts=TtOdb3uMJRL?+sv=DlS5E=V5bXj44;VA1h$KI6=8iz|bDv*k zVI%{t_CfuCdXG(XQMZgU2< z-)IQ_7%LZu_Ac_PW3$-;knX=YJSmtwBVv*shDJ5JZk0Yzha#C4R;6{2x$g^l3$e2l zDjbC;G1j0ne++xb7u8uC4rEkWlZYM1IsAxiixfD^W-w}JO^@t*h85};t;Lb!AtFwHW2EJJ~s zgP5f`U|MmSyThnH3P@%?YZj-W^f8WEYq#~Uw5Sq%)+(SZCLlAldk?Pg!>sK@QRApe z2{{&|l(-fu%azvyl2u2zH=C6M0K5Vk<-_;)KQt9|)~5<802STLkyX@*1LOIFlnr8F zRBz~OXV7iW_%CdN5Be7`AQ0cD1OQR1wTai9h3yOqJ>RW~R&`aL>f(>?QaxEN?2KUF zrX{+K0@|%lFPiprRjuF-o`NkU$t4bW;Oy#y*1!o6N0mywXrc2B?rJ{aroYz)6sp3H zJH$+rj(xq)&DZ(IUwI7+^tt#RF8_pkf;-Hm5ja=ydQbD8Jl6sfLm^5^Wt_9~qWM?S~K7uowZRAz09UYM5{AVJ!rp&d9}sz=8eJg>r&2Zu$jMkSrt* z2WsO2`BGeAV0Y9`5^{n@^}1KSgg03kAGAqrrh7FXYdj8L2Oa<{~uFt9ahyBbqgy9QX<{m-7O*AAl=<5-QAti z-3`(yDczlla6pihl7?^bd*6HS_dI9&2b{Cd#bokC#o;hsI`Ql}WC&?&s5ZZCbcu~$HftBi6Gq+E8ClrJ?}l3Zx{G!G(ozD|(JMAla>p z#w_H?dE9~ftZ_enOnbyEq?ZR7vi7G<%$BchK{~OSU|;9Co~Q2A%@e_q2C{LIvVx1R zm(X@;B#Kz%m+R)_Kfhf{53PS*Nt5vs*7;<8*z@sjs1qUMCI4SC0d2I{VM17zwC;pSo+g;e}xQ*F;O5L~?u& zqRXG;NC&xdcC+OyXVXDQJ^pafW0*l~G!wI-L6q(wg++X;Zu~PI6T8}@A+q*lheVbY zi<*iA%msx1bNjhUtFLF-Czn{CiA)<5+YsvS}kq`Q#jmaNwjjz22+oPXr%$z}$L3cyY zAa~1Lq44Kxb*{%tqb0$0_wzHnb*=MWHmuEs{}9R>z!SB@3Iu}y^T3(SByXhMu z4>{svQl}@(Gw7T9ux6EGE?f~mHL2KmQa`-v<+Np_{Xv#kQ({=&u1VoDly^cm&_gc2 z7ghVWoZfK6Ij8-NWd>~r|H3T!T8JwDtKVn~3Que4dy1{THOPvqIvhGo`?_7nr^(Wq zB7sPAHFq^+&h_9Tkkv7K`_wFf^|L3*%$+&kRUJ_tX|B_m9)GyAcD5m=!hO8J9sC_n zJ4#E(`~w|T!v8N67QCuNfqU&pKy9yS6cLeh8H~rOq8iFu8n+vMRP$u1Aw@J5OhSfg z5z7yWFh;-$8QCMv4&=5xHG(jg!? zVlLk~*A&a6h&c4VUpajXxJ9Jmay!c{4^)Imp&vk9F$K}M2L1Rk z#of=6?P4^aQJoBEmw7ZE&129OO6UD-t~(6|LG_SCbtiV?WuRHL-dbOQWRCNEh#h7Jqb@uvgSr7lM&rD`q0 z>YD=@?fa$rKY0>wv>9C({39?Mx!7;22P%mL$C9*SQk}O52^qAyW8#<@wn2dzaF^Y{ zlVUPgI`m=b>zPn@U%%C;yXrpkM?cb7cV_cHn>D6`?k8qv z%kl6v)k}l?H;b4Y?%WM$-qeUq)wi;mw~K?Cbw~{-dE82HNvGyp&pw&&HjnbPpk-k0 zWM+73P!GE?s~^@x`JZ+b8*FXAaWMbhDqFgkk;F?rJosZaV{NfT7_D{gPOo*lf`H}k z2|aAJ^t<-g=;mWOWn)18M}ujSnqxwS+Xn=!=YbCPif@_!k1C^MWwpmJkwgtvlKYIq ziZS3K&Z74*xRh1MM7b^$!|vJ_vG|CmlsO9LpNUstgq?l>nmCQpcRBgNcoT*#Z zLAYU4E}|whF+9I+FYicwmAPaP3Vgq5HKG7NapcNBY@Naan%C*P!Fv-&Q}}n z!ZR^*YrK~ndT!xGk`DHhqJRjg0ZdO^H|=CHWSpA#Gp{TPWujG1P$|!hCdOmXZS|OH z>YbHQYQfoA2LqxrR^#R6P`@UK3kKNqU7BwDXY=TYj2%OOK(L=QOEpoGr!8(Q1qVQYL3shSuJ!#~>ovFcBA7vk49W4! z7VTpk>AdD_8?orEeNIgWgEGS>BI94qk*577V+vB&HA3XM{4?S;kxzzpq-{JdTi*uzWO=bx_)7Yf78e?)@9QSDV zXKqr)NiS6oRzIzJbvquS5j~wCxC$$a;La0c(s&2Nd^ zhde~9`v+@vAAj=rBZYroPc#RL4D5yxI#&Lscx#=ls3Qcp?iw#W9C|HnSmZdO627WQ z!4%RI-Ex25@au5ViL0gYe3R>Zzbs4Zyg7y8VU>>S?W>yVho=FC47;tamQ=IrI+@zm z`W*0~=_2sKf_kqbcHA|qV;_h`Bu~{LcGbLjApZSWPp*QPPi(;vK+mOA5P zXiY?|#{seI#j8eUr_;1$HNqA=D}O^q#U}?^#OE_5_2*@N^=}?Siwp7fj%CQ(LWpHa>fP@E{D+BB8gG%tGeRCH;*nBtAj ziJ5j6BT# zp$nR(Kk&v9tFZ3S%L^h&R|U{mj~Z|SNs)!9RoiOyu0uo}SyRExw8yblF)x^H5vhY>;<`sHgsD ziF!vqR+Hab>aRVJoadj3*|?_Zk~~PR)~7gp?rk-n|97EPa!~8l)Jbgh-2>iQtDxMl zH=PALqi@yCPTKI7#;+;O;O1lAM1{v=Zdh``lfJzhB@CUNfVN!{{7ZuGMzrqt1N)@p zHeN?_egZc-s@hxq{FfxdzIV2o|26hU!El>NTMD70Y@jquJhAq~%25U|$u;Myv|A{y0^fn%9vXf0gIdrUC zelz1A!Q(sN`%`7TRozK!yhs>3)03!nU1uyhy^nnPXwNy`{ZnC25o`V|C0z5S=TbiP^o0yTQCWT^AZHd1@g6b5-L3gkqD+lf|J*!S6o~Og+5ChtW&rOM zZ$~=TN?t|JZh`n1R+c)+P8kai5$JJYh(A>9e4V~fNuIN306gu5SvdAMa!zd;9(5lo zcUWjUl3l5A%g}stj3g-Y0ZYs^wU0r-vDT;i=xe(zI4Q4ct?9v%noR~6oq8GzRsxBa zQr~ez3G!wdx0Zt=&WdK?X_b#=HJz1ul{O4xS|Ex5 znq9w@nc&RH#^%rxVSv7_>%3__H}a#6esfQ@Hs%d?Ih`{jG-jVGsA!K+noWTM0|}WA5fYbe-4Xlbh{n;+we7JX5ty zcTkqi+Ll&tWQOaQ`8%J|d2B-RlWU0#0VtkNatX2o(6<8DVdea2-eitQef3*zY@LAI zaLsAS7i4Ds?x!86lcQq#0Ir(IRI87~n%s>(6nOOtBZyUSHg>qGK17-Vd1kj8rQ|P1{}Ho+%AF ziW7^Aw68~ZuKed~E996fH{af_^62yC>P_F}qQ8grRkZsRO3Yw>b|miO#ANIDt~yi= zRr8vPD_1j($JWal-S>TU{_SJx7S#V%h`wmHs4OTFH%1}QU$$}TI{3rHs>S6f!(u8E z;#FNpBft`?5JPoD!ivO~$D!7TDn&6xiQpMRCg0#8|{l->4dheLNZUck1V<1#4v<_#+Wg2>aShE*0-uVr8B*P#?O zTNr9)Moa^n9E+4E3663o&Pn6qj2EQyznJlzK)rGyk9q51W4rBzKWuceuN8U_iL}X5 zIUOj#)B348{EW+Ro)?PdtxUDl)jxBq>Kg~Di&)}#K{cMP0=L*C9)_Z5~Nk*&IjACQmil{-x4)vLO%-h z88r*R-Krqm$%Yo&bxq9NX!@pN$wMr0V)<(C9DR~_CgV*+(p~)9r+rVHU$E@7&u?~% zu6V1=(~e2q`CpBTPv>H_^+>h#ao8gpm1cm&`;VN=PJW{egszmR0eV_TD}GFqoK&Vs zvv!j^jHgXpc@9+{sC7uWlaEZ-mb zmqN~Bb()#xMw^FS0X5Q@>Lv7$k61PC3`S=)h?bqjsN-V^v%O=jvwTUl_5@ebpWRPK zjSG8;lBvF0FBUh?t?7OX`$0Y07yy;idG~ASn(Pplb~;jZx{k2(_tGlkXv)!Pv2(VO z)7G@kK0@k@ADHo$oeeMnKToC{zpEmL{>Y(@o_UqIuH~cnHu`t#+{TKS1T;hR?|+pX zN6>UW*#-h*YZ|G4WAQ(DcsOIzKea{1_N;#|-4vKCUA|LjQ;%+Gm*&m3iuTy|kJ3z;4xX?>Sm*yCZOjMtCBWVD@H>7e`}f0L+D<#V`rCGV;n~wBwjoTq+!Eh zR^HdVZ(vzVSc-ANZoo_$MuH_3s8uA8)UBosah&L*A&W8U03x}H5+of^6qYF4vGuq! z0klzuQH2SVrJEPHaO6=+A@9G73m=r*oj+&%+ZSXIF<4h$bR z!8HY|Sq&)t`nj&Nb`~w9Fmv2eeZPS(s<7+UnnJMdM%IPKmYiyAL%11`& z{@7pxoCiJ%Ho6hZOQKQl4*6Hc@=clk} z=I$GTQ-3OCZEU>C%I>lS=TrCFx2uxNipM+my9Z^dxQBNx-6d`KolG);EE+Gxf=Q!B z34M->!oR-QzN+qWwcSdQ^}MvO(egA=quAlWK!C~a9YW4jIHkkP-jaQ-jUMay3V#oy zlPAvCe3fsAiFPZVPfcW8!*+?ma}O-$Poz? z84c_WlQ_KW%%hz$SKpi$J{1z^7rkaKK0YaF`tj{c_^UE+c6`5c7MrJKSU%a|w4&R% zlhF$LgCq9Y9RLolyke$Dy``AWw=t z5I_v1StLo+s6v$FhpG^0`zk}#~9P(kr7%kLL|=0$wvxE zij!IpUV&^t)Gq?1m@0*^_oWWyO6!R%jkJnF1Y*}RJdGg!&(n|21dw$%Ak`Q8a;!QC zq+};hY1nz#V2VjPj7L!$1$6rxy?PPKC>00|H=yqX(zfQ`@q#f&32N2LD+ANlsEqo@ zp5_aeoni;dT}#mhY0)ezHZsTm0uotEJVDmzZXK}RzOkOb#8XQ=AFA~?o32U5!?Hsp zm^D0JL0<);GG=&CMPf=>x(;hQ1!wAiR(+Jkf!*g5;YR7ue{4k#bKGd?DxCX$9bBaRX-$oXK!g=^`5w{R(nGSw*6wD_pvCa&(YdDrT$*}}hL;E3As zI^bsy(<3TwNpn}9SqO=5f`;0xbGFwQ=r01No#=iZZ)l#1lb8{shyAf=F@RVsH*9rA zTOoI>+)S!f``MD~+)G-o8lUyJoLxd&j5=5Pv)lAEMKnLpjP-kCU5s{q*l()|4t2(E zxYSW>xG|~v({{gZ>l&9*bZC%vHkjvb@d z=0OWb5Dpd@)2mRR8`gwP8R9sx#O%Klkx_~fm-9#Yx_re715OZv#PrKRf}c=nx`;b| z-r2YK?vxS2rb+}m6hcht1b$0615|B6L>fBLW2I#}`<}W@`#8tjt|bt&C;7V` zqN~?Ew~^(ag}kqc2o`-epPxNXEI!ZGQp_MYqr=9qP(|EO*>cwta7Ws-qBw6^la{O_oi+ty9x8S)awWX%T+n;xl_%m zL*G$#*{F;P4n{iDDc&C}>r>XdHz#!x{{C1}b8OAK+3JaVCUaL6Omn@x@kA!K&ub4Y z!_=DF7E!MVFBK1CL$zBz?D{S5UP6nkNL;@E?qKoQ>Gk5AGB|JhP3V~HA zQ%J1uN1?9vu_#Az`VLOwI`JHMB6+`d1E<68z61q?mQEq5kur`?6rkPB1&|=|n)4pH z>MGp5-u;R;qZ|mQOqp+Xu)`QGI1Fhc{)8Y}%(ByV+@R4CLBr-gMCM^6wRFX^?G>}I zGDs@imhB>4C}8a5@B1Z9hU-?h*Ye#PrKzRLstp6|B4MQ!rI!6EY+MK5?8v-HC_2Wh z)bC_~{N!_6Zz&v{b{@=xBYxGC!FRnpnEv^oSS_WR_^(L)1hW&Rf=4szLhxAVwN4S$ z%Wn&57nTiEVtK=c9$i@lF<7N+5C%yMy+^k#+R29X@@DbiEpd~+Zy#u;7gTXnvJG2z z<%bi7b?H_T;J^PsB+BXJqe>AOTG|IbZH|wZ%o!S_hkxHU=rMnG<5@crmox}}#y#2= zJ!ovQ*zn>Uwra4+A%D_!F*W|wkv8V~r;*#5 zT+MmElA^Y<`5a7q)phmcL7j7)Rx!Ehd3m}%{)({Jg1M9&Iis~HfWyjQP5e;2Cv&hR z&8wd1h{RWx+RmC=;Pa|rP4&}sUZa;nDx<;Sb|P_^rBy}9G+SLR^+byP(0S)Hx9gz;h1MMF^YJw6eAADOpys0R37wxKWEYp(ME+iwSx>A@lZcS zkVCr_T6$6p)1o;(GcIs0`wP!|J`V^BL zTT$|g5fAWV0k<1(%QIG= z=xUY~r_(yeQreB{c6I*@R!f6s^5!QS?YiziT!}{xy>o|UnZI4e^_6O&HPI%(`G^d^ zUZ$*m8gQ+Ac7-RjIBLnZyJ#$6c;-x}w9z`ni$JK`z8#Lkq0x?s5EM*f2MvK_ekbCo zW!wTE^Vy5RVL=|;VM@9@EoWf-R#3Hp$6lA|>?WGDqFx>AZ1FOvH~GziZK)}n?eXv4 zPHm+67-Ek9ey#rgM^CxxOoPHZmTh4^-n@SqGrsCDHJ8-H76YO+rUFvNNnQppwQRPx zcJDV<71o2RwEo2^HhTWO^rbq^^N%r0s~Fh4)tvrpboh%dmDBZXWWdh$$^2CF7meq& z_L6^P37Tf-$nyAu2f0qqhVWicO0~D8z_l+kyPLuJ$zru%ek@mW_~bqPpOPn)6phbz zHp4sBSV?DY>d%LKd{w9RL({gVHvVBTFg2rYe5Y);Tg=ssKTQ~IhPx(a(-4CL#esUq?gCDfHb>FDC~yN~ z{)(Q0WkCt&TEg@_cj?@E@ya;HV`ws0d)a<)_Bd?6Zoj|{6CtJ$JM0W3=!40Px6OBN z{FShub-D~Ar0dVy1zsjMl%xw^iN}CMybcEjxU?+vup@?b&=3k@f850SVV$(>+~%`d z(#q%MDVU{-jxot?RL~)MVu>>dMZekBPlKj$*a@e+uYP9F2iw7gOoNWw#r>f(iOv8MSe3_Fs4W8Vnc4v&KEgD7u5#!^~w=;F!Z1ocnjO z2`&y7>FwqN$AU6j=kl;2k*eCWM30d7l1S$G5FOfG>jYKPm&QGq@hrnLkuq#`>&VlX zW8i@a$_s9tGSxGfKSyRxu!4ShJ1Gs5r%`75^dAbHmM||LE~YPDuKl9;^VxX6FTh8; z!R3!~seG23mi}f#wR_FP)hAKHJo{>s-;_<6^f!WU!<}r2#}a#no>RepxnB-*td7)K zfN$w!-hZP3+B>T2kXfuOtq-~Tcc#P<+ZOJXhw_#stL14)&?nsXb+Gr<=m}X|#E1}`P8pRDtb+s zSl^zTQit7No35U#a<7(*OFb`owRqUs9*rhtFDdK=(`y;mSnO)7t=!}=CArrb{}}jc zwr<{WZCC2O&c}CZZ?@QDM|!?9y}J6oqD4X7$6D~4qCJ(?qZ~af$O+z6ciV907_5&? zb#gV_-s;~W8gex^wAoOO+jG|=S6e))EH-HPf(Mix*L=uf>gaAxsd2Y61ctw`Qgcg= z#Pq~RB$KbQo?Qnr4zyP%tMAi@I-V>(5E`uZFJ*BxRFn~GV>xdIk6W(yWZ21%@8A4F zDAa2f`zQ!06~3o6*nmb>oCFyT=hGi$~j`IQ5<*HG2g2~E$y?Qu*jCjMhq~zVxCk+GhMT41bD-6&bx)r%t zi4>+4Xk(t;n!npcZe^H%wgHn%y`=OCn+GNSet}3D1(c*~=zp5XKibj4vm=GhWK=5! z_Z!5-Qk4RPH!XB#x3Sx|Q}nwW3#3zgjWTPUBpLdluULV7DnZC4@OPL<+pkIV>`$OT z(lV|sII9=?@;(FB4To+2Rp1XzSqu9sdkk zA-nQ%8o&E`>}{iYWyx)#_ovIQ+Iyc>J5P5w3T9mMqQ-17+};FY@xgQF?YE|e?Ap(a zMaL@f7muA>4x97wU9F+`H>6c*rN0c8>W!7KtDY@1uKp2m`MB{aa@ge`2Fhgp9iJ}T z^Jjzzein#-_QgJaUtM_o`YW=X2?V>-P_f@DDwfmesu2VpOO~;I;)@OWcY}5 zJR(+->bD~>Qz4f=0Z(fhKg>gn_8e_yvt%v{o`h({znF_Y8(8r;5Y z9RKsu7?Xsc64_T<7>QX}jG9}lmX_HzHkvMr$##Y?H1b$~;CX;zOIbU0@vR=!YTNz$zwIWFW27=y-a-P~WQG6I%#MTysm zu_TeSU1M|1veL$}1WLy0w|3qj7iO1Aft#Oifv7HEoG*j+K^E&n)$nj`L##j`^T*Z$ zyyzkcGkh^5dyaSdOga{X*tT)YQswOe#@QLvWK`^xj2lNRrUReiPT$8W><27y$eTG{ z)?n^nsl}rXbWcwuO>S97EC<)0DRqrak)C|J{#ie!{pYgeS}(EK-M;);PU&V?e9@qw9GGMl8Iy_$}tOs|1=Z*KHtQgsYs_>`n>48T=p*l;eQgomwC|t)_&pr zigweD5*Lu|dC+-099qg59BmdrQyR4I6u5fb+DxBg^FYQlcgKS$N2r$s)TWj+hFpRv z6(s2Fe6FD&QfY=b)gh6hLf~$ifk(f(`d``xSt6?%)Ww)DIsa!}ccfo+wUgqZm zeof*%FHy<5Z?r*J^1CLHG{n)8!}jx4i?HsX5Og%nqrih|=IG6q8m}NQe$#rn1n*a; z&m$Fm{_VZL`#-e+#thY*R&&MCUfo7GD{gkGvEIzu94X%DN+-NF*)idJ2xbZ%Kil3m zfir=3y6?@hmW!)~-;#(w$0b#W3uU~D+e1^Z9; z*Gd1YjDDCCZ|3Ocx^TvOrp?1|ofOA;N5*GI7>|l|W%o0$pe;7n>qEFOc^1Zh%1+^E zAswv`^$u1~fAAy1TI~+J_?av)Gmr|s_wBG>mUBjS`r|330JV2{xLr8Y7JTSyFF*e$ zvs!Voe8Aq3=zahODM}HX+~_v;67hqdvRhp&M5}_gu9$@dvsxe_nYg)ofq04tissX6oV!iG$R}o*w?#>47X2^ zFX7?vzIihj39f`%^ATKJXo_X5hX;wK@Ck6iV;50n3Q32j!=rof0`W6Ff9nda#DYrO zovqRZvI>?r4gbb2JIac4C6rZydauupz&7v!3HmwTUQWR?8aKfjWg$lc0@V5N6npwXHz{CA>;% zd72qW(eCZijwx+KG(>sRs9tP`lu^#3j=v5!tm?Il!anJ&?aQgsikrt3%&XT>ES1w_ z|D`k8+D+0^sZpdi5$=cI;v6qsc3RPDz&-b^#^aI5&BeE8akY<2ms7?J^UZr~kyTtZ z&pXz?P_t)BjS>TnN8>4_T4kbEop`PJ41j4G8|=oy)* zS;T|NDOAe3z6EAthkXh9mHENl<9CL|%XQP)bN`{EqeHX9g?2oZv8bS6D`;A4>C1Mn zRO(}k=s!H2%`=vx`^zuK^=@g9UCwc%5&Y-rfp-H{g|P;&G=(E5Gr#^9#6KY}V0CnN z1-iCoA#K>r-Y(&)(}{D2O|1c@sfIE_9#?_Tv&xOM8$I-mMYo+o# zam4<^0qT&A_6Z>5^*Vam%|BzlW)yA{p;J>vN?jVh6&*GHel7m7YG{F;P1YE-p&ozo55W_%j~kj7>Yz;-`;?O|Pf-mP65c zCey&kTT=$l7Ss7q5N$ysX=1HQoR<97cPnP0>b?+${oK-ZD8#$;$)*2ttJeKJVGpu2 zVkiY%=7BX8pr@47B1X~bzUbu=F*X$0F77xAdvpQ<>Ru$H%vn4P7)Zq)5u>ZQyL12e z@q_>2?*RYbUTBk)=A_Xb9ir>B$#=Gnc47PmZh>nkTXsgEJ&<{91(YqksGYLX=(EyG)w>QKuZ)? zzzZaj{G1c%qKqYqM!ym4J}kuH(+2*KV;GtCZGjt!1E6j2pcI8ASgT>Y&XF9PsBd0( zAENLuB{7iO;6+&}bNlj1p^4smIX0}y>{f&M&^$#pHxp591-iJ|tV=}&6sp8} zOUt##jRGEZWT}RxLj{*j>UJFp!{}frF*2GeSwxo|1`>`bvvMf2G{%sJZ45t@ zCy8mR0iJIeACFaQyLitTP?r)KyT2_VNY7#H#t{*kj`67ZbnVFV|-v z_T9`2J*uQK>I^lM$VO75X-0(+hP=tfrDoMK@4div5P;>+(=)qIqI3BD5MWXp&i#5y z3=@9BT72qkCoEqILOf%wia7_oEX^Fcvd?{B`9D`D6_837bA~o~UFk~D!M=vhoz92j zM0^2$e_wy~dsgH7;H7!7Z+&uTS=4OD>OmfJv@%heXa6hG|A2~oPOJak;VN6}<^BDg zQhNRZi9-@(^06pyV!AvNW<|r{q4F%9*%QMgnxww`Atby!#QXP)WOhgb^qDO*n$ivX z*VBhDAmC8~I!A%&QeKZUTPj_wtz*^o~lXY>S zFr`zjnKDb)o&}a?>mre&Es|D2(`jXUVgDjn-PW_>#_P_-5f(p+k-}M9cUP+k-Hs~W zj4Jx|Zwg+byccTAww?W*Vw_>LSthR5PK|2RQG1r<6N$c<@68Jrp)X=M3@?f-pYRLv z$Ij_rH#?C&?T3fbPsR(xo4q?gxylHQfewwysHF8OUXfoQi2Wl z&i$yjnc={Ef@GC1deqL2V=7m^;FKoH$dCe!W2z%JOsf&c!;E`a-w)TFBbuEr$~bd> zlp^`}H1#(JQkAuJ+>OS!T56G8oO4~jBvje^6YX?xSH5L!pFuG0?<0YgmhBh@p82%- z`2)UEnZD%K3TpxdKqsXP)@3|ABO`s>ytivaQN!^j@7|$iv4yUDq2>6&5Ok)9E9q&i=S79@Bh9NMhc+ABd78^QJ#VFrv`&W zI&9tR1>oo*9+b|2o@}NHFX59%UORj-$hJPzPC1!^mPl`67*;!Lz7JTb7Ysa__O~D2 zA@q{$KOD0ckFLZa4FVRDr=a?~6b!j4IzrZDpgerC(rMXryHV>FtA!2ns-!?orc8>O zD2(X)7D?mUAjb-aa|u1h$$_OX{VrKGw44G}x#E>Fl8D5^D~ljv{Ha`gED0n*tavsp z6&l#r_jYwoF%x=ivG-zg`E))Yjf(8pU$GOynL1M*t<8w?N~tF?3fSWMTvagH&Z!062Z`Db)jO?I&7K&5Pgznh-cVP{$As<6V91$9OgH8XC_idbA}P+ z-A1=6%!p}jq3@WHpuGI#b&Uv0!#9p@wdz;e9HDWVAz4L`&hGXX=_Kf2i-t^kg4fWcqXPew(vdqGUWBS)pqwC;_dPI$$MM>;nXkb*x*G^q@}qg9m*Ni^Gs zD2}+y$eeyQ43Si!w8oP&clApB zo^;e<0-QypX=SaG&H_cnh%K|$5zV6dFHWj)!1#kU_r~F*J!5G+J06#dpPI9I!=~(% zk|orB=R+F4nVwbdqR1s6R-O*}t#1t`0i_g6&B$6xxq{%meJmbmIsV-=lDq2u`&7eZ zAfA;gJWCB9H$xmAh$OTK?us{a8by*$saet*@m>ZAJ) zbAm0zf%ktX=$F8dF5J+ZvLzSR2mO}j-!()_oif1n03+89UAiPf!McAcHW%Kq9XS^Q zEEg-SwkzqR(2@#Op|nc_D-TC9qZr0Xq|3vEDN??>>vdU^M3V$qe;j8_b3}xh@CXu< zMfBoFP71+_M6t6a@vnYQomB#0MhK}9%C8+K;J+GZhb~|8w@9hU(sZN6z<3O!bi+%B zvN%PifErDzA%vh;j7l4jmDrHgpM_Tyne7~d0l z)?Qf=4A4|KRcXS(%E((Brhy@S_U0L8zeN+qVLLmd)LZ!v5t4Z`be0Z@)KqD_(9REL zbb$=gBOiwxZ?$SiWGOpKMWVr>hU(M3be(^R#!ygr!fuU5ft-tMBqiDSy}hXmHf4hCf8|YbGl&(JOn-h zOP0veiL-|XQo8Ph|MqFX%Zn^f$v_c|%!Dc$BbxB6Dx4_)c>kC=e9)`L`a};|MDQN_ z`iMk1tx|ccjzUv$(9u<h zgAF3ijA}XpR{^MWmYN7A^`god5YJiZu$Q=Fu~yVtcz16#b~UA@qUM^u#(CVGYgkKX zz&^4j|L`)?`4aRhO6hl+vS!~R@hW|e6VH`(Tq5_+_4Wd>5|Jnh>7!->FUD}NtRS@p z?DvCR2OGeo+_0lo2}#6@G3%R~na)n|ugVQ(CT{qIlCiV|nX8rr6d@!VbA|~nI=jz8 z09n*lVFU;0j~jh`c6)$B7Df(TZtni@b-L5o*`FaooZ%c)(D`Y1e^4a7~GvW zg1*sRy1<%0^U`uTQ5iA?nN$th8OlGLGUoomb)TYJWs3P6sP?}!L}yi@1z4o~P3OTO z9Kl;@wVy9x{oxFvNv?&VCz^ygp&Ir3J)0`TAldc1Pk$cTnl;7|ssG}veV8nP)wm#VM1>m6b%Y!>~m zLN!SKK&P?u9J9l_b-VLW1IA)30mhgZ@*co+q(*cG_a}OH8(cSvD6uS#T|C3smYx0F?JLV7M?S5(jFW z@w-X%X8YQLMh@IPszx>}1Yr>4vz{k@j{jL2IX#1Id6Jb+`8BMve3>AOdSg z{`t+j;a>VoxWoU|v%e+r7#Gxld#MwytyFJv<2j4_FN+|76FL4L)VP&d0F26v@-69- z3V*F)m8b+;Cc-t8238wVsZf+ne?0fy&_xzkVcmAT^vLeLrhWfjiQhA7u0jPk@phj= zR^6Imj7z?eezfw4NWTAvnzIms7dhiH@J=k5_F&GcNeqfSrN6pPl2eXC3yPwjrPyJc z0=lj{s@f{Of+BfsErOH7@ZEcpVr76Zz4V~O=M#&gX{QV-_(*6GB2%&EqOlUw*>;2C z74(Gg1&D^-38x;9D>RrODdSR6QPnn59TIThK?aklX>)n{{suy?0D4WAOf4zBvI3l_ zgZ0f5940q_#wMUN%&cWoQyIN|?OS`DiYVKhFRYYaS|vsiSyVe*kJtIhR0>VyYHX#4 z*V-Yt;H=}A?ckmhdn!^24bWDNr9cfmqFe7W>il9|OdZ1@telupVe=(O2FJ{zLYcEt z9k5NH1v5xeGv9<0ro}+cN}XNfp;L-s=n z@i;j3RFOFrWUbbR0!$mj_0rHen-pIy(6RwSwMqR}DGWUf$;)q2^$GA5Dx4{vrBfX8 z;z<;Dy73@$c3(BJ49erST7>ke>g}eM_wkET(~Woi@c<;&%fniAE{hpne9P1oAR0j< zaOKZ#q${N~%?R0%ERzGU1mfg!)ecRcqyhflmzAyK*tLFv}I!i>YOnq}w9 zp7RRsrt?v9uHr4igPjf>6oN+I=7K&B+s-YLlFmizOHh%srTXJ(*OZR+c<+V#wf6E{ z&Sx~ku8B&%!B@Z(R;ZWT+PcKo8jU`y;QG@)XrH2ShTKw4!UFzuqhEO1N7pj{%Xfq^ zj7ufOoOS?I5c=eoZHooSO3t#ET%w6oT-1i%H%$0;XH+Jo9RG8%<4^wTS*4#hyUe46 zydozfs4*RUFUbr5j1=P_O{GP?B&SEX4Sap4zoy{yTP|tdV#a4)KIDQQYI$&Mul}5O zLF$ckDtz#(ew6-%qr`y_=B|%Uzmb&ZEfTW1VtcPZ6r#@?7~4~lN2iEnLGoygBT9Oc z#6Vg_7wi1laEiL~DsIk>b$>J?@l+3H5Vd-)x^_ zPAAFusDM<5(U)WtNl+iVq|EkWTsN}IdACRIDSs3Vphq8m)ZKi@IrwR{|J6f-2R~Te zg1HfFT529t29@mr>T;cxnDvg1bIoJx7ta!U$7Ru9BfpfDt!`LK zEk{;y!X@0OCIL;;v;`jt@p?w5D+gsTmK4K!2v~jx#d7}g;kHLGeu(iENkrkz^UD^% zflAL0{UL)rv?8i#w^Mck>66}ww>^_|37k7@b?Cl1?GO5l?w;T@Zx{ zA{N^9RgWhCfVsolTgaa2M?J_{L6}PXPB3iVm;SP^DU|YhwDSr`oCT}wtlL@ta6;Y` z^l;LmayZ4ByXVM+D2e|xDpfby!c7D?1~93Ez}gDcmF7YZ4SKMrwu#7srDzdjVYJ;k z`>+x`$9gKG`U;VJ)XUd@o#4h&Ghhx*xc^(Z=j9hAAyQ6taoQk~cmT_>;J};o6>rMY z-mSVus^WmYgfTejkswHQ*GoA_pG*9gP?DE|&%Mjl<0-ca9S~5EfSM4C00|kBtyu~S zwI1F2AO-;K0C7rm&KPJMQ{Rz4&R4~gSF7!$go?&c%7{u&p7Sj=aE;t?XZBDU0|wGV zKlb6rGfk1d@^i-OGi&DoNB)>)0P8OqQ+>Eu*b&bQ)k26)!FZl~F68A6@j9#*Cic1G zZ9JvB4EN{KlP4%si~{I{M+ilB!ao_GkvqGthR@|i&;-kx1zmcr+{lEAH#Vdy4w?7b zx!;HCBgWzdRll$P@J|=KsH`#L#U8}2fk0u?Z1@QYz9%zs9ct}f`U4eOoUS?4kYkmg z7RV$rD`vBxc15$Nj%fH_*X&voroyN!=oCF7M7cx$^e?GeIjxK)?!gm_dADz$(z9oH; zzkrO1WEt;+;*oi%eT<$8j0nkqi|536Im>~CW+`w~RyA>%NgT#c9pdU9uA{&sFX$tw z(y75?0>yWRWY@ba*tcD@_Ou~yBeb1booCIn35v!j07LoL;47P}IyXGP^xp<q?-Q^iFEQur|?{+D#dytK#ze5Eyo{ zebuy5#k4wt&szONy}nY%$J`PnWHA5?>C$R}R>1zH2O}qRJ#fyD+A2_Z(Yxt2@^U6X z@hD8#7sk6!Jjjqn86B9_S^lZLZaQiwOH2*8MtSx7l^;s( zLiFN;|0Rh|p-<5p;-h|7z=#%be`;Z5#Q1(Coj>6Jdvrmc{GUfxx%A$FejBU*>(>XK zg77z!`ejd0{faA_Cp##SW@e{ARBxyMw#5ZeWr9>BhGGuu1 z%L`NZnz6p61x;9&L%yW(GLFLvf9Opwd-RXzR!Q%U<$0n$rFOP5edxK_bJ6hgbIlo@ zOQS%>Z$}Y#j<<52>cP);ny7JRP(f)CNm&k}pbDQFMs&^hx8Ey`V3RGadir_H&Vo7; zAr>YYLK$|;wi-wd=0SNC5`P@2y(TChNx)QxlC4y=@NxYj$#gZa( zV&7ecG&VLidxp%nfQhCu`#VQ&9&{AsL}X7g#UYG!w5pUp)NMJS@dZS=gYMvsx|V$# zRAbE9JzO+1po#9%DGw%U3%9NDK4}Aht$L!a&ch6!$L6{y4CF6~BhqT@hDCocvFA_0?JFPPi=kS24P0!6|oH&?wm4J1t<_DTKQy!zit{7 z6s|eg<+%{b(x0RhFY;`Up029ol^rj;@Z#aW`Hu_GN)Hm|A)QKovM|O_O)n{*Smr(N zPi2Jz^No4)8Tn3f71GWe#%O{(H0@q=NJJ;BjE=DJ(G<;1%= z`ur*_O#(Izf)Pj$`w%{y#Kn_cVfQI6*cMKf^8>IB-$aH%F?^c2REt{x&V6k`nUBm0 zRo65ls**yV{dQQqWmnC=1$+%=PQF{YTV!aBn=}0rPX6Y84QG776m;q40DX9~Fw-#m zz}ZFvvs42UFlK_NFErj$YM2o*ej@-g2{7V9Js5HQ4uOdw-`G;#*L+nT#B#0PVSO=} zn+u|l`PJM{cN-3;(Ik7sxUJdAeW-6qP`BGX-^WIh!g8|Zf6$@#0*t>>raHHVO0pe9 z8FG2rezg=^UQN+VH{}rlCq<)E{6;hA^~_Ni%?2s&0t40N&Ae8FR^~naw(HW2%XXIO zsQbB$n$R?44)9dS+b8ubjc#M+%J#Ge8jOoIgorh-jTBcGIT|mzf9_K{Iif|}k14Eq zd%Y^$x9Xg)PK(u>@1Jhus;*pGjCK4oD!HAF^IeL77jPoTyyL@uzH+rdHv5EcLAslr z$eOPbKD0L3xKe=+O1LZ z8nTZiJV2pnBK@Z^sXE;<;7^#~S#w(7ay+v>BnagbTB`TG4(X8AiOns-WO1$D+7J%w zhfNPNT!uaCylN_mj#ruY?^!;i|M?Y|=iV)x*JocdGO31QRz2SwxSw00kylf3mz>-y zcQ9u2A1nu2(f5w2uaSclth-!D1mR-Ql>Mp*QN1yu(R3IX%Q*CpnHC(%(IiroQ93z; ztE=AglP^N=7c9*>?<Pg{lP2LPTzJp1F)KVkHoZWheHpZus>QKXk>s@?W}Odbk~6WTcs}yFGms z%T?9QRH2E+k=W5x8;XlnYIGZ-KDL7$l{~XbDv(8S&i9`g1+pKGm`>62Tz6N8Y%IEv9-E8m~ge#MvdU^^|@ii&9 zYg%o6L&cf5k-d{G#zogt(5eE>3Pjdq*xaIuj-d0okYIV<6-i}S$xyL=;*8(v{yLgj zb>-2q#l}ap#M0&uZ{gXu4#^vLYWU{3WfkZ~O#Mbksp;BXu%Tj;TRn9Vzp){Ws%WnC z{f`+1@jggXhrf}=9#!o~BM@p?m(1G;{f5u(pQ@7H*N2ahVZXvE&PCWD)KNG$zLoQF zE1bRV zkxm})8vAVY)WWq6dsrstD<`)>Sh)SpYJBgj?e=rf|C7wL2L%I!Ae+eSa`?@bmKH5w zH?W=ZFAWU1hKt`#+kw{mJt>hdYc{7~+iKS^GY%&r+{8z`ixjT-@W!SX(>T)5ZxD--GsY+Yy%0-Th@zKP+E z;=7VaMxJGs?DEU4&pA6yIXW(U$TJpvj_V=n@`i)omhH7wxgNTA|8qqv{ndE&k^AvH z&6`e)6Z9vW3X?Z;lBD-W#Dzbr!}m-@nu_DO^tIqT4vkgx+eaoy7WehogMBv}V~qDZ&)h2>L1xKxhjP7jMZ57^;Irw2 z>*XRTUISa+$qlYI#CSq_T4L+xHEbV!_-qh~)Bf~?%%lpQnc;8W=UyMx{!Ok8JYCp$ zQ;a!$+c`G(_-k#&4sr7IMWVBs_xg#ct$QMah#KphTDi$55#l>9E|K||oO$oNvjBtz zUEdQwT+2R7Bh99uQfEf}-=t`8-^tO{YdN+#&2uBFl-S!{b zh_TaO%a%8N3V0$7VSh?lM6aBqp~=^mcQo?uErRJ(3;iG6CKHE@pS=8sM6j4-w^S{Z z&>b=2u^c9s=1mcj`{GLYA4*ZnI(wbB$Zexblz=00o(AQ+AKvHIMPfdHE|Ab-gyLhh zEPxpeY}AMp$~&Z~#r3Gg&jxruEC z?|P2=Q_diUI;Lfl+F%o}kAgyDhVig>fRja=_begi^O^0%`Oj`!uL9~$J=7TkEgoR{x15B0dNIaVS{AG03ElN21`9WW@A0!FRPsw(=?xqP6Nv$! z2S&c>t05wYX2y7uQ1fk zVLV&2xEaqGBC!_k>JK=$*@dx{{&3UM)q_gyD9{k zJBoY%VgLL3v36#E+R;T7y71|JrOW<^-T3+KeY!*Xj1I(taTyn!U-?LcXM_ml^wR*4@5 zV>Yy~MVxKpSFXfhjor?PFUug}{hkX97N3Gak*2tqW6oGuerN`aaxiFIc~3@-2iemK z|MZpc9+4YL>Xc&PZWuH_rWN$UcW9aH)yFs|N@n{!HL{E2wnLn?$oK{Ow}{7AseQek zbG)kIGpXW(Pv27p>}=H>qwoTI*v!oJny%^6OkC;`!M) zjtSKz;XeEpd!TgX>OXj`R$;3}jJBTW*b-@(sPb9C%Nk9`d$!FlB4RH2z&5A_DvCY$ zWbp52)U{N&CjXSbG7bD^mG59P6500kZWiNZmq&<*rZgM@u6a=`QAGcEu$49L<(K7@ zL*#ik*?$3bw62~OPe{I5ACB+lSd@cP4=jXIwnP7`UI}Z34H=o`?+_l&cN+~Ic5>!Z z%)pMW$HcsD1^W?>4$}YZ=&C;R?Ay%vs?)y+ARiolzF4Bu6C(DzQ>CEM6;&D=7<{W+ z!4MF>owRgI+ptWWFDP=ehL3KBa^SG~hUukc*b8lZ{ zQ8=iiyQigjXQ3)M>iiGIN%(zEiV$y)4{#Vg@k|+A6v`CuZY5+SXP^iFZ~h4R9UIK< z08K%2EK=FkQ2x0>;2R%i*^XbjEPqcwx!;*R#|9=OTyd?d4Km)(%g2r{UnBCQNEsUk zGdPBAGx^=IuAG+)HF|wXjeZ~fPWe^N1bewr@cC_|d^p^F&RBdxXe!x7ZM>HqIOT*E zIEZ(BwC>87b9RH2M=Y0TZsnR-_w<3s_Qy61V#Kw|6UHbL zRLq^zHMIJdd~?XAtFF)N9DnROgf*>FXde>@bB|*j$*0xME$lBxx9%fwW!pJ^Fbm*T zef6h|W{*$#O}#MCOf9JeYS#(-U2f1;NTm@aj|SWKE-Rj^T~8TpU=EZR3}X&E|ygvpj*s(i-Fu zm%qGEX=(u$bcfMy^8Wzs!FittlCs))JcmYRc86PDD{hA|9XRrw6z48q2ATi-nHZq= z$*|J~tALiv^97nntiOYrkfz`r8jPvmhUpQeMY`TV)ZvfO%7`+1xB+Ryng#>y=;gbq zMR2^E3oky+!3-Hye$*8{#WDM2*_M5M@JU0I$3m@G04AokAO41FEox{zG26b2K_E6w zr&VXDgy6o_9;;J0qdXWAU`M*YZ?rl_^J0)cjpH=Ufc-w)4d>B1kA+6_`G)EDv|S@B zH}c)E;{Kl_MiXe87kfJz{{vb-z6BD6~Nik1J|3-9?L_?I9kz1z8dy2?(`=u+8z%vM6w*%ZT|E$^O4*wJ30klS!U0-vvo{xqX)3-~RRUE5=Z?9qS?_ zH8{7?)6XuAK(P54=HeUj0jb8ubUTTwL#gMlz&^>@^tFu@xz=iy7U7d_>JtwGOdCTD zw|fNo>vM5n?77jE^g88Rv+l2ZO!eMg?73!#W5jw}uZ=>eyq3D%^q#^^oV=9%a>5=A zUdq5N1auR*O@ip%g<0aQxTl!~<||c3{(7*=tJgD`+NpFIfJ4oms<} zGoE@%h6bZ#n`5tIvN%MM6)Cchdnsj^&)=k7vuSsW^83$wUMDi3qgpauB+~nFUtuc! zJ?^EL!JjH2*a)&o@$BqJg7ReoZ_`sSq9-Y+nBWtb(h;DZKE(S6iQ?4?UaC24#jax?jAU-aZ`^<8yn~J12`h|; zrLifL`U{~nxD%}Yew5KQ@(qlc02RPF6n%bZKeL8UG2zhcW*VS&jjmAvWSK~i#kc{` z^@=`ksVf$ppyHic92*r1M25co24;EO_+3?&NC-=}z=E+yvwuhn_-?%?SnN0qK3aPj zD5ne=iKH~j!0y~R^UwwJV&(Fo)3sDw_hR2(N1f%G6p0Ty&sai$d|k~nX=*#vIp=kU z$Hx4}UUt;y9c;Sj6iUDgtQU)%x@@F=kzIZ@uBelY%cz@lZk0+jq;^m_a!H#Ym3Yf2 z5d`ATL=|$%M)SOUJWsy2eGRLDD+bZOY=EVJG{~nZSqkN`2d07iS1PQ6{5C1K12;V+ z{5;?K`mmEIUp%(PSq|e+YT3R9iy3atb@pf6XB6!GJhXWl_Md9^k88G5$6X1~DgKl- zj|rD{ka#FoEnC*A6SuD?y`ee|bB?1Aa zU@gLgpYgz~I*1}PvYqF|;9Xr2z~pdYO<8FgZ-p_zFV?tr8S8n5lDcKza-iW4c4tS# zMwAkYq&UzzVPBF!3Y()2f2uH?Vm;|bHshmu)~&-h)bvxcx6h_}%racK`dz`!+mGUR zyyS(y7E?U33~MS*x*0D2+%iF)GTPF{%J5=NKbGUyW$q_5IzYd{+xpg&C)ZZQVUg@q zWE%ge7+1b%o{~4XTEXaFboQYj>K-xJ0x2ah>uVS^-T>8F5DjTFx+CRVD+#^#|U2RymGa>OQ}da#e;!OKgPShh!z@03MDowzw9rXb+c9I z`k0ifj4IBpro%nUOkBtu`~6!$5o1IcqGt3(r)|Iw{4yKgs$_mb4h*ZE6keUF{PDFe zj2c;&31eC+Twk!#8g6XsXFQt3mQX~0f`}x7pZvkzZ|y0L}fo*sp?VPt_E z`zD+j!;|2~JL~-K@tM;v!q2gpOGWJLejZIww&U-FxTDE4;$L)bY5Bnya2PS$`w1 zvS3y@F@0ytwuvN)~p%Gg2-*_l^<3 zdv6p>=ZovbAYA?y&@Valo5M%^*TeC!og`tPQ@(atA7)h@mhV=aJREje8}YiwMvV}W zT$l*eqdJcWvXkmL&9FpUHSRdZV2bFOQUpbWngT5gW&t2{qEaKRrAVGh2t~eB%3?8rM?0 z8U^eQJD%04jyJy!UH{E|4>>(Nt8@Hv*(2Q3>({kc0_6yQsA-JJG(RKo7KXVqgDR*)r& zjpQ3S1;Z2}B*-L^DnPL&0{dYMglPD5s120mBhDAb^?fXXg>`oQ9mVnA%_gDX)c|#E z=~Xwj(w=@1BWqU5;2*>Xm5Zpv7Wyf?!Wv;FZyHtAFST_76;~M@A#a{?&yW_%P)G#` zN=Ed)gL%Zn8e0!02-+$MWtHPXqlc-ccd3q7y}wI_YcUtS3JrdpNL-=qiMmKf6Rz|u zaAwU_Rbk10Cc9u>DSq)xdyTV(v!DZ)0~kpP>^a}-nft#=a~VX?0wtxXJ>L1asp8EF z$H&w6i8{Kh)^9E13LNxW!r@gf7nEmL>VOLu_`ER){aEB-6bx`vBVws3rhk=qY#XRY z#(D230z5`5tjq2X?wmVm_&2T^-KxAlk%#7rNKSdWunqa|Os?soLW29E4@}tR9o_-&>Qz z(|LbHWbg-z?Q!xPQl_4LmI?mz2Rky)TuY^xYVE~1HELL|gRJLfN!tHrI}g!A3Y5T! zfrE15h9R)BUZ7)+c#@aR{`FA|P9kC8Ai8*aB&FAfn#~#=_uIeOUaQ`jG5R|kpssN1 zJ_T-(&UL~RbY>Q=w3<&;qI>Ar=X4@=ONI(@P3MW#U&iXr-7m5lG_IEyOd8N)Ffl&{ z)iVcrn1!6*Hltrt(QAYW+T5h*x1+T3GHu8cv}^KH%S_#?@^d*jfiHz4pZ3nPjt$3b zB@z1dhKT7sFZ+Eu^WJG@@9Jek?C(s#ZTMhuj|v$!YTT~;ed^lmzE?QtF^+@6sF|zF zN5Fd!TrjTXmD`FgZkU@1Dxeiqaf%TA%H_kF?ednS{upy!Job-$*ryd9s)bFF*#=|p zL@?cpJ6AK)gI<;|C4d*0NxQ^EQ{TdGn_^K2+#TkeQ4}0zi{HHv&`EzC4q|FiA@9yv zc!_`g!0BKppKcT-dxfJ+_nBiqyOXebdge!l9b3<5?Y28MzR4Wah)}))t9rSyIxf?Z zeEKS_XZQtu`c`ihr4-_ZwBSZb%)aBglkm4V$c z?_x%q7#-slcX+4W-#zK2Al zQtk#n4F9}r`6F~GLB6J&L)`e!p$F#Em)9oSu76HFy@a(_V?$D5w=DUn=>x_Z?@ie> zm8A9K;aMk$ar(p?QJuhEm@l=grHf}8Aw8&Pl{uuo0mEa^ zW_j_e>f3~@!8wzSsi#oXiTPuoi9WBFYH^d(G1PgV`>#vXN$`5pMRx$%VNRVKiw+ZB zMzVAM$|)>2{p`Md`aBnLnn##V$#qGNYm!rH2khE}k=laEiin4xfrCa8i-t*kia~uB z*8Mab)aTqr=7PPpc$CMhzA2qyYNO9Ip28lg+{K%5j|J2?k8>b+MRHSnBP6To%JtWA z?D8gRF%vsAqBPs}o_+0phJsTOX+0;_(NbVWopJP3jK`xQb`mMB{Gbu5BKPN68wN?q!ufiabb;8iii@e4J)h9<;a~_Ugw^t^@1Cz*jRGqK( z>2T6@duM+pOU-e~YT9`tg{IMx9+~-cE@;SvCKb61l#ETsqKN%>ApEm9Y1!prA>^_r zmyfSiu>103j8T)?RvWsEBr=IQfeph?7tgaxnyXECfMOJ|h@~?_MeU8>pip|3PR1Tt zL0qhaZjHl%EwOVf?oJY6j|%&dQ1MO_3UvEGl~cmy1XJqp0tSD{C1+`F61f>LPGTYu zJ0@W5l5@tDyE#k8U~?T&J~IO*HwBf0{2=Mv0Xyz_MvTA(9u?L$|E>2l4tS4^tOqrz zI8Co2^1jUGng|Aqg`!YeGgNgVB2CSu+t)_Gq4YD4&Tassrb$vR``GXXnpi_2=5`@- zvLy>HQ>1Z5Mgfj$Kw_X|Dx*q)4h@cw2%i-HoP#dhBhSt;@S8kNR` zSUO{398{Bn^+(^A#DCvku@<&8C3TL)R~(&c7P-}g8obXq4VS1|<##*Tbn`g&SyRz4 z3@$O{r~BO)*@h4?f?HKq(fICeRBd+eLz~AsTbxH>K+Uha>>!VdW}4@d-*-A7b2WNl!M3$s25c9knC#~L^B$G_-Cj@t|wFK63N?mE?4+(NF$&O6xS zs#Z2Hwz=0lSM}GZ1jG(!g6g-2?tGZ@QoCC?(}UJ(4u`SUIPNXBH#`<`^s;lW=VUd7 zJ*lu3ro`sdTOh=5-~YHi%$YxR3c__^M0nZ1oNG(M|Fgw^H6T{dLy;l$z9zQwkph{{ zf?k`So}T#rya^sy=C^W)KWZi$S|?j8UW~%3Y!&5swXpYb5i4%g{#Gnb2WyanSo4l$ z8`FDmvnh|)@jkuLj6tZ4VnHK`B);@pN#nbrFoT;nCj}ck41a{%3&~i$3}{I8Plw0mL8+V%lE8kiDXK zxHeP9Y2faWYC(S}00o+2O@ruUSBwZz^52d4mpoxlW55W@!JjzJ3Ecu(<*~GD0a5gd znBfOqPg}^H^NSc`VyUeA66VJujVpc}7@7M|(D7kyDIXEm$*I?SE5Fj~UkB!TGC0Q| zlNXF4Zx0^Hw>hk~c!VR-@Yu#i`ByrBeyoTQexO<)7a3hoP9qDZ{VfSYhn)~7T4~iE zUqKu2@NCL5Pv+woqhgIqD$&7@*+eWx>^^=a!$jwZ_RUDsYEX6q>90x- zvJk|JN~x!k*sJYwdmb8sv@1rWwn!Qzsf*L6NiK4bH-$a4Z}~!y4KECKXA6~}kEXX= z1vQBl*V{KQKFB>ZUj7c03vw0~95Dph)4$~ppI)X+?pqo!FI2t1x!di(3N6V>T1(~R zP|O_Z*xb)rc?47(>v|mYnBU*5U-nwu$2YhH>D~wiNd=BCqNN?*C|C{#iT6Pwrf@Wt!iFa#PW=s%4_%A5hOK}#>WBtFi`F!raeTwVe_I#1ikq0sPR(PC z4&=JoE8dM9yA@AfIZ2^v=?t%55FGR|Q-NFWbvW8`B&5V?DVm)aBFqtL%)HJ>g*ip!eet$F1SDhINU7d4-E- z95KhU3QD#VUzlc49|PoiP9#y4hZ`>>ZK$#xcT)YgY6^uZ*tB2Wt`nPzq?+Em0*3Jy zKm8~Q_*smM6G7kP&0kMi&5Z{jZ4t7P1N%-$rv|}#HS}{(U)@5vbVeklF5<%K+?RJ2Iv5|CR-)Nxn$Ihsx9rYiT z#qa+qH;VNc8wKO3s zJajRPD(n34jLz{W%HZN~9yLhu6qfRFedJ@P%wR;MHhBPFLFgf!xwhbszD(#t1U^`gi2St2wNqop;9$A1SG_!NKzH79;MXh+B zUOcZ^7*16q6R};sE(rU-ZBpSSf%d|6pOrv=YXgeP0Xg<~N917mrIn-LaG&^3+KPiP>kzVOxg@@z$xS!gkfO^gd;US~ zat3`8(<32Vg|L4q*S@c_wQD9}DC0Fc=kc4df0*<~dF z>~k!Kz1b@=$zeIup?$SM((g?rurvmh-Q^;^xc*n3Rs_2EE&B9AxUKBq57D^br34YPehy6$H5mWu+0JN4w5MCVhcb8e36i=%+$FKeY=gSvmCKiscq<4H(5)lnJXHnM0ue) zxx^3W-Qt@g!D0#LdmcC+$yNv6uk0%Qwcmj+nwe+Q*$g3O7Wn?4ln>=V7 ziGS4{2N5|Gk58zJlzDU%UCNe-Bg#we+e?aiU@QZf7sm=_eUl()c8+C>I6jB zevv=}82DO%NQyfV4Q3(c4Snc3h5&63%mio0vO z7K^?y+7;y5)tA`&83Ro0a5z28VJ5z@4mi7Qk!f*EH!EujjMCeqK2x+x4fu zMX;9+JKl_5ous0f>|p`BXC$^xvh8aM3bl?=GB!wi91x+J-sRPAH?Lu`3T@MT)K=0S6!Wb~LTJHt`w& z2uJz2)5Y%xtB8gD=hRNTxn=J_dNAm^@;&+HgQv3Y;6(TbOUz4H+4z^j)VeneX8#$W z%*IThEvtA6g3pi?4E&}Yd5FeKuorS1bV?`(Sz_uoOiteMmI=uRkRCv~G$LiYe3@IF zhnCmdp`bQW9l$V;SI4pLP4cK=Zs(K-*|$mm^Uc0(>}gF5>{x8pI5xXsiEPriPHxI9 z(irrH4judS3R^>HS;wnt-G+K0ZJ*leNB#wkCR4DS z3p$iFk^&awP1(ixW^md=U>|$2KMSTWsO>m3LrkHPadmye7mkxl=ix(=b2&VSJRhKt zAEHsc4D3@Mp4FN#IlBv&LQ@@@%}sT5qw2fH>)8x}<=le@f_~#ojlr=ssu%$~gn$Yl z`ZbQ$y;|sj;8foZ^kAze@~01Kq6a{#BL-@^XJPFobN_HQz74*JH$x@VBq~gqAftrh z(OluiP|1SLH!v#VF+vxPfxi!r{`d>8dwC+HeVZ>n*aju&)w&=}^@j*0k{qOzp z#sa6JT#o~@vfHA(QnvJGX4mN{Xoi9_x#PsHZXVHuD1}!xkwfIvjFLD5_%CnrmDMmQ z&aNK2@t9u~NcUD7`~4uP#n^aHpoB`{NO#%#m7c2GfHI^94k@%c{c5;4MK6TU@)tF{ z*~_-i+d|?ODT}mxfW-su3-kw<{$<;N9^(7#K9XZ>p{27nNSm}di$$Ca?!rSD>VWdO zi+>P*+g8xqhYcn#;7|dandtlSZ!wu5(3fdVECRzLaA;@|t>zy+WRI@DaYel}a;cI~ z6V?DI4%Vt98yMu3s*?P%7sS;5f=e%qE)ktzMP<0CH3m%DM#+Fsqn&H@QrW;MbC0u3 z9>q69?wMYV>7BYAMJ42%&hdIK3%0rO2m6e+uhqE8)wn^V-C0EPJ3|tp(0VEhdzG$i zP%=V;}2UwdHNi@GXmg&r$b52aJuA{P0rqMF~-|27jr~IEQ0y5pH*YhJU zJ{{bc*9F*bz{=!{7cbMW7WUF9%x}3W(0ii&L*AjgviWzccZQ`^l2gFvKN8;bX7l4f z-h4Ck}1CQUkDk|nJA|c_MN_JC|o4~IhZI`S93!z1mwHI`e<){<3B<=OgH3TOLTW;tK^&2|rzN_E$-^NoS7jo}GL}G>mHa z6_YRNy6HDe!fteb&fN^iV&p2 zWXpJD@HcH^5+T#Q!fGT^mY%w9ELX3(wwl>`%CCmHrTnVho9Wx{*pf-&<tFh;e~3~eN?Ffs-*+S7Yi;HC9be_pC(5f}&j zlD#WN9uv^or!@Ss)>Q)6*B(q)zcEHd8Hc2`4+SzbrB(dh;*?)@I3*O0t?udBw75-D zp#$rEtcXJ?zPklYLsO`Ss}SPZaU62WpwKPnB)m8#X+aHClfN7Q57pL!HkA{qINAQ$H5sr8rJ2WfkR;wMMwFY#bex~ME|bIabfFMw=r;PzW5RY%_IdE& zDx&xj&MUMDBr?LC0Tkua?z<<6R&;3MD6xk?gx1~}(7 zef%bo#8BSGCGYZ$f#;jXrn5VqZ6a}{4$xvNOy#jqEvAIx1el2DfR1l;I8xgB;v|UN zZ?Qw%5Hl!VMYW=Ou zU>G=`0}Xv(7^hCipUVjNpkQV_v*uoavP&lomK#){h}Dx?@G!$?VEq;FTgwAKcb;bE1iIOvy_SnEdfFa3p;nIX$$_;|FA*{c(Oqv`jh`3DPBg_K?Wu7Z6l@%zD z?v+ijmqlEB?hH2wsh;#*cPG&OQ6M)JvzubPrR^bIT@RMlLo)#~d(^j>xd7h1ZwlAs zY&k@wPI;>Cok~K%wzdr-dTLPYwB%4w7IY}u?uXrsW{Knn&;qy#Un{HLsy|%gLB<$9 z?~&Fm7X0vg&b){{Q=nUZitD&1bJwd?mNK!BhSbPk*Ssp)&?SqWXeD@Z@hNWL(R$8m z|EJI2?F`ids044)7qW!Z4JPoDHfEo!`2xRpyU*Apb91daOjx6uq&AC6ZnHnDlP1pB zAJg8!0oGZ_{KAM|rQc+BFBR#x#l|dk_*UY7#ze?s^x*KgOqqiH)h1mhSL?dAyVr69 zVN=f})&Objl@p;CxAx-g>yBXRy|A3as)UC`X7?ju$|}B=B;uCt%HSs;E~de4KMWec zU>VYzu&;n7=fD^PVvBakgV9f8(-(X=)JvykhRi>kvGOZ%w`CFaL^Ob?Z(A>2I1aL2 z%VLA{0(b-ctem-@Q1`FNe=^VA*k>of>h)C#Xm+!~E6@+xuJnF_gcZ&SAFpo|h68*7 zmh@ElfkGpqZ2Xh#J!CGJyz_zWV%=k(TEGESp_6)1Iyo5C?8Ta?HI-Uas}qrq0qxRS zXt3+Qd(FGvO0by41&ONXGCizsU{tBj4w=Obl#v|7MhJ+g+s&ba^bZgK*uRZJat=vU zqtTl0{BbeECn)c_(YLJdUTC1CU$i)4?x&yy-%J03vHTw1Y6}e6IJ)tYfzrz8gJc&{ z-5^IybV<>?P4gfOQid#Cdn%7 z%D)w&H#=I6h)f~xlJwNdDD`4E<^3bycjN^l$MTG^3(JiU5A^tpn;iRlQ@FsjRe zf^0%|kN*SH`k_MbMZ$(uhio$;$i}%YV7ZOi&3tSuNF?4`F=Es<-jGwnHOK(7{&r^? zM`(gl&>#jVT*ClF0S38UxOw4ZrWR+eYHUKlucC^G5{w`!?M!h7T>I9VVHy|Qw2wuZ%u0mjswqS&k2d>zuGia%*w`Ea;b_5S4t7` zO1QZs6g}KfXoCB_DN&Tb# zDmAdF*&9+?N>sb_-R;zXKTWT9X%o$DWiC|nHsJpe^%YQYgv-)_K!OE#XK{CzAPWR% zaVNODySux4ke~sA26va>5?q73!#}z2z5CBu&Vk+8*;&r?eBD*m)vC#j0+I`{cE3Gc z5N%Ev&;L%Jyk?$R7paDH==xxmOqTitNDaeH?8##mxIGSVf) z0f%UltWS-jv6$nZ07s?C9fp5Odybz@?Yw5XYN-JI;RxJQN(!d)hmL`n%esJ0`tOfF za+4kfQp!LLY^XPH9Qscw-QXI#YVCD=L**KRt_-kUMwf@#;!y<-358SI6=ippbHKf$ zxTMvvsQf&mvLCo)y?ncpf=paXzTH&)PqIr27v|JhwN>D!HPUm|n4oWuW3xv$&-2H* zLuIF+BFjQ^N}gR%GT05_C$o7-e%PGC^^YAp96$iiHCD=xf)bE%W$~s0Wv}rhx<3t7 zd6MJ2tEJ&NXqYN{wlS@{ZJob7mdHFdh}5e2#P?I@ip;f+C9YUsQ*nA5rtpaewikJ3aiFfIX{M6z`gxz+xy=(DF%x$0PiHbE;@%Wn6+B{Ace`MvPeIUN z?r{l6>*UO`$AQ(!SZ5KI|DKoH`Iq|lf)$zdHY@%Lb}OhNQ^kgA`>gc zARFNeQGxzEk+hdMBmbub2rq&YpGjPZ-`#15TfCiqlTHLA}HOTY1r(a5AW&vR%j#%~XI zqvclf9Lr9}xcQH|q^umV{lvw$B?Mq5ci@sSEsOReZdBl%!KAgYTg)HQsEelP29V(X z1iGvo=dq+v3IhPjz{3ahOwDU-0I&KAEOtgpEJ*JZ-|40f4YQ%Mpo_PiJpNmeGDkFv zj0{4nYe~&6hATq|`jdO$sAH8ez{5jq^^7?opEPHeIXwYRW+igGX5^N4t+ie(jRJ}G zd!m!}L}3+E5J5knP1LrIo6tI%iI7iAgq3(LZRYm&djYc8#VkyX05Q!1 zzX=G5aV=*;+(M^jwoUpn5jJjIMZ8d)X_p&moY!ZpVjR*Vj zQ!wi^*$Nu8tIZlu)(FH|k1!6SJV(h`TvUycLRB;|=?q?s8DwA7ThS#oybxMPMZO@d zCzA-n+Sk{I2KEJG&SFQRXv(L?H|)3w<5#fYU|@u?CXir+TtI55>4zN?L1YPSrjF)D zg`}EHv0J@*h{9@=#&Qygyv8j%9!8`67w{FU!;!&;6i)>1XqyRxJ8+R?MYwDZxEQTr zgowc1W|LfbS?wE+Ibcx21~q7Ka;1Cy@}PvU5I57ovM#X_Lv`&obCVSF^Lbo!S!hn8 zVtKe#?5&N^CJ6U>>gIX+CPTI%jB^r4^Kl>O?-E9gdwrQsX>B&8l@YSos??V=TL-1) zZgpUtdIxiU_6YZg0djbruY1epopyMmuh%3R&Swa%0~X`%i+raq#5te!B&>+-rLS*3 ziFTwk^5fLqGpE&GlcfDP0Q}Av_&9yYK6|=S%G5}e$MczdbfmJmV=z6`XE5k*k8*c@ zfd?tJ01BLpIRS60+zvD1ZznNHaAsJ`4{KNSnyx;?_V$l5$wTaRA_ONW4BHiV%%wh? zMb7-f20}7#j(Cg>6p$;TQTGGnjSvt@l>fZN|F(JdKoHG1b$odrMoW!2IKJ-G4P}0C zh_+iHTx>}Sa9blQQ;X2yhF8V=AR#mA0Jhz7ykO#Xo9zE33Wb&L8W zlyDXo@>69LlFShd^iXd`?D9WXlgl(HeboYaR0YkH>kcHZaZII2pA-dPL zt0Vx_Z9V!m)&zJ`aSHRXH$Fx+ET$pVS5JCC6o7}RjqGz$ep)}~6|mX;5_$@{Rtd9U zy{WA|XO%Odk)1#!uueNIm*HfDXAH;)9r%QoG_U2-?}!_dgV9=HOIJZ(GKbYVkS)t5 zIWaY(4q>jL10-vv+8yf z%T~ANl0ZC5r7g^0?I=i*1GaVKHE;+p_qe851jW`v(VtKRskY7AN@9Cf1zbBN*F(ud z-HOS-0A36B@|^O9=>E!vKd^r|>ispec~ipXnkapV6(CX|M*5h6cxvcNoNe~&V7VcI zcP0NMlk2nC>fn zqZ$v}CO`LxTHj1)WjbmjbJ>J*=W7H8{+=TOaG%k3qLaDtxlr-*nH_d_nUjrURW4WTu%R||$&w0Sug&|#U)^ZaOOam0;x+`^N2r(f=tdZfmq!MPb zZ0OkRcOcms-ECTntQ;Du6U7V(_7%36v;}FJ-Up#1o_&&_w}8^368rPhLiY83Fyr!~ z0{Dre#;W3o2{23$tf?l4-eTz^!6WhFqGP+s?RP~^y>D4H1W()zYO0lh!~tMV zmo`ThjeH5CCd2IKuRm@=jLvl~VsW1Uu@OC1)0R)6YepCYXyol& z2?W%XW0s>C${b7`1py^lmt`e^mLpOrOw?P#lW-jbiid7Vji!x|<8Yt)p2y`IrSUsbt+PfsIBKft*h#C5BW;;r%!<%TnqXq*0 z3XFr(os1n6?UU1H$~y$soqiFXZYJv>3Zyy&iURaZ=`Y2ZVcITdf>%?1+4N+<@UEoL z*8Sdc@ws-dv--(tA+Iy1TQ@&Hd>gAMj+!yDqX>T04KR%S(D?+q{8DemMUpq_YpMaKuJ>CUg1RL%+zAJ*~_R66g1Gxi3G@Hk7Jfua~MAMD^q=_3{lGUhGH)+Yd zg=$i@vpxJbS=8SjSqMLsfKAASZ|S_)Hq!s<(bZMOl0?0+&Lyn({T-I3+a%vLNj8#x zS^a5l!_TcB+q=Zl-Kc`hcUSi}y3Xq}@LmdhCUZTc&@aqF3hRUe;}fGaT9^KbBb=4_4HXnTYqcy%7N*oPF}@yDIdWzAncs{Xvcd+(V+t~n|S>81y+mp-a>%P@OngEWw$z?7Xd@*o8I#LD*T z-zkw2WMVKYJBOYNW&eacg{nz;XI@t=ybV8^odsX+_E!$B->sHdyKb?pPRB%sBJZR` z88K-Xbfq1Z*xIBswgHn~Yh0QV5lo4ll@&C~2teY=#{o7m4xSeDO2@+$o>u|W;#tB< zf$hw}cGln~1ieXjJdn5S^R4=Nm z2on%gJvlA&HSCaDN*+_QnpUTTmeAP;xkc|!OQ23QZKWbsIb=*^(rB>;hgV*-o}pG$ zxmi}O=TVSb*Cg#ksTxBPRTWhO*l`LIdkCGMF>IQ2C;wW*CvSl<>^q+YVtlaeNCYU!;P(elU~)vYKKGqi1*le3Rnw$Qr>bJ7n4-^sGxD#Y zHH&z_ZsrJ9W)EYDd=`iuLxRv*(3PLqj+Yql-@?|iH0qse9l*+rq@j4}AzRo_OI21k zDh3IwVb&J@8`;_(J8Ju{qs5HvS2{Px7Z5#1N{Z)Y5gfFnU>@+TYZ%hHJuMO8jKNUM zp-qHoK7i6?@E3<@xDWIff3nD(ViX~(Fo$TOewP`^5*_bghiI3C#_n*6z5<^{9#@xe zQUuIYJj_%A;}sVQT?zycg{tuQ@K9!YFmq*rvGJHVT}v^aw0uv+ql%>HvtxJ}91U*- zO(Y9WIfs5uG2el~Cyz1@yn5Z@DFf0&X!+qmX8!vW)Fn(v9eQ}Yb|nT6*?fK&=Yau7 zg)#Q`ozw$3bd7B$UrLG}qRExfiAnL!38JM?{+tJ!DbQnTDPy2d^{SMyAi7>;UtWq! zqvY)1#3aRf^iS%>@h*od9WAJoP)o^*S8Rz?RIJ34{$-J6ym&NeZKoHSbp5v(pg9**kt+ijR@4|GM1^lG5UC{T7V^;s%VBVgi_Bt(@ z4ePFYNjlE1nKg}p*qjbLs>3#G1VoSI{y3ZEnaYTp{lRIqfR$$cJUM@trt6t1xlnCv zWD;Jmxl}EkaB62`a;4t75mV}Z{u*=46E+n34p2q|4k}mIg!*?xggpkFo-*%k*pMa# zy-U5Jzd=_e|J!6jLw846wY69>wZpf=hkGUQ))yoXo_4UCl5~H<)ql?@wpsuUu%-k+ zjg?3&SO1C)9Zh5RdB&yoZNRVsJd=zud5sL2H2kM$qo)-qn(WDf48SJmFb24wzkFI^ z??Z}5X_)kSE>2c>8+{1s4D$C7Ihge2pE5Z)fat&JBNgL!Q~G;0n42!Ff(eFHKEwo- z4RPpnWN%%L0`q;QEHJKpI@5|)^ zQu3XT8ju%;pHR*gbe)<*Z0ImNGY-0peD8mbpu3sLso~*wmMuQ7C$UGv8vF^iR)P&6 zK#EysFkU+Id@eL}>bl7&D~cD$0m7L|xl}3@knZR&F-@k>WuFJNwqjEs-g&>el#Cpu z_JWB*ZnO(&yoKx>wFmO0gz6W4gc8xjZGlckW@GaN%FDzd+m+pry8hepaj+uE3rIK% zbhVT{Y*zO{E;0DsH81g`ociLKr;7`tJaE#_->fg{BgetG^W$t@Q4ALumEC?r863mt zku>&QHxK)V2)}GSuM#HvyBFldlG?NmHRKA0FXmOs+2eN_8>mQ{8 z-qfP>6eTaEcRwukN({t9w;bO?(7q!rCnIYlBQKYEL~LPENkj!M6&9KzL`Rrp*S>3q z6tvLGl;}#L8tmoJ6~C8SJ64JT_L5cutyCA_q8l0DSq+ib3m5G!6M80z9)!sfl`Han zRrVb$a1Rl=K)?{erqMH{V$!qC$VX4K;x^aJ5#thXi=4cMME!;$Xu`}Mp+1C`)73Oq z1yzF0FwKj<0h^BdHM4gX`CzA@Tc8qi)~oybxb|~B%Bgci?L(JV&6R1nJI<+k42_Ol z7j-DfrWs|#*z5E9r4`Uxb_^hvw-PY6;KXpjD z=QpP?M)X8|^xYTH!ZRI3nLrJ+XWC)n<9{c8O_Isz7V-LGMyq=I&55;(<>?k>JhP8? zQNizB)soio3!m=j$~#=XW$q}J@dD>EyV$E~%@^vdrDuJ$-U2!6<}+4LQsLe4DosH<6kd3C<*x}1*k~_+X$stZBdYp7k|LEA`yYn<02~+3JJ)b zaMcoa-9gcr$Yn_hn2Lu=IV&5wl}L#Rm<0YELZd<^?7}DNCngf-lFL4{h&1?O;J_b~ zlLp~)gn=Z6LrJNkVTSM^T$HQQk@w0H@dcMz(6k6hh`qPulCkZE{^^a5+?|t=!3k4P zd4xO87@iod{#}uX$jEeqNB&Suf#frrR)N1B4JpBgLI!eabU4wiw(9aP<&lECQXcj! zSh3^pdw2#SjKV>Id^$Q2P~5TKXL~s3MzIuO1JuL|Ra0BKXEjX92%TZ;3}23!Y*Hzg zjU(t?Qle>Ch(ZbPeAXP>TAOj$3cpl( z|2|x6F?kWiSrRpe9~KH{G0c>F84B#uqvpK>M1;MzK0iZ3>cABsr=sr;IR&*E33$lR zx4guIJ|uRp-0$BdFE83RRI{N;9J>j)0wYJ4nLZwUWBfUUURBo@Bk>!XPc?+>^Ujam zbNUsNxNX*h$v0TACaQVWADlERgc2H-ElEPa8^v`JRoR?)nnvm;Ejr+(4?O5OLN-ai zEjZq%?AEQ^?%lXsghN-=jX`Vj-DnmuIE*3M8|DE*bD>h9Wzms-NzO=lUi^uE4OBKv z7#*aU#|Y9Lpucn`xe@sRN}Lu=OW#}~Fy7$vmo;`4FF!}2G6}R^k)iwkwk6U~nsE4b zxOD^?k|uaMvey(ShUc%2{mDbjTr|$<$qGElkBrii3?;}~Ww3ad;jlr+pqyu=q`&Ye zkm|x+EQC?nYwVOu_^eCTtnaF3K5U z6v+^!1SLBUH8}8{B}9atLS82kl)K6tMT!s}8U8I&qlhU*^Pp zud{2Y8;_*0rYVf%bwktB3~cVrHX=KOS@4bia8{U~}4iWzW*{4m^EYsNXD5YxFk5)gm$O6%^-rv79jG`=sgr;aZ2S)MWL zqw^pa92v&MK;`dW;l{)?v(JDH{J)h&u+XMaI}*`R%cE*wLvYa-xo+=yB!C9sk|aAj z$w?eka4nVA?{M$D!|nI(DF`XkkS!L9OCRqF>4Vnr!tih3BNh*l;1a>Mo1)lyKAbay zaqPb5q{?9^dFo^;w$mW3>W)xrD|#)itYBG8FbqVP8Iv_qJk-<8;XDLKDPUe;!+e}l zT%wHsj=}$s#n5ZcwCj%dFRaR6;b;x?74B738wPp_xo!J9@C1!71l!a%eivEk_D&neeFNG^o^_ zq4G~0&gbSR&05xR$S^VY#IaO(({*3q??aj`{&@K3#@E95;q8 z1D5aAIoLXzjLHCuMx>7cA%h zG~nwo%!$6|v-UGM;%(MXald`i#_M=9X!Ub@pR?|PKq8yc7rrZDoF;NA{kLmU7(`{b|jG zX5Px0eLJan1@R9G&W*8oF_7TU*i}Hj0OnKWig7rCy09S?{1Qn z_x8$?e3m!P>r8{TbJICon2Jp@Z(n8G8dzarZFz7h7(KKJfp?6sd@gLf>T-&LUp)YFx~oSsECl#M=~T+))j{Pck$;=PSSHp{*?^|7UC8`EBlbt@cOk2 zbdiyH$CMw)kCNhFRylC!*sPF%&y)kh0NO=&+^sRE+O0#QUTNLkiOOzi-D329!YgRk zCFD0Qqq&g$&-4g7R_2wHX7WC_MHzIHlNxQl9~KH9`i2`(`^FB-EF@XyXbc(PYLCo` zUwjP{tyE$Rfs-PqLS9Xw84x;I&SEv4BrQq zs^<;hyMKSA`+FcMwrUs9vuwDNS$QEo-Ux+O?*`r z+YILF6NzTu-EJYPvNDXO`sBt2{yi}h$_h0bDC=4)-zX28BG0MO`nMn3MXCb0rsjl0jdMMizGG}! z`(NstW4QdkMixN%ql<}A=6_k);&S$!)WvPOvp8)(s<<9P`FeIw7Ps1wFuuOro%#8M zx0Frm%q#uW^y}M#AAomwlnh3LL_IC8FVZ#{{#C2oYJy1+tNMNEbUi=T4CT3db>hE>zutV z-hmiWT|vmDLS-pms%#K$fTO`aTB!FBJRYG=g}21%rvui;iU95b1adi6E-AB$D51~s z3k+d7sl9rGzi32_b5Jr(fY$-fdEoU=s;CD}0=^c!*ULtFznqe6DWayOf}~ocA`QUT8%0Z@Od~o-&``v?d!kSYrI^i zY5>Sun$^e>hA*_an|J8e_8V5M2~^;1x8LOCoUahmX{@?XfD)6VA-aJYk^@ZkE<_d+ zmO>6ZPZ6v^`qR*m8BG>#0F2yc8%+~F6dL>uj+9~oQpW_Mfevo)Zph(vc$birOfChA zBqJLE#Wzb2w+2&0Z8%9A!=gT*uCT&T6hLD^L8N1;>4058k)Q-gr5YBhSh8DEkZ3rJ zv7G2{aG!#3vj?oD4_{CIPwQBms_2Ls{|AVAAbWmn{ z_skyMuP4>&U){LB>eOtvwPwh9eYWg(oBlNzfSkkW=3L}wcjP55-~aLcR7T+k)4}d{ zW}B}w1x_^EPuibJlmF`c%9O`jTpztf_wS8ec(NzflKF=t4Qn6zO#YZ1E_%Bch^wZV zzN)(MzR8$@u^#kV5<)&_i1T@%ows?x*L^$u<^8nl^8D)5YbLncNNIE6@ATs=s9M{R zn&4F5ZJtd@i1+`;YU;Ql2L}+VMYTom>%T{Y#>xX#ZI??e6%|kG3D$?Z7#NF5N%y-5(~`*cFVkg6$VzzlqGeSR zhcPh>t%p>FG~jp&u$1A}xj~yszRNHO0eaytey8qO?TUlPAR_Puav(8@uu(awUVrP; zclzz6eKrSJ+Z#vkN=K4=e%LPihj-EGZZ{D){%bh-oW$N{+v0+;1vn4tpKiNJF7N-P65C0u7tZP#0=KT49b%)XB@Z9+?_C5bz^2uRC$vb;eo<0 zue*nhz#gQ`G^VdmU1 zPcZ>Q-2#oOH5vl^x>Xg8@riIhiRnyvw;qu0p~&m4jSud;eL0j(%yP!b))e558+99H z|J^_i6|pd(eAQ|_Y+F6){@7vFGrYlo!Q*v(03daTv*)Ugf1ZTeU!y&-#KD}$ms8&3 z6N1EzyT3RI-AFpKuRSfCYp?fkmx_Ezc?y`V=~tu~o!PmKDMjV_b(Nd#IG zBY_i*4CGLcunj)IqK?(6&4O#e6cbee!$5(hgnv`Oz{A0U_=m-^;i|V#&qb2Ojdewn zlNyts89^h^wRvzY^1D|?TkqgRlqkSxFq*=sFcg$%;Sq(x#{=NgUk@PW4YH3JQ-Hs&xLzSF`H)5A9{*kw?+iXSx_lYdv@^ zx^W(!y8Es6xc<4_)$?EpvXu}ve?CMajCSyHS9R?dE_QMsHh%p&j8Xa2D=Ff(*kN+@ zG0tfs`F<0n@p8upWy$-9+FWj-ZI9m-=Z3v_3Hzuea|dTUnYL37q~AJ z33%$`=sGe_5@)aIR$l*>;PSR2TIsA!m3+0u;J;nv{}q0GEg&Z4@fgXZc9gxBuWEea z_rMgV3pi31nYrK_TNdEvD3jq4XyNFz7LhOp2S)JYIZJ(zfB~*C6PTcav2#~(O>XaRAZHLy@cTkW8MRq)} zrU$pm<}l8WhPT1^w(uzquqtJfF+5^T%ZDYFbUXo(hdy|^-g*Uj%-;NFXFNopZ0)MW zJ2@(Hz9#ZMTGjgkFM5d%PBzI@tK7JJJLf%)h~S-R`r}S6VMLyifVO6rWPiB|BQEmW z5dZd=Z5bJh^CDmT!TW+;R`T*fxS383h{E4KHzx7IKk@296O7MWCD} zDo=|Vp_pz%NPpxQkT|y{*^q^HXpuZ*?y}&Ioyig5L5xkRK5Jx6Tf~D?zenVIP(_=z zQ;GSq)T~I}{=9JP1SG3BG?Q$45)^mC1`FE{8FY#9Z~_XQTz0>R-+Wpli6lv^g5uwO z5p}dXbrN_aJbQoYTFg>7dBNQ5g-tP0g${km09_tbt&q1}5D87sd85*7;x9B<1RQnt z^^+{bIB(mb@9MC8d_Ob@c%J`l@;ZtA{IhS!9CK&Se#cEG*+|~;<#cRrUY(EQ?WfrN z5r2}gUd3@UG`2agVua1Sg+<7W5MNrBD374_<$6Z!!)a6f3)dZM$lbz~tSUMNcTGtO zFVnB4kf{u>++{~yWKL@KmFl1*TcbicfI!kJ0++~9uavX<^c6by8Sa(IeO(w7;Q3b( zK5tB2iJ}xU3wHh0R)7C;-8ReZ)tc70E$}mUjvHEpM38wb^%Uv&PtRT&_vMbRIE~3ZiSBK9M1J8vXv*90~xiMmtskcPQvUQg^NY~n~to*11jRDf%n(Xs@z9!w*0?N zAIP-tkP4VJ2jA;!DU_a0-K}$7?hu%jw~L+W3-uUTHC>%BSMCp=2~Jddbv%feRn8o| zO`{w>3~061cqWfe{uOvB5~6Xf+vDas?^1mcxY(s`xg*K@YBLz*eKP53;nNVt$c#Mg z=ZtG^a-+^w%lj**AU|$gfBjl$za|+)hHmO#4ItHGj0yv&9>WDlYLp6Q*A-mM;UKBQ zjGCgp!%C4dX>|v!M+t`M9{V)&eK0|G9U=`J;ztb&zddg_6)^;tifQS{$!Ri>3K`HO z4aU8^vB7AN1&AZ>rA+FN^JOas=^3Q6wegK=UH7Db8NkLK4#fu&L z?YwrfLiW9)i%d&%cz|H+DC_!QjA6-ci57FI?Z#e7b^c`4o1(E}2920pA*UsXt_k7;Yq50Y6q?JrV2>%KyEbxcM;;s4Lx zSohy|B(i&*%&05u0(=p~`WeKfD3~K~3y1cdKxFZsPcj9R%k3*Cs)wCsus%G0RSTGx zigky=Fu;NmvbRCz5hC~f0=G{QDMTQT`43#nlQtLxfRFBjqTD+A7N{JCi78?0V<2OIn?lAfE4RMb-TL|LK{&l%nb0$G z{VhnI>+LMA?iMlbat9|dPR6V0#|7~FYz5!T`g+&j^&`UvnI zZMp@0rwcS8gM)U!HB^vgne&5zq$U`{mgb17*&d4>`>w_N&3eqSl>Z^XrZHrY5SE%gCmYdWE=MGw|9IZu>=3`v~OfDcHOe6n-t}Gd+L@W@%$rsAcepMZ$ zF+wRRds)|}r>ABa*k!0{8UbS82?GeCN~E?G8kIDaWg(b&=ZXFEkF5x(XvzrW z08u2Vo9D~?)jrjp^XgN8akon?$SI@zt0b#(fkNkzlk?gMU0x2AlwmEMlgl{PH|3NB zRG!VS=-G^@uX^a3g(EbDT_XQXKDXrti{7pq72(h6uCCT-q(MMAQjUefzd%NjAOP<59o+u3vKxM+e{Qe1AC#TGikMb`U?m$f%9)bEV%&66 zH|mO4QPe?39?76Yv7EAVqfZ;1jvyB6`HB~Udj+eEsaZJ0plrglfT<$#l>-j%{Jke* znt|VIQ%Juwn?m#4tmbzsz*B4R#UJQ3)=eE1SuiR`UJhh{17P@^a>o&IIkYa!bstV& zrR$5>{Yfk8t-|D09Q8wB%rjk@1pbt0URWfNrH%#vuk3W}J_ z2o0X)2)9ooE?en5$muOZc^-9zU$Q_+Xt1)I?LGI|6u+y7fUF4#0wmX&#u3GUD+mP$ z9=e3)H{B@G2-INvM&OuL+;vBH+*w6KpVc&5sQbP+qGFtMyEKvE=_UfVRya zH={Oi`mZpN_-lRbEplcGZU?mUv}3YJIC^6mXPU+?_5c)8!eR;@2)_I^=W?E2)Sh@(_% zq~H#4H)%cdPMNPzt9OimQhqu1EXw=+q_=eQcEcCknOl?|z$nmcJj$DA`-ajn(rU)_ z+hrSn+3_pMdVlQ8nRIufw+H3qs|UTfG*a9GT_*sP>DFcdIKWhp!QR1{8*y+In$(9U1{-E#Vlxj|TNDWJ3@zq@ zGnwCoL)X$I=+^}gOpFdS{@mc7@Pd^Nd{-BpI9i);MM;$RfCQ}cy13jvT}_CU_j(#E`8VhLCS|ub`kTF^|8UHZ_X7yo-!f%T#*d(0IuN zjw99QipA$ItI!w!ykthb>gDY7z^FBwouop|RDc1qSD(+=QOU8??R4xWjaHLzt}Gfmgv4pg56@Q4`;KG3DD98R|@7 zl)vv5uc~iWQXUG|G!8%+gDB|PDa!_HWxi`Nb5<)uI4O^&MbIgsdzK*UMOWP$WS>K9 zz1X-IBr#iQv=Ml@o^f_|_TF)fCE_25#G>bMKi{BMZ}AW%?1#|eCKENF@mq5k=zxL_Dp4X4t`i0AMwc=#YV z%y{R3A*sJ)G*UvwaL;gLfiz!C6B0-^SI8ikpC0Pf8@BO+zxavB`gx(A=zmeFgUQ z=Kld?$$W#f)16KqUr0)$^TBTuxhR^Uz2~n)NM~<6A7A5PC?EAs465HHP297PoPTnX zzCMu^zs;jKBsl)hyJbE!=?vu3ZBEE;r;NhHCc!26cQsyAsBY1Kl`vtXphbjPk?Ig} z3>$wc;t>K^5E*EJ(wT79o7kvZG`fW9cvxzL)2;meCsAfyNdZ=r@yg0Dv!<-UupyB0 zMt8n&0nF^SY&6E?R%o%YY@LlwIwB7GAnV*TYxZwUkp^j?z^`IYI+l&AV(smfvmzVXw9AoqgZz#{_>mJ5K8(;ObWE3lCJQrKCGQ|vxSg%B4{v?iC>Z^ z9NG&UBnN=;*_)ENlQoqn>;pQF9MT{FFPaOLpp6E2TiIYTk(_8V$0|ll%T1u!=__0G zqRp>1(>Y1McntB##G$#?5g;IAOn+m?HVYYvgzHn=h(IGGf+6Udq@(76UBvC`7u+iIXx0;6opI7r8{3F0hK&-@hHLKQrnt|JWo?akv`icG~EILOxrcYy@iAlhV%yUJ59& zFPo3#)Y7Y`LQ)Hjh;loF?kVqT2>p>f>jSy*w!Fv+>GA<4tqqJRzNkzbkQ1IK%G|^F zG*l2?27eHPphw&1CPtwPrj;Hl`Enr1Gb0p`^s}f-?iHvU06`>y@$>iip|}J&v|tB?ge?-DJVaNMJI8MRU? zqr7Nj1U$@J2>WAAc2;mU`H?Yzaq&bX)O;tDae54OU+3sDtDB*vAb4x-Sr<)r%6Pb4 zS(y}$W`4DHm;~l6mk5q0QGk*ubj>^Iatd{tm(R=xKb?^glb`=z{B5+zlJLs|RjQdc z1KO{Un@yf1HoqT$*(YO|G_J$c%@Nhl?L$Du`|8mujXUUq@f$f`EJZVo^*|+Q5RW=` zNzG+ZtwG`BId2k^GQkBe#|1Bl2{1{T=%7(i06b<+RKreGvxI=&VVFs8a&m-K>%Wzw z2bHs`2ri4*YUT({CZE&@08B@eGty(+aZ%4@ao=5bK}uUuJb<%gzy>d;!X<`E)3|P8 z-_;hge$)~8JYbSd2Hf8w#xH?gbYe!j68l=ZMg<`De^n$OK+qll!&I1cbP8!!Q>R;| zXIrGz;kVQOG>+bu_Ywmcm}pq?l>%ktL-8&fhD7BkF0hwHVlkp_)zt`s+-9RJn;w&L zGNNvdCLW?F0O#_$ekkp=#GKxD#|fF(3dcFGVaM{d@bQ#kXeIrjk>UZK^s^k~QFqlq z)_;k6OGs<7*(~$DT-5ARM@#^B;*1 zTB9l2qliq)N`BG}wD?#>nxtJ~)L3?}ChXBQkONQp!ET^b;48)lG>If>hm2v_9aI&8 zXo(b^(%95AhZ2FdL)6YpxSs69!E4s2skos=i(s{(=(8E7_F!U*2#drmK0Ft_2$rGe1rmK3GO)>1I!_#95vyenj&me-@kc?Szs zRPbdc5-Xh%5%>7S#C?*uT&x!dNa-|x_@`P`cU#+1o%>`@Ln<#=+YS%EEf<(H7t}64RwH3L{|3(mikFV3KecUeVD~qa&GS}hfe>XJO@Yq zHV9T~$5eUS4c{@m!3wR%(12996%)07r?mG{|LjhGli6+9w|9ec(+U}@p;^T z#7RO5xR7TcZo4&eCc>WvZir%`FAAXkbbS@+l&jyP-3>S9&%tP+U^xMZEQIi?B!`Cz zP|>$c%?U97To7&klfmiVm$DC(XcFZk5S|w8FG$M zfI}LKd@Zg{Ok1O8y4ZHt3xn6ME?-TX{Gp`I?5w(H41)8Z{NYjTX~EM*bn}d2otR*G zrw1M*ge(eS0@aef#fXz1*%PbG<2_7QR^#CM+sk^r%?cOS%b%H5_mz|VPWZ3VE%ffx#MBsuGs!?i9VaG-2w>0xX#i>V zP)US-)$g~cJoejLUx85&HjKnwd&oXtS*X<0C+?})r3gXJ2*b?uaX{Z9>|r1N{gqrL z3Ef*l+t<8D=Tv_&om=GJ&}hJbhY_ueqHe~KK) zrN^u_vQ+8?y-B%Pko#`NU9f_{y0I4al;=rbj9BnlLmk!aEhXaL)qO1WkYzP%*xp#n$?rs-=JJ1vNRTvSdTe z6bkfBkGf8J;ie+W!2q0?D`353leURS11+=;-0Z74IRG>dkfIW$_IB{c1OALcdf`+76ne?K+ml zJ`Q>t^f)f`s>$281-AGcE@AhWaiqR3xu`m z9QR+YO0T~1lf-d)LP8x@qgji)M4O{O~<@ zCZrFzM)@=-kwAbZv@QyXLKD;pG@nJKBLXUye1QW+-c3b3`|xL6uis{d`mi5$jH*I!dYuO_SumhTtNqM#Ivjh=l!4Kwy`&Y0J2( z&yYoh1a0UL_8aOQCDi%{+O;jLEKxp`%#XyM(?!T*n!A?~> zp#PAu(;W@0W}3DBAc9)3_q?N8fz%2BFc?~lZI9AAnd?sZ|=qLr2jAQVkCd9-s^M z(LO>MprSqqu>;emwME^MEltryc@CE%nK1hG0w<~zt$p*kw&g7#BcilkE*v0tE&5=MiJ?jmImn- zNht-9M!LJZyFx$0ieA`Wge+lk=4Lh_H8KNj}dNJ+tj^~v>(vtRFB%L2sKg{q3!OzSRQWF z=8rJ4OIcjgjofvuyQjvc2oL_mI_+ogAmYl3%}!M7vsYa4;ex$oTRo8vuFVFXCcP+A z7=NEQ`%|?4;bP!lM3{cyYsKImci#3c6jb1$`(!0OShtUvkOUV4VIzUrCm*1GRQdL+ zqa=nrSr$oG@)i6eGd$NX(~YJ@K`5(K>xL?yCB*0@W&g3`exFlIBo)#x0h z0)e947f9hs`ro!gyOJggO@Me*47PO3+4IZx_i*0hN|84vEiA$(FGiawqTs}WLeI=nv`e|`#RkKR}R!6vGV6Ibod+JnMdApPlVYbpacCXmjYIdy){`G6j zzD8q>M&fi2C#~>xT4S9tY}g`gVFA<~78a|F4*>}|)!<#F*Xb$o135Vw+8a21{&EBC zVY{2^+iL#Zh4IUyrt7v;t~5Ho=6IP((;8XT1G`_FJSP>?>KtXF~M`JXz; zvQ6HR5QHmv1W}o+8h4!_IqHdOH;&hCw;L!(XwF1BxVnUV675A(8lbG?EVYM@%7nr7 z_4^7d;yZI3%S<#vYNT^|#Nzxwbz#_t7}1M|8@=mW9q%U; zhg`~=nCvYn?koN1K-Re~Hdw%NgH3PZl?LM$Ci%JOCa%=LVQ1n^PG+4+@;F}6E1=qkNd~-rw%99 zi_aa+j#rdBuQ>Pwy5K`3TFY!QizfCP>^X@n!^-4>jn7+GCkF2L2NR`z>aKbd*sP*ino5P!Y=%@wMf%B429p<=Nj3g7DPpZHeB^+N04A}8O3jFo9{Jc^6H#L?rS8V%Qjjgh>q^%0nE%!#Ga3vn@k=2497)_`NkqeW=}da$#9N2`F7a@hH0kv6^`aQCo%FcsGfGOE z6Zw4$$_BUUSKlNXF+ZOPm#Lk>0xfVVLNCbFGx`vR(sXr9lSQQh2rNyGK+*O(e#=g8fu z2#WM7hdYmN;af#Uw&Ee(ne^9RhjuSrf(ueNeWw@yBjtVied`93hS1*n(lZX{QeRh> z7(aG$?~wYe^KxbDRt*!C&}9top7beA=;pZ+Ry4ZeUY%z+P&)^%xMIAE?vA920O9Xw zBEc2>{z?4r0NX|OG5FocxWerevsRC)q7WUxn}fiET3n9Go%rsGM_?_Gq=OEV`ebdq zO*cCIrXF`hAI+Js?QlI_?A>=I2uCgAwnN#E_Cejvj+qp4f6Dw$QL1-Q1iP4f>Mg{0 zc_F}%U3a-^xkSnJg9X*vH!@G;_>79nBX6}lle?RpK17XfY+X_RE@pln%cRw5_2u2dGLy^Mj#!Z<=y)GNS zydx{eHb8Oa^ORUL4bQR`6!JBTp=>{9s#s&_5&KCYZfzj2I|dIN1i2sCse1(6nNtf> zh7u{slM`7BXE&Va5@QU?L{pZzNPC4+1mfwv>@#hoNa37ojpHAnGTLy1s!7DYu~C`W z_J7CBm{XuE9C|NBy_x2!u^jI#pGJQ<9v@tw>h?*H%5pdt1pp;sNkPUd?wb`Q~eqmrGd}i=7f<`NG?e$ zc`LLK3a5xxk7*YTZo?ldphYuGR`S-l)1*;}YwNCsQ(D)}#%>ZtT@Y8bXmX3NmPCPZ$t+7F0BX(VvZ&R9Mniy??d^s{Zuij22| zPkX1E%M6hk)x{V1*=xJt#HFoJ8(PadJD|q-SeCYptMX1d$uE^Ls^o4 z3YEGMaiQDQy>F5*(~Wm~W|&?k0d2iE)1y1vRNSxB#dZ#s%+Z76T&%_n;o> zWWm7>$rhAq%aS)n(exGg&N>bnhz}atP3EEbndw@a7tCVfp~EOqAzqrh}c zJ<{W3A0r&c*V`%0+llZtn}csS&NoV`Ki5uqh5hBq%H_fz$K`5LxbdXv5W@NXw%y2X z^5d!{U(D!|V};`q%Ack7*FOsjgVih>{qHV!?XG8)UTfpR)USDR|7{SbZ4W0=%4XdG z$XB;s1U|o#J4fBNZV2)%;-Hm4f;+N^Sxv=d880NK*-52!rn4rhNI7I5G`;)#$|LMX zmC@+7;TLa4i)1=8Ww!LdBIeg%N!;&9N7cB$oDPm9{&prvpLO#$`L%>#F8v#(Tqfku zzvnQq7NqSg779(gpg`&AAOv-;z&+-WC;w%_)e^^au7k#u823?QGav+vZG;Dn$oUZL zX7HdQNEAXO^oF)VvEU8&@CtDesw47%DZ6~dAHlXBqJF~L(9`TmOW~)^x|nWFDn5@c z3Bg@(4kZetgCP^f&7PmJ+IqB|5`y4*j;icT+v4U73-7SuHU+?Amu>5z^GA2nWo6I7 zNJ1XAn4v7bko=Uo4M{L#$%X9j>z~--|~&WkZ>l-kOwbpyA8k-Z?0zc-`;_5 z4JNz{HU~=)iULpzFxG{YxPgdiJGAnRpC_hTz2)}(Vfn5w|NWb_rxT}z3Y~6~6)$md zLh_aDg1V)DAMN6zDn#D5jIpcz>AM|{cKD7^rZ!IUxy2TjOOw*bf43g2 zW@k2NkPQEO5D=h#waFf<0_8p;q$b^B#~)4W*V54qJrfO?WbkN>Iz8rT$B+uY?cn|5 z=&Kuz&rd!4E6b)-a;uJlDhrArxsfXUq6E-3`l+dWNJVk0zLSdn(iz~J-~1*N>fk{o z<;JZkox8V8XAq1waQBK^4CU}4v=VJgg!$?L3|}?6Sanll@Bz*F?vP*-*q^EjNk3Tc zE{iZ7(PWVX78wH9P%%yFH%JHG9-+!sh0%&$f%5cN49`wT{Q+E}c0Iq&>W(XHe&XWq zmUPxJcTY4Fl6CIN!5@+2^rQY#t#ZjL@94B)9D@`YVyQ;|7+NG-V340$vU}by5S)0C z`@U>t;WJZYELK$*6X(bp+k4Hb^X>vhDcmZr7f&LuN1MM5qO5Tzg|u=m zoMV+!ey0!LY6~>|-ViMPY87_NUjqT*(cN>;PY>VJR{l-coczp%t@PcP(^+QUxEEsG zTawC#r8C$Ek1ewGuE-gw8nazl985;sVJ+NjGqi<;^sI zRoW8PIHixRG4a9qB>dM+I$b`!hg(puuGAX zIj{98F-N)i6I91d%qTv^kGd?$x$tjl14$q4&|zkax*}pEL0I}V4AMHY=&UgZ47q$v zs7JYP{8kAB_m9psuR!06Wd^V0Sk?j=tg7_!1l_nUi)I6i9+4dA$t?A_t}$Kl$%xTk zKSh}7biN#unt(I)>?}tH5_i?<=yf|gh2lx|&D^O^{Up^nqmj%Vzjeu8W~#xm2>IM{ z@6TyhmtN!dZD?8xVJdaYaJ~wQ}p=PwXVKsZMLNW1o#4+&*+{E45e_!;EtUB2p z9VupeWqjwz#_=K$6gUQzY*nH&jJm7CYezim)usyfTj~|*1p40@`V$E!DmBb2Fuqo6 z%u|_rf(NsHU<81h>6k#k)AcLI5>G0B6UYUkgTBDqP{0Y+siC|qb9ZRYhbqv6byF*c zZorlAWs19l4w_DJUZ6D3+D<5@7#-#%27f)n?Gm$_g#GC!qi~_-X`1pNxzOiCa*&*i z?}k3MwFeOr*{}p5N}*Nd>YslZhY0lGXP@`;?J4;_wlW*a(mR);Vx$zPU^Xr&X7)mu{=&hq^+=-2LyBDpe9+5siKAG}C_#Bq{wKj@kxp{Y|vH3<5tX{##O0 z1z*L)d=c}dN$JDX05*^ddfWtO?)q6Z(6t~j%+nTQ3Bkq&cyT&B$)+0L4I=V;}4zjB3n-&^cM-qcCtT$GGvS$l6 zhQLrErf%H;H3mc7C@ZV0dj??9GLsm(=1mbkAg77jhl8+dUp;+PDAX^V7*Q$eJH3rb zBQmJKTbE$I>cq3^#C!3%Ws8#*T~vikLCWSAF_iQB0}OI9oKpCzkyqn-^~V>klRJb< z1|&f9U6f~An0aoZvFW{g`J>H!D|P!JPIrP>o|YvM4=>}r{SKuhqcj#uVt+tq8!015 ziVgAbswMpPw`=4aaaq=3D{=7yfLl3Mh=f)nLyO76QN_k4603?rl8Ldp37&i3L^MS( zZyl)Oqhp7Z%I+Y#A^X=;+D>CgzbG#z=3RaUM1?PK0U|-EM+qU1j-sFp+pymXlt%LV zrH(_D)opVZ=|jdnl$8)i|Gs)T0H!?6xMfl_F3oMNj<7EN=#nw5ivDwJ=KJXhkyQT~ zZ(h$1%O$RNo0Vijm+N5CSm=wR(2wYm^V!sNGm4>3JM4eaa5`BY982TAYi@tw#uU~vAW6!mh%do*9jEZZqQ)JqAAg*Ki*UDaLvu) zhQAFTDTFS;PFQP9>c5F_@bBXwY*!wkXvaNNOWFLIupcSnRXTiF{tXq zbV!`*chue}>RE;Ej3&%7(eKIMib8V34Z`x3ClcKAX7EH0P*I4xtHvjn6{?%>Nqn%s z;R1v=$|)C7`k@@j7h2+WDY-lME|SB$7NTF6z7Ua>7{>4${`8{i$-o9yp;IlP+dCsN z?UPwi-nmh{=z)DW|Cab;U3-TP*pnq2;Urr%!Y1m+q@+;MXk4lDQzUS6lCav51a}bB zby>SdXi*925w*$GoNvgc6^bu81IxEkD0X1$A5NoOgXBK>t@QVz3L-=3OJa=e$8=|| zgCX&ubF7lv;_;$*a`2RedhN;{jAxmL=gXg>CH>LC2S?=djcM!UDH|)vI>A`UC z-^OFLFxC+1Pa{4en&RF_+bb_=5R(<=5D&G>*=!L=wAN3LsKzL*fSo5d!hDr!W(0am zNzC7>=jzns?c?2v@8ro1f52#!iM^NMy`1mkuIsk4)hU6R-sNsPy<9%c*lb+mhyA3X zvBKN)>TjOW9%=pajNN|!uClZ6%CLW@kzf@0Oa^)iUOl7-38wP%3S zf;ip?3-U5EIkCIF*pKr7QgQVhT9E65)pNzx8Gu!zRW9>HFBY%X1r#zBs{@%s zv_^G!57mJw`BtHUL)tNjZ~abPUA|C3p)RgGt-Ebpo)`Vmf??t4v`1RT0DIGS5f4_YF4fBpkaBV^8L~N^0DW{vXYGcUj~JST977u z`7}!3(3DO?Ywu7udC?O71^pe&bwx17_rc~NL)h6?Zt)aVL^0Vb9SaglxJX# zke!$8bSs-Mk|FpsLnA*eKCfm`;&m@G*AitglPon_k(4|!yD)U`r95~rf2eX3NoOqP zRI&4XdZthHlYQdRk3xThQPuMb?yy?;m~N$K3KmED8@E||d&*okit(88r^|VqNqZsQ zebaU6gu1!flIQKp_hM@`aobLF(@RY$ff*;b*h{8+$62io$i-fj5p|QgYTS`KR`i)B zmH~?h6-`SfZjQ*2e3N31zw|kHy=aE5iUV)hc+Q5iJ*OiH#bZY-M(G<%qa`%(BzT`W4eWJvudt^3}cc{T5iD<5gsXK`!Cs2~D8Ffvn5r}v$& zdIlI^*ZV@CZY7JrST}I^#{V)i%|EB`u{g=VN42%=B6D-{w=<@0)EFa;__BKP)=mgH z4HvpG;SJ;sC(7vpQCfs};AYoIwr8_?54xXPl9<9BuE!AOb0sXx zz#U;N_`qrppH3W97J57Mq)*T{Y$}xJB8zn^naWH);o9%Gz$u+mE1i|iqZ#&63<>c0 zlOL=;LJC;@?(?b@%Cpn`c2B+U3l@?MLV!c8kS{(hx?o1DX3atp(?%e;y6-sEsNPVk zMKce-^cKTXW|@2YxzFa*Z)ZU!5nxiEzj@K=asZbL;qcYovd=`!#ufo{psb(izVpt3Ha2m?w;R<-Wt!$ z%pe8V?u=)Q*O*LyU9p_blLVQ2qL$}f$&BPbU_`FVd}H!vS4DNcQ%}q5JI$KbU{+z& zuu9Ut2)SRP!OA?o%Hx-QZPJwa#Q!(`cRsshmE>0+UpyUsha5E?eJL?z5_|LkwZi@o zeeSs)rs^Ag-ZOuBH{{fsYx-&iM`r-6^5ea(qL&qsA!DGBJW7Y_lTM1Is?=dH(MwXO z^5t*UlR~bW;sh%tyUTJsmD&d<*7>@s$8>CL{%15~O6}6!w!!-9kEk<@+S^uh6-SpQ zXY{si&3kP5(pqMaT#KHQBfeJUdf)R7sto5Wm3y-ay%XOx*W*md6|glsUp)6SdsW2< z8PW}Z2b$)7pAxo7=1 z*ObbQ^cq|RWu+7rzO_!g!>6hv@4P;exfMMX@9y8LU^M0@ROp|+F1fSp7VWLOsf#ah zbANkj3NhYQ)lm{uH{SZl9E!u3pIag{?rw$A?8%9GnEX)id^s!pMTwXr!7w1V{h5&N zw4@)ZL_H!Ec0a}b>Lu;aMfMhSo@HD5R{`1AblW=EFq3U^;Q0e3*Q%k<~(lW!UV&}B^(=LAY1hX z^eZ?>6jx7rY*pAvir_fUf$QqA`s_-;$DwzL~IbmtPy3+uZyk zKixG1Gz9N}fPgpqXt}odX6EKOm6g#i&ucH-yn$}ND$Yed_S~*{dC`CS{BJOCN{{-U zGEvq4<{ojeX0urN)Z~*JS-v~TZKiU?A)b6Y^SUPe6NbfVjjzI5n(*Rq)pMs1>q||1 ziIJ?=lC9#?CIXQeb*Nd3%oq0L+>+FVu_5Thvw>OPpinb8@FezSD0mAKd-tpf` za!P-5*TnTI`pK~GmafYzsx)e!OPiaWst?|4MWQb?87lI(g}Jb)s6O}0wq0gB)a;Ua z%<`7F>#~i`^Y^4=n3G;+%-bw$ZDQ)GxSfhAuBxEArEj%0Csetb)i_l<5{>e!jt;ru zR9sMrtE^qY5%zPRxP+knA3}rEs36LKQ3i`~P99Fs5zFEcN}fiHTpBLhf5{Zo%q@#W zG{0GpaSf2g1uMb?>I6lwn1Vq_Sv5a|M#vXNQnY|csDZd4jLeHm*LV>Ec92CH?zJ2@ zxUV-6oV^y?yi9KUWG!WzTxer4l_Q(*m#e;dRL=cSJc|h!GKpC-rMOWcI&8$T?8<&e zK#)y>_?PD!A%T=XK(-0t-%Z$udzqkfV|hGZK|!Gt|YIJ1(8? zqvnB4NtBX1&{^3#q|di$5H~|BL?c2 zB2X!GGV7_$W>pxks%IBOCghS}d8DLa(I^|=$?8263MB-%p1mgkMQTN38@Ksn0UlHO zZgcx#vxOn7k92&u*F9KsZFezlkWDmp#gRu(w%iObenJoexLWH;H3K$iD{FvLquxU{FbJ6>B}w zYCRn&y>bS+Z{ZxlE4>YG+P_h)T^g(0N22u`tMWV#>!DP$&C1hq!+i_X=;XG7?J822k!r&yBG`oEj7I16hbCH1Y*~d75W$tG5ybZq! zHg%7gnSNYHKTt4!*+)-!^f-*>+*(wAIyPjnY$Y&ncSlrZFPXsYbAA8+_53)ByhFT1Q(9Q{NR2wl z+!E{HHv(5$DnE0XXD5D{G#_0;LGfwI zPWqZKV%X{du|=^)Zfn@`)#yX^8MluT z`3_X92eC3@v8Vb5|`ahkbMvqmdwHILbcHc zw;S^W2DJc-B|(AGzj_J47FY5>|K(qL@IocOp<);zSLOSmpt6{<$(ed@!q?0ofgd&L znXchBV%TV;SY_DHOW(Y~xqS<^tm8!7=vVFS9YIdX&(CCGk;s5rLihH7S=JVuE*`zclG-Oymiet_OGsmb&Cxfp7M~iE4LTc z2ruzfndoSxU$i>iE$Avf

CVLbE`=*g1|>?CIj|QK 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�ulWKaK96VhPxG%s{XUOsY%fQ@ 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

Ognm1?oTllH*?LcvHOK)m$>8{}< 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

Hi$ybJ!&kk6QwkI=OZDH2cjX`8PyW7o~DK_{+*D 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%0AoF{ACR%Q016>cuU!S-NikBCd^}}O^ycIDn8l*PB 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 literal 772360 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

&S40}FI|Ni%1~#< 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

?7+}!R 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

M0@ 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

Z`8P9BMAY~kDNT@LJpN->jpwx%2JCg(d&AaLKG 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%0D}oPF2*DcLmS$J$ORnhvwW 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 W`#`0L1FW-j*`N?}aEYPwoqquZC4;{J literal 0 HcmV?d00001 diff --git a/tools/pwm/ramps_nrf52840_901.png b/tools/pwm/ramps_nrf52840_901.png new file mode 100644 index 0000000000000000000000000000000000000000..bc702740050ef65f88994891e2e33c14c338aa73 GIT binary patch literal 26353 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 Z=Wv7TH)&Z+fxof=AvCXQ6slQ2_&=z-hED(h literal 0 HcmV?d00001 diff --git a/tools/pwm/ramps_rp2040_904.png b/tools/pwm/ramps_rp2040_904.png new file mode 100644 index 0000000000000000000000000000000000000000..328854c9528f3d6521247b409e7d1d6b67906cee GIT binary patch literal 29074 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 literal 0 HcmV?d00001 diff --git a/tools/pwm/ramps_samd21_tc_910_fixed.png b/tools/pwm/ramps_samd21_tc_910_fixed.png new file mode 100644 index 0000000000000000000000000000000000000000..47fa431b976bd2ee20c7e2fdeae4f5a4362aaf7b GIT binary patch literal 25190 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 literal 0 HcmV?d00001 diff --git a/tools/pwm/ramps_samd21_tcc_910.png b/tools/pwm/ramps_samd21_tcc_910.png new file mode 100644 index 0000000000000000000000000000000000000000..f4499b24d822faeb1345b4cc0865212d5e346049 GIT binary patch literal 25373 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


9MCT3Tt>E=bXfVdu>&02E_@;VNB73ftA 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

TlOe-ir$fIeFgyU49rc5F4UOdrBxM3tXB6d(% zS6n&{-_)$Juq{<|>)yyV!p@ZK_j8bn)h=udu3<7MD+3jMW4?b+~FC1DVCa-HH6=UsBUW|byo zI!V@C-OP{;$t0V3Cv<^S7R!*H6@jD0`SQd~f`*0l-!#M^=%SK9W{{w~yXgvJw@#=j zqts%A$d11pQTN-|n`bg`@qFblh7S#L9=Kv)Cxg~Z<^#`73lC|&59#J9X>+Af^cXgVE?9;n@ zWfVGBYEFrgScMlv^LyXUB64(GAR(tXx>X3GY;uY$ACd{pdP{s1*H$K6vmrMuN_g3V z;Y5VF()tH6N#v=awhs^i`^?UVg82Y3?7=jsAduJqd~7AT?LR4dq~N+Rk9ZRm08I>0 zb0RMxzzwKH2jVxrc!YcCfwf;u_;#-r*83EQM$UiCX}!{J{}VGPbgCQ*#RaoZK?06w zb8gea)&d@Fk-x-aW@7n}q;dFXUd#(3FrY#K4z5%~+eXO8S`FQ-bj|tDguVjyGf{AT z0*gqJ%9R>CNkA9E$J*T`j12i=zX#-k~LVZ2}j}U960^@P6Nr zWSUt``_EfEW!7JW=f`U0qGwxSk$ij}g#;LphOX8DvD@yn3w=M94FvVSIY~@*bMSCk zoQzR_u1YYx$^8suVId-zsfm!d%$dn{bUZm-a-00i={|Kl9syy#`})Y~y;TxMp4cGU z363$RwNk|pm$M?YrMBGe{`mG7ngu{bjA8;;R_KaX=S`G_MJRu`gDPtH5lHW-FPJtG zA}qBhH&avZqG%%Svlhrcc3eATOyPab9zPnuq~wjBt@n2rpzHM}3fsO)f?+@Khj$7| zQr0efFFdhYNl;?(a1GQNZ_{f$W70&ouVzXc@Y!q1{3Js|*^CtTn~270Yi`PiH5KvZR0ten8GlG} zzk9)H+;H`hfD)hd|Is%hlv`!P!;Ot)l8gc;S6hdCW+Nsj%4+d)0a%lnQ=Fi6zA7%b z5wezwf+b(36Anmee&=vLeE7h=G0hS<`cAeJR6VOlDWJ%_S8y_e6?87?NEkU`|D^ub zw29HnSLU*Upd?FV-E=U0OHN2;tMnt>HtfHdmH!Ko)(nWNRl~!oPHJZ1Od$Sckeu?V zL!qYf=&8`X*#9*sd)P-Vh@tKk^#%HMn>66PD{|?~r=>tWYNjeru1^Q`cJI_0nmKg2s zPvE#@cCmV1uxGDI6~O;(BHIb57W)Nsle%m2%6fq1`(=Am(V$JZzMG!Y#Ibxs?>w;i zPGUE0|47<&);gD}oCRByp{#rSjxenF-zs$7{JR@#+Fq6W_KLmStR z_-nhZbj3wC)LZGtSA$uT;8!W9ebxBEcZG~&!E;`r={ea_Dzthl)juk%{a9_2K}vU? zfsQF}oN_XhoO3jvAnMLqDFGa;M{)ca+Tt4-$xTS3cujT~m)He-nb7(mOVkRlj9?uC zTnPqx{hJc0?S#sAZQ9h_W#xswCd?{3yxQfNfQSq7?U88+!+arHCTu%C4|wZt!q|KE znuK^@AUf8fbB=mI%pR9p0lx!314(JM#Gd+J;@{R`{4KBqa?10PZYT6HM(PuZK%LmL zA{Uo9A{PHaOVs5erWH0KRqFe=SKGUPX_Yjgf2%f0B&n<}8o9`9jC zAgViR^ax{n>g(i(Z_R0l`E$sS<(9@c{>*r3!NS_IqyEoa@g;%>31>3TrBqW^>{4t& z+;{0qBUzCE@LBGwjh}%`1G6_3E%gE|>`WpnJW-Ls;&t(t;QKesiW7J=S7C)K?tKoF zy#1{M(-&MG4jl=V<%BKd{VPS)86upM5U;`>*24>xoL_2>}} zT;IB$=pXFcr9v8JuRn@!F&%X~&e#&W_M1BgUVd+z7O&x`-0^-JVOFRd4G76xG|>D{ zqJHD8>p8h7Y$PaA`8N*dqH~6nVe!z^vX77v#~@wRS2o~q{PocOngrrE87G_)b1nMv z;+gX&-<(+v4Z-MdUY+~+)#tzKA{zCaKW@Kq9O(3X#8xZ-ia9)*u%*2E%qHGE#^(5< zym+|U2^5Bwf8+Z^SpFPwkSeaQ-kfK)d1C`RQG%)e8yI`^J}G_>eEQjk@|e`S&oj+$ zG?4D!DBAhY>u0MeK(R`aIlwtpIYZx^&6zwm@ORKJ zQOLRfj8h{Igc{5oWnAH=3Sj_-X-)RTqV#%(w+JQtXcn0XIvB0FQKk};VT8%*WP|xKjj3KCY$$qlsK4UG6e5^T!3L=$eDK|JZ4h!$b&mj33L)A*i9X51 z-$5|{+#XTwbMZz^$22=9t$tP|Pb2UgwA(Ab*=}!%@@z+tFmHuh402X?niQi4N&8`0 zs+&(NA$Kdk8a%x>7mla@XvPHJC}zesw(zw$pTz(jOoTQG0UIHH)>;+dbi=q|w@%^- zsR96GiK&}~{EilcBAy4PLJAP5V?8A95S&>PWd>IP?^@PRkw;eO!3TCT*4K%h1T z;!1*tlJ)NNcM9#fX@UQmofmklYMkVeiwm7TE6`Qg#;k{1(BuIQ=hB<&T)^H!;yRyn zu82pnPG2S8-hm}(wxP>y8$&LVZem}^^ZiRtl@rD&q`WzfKU}~kf>^iG<+f)!9>-!N zp+fhPen~d&TwFV)q6A6A7HRvIwglKN zc}lw#wx@{fu>Q)>68JkA)1GecI*#5&J8g@(3PU# zkNQ5B?2i*1s=4_2&st-Gjy1K*ljO~f44pa1#0UK3 zgpZfW!aRJ#0CS)~sh<=L$-JvP*ZDBS=sa7@r{N%RywE+QXZT-s5OTQd>2zr4F1bTU z7LU&D^LHI?Y`2)1U;lXwDAhMVRel~g;(!F~f-&f}!~tzU-X&q!qd3;KgoiaT8*1I{=*Z9rsgdrIDqLT)%KDl&~N>LPLKet#3L70C*lusaq+dZz6q zax}%(*4_@uwrq%2c4oi%nf-J3e6n6@>bt|fL2V|*RA$NM@1F*jw$E>W`~iDBj2|6D zqZE=L5pGOchDwQfK9 zI~!a)#y|sUTQbN4!#mB4tSu*ETp?#^vUXl_-sQ}#d@RCof(fi&Jm3dLAxj1jD}w4P z)Co#7b#mAG2T}}jC;(rx(2O)i?Os~nn5`?xaTL=nEP9M$@0lyh^HEv7FhG=48W?p+ zQb4N$t!C|6OTU6A&e(X)YMlRG9>?eOxQY`5S0(i%YZUXwI7m4qMdEBx_GwT@GWdM( z`3Q(JOQRXVN(F@aAz+#-z!eSy(HwyLJe*5w*L3mACzDa5lF?F5r)vVGj?J^Qqh!H5 z5iaZo60xT}Nvf=>PG;F@PZM!hAB|XFPXJN-!~m!4o`>VqeycIqSn%7p9``X#H2tJg zU#$};>?v@H?}$ab^XLW6^gV1VOrVHgNM3VN~ktiX)r!(;NZZkIlVG zq9jA$ASWec&S^PNly&H*I0OS-0e&e@rIDr{MT41B$Tb75*~~&cYh6X_B+Qio^oe0xq>oY}r_nuqvBlt6nT4(4vL%9n?!@o;FYwdNZ_ zdy0*GZFpm6>++w9n_5Y)T2dmVPdy+p04_X(SDfQCKn?9RCfy%mg;RX+HhBNnG;_oy z2tD z&+eBmSA#K5qMLG`mypd|CwQ;8$oGW^5=LqC!usa18j>Tb#JE1L=?Wg8I}RHX8}DTp zZU;OC{ZDF!{`A(s-yCpH;7ZX5`ojATcjjy`Z@+STkdfet6*{SgO>|o5Sp`2E8#wUQ!=l*Pb|bIVKc)nn8#7r)4H2- zrp|34FHd8K-bs9)NouPFB`tEf&fWHcm?0QBoOnK_xbWFZMRDQnr$6C)yi1-Dj8@u| zz-s6t+T?v!kEVXM5a4_PzGCjQyp`X3=u`Kca&T&ax~9jMSbEVc$p=qhkHQ=yF9g;f zPysWa1JiV$ZrxqsYc1@k4n8k)%`VRWR^M}aH*6XAdM^X1tL2eX<26vk^jSu9nYm?< zgC#=N0Yjsw3H%AC#wNd`@4`o=xGwaRvdxfN_sjilfhr04v<@%!Pk*u{FSK6mxjej57jq4?22~+SL?uoI|_K5Vs0`TYC(5(IzSUnDpkOBGnQl#QyX|R z7-ST4j<}o)L*$GE!KIZ*@FDrWPs$dc&Ttz?^%C}6B%bCEI`1j&^(BNFJViPWNjZr6N=>i z>W2Ow_h2MWZBA#Tk!J|DFXGi{^pjUM6@k16XLBV1$5`72AHxDAMocqfmD8*qJ2d5+3a z9LS`TMDmG^_9bE`UQ1u{wlFa)j9f0Xv$>@=Y+Xcu!GtD{Sv;nFtiPM9-{2|u#oFLg zIs_$5Es{+9J+0$_!N8M7UiO=l9^!ty#UR8tVMYLN*%cH3IKWtKP)8VIC9LXMp8Y6_ z>dLKbpp;(0M->Tc%9GT#`8#VnvpG(7!W{}A?hwqG2<-iNy6h(0!t4sp+R8yV6z&7! zJZjI|HTfk4F$kEXYrm`kCOP?YHYPJ6K6g5F54^G`_l`4XGOHaxGmS|J;Cd?j&x_ki z4H@KK5sDCDz=csL-OMmPNZfU|Sgnw`C11c=eep76fufA6(5a)=5eXh3>dS8{hzeD~ zXqyFl(LQ9w37eA!ZBTgL77+;RHtMR7sr0>|sqU>%7l8}-sZsUCloGWw`nmFfI2z-r{LI1xOk^lesm&wdO b&zFBDP?P^a`V9O{JRChOBh5;6WcdF8-jI-~ literal 0 HcmV?d00001 diff --git a/tools/pwm/ramps_samd51_tcc_910.png b/tools/pwm/ramps_samd51_tcc_910.png new file mode 100644 index 0000000000000000000000000000000000000000..0d1623598549436a765186cee9fd84b5d56b90fa GIT binary patch literal 30925 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 WXBrv;b9#KdiT*PdTAMfE3vCZ<41 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 literal 0 HcmV?d00001 diff --git a/tools/pwm/ramps_samd51_tcc_910_fixed.png b/tools/pwm/ramps_samd51_tcc_910_fixed.png new file mode 100644 index 0000000000000000000000000000000000000000..e39171679f6a9e3c532466514d0edf61c85c357d GIT binary patch literal 27905 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 A3jhEB literal 0 HcmV?d00001 diff --git a/tools/pwm/samd21_51_board_pinouts.png b/tools/pwm/samd21_51_board_pinouts.png new file mode 100644 index 0000000000000000000000000000000000000000..117509c00e0e49cc08d0eb407ed8d5ad913af250 GIT binary patch literal 1103760 zcmeFZg`R$6p)YF#bR0i`=cK)M@# zbM14^z2AM${Ri&nbKlS2ZiL0!@B2LSnRCoB#$4fw&t-04Q(z+yh#OCzNGc-`*qjIi zniUoXd}jwQOC0`#<|Oe{1q&{3ER!(!`z>cF4d)kjX3lPgj;086TRR(5b|+&;Q&U?f z3p?j6)J9Qw5j*llj~z`7onPA7(yF|)F-53YxX|9`p_O&9rRC=0=B2&QEy%+q2wx~Z zqg9kt$yoL0MIdMqPbI}w+&`^PyE(sar@+`Y_wrPD;*WTWbtfGg>+}0uEF%;gT0ImJ zoHPw))^E(Jj|f#%JY)2}Tz|sJ;*3RC_K2D8I$hkpbw&RL!?x~+=|}zqim9^#UU)*Y zz21A}<08MO-Ap8~Q0V{n^_i94Zvd6{|K$gMWEh+`3IErn6lb(e|G&OVNT|y4|G)hI z6DzY6M2#R+^7R$n_Y6`^jE`qhVO5Qb6vslzSBqF!xS8EMIEW&fdGq=6=c;^B-D$s8 z6%`e+5O2E>oSdA@ai2D?*x5*Nc6WCTxDzwEt939G6clDKuN)a;uUC6`5Re*{_Q4z2 z+S=k9s2qiMnY0Y&R{!*hlfBN#S%}I1|A@1iTN&hGD*>+~A|4mc_`HpaGgWPHStI4O z8_ARHu%B;1mrvnFmx;RF+#c~%xw^4YOh;Fjkd*Y5c#x=gY)53SiSUtS>#G~?S3v=Y z?rZNZC#nb|x9r!Il#~)4Sn-`UOp__Nt=Nmb^5`tktAE|wE1%G3_I=6G-OH=BzaQUG zAQo$unS%pwy5{JSgF~^(pTB=!+h|wP^78ICZ0TqHnwRwylzkmR7uz*AKaZlXuW!No z@vLF%Y+l)syWzrBIK}9VywejGB&uN71%`F~Mv(j-h?P%)h`#uw8m|QvC=6p%_ zeb3S4FP6x%^Q0pFjFouoq24C>_W_!I(;OjbGCG{AzB3#~$nWykx!OfW#PN5yW-{8+S&{kIsHIoNe%V^6Xh$ zAlb#m#o%WtCtNB);-_SsMlhJ zgD?z#eeKg|u)Z}>=5ftsZNz7wwZ_W4|C5xSUdpshW@hG*&z1R)PtBdFxFr+nii!k( zek7x+3OHFgJL5Lo5>Wow`Cj(!jC%(DjQ3)sqnOu^PXa;uerKv5F;UXKNNR`67;WsY z{vy9@k6%ie)b{ut^EKggum8wUMe<)4eq*Q@c4!!N*w~l`n{ExRU~<8fphtDJ`_Z%; zY_`Mb+3NPtiv-~l%r9TR8nwTUgGH)eYuJ3>Z18AH)aOf6``nyC-B|fO6-yFsZf=LU zCf_@ZDX0j3K|u+|Sk>{dO{pM^8(*5Z;$+eN{H}yH7d;7{8yeDKV`Ec4**1FllBFYx zDsD*uC+4Q0< zBDj|H(5_>9UY~YnN+5~0Ykl3?#N2$*Lg)6>^mI&YY*2>G;w5Qwgmea>rsg;TQQz!; zPyOfBNOJ^@FF(P|%naAZHwgcsp&pG2Yt6U~zsbXmus3hYScRNd2vWQ@HS0!7vz}d? zpL^F`{1AHb^l34xnEf0=&*NmtaXItludf+tX#<-TXNEK9Cu1e1J-X!=wPttj{_9-l z;Nt4tp|1@L4BU2K8~I*W@yW?{Q}s)hxyJBQVK=;(m>Bof%=k@Du^&HvxcfCB$Rnk1 z3%h@l4I*1yTy$7yyN>XWj>fOBo_QnaVyQhG{`z$bjbC1i42=&~h=h`YXSlSPo6w^^fOaV zxk=~g(=Jr1qt>Qhzlc(O4p~Y{O7A=U$vdO2BPSsVX|QW#K(8Cg(ZnGJCJpE&6Eq2oteSdhG8?_!duMb^^#L9PpLsw+lL)x3dgNdMx@7c2I7+jku zdl^*kb@;jH8x|R--uskl&x60>nabls4-@72y$;uXXvqGRH3nOwkXb|B!h(6E@ahHj z`LXvHS8u}oUtec_vxqGunx_P0WEiXB@1#suIcFy&B|V#?N0iykQg2LF7IqsF`X`o} z8UFl2V^FM-rpR36zC-W)cZ|@oTuX~}#F{Uos*0S(XaD|(LX91Nne#0bMMZzxX|E@8 zl9g7Ycs=p#A)%q6WoshJ65)xW$rLC$}VLQ z-6WtQ3M$a8(HPb*HoDvPEM{n{?u$^4U;A2n6VX4uq}4x*{1+)Am`>_*b*ty{Ogsf(>QL`Q`E=e1(kIVVNW8n2a) zp;)oLmg-j!-`#k+E7$w!0S-g}zw0{r^AzE58JhY7<@$II-IghjJwhs~NFMVaw49vy zQ1T!fN$vgV+x{J^Ae&g#T`I(Vv(|N^WoNO|;lz=GL$~G*`m)Gc-D&9C&K2T4Jcj(qj?Bxa zt83og-rH-OFC31y3E4DD&}tbN9H81kX)1g93**XX<3Zi!sb5TdeCW<1)10hl&5&BQ ziqQa5>JvF?8WD=n?8ftJ`D#|>(NPLwkw-ILqdC3Se8z(d?PE1ANz-gz(|R80B3=zz zn;z)h*Lpv&X})IHu4u9@re$Hd{z#K+pecZ+W$^h29x;7=@8kJL!6B-)1kWKSLAqf? z=XjpLMa?OERYzRro-C2>Ut24LapM$?lFwH1>C@{&mTPS0kb;^^mU_~DY0hdF9x^f%|-(_TkGIbIb71f-`W3H&9gBvFsf^ma>;LB5@GT*!hn{Jy;cAe4j zDa~em)XiIa%gvpgojFm;*}+*^OpMP?sfAoOA8Ad*IiB5PVQGF%a<9mz^Z9MT{VVyr z&CSg)EPR>VPU==a{k3ozYLB+BHYO^>P>gWuXK3RNR;O_&`K+5}e9n*?r@=;whCVC~ zP-L)HofDp03cI9kFe+K77@nJ$jAXtg1V{Pg+hB%G6h5=I+U2y{jPzuMO@6muiXh3^ z5lvC|WtIvvmsv0Q_a*M$L?JSWyAFuEOsC@stHSx#0Mz``r*d+wkZ@z{8Bv&?e|qHU ziNVd&vw4?{j4U`fc&@lp%Ww{pM&)!*BhiHW7B9sO6YfOSYN#uDiKPQ4iRNGWlM@oi z*T;%mzv5>qYub`do$UF^oR>STE-!~xo;5@&VBE-ov*&VAWh=^uiFxDp?c3IWC-0$l zbN~2}$U_#Rq@=cFTTtM>oa{DGb71_vx4Q*jOkUd2u|zdlu-wXcdro|;){RE3Q18ax zjU$~>8ESEef%|@!TVYY*9k4-k!Tyz%4?jM%dWAH$1^)JnWEb&CSi<^czJb z9yaR!G@MBN9Y?Y80(*2g~LYM)O)R%F4=0u63pou$D`I8=~0hN^7pP z_S>8iAXI*+lA|9p+Wa^)@ARpx?9Ca`1`^B3LO;LsU#r#~MqK1=YxSPfgZ#XBQAQ`P zNz^WG^V>hFs;QnF%2%z8IzCy>ZW(VMw$(4N-Gue&qvz&U<`)#uwsCTGAXyu^VA(M4 zO(=FfJ2sdLcRHSWTpm^_v%ODd~v*FUuR z1Q{nblQ~(svX$f_<1;BGr9t+!BzeZ2a~$2^%ILxb9`mT-iVykJr9zu}^_~%L-_|Tq zkG`N1#L5_CJ}9+0b4_=!&l?cXtg?^k6VNR8EZ@gf-5)NzLO?BEr*@K;f3v;6TVSsb zPrJ~Y$m8ZAwa$~&_fvT8_d30i(cx4@-$44~5UoYpzo8+M*0tUzCGNXjO!u6HAu|(` zMzrT#)Na+g$t;hKx2xvqR{k)%EuEp{?(R9gQ@Z_Aj&o9n(`$5UuuIeXe21xW-D+%m zUaj+}858xMw|u9LNCN8~1r)!L}SCnY82r^ol+-nOFoRzogwfJsWZYV2=luGsZFSMNfp zTyYk>9VzlUEDWm*Ac>xyp7Mv{B$v%|TsXRz(5zNfRZZOR*n56soN0`V3N~u&{8q$V0n^ldsRD+q@q5bl?IWMKpz?idAjw+#|+j)2=~t zkTKrrptRGlq1+jc|9Q}`^C?fWmXu|*w+gEcNz-d7iH39#{I{U5`hCts$HTeXeqF9If2TXfG;y@v#5&mWo=z3*AV z!og`h-kCLmjInYyqCH^2i|}9SiDwWL?D*sEwmua;>UALP;NUPmR#&&Z(@A4EQ&&wc zWXAiE&qix?w2eAn?ViXeq&ka{UOvi&KGCalCpMibL}P!doodRbcY*PGzUW>@8<>i& z&nC;QLOu5W7$M(*e;f7q^i=jB)NkkRpT1PPgEvPjGgK~rhl)MELd%un@#mI&>LI1? z*@3$7!S7f_W@0XKT==cWtK3InOx3`QnP2?7YA5%N1L@jU9?Nh*qsHFRXTs==GDt)211>vaou=* z>sQu44<~l1J%n>3M4mCI*`UddsIhj##a-i@3M(uc9wP16+I`n4{*?pIPl7%a@f>lc ze!~{Lm3`}0(0Us#xc%fgJ6?=ljQRR(Yin++saLb~ZBkOi-ZH1bNZ$DN&Q9}M;T4&$ zukXs}mPmFAa15u18&*8a*($8g9_efuR?`EDz!zxRj9T!zpRVGq3>7oXc$`teZa4q> z^t^P3Gx{Di{=ed${HqyTS~FO)K*jlaK5FVbLp+hu}v{dzN` zNG`h>9q)$@^dBLLM8wuc?V9dQ*D!E$_W#k@9IqwQ_dU7$Mw$V(O3-cd%~s>RqzEQ? z@@TWZkD4N->P}8J+&7c@%;Z1rqXNpqphLS&MKxHuoSPtEjPa*0Imob8RHpCagZz>Q zdSayiZs$z!xgFnyQTqZYdB=Udrm7}9!@)r!ti;+ay2ARdsjhaTZ_qRCdOgk*pTlZO zZlQ8gfc(~f-=uO4GDiIDOC$>+SO5TIwEEL@VST)m@751w&E$9ZJk+4yc)4VjU(3PG zDw|`+Nu(q7{{8zgld>GWjIRm2tC;D-mLUWZ?>~HaJ>MD{@uOdq=_V0T{=|`cdDi>; z8y&q754B26!iOsBdm|3t+!A_j`633sSDR8iFk1NW$@Aw8i-$)Gt64&_<0E+E)%cqu zEBB49OG4}Sckj_}j@@VJnf{?$+h&|kLnd~yAN%ZVC4s!yafybWf#H{#_S2`~?hE03 zrni1iO-Y%Uyq~^*e!i!Yd*Qdg!}Qa~ae9~J-WT)DL~}vy=}r$1kA>oqXgMF@s}`Jv z?znqu8#p*P?OCZlws9!?z9xEgo)6Tks=ct{v={`%&ZcyajJe1q3uo%{Q&NX>N3kHV zRkzMha2BeUQ{%ZaPmWK+OU;RFPS-~AYlj`KF3+wd^;+3A46Enx_?+%Lc7A1NFYo52 zBq8w`?Ic&Me>Hruyt>5RaJ(QFlaj&_%$$VdmmsX^>|T>GR&Euqde+h+QM?;1))qx2 zv|$$aOiqqy*lLIv0LsvfeDm125@CG7z0ai)xj+gezSkU_Zhf&nQLl}AzWw;6j)?wQ z;mT;^6*~_nwXpLOcaJljq|$TAsq+48%w&(^&fLP+P+NOgc{a^ceS9Zz5gB^PjfKd|a-wAc};rm1c7D705+veyVXXaH8LSg57fhohZ z<5@UE&+yBWdU)+%;p}Pbm#u5he{dKLes1S8KHkYnwXJ%nN90*QV_7?BK^)6?K|8!U zmL2;n`R7k%B+mI_oFeAe(C6#uDG&m#mvi*Sg7gdkez>l#Zs31Q2T-x3jW6-x@Yviisc~CJrvQQe&W{ zZOZX0*NRLBB)hR|+WS%D?1S-jJUnT8doEcyIbHrBD+G1p4A!{sfCeqOqA$s+CmEEt7 zhhi0st{UoHC(CSpVIY874FMSV-qg0vHF`Klml9<-7nQjuFN=M6#ub;dai5;?&D98_ zoLR=J8}q+^qX8@!8d9;4lbiQsC(^dIW_$jL9|f_!yW7V3B5OkUML|J9!v2LD^Y{MF zEgVvn-_BDHBHEQJ`X@~~>*8>LK0G_5`gx`xM)f*g-?!_}L})PDVtn?Co!>90-ln8P zK{&3DRihsK4f!y6^iV(g(bi18H8=gM(2%EB4evkU!h78vXDzfE&LQcDqzdA*nRsG+ zF9|2qVC5|x-+`{K?qG(O8#G;a?%t(iS-pvkgM)Z)T91QwJs>HG5?Y20vs|x)2R0ML z^R0HU zwS^iNzZuoqfdNHH8JTpu*~((WRtzXz-eNCr;?W4ac^rx-r>TyLidyX4WmIN4{P)8} zmkGD`PP_g7-{GFW)$e+iEa2Y1KEJqC=)4xSuwVog80%tYE%Z-c(sT*jfdVcyFBU4M zuR&ZpKfUm6%8|nOnY9B??~A@CkOC2ii3*#DYA3T+sN*?e5HjMa-huDmt3Z7r0%lJ? zl01M+f8BDpQS0EUH)nA0{_#QtCz8H}UXYfS77-8-urk|7<0`Y+QJ`D91Hqu_!&&Vr zk*1stD;09?@t3p8@h;W;{5;l;{0M)41e7@A-S=Hj_?b6ohy9M+#?YZ7LJ`6th(T4)8nd-Z|WyjsO%SH#wT8iBqqKk3cdx zNwm3Z0EapvDI*?OjnXqQWlimvn3@`%>@Fpo_7qlm94MmahRHfR_B6)5gu--oMM_-QU;PQ+~QNt|5CjP%00}-$*AEu&3WZGFx6tT&v2vpKe1kQBajU&F3sVP|ho ze;mqXxFC63(3xB?`FYLkZ$|;B!irj26}`@?I$Pa`I-6tO>C*JPQTjC}JD z&0T~UJ0vh5A`W>_!o$N|D|M?K(K+k3ua#wHE>#@u?X@@5dqK02@3{7D_@hww-{aA* z&sJvr5Xj78JG$yjvbm;rThJTr(fA$!_)+bVd@>5`Y8~IJz;Tne*HHI%_qJ-1C`-Tm z`TaZXhzc#Wokq-e^vvgNfw@mE79Co{I^MI!~Tplx8XoqbJffpp1mvaAFzO}n5dWwp-*G;O7dqEk}fBL z{|=*Wk1w|Z&t{ZsgN}|)&SiiI40^o1QMtHY;pXJhK9nuSFyDLYwvcPDAqMbnJ z^f$vGjP1R>dv3ML*=;<@f^^*6Hxafc41sIBmIpR#2-DH;?(74kh_C$#0joS_D&N=< zpBn9{lee$t+TkeAM~kU_cH0ttA}1Hyec&kqJRLSp#P(WYqv4-kO^X5AYrqpfwzn@* zO$BntuJMBJ4I>dy#R>0qwUBZn4k(TwG(aLIh5cHYs^)>_=w%$ryZ%6L*xiOlu z*8hIo`c;?nn!m1>ctc#5ct!xUF=blpKpY1H71c61c@}jxXffngFI?5zsUmnew3%W?uy4u){KQA1WLpem)^W7&j@44>%qpz?1lYkTGEdgR`1!YMw zr6nGoo=uaJlpB-ftvRZ>w6R^=D;cJH`p_N}TmDabGXjI zRB}~$@HK7$>-X={>xl3!s+r@ zCIz~kbxnk6GbT${e79~xDHJMx_Z0%9MrhjeAp;t9g#Y2jgmHgLJ;EQj=qX1(008h~ zE4NADt_ew~Zltlf+bq61uoy4Nd{z(8{G1_(EZ0_iGW0PhrT14uySOMKkxbmmV0|rd z)56*sw32y2u|PfsX9>9mKF@j_O)XMnvh!J%svnviWbh!qspgWpZq1;BJeuSgf*x`t z;=Ys3lqv~;(OHn{@^p=}&M)F_EYZ!In`<{);4EO>xFKa}$qK>9Wp}xC?7Z?;8$nNm#c{K`sLS{f}gF*e{5-j_eoFb}tK-!+xgDh>A=O~loB-Tp51@Yw*$o$)H9;j`h;HquO2OaoaEna<%^ z@MuKeET{OPXjfQENBrrt^N@!Gdu;WK(Rpj6&$d1`>$zcTN9515ug{XEcJ6=Z1Qm|s z#}DO^301#5$zJ)bk7NVK7tMByAiBC6HosW%jH- zo&${Z$^l00B(x1?y`RE?dJkQFWh%aA$KWW?Z$zne-D=ocTpi4)EpuM|9+N>pMP*!>qF31Yg@$qVXgy-9{w!*L>uD^b z;bxu3(#V6PKJtgQx1sfqM9Tbew$msGKvNPL8a|NIy~c{>D{s_HH5g-x((vU?EwyjO zzgwWMT_TM@hoaYVyhHTm(P;PE*ktyDtU-(IgHip-Ar=mfj>^SOh6fMIe;%IE0{MdE zl)R4G49+TS_~b4o78e!*r)yn}wo=Gz3sZg1m2xK2#8GdLHPVP(@-L-uqo{>AE&oX0 zEA2O0tFS?I|LAMGzF2I0#&=%qco#T01OglcD>L;%r0iPGJ?7I!#Re+_3iplw$me=W zU|G)=qxziI1=Q7*7<6BqFN^&{5pQUK=DpM0g#YEpxFf1Ha}v!1_)FvUDhCaq1^OJk z&oxw=8lN6(Dza0rWQ?W~r zS@1AtQc|y3=`i>3e@2a@iU4tjbR@+=8m71;el#j3p25z--2?$AQgE=)0YO>l>+|WE zFixgK0C13UiAg{7tB~|6{i^a!ND#PbY;PGGX=#Aui558|f5*W%KUQqa4B8V-u9`Sw z>|>7DW}{-z$B2NiCKtBg`fQvRR0JRqa8e``__TY&hR{b7NYILiP(8>|57o*L-yF^z zD|O@aJzr(=-XH7)q4+A1a*6wvCUQLI`6pqB%Vh>u!Beez5oP=2L5s3g1|9~Y^mLaEGfcUElzSzv zq&{X=4heS+a;Wx3#>P97c8&9k3K;(=Ts{EiuxQ!Xa9QK9A()UN7N~@Ihqpjxm5cBG z@FK2j=}G-3%W~b^;m@ucf{M)Rm^>hp#oiPZ2vlSXv+pZ zd{_W>0Se>sTH&*>$jFeO3Zx3toCq+dCH)iyaoFK`cOP1T;*a@fkYPfd(Hh9eG)#Fkb}P`~CY~ zkmqh>3}PkX`s4DG(%89N>DJk!z~ig!1wYSf1yKPALPNeJ!(t7^Ts7L)uU{i!ex6SC zO;oXSEUS^cfM$cYQJB~Gy?=9Aj(kILb92L@BcP#)_JBB_u=Je>g7g?y9)vqCAfRR} ztDqnQjYk~mdi>kB{?$&)hW#lbu);sxjg5_=j=y1i_Aw1k|2MTheBk>MgzTtY*T(`@ zRxEU?9hW8^#5Id&h(CFP1%2-M#RVY&0c|~`Cql43FccRf>thrRCyvgG+~Mtm1My@* z@i^Bj{rH%eZ~>=fqvZl!e&>}UVq7Nm?+z;ibV>cepw_~nl|#wem?)PzJKR7XX9#8^ zNM=Z3G?=;PU>vC{91O<;i!FZe7v+0Te`|9PCdzxCKbuqKM9>A;J2}ORW&kw*Du1Gc zjm7~<99qI6k3F+5S^CW>^c)VZU z9|sEI2i=F&xGXFzYMst=O(;NqYhH{&%1T#ieFgeEi}nWr9wHo4j$jbi$BhEuz(6=5 z(*rbST)r*txYXRlF)>QVd;JGt76bud+xCFcKFq$keLbQ*5SXSsy;6)H96x~UhSu;q z;MN$1;sjA+3{nmqEQCF@FJXlGAPUJ*yzulC{Q4{v4*@YRr89Nkf|ml&3eY!n;JE<6 z4rSD8eX@}Tp$Lc=lq@vM@*3qWs(%4SKM`?B=g4LQ0_qe!iOi8PpA$?p@Ic{aU;3kL z;gokY+fGlo1WIaYef-|teKR@LM~&6Z-uWh|t}VZMv_W~i{@-$`{S$B_QXBs2uia{3 z0{#Li=VkYHjY}b4gRj6jzrMh#Vi{@g?07Su+N<|#eO7!tzwdb!fkaqco$z3u$DU(! z|I9tEq7UFgtPoU~_S&z?5Uum^ZjTw$s9hGmdshlAbch70BR{}v>6?D+?&*O;re5iI z<^=bHL&`<~s$*i}-N3-dn-;?GGT>&zfB|yc3V}$uF2iJwR4zN3m8!hnNA}EsUgRU` zEZh)Rd7Cous`<@%mdI9ke~QHeb>LnzMfq%}n5U*hHdpF!fgMXKmXwyp zrqLJ6{&8?N3gj?9zuHq7%wkbdt}XM}d-7>Gg~%`BQr!It~a4aGoaLES>U{JCAeMcDn8UehQ>uA7#qm zRlh!v(Q3kgRqm?AY7=a_|s>$^Ao z9=c^;$!J&H94?I9={Wn75iLf_82c22Ns#*Yqn59esXv7MQDr#_AGap0_dH^8(;pS% zDOfvQkaJDF6<4#)V*r|q>rtu6s&bOYe23G|`p#UnBR$jO-Q2=%Dk~|y4C!c6(g-Q< zlgta>Aqq?|6NpP-(YeYKpx=}b$}GIcm)pa27}d?yYaJ>Imaq_WKlo;z*OVs2w25_;3N_be}p z44NfOOwC&jxE^Kw66c72oUfMgA}b1L=A&bi0Rt9PV#N;ug|-&DV6imX{3HM_heu!= z#LCRn0*v>FF;+ZZje(y2S}GpZwQ{YXOH>SvNCr4sWo=(&GbNHIT?td8X)bqP&9H87M7xTRa45gx0PHc%kNQj_5 zx6aPeKMW$dLKemUT0goBR51%+DLH z4Cg+qsoyOr>znMv1by;*S6B9cD1Zw~bc~7jNEcr2rAByjP$<#}3Vk(19Y8&P0fBT- zbU_csh1|((dKa}jC2_mR9v1DhQpPL5e=!AHE>TfY7C)=51GEIW&~iA(wDe03Aes8p zgUt2R;T+Z0pLgZBY^N$U8VyBCN}bYv#p%*i>mbbmb=xgCz^z7GXk3ln#XCwkuBhyPdTcu@iknjctZ_^p-X$J6eYPT@r zWbd9HZG{#Uos#po-UdJl>}39j5LH$ZW!EzB5rCT#p&w1IWyf&~?eMX&13`@j@)dRzm<%Ry2g#2cAD#-(W+gm-R9R(_Y3hswFz# zdp!M?z}?eRBJ0<*s#kf=`t4Ae;MUGgnVODK0U;pFvBw}R{Ew*$L};V~^=P8u=dWM)oM$0WAgaeU zD}co_?mV<17qYz##;qXeY+rJqcW>f@YdKT-I*pxOa7gIl1_6w$Ld|<(rQ(&sZ zZBsH|E8vM-Z6L66N!8LBgS5iJw`uCGMD@J#v--@dqAMR#@P<8l{u~dKthb*&U8~o# zbD0^oeDLYhr|uG{mX*cU`J_7li^pp_MGksAGs_^okkHzPMP@cONf=!S=??{3TSrGH zuNycGZXTX{x6z#U$k)4o6>IQ0vtRiA6!8eG=~`lkA|wp3^!44|-_I+%YuaPXOA(VC8`M^6 z9`n{7L*1$81KNi!6N|Al6bfDof6!)NBelzGefw2;)1Cn20t&)4$Pba0mWIH@qn2!0 zMI(+U&hUJM`1rsss_67!9{kS$wsQ@HpdAwv6XVy@mJncIXk~p%z>LF%gN60>M|!imShWi>9RyaJZ0xNM;d#9Y75Gps?NM5-AUzBf@ zH?JYduSfT6Ub2*I^y-518$c_IHnkQO;0B4p$_6IbGR1tYa&3%qU1;%O#bnk8GnBVo zET(I|>DJ=?MH>!?&&nG1ct8>PM4{im-H39^CK`--z+;-Zfq`D!%#87Hb21cMV+ce` zYs+Ar2hR|=b-~#C@})X3tY7#Z&OQVq;H_JU2-eH;{`PisQBhHn0zV;WxxjVdy8Ij; zAD?C5yr!&-H_05M>f+PKsHCL9_%G#HLi)X=a{m0^r+9vxLb4G;(8zvU2aFc3CQ{h|@zAC_H$4uU{J z<3KwF{6WN|r0MiWeSN9phdN^F=KU${#m1eAo;JR&&i0b^p6TCSFkubn#IcL`82j(J zNVT_r@96{oH74j0F7R-N#3TzJQL;p>-lL6U|{LZC#Hx8Ki|MT)pn3{Fg{1+ec-+y^n zEw(28k5r=+cRvZHJB-i)9oz^K=VY(;IsQ&qcl@&lfq1B{{)Sov8x&1^$8Z0B8$^{g zFA_)$&gy{+S#RYhIy8T_nsyy;R^4muW?3oz8JJOJwDA?anUSIRJ`vB5Wx3JW)L%JY zJpT{7Vum5ZcaxGFsyl>)({V871FW~SXCYW}svL}~YHCEAlvMFx<^_ydU%q^y1@;hD zpP8LKM290ZC&LbP6jIgw29wKOU+Qap!@=lg72vziBAO- za} zXl~T^A)0yQDe(j^kH&SI6tbq^=-C7#J-irD1-orOEs4zM}aF1Imvy0o0+;> zK6b~&>7c3s%^3wtE7GJiO-Y9aP75UeVhFxt5X7WCPE-mo2_D$Z+=hnjRdlohN%Y|s zJ0l}T5GH;HP&@OBi$TyIE+T#F(it8Dj~P6_0d$(%>lf>Uw(v^{nVvg})o4M8a#zuH zdiu|pA*n6@?314pm}f<5+#W}7PE+qIBI9F4wCdeke;%Pq^(x<&hN5_d8c}l}qQ#fy zXyZD;xeY#J7|4?Pl$<8U5bC76VO@6jgW&VAEv zVrW~z)wD2G?F95+KzuwIsDChpfqZ-r`yuDA;#*2!!GPCej(7$xE&|ZcK$d@^pb%PG z$^+aYlc^6Y2M3t1xv!z30{wwxk>D4Lin#cv2n?P|I*VCPR@}HaJt$?}J2+@RJy-)5 z^|8P7LI0iLrp@Wv9Z;H~W8RCJ0DIsbu3p_^NQ}$9F6XaXkf-lzOuu!=Bg2i~|=FeKP7b(2_>Yq1pR=c~2;19#_FM)D~y&t|V$ zMn@|pe8iA51cRmK3Q2puoRE2=AZMy-`AP2EBPHPfxdz4FJUY?j1UwYn70dJ(YNKkd z8c?d35Ft?b2OItTtS8E@Lm5MGfgB0`3^MWumc%f>Xx5*?j(+FE`}b)IsiH_t9m#dA z{>oa+Eo?v{I}ipz#*6|q0V6m_mUd+z9rdexVj$2$3%|Q!VKTT0tQ>G7N_Uro!!DBn z>jK>#0+l0o7ny+g9Riyp;?`lS61WVJEx{LVsK!uVoHwU#ZPo4JwY0XTtL1`QD+*$I zp|J51IcKudeXsCIs+h`s*0^p)e`${R*-;t{EILJHWk68)AUi_b`t`aHNzmTCiw=}x zL78ZBax&Nj)L&j)P(l-c?1ZpTU?zYg;5msJxL#nq?f0KQT5&@B{BuLuFQ6mNRU{~e zu>dHW_DG`1Mj{N`oSZjNKHWzdWmktfQi$ zlF8xlqzV3~1Y~4P$?AY-0XZX8Z@CX_;-Pp{iuIl@$H&KMKnu9<^*sbHpzLh{N3_1A zhki{NS7%D#U;deiqrw`uf4Q2KDm`7}vNb6xCnq;pX{Rr|`<($f*T(ulBjgEI0O*bB zQW2z}Bi@C1vR03eta)`_QiY?7bIn0qiSi_WWwL(Jv9PR09Xjx242HoZgHc-;;SvVN z#G26k`-I@~YYsrgWF2}Hwvy_f_+LdCnRvr4rGSWj13nKJl|cn~)&Xxg4}+^zLat3< zo7Sy$l>){P8Cby18iNex{wLA=ZE9*XFfL$`?*whJ9n9NEkI8@en=;DEh(UV+ZcZ#S za{$>t0LKo^G&JCleT@I~CiXf@ORD~XQH>=I{W_~r4q{^BrqI`Y4=Dg0mL<^48_=OQ6%&&>&CoJ$;FWiP>txJ-;%TF;?&O5T=X1~rS&Qm;l6Bw?`Hsb% zfnDkOTF?jBcW}o0Nhz{T>qA)wP8hnLV1jGcuV4S((-Tx$x@R-l(cUheJA94V>y@sK zjv}0!d7o66#S^*gobl+Ca;Wn=cXHFop!%dDPQW%6`T5(oZ^cr^;dhmcBRWzn*1Oc7 z$s65#&~fuu-r$(r(6^ItDiSFIRC;AJC4w(UK~_^6duKsK4kFzF(nO_OqiaS9$-BMl zo4xD3JpFrrlB}r_1}|SCXN$oCUk#M7b!rnAF65&7RwHc4#OiZsH&Yi5%ev4>;};B5 z(a(mj2$2~882@Z1&zL9sxS8N=JIQLj$GN)=SHd$jHPVKwc}%thvDx)s-!022tVX

OJ47wMG zoDdi&1jQ&*(GQeTpMGX^~ozE(3TXh zy4i!O$7Hu}DCKUF?^)T?CcP7>!s*Z(@yA5pMJXO<{fAM3>r4U%g@vCyz(h~9cyfcj znuCyqaE|bv#P&+^G9-?Qt2osMZ4VRm>m0jlC(=7Pb8FZh7HGS7)j>*^XWiub9Y1I` zpcCxwQS5kD^K1|OQ3*5qqv4hx1h>=3toKI4<+%+Ns^To;6)E_;`Bv^LU^h1IhP|ch zdBr7+S@)E)`5G$6J#7{~&pL*!hvcaC_pETT*<#H4WlN7G9rLej%a>!4)89yDwsT}q zC|V4sMg67d-q%p4?`D2e8xzw)yg45CVIzG2ehC+{J47iZ>eq5~vRh*8bMB*&d@&eP zq^~2wBr5t*)ht`mX;WFJj3KQdU84D{++euihm56?gFK$4(n5T#6^D_jdPB8Kfe|^1 zz^*{&voo7w0#O~1#OLwyBpM2neZ`X!d|AFkRFkXpMfXl_g&yX0(gunkDKTula=oqP zWxdqvPniMKY#ahdPl^~{Su!3=)kfjHbLzLlzN$27j{z1BQew3-q7NkD~+ySp47#`YKq1pKZT>llIF0|}_F9Fv$OkhCx zegGLJvYhY$TXu^*->2tqSFOCGR<5dt)yumC{F3T$B(WL*H1e0INYVn{_mu*{J6 zMUM^q<1`9*@P~G;Wo&&Q8Zax@+dDey)RFeisy#3UDiP)a5KOm&;U6-}vQs=Xa8Qi> zPA!nwF~G@TEST^`KZN;hV`BqQ7UWz1Le)>?B8yme8MOB__~5+5z{y#rjr+XC_n@@F zu+GWuxE-FQn3z{TY&swsADomC$#HRD`EP|F?S@(7yt7+KKrv!g1%rni@RGQ=?R$ZLxT5v!@KY_!Qg)0aR1H%*ySI8IN!X$zea(Mm_ zF9c$Ugph5}Y$ikAFN`c^Fufvo59ocMIu!!iEI^*@b8$Ff!GbT~Uj$Ai@D%2yn(SP0p}xCS-DOa(;hFWsqnAnSqeYZ(TKY=JiIzqk9eJEV08e zoEHyMiWZT{!lXYn6sl!g2wA=tS*huMdGuB8Uan?`BHE4q^K<7%kgdWJ&oNZX-w9fD zrDBpQg9p$cd!Lr}ra~-eORs-6gQ+gPGs3yMhb!}kjUmPhfQ>=u_1sJDggz{5bAr}x- z3xGD@v!SxtaQN9weCjwG&C60}F|vRloxj_oNn%l=Z{SCVv;c^uh!s{9JNAnYYa1Gh zGXCl{Qj|10P&O}mXYY6oq77*|IFKMdufOZBzz&*d0T(0uv$8lSi0BDMGtTux-sdB) z30eJ+2tbHKOj+uLG+hXDs&le{Mxp0FKILxu*;E+-mHh4YZgUi5&JoCf2vn`1`lSX- z0+ewajD&L_dT@i11t&?#@*vt%s1}lqA`6Dt31HJ8h`0g+D_UAcX1G9uR`=EuPCjQ1 z@HK&Yt^nQ!cy6vc=-(C>bhs}l=$^Jh5Y|wd241jWT-xs5-qyapqUfO2uOP|dbX-J1 z(QuhvJO9-=F_Bc$73Dr#36Iza@~=*scpvgnL<&>hmbm}zS981bE1ukAD;_bKLTzrp z^CzFJG)pIji}khmC9EzF=+JKbr)Yul`{v=v$qA&Xo|>*I^O6muS=FM)#N65EkP;L* zcSlG)(Adtdtn1(bP586TD%^05{A7Ly_jJwpWccn+wvM}RewN_%B=u1_T0a!rvGrD( zyLjo(K~}^uZj0e0$+LgNhp5oO#Uumh*!pb4@lClrK?-b`s@gc3&lmANgl4^s|2N+% zV`3s67??_F`#D?#}r>o zXqrauEDbPM7OEF=3wFL(^?w+eNjrDH_&06NjN;;1sg(oQ4gp4R>}rWH&+_T8^_O}{ zi)agZJ|VQbn)k1*eKz5sGeogUeElp<*!gekE!7!EzMJ2lS7F&rM79yLJ6!&L{9&wE zVOq%bdqI58+WVg_TO<>9zdE0ku7y^=ob=ctso7P&4AEv%%a_~SFTFV1n9M<6cqMT^ zK(?^m#vK)x(ZaIKW_M2V;>55r*(hIav|8r@gI8Xv^3YY5c4ui(31Wi|&25Qzx=}{$Th`?)f6CE5Y%C5cGl$Efk6zVKGb2n5%0{~=NBb(v60nz+g*NLuip6OGZ zl%uWHq(kzV@vndSd3e1L8X~Ra>}Y@K1D{?v?zioqHBnYnyGn<>34*@=c!8Z7D|zBo z{WdF_4p@UO(7g~M>Er-+8{PVZE7z>V*V9xA1gJ=a!FOhA1?~p4SK~f6`WrKQI4#4_*mT#M;_DWM#z+&a!?M)3)GX`N-?7H36wYcIShW-$kV! zP&}gt5?AmggED5#&W%oEIp%jJIzz$lx4y+E_mn5F zVxSXWXBqd4x7$@-9C>xIr7u9NAN&3EWW@V-$o;+-$(PhoYFAiNj{LF!=}7_>B)2%s1>8q#vm6=G|B&mIEX zyb964i^*2$KmZ~s`*0#dmCnaa5}^J(4=kImF1?X6n+ReO&{J&d}K@Q<< zh-1c}gb22M5C{vvg8-u~$eVbckI+qscmsk2uAer$8pN59R8YhV@7ZX+TG#Y+idDMj z8^A<}>x_W=fMsnFlI`-rlVqXF=mV+&1lt7!ECBSiFQ*e>pqXD;35M<^B!mM7lJ@rY zJ@^YCy43@(ICZYb8K4&cLVeGY!34!^H$$5sLh996fkqHy_VKq^I)c6g^8BG^&I&Lc82o^}Y)P?iQUE|79Rq{K(H~5% zK&I<|vBm|m8FmH)l7_|GxBg);D|pcGq! zNm#l>hsR^@Da-;A5Cabmv0UR6Xx)My;dyweA@zCWd%I1tVaaIX9QnvOF}|LNGOm zr=TB(fZe3&9i0NN_4fd>elc=4pvX2#aS!YT}Tb5BT#2ux;J zckobNef!p`(JquWNH58D2iy}+pANIjK+vDvFy=hLZUTo%)6XUJz(;jXGI9^Sy}gP5 z1)To-S1&^Wf8r#w(`b48hv>%wJoDNG^Tva>aVxBOKj5)C!jPQw=yS&Xiunr;4`Y)A zj9)iQzXcvw6r9}|^fuo6Nw`yY1#c2$G((yPfJvE_19FOAKYROQ8ojb5Kv`%KilM() z?J&|3GbpL<$M7%Fd9q$ppuX^VK6k#}yYC)>_CvoVq+3|LA|7+&U{k<$;xyeGj*E*! z#tbBJ1!}u6?~pyrF?Db#4?OXK4;aY&Q^kBg{PH`4mB(%-LYY{af?0@-pX$4#M!>4d z6Ylw7yKC(q>w1NQ#IuJggVwn-2#G3#Yf$~b^2+D=Yy{_86Uo(sP{)a6-UXFLpR~j8 zu~Gi6!o^YkJ(Q9fE_t_`@5S5DgY+ou*~-Sxe8M|V#uf}+M1Bp`d)sLcL@zIndJzZ9 zKKXMoag{>T7Z^{ser~@E&o~Gt#0fMEp*9S#Mk1RamMhu~zL}2KS6DYNF6(UxudRru z8fWo}kly|OZW)Ca4>8e0{bSSpZYr>gbwhcVR+Xafjq`9K5$Hr+*ljaq^(uQ*ID&I{ zQgm*+@MO&9XF3LTRJ7YB3%QPu{7{R1wt7LR;Fnk8Q7}Nj z@~(i%%cpJCAzdvt^UKdtC1TY|`w50d-wQ$4Kb$YKy{^wMZ4N2fE7P*lMr_0xuh!`@ zsu$S-zb2@a!eFGfygcl?^{X=ZQpy-MHOGxs(mzfr@R^GG)!%7XwckSA$4OSH$7{5gZPGm#2($2@Xg@)A44XOBxOS^IX`hef`_Nl`W}J@=t1 z`QM?``wO>w6%}F0LMv91Z9X1ftk}Gd4Ht`Ky!C3=xdNp`CYv54D=hh&550Phaw}nc zhGN>ZW}1tHmFl(KQ~~Zqy<4u4k5=IMMGpt#4MQ9h**jFqU8@5ctO*`TW+brOC37F4 z51Q1qw&W}g4rSBOtj|?HV5m&~{Bo+ouTQ7=AvsHK?Ak{%xuo%u(~X)3uTgL9|9!g< zPjbfsCDP)kYI4ivh}HF@mmaW&LvRB^w-?e40_A|1u$loxj#R5dxd;-V1c(jXqDa{h z_-40mmdX|V&?(xXN4pV0*2(E4?LIT>`g0pEQ2CYS^IVAw>nxfe{mV8Yc4K9!*iXbm z+pBqn>LRSo1!Hf2_@3!&X5|%}q=thL{DFL9;%C(Xn*E?(3LxVZFQ+a4-Sr^I zRg7p7xEohaaxJ^3e?n1|5`(e_z}&?(>nkj~TdQd5NCkMMAGIfieSa zU!rdtZ4|H6+CpT9X{)y8y1?iQn&wNlfPde|#GHW4ogbV1 zN!X-%pt~N)oqE@`{_zL*<)!&vhILpkkF7?WOuWmSoXQI!g)slX`*&R-J*2?BTpsXzh|8f4K#PS@BYna(iYbU{0F8}eT;v=~86 zF7z+LoCEQc2M{b4o0{4WQD#y=gCTG|fLIHl)@0MKfY#yOcxElVWL{o(3t0mcljI{1$^(+OOipvT@D6yA*neII-$pxhupt+t_|5^xZg`AAcGPq90Qi_E?C!IqvKmoS3dygaSdia zh`tUIbY8_FA?XJG<2{TN;5U~hkU`w-;3Y!_fu7!8Qy7k51gq|K{h$mA7J(KBVq;=v zhC(roA{}U8C}!DT1TkW=h$lBJv$>E)LLucj&2rxisoo<}q^H1OO3pIspg4bZFi zWW^&NHPE>uPIEqhbdfGnQ}d5BWX;?yDdTY{Q(M>UT~H?W;}<>m-jNU zaevCDWo&NAEp2b8PQ_d`c_=L9S)Tvx+WS)^gu3*MdE4@Gahq`2ay7Hs>$G188E)H`e){WSX{ctd#y4Q z9pi1nkvO+|I0|uGzsmV)Ao=97oet&QK=)IFL?3v#z6GT6a7&wHR?LbWMI_%LyX( zAJ`sN@6N~;5t$X@{)qnb!BCO5cG;RmSe?9M0?vtK$%X8*?5YQE!NeEJ%9sGrfX>-Yp!R)haD{==eBo{*Z6ylMGX zo3Y#I25z43EDj*Dp7eYD<7lkE*GgNxYwQ`C9?MC#WeGIe3vUY@*2l5r(y`QI-L04@`_F~34jaWA$K7DbKP?N65gW6;qmXVRE?V;&z7Rm;gwF6 zEj}Tcq~9}*;JyU9&_gKW|O?#>jbh;*tICu(ki2CDX?QrGBm{kZQowA(Q9b9{wZS z!jRVItH|lvn+TEPsNv%aV;q!v_pR=4c1EW!ca6Q=xAbb6=@h${Q)L{?p&jDqk20FY56x^wHe=*|etGE~{8`*z z=2j0x>O-Lyben}1{O!F$OVJZR+HU58p zZG!UiZ(o<-v!1J9-LXq2Q9+HQoNFn0r-Vg56I_~9Oe>rp0M{eZ@B$$OuP*jP?e5z|+-|6Ok@I|( z;$eva_M@~t2ZNf8VE?B$x>{Y zFq!VfYyiqwI99es+e2QPsno327qO9cEp|1}s;0hMQ*O8={2&}kSIGsVu>j-V*}dD* zJe8!s==#;N#c!4i0ma@-2bJYNg%8|J6uKRz*%vFGHbt zep8}W_M_PL$!f#Ed*!>tw~b>{`UWcV3x^wTiN$D`Gkj#saul)QcW2*Lt98ahH#e#4 zKT;EGXQhkJm~!32MwclZemYL9RV2meGB-zYdCF)IK_a0%jZJZODraY+x-d~=m8o4s zx<9E~d-|_@;ZXO}TtTzM_HlFQuywmNFCh1xzjop62>`AMpk7$#5pxXO{IIAd^PnEh zojmOjWsaQ3p$4N4F-Ru?XQ|qp0ulqJKe!cSLBs_WrU)(%{U$*W(FOfJU<=10U6lU{ z*C#EgYD$mXkM{SG@&NeD^9u_SFf1Ti5iq(SbvQaD1{#ouIczPRKk5iERFJ(r0J?}e z$0bxagptPSfPia~lAk8V=+PvTb6P%CtHBp;jz0k4L1U#tNl_6Fxf@7i8ni`0iXL(h zBH|cu9mMpQgZLbpX;04&hKe3ku+HkhoC9t|@Z!RhHv%epXc|xgkOm28L2?me=@7S7 zem-MY)IB+XcPlFeL2rTl3Frk8+Y}|G(V?PaqZSz!DkQkR7xxzfQOdKqM$ZE6Pd0+P z+u-B_^Af_|LFTUzdpcx+!vzT_%=ZnKcO+baFbL?fzNwGbbo@MPhg^wZ15JZjKs&iw zUlBx8-+V1qL6r_XJt6@>_%^Wq!`f>J_Ic!0hNckszP&SDJEFh7aed~4U`NO_5E81N zTAP7fHOSAzBIQQ8d-pC7VTDEwNZv^vT+LA623}{xIS7;ujCd6=rD35;B`nG~ytBVU z!uic}4rVhLwW;9ClEGF6l*fNFKGD$7=HUtnkb02{J392_DZ*P0J~vthhCG8`J;CAL zj-kXx=Mx};rAtqz^6%+jg}D27H#6bZxdalpeP`fyvhd-7VsQAiH9Sm#Bt0_1C0UtP znQLa{5tOVvJLfqxm9dd)S6Fxq#}x6eY+^N!X&T)8Ujgd2w6+F=d8=h*=ENp56C+tZ z%inW@$M8P5wXca5vHj!)0s}_OXcW5~i$52wRbRHoUXL4n_;WaO zkCXgCK^057|1mT6uGp)T{K)q|ncVEfy6eoC6Nt{tx#ie&EI2;9HCzmad;Z{f0Z!%oQr=W8qQyGc0%S@$dSr{|yE(A#?=Arp2jB43l~t7N-B?U@Lx`L)(l`r9&LN zxO0{Xc0!k)Bfd_s3q|v%&8u_@ufXM)R5%?S? z>5X0X#Y2=C@?C3U*v_m)&aU(ZJ4Vk)4re64*rmr4ti^c?r>*)))p;ILfDe~}?h_Ta z#G4Moa*tt~N>kpc@~K-Hi(V3r8rK;kx6E3{^lR(9_c}s&nAzFC^%Z&DiKbo{US6A9 zou3n5A2a(ld-&wRTQ_oJF~9TjQ^r=BEOhLM`NcYX`7AU-v}k}D7$8Y~FI&&S&3CYFJuAAEW&EREs`gS^2DtRO6{kUTiPhlh|*T&OTk| zBD5P5e>}e&&vt)*>7TkZoPKA0xKiwwzyJFbe$2OFf1nlszeF`OMRkBf{9}gQ3!KB> zw<~Q!Xx}tQwBeBPy1W&H9l62XFh^s_Ay8_E$~Mco%le@ycXH}kok-K=g50--=##C2 znB!git83|G58tKT##az>k2Izfn&FQyD9KY>8>E19sIsSLa0ranY13a;U7WbD44czG zzcj%ARe(Fe!@c)s?@@_nOpI#^`}TC4uAaP~1}^pGb?YC$F*emK<9haMikDA{!k~o! zsdv`aCO{BZz}*q+GK>n)xTp-L7a(CUih_g_)cG_Z^e!$gwh5Qq0U8zywaqt6EPGfZ zg#ZQOr)lngBQ6Wbg$jxuAY{=iGkts&I!9?S@WKuyelqe4f&R7|QkJtO$)rHNHg6`3a5pTM+BYun}i8%}p zlCB|_Shmcx2CC890VYRq;o%JmW~H5-9VibJK7O)2g^P0QbYXQzsfMcU`vyg!%;j~7 z0zR^bB~O&M-=hK2QTN_yKtKHApd4Z zq2O-j;@e7VE%+P#+;&WQX>|~i89A5NGSv&8kLBOXi#1g(Hj%nuH!2uiz>OU*cA6nK z6yYQa@0fJ?YX#yF4*+NWXAQXLck&8YfHLSDfG#PWqN;wr#=nN_q6{GXL)Zhj55X~; z1iFTqq}TdX5IYLkeEwzzG(teu*|PWN1-QsnanluZy)xeT!wr(}{1Fach)N1-37}Je zV0y%QoIk${DSH%khcxjwWm9oB1|3tm;=eO z`s#If?%S+xcrFnE2?7AXU|W2|RWPv$I)D|`d!(d25S<2zHAuIFMPDKpEWn`4jWj4> zKR$)l;59*r`0#)_J$-0kM$GsS$yS)irTZV*XD4&n1JO0b;KX?Wd&Le2U8tDxc9(&Q zg?!p7gA&>NQNgZX5PZ@HWW`(f(cot?{Oa{%1I^IOmwA@G%E0J(U_K@>;eHJvhoz-u zY;;-F0rB9$_|~L_U(yG!1Q-S~G>ekCe1#kxBd&E14Xur;5j${l#aIq3!vFiv7kBK+ z4v;wUi@*4Ny615j-yY3*wC#Vt8;PkAo>-Fl`%>3RIUi)XgPutIQSF{{w2sChKr3 ztMx0ocOfp}VbWXTgFk<|>wTwBRqqiHyl!X^27$6XUV*kEY!2|Y4wCyp)DQG<+(#RW ziU2tS98pLdYzsBD^o(aWVzLE6Kfpvg_Dk#U)6ybRQl?EtGNC~XJcSrAz%c{nleLug zxeGRg&&Dd*P${+UVgT3`m}}?+1W2F=Y~UT1h^R>PwFFHCpnHtiwb*y0V(GAVg<5RQ z#B*|fsvlxqWy=S?Z4t#k<|K8hO2cPV185E&PJk}~Yf)JPkDnhBufL@4Bo{oc*M4wHJ0RbQ^6=bCTRM>=pjQkl=_cfU z@vtjICtO}3=1$ODB;70PI40(Le7UH}_T2x|0yyV0*>X)XGgmwto8B2!^E%U+qo!BH zb9?e5>rt|DhG&-m)Q^rIvVHjSyt{z;=E<5BHgWfacuJrl`_keDE6SS_$9-)U{!#9p z#+aa#d~A0P$~-)t;L{GmFpFss-E}VxCkb`{eYtZ4Wea?|bKf<7?xn@OO z#R36E$#PA`#LiNCh13 zgU@OO@JD37h3DY5j@>RapQ>Zq{ zyQp(IB|nl?{Y;x6&EDmuHY*1;U2eGBqC1-Y^#8JGkjQbmggXbcb=^hsj`7l=H?JDM z4RWY){;nK6k=5R^eDC)ltxC>cq6p99OKGS#ALjGII_30Qj1(2RZ5wv7h`=r?d+cum zY$V8#5wLT%mbtUuU@w@!TdbW%$CznuhSjM{kGZQ+}*njaiSiH~F{#5v{LPJUsI z$)xT-*~{j3O{hh^^A-!+@}hb>$M|b+?q8Ss8vCy5*C@+Qq=EOJR!)0t^ptN2dSRi5 zm}MyI_}v+_tEqf>=BDcD4GP24??IbLNDHKmiX4t<{YR@xHHc(sa$8`4kPrF_=oE^L zzmg>@zcDE3w5$~U@{}8TF(89sh9A{=f>{HEUF5-rZ<1=Rd|S=$-SeLj1=OAZaz7yu z6_9B}jSbtY1lUWO&;MXTGU#!r*b29xTf0#!ks>ef{F?Yuo@B|FRj6*bp_JC z=%@bhYa7o&0lLL4)pRPc^%v|ZNT*<6<{mo@&GEFQ{!Aq%opwYiZ+J*6Q^PatDJZRKOij&8DS(oeMC_D+ksuo)St7ByBI9z9I3wa6 zncBx}Zlp+E@mx#fW)M?iAcyW5 zCkZHAP@#|D8eq{C<~?}EzK4&m!TbRECV@PETmfrtJXs8XYzGd0AdApp9s$Vwz{8j1 zm76D|=;c3}wye~EQq$szp=6#A$l~D!aRpRfKyKRL=@)|%Ep@EOO}`DNOGUUhb&3v~ zoQr5+i!L)LQFY9vQ-GlkqWASzr~K?wkAt38PNq(Tk63tndC`Q?Age#%83+khTUW;g zObA#9&;_L5L(NKEl(a@pSy@?cx79T`pI|RWo*H0<9NwYd69aj&W7s@P8yqhXfwlHN zoKBETrm=D7p-;DYMaUFVDgiKb1!UtQqC3bryC>hJ&eD3$1Mf4$w8gO-)z5EiAdMQ5 zh|TEV;Sxx3Anr~Jn%)7(PyLVqcRXUP>5Qbre1x2sUE-G#FwK%cI}EE%@za@F$Hy4F zqN1YZdTbDy2pRUN{zZUHX#00*w|?!U)hQyZoP783<2}ee0l;Mx)Q^b71qgRqxw)4* zxG2{(2-1cGVAy1SPS)WD+QX%4cn|oe|!D#Or6FIz26g{7KEZEc6|L9A}|}I9sELa(s#7 z>j{mTDBn)gDXeHP*YI#Oi`)U9?^=iRa(CBcxpSBADC@Ellt8w_$6^2PUpjH|k01Rm zllRp`5AClae`F%jc96b3@;seF_(&{eCL|L$9VF4;{~hVgZ_vZ|p40CJpcWR#(8h|2 z@;y(59GcWle{Xg){$0cjSbFpC;5Q$MqT=^=6bkTVun9u0Zpc`PZd9G~T!&57p9Q&t zVH-Z)!ui~P%`LnB=Mo2&1JL1jk(6XnIjPQ+z-vonvU&i63lWEYf57#d>%U6xff?%Q zek?uKJ+V}wD%%6dmHl&hb^z+H*ROrynY$`EiV1JN?d>nxo`Nrad1X+G_H?hioz*Z@ z()0MkIKWsR`0Z685oiC%t=+uaJo1LxbAn(x1(8T@7P9ghA^Y(cHdRA#W-R5sg`+{akT?t7A^jvdRS zX;{#e!LJ$p^4TnnT*#-Md8S9{;;BO`S~9Tkc33kGu~n>AvR)%Oj7-`aJ^NGZkaJBV zJ{sKy%ZpYgeCfIXf02`;#fDfZMnp=Ymx|4^%Bj#|!p=?1^p)?Qm#|1i)0VXg**yK} zVaOn9zHh>9Z|Quv=t||Cckgh~^ie>9i5*?NFhJFNsV7;9hZ3lC?*~L+?u)*i1yFI_T6Dhg>%%GBUr`br# z&#!_pt&OJ2vLUvs)rV(#f94bo+(Xxb2ut^;;_gMeUZ`q3!P!ICjaPFNFvzG9euX7jH}DvlYT?#^ z(x7xu3Q;TIl{WojNl#CQJk>eRHA=uR7hM98lMysp%TO;31=@}vj|aQMAjprdTLW_n zo#_cY=`WC2Q0OElAR;n-n1Y~pAX|rtCkTXOqmY+^g?bZWb1VnQpaSEL0BR4S>W8xg z_C`q4L`YoFiS52S8rg7JsUN6y*l&jRXhw!=LhiaiGS?5nwzr(>Zd7&N3Ga{(NjG~w z?8szU35B^~23qA$qIL2+q_%?$^~sf4@)Vfxi>=%3}?yHm%8I@Hm z+tvj6m@lS-O(rhmXhYpMFC$TvLfVFEijK2}>mVVRy3xmnwIm3V^k^qvT4Q2l;z>v- z%A(Gu@U~2h#>w(!38eT@ejR?R%-&{Rp3%UMs>Lo>q8+WJy-c8*7`heLcdvH%z!>%r zh&O$!$SUY`OFQ<48GCt!|EZwri^kRyizqx?-MVY=enTN%kO4DwTyj9eAs*!5mrPw} zN^p`DnS1wn_IIXwciE)$>fofLu^sxo{%NQ+i+1BnvYq(zp0iw3Ow8_Qv73t!;k27d z$EXx!W>B>ZT`ciL-f)#F%N43~?j|I0eNZNRhygAYIDp|dznkz@s~4UPK*v^L z`+N##2ZS74gX)#Q{QP`pWr(#jx&0J8C15oOal6uFqVNwF|ELQmyl3k4){(Gk+Qa;C zUFKLin$SpJ(;7jP5MZSxay5|@bin_0KQr}mmC~ZivM13d^#KE~`V26&Hq%134|}Hp3!k_z>}-Y)j>Z)bl?WbezOiWtsH+W!g@qw5ftAh# zB(V8vA1&b~1rH}=hH{Z$L1hUp1%)z*|4tXfInc1Mq+{ub*bTb@u}>TN;Z#QfsS0pe zCkwl?!^aPdxC|nHx@i+4OX2DU0pQO{tGjT)fYF#7(X>Ie+B(PSAP~xb-)+mlaXmJoWa{Q04q;| zkZS}8OW%UY6^1Z~MrG!lcpvvjCgKn1IAdTN1Xoz9^+Y9T5n*A6&2#`S;pF(3->`5i zB#sp>XrLZu!NQ1GaR3MaIVBi=z^QQ;5AP|+SO6S?B*!Umi!64;zL!n6i!*`(Uzn01 z3gb0ME0A(iM3)PiU$x2?AaR9{_utl(0vw$PFae(~)CF9;`==lQ#1;Z^!eS~7HNRO| z0q{#9T!<*>dfuSE6WkCCaQ!0Y$;YvBa8;C*-G_W^KzCK;AFw`%smpU=r^_&@ zV7mjTf|2nA5&{}4Cn+X&6)-L^cycCRPINuZQ(Nw~)qI5gYza4i|*Aa4SQN zoc!#!XJiVpDG*8o(p-|%R`DfyQ~+czy>$gh={5-;?puO>*{U4b3J^ED|J!Vw>J9?| zhTt6jQq85v`RTzNl-P(%4N-D%?A975K?we{PyS|8wdByK0%sHM-5FeKh|VfB?Ve<; zD*)l}YXd6&kr8?VSxBXR2K*0Ll05c0%RYQShcExG#3yJ!Ra;qq6i5ZZO(~S36tD)- z2ZFUdYI>RyzEa@9#ON?FeS^WQ1~HGoL?JPT&|3(yp*NG`J+v`)D|k0>$m++&Zq(F5 z&hs-D7jzh8vmHoxcXt)P5BwRoy>PeL)E=LhfU^aPvGE89#NjfNjQliY+BILn&<*yc zo40S%h_Z#*&LtZ4Eq3;Q-@{{!!a~Ud#ej^*fM^1?@Ynn&&VikE@yL-?JJC-PY`EVH zyAy?>sA(HyM@YdS#BqXt=2^iIbgBXc{dO}f5UN%0A&CW0#s@Um?8e5kC03MD%K}6$ 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

    x1#vz*Z`W=)10i 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⁣of1Xa=XMccYBGj{Y|Y0q$o#7+f-~ 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%0D2wB7xjv7%(NBH96;{-*&B8Nw zGl&&$Pm~2-pXd@_d<2f3?uPjsZUwz3_Qlf_QI+KNhI$U0Dtz>WzJKqGXrsaX=Kq9; z{oD{O$Fx5oPQOGmO@by#dp}xtJy2%F)gGr%pSoDN9|?)%U51$R``qoIPv)13WcpFb8OF!*B#$&eA4O>bJIXIaPUe>r#CNH!X=L)29oB2EzW4 z)ACf0K3E-@HVC*#er+n8;hNLs^lIKW4R%Q$Sa@FjV%hf$=l`j~g7H$Jq42-@8Tj-? z=rb449mC1Fx$6g?L5BpeF2u_*w_e2~A>16zcUPGLynflv?^L^gq_#!7=171puk^e< zk-YTqC;71=8046QM8!do)mG;B+^nLm-tW3vZg_a}JfJX=g!s0`9%s1rlfeh^hFkt` z5Lf#%-<$aO<&s_pFA`GE-G1up623QFFQS)<{aZ+=U5YJo=JV;jw}^0^&GK*;v4*PZ z;?+{Qe*Sh&_yfD!2UjE*LVuDh8iWAY-%c#`-;{(O6E4EQDb0!#&*S>2qxUl``g=p( z?D6G-f)Y@rl~f6a#pKG_{hOWZXJgyxd-{zw^K4+%1l|I>sO?{#?b!`EtD)Ehrky!4xmy{2;j}$M4Fe2_1~FW;Kb-ySV(9P;&}gv@{NF(Yw%0> z|G4_gs4AnjT^L4EK)OLfx=XsdL%LJCyF)@iI+TW`pmcX5B_O#(y1Tpko8HfJ?|1Ld z0RzP!3|-fn^E{7KJv1MlCsIb~upkcRijPBE$ya5i1G<@~$8~z9#?z)`;C%VH=KXUJOa;-~2n>AIjVzO()nv1t zrr+g%VX&OFBJl_P72 zw4Fqi4`p&dz;khg0vbBwR?OD-jsQj{Z)@vigS&n`G z9mXmK*&rujl^=d*sSxKm$QGLj?hnkk?byTn55ZNU#YS^#@5b8_cP$p2cz@va0Uu&r z6YMpRUaqtWQ!BJFZufCwrj`ZOp!_;>Z?2F^N11r2BZoisHE&`g>8+^xB#_LFze4_+2<0*oJl)rAiaIR>JVXa4;nG_s82s1`3Y8f&3KEl()t}M6a)b1T zf9XG3T3Q~*OF3^OBdYADS;2J$Ub@2I=ch80&fLTK_Ly-5@vru2)D;=**rKASA>v8B zzi8eJp&|2`No~O3FM27KX1y>@m5*0+dWAo70`VnU&M~ z^@f~Y6yPAu=OqLc1K`of-OFT*My-`o`RlU%{WO5x8H zGT{J5#sArLr8keIz_R00754WLzCKei5UkTLc7Jik3fe zM0xSpcjI%z!+oS>r;V2J3McMsGQMbuF9*58+~{2}8)Wv>%l5@g8_xgeXghNg3=u~o zg}2mmI&FG(`AdZL^}QRXU`-7@JtOQ&5+H)?8mWdjSrd@X<&VNcDO@&-)B@UWtV>GT zOV3eaqUp=aEc#N*)8i2DE)NFh;`;ll2OZ~Y0*(ybP-4=B_B|C86*BpQ`sag6O1DB` z;fT0wFd>0g{9welTD=zK%4}-dUb-(TDq0z&E93~6snTFvo)e`Po`KwEXP9U%@x5b_|@@hMucW0*l7ACS5bp{*17g7ph+bvd- z(rCZIR0`iYJsvauP!w!%UXWD&$lG>Od9H&6!QD41UkE2u1|e5NLnJR#(GcO@yiqne zwvPV!Q!Fo^68Yt;jk6&(xUYG6$+zd*?%O%uRZfe3w8|}{IV$~Cz+?r4#bC;zrCht{ z8EuqNxWD>4cW7}m|F8XPwly*)0)0J;oZxY@<`JZ|661~?3Cr&M;jRg4m7)40EFAp@ z`#3!*lUT;ij&KD~$552ZZr2aVYXU)!+%Z+}-VzC$^I5Vq!3fk|*GnE(QUwP}*Mf!3 zJz>aJ(z(tQ{go^xe1wT0p4z^rMMXJ1Ep-Vg46P!Ceh!x2)mN-6@-d~Su3qoGu@2?V zY<0nsL)j=4n@H{aLhm&ixn$me76?Z=8FKy$=NlWnB&e-EnW}IyiRgRwF8pJO*qyIZ zHHr;?V+j5qWJ~jj4Vc6MWW9YkZ35ainxH|_YBROg7^)(-)NieZzXEojB~?d5qX(6( z?dLWmI6jXau;ec5alD`qSphVr0V(yrm1kjL!SB>u?8C`4PA%h!e zmX5Vkr{}5=$|1d2VrbTaWZ#Uc?rebHj7oKV?Lgf%ckJAw;sa}8pJ2hsZ?Wa|_ z&!a@VQuwzr1Fs=*U8CwT*B^m;*}_J4hYk4TC)#p=yBxBD&)xdI&xQH^Dcnk${+W=_mCz<>VGksH8^$ zv+;uanDD{uM8HNG06qcEXHahNe@-=-|D0;{3_?;aKDghKpx=L7|5$m4FHhQ<Ws&xt*Om^J^eA*;ITuUEDeJyYt~nD_}v$Kn)@`$JCSVt&O?i6)adm4 zc|%IdoLDldZ~WpAZ7s{f?@jSkvSnbdOG?7GvolIpYFXDp2I#r>%i3APOGf!Cs8%8=5aX8)F34EOS($) z-=mYR{dj&%K)t(MU$@R(-5X3PuCP7Ouk)W~-5SkNR0b`uh-h|q6ue=1^ussDuPQRx zLtBaueKb*=VWzK zO+zICNCq*cCrb31a6@$7cyq1JyA`+QbY5q&$w}qN_k18tCcmyKTN?5-%6t4gpy4e1 zGV0;%@(ghoUi_!%fP|&(5U61hs}jZN3=kwxAzVx0;{vqS*rI5pGE*ZY*#+z8p<82< zC?6MQxyt;27AFHs$V!zMV#2QCvzjmiQ?bQ)W=@%YTasw1LqSOyv9#LwUY$}VXVN^a zN!%*+Y4-hV|1mTKvp20MH z4F>+|l^pJuR7lJC-YZZ>^`0(%Wi`#|TE1z=RWaaliE_#J=q=+=Cc0%X57b7A6VYR< z6Qa8Q#8j9+VNWE`z~+^eqPoreb3HZD5(z{*T)ka&BkT0y)@Cn0>%R!1-U*hMO z?65NRaLLAh4IfpaPZR_bwssEoyk4qH`5~KpW7RdCUK(g%1auj?aQ+`UuRHb$aK*)R zNwmix;-?2e7#*IWhPeO}*|#QdnyF_ts@)PC<1yhv_C`Yn7Q|HU!dH=S0F zfJRH&)hE|*-Mn2w_khz6A3hkk)z}^DEC}4-!H%$?M&oTDvQ84KMJ_HzXBGc15cfY{ zev2l8no61Y*Mo(SpgD)kkEjIy+C{C#az}uyecXna81bJDx!wO3v^I{MZ4S9Mw_*LW z=}Y_i^5@a7xiy1nyT__FDJRDW!plP&8&yTYB|x?K2Wb+h9)|HnSzo_Rx?ajqQ8y=% zkc1s%qc2|u^PJrNU$O*hcW56kHW86Qr)uE@wBBB{2Hl~5-8Cf{TUO20_puE$cYpU( z62p{g`GHXoc#nSR3n-q!!5sR5{lTMQ?pH*~OJe`p;E<6yZuEx3KlVfOrxOwTsT-69 z|GbT;vDyq!*I3hQcu;*!H~f*7rVneH7B+55?l~lXAB3H}coFi7$d6$;_?pboyayTi zYC9^yy&XJEU@Qi$7{pt{8Ipimp$fy4PfiyN76I%l4IN$KYzt)#Lo4Fsj{!4GSX_@?n?JV90CAysJtx1LThn_o6EkVFmY7+uoVtaP88IYMEjO%Pj)8q zN*iYJP)o_yUWcc-iDT}}=OeK#__MJE-C!wBRXA21f0}o;KF#FT)YP7GCLb>)SWHey zce|$!eSF-Vee(tE;2T@p=Y4t70o4Qhb(i_`BUHQ#Vp29XDQkV{GlYm3WW)ckUPpI# zQ0IGc2ucL;@oT{Up_@BKHMoL*C6KG8u^Q=iI55Dd6sCM#F$FQeK?-Zq;+UWh^qZrh zkh91mhjb)KtE|2RH(?%)1rgu`fOgVhwgy2j6-<&^pci9t&-C{Q8>Qls`}6Al@}Fvd zbE?z4M&%pk2C&bb-0@EA3imd;{-`SoMXCtOJQy~F{DCl9#e8azcjRj-G`l4q%^vG* z?SId{3!qG?dSvSZ?j9ol5trz51>dcXS#V^AV6ES|PuJ~dd5C}c;l6!UGHII-d3>d& zL>~p~*B+(q&qZAhI!9n0m=Wvrod=du7tF_aa{LQ9EhC)25>HIA!o2tKbycP*a?~5UTTdIPpsU-nWa@Yzr2p{f824`~VDgOcYcM^gGlHN@2 z(r33$8hPLwCd2C^DK0;6k)1pAy6}5sXq~s?BEGxakL)sCnLh-oD<*r6_WpJ8!byK=tySn%VX@q~I;liAXGbuYhEJzL{RnY5)G70Xb2bSNDnbbY6Wn z7i6`$!u~662uaTRkue2*GsS6r$(39Wp(Ty?8Cc z{5Qc@K1o;*@?LT>bRs8gel{3DZjRZQPrBg&oI2`?QNii`ho`6YiI|K5V z|Gy#AHY#tRym9IGT3<|Yk&Qrd47EJSlTLx=%l?zyasJ1w_a17)1umf)&wcHnn^h!G zhDWk7G&Z&kK%~_O5+@3ft6VrS2*MI&2a&PznenOg%Ok%2#FUT}ze%L|uNHtxwSrg_ z5TVR(d=|KG?z2b^CU)xx(fls_-gb4Z#+_xd1W8HPcj+6*n0{D>`UV|~v>V6F9z5c2 z9FvFB=f3Wer(i5W%Mi3M&+CpSHhN7Uf_RgKDIKyi6E0(}B93`-jtUD8ezr{hw-BFG zUEgnJYU#0P_wc5ts6QR93L6T*?p`~#CVdidXIy3a!hX8K^5Nzb^y}gf6GsC+8|=ma zXsk8wLwP+y==PfG&6^OwBNK*w+m-J9FO9X0^Ut(I9ywvQ{b^c6s&Ilzo~+}+6j3FT zGz`RGfAiY;6Sg?d1CvX=)SO)-6mDPM?@T7O=%`6 zIeFe#STSLkffvzRgW>N51$m|t>QioI@5Dbm!Oi{Y3^okAU??_o(1nautuBp!l#SP& ztrCG$6BH(AWB=}Gw**yXYC8MoH&tGjw;fLcDRcTDyDbws5U5-^osyZUAm;0vpEi-Q zo01AD+-1zQT>&B7iY$BrHl*n34%I89#*3u%Nj*VSZJ6lw2KSx6k+K54Zja?=tPs6Vg ztx|ahCjx8EsuwSO?3@m-w*SITqw~;z&lqW;M#hDmJ zCmmeGSZOtO#oTi3$jlrU9kbGWO}+{xG2W;#V6_toxVLS*`|H{&yu(FFEdJA+6Q;bC z{&!6%MHJx$BJ6`D*PPu~-y{wnx=K5HQt&OVJoNl7n30zyqxhhI&DjERVrxNFtSY#4 z7xbc4s@{{Ebe#7z3p3DB_zDgCodq8(C4W4(*})gbUbFwxR33bil)1fL-a{Otl%C>Tn0aGX*MoR*bP^Yf_rV4k>}bIR7NjyE@ME{1lX# zbI=BgDBw4SN6O%DQ|z{M4w%@@1%$(2T(5(fr?fjGL&M>*&WG+kf&^(WYP9OG1>J7y z$e8%NQA}gW2T&J0B4VyO$aqdpP7a0I^jbIx`TBAqxw*YOJEv+6^k*z7-JSS>>JITO zm<#~kyN%Ddu*{xv(F32>`hWyqM@7z_BRH)hX=6)ML(f)LZKd6t_w=tukInRx&yJIx z_Do&%hgdR>9S=%8JTFR0mK~3N_#9Z|!?`z@A;y1J?Y8dl;G_1*BQ}y}ZwKF)-*J(0 z>f^$Lo-Wl`%;}AwFK=a6MUYF{r!3?NXy3@8ivHVJKjt;`NdL>3x{Q07`yN@78>T63)=nfC^cEQ`{clu{@gHQG0#@94J|HOUkr7c_^!*P5e_V;dU zeEoFb^OxD83a@vXnu=242ywrd5(!1xgdxEVIhKmuG>CarA)S{hz~ih2oFEk5k}h)6n(` z-<^N}{w;G%$?O#W)xsmF=gC%e02@m2!^zb4F+lj)u)SqB@7Y4jk1- zjiR^ieLT3h)Qz#B-Ajjhmq$5*yoW!){;#(zG;&mqw8Kl86Kr&G1FeQ%U?qyT>&27q za^T^;8-e3{eRbDKlK_f|>1%6hW?DQ+fIeh7=$=#!mx#|4X1za7G9P*}E{VZ;+OoeR zYDxj(n**L^3kl;`L}eee&QMTqZ~Dn^moIif?`){$P^J;hF=~CiN-Qmlv~+#?hyW~H z`(b5?2at(MOB-7c9vmph#M!CJMSa?a7z_ei+TM8}pEF70Ql^TJWE(kfZ zr^1}MX!GG0-)!Q4@i^}}Z6{|l&p#sPQT$=>qF}lT65pN)fni=gXW$T*55MVqXU1Z_ z7=mCyZ7ApQ4jZP~GNY~jf=uSeVz*Xc0SpBS@h^|g81jaWu9JA2YJPhglDV3%I{&-9 z{qGJ3i3Wo*Fx6OY{{8|)-CNmHM(X;XMvkNkOWz3E({;5+keMh|(wFHyG7&>1r7h7c z>G&}PvRMKAw=>g~&?g$$WvR0eq3wS#Q7>V(`iAj03b;dG3m7h#vO=i_Hwa$8sSYH$ zI#`lwy?Rb)zmHGI8zmQg%FHO2=gHy1mOyRiWq^f^rocbJ?F&V_9DNeL=T;RSV%XcA zZS~13`Va-12m8mLjp4f(<9E7wZ|kk=ehCS=9|$Mcz9M9)2LV=FZ(HBCYAivnTLpnZ zmU|*lgw5Z}8Qyd;qUBncTbWL@5*{)())i(8YFCmI-wCEqt-IEGtC}vgJ@hm!dcsL~ zACC6!dW31pXj?G~`=ga*6zmJw7SFo~FcufpXc(%i*k^HCqF@M}{6yCIj0G=_36#PH zQYU#XGTAF{5An}i7Gs+a^aGZ}wCN|0^RGXw62{Vc81)}|tepGqdUx4m$J>>4y%|Ad zBinQpB;q{7P8=N_Y;y|@QM8VcwiAlc9NSMhnX{KoGP;>Ql2hoJx1@R)c%BSG+ig*i zt4d0Y$I{gCjfzL#vXPLI54GjJ0D5?o#`&@7WhEL)PIiFHX4Ao%IM z%yQhpG^8~*ut0^jE1~l-)j5q>TuZA>gnWqC!Bodj0OkiC-tg@y5>R-k;er4_c~`x4 zOUd_?`SA{|FA8gSO)K7e?oWMj?#P7`0}_1vn2#8uKIB?j$mr;_jEvEP8U-uoejLPc zAlRBWv%ZpJa&mIS7*~+-k#La_u{L!1xF3Yir!Nj$)v9UX71{54mVVwwRCx0l_lx`S z=S~hE50i?vTkHcobSovFY|u<`nfhYIqp3K}@0<|JvD;_+etU<%N-?IPx~vIo!oGW- z;Rs&5o~#g?o%6F~f#p&zY{^??{j4z9FIX6E>6!Eip0Swqmx;Zd(5O zUaCnrNV{T$fAzM(!T#plK_N(-{}!P9^YJ=pIJKa5Okzdwc%;z!bW)EQ zZxPpMQcbP-DM9Dtbhz@=cRwCmJFtG)87P7x3xySr-z>6c#t!>BziG}u2-&oGm$=#M zW%0EVOu5_V+&;tik8ik%ESaK(Z-kVs`@UEb0ejdQOb@`CKpm2`Y<%R;xW$C4V=b_!4ZP3cCmsPx2Z!>hX8lgr0{~AnMzSP*VY{!QNZqDc>mv} zm1!=#gdr7)La}Dogi>OAIX>C3)==e;FGFrCg?dO5ENTzF-Gxno=!V9E?^~Cp(z%I0 ztmYKH+hpz8M1#+}RwYxdEB6Y_F~2)Km{fd;T4G@Q+v?LsO^5gTi6&>wP`zA#_Bu)I zcE4{U#mmtD{ixFfJxtE+m-v7}F$HB_mxyQ(hQ7W{hnc3dn0|Eg`zgGgOc@U)gK^L3 zX!IKAG5t0XQ6_Dt%0XS9&n0$c#O=AMBoqjirk2-m!;B{;$Yq|Lbos8Lhy5jM2OE}R$>MBH{ zrGW5uvyg3PKA6kQOwFg=>B{=xD+L>A+I-KH<8G1N;%|1cgtRZEjT}#FsJfT)0VSnF zpW>9ICb&>gYi1if`7=vuoE|IuW@*Q$fi*M=i|PiTmT@Cf0n!xz4lB%X_m3})aYv(g zc!&yh@-ys;=$IL4bLrRYpU_c|X?D_+G+jq5ln)kaMfY`>f0@IN zG*p5$w^kAdBV#?iZD*rt{zQ{!^V=c+SJKa(z}wRG(x3QEH}HFacc zsXnR18IJg<0d{KXf|Bl0g#7zI`N0Y?u-u1Q=u7@)JpPRqT=NYy0mddNyvg9`-?Z`R zT&Ob_{Ma1%Nwoy+x7H(Lu^^|s4Y{I}=86xn?>#(@>g@cb$`F0pl%Y6TdTv?SkXfCh zj0+DZ*>Br&E%}V+t77N7O%*e#S_Ra09?1rmWGA~6e4Gjp9zs+c(u0E5}sW#RhX*k6K~?7r9t==G_=kV?ni7Cd~E1> zje_{Qw3)CGsRh2JAQn;6M)2^d2DHW9+(bC*|LXhr7ygM{HJO4{B)sWny^v|(LW1%{ z_^ljqPvza~zlgu5hB23AEy(`85&q{RDERJTx94ECHbW#( zfP~knEX8nD>GWPJ^`S04%7p~(&f9V#qED^{wk5v8ey3%0)aYKX-AcBdLd{OAGChxjGz@Q~o}_Orq8MHVe3fyKK-NPHRL zI2Rr=JyWU0Dn{uZf-R2~8-GLGp0G4p0dBlNJpw?~jN}HsPRUUi&SKRu9swfRBYlWvaD5@dS1C3)c`N6TNyhZc3&q#Hf2|byryNBycT;2`U1SL9Xr=s@Up?>S#a?2EP@sq9o%CMpDna;?lC5BsRC=Em z*$?Yj_UTiga^^~}zRA}3evFKK>w9JaG!Un^`p)ns?_*`CsAOV)+SRWWIR!nBd$wyi zeeI>|19kJmkE+YRCmU6M;^Siv$kB!r?Af%)1gT(wi~J?BqtLsd?aR|O$nxs_^P`~# z>$T>f!bHaA_`cPpQ0n~V>JQoF_02IzugiDpTJXn=d*gm{?(-|}XG%VjEe%to^aNsWTkBt-x6fZ8k zPd|p{BLRjq9|ZHzX06RyRO`M(Lo2^MkOi1Pf^&zwn*5;cp-F%Tm#dnZEOsfe+IOaL zBIyWt_-|mA~7=~bGFkV6^#?Q+1KBs11Iyu z7DN)|oL#bOt;*uq1Pe~RS}%fB_bk zbpzAjOjh%^^sgln@Mm7_)utw7itQDq14VqrZgWc<=JbabQmDLWnR{!p& zlb>YN4US<@o3CwonT!6Mvu)hKv+xT^()wU*{SkwJ-RGURfTu#Q9mo4d!NK9**6Rhr zxcJ=0t0h%c;TR%!xgl_^(0l`biJs6?-^Y#D^cLr-fxvubf6*ZigprjUPZ@#tZaee5 zA9sq_xsp^KRGTwkg-{;Bk}J`A_tLvcPJ!r~~&WiKiz%7le%-1yA(_46*@Fbh5{*6Nq*ma`1`-9A&v zC%=0PDiFOunxpOK$u#09)_`>?jNDTY?0O?Ups@I}wgg3xP56#gbolAA4uKVx@D++W zj^%niEhif+^K%ed?XvODxN8*|4tn_cP@jt*t-cRi1WnJGg+7m2!8LABL>UvF&mEF2 zNU6oUhTMTdybJDlSB!M`4b~@g@@H-VqIf#yR{ear+F zd2F7n!)%r?P(pgDrq(OVoy&c6!A=SF*;+HAa*SC& z0m^7rm%AwPe}ZN@3l2o(uavnv&Ub;4s&f7 z_U~4fiib9f(;Tbc7*|5t@7?5-1*0a-CA5Je(>W&enM-;7XBQ><7FoAB2M9|#@e61o zK~5DimbXO^Wic8%!!xK#j|2a_iA`IzS;yAJzD!TS*(zHM?Na`C(u2F=!aZSSH1ZOu zmOxtCeA12Tdr;l~uhS1P%!i)oKd=6+e0JYU>+lkBvo8_z-cFXrLIm<3MqoMKaIzHX z`l}RujfG6!^6{Ty`EznIs5>JL<-g<0bgg);wG3OQJ*bEL=_R!-40cG2P2==Xp(rb5 z;n!33@om^XQ;R<*X0MJHTes@l+JycwbSf6cTp3EQ2-!c}xYNI^JFX%VIvIA<4a;KH zLor3>eE$b5AY^54>JL3hpB@JUnQt6+ZI2-i?=oM_j(d_e)}F3NcdBk)b_Oc#uA(?~ zIHN#MlR&(EB=5H95M5Sr(KMjaLPkVircC=d*9e!kfMmM#m_q1&&-VJ8+*?CXids%)A(B(847$@L^|- zBvGEQt2rqS`f_c2v(|=U2>-Gn$Iqp1@3Ra4SPD7+e{aA4920zFM6VG4z2G2&tQ#cV z0C5$YUT2Unzyvh4wbxGTn8l8ziZde?jXRax6>Tyj@;~{nDnmU<(}u!^Jl)1J+KkDU z5EV2U!gPG{2E zC>;_bJ6IELu6febp3Xwcs8H(j^sP}B=vDC9)}?Gl;=Cq31LEMPGgxRVnp|Hu3cHay zrmVyMs7kQGAs>W5I#UMHT`1po>v35l4B?m2a?*yP(!JX1J`LOZ%*{iH=k(ZVzbjaW z^c-|UdgU}^Q}?}^g)0+EupB{+uyyTgv|$`4-NX4kon8`k|S%p3OY{T*anU|1W+sc>74N9K#_^Eu10@O7UrUeil1Jq4rx zb2a??O}Kkn9(^pCa3(5i(+2=fqmzp$>FE(UHIh^|TFxRbI`M*_V4>4qobd4Q>{YVo zCoOGlke=8L4DPXge`>4=Xj70&Clxd`aUFrCn3EGbW$^Dq?EkD++b^)%=(Dl#=y;1t zq(PUsN+IdwF&(7f1jjGMV2H$gnh=JP z?$*f~A<@5o7PTf~;K(>x zyoY4EH4@Jbi0NtJWqBRjvAdjB6l*k}<;9#7Gh&-^5@+1bGN+as#IW$C3s$z~Vg=q; zf&7rh&WGebH8ld~B(D(3nlE`8ejLG34A{{yGQawu(3->8+OFcC0v(8YBiUru4Uen0 zm6Y+8fr+hhqM)WET2C=(t$5y<3XqdvNXPl@v2%V)&&UY-(}oM1#GvtWO~wAfLVXO# zPm2XD!@0h9kPDz)?i+%zo54n6kUMeus3pVRvVr_?YU*&n^2opuwi{!7`}R$4V4$YA zx;(;!Gtu5kX>HKJ*ujOA_hDDT@8Wo2t%KZ>ljO9iy~&6y*Z-uGIk$E#JPoQo%1BpI z@{N#~jCA+>?v$H-O(U7wN=PJ5^zpDjpi;2JsO@stnmMyJyF=3d-c=4LPO|d zbDx7=dscR=A!}2SNqh3IWM&RiDK-&15a5koi8cX-XvhHE*SfY+PqOhVqfs%a7n`4 z&HBn=etf0v>NiS7=eijpI=Rky=JerK9`dxyWL@iiJ^9;HV!w;_50jnDe2*kKc3 z=#A?-e+VZhS5@ufifGV)>(VveOJ!dcI6*RR?I&s~zi|VtrNOI0P6VcqJ_lTf_T|MX4zu^0LqdQ%0@U!p|QLy}fwE!^K^9`1Fn`!Qk zG-*{fhx%kbN6i9<U#`q|wDI$X7-(zCH`$IRB=9+ z&uFQm!ooyvN!F`cGhf-1R(NpTJhI=NeOvHZ-temozMJC>xQ9|!bU4C#i-^Rb4K<$j z87!YdDj{p<%f>y%yFlnYi3)rgGy}u=Y>OkIV`*#GQ_l~z*PExCg3rab1{{QPi*9R{ z8)LNjgHexi4Jt+xvo&@)%D+a|uWze$&_#Fu3?hbgCs(GOPl<}!tNHG^Cvne&nrn{E zKcW5?(fZGHbP9}(O=rKE28V|oTvzg_<#n0y14PK5v{9}=YSp^v^DRc>lAnEPnd;4R z*w%IJ-a5wZW_{XeGs&17)euTDbAIs?PS6#TJa$djhb_@lU;ETIL(~_0Bjx0yln2a+ zeklKboQu^buwAy{;6MicAeguuI%05M*YXkxpAst-h&3++Ny@z7B5s=@Y#fsB>S9*1 zLRI6iw!VlT%|N>oa?IR$FI9+1DS)7WnC^hsrX>PvFg1Q(oWCysa@Ai{>AreJNT_OT zjMo!E_u^!4RPwdR!AhD5XY7C5xxaCjqqs>e)Vc{rE*ywEXtDtKDA%L=+tT)r7GMx=;Wcv7}JaKZ?QYmX^~Hl*jng< zr96&ybm<<}TH#WQ;uI8OVE*aW~?CjT1PYH!SmtQh2b{Df| zW@hlySZs=dBc>@4kWWfpjCV8KU^&=TRngO$jfr-;w z#1#(ddOIac??c(ZrNZeiS{WQ7_p@E4I9j;bVkEUkYaUak6D-~ij60H-WQXG{pSDH) zV#iPJXauZ;yo9}lUEyRjR_HqDE7M1qypyZxBA3Ei%uySme_7YPeEB}>bZ==1lDq=p zGv;%a4)YI2Bg(?HeZPwo*=Pgj9}wqBa6j(stYl)(W>&oSzHx2MVpYVRpnZj0zs2X$ z5;$|HJcjeyftGJT_uOdn++I`LcW?1S8GXgdZxXgQbSw#Z3q7&VJ@g#`*ZvOQ-e`WA zM(p_=t@OMqoMmY34y?A@#Sr2105cKngT0HKuDaj<_oEy-9u4?%RT&wXm^sGiZqV)B zw4LiOr=XBmRu+4`91KA~#W$_iP3L!~HEQu#4Z{#w0kr!XFh82l)!7PN&Af+cJN-oh z10oBqj+e*Ue9v`Ty&Pj;DVUg;Kn0UC0DbO|={Wg};+G(J8OJIZ^2wuj=VG$H{8=4$ zCix*TTPv6m3odVkS;-Qh=HG-w6SyHk!yzLi<5|d8-08y?Z5Nz~#_lZQSV>KcOfv$( ztgZM#vY>bKt;HVK6iAqC4Sq!(&k-5UzS*2sETB2CM)0gjf;^muqq4hG)|fvcQKM83T>cED;C);)nC1u=rfzV4h>KtJo8b5{ zZF}H4q^bG&t^I96dB+lt*1{Eq;oln%h~nnJ>k9jF(TYFOf*V#dc6a_qq$*h zt5p6si@+9imB@r5dM3+FR&#SZMbP=hNnkvK{-K7G0AKN|Qk{9?;80~rZT7{5x>Ji8 ztB&$6=mW&4^lb-KC*=6UdEJ}c`^6CCGan6BqOt9my;NviY}5(};-X|_j7}h6EqgnH zPpq(9VbpZrbP&BBiMHKAU~D?qi#*)4MV#wv3D4#EaOLidwHjeXrv=<<6nGi9iR5b{<43Ia%yyhUn0WeP9pxx-TFC zNf;Bke^od!yCWdcBiVG&!qIk`pz0G0MFj}YliR)GX9At6I^>vFJ*EyKs21<3j!-lnL|O`nfXiSSyl_hXm$3rm<2iK=Vb zh-K?j8V0ND<2+7$+5#S*F#dgNe%40d6yc$)I(i@Ph%9jJV4`u<9t4Rs6sW*J`1qqJ zQ^nSnU%D^XDvTiVm5TVU$i>yJBbVeXo!B1eMO=>8C$(3k3n6gLKW-iweQ!VV<#3WY zFOo3+h-A9yELL^jhg9|*U%x$`pgCBmN+@ebIw8Zcv8hRqvcZ|M5Y58DBl*--v|>+9 zcwuPGPRyR6%vUOXlK1~HA}>Qv?%%1YLDw1{flZ+OdWnjQ>oX+i?o-g?-6>R-9B7=C zK_@LR3Yde46d;@Y*K%-wbx6c*hYJke;5r8H(SgxXT2Q5u<=l}`tWoH;9C&>SYD4Pj z_um6^U9ICNH3-Eiu$^&esGUn#j>#W0Sa7=5+Yj5jUUf3>B=#C2HGCL0hv zXg+Y8LnG|HpEgq74LP7q%lR7&qmk>M6#WoT!&6Z>pYE#UdxcPfj;E&ePRtzA5zCb& z|LDsRRGAij)V||8=ra}cWE+O8>7m@GHG8(M^`EupJmKH^DL6~iDt|Qd<%{ArC~fH; z9kEwo@Tqpc?hv})nuZCNtzZ2_q;qz6U`hDu*Tm!|J_jK#FktI@=Fs)v=&RV`OvGt_ z91?jgwwmhJ(AEw~dfxfOQ4|D|0kxq9Bxe=7V6tYblu@KI$r(L^*P4q@vzr?)uC$Yz z6vVuUJU!mr71DSb zd-LVA-5(lOKwKE|5nrvWH@n-1qB&;>WsvUf9*q4iv0Z+{pAoXy@+V)?KfstgMFwqi zruHw=F`=+oQ`4j2jDSuDBHRAq;LpIs54^qK6*PdF^K8$)(zT~_V#wTK3C zJDB~J({ZblbRtE&_r*ubArwdF?wU2`iPgFz)~zJ}&o$+u4O%~e)=?Zp6aM28N3;1~ zkqUhFKWZ)<{rX%|!svH>q&!_=L}EA!`~%IPWC$z~NJD9C+efX(R=a-F4C+%56-bz6Fej?)`!8+=ADP_dn%AKAnXW;6vy02GVEm8IQ6bE$D z*KH1s`pGE#XD=E>|F^1pXJ0Xbo>aA1TGSv&+Hr>ulF@YHcMS~AWa^ARYkBx_9)gPw zZ@$ImaurWb`{y<6lnzc!am}*^nZnPD4FA&F>mtO}boSHCvY}PZg#RP1DU1{k|5hIR z74e_cRoUM%OSHw+sMCQ`=hf4qi(?&8&j296 zIZg92pRJtb?uzMp^F}F?>r?k1b>m##%0V@!z*djG{d3n7x!di0z*8yeRGRNE2?xAA z$D5<2PRzu5An$>D9@u`cLQ!WRDkE8a$30LaP^#OVr!WdXCx%)8JMYr7(WkAusOQ>Ng|DAfQA0$+N3S9a&cU@PZ`?1OJHjV4Zg+BCo9%nfYS ztevHxaDhO|P-fjQl{SyI|N9!Dcp#HYmI9AFXhd_EsS4TIu>mz;zIVHYu6%Z-(+7*K zY2aH0N*RAv-qI>hxHKCAqXS4F_5yZn2{}2rm{0<4<(^fSI=fjLqiNS>L-3{m30++v z){29$_x}m6 z&;!G^sI|wDG=0(Rq|wz_kGwf=)04WaUH?7{H}3jYSgr7(84dIS5X??LgSZ+)qdyFtgMeT;8m!Z1X@cz?mV8WNyNn$a=o;uBo+Sg;J}TwRfxStP0MpB(3+~bfizn$PQz2be&&eJ}An@ zQV8>=wP$2-4>etMC&eBuLp)o(&QBDd3uFsbguMDm7hEqVH%J9~^Om*QU3*=~S`T?B zySoP%n5mgWE1}mFKLSOyjg3WWtpZg*SZ#vPgZ0|_x-W1O=z)xC_wCX3lG2Ke-+*M^ z8hZOFA%X7g+mu$o^Mp^iI*>zc+4)o^E(8dEB~vG*r|WJP09z|zTs_e{Pf{*!c2&>j zobIqlBCk_1ZMMZ;JYK`$tIPYMin4a7J74AJvt-6l$ICElgS-nD{^pF^5ndtbmI_`{ zQF{6G;gIVt<6YAwx)^y-06t$DJr|I(VM*|z7)sG2AQlwL+iig|o*cQ@V z_+-Yl&$j`&GKw;AU`8`G=En{hubwwT0rR9t`izO5zGZo9U$ z9gGQu7lexQV3Xo$xf_x(QFEowlV|+?nG^^E5ax}ftlV`m8DomDjig77bNhpts)Vlm zd!G5_UkADn{lbImTcDpbYseg(?oIlCZ=2tsmH6Z~z^C0fH{eXZKqUtSRP#Lk0;*#K z&~IryS)!$s&K?p+!pqa#22foAkDYhhPu>~|3JSo3XN)1Bw`dCoiU zoH<|I<2d7tfY<+uwbsx0m%&S%EnDqj5hml5&^MsPes0dLyA>8y?Rn$5%3^D0ta;z- z(^@%Y@8$a6hlcz=J7J5>C+!8dx0vR$bvhJpFI^%cq6)zEF@RaD0?a5et5$z|I$#8$ zr!OF@=xCms?j3=~ArU{>mquZxP5J0AX|jI_X7ZG-iR#g6ILPRN{B1J<<7^5jvr+ zl**bz>F_x0p{qjo)d@Yk$(I8LCg@G(Uw*||&z%P41Aw;;BVxCvpe-$}II=GvhOyHY zF9KK@=0DQVu%-{K`Qk#R!b^|vG}JFPf)HTdfy;j!xH`XHPR;gcus->Vbj{`WXn)^+7p5NGvIz68*ROA z){*0PS|$#;*XS=c2_lR) z2iZo#5qqIo(f*xOf%2DJpknyEU*>)Oayd`}7G61_2`p;YcUWXe50{en$UgH{uUYiy zyELU>q<<83O15*=W8fMclu8c6c}MbdMLF&4vJ-?yCK$84BPIj6%=l=~ng)Q@W4P~r za$+r2W>>vb9Au^LamXbl&{YiZsv`XFP8SP)R*sr!H=H@B^8FiIu3O9Ft!$~WaezXIIFl1?yzJX17zCR+CPd78u%{QAh z65EgW=+l|U-qz3j=*}a!e3)mxYI|a0@&8Npq|Z9G<{7$Dt;0AXBzuwH`#o6V-v-%s z$?<_#^}l0D*nh5KU!p^1eY}EsG+P6J(`Lbbb1JWi2~k(KCGBy6q<$zu`9hr@wY zYC%DESNk4suv+sK4rbC*$ghKaG0aPnnr%?)P@qb)>Rbx2)WK8ns698%Z`GO62vgCO z9A<@5cvdB{bi-o$u&h49;HZ2}1)e`Id+4N^E-M!t9GoM3^tdJ) z1rm7V{Ay*fvj*xOtxhI>^ZzAI3_W);bzjad~V=Ph{xy^6_mD~IR#Gog$XKZv7 zW`DW>4p48EUuw(W`3g7NF7^R=(wVkpR{2FmRwTgm7>j85IY~iN^DkmT4N|=od936( zkdyl|5+K7)1f28_^%joKM#ewIw7at9_%u75^T4#`kP8Qxkn2NELv{s-!3K8pp4c(F zOF!7P(qxt7Xg@OH`J^UiU+F%rJGHD|d ztUiXJaRw}PXXyFEHk109wR1m?{pG6h+SG@YY7LXcV#UxYd^-CD+NVzJ{qn;G<;Q~fG)~IuD>SXJ@nT#s2;+S@1 z87<Z%G<-ne42e!7lvm{h(5I+zzmsOAI}8m3VCM(`lJw@ z0==L2PBX+}TppykyFS+vD|}gb8+;K)+sV zp39r9_{-atb*f9lXUc)(I;Tf>?~>n`rGg+1$II;zSBE?_(dA}4;A<~!(Mx$uJq9HeeKYL@j40@aY$SKfS+_3N%($=}br?R)=8m_;3|_Xo zc@c6E+hZQx7CVLLfS`oAGR@X>JA}&3-uj?@GKyk8N1ND0Pe#E0rKm_;$ez_fxb2>VQwd+6 zcvc@hN_~1J6>GK_0g+p+uRy~KXUm$8oA9}p?_HB|6ThIdHb$M4D z;V^~oD1lI+e*hAo!*@R}*RcbT182Yn$O&lsHm~RXM0tSJT>zXZ-r){q{P=Mj2pJ#T zac>$(nKqg>1V=^7?a!0NuTBP5>sT)#$g~(O9XTX6S>ZOEcHzzu z%6f0Q@yiiAQH{VMsbsh1eOJnv;ZF4%^A{6I3ZeAr=bv`7tz)lxb>^uVjcTZ`{!bT` zP5Pgc91;FL`GJ_c8^mfCnt81mpdAp`6{smHy~sncx*>}mW$w{=0CFlP_}@+4Cdu={S`KF zR0_!c2BM}zuCA^K)@KRnvO?!?mIWMCQ`+NGR0xeQ>gtS^)!koezXf&qSTA{kD>WbQ z%Tmbrz8zL8swQ?BF*lsF$C7U`;QXQw>(6*xyd6`$f#_>BOfAbtX}wGapu{_jg-wY_ zIh-tJ^CA8_6K{AZ!n3}$2q~3lk{JrP0Li`f81snMYHj*{x^~~9m0u5!PnN5Gk1dC0 zS8_AV{U(IP^&)V7$%ytxkR+^358|_bYW0CtiUz1jl|m_wcFa{?sZ`I_cETn#H5Evv z<|1jF%LK3pKw{6o4d`krNha6`;#|9ZgkKIG%vb4>J6RzJW< z)FJA?l-D?(J$%h$y9@}R`(rLO>)QQz%<$CxRbYM;)9by+@2m4ucke$}v*gnH+}~18 z(h!&Vz}dFi^_UuNe+R<=MS)h{NclchBQ)*T89Iud#UA)Mg)nuYQ%zN~cV21{?Hw=9 z$h7EL6-Jv?_@5@4qQ#hG{rGr49Zr&Lb@Ir3U|gSns;~xrU;t_I z-cOHwfThUJj$JwT_FL)E@z@B}>)FOEiD51gsr(cMS)A8Ew9=btSNi4Iu^>sExR*Ha z-N+1Qt&4L}aWHa8@NfL!RzWLnGmIRLvNh}ASXxRBO=^xifHge_La+W6d?NC=PNkS6 zR+o`D-ZUgDrGi1{bzo_2W5z173WVkzeU|hc%GB_^QO&;ZnD(u{_jC6q?%zU@J4WA| znA6*O`{8ngFU4EwX)xE`yePC=4i1?Ep}yg$ee$K#*ZHl^Y5V6iGa$iV*;qjVIKKW@ zlu-UbSeRTcN!xWw8dyNq*8|t@JvJh=a5wv5L*3WxHlTpqDLbtA6UZA}AaW|V` z?H&Rxm1#9}J%~@v&aJoR<48F3VWlw}4i4FBA2aTMe)4^3b1~jpNQ#w6D_MOF{Ss>O z9tThvNAeGm@A61W?3i4yZy#AHrnTEeWl)+kD$l4}Q)m{xknw+Nbl;WAh)yUeuxy{S zG4LOeS@(C5=3vcKr2i-;rly{q+jtAb!O?u0*ZGcycmSJ{Sf!AGeT{B~iv-|J(3O`A5j^bx%OdfHgfAbqL1l5+E)d zmYXU$cBHc}BYoA1XywUJ99Fc=TLzKBlpXQ6mwt6T!^#_f$`qF9;Cwk$vE=W(T_JQm z%pH%AN1XRk@Ae*%UJG#I!F)b)*Tvw~S;*F&AHXem0I5%|$Iv3czOAM*7Z;Z(2bT|S zT@@aAcZK&ipBcK>D3`SN&B*2#to?QJ-Zw;%H&2~$B=XE3zdk@FpXG|3TK^9GpCvFx zZ=SAk(J3^hW@KTaW39w0TP0&exfFPKv(m$hl-^}VXNx9XviSGUtk<}Og#~B8i!ZPy zj-9czoe{K%syRwYO|7$`5_a{WodXBVGfmA;Kwn(ms!b2{xK!28Pt zh%&^^ub$JIhEd5AzNr;^OqE))umqfWV$ub9TyZuj0!k(np@Z9LN4^b<;RZz@57I2D z&0Qlz@$tRMPY~V)y!GCw%S|7h=8QUw&*B`icoZu`8UcA>4fR)@`#!<6Y?;+7cbmG# z0$0**8p-Ded5-U7cb--m6YyxD4xUl_!Wucyn(QQJ3u4TPj@X1XoTQDFPv**m%7K`B z)RD^O<8;4C2Ai*3U+#X%6D>E2si*7`I+E;XhP9MOH~{E|?bcRxt+M}i6km>j6bXQP zi%_N8RzCoz3AA8)Hmh$;fx!$&0pH55^rX#R59+5O@>vfa_u0hO1*OI|&vKzFU9@G? z9F@O(t=cal+81=@lJk4W`Q`i{;SXQSKdC|tWAhPL^2%Xx1vsh{QOO-$`fCmhu;b?Y zo*K8jQ)~lybGC-~dNWcMj=dgPYKM zp~qQ|vtiB#v2O<9Pj6$(|IT~KIy3!hTHQYM$+F#YyIXwrV(GG1=rgT+<=z^cZ^Bg7K?B((A{*!PQ?$H=0Ra!i#lO9v3yN8?QG!QRd`vOE(P@eNet3YKD)?M}ce6@?h(3Lh^$U^j@?QZZX!Iwo*X#+r|j)vIowja^ILo2}BqMwx* zj5xzi73kpqLcHg6n!bLzmpUbErqcr(!H&s?Z_6bGc=Jwa=!k4+FQ!S~) z!zcCjRsXc-OsUhgI@%`G$_8P*a5y9;&4*ckG{lU9maBflgc;3n$pG3uO$e)0$wt;~ zJ2?5p?@f&=g;0%6^oaVafU=ZHS$B}rgDG`!x%8UehU>`tnewmb`U@&^OD@4b+M+_H zwoI2H27hmnx&us>+{#>foF-Td7S!A!8Sx8S#e20Qnn7?wmL>8QKDnczIg^QFU&x*i z=JF5rxt?G~E!pOE9qvFPnWY7ch@vuyHa+s$_Jkre2GUv}1YSLkP(zz96O99;X~|zx zhC-+aXQ+fxVDi?dHe<)$v#^@{s;&De)m&lqIuS+jp6SDGJ?h|eg`M-nk#;I+)9*kk zo{*s5%zUHKfNMrBEiv_BJp;^oMn#cRV*|Vq2z{{e*&ZWNLA3Ig;4s>`mo#l#o_4gX zkX}RcQ}C&y#=rxcbai{ina#mr!r{`~Esl`DA02Dyt7hTWggM z<7nbDRo5TD)W^GOqHraL4F2?W4wSm$#fm#)_AzQ_WklM)a82)pLi|BO0Wuh1l2sDC zyD;sRkn%%-_5)6)fsDvQ7HyzyLPA_y^DKx=aZW5L0l#9GL-f*$+o?K2+pMjuY?gPY-DAwdPBmQ|qO69ZG7T6mFu<@69%xWF0rgf6v-6 z^*rqK$0nI8+cw*YL&6q>*-qCikP~Olt6t1{iP81p`39J3st1+al4sq>cseuVN)J4t z-H5@2Z$|k@w)b}Sam%CL60*MfaHoREmzq$EI{PMmyg|_wXks|+Zis|*uMDJWxb^Q` zseqt622-&#jKi{88POW%HM_ zQx>l7p92-F&|58su@GrbKeZODZQ&T~wKf{<9+p#2 zJ7Y%(tg!DGnc#nHonztsyW4&R7DpL^JJy~0tN`us*kqpa|zs@-+K+-8Q=U6DyZClZ0v)AzL9zLCa{M$NJuo2-embiRlf3UF<+M3tG3VA-IDn4!BXT?g+r+mG zp|+!oA+4+D(RNhqAC^4%vw1lif6vOl6eGeS$=t^&r9`ajl{$I16(9`cb%!_asG`7aTvS(5=U>HQN|0lJEN!eon`#y(vK zyw!htOYsG;Bm-NEEo<6bI9`2y5EtUx;-3XDb6$}0t=O>O95?Wbh`HK5>^z;uw>O9s z5eE%~lMH%v;(BNitE~lgHteMuXgT5^17j! zwnHBr4KpQlD@Xy1!uziL080nZW$ez#ke32S8z5cI`H{>6NJer8a!oU?p+CGg23WiA zl7I}uFo23$Cbc0I-23Ix#6!+ZDtK0x$6qj@>q_<4*4F(|!_+(~YgFN|o`!*hssfh? zL>t7~iTwB4`+STeaC);YI3iwT>F4DXWP3O3@vrkeJ2Bl!w*@1r|KgO6Lyg&XIoDJD z=!Pz7yohkppH|9?3-H}lGBa@Q{gP0i?|Gh%@VMA0oOjT2!$95VyCTFSqXX)w<$cIL z&U6dO=fjN*rn%p#sm^|tcDPD=ST@BcCRFO1>5I05-eHV@!L@#i3U4u?Fk<<97Q6v% zdo(d=hMo3E!jR~KWbK)?&mgVq{;b9$4rCikE>c4OzUkCf)cv2i^E zPSTG*`PM3VVvC-`H&^S&qc+h${dW5;MQeUD0Ii~@?iQkJ>)7{uaqDz)V^vW9AW_qb z8ZU50JVzRHtjU%2EBm?eXeNEU0Jkoku#ht&Qt@EYV`?RYTQI6XV`XBL)c{ef;I)`k z^JVda+n^B&s#*UErb--YID^M&H09l5*OL!R>kf&WYF;+{mc*4i=I&M~tSu4xKm)1zEGS1sf>V6nxSj-)oQWhq%=HsOxITY5%Q zMm2JbO6^Z2f9WX6-lrt9&kGtWa|Gov8V6lH)t4oGN&dNgLN&e$8Yx+&IgHu*(iWab zR`nBc4qfvDc=RxvseVi-W(=*S4eKpOp`xU=+xVKkSiGlv&gcSoJ)YXjjLHC^tekea8{>)TH%Y~-YGhae(H4a6`?vN-n_3n&emfrnw97d)thtESeR)TH4D2B0|n>PsEHlOrZ zXuIAZXH#~Y{)Ksp0#<)$Rts?q{tp>|9EVz5ytUXsWK>VdH>xk9k&FDno@e#z5_^*} zh56~9-ou=Z@6!<0uFWkkzjGXLWhL=UkwB%p1-4OBQby+JNifozX`PR1i_kz5B<9X? zAQ6uwR@!9=FiZh%r`lbH-@^zDS5NATkoWiue~!RPw>^Q0 z47z(C@S4TF+`Qr17SRLc0cR_{!;m@38#Z@6{2l3Lv%t1RR*BbhNgr87aT8 z|I&w2@(U+focc!xYqiPpzxkS=24Qa;Dw%fq;xQWiVMNH0D7nP{&*V-*qF?no+rbq- zbzwi2Bo&*#*bf!xk3Fl7Jx#1oX>Id7VtV=hyc{nB=E8*p7MT55@5wB#6zEZX>r3wY zk2x)+laJFlRYQKdvIbc2fHOt6j2cL&q!kjXZhmg)rKO7C=xK4=*YlV#+yR4De5Tg_ zg`l0k~z_Ce+c(DNI@Pobh)8Vq$MeUBBr-QPtk1tS4T-H(3*-}_?Pc}#P!Caw| zcjGmbJS-6*A%-UbXYab7jBUDhKp?MS5!HcbOpHp6xmG&7p3iQ%(Jbk7R1vUx5LxN~ ziBIqQi?Z^xT(tR^+kGV10wrA$+Y#t7!g3vu$2&Hay@#89@#3Y3hUEBivoe1>7wHDxw6de3nE9cFS0jgDSZ zSv@gphD^fK!i_!ZZC({?fkt8ITBJHm^R56;crhU3m;xW#++@+zgF_1YZUshXw>Hv^Ee+MD z98CRtB>$eg$}$mINwu-c@f;@LcYS>gMX`2YnXd7tW!>CCp~s<8KW~tWEN#q^$IiV4 z@zn7Pc~h`)N_jL*#Z|1eCrPYfZR(@?H~ROI7rUz?##m58%->!>T@Ue)Kaj-oH`@uQ zKToS4n2*hi11ga5qpFGq-^J6i#;SzPsHmk;ZiXedzoO9fp*(@0(4+YUbpXShC{WXx zlz~dfVf8b@`|=PSQ5y5z@GOO&8tF8Uz4vCd<8n0JV5aOV{nx?xy{!z+M6-MX8qyqy3@KPBOpKCyJOi*-K(6fvyn16M%VT&mQSy|^AQwb3slD`z!iz|s+u7hun)+u%4u z&B4jZPNGBZuMSEDJcEFjM_;)=Z;s687U0yk?OcoAK@#tzPKzN}vGGG9qt)_wpA2?WV-QiAP!X~?N*NuLb%|(^VRsOaGM<-QCFO=brN6{R++CHX+kK#W z-w=>r!h}UI8+RC0xO7%Hc2Hb9z37fv!>v}!6d2^CQh>eUac^+6A_Sf?jPZsuV0j9R zlo-s1+}B{6Hao8W{?Ulhk_<)iz_ms(pD9h%Wq&XpL?>E12H)=NOD<+)c?6R;WlO|$!AAF=X(?K^W?QQm=uFwIrE*#k9;$vsboWfX5n{I&! zScRI38qLi!qhHao+{@I_`lc3%$u7S#Yu1h~-hcdLxR=&DQ#E4O*>@a?Csoo~PBd~c zgkILRihkO!Edf#kqv~oF#)Qyj9JrfxAeN!Z*VXO>Gp(cwe^ikk#|}KD2tw|1u=UI` ziDR2K^8H9BU`LA?%YVSGuBHYb_g;{k4gTiVJ};j9;2ee3)&qrr#<48|cQk1Hees`fjNuOHM;^$QHeDJz?f}y(`pTVoKm(CzW8Q!Dx=!-s`Uy8X^rv=LK?$ z@Et5-(E(muyH{%S=lSvHhsK&qQ?*ipA0c6<9~P~EB21T&PRm28|M5N3#?dDO+`PYA zoATRB(;?t;-{*Dc$ERzUa;9KJ29r8?akLUTCH0R}1%-VBfpGYm9|M!M84#c1)Gy)g zcC*M<93?1zB1TDpKpK|-^5pA|J1+^_r%@8TpCJVjo>iq2oIlQ9p5-E=w+=8xY}qf3g1s2EGJvqLGHHe`S? zTQCR!1WKj=x>GUkS&}?HJpAPa^Q7lh*xU7VQsA^(M#-MVs-mK477ri4&UXNC=WaZx zGn2wHoCBx-A)s45;Nj1xDM~t2q(OExzV8H-Vs8S~%N;t;5qWfGQ}1ENuv<^>4*(bR zTS(;wRzA3V{N;|Yuc*&j;+q97gaL~dhtxY6r`($`nMl#d9(yj;oxJ;8DyH-yP!*)& z*e1A5!BhxPp&1sIRbR1%M)uPNlTX*9>4syvmPTyieI+N?1fx(%Ff`-x_@feWks4gK z^rJ4v?k=iNy*kFF&9w0A-Xkgyps3)mWd`pHcz&Eq<(X&JpHyxTM)*PUPW<#u5ioP8 zv)rSV^@o9jrX_7oa8ZJOB-Ht}T_?U4`Mkz>LlhN!X(^r`aOC%@H=qn6bOJ|?H1gJK z)0dB&&`J4&KisM1tr1HJTHa-*lO3Lnb36iOQmMY@H@CjeYb*Tt#8PtG^D9SiFQi_Tz>;pI&4nG5n`3k-g8RuFSrS1%z{Qd8dGLwC z>ydZEUCjvc(R^5{h3YfE!aQ4;QhRbjxuj`cdeh~a$?!l+5hs^_w(sTu5<^%O=CO$E z$%T~N%^z(EJop-@AbA&UK{741#8G!-b?J|rsS{^ItL+XksnpnsM|XC+6@ymmW4dvj zrU+G?Pe7?gR|@!jzHBRoWi6pJu~=&aCooo@7;jtNHE~o$x~&ev_mM+kKgc=%Ln=&9 zC|R+X-?nBsXow+h!A2#kYA3&km>&MEScKq8Si7l?&KYCp4A4?yA2JtrfT>}62Oq5V zzcfguF2}3j9fFJy&qkQMD>mG~OrG(Nao=E^QNiy{Ke%xUbHYo|jM>F39BnLXt#1;N zu7~GBM!1+@W80HP%%@p&(Nd?FVYt8}dRIZN7cOVgPfGNNm5-R?nF!OzI3CXPcGcp4fD z_r7w4ntPYP^`&s0TKm5Z=>P3Q|9!v!)B8Of6Q6GalvKUWWXl>)ib{|p%wIz0D=W&J zxJn%gZL^KCr)j>kftDOqa}-D6miF2WR4pPZ#&|G>xD2p@nFQAdX^q;TuW59*WX9oc zz5k=BH1I|sjgdy|d>64y(Kh`jAR_%TBBkB~4+{dptNgvFSS9A5ZCev`a#A16q2McU zJuuVryq@EBg%T*bHsZGke3_F>!{^|jw%K#)c*Z06v)Ivs*0CBru}ja-|0Rb`P%xXA z)4n9XDkdX~XTz@0PNS^RH3kuGv8}DCMUTsw_A!2&y*?m7JUD1SEwML~SqBEWUfauZ ziA(?CYIe!p5U_qgH>2fZ;>>Rw9KH?{(r4w+}PWNBz3^;J0d_@P5vMgYXdO?$Yxc+=$bkmQnw{m@sB&b2#F$w0*q z?$R^(CI6!Z_}#|*ks}0H;9g+hznqME^#J#-vWnwxj8RP+>^;h*?Z1?IA|>{Pia#XQ z8STd+0;V^hel|na`|I=OjXyx_lPPs<4$!@Y{Y-d1J;oWL*Bhd9;9}#C=Gq}8JfpYh z2`8lXKRKlTb$N_XjH72^C&5pxFO1@!xd|2WVJAf7v`t0OyRXIVfR7(!XT>M75y*M~((0u9#)2H_UTVTLQ zCQLca)9&}^3Je2AMjIjFTEq8>gGXSI7x@~YyrK1uETH%`Kd_I~$5huR{rnk1U-oD; z`A!XFHanC@i3C!V{83L&UtfRQ^UX3!-BRM5@;8&^`qoxT^5;EZG71ULu(>Uwkttz!8&!C? z&I(#wxzh-0Y;+tQ)e8wny4fo!Q5qf7{mB4NgG{}k@4*bqF39|f-=Qs%QpGDD;Z2qB z8T*IUX79Th%^eWgf?j|Siulp3Q0BZ=r;ItY_lNMpQ9UkBs-&s04Db)<_j%-4x+Mu^ zJh1-2e0U`t)Mt|Tyhh(2U7C*t9(`-`3UykngQq}6a6g)fMTOW>XZZ40FvYFk6pbo| z|G_ERVr2YK>Sz2JYPSPQ4bconsYApi#8zx+M3V%<)thUr)-eWeY}y};JN|?${V1G; zQghH&NlB0c#@D?TRFmfwOwCpYx#U^?%F)`ef!`?PpS|G^6&x~J;b z`_hfm_e0BHH>rjCh9|`d&6G0wtSO*3`ipY_t%C^KlK4=DyKIKM@fNaEU!OxZx}pm==;n-vSusG;Vh$|XOr zvK9J{E^1T~o3j7oJXaIfw8}k~4&U0 z^5L5?tlPKALjqF>b~egu`ixo%7LFog;siozUe;%v#9>u(#3K&z#2te&61JNwxe6JF zz@V!WvZ>8=*f(t#&b-Mi2WkSV=)6}2F6ovWoP}%|ZkpBA4uNQnN|0Q&Kel*egp^(< z!I+*qMF9<73oN?im|jvtOQ3iXKCFhB;nB=5)bOyexPY%?XG(aF^>(E{#piTq-DQvC zC3~Z(pf}>o5z+N%^rp*4**bdy*qY#fQ0Lg~obi2xDwt0^q!H!@#0~T?*L*#2Ty1xA zg)W8G)~4miir~YGmEV@Nd1_CI=?zaY_o>e~UUQ4#efM3xm-Vi2SLrPf^KHK~csj}o zaGv2dQR2Dv9lh&%@n*16c5Q6W88P0TX#qsWoV;w#n}*(K`wDxx(1V#CT#2Epf5m3= zUYP<2>^!hmE*r~F>}tKNv++6%_G#N&B+YP~V=R5$vVQ3}RBXQbGZWKuOe$N z8&*O6u%H9Hp1x)`t#a^ZTUD-wbW-{yrI6q-#5m%oNU-5*kKq2R7?6 z)xZY|MiY;Bk3I!5j-YRUw64gmu)fbWO??9f=T`lY=FQd;eY)N&=lbDBQ$%5TIXJ3{ zu~nBP*Yo1NuRp~I_r`G%^bjuKb^$S-_oTU# zqtFyD@rwE-Q*@?%;Rbtl>k6vFH8Hl@5CGiEg_UTx3k-F~%v&FI0D+ha9U20}ro4 z%f}Q3PU@qdhp%6dKZ(N+`APc*c5n5GR>qyXi-M1sK4v=%`C1&(^YJzLonXVMiO_r{JE`?(`PVy`Cm*3N%js7{_Q$9TM0nh1scv!rI@ zk%*4TguIW+Q{XcgT>hPg^o2#evn%ONc!Nm7^_%FyN#=q^VB11<*^}rqcoQU}i)U9s z+b-Xq`Ys@zd}IV3iEMe{9v`7>A$oPgP(uZ~fcrMGaQM1Ed_mupZsA>r+0G7Uld?gO zjj#b-YO3USxb@g-bIzmqcNmQo^Z&W%{6FoYx|hl<&k}V2&`LhK+x709*E-x1@VlML zXvw`Xk4~+!J0fQDeYeb8)3;MTxKrQYeXeZk3RN^!@J$}$&ZyRPhoa3xp76!6TAxo@ zX+B>sr!=*R$S#zJWi=wmN@LGZs5#!CHWeN~_(LSjhXv@Ff1Sb@#9mW*?wi3He-EHm07R?lgbc?|NH^ zSFT;i_!jtXK)!6BdzRN=WOrWOd4*@ zJyu>Jes6LJB7ui+V=FSea5`x=xrchx)dS=&tL$tKJgx(x5Xb(mud-vdLnjll8pZsd z@et^Nj4V=$)}Z3wCSvz_-TLEUW;%=QJkdfrn1(=Qi+@W)MHlwc@8i5F|@iRwRcP#eSKuM}1 zR!XFb+Q)&VGGJA5tw6l5NJ7q%aBMQxhvcIxT@Lp0#h;a_@i*fLu{M`oB&(ZS;i#Qo+=` zfR_va*_#ZYS5T)!;u)g=p~A&z&kKSm;F$2ds3`jve4wG{MYpkG1hCN0&WG|0>$Dv^ zR{q%X6c&=yq%0;3N{hJvVG9FdUAk9vC!wp+Vyo>JhkJP@4U5CfjG}l_H93MA2I`Q~ zuipGVnDY?BA8GpYww&v+L-64qRO?w z{MzW95=A%$Xw&`FV!sxzN?nLPIc_A~-TWl`BMiB}DZFaVO+_EdD+Dr@VtO;dEXoma z)lm&6<`f$)`brrt5x_*1i1O!iT&>HTEr2U4q{Yr4Dxc1nx8r-{dH%dnK-LN#`($yk z8u6=ci*fOks!n2+DXNgs=|JzaAz;h_xp25v&V%yvP`7)O#cK3NN3NfhN-Y5cC4&(87P+t8ID>ak-k0kk<7^0Hh#{%6X*_Jlk4i>7GgGP*K^{9S?7 zsNH>ft7oCqLjtw_@81g{VP_;wf+4S=)oeYBUWdZv?XTk%XSFTAV^@o6-%lw`d45P@ zOdz-F`%qam)%5l7!h|ORO%7cg2ch&j+I-7M0BLkZt<|*j3XO(-_?swYL@WPLoE*b6 z`{+s`G**tGu)LOgT}-z&7ie3_sC6Fn&Z~SHT7I2U1UME(>KRZB5}Av-kGW08mVtizjOa-Rv{O49a;McvTig((&3R2B*9&PEuyk*$4LU_ten2Tiz4UI%9425@i z^quRNDz^fI6~F${bq#<(SAaU;b3Bq3h)+{pT?fHS-knD;IXN;uhEkX>w<5>JwciS2d>DJ%eDJ3* z2)_Mi&hx+*m*3BwA4IM?(m5qNBO*7s%TuT-Dc+RzT!e@+B{_2QbmX9#k5h{Dq%vq` zo$W-kI_>z`-2!1ti89~WOpyT@uc?K_Y~_O1FMsSmbtXvX=jX*G#k@;A+8h#^$|BxH zA&a(yN7p>H#V{?)p_CEj^`ZmjC<89X+xoW7T>35XQAvZ#IB$bQHPsk3R=lxkSl=l) zmgC3Ij&)4=^|sULFn*}AbX}V*I6Wixy_s{AKn8v_BIL8lAi=r`r@p-y{s-j6J4ts8)?0F!JMhohC?g08uyQ&vE?u{AxI0$_i ztl2%eU`?1r4VGp6(@UqtK4+DHzro*6>-F9m4e`v}G?A=nJ%h6zT?5Jn&-2GuIo@u6 zv$!4R)Wuvstvp>#80U69+O5P5_NQ58K<|w2D?>t%v;)Ii$a*L-7_{)NSNcBDcUlm9|r zV@dx}ECYGhH?zD%nn%3(-HwNES-V1d|CU>kLM`pnc=9E1P9%Ty>0HpfQ)%#D_!aZL zP5G8bU0Z)q#l=~jB1Nmc?0m{dhrg#o5>m|RSnx$c&9Q1&+U-6w@5aM(b9P}raV;Y- z#|N8&c=q^8zPV~+xkSXN_eY{Go8@+$0Q?)5b;)96RDrZ{)3u%xX)9x&rL+fqSM<11 z9E?-V_@d6L5i8)pSZAZ$j@FZsGiILLV)8ZT@lm-wZiZJdl+yvJWBo}4?=+)Ame(O2 zJ)U}2Xi{OQd{^f)Ma>mZHN+zIcEjGxxWy@>ZLnW?ItmxQ{8l>_!d=t4V4Wx0OPYR- zUw&wR4~F&G+dg-EUD!|ll_w)|_l?fW>wCYl1A@zPV!r}(A)Ywh;3Yi113-WN&&~P2 zE5C`6X(m?dB}wPjZ_0>yzU~M_tgYK`-_7w{N#hO@bUr300}pH~a`M1Z;em460A&Kn z`4AsyMoHEp$Wv%6<6WdHA)n3QVO(C=*+L&t&JV(0)t$q?e#KA zEckjZgO|qbchOWr?z?rZ4%)MRFNQ_LX^FLm`8LF1c6N4TV!{k~FPjPqIORZ~zW)9L z!1r9QY~}8)l~%WW)DkF=%ZLbzfo`W5g~7Ydp$`HveP;4{JXgNo-pSDQnKJn9zGqs~ zX2RhY=DL%GxvK)wS5#Tcs89n)5MMGaNvpw3_8xy}yBDA(;9qe{taHuHLZ1`Oe1%1T zw>_`JPJ)QpjEgkUmHKO$a`E1eniZjIl=|CufU5>bYYZL&i8NZHaL{}RwCmk~yBEA| zX|XxIY&E^WyT&Yp`^#}s1nQD%AdvLo;ibZ3THeJ}%#Mpvy} z_>PD~3n7;@mr&soiscZ7=+i%PI1M>)ZTQxQO zJY6s&dPwYd^&MF7*e<&C=S7e*Q>cR4;`$BdCj8zlYVSrW`+?L|*zS563PI>}IWjOv z1?z*E)huI_=&pYay-fE?eX|KyD)at7WW956UGew*-Jnrp+iud>Zk)zWW2dog+h$|i zwr$(C^_+gbn)y9v=1wN}kK9h@+7ZjHHx{Nc-1 z;xBTAn`=>n{e$!liQtlv=Hp`xHeFwIjk*8#*z;Lica>8h<)8BPh4dRGb>Y3g$*r&H zN1dX{cvb@ml(GJ6+W>ShEXp90DsGtMsSGs?)Dc5^RUZi99hfwLMb%H^1Md8VT1Y`H zm#zN>BnlK`r4UTVWByml{9ZLT8LoO0Xayh5~v z!;0qEhchpRrUU*Z&+XT^N`lF<`%A|69Iy21tDNrGYZdwe`F|0=>mqd<81KugX$1@;tL99eTCrj-DqFhiP=krw5z~@{^g@1X zdOgNrNP)u~7twOP@=%`8*0#ztP0J`+5=&RI1eXIu4#cm98WVBQzZ%#2N=0*Lf9>H9 z9X^O7>{{r4nbX?Wxr{Uqj5r-UjdJ%NTz5vBo*N@|ML325|4q?(zh_MI=4t4MhJaJ! zIjpRxB#a2Y;vi-^&0Vi(&9xqnp+s+DZ#BbJxMkzETxE{K=T)0GtQO^2Ad{e=cE?3S z6ArMrw;tKnJ>TsC2()xCBL{h)41pJJ)TEQdpfNKhqM08WC@~LGz(xATdr{vtt?;bB zck1ZWu{e$wu+3@89lhWr&EAh+*@s zh|A0_PmKV9b^#evBSx~X`)%*N3iXX%Pd#4$)Zz_pU!+tyt>9J{jkj%^iYd!sz>y47 zlKm+qZg47WTWq@_Dmv^K(Mz$!k*R2@MJpGXPII#;%?0wuR$py>i0w{|PVFhh~E*0IvwQ&)&U z=>5=9%*49Prgurti=q1ScJ0@)7YF^)9({{$Y;y}n=MrjaUMoV$!r9ZIv&_i6II&Sl zOY4`XJ(HcdsCujLV0f;2Fw21Oi{rJIt9iv$+@a7=QkdXaAt8H8Cykd$h{Ix<(wzuV zJ`wI8@4OE)cH%&IhtamMS#ZEZ%J~=ex<|3n!^fs}%yEd=nH^xL4MVTDqeHIAg#M*d z``}duLpFW0#Wc%M7_IGkiQ;Ydo=a?0jF_^|x4f;TA4uY36o~@?#3##1gFfrcLmvfT zUZL9Et3oWpar263Jt%@SQq`;HV`*$rB%;4RTj~>HNJM8^ovgqG{#Lc6t7o|c(zZHg z%sAW~uSBR^c1GnLnSf5m@(i7DZ`lWWl!^89L*;>33ymM>KmSQr%-Eax*{qQ&Aey~e zjGI@0Bu)3$HaqA;d|!8P&$tUnBp0*!!YUfClGv>;DgBug^P5;;i(@c3g}e#3Y?f57 zJ_OHxb3)$3)2#qtHKcX6Ve1`K;g;DZ7~q3GZ7lAP4~$yq zQ{f^uF6+3ipFz(sGqv}?Y|>oc@u?VUPha0)ozr;Z)+?8S6k zz#dQGTrXTtTuC(v%bC0mka^v=OXFM-KA!f8|Lyk9Tl1n*WBL|YTGhEP%MiTurq9ss zuxAnqKRpOgDzV4GW-~2pu|i7-Ln8{qb9P9mXrUCRQT_FWg}%y}&|}g-fqHflbaoz7 z>jDbpL{c(zIxR_8S57}j1WTo(>T)0@a3X{2c%z*Q04A$+zJ&g}9c~gAaGcB!Cor_O zMhmkBOsok@Z$TERG(~UEhEANsdT60klS|!wQC7w2#s$be6SVg&*S~`!*}@DK{~2oF zPVopR^b&0ZY=~)E#`M?xWcCv4P_<~R$c1UC2CC^6Nvf5)VGQ* zsc{>|{h6bO_3Rb3O|vA}{r0#W^_KkQaGU4s{R+M1!vZ~L!@VHLZiZL$o=AN>?3kB! zzieqR(==3jdp4jl7B@xW((&Edc!9=|OOy2B)a!+ssD!%nV*S_IB%j^t-murmq1ykH zcMdclTFk}8W&ERH2{%Jp6xa=qTSfhME1p^#0H}_DHe)<1kr3u=r7mgt^Ep83d&6## zEwO}N`&4qbN!KZd$GLJ;QZ(}7UWkNfeW_!c5}Kn{+oeYf!cZT!dH3#3bp8I9XN~}W z(V*NR#sotOmHRSUq5ipP zzsa=x&#sRP)4w=dx8kaMC%@IVESSbg{4QrhG5IhM%&?1izOQH&sZBjC-mwPwGaSosZ)Lp+*9{wV{1N2TF#&vJLUiQv~QruUOOiswN!j?ePM zo|6XsTMbR_;^}f++^mjuwQrkQTDTj{3N|F;8!^I*~@K$COX7W}V zS>Pvb(AxZu7N846m9ns?`%vh*bdQF1K>t=Qb6;m@lL^P;qm8{-*#aE;w{vxQbL8h! zG4(TKgU)vzP^hKvVMk0S)TDmULFN8gpYMd?DeoY`;uk`$QAkohR(H#cHV*>g@s|ai z&8c}rC3!rRP?r>4*)+JHU}fcad?F+hdMAv(8BJ3)^Q_j^4v9$@&S>>Ffsh2lLhs6M zBP|$Pka1I@Dk)XBW=LW(!}w`MEgtG`qza?Pqv=oKH0j+5t4a-)6!E-FkCOKHF;#3@ z%kO}$mgTE2%F1a9C$xwDIn-7*R;*2$JPbnXWHj6h_;<{<=~aq3*8)!26(=z9sVDw6 zDVoq>QUjOwI`9#Fa#})qg&#DZXK1ADkq_^pJCDs^<>z1Vp4}R^izvyMc|)Ee*R8qC zkL*RtbgRu@9mqv~A*S>W=FX`neG)<&dbPW^!`psO&tAC^_YH-gUX8E5qd|`f5e-Rcd&Cmdjn;L!l>LIWm9I;u_=Y8- z<%mm{`V-wLpg?T|I7R9zTg#tqk|L0UqIg5lUCF_s=z@T5Az_9Fp!rJ z&b~X;o{X*+P#EItRp)8SK&^{h<#=kYzGFC{F)!!#-aB6s#*+~9+0 z;&^C+#~0MLiAjiwdLVLN(Bwr2WIH-j-yHUZ3?Sl`_+mr-93>oA=v5u^(s2YA9!0NO z4SbQuo-!EaG=Bzhj4}j!+vK~A^XyAXoy*+3~R*H%jsm~r3(@i7K-HUlY(`0 z2eDven4Lu0l3yUdf1guCjYmxUWO%BaLqdEM6W>?S^D`0^bt+qvE4HUcwcUwMD=H}S z_?R@%|1V4x6WCK#oG}8Zw?9t#GAK4) zaXbPYb{8)bZnWmCe47u&${R?6gV3jU#aPt}`>LB?f5W$Ieq!fpI7RL=3b?GrxYmKBVt{_0?(PwAmr%&&{fCn5?&5n*Y zG+0hd5eYg2TEnK-3M>GtljOzy29?%meh{&!J$QOgZ+xM_X>TGUF8k1;kTmJr-SX>QY`-TpsY$x}`o8y_GfC>>&=Qvgn z95M@YLs90*OEZUb>LT5w&5>{4E$!1hgG|`wvylB9?QEGoYddK@j1bCP?TyT{6Jb~f zl#sWb!jD|i>iP!O=zGRXlyT=q@Sqx>tk(kz7<}7lIzGno*JjDiC({nqJ01lQ&At{* zb?c^d%zKE;&l3x+j(fRqSDyZa{k7Kxh46DHc!>5)0_7isJRNv(fe~g`zWzs3VwN3O zBb<$JCo_<9{Ib_VN$GaHWC{CHQNNYUM%P8io&N5K{dlM$mUlxSw^}q3`Pk%B1H6u~ zO?O5$Y(H|Jwk#2a0<~Nq(S${1<(jr0l2YE!BAnBu%aD*Hn{GuM-&nsz^-e@;8HT5nU*5t}`~t&Bv4(%2acirkTd0p)E0uQaF1>b??CjH};LgW0eO9qij1mccu&Md2G57W83b~5x7*53m^v{A^I;~^s3X6UFtSDL<6!Cn%7%v_q#ww&K-pWw&-|TYON2YCB9RO zU92PsuQmWtIw>oyY}#e&VT0!b28=O?=p$_rY4q5zYaEU=bmM6%txZuzv|uHwhFC)PZZ*Dst4TPW`h;gd~R=^Ujz<3ba&`mqeP=IQKx@ z$V9siAv9Gr?#k+uQc>Y(;Qp%fSw<@sdk)5e&h2Nd)5bqj`lr{#*n^Y|D-Xy|m~505 z$|6)8J&@C7H?GOqQrFCNu1g^=r^H)DZa0i-T@X2NAt;u3{-4M{#V(gSxb`0h1Np`B zLtZitcei`bCX9`EYg^rocrPbU-#z72=7+K>Jz-T!({Mhb!-kPt4g^y4LqdKX&dQ+I z9=y`7-F9VN_02IlN?>=koat#;IG|pt!tvApz1ie*vf}V)VqR$6vb@znXk^^4yAGn! zdV9;TQhT_51hOh7cTa0PmY&SNV4J47eCGFy=1nlBMC?Uk!+KMO2o3lvXs-to`kxgm zNs-tc@snq8LJSikA)yWU$BD+VxFZ^cA!V_3ja1$M-#LV{HI0#`KO`}*Jl}47KXi(2 z^w{)prDm%F0{U=8;(Yw$+3~fm+;Bst-Jd^fc~!53gV?KEIe-4kIH5MG#S%cIPa6ls zf`I!)Bp1oAJ9wIADq~JOy6f`M37PNVDJ4ZRI48JYkBF5uks>R3vOh^f!p@G##>U3I z=?aYZ^X*%M<@$o5cH`=JhSPhb4*gJit+Cy*VbcAtuA|3SB=GFPkM`&5L4Y_B$oHTM z0PmBzQ)*?nLjn_xKB{#<66!Teu}e||H!mr4UDDjouTP4?j{YOox&Fof?UGi8;qA#(OjKm~CMORRXWv`LHquUKR~6ktQniZ7+<;TmraPBF&$NahW+_HqpZd> ztZ~=EOav9qBvoSSQvW>X5a5ncP}wn?ZM<5w4$10{zfNX@8_tMI@7)$&_8i)RZdsb^ zTz6jngbs`>1qTa`_2=P4uPiOrewdS>_XbiBh#-WOu3z85{a*W@dXdY7R$+%q0x6-y za=P|F9DPFvf>wV!TPwrJw_aWCjaf6pooEQu;2I(K2>Ruac9&C->am5?y`YZ8dKY_` z*I^68l<@53FSR-zePPxyivTi`=){qb6_|Rspz+<-WXw8cusl0digwZNI*rgYo1wU{!4~9?37AbU+zXYoMI*>iiB;-h)dC`L0|g^1;ybbO)N@N z03kD=GIXzjI)s3h*u;C@biXWy#2L`fnwY>ttIy)Wm#ku_fprt=ijW{}Z`V22UX|qj z?=|Zch(It=-nbzFU{F}o;DCljMuq~2q?4LeZ7|0I2-165pKr#ZJ2g3!Z$N}$L3w!u zMW*x5%C4gS{u{R_{1|j6N5J)FJFPPe`JJ|ZR^G*RTabCN(RzEV)ta@{jlHY7 z(9sI4o4-o*I_F>P9ZzPgMXO*~eNIw^664IO&N z}AZ)@av>xnR!3U|=9-t|})l ztbZP(WL%>{L7F4R#syvCCX3b?_VCQzh`y6!d3FsLy04+UCr~El$jYWi}S6A%E zk9~X~%T-0&jVuU}zNbi8ys2kPWssv2t|20xo& zD%pk_H{-8&ejPrvYNtY=p_Tgwq`*7N?2fZ-+gIq zF}L`eSCSsuV(RJfG2d3bCs;Gf7!6-74}cti+kI(4HL%7>bI=WLzyFK>VBiHp2~Dlx zaciIP-pp^6X>n)FEB^~Qh&U{n(GR!Sfl0wZ*n>RjS2RTm6lIa5(F&~DFa zCy}v=bo~p6z6kCJI*uk-ync;vp>kYtXG9n8vh_}=&e!z6gf9|O$>P#3$5 z!;>JcdwxNWA{WNI9){6ZI5%HA-R`9w*Pt)C9KrSMi~`VJgkcT5s~?I~xAC#`*F!%= ziYfZ8&)e0j`qRYm2?Sq4A}v>;bG*-#kf5OP*By9m5A)?~v!RV6qTfSEG}NRIBdypL=Icp2>!m z2RT{u%$qbm%rB|;$PMo7DpLc_Vm*d^K`3Q?OF zRH>wWehX?!!Ug5ksXAMSX&P%NzLa`V!TqLDe^*OTIXU?RJ;?<#BmZ3!F(g=I74Pf9 z=}z-NFg$VAV%Eo16AT8(954RCSCFyuZ__)R7_5WCnr)OjccO(~!{& zp)vapHi%dBUH34!FXQ}vJ!OrrK{Te@43wieb$0o32x-VzvmW|GRrFs$MBy4yBiXik z*v45wK`AB@3fOF0CpZ?j)8~uZ`ZL<{g6fJCi_?@t*( zF08(Aq4VoQT2WXSQD^6L7r9lx`vD41=-84T!wFkwka`$+!bxba%oC3{)X zIHvB`b_*j7F6xb|OqDKohBB{S--U$lEwxkQ;>Izuydp`(O;SaqrCH4uDvlM}fT8j~ zm>qdsNTtNDKPG=T@;cgYwuAV^)~?1^SjKqv4a`|_@SP5;M~oVo%nl^=a^Cn0S!-(5Di>rD zxPZ<{T`~AuOq>2@Ai*J#=4p3uY#+eB35Fxbowl)mF;cgqY5l#b4F%dOo!mPmUVF`+ zw$x&Zlw&|jrB5mXq~cKc3sodmQ4-_*0e{CIYY6V;b^86A+C_hY8%D)u56WA&5*WQ= zT7K)@y>)CIClqIHU}Z9UQ-qD}^X^krwiq@(DGCwo?Cq+`7Q{l#{54EXrykmQUT-mV z*^P~l;+o7(2~$>Vnw4Pi9cH20Y1Fkq>l)JZSHsM21&6%#%f!7s(t!*cPE#qO%zo`V zY9PxTq!ZcH)>>nN6dJsxSsNr7PA^EXil34_6M5RnR>(a$=E)J~`1)Aayy)yVbR!q= z{RMbU{B=V2rSCE^n%~(#B1G-O^V&?1MTN7$6-Sa5Yd@Zm$=^6jR~sP0f(?)a5TTk3 zb^?W_T2>=kSAwQH`0VFZkMt%R?^X4s(yzxjnMFV~{0KL3{EOGp?(+`<2MaQ9z#@ZZ;6 zIAv(MxR<)q?4>)0UBY7aG@mz4QKFMJb|w40^UtfF(Dk} zdOeX+zIW3KJ5suB_sszoe8_UnbhHJ7ogpQt??prBf51e{%Vun$HB zP=>NYzykZ!^7DF@xv2%!#Y&Idoj9m4crvipH4A2?a{(nKAvt1Bs)!Vow@e?wfn!jS z3~lfhXSsjH`tTE6xivujqCI`~Kx(&HRNHv^yLNWN>b65|!DlWK`XAAg{F~5%0P0PU zrgZ#6GM^uMw#Q+vW}=Sb3hy%O61Wg+r%dF{L9o+0Rdv={fx@IcgYC3{5X| zH4+FS0Gmp>?cjpcC(9x%EQcr@=%Z>JAU0FE^{X7RxI|Q8MGcaYT=fzSX(5?xbE}h25UIE`H$DsujJGU$`6$bm z{{$p3Ps_26G*W`MX;QT1ibNRzs0IMhls{<(3l0icC>Brif!20rMjo(?0oXVZC8ae> zHmxiSB_*5Ybf_Hfc|G7@g)D~(jet;CU!QPtg3So|Xz}%XC@}{I2as4%_Hc17CPj|I zT8bu)TAe%&=zoFaxmZ#LcG`%MmZ?h$v#u{CIM`P%t)T@#C%4SOA+)4Px#EONsTCex zNAI*T_2U)FcZx_6mx0mehNrx)?#Y_{rQ-K}KSqDLtLcEiC5(ZA0U=_P9K#M@kBuTK zI3olCxtbVP4cPIW__%a{W_kAJ*o8%@YyzQQpiDphG2x#nsMJ%(xOfKS%2MD&TfIaK z1<_W=qD+MKU>wl8ifvL}Nyyg*mkZDR5SOw zo9{KVO!PQXbuJoh&Gtwb8Lq50F$`n4PRPb#eR`$NhruD;=iJL>c9JR zh;${Mz`Rwk_Uz)apPnMZLC6P1Qf!&!7uSSm7fxhvjXuVJc}lW!?M^hON@aBlPaO&{ zVqUvx0Mh@dOF>55)+qrYA#lOKy&cBp<92-drEuijSQ_)vdwTBaz#P+f)@Q1UM_UOa z(#?eWZTO-kDPj;|{dr4@lxib+l5tF75EgIDGxgvK0jdX@smob>x#h~q7 z<9jS=$k~~B_(KI6zvmBsEBHYd{~cg#eQEG!p@vz8Ockg1hvvjIuI$fN@uPke8;JyH zs7$u2CQ9?|&qv<@ydU8U?~^0qyE#J~eEY#K4ur+UfA-*q$+)@O!lGTqCo=etu)h8+ z&i`6StY52o_2dq~^vaM(D2plz3bK8aqk_;2<1U@fcYN#)u95->kf9)!SEs~`+_`-T zbr{l$9h$9MqO3p@{?oJkr*D}|(CrPh0bJparFuEN+edegy$F0`fP!+l!D6-gY)1|- zZ!1@7jd%Hgi32Rz>}(&0(*-09j6r}lB8wW3@Lgrcntf<|90&r54h;?cF^I+I$qgW5 z{%fDRT=xeBJuCnkg*-Yn6&Qg73%596V+Ua5Vo8BD-0;v4Au%zi)a()v2CJl$5r<7e zOq|SaL#*CtncvWmI2=cTf{!l^r2PUX697yr5``}%Ec~^;K109Xmyq6ki5{ril;6MS z0@;9op5WiYuUL~Fb1#U%^KVH>C=L^jgk*CRba6ixW5<8Volh=AMM+7 zuBfQ&_`OC#O8OvbQG0T>vRzuhjWHFNyjb-?F-z&I%OP1S$@$16`(Xx7YYk5rgS_qz*LrH;b14&l!kTdRZhW=@OfEhie zR303D0HM9+>guinJ+|){=KTHb8`XBPNw@m^43dJ43y=9yM~Y@b{?Zuh032TL-*{$H z2GmuX7R|Dan#hqC(?Iw!aylo}0nY)vc29!S1`9nEVXA7m>U4TjT;Kj*F6Xj0uq-VNaBF_%A@wPNFusjSpAxF_20k60HHS~F<^07NKJqj-Jh4JxlpVLs_+TngI zSK)aCCz+U4`5G2E!E1k=^Pg`aU23thbY4kY0tWpBd(67DDRYHeBLFZ1io-iAwGX+e? z*$JZfXXzxabU(Ghyk@RDnX85Ilwr0qbZspmX*l;TyFZO!u=jjrJ*4YBwA;D$7h<*D zS~9Tw3dYEi0A~<^Db&64Qy!8$CK_3kp0M^f=qJFiu$9fOvu2Ach$1sv;wMyuvs)b? z#to?^E#O21XTQx+c-q{({6gNJ0>wv)V&vuJ;sqVd1C(ombBGN!u4%~=A3n_ zv~#2DBp(M+2qbPen5RcX(Hz|LmGod4QhV3;bW-nuY!({A(9wKF_~J-%O&S6C)QT1) zVP$%C;5L#VXCa9hN`}IPW_UX;>D+a2LZd1vkx+GhjLVD{5cd~eVo;Y_yMH{LW~SWu zEdu<79fcj$m+g^gC^YK^a3WxYQKLFEI(kZ)j0z6Yxw(kMeghoRzw_c#S9UyL1Mmdy zt1ZE$bJm?*l&4W1Cw+QMpv3IH;8^zU+fL8T^^qlMjQ|ssF&?K)sgD+iw%Z9VW@cuf zF-+llbeHDX-y^v|=-NL_?+suwicXB~$^tU5%nru310f0e_8sl!pY5>X5<&<=QO}oq z-#?!xi418xo28VD<~cseXY?d+5(URdmQ zevTW@7W^hA8F#;x!fIS+jah1%a;l`Ho}ZUyoO)@s{~s+t?Ms6M4<^~)nu`?8Iwj|# z)w8}!82Ymv`<N+y_)D*GBK7Jft)vic(W+n-k{=c!c#GsA|p%9c746CfhQHn&x(GJ%W65 zO2)hnT^i!iuA>@1diQG&7&+}IkD;m3Sv{%gygu;VPD|xj64Z93$!G9^6ofVR3B$Ix z{?{fC{2F-(n}NQ#SMJ45z9)kE@q1L2`0DbuV3*kmy}7M5-pA9ByO_8koqSE2(inH;d1-NRW_$(l=9}A4j%M&6x6$E z(0sR<*^?`B_?p7T2oXnWJ$Hg^4&HEveAq~^$)rmi? z`kH&xf_j-nx6sn=t+OW=`K(hw<3dwiU#BN#j88SO^Db2(DJgNV(M4s4K$p?b7>IYH z-!MYPA>&Jz@r2j!?<+1YGLccF#ZV28;j)C%0YlmTOBK6$af<7=8bk0mPe(Rp+hb^o ztr)+ycB65*%f|of9X`Jb$r)_4xd;i}O(NwK7Z=Z(rHv2tV`z^7R4Z$m7N@xwLo8tY zSf$$=O&S6KORa%EBQ8F^Pu;3rSWyx6aovevwm@pP_uuZybjjX?lP_YW=m zH0kxx`;D&6yWkICAGEh;MgUSAXA5Nxccb_&mLQ0nQUC`fzUvWDAUxg(z_K5q$a0^N zs|NUR|K8{c_*PtAzMtuKp$qWs-_EVP^iLPc-(D6w$?52#u6GA--)<*s?T=@q-+`VD z65rVy_^4>IUy1YpT;d-qa)S5uOghU4aQkdq+Xq9aXG}+D$pPCX0 z-05jd(hv$Q*N{q;vNKdW7ED+Thi>i%MWtHD-GRtQQ3RY3eXl2;k`hL*?qBXL2GFLj z_uBMstc%+AM4+HXwIMA7BA%a(oeICTHjFn>g>_Y2IBIfqVtq~6mm8}Ts{YVDZoD%v z8Nmx6{w*rXJRoP2;c-JE5eZaAUbE!$a@+fs=%pa!{&p{!ii^At9F}n^EB4Qw78pES z;rsg?+MZXiGhZhA^YVprDXAxU+td5AEDaZq1)m>QiM6z@co8`fY`p1~z z;(AC)N!!(2?-=(f=tS!ir@Iz{44)&LwDET}L6NJM+uPwZ`h>8`7P#EvQdwDLez`9s zO&-|YI!WY2NngbcwtsnTr+>dBG42y5gkoNZzn%V$V7(pjd3M)~W}!AbdRu9{w3MP@ zJBq?nfz;3vrGhr$nd5V|cKNh_|LXkI{|wAl7(9t{}nQcIOKzSK7luNCv9Q?J4NIZqTDPufJdw zXH&PDzODon{9#_az@QT4lE-9rXN>LU9|#_E zW9mA0Vhctre1SPNW}qqrfhv4e$)AadNc59U1v3!B24`8T(W9$nBn#Vcv)5+UPkg0 zP9gb+g`I5tub zlQCyiKR-_d=vZdmxB;*>_svnbWdjtHKPabikM;Ciet-dT%G2uEhXyh+vhquXe}UZ| zE+)b#t_O8WuFQFZrsCU|0_Gk@(oge zpBWp86uO+p%;l#mCdy2!@=Ual50zg}3S-gf(q$D62UFu~H5_vlRe8KgRCk zD|AC?v2Qn_R%McK7+PQaM;w^mOQx|# z{L|Kbyk0Wt55NL)?r;FI0z?7!SvI0TfkzvrsAzj6w6(QGdaBW6KPS_S0t{xSmgMI|FtLMkTRyzoUgE0W! zY5alm*13Wb`MySR~M@|LwKpcLZ&9SDzJc@ zjUp?xx95?K(PoApuqG5wk2A@5jpjyW^oFN2H?4bCG~Xy~c$o1xz3W1>j;21H%>v;F z2lMQ>+dyN!ouAY}vBg*Ao9^1B&7&PuxI8%!uz?^_&HW4*=6A?ly7ji$=;Y9oiNuS@L$|)vXkS1lkZZcgDr-Y~2 z!V`2p&^Nx_=EIC!!)0J}T7BUi5%un41G; z)nn<*kKIji8A)Mf1HD}RCC%m_6j2$2F}Sv;vF3+*E~Z?uzq?^8|YqSM9H-n zvOI@v9%Jf5MrBG~^r^MEU!u*OQ+4YwGrktQicR23D@c*)8*6&E)`v`HxyZ$qAb^WW8}!A!X<*Ij7kA=sUI zKI8*NuH)-X=uh79YMv4WX;h0;ofdn=lU-yQ73a*n)K(CE!s8%X>=YC=s}Ugz1$|nE z&U8)n-YBKf=|r`ob2RQfcYZe`i&0~V_%#OelaTcON*J^xr{?7pF5PSYcrP4tY~c;B z>33`6?YAdT_oo|-bk0L?>0}0UKe?YVXbT<~HGI-yz*+%M`j_DM)RLQiw^6mbo1`=9 zwTMj&ekDazVYp?^Z`p*w2GNM%(S9%`C3^H?ePkkbyV^f?`(_7j_g_b+=QfN>QX$~# z$IXW~heu^PLf0e`_%j^x}%$IMu9LqCrSCDajvp-|m$ zmz1#^ZC3e$t!(#MRbmU*vuw-8ptNN{Eo4Og4X&i?1Tz*ZGAP?)EsLKXiH||0b70Y@0T`Vy(;GPfCG7WGAb-J<&IFZEOQ`}uXP;OUTZ&Udq z#fgAeA7dF`?Y}?jOGyebKh$g3*vomEMH518r7sj3bEjv6jJJ|ZHY+DYCtKqN4=v=p2}39Juj(0>hH z_w@8stqL;0l+KTgvu%#u?2k4-Zn#~$wy)Vu@&F+SBm_F8t~#CI0!LK~Jj%`eke zAV|6rdkx{I2+LfCmZ zka)GD$Zkvs59d~HSP;idWPgi&|^v+0J z*bu4jVGTDcev7-0O;@e!ZP!CmPdt`2gIT!9bPp)C{ee83i8bYXI@Ljd7{INe@-VNN zjSz}Bb)olnRpbO6DsU$Fr@p!k8(2R%aPsPeSDL0A+U#z)7cP5a%z7yq*j;D&B59-$ zrN$09yRfrU$;R!|zc4N&50*73qp1WInWw5@Vfh>T)i}$#2yjGhs*gSAC0`r> zOST)%17Yg%l^EqaqgyvWEDj>uV+#4)p^Qt@jPaenR<2Io*%jQmu6gr$ug>#bXO!IG zC3CRrKZ#+|>wNjgW(FAcqCAxL?0I>4^g3PMktgCVf`L~Pe4oRasj0ct-*Kaphpxgs ze6W$kll=-J1ae=`TJ?PhRT0JXH@~pTrAwzrhbx%zmYKn!5D%dS65ToR&v6jT=Ll8s z42$KezfOaP6C+}fBRal03}nz74iIykA#ywFi+z%YdDLNm=ZP`>Y_0n7gC*#DmWJee zCZ5Si_NKlkHWWJqJQ+Ea;jcUSkr^K&^Jfz>8nF;D$anaItD;IA}ZNL=4(vn z9+$zgD(C6bEpL{Xz%V-|(aub|+;#awEZl9smr z@=-xqY2MBz$j`b(gZpL8Zq4nKmixBreW^_OrqOc$y*~?un_rQ`@XcA|5PrMi^`h|H zyYF?IgM*Y4mqz^xSwL;Tgr1(5EeROh5ONTKh{v)U&X7vuawR4gQKtXEK;XG&He<6m zQGsnM&kt}oUDR(ZHZX8um*qM{pp3t?1mFhBUfMmcmlcP@UYfzvl-u_ZsmwVbT5rSLM#?j5?%ibM4>KAFaX~ z?>my_a_f*^)Kk@m=q4e->x!}o?dg=DA;8SF8bj5LwIzWPmm(-qb+Xz&)_PU|Po!fN z3=vXG*Ocm{<(WD=*_^lQ0jzF{R|J3Afo&tn2?-D0Oq5Q_R@uO*tiOrU@IYZUVxaq; z6_DwO>hnh(!i5Fzm;L(eE0x*sHK4a1C(t5hbnW~m_Hpxg)ufKe^GwsBbtjp%xb5gR zG`YEA+`1bGagC3o{8PNLI%ay!b-TXp+d2)6Emjb>*2EH z8lNC-_jIqf1734wocailsNPsgWGr;#N-mxs2b~YF9AHdXDLiGlQuLUle0&5_N<|eH zpQ#3__B0g-5OZK>>0ljGsma|2eL9TWmg}7bWhK6(LuEk zjMuH{@Qs;pl4yx(7%MhU2Y}9x^gpYZ3Ek<>o-@s3wdAW^EYvs0I+29wJnmX;kZ^UnW6Kyq_1hSvSBdmYLA!TV>Wb!G{frm-`zzubUaxrh7}O z1x~2RACuGClJ)8y^J9`F;wiat3S#PTQLQ&TDln8+hclK<^Sy~Mf`aYwXD z^QdKKYIP^34z&+yQt8eE;Ci@n?V%VT)T5^SenZLc%N+q}zc_SV@s-_7Vpmt@2Ff3` zLvZ7l8#;ndLOD-L)2>=P@X#lUv4%}bB=#?`YeWsE)}|y3%)z_8C58W>g_h~mU`{K- zNzDd_L=70Q?wH!4q#+6dZ7CcJQR{~0s$(1@z0cj4fyB2*`{UZh-9l3tyy|N?K*??p zePniKQDQc*e0EYle%-fijfn9$t9r-x)c6Aiw3mqy6PSlE@E~9!`NR6}IuiiA6!gGc z=%7VN&AO*u6f=zA>d&SuwCyh@8kE~bMD!rGt9hu27Te(&p+1st=i{sJWg*>iVwuxMjLSt z7kG9b@W-QXH1l2B>PzRj@JS^K<8fy@IxZOy-waC2kkC}#$_C*5_sZT5o3%cv*ERqa zX7s3cIpY#SLT`L-Px-W0c@9g;mI{Tx7g>SkI|W3m1CaKTQHL)fphAgCgcD6b8fYQFT|pEjtUq5z)8)K}87d+<}rWPV!jy!wBvc z1Z!&$M-ojS&}q^}2y1F??*7Z^#NDUa?=04Ds}CeOTkB}^sJR@+02=CxXYX}MMnC*n zyM(my+f>k%%YgOKqJ{w(GOQspcDhghLB(1_ME(?*U1w*dg1IB7vB?|60LH<-dW*}G z+x3rMKTWW@pRJCZ+zR|`7)rVe0MJ#h;xXgPo0DwXQlI>>1JmAz>n~wZq=nYmzoN+c z+(vnBy-0%tdr^K9y!c|*??nqDZ?ri?Iki4x#-Q5FpAwO=WmI=k|5>>dCz2wzB+8r5 z6>=ga70so_&Zo?`$~)sDpX=XN_!dVhmBnX4Y9hfmT$W6h<>5b={&V{#K8FC6fx1?H zlrJ2E4Y6XA{CB4hDheFC`1sI9SC_WzYLz;4Y}A>1PRbnm-^)uBv517}Iws7vSG(j? zG$lQ)*fI3}rm_29+^F~V2LoA7r`6%%(WmY?kSKw9Bm*cIIfEIWWVkC|tun-|9}KG= zuld6Bf2F~xwB9zSx;${DGBT1BFK?eLD23OzqE`$_MjTuf(aI3;W_;$_X2gv7{$a%+ zq`I**lu#q;G8Nc=3b2AnViX}s_uOJOxO1m#!JgN&ldmAO&K z@$ur$!q3Go=N$PYHv#T-xIi<&pHVdB4!b2LmV$x^&8<}qE4(kU)=5txnT^r#PKa}> z(MwJxkMDC+VHIlEd<5b9l0ycD2u+D%f&DG9Y?B~^&<;B4&)a*y9_o9{L%&L*^ww6! z`_E9$yVr_8CqjhjqlgI-Dq#*rY-y#zMdYwjD>labjJpj+ffYd}Cq{-7bTc7gpx2eO z6X}hc3+oj^7L&&p_|{td?fn=08F2WEgK<<>{a7qnB56W$a^FOrh>slw=1<&WBK#gb z$>eU8yga<3pM^i#Q(pQ1azoZDdmX-{w*HN6eLCuRy!hewv>WuO)nzQR4#NfAz{(?n z)X4{>2E}R1vl3ApZPYVVpjqeGhjLZpF*;|Nza8p&uP(cLjTbOd2S!Q*maI24GM5u5 z;gMtH?0NMiESRn;8jWw{j$Rj(HKw65LdTaq9E}u)^xZ$Duv|x9(B2I!w=Auo+0&X2 zkJc{q+`#B3PJiUw`aJ&pPn_S&s51&wvXiEUy|>FPey0X-cR|Orlzkw~2W8cz)K^Shc<%QXatZyo zuKBVMpAl~iCwv7{Eph>YoQ#YdaRMA-|J8Sv{u9f$Xb5~AT+&Sq#;`F&Bb;jVxRbIj+G;?2bDcKYg5HjP*J zHj_q;I@6~)Mqmjc{1a9(wfirBYY$3QJ7uLEg7S}VZ#X|kCy|aC2{?3D5W_4qJ@L6a zJm8DHc&Y1yl$?Smyvi*KH({`;rJ=6Y2 z1dtOszdqkyF4z1$#{y8EIV@gJBSIZ56m)4C4=fc&myTUET6I5vY&!u4Bk3#VXUg~A3;U2inw%k5^#597%8Y4fI>i_gmylp`ShIqlt?v-U zQCq!P$2TFOUW{GDk32{_5$`dkgYx4G;24sU%3^fD$A0URP5y&rc#1WqFG^noO?0k8 z^KDSzz{z)O2d>%Voo7^rw`tMlMPtsq!HECS0`P`$yxuZAy-Zxg0S2x#cMzd##gLeI zU+y6Dn}G4!Yf!eot0z@iCcp4=I%5Jfk(v-O;_$~l`;4MmqaBGEjpTE%WrKL@mfUvk zqvv}y9IWemxeY5kzb@yh%33V{ZNB=5Pan2T&(e;FXXo$%TYFXB8QL^4C2iOtz>TF9 zYjHH-L}10ad-gkLVo6!Gx$Dgi@AadEm91UT?4q=|_4q6;()WhCthOBgG^NGfmb1`x z6qgByZrdiHVB}?$GrJB$tf0}Guij=?KQa0_0f#AP{zuT#j**K69I&E&v16Xubezi2 z%5_GcGK!2C)3Mmi$lIE$3L0O|=ZoIzbG*q(J>U22^m@b+By>4O%dj4~R|>uXGJX_L z`~7Az@+gq5yu3pw%RpED>2d2=Qc7J`20CNo$KdobN+L5Kp6sSl>WnhNaOExnb|jeY zPj!TNn2*y2qIQ!Rnz_7^$PV){*x9sN?@*v>kJ#*{=a8jnw|`j$Vu(G)LlO)l!N@_1 zDS?@o)KY-F+N|QzBPlGQ)Cv4LX?p#7x%E+nW)$(q_Nj>r;)A;bn7?9|PZIkJfy^kG@ z8e#PTxCJhjC91p8%}u(u&uZ?&PS6~dS1kqNgLqtNpBGC-`>$w?d306PMC`^@;pGl_^~#E@4*k1x z=a0lv%mA0pk`+HmI=VYBF0kveg>-~pRqW_a?}`E$SX4nQ&G~)}|1x#m@SGb@y33-h z@yC3p#@59~KaNBpVtS^c0=@1fysYQ)1I*}9MRFs}+c!Bi;eN?oH!xYpo7v0UiNe$+){H#j>zo9%(on*$ggkxZ9H*< z`Ng<)ZL8I_>MCD*PW{Gv!-C2}nI}ZXXY5i3cy zRk^>6!o=Kob${*_AiDA)@ZKHQp>1y4;OX?;wf`fSd)6NoK^YM^al$8z+@~1o#4+9# zL`evncOhd#&;=zWDhL~60n@>u3YdiJhq?1 zn#SZXB1P7g2@gjQNin0QrUuXcU;X{41nYhwEja)L)HPrX0n(Sb8QRZWqNLo2;aD>SIaU7-8w3LWto7$p4_?4wUU3@06Qt~X0JBa- zb@e%?s_1A05KJ@e^li3W!$UQ+L6deggAKlX7CUl2EbJozfr6ckOxHZdk}k+>gXpcV z$KrCO1hY(1uC0Z36BsZ+K*1Sl#L)jam0Z5iQCuITBrgt46%j$J{p0IA2EDL|$*vTI z^RiiL0*5aryufQ#Pa-OL41Qm!N)aP7M`|u@y`P2@h0NhUNeL(JhtXZaH;pdsBZkNk zF^wk89_Ym>DXcZ-Zdf_K{xl@wxMfXZJf`eMyBT6|F%!Mf6Fgs=DD;k zd+qJp&8Q(v1`02`Qakq^)d~^tQhxPc`@lk()zxhwaW>~|uZK_>9!@fm5wS$(Di|#% zIy)B^tF%@oq);Pm#(u+-mo;a(FuEwgR{a4vF;*w4BlD3a#jk(Nga0R0{cp&h0N(JL z$FtaAPqx@v;Mml-ap`q_&+Exce`r%)6DDR@@1Z}B#c%!gHK(KgL)_NV`kjS2U)y4g z?Ftd8Wc-HmcS|beLO}BmZR`5081DBXO!iG%7Spr&~cnqSGd=ocrfmqonv% zRlD~tamBiGNEZoJO`70WtG zm-FIU;q>?NKzUBrz_Z4>xU?>@d}{)*}Sqv&s&V#=Y%bgBMQ?zpZ@+EZBoy(DxwP7k3Hv+^C(grX*_kR=z@xGP|y_zovnTMO1bgDq@y;g)& zL;`*b_8NUoFJ9e$tUf(&hUsWs=Wuzm){k=r53Kp6W^-{>{w-(2wr?~2P|p5XwfN_k zXz102R<*-wM-(5O?S3yv>hYhW^#-5@1MT6<*JlSo4yNMX?&2tPr`MfSC0*Tr>@stg z0>fZHaan4%jzet^oyy_ZT)SHeISdci3csc%z0c4!K;0C~!Qs zZHX!Ez!!sGiM+f#RdsdfhKE!$tkjW+K4ZXeo56mg0WZ>C8h|q}FG+uQUP)1)^}F(#7%?;!~3)WTyXe?6m(A^b=2HWoNAvEw*Son5;*4+BD_; z?yvXg{KS~8U9cNNfM0OCaoT>rACSgvgR8N|b<_g;F4bS@i?&b83NO^s(i{eNX0Khz ztTivbf}+tv4mhGay>}>FjhD5G=hzgA0-Nskdxl{g?~sLk^6lE`HP|t8Glwgnpz5#hke(u z2~$e`HpH5ij&fkr@na5d4DE;|>mj)k9BEM>%14L7yt&ZjouWx|Ko*Oo>pJ@*3F?JS z$2<;8r3hmEIE+T_7D9yrwWP&jnV)V2#Rz%pHM9VGrWY?{G2whB!*PD{D3H)qU8AOL zH+`M2T*`7dvuUbv1LgO4)|fvH&JY@s zrQ!+2!3&PP!Qm1>|A<;h;%~^gskik0%MoRrpmkbLaGU0nc~xmkg4$D+>THA(7_uU#&K4xS(KXGVs+aNK8B)nr9~ zLyX_zJikM^p@aw?9yW5k02mONQQ-zwSR-?khyzAIjP*(cPAUQp`zS%eL1lBs06Va)f=bEM%q&m696*|Uf%xa&UkJ@gb)b=5BH9}; z#HFU*8XFhbi@Y4)3oia9nrQYuQpWRS`*p&wp2`1@Brz?zzh>QcHG(S2NQ8r&7>K8K zW3sSFU%yp>*B?P#ds!mY(e}Pv0sIP`_vi|%ZWIdZZWML2^>*X>{MkGh9x%E@%OYrE zuH1;95%|=r78K0mG^g6c?kRG^La;FT$b&uBwfe5=A01yIRa$L-hxtAXabq85XEC)> zs1!Xs>`wgolX;Kpn%|C6QBDAsL+3dmP3rFf^KubE)9Y#h zmji**jg>`>0`MMLUlR¥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 )Pj%@oj_xo$ts} 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 br_ZFQpFv}4(S>)7+xX<>oIW|2Rb2ZAPWjLF literal 0 HcmV?d00001 diff --git a/tools/pwm/samd_tc_tcc_datasheet_blurbs.png b/tools/pwm/samd_tc_tcc_datasheet_blurbs.png new file mode 100644 index 0000000000000000000000000000000000000000..3afac9d2202057b75593ebc451780c9432c62d58 GIT binary patch literal 663649 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 `vKiTQ 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 z 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

    BO_tK(Qvx{@A?HjIaqcyHr+3jL~p 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 z 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%0D3tV<;%mzGjwr8XXnPHC}Li*=4?i ziI~a(=GcAukQ+drP^FR>-vhTOy4kp(bR}0nY?4O){35GaPddm5q}iUaQX_eKzI#-f z4SWEv7G^cA!4JE|ub6~Uu5-|vf)dB+Ur_`Z{2uU{)MZ9nq9#XAuyp~3bxnw?45=+ZJ1CeshgR?8 zI=8I=$KoK$>$-imy=xgZZ2Od|mZR#4Z5P~hJaWF>UaNt=WjltJa%3%bco9j{csMr zPXG%5>CxxyKK67xe7l{%QY~UK0&I}DiSL(pDbQFVMwYvGGuLNN;ixl!A~f_!$z-EI zn3tpiPhXd^Lz??M{~uFl0@q{uwtc(oS))-zwn280Y>~u>vPQBbQA!DIDq~+mmIf12 zNm5bLrb5UTDwQ@#D%p}GO7(tE=6RoIKJW6M8B@RCeP7qP9LI4UCq$S?YQg&T7^#(l zi9YjYghK*lWGZh)3^eqHTm@0M0-r`e<9^9(jtH?Zo6jqcrre@G{+s=oIXO8;0`hE1 zP+K7*z-tzpNi&>(DDFgg;L&|7dN%wmcM{#jmy?eqBZv_Z$0;ZZi;M4#ugcv%?@x28 zJuq~>E5cvqOF*HZ&iILTv>4=ZP+nv}!e*i_AZ;?C*f=QtAtkpMA^{dd9wE1!$@gJu zXo)SA|iF&6A|C7k^P$Ge+U4oP^c_ z92dU?99JK#>V>N*PrpHCqgo{Yy+@4b$Sez|h_P^&SZ&G^s(k1h<|KBrcnnmF{#bgj6YABgc3@ofTzD*NgiO7-;TK{;vIBSb1V-u*}wwk&p4#?68sG>4?Np0EhZ!= zsQ0K*ok6U5(i|mVI6jg%lk*6H;8gZb6&gqCm{$pFfECgx|*I|6isXF&r|fkH)@7VQ|)<151vl(N5`xD*f*bBYgcgaU)ApVh}DKy(!N zB70^ULF?1bgD?*o6xygY}UZg6LgO>DB= zK`CyaK`7uJGJCS0b|2u48p3S!Y5kcqrv#)G6cybil*l3{+7?g_qxtiT6mms4cB1SD zSP}u^Z*Uxla{0)F0V;J^K$VhZuv(x|#D?E)uK;@@o}rwFQ)38!78M{VS!Q?7ojbSL zY1GJ(SHL>|vwx%$yaO@JBry#?N+#+cn}piUG+tVNx!S$D*$`@9>ahO(_i#;*;)qMe z=ADx6`7>~F%p?2_^n&?4Rk#m;@m5ZV%oIS&qEc=kEfP2|#imFGnWkppd`D&FhrD31 zp9Z1i8FIh5sH^Fy2|MIUyp^If>n zvgMMOBH^c~NEeMY51lQK81X&X+ORR7Roo0|#MAh#zoh>ZQOwY1!z{gmk&_L;nf6Y2{*7M>+}jc3E>6wa1K z2SAqzrK5hjbWD6#zb$*0D5wcX9ZJ#y=pP+oV(5{+lvXb$UGInx3Jk}zb94=jxgNADs!Dv&`EVNO$F1vv4t z@sI|0)BO?-C%o!2Oaf)!DPKfrwyMuIE?3juS0axQ4HGN~ZwEhB3Au=H_#>jSqCtZ+ zf~@nn8AA14HbJ`}iSDUmj~<7n_CgAM7%!LCtTzH>uDdc^%;$lCBtcRt>QA5kiqamp z>O=TUwd6P>%&)uhrS>Htw-o&+N3Kl`b*lx zLfs$w^hR-$|DQD#mjyzBm;@tsft!pZPEko|H|I%UMuBR``8a+u7ukfg0DHsYMDe-e zS<#iNQ6ozqK*SZG1<|jJ+rWu3=yuh)(vr*3ed0IwOSqh3C-ih;U3t5te960xpP6rH zM9o18)M4BQ%GZ~1E%Qew5PcymE^XHx{9mC9))F)EdppXd^99wpPdB_qSxK{=$dSZ#fObPD{ z`;b+91KH6>`sAA)0u*B{G)0COF*1wVKum#Ye4{eL!CKg>N6m!W#fw%tE zcJc&jFDxlZqQPVUhPJoj$+)sH&YoxZR|w4cAd4^~W*|#1c!61D&JVP)%wwU^-9d4J zJ^Mj+pAsT&MyTG-`a9nW$D!V#WhmR0d$D-~b;ZlIW*;iQY+L1+&~dZAjoy>zd4 zmApd&fQn^wVGqSaQpw;htwbS$3W@^3lO?W1P+9ZFBZk#vf=0?H1a;y{&2eFoe1XCl z(JTrtXPnCYx2yWUjox-2|ex-=R3 zNq{f@gcy$E9T5@qp6FKba9}8Iq`0&5){dMx^F&7SC{VCA>IDb|+mBLm0VT zj$o5scwBrC_$J5{_9Zeq#C=gGcq3^cn(w28!HS5p$kf1h9)}F!GA4olxj2f^Z-AT2 zU! zr+eBlj#(-+4MiylSf!D@SUeMoJ;sK2ZrM~eZh(G;XFV1elhGW`zRa`JZy_OwW{#d$ z#b&v7OwBPY#43W#f3<;tJTw&Wk#{HjCSn`NH(3$Ff5Ngc+2jiTPdzSPe!zYND5)KI z5W9fR$UYtoJ~5?S*584~inM~(Stgpr8$h@xt}3-V)v(dLc~eP0Sx~It3;uKipgTyj z3!*}pMKq4I@%Fvdcftf!;2oRTkH5?-DA~j|iV(#ckbTXQC;#o+`@{_Ym1rzD;VU8* zOZa1AT4u>XeC3u>{Op5aqN)}qf{IS>>6)m~7GIddc*HA}DvTD4!UXp!;p31hkV`}- zj)3&=bah%1z%OX!)?{M)+{EnS4=hd@O2r@^piC=HsQYe4`zlt7__S;l)nL+J6V;qO z>YCEEUPYZG8+N&QGbu(1px8Tg(_A+>>NppKIkzczeF+^BW3Zl+f(#;@|AN-~JMaz* znD_Wr-JC54-$Wy!K#AHFfIwPADvFOyi4n9y1F4X2f8`tvbGA5cKrC=Jcs8Y~GMc@7akO@K7@k67Y)|c;)8>)+NM-)Git|sPnL%Clo7rtY zogQeS;gEYcr*CV`)5#y}Y$6szVXoDTcBOY9eBDJQNc)4;8-l{MUb{_0%Z94CEm5^z zTbFufv*xK>Z9b&T9}gR84NfP@7L|81|2$sz_IxKGNceC3(01>=kYiJ<8Kaux7WF{D z_PvGOP2AnG<9m?!`}GTGyOwuI3p@PehYKZ@)fM)>W|pz05sQNhPubL*Hqj`v^#(H? z_ob$wQjlQgKY&%Px|6rKNr(X|PgFXN-+t@arvlU&>z!TeKL3-`*SLO#cjVwnUlLo~ zqGwwjeiE;~wmI3?v5iP_c(og{W&M~R@po4;OY(AP^82*95kpq1A)H^rOA>`GPi>HK znBUT#L#aE&3?I=G1}A?*U}j%iJ7{UlF|e{zKmuXx`@!V(024n%XLM$Gh;=$tzL2FkUJ)a$*}mjN#nNLUov>D^s5OpGL~E zXwZqaWpjt0e4O&fJh~GG5er@hF9=%y{qmoK2NxkqkgN()aP-89;{0+4*D^SvQD-Xi4Q&xk}l93(_vtDdb>rDHY#!t=o-OCDL(02 zJuLDnr>JARZuY`I-BKo4#5Rfd%TJ{z<3@TixWw=_NnUi}l()i=a7EWxTi>;e_`(2) z7_q_ov7x0S!0~H5IF_UR;CG4@fXsQ4o49FG+tHt)v3v*^BP5NK*eSYW#aUHDV|8wn z9WPz{SsCA^MFdJ3v&-~)+;-#O1=QewQT+oiGvw;Yv*S?l;{pO@8FE)zJ7NK|pV z)sQhEeZsRoyoij5NWXg1m>Tw`UNvZ5zNtSQtF^gkplad%=Y0Q@l^@pOG$R; zS0Wd9%FL_SKhwX_rB>ip!;uou0(^lSY-DJ73p#8kAs^V7NtuY5nS7AgPci#}iDd+b z2~u&-#=cq*o2V`dCM=d0GeN2cKiP|dAPy%0`F6k|^6h~C#2rbjI8h;lcv;SzxxY}8 zaS}PgC_KV(o@7+g327*L`~a+I=%dQvd>N=Dq**YjM}PjL{g&9yw0~k3fDnpk3$kPC zSkM&9k*7eTj^N*@r$EgZr*Fr0^I7a)iH#nWn3yOlGHCp1e6X-`Oq@214Hl~IKkcwz z5qzA4CvOayvkaySC}0{|!cBP1UGL4-oxIwNRl@~!AX1Bz2oIA6+_1)E2)b(kjFRg) zHsZZ+MvUeA;Nw}))hPelxOdf#;0t%~OeVXavl9PsC?GaNw?bYH{5cc$+r1_ypM3}) zav~2=P|0p=IGx#`n^H@`$TJt&HWAHNB0RB9uOpu$6KW62P!ezxR@P!A1!S=WdlfW% zx34yMf#=?#$Vi9SeDSEnrbgmcu8!AxZ_6;#Ot>I_IVfTl;> z`ssu>!kS3LsB7CnwMyH}jxp)-=oXl06{9>NT2ca=!DN*g=SRhy)pW8y9h+NE#)7E0 zj3MF4^CIV_FJb3K-R7sJJhUAxI%2!C5|{<;!1;7b`qB;#d7G37RHEM^uA_i#LgDew z@k}U7$vIf!3Hiz4bq{@}6t-nI(zISSg9=)2&W94rc4Zcy)!YBjszu}=PB>eRLbHG_ znIuW2gZklhKmR3Q3Je&jR5Zhgk&0p~D^$UL(HV;H9^YWc!h@RK&)VaAz**%G7qHif zIe!kvu*c368XS?#l!slqbt`?FQVltAknv2@E#ZTIIVc>!X2JK4V^JlQ z4MqkzA$@|absUi;vnGn?Q65R9Mk7in_PE)966e_o5geg2zFP53j z9f^@8?5TJH(t|U|I)ib8--8^ox+>|BDcu&eB&$l0JEL`ATst>qNfuoN)wEu8zgeg5 z0Pom1tAM0mS)0~ZY(~(7$jT5_v2FR9qQ~$IwYhKzj3&H6nL*Dm;m4bf5_b@(2t-Mz zE+su`2f{fD3E7(g@E5$)l!Ao899g4CgW6^PPWVqS;yHK-EF$nBQvn_3_e+yZ!N%le5?%5 zdV$dqO$ON6OV_HUv`~}~F}}I{GO-bXa$q)+Iyjf14Ehc(-+kr||F&uvFNY6GMpV4C zd$wN zLko?y83YZGEKSfdZ zaFN*q^9yGt!a5|0Nrw&+^u;Gj9FjoHuPz#d5*&53^q2@(MCFNEO_q_IpbeK#Ul)A75x{cexqA<^T)WczQ5j%OXAy zJ-M2QV8rsx-~aBg)}v`eum5esIrivTFgrct;(Qj1+I;ntv4X>NCvS&V^)zYK0Vwws zm05^k_^$=%?-w=jqtZe_C$?hL5-Q`{xVpL$Vr4uV@e0kki~(qP+2_z)Zm81)FQsxp zIZvs^p(7^Ap3q%2%X%n+jhf4w8*r9d0oVXVU133i-J@zKPl`vh<$vi-*}SC8_r?wF zSJ^f8%a@-k9K#eMpY9c_F~o6PAX>USc+5?Y4EypAdTVHSFg7Fw6LVEEh-VWs@s&c% zwNZ`qbah3E#Sefv>&dh@Clfr-=AWv1v$D8E-%A;FwJz0vIrlzzct(c~GbU;6U>mt^ zBL?Lfwd}P(yJwN(m2*s>Uz|Sou!q9=o_ma%Hc?ZYv9-ybwd#Hb`WJ%Bdi-2nuh2q4 zHNVPnOO@+VQ_t}utU|-8vaKe*cbagBv&T)v)2$6sMXGU1LLLd9W^Ky(rc^y%w;J0(E3$DP-aBI|7ZaUCWBh@YC#J0y@re&Iq%Dd zou^}NXl&p9ORqRp*_STahb4?!-bQO|XafM|iH%u<64X4_0r-kRvw+_5z~xyRW+yxPmn{zkR)^Vx)rx zIj7Dex7+4wma6#<>8mo3j6 z=l{s|ZHzm3nYNj3mJf13x54-tgONWxHaAuh`3dF>so^q6Ld=Fg*W96)n(O2e z76<*E%5@N{f9xdJJUiErJYLKc3bA?dwKZ6T^+HEMm4V3#+q2-B86w=J<8zLwS>i)` zl&S#t&T*=-c^VHEip3&K7>W&OTq8P021CYI_o7-H)g4jWqoyG+5iaICSf}?zIzfrfLAx{-@aBA+3|d0m*JTEzZTC z47-eB@z(O?Bu@aVop4h~GjH?potOhcIx7!S3Q7o+3ToaFG`z^4WU0JO z?xIsaw{PDLX*`acBwiAf5Sc?g1Vg934aW%$HjhGPC0bUREb(L`GOS6v&_>fH_Z56I zmCdepJ)VFJD(W2e^xT$iS(MmrqL_lDzWz%4Ci}{WXToU6Y8aL^i~;DCB&wpdu_t9T zuPybwZmZjgiP2kr3>WnhK@QQnfZ#{t>F`q2}Vm_sQTpcT}8t*8)X^g>5Ls(#u6aRHrgP2G8G zyVyE%p`L{-9Y?u0B+mBstgHw)}ObpebA|6VfT7|aTpW@#ntleifY8!_4z0c9FUm}TZu3L6g2 zc@!PI0r}?G861F4TV|ll7T4l3k;BR7U|^NDYxbAVc748MEpoHK7SRj-Ob{oTFZQHc zMi4asFQq?$w`SWyy`i-o!8ZB0#&$9HM5I6kG=fRvSH;;6EF%`Qvae%&NgLRt@sjK7 zWF|bdoH#5lfUNf7RkdIn)rb6qv%I|N`7%_^B{zpmOl{^J6d$QP8t7I|17|Y5wYovT z+|(a8;=B{8)DVd2Yq#X4p%S6 z^Q>dX-qv4kCtvwdb0jL}^hm=MD}3fPUwCbabwcd;+YgH(Fkn&+}NP1!{a;eDRiq=*#cPd(FZeBwn+~2%-^{n+$UH zni<3+y-JD4wqv@35aScpi3!Z_8O4F2DQng|zu2D9ubauqZP17@fp&1uitV?0j(t3- zQX#eGR%hMPOGm8?Y)ePPwth)}^5WyS8s{_hvwJ68t?eNU1t3^zl${wN)`0d#031XP zlP5-SzeYY$Q+o z+QZkpoq&{EaFQR>y)DlRYx`eQZm8lTG9FPnanw^t$r>h6H%SITuBPnzLeka(a{(se z8XkT(*U(UH=jf!ncZJFo9EH(#9R-HU`X28{?ZGq;)rAx~@tc}2ZRPFa&o`ps9FA3p zYzPF86lDrMQ?tYGv~l?WxSUONhYIx?Y1Ft;BfN`b_a`(X^M{$D|WEp_NDDPcn=xjb8Dhwag#ZX5t zBjV6ok-#vSBkY~y!||y;!(te+(Ae2IW|ghON83$rpZ!fr1vBYanly6#%YW%D0S$1e zSRXuY9+;jV%&hnkBXW}jAy74^5P(AlO0~Z}n<5Z2HQInbG$s+Krq7yX4wA>~LV2Js zA82>m;Oh-i-&e|?qmveHxFaT|Xme43iPz~0P&P<@5t$I6zOLj8;uqExwvv#!9YJ0P zR*$eI3;I!9jE;0sAiRRoPJfvT30cg>5?O*E^YSbWmua3e_`|TmXEGCAC{RcN`t7cW zhd*g%k@K9hW9)P~bUx(aQB3}f3RpFpCT|su9kqNIDn7Jr%s=&Nqdc-_-@em26vZE3 z=3XnJH?f+P*E)Ch_`3kZezSG}1`NY(gZ5We9!~uESv))_6~xh9#9p9#z_ZjPGlv|U zb!y}ao{Kz5x^}}kb9(NLVn63H%L=hb1FgkwM@(v%h@yHSDIVE)-{$Fp0XtqnEx>(? z&km1|Fo1^qhvxM=fUWB5G1mSsMJ9E?eXns0t}ME8k~^yVW`` zzP?T$eGj;QQyb?qu88ZIYx@|VQ^pa%x>}r|qwNZt!Ml1k4<6`z@#4kl+5HpJ_Se9R zf@RP~x9`#8DUbvqVT`u{9}OUhfM8j0o{UpOL3$3&!s+CDpp@Hy9QyPr@~BLH@SuQ7 zL#%49S!Ei0X?=}&!sHR>JN^!FFeo6DU=V+zw$8H)Jt37=Hjrq4MyntfJC> zLeYWHm??^K!B+u^UEE&Ath!0NG8u}J`p&C$HeW$bB%=4NNLA(#P?c5h(xxy}FN)Cz zFRHQO%}Z}3Cb4vw)E**_;}#RI3eUV-@&^(M7Ezo6NO+eKyq{_rP(C!h=7%XmH9!sa ztfB;X9qaVvjjP3A2VAVN_6B>Un$sgkuFbv{=rCg%KZ^{mq|565GFBYkA302HZ%etn zNsUg5jU#($P8b69o4Sb5&!dXnb?4uK15T%vzL6NUN|z2fcvG8}Enfqm6OlS}>!y!N zx%adKyq;~skBA`%&29=3FNkwqEhkU#wNlqlZX7!`ib5DB{m2TM!qjZ-L4yuZiOt;W zYuPH$p-3B(PR9OZAM>)-Q_`VR^-Jklr|g zqh_~jZu#$jfhw94)^}%$4L%p>NW+kJ3t9>>E9-1k#x1C}hK`_$;p9K~PB}O?c~Ona zxYnGNk=EJA2p5=&KI9ikc4Q?RFH+nb0GGrml|B-|R0=S|tKtxSlyAU6Noi?wv-^Zn z-T*YGZ{A*~f&!Hv7ohd$&voLQ3UdZN2bqtLM4H;*Jw3Pa+tc>F(m_ zC@sH;zv-Y+blXhY8MOi7NIQe0i{Jv=%;rsh*Y!DLuj(08K^S7d(!xD9NZQ|O zUJDN%zQaL#MXSfdl?7ISf;Uj=y9c&DfQZq3HUXV*Noi~y!=v$}<-;M$FeqK>69V;d zD3Ix<|DaD2`Wh*8>Xj8!kd2}D>%+-DcD|{&0wBKO{H=!MCq*!W6>VE^d%ROhF1^a- zf?;n`2J8h+0o^mh5p20Ij=2QTqL)m`QBev((eGeAt_;fEGMT23j`=R*3gT0Y++94#?+Va}pvVlc@Wq>k&rlo%HpMF1U$ z%s%2cag&h0Hs^Zqv4b}_CgLR_`S01YIYdyI7Q@)?ZDqA(iwGM{Rgh$n1xi+J^O39t z#>t4S=n%wa3B}{gtXxv*vf$RxlKgEq_86Ys@}&g{S!Oynet2;N4ryMj2exT^aYn#I zX3kmI1Ck6liQa35L669n9hCtR59OZftZbwF19Ag-op`(xNUk6%2w9f!#P`sI8K^9v z{{qv~9&IYidzVtARmM-cPoghHvxY97|24C$ACqmVw;Y_*^Rtses?=EpMO5T`T|jjA z=FKX;&c5Gtaxc&~~ z9=T>KYb5}7ML$cQ$T-8A>}vy{ImLa*X~@fvqQmO>-<(ScRL=OF!jbDQ-E z@AE=|(gc}A{G$KI0C|7lAO+x~4#$RZI!8(Jhtp0S;mSuL@C*Gbv+AOv6V#IXjT-t$ z*sa)m^MLxRF1>f<|4(CIo#Zvnn-~C6008;4D>`>gs{bD|QaH&eokiQTA2)(^#O)5}g=C0D1Q(}TBGS8;(izsn$muA$+Pd8YJ$R~8Mbniu->=av-Oa633=wH=CW zcTa(_--m!|ZnX;~%6WuyuPMMt!8l?#&qKiX*G~$l^oLsRbvIC?Yz3;@y72=#peJL5hyDrh-1R6D{TK0$T;O z9ak0y8^y9iN&}IgI`%5+v}A*h*P?jXkJ4)&pJs2n3EwA4Edd@dLrBk+NOYvgboe0p zmlV>$FamWc{B1{+#(@Nu?emr?F(IlXD{kPGLQ|g7U*0a=IHT5?(T5aXkNA26;q~EI z403e`5Pr?DTW72R6&Vy%0ygb}K&X@aU-ET(E_LVC;l_X%d&o%h71XAhoBRKxx&F+W zl=C|g3;)C9jS|gLN0jTbJ;)ad*GmQg1hREZUQksM@x?d4q)X`BTpb~k^ky7h1g0uepx=kNf9S_Y2*o{I}~*o zO*WuZp3BXgL%f?NGKAN1;06wy$uyUwsTQz6+-5HUtaN4>4(P##`*X4NO!b6p-0Al(rp5T_T#Z;6&Kh^A&632<-M z30tCgv9AGOI@5h$BIfWlWnHrvd?8#?lTU`aQH`>EhoWZLh=bE)6Wv|Z5L3B^L3x_M zcZx)-4sxzg2K)NNxIw=%N>V!#kMh%$ z9J_-qxRqRMYbS3tYh8$4?tC``1COtd|P$mkzFF zJMwIlm}!i-UU=x(CO(RbTUBhwX}(vpwKoi`(mG28J4FDq${72lBdT&f(O|KI$T>gZ zQF3x;K$_6a{J0qy-|Yd8R4y9Z-NQ2J(Zh!{d3M3I8^*!xN;n)<+%EIyd>Xlrak70< ziCJY#3~B<>nSo1r!zPCU1y?n=$rD zf$biw02XIvp|ef@&^?k-{k|LrD{m_rR7>yh&}9jx))QitfOcuLKe^`5W?HS6re@@{ z*vkuoMq1Pw%86$x#VvC1=+m>L16i17J^D1~E@51Jh}FBNjzF1IZ&$wQ#!=|Jk$nUjU53UChbQRZS7M_7tVQAXk^n?-i_d&l~1;B56a$6*t{hz<~5nAutu0m|lT zF|s1;w}>-c)_Y)_Rlv0yH-6IHu=k0)(Gw)DAR^PW5Kx1BBg0-|976%Oc#6^pq*PP} zB5HZHdcy^x3KnUDOG^YNf+r9aI0U71rWg-Vo6;=oPPg=j(vvA943m9!HUC#}8@K`O z2sQgnR8=H&oUZzmuk%e=)Vm4FgGOpiu&ln?$xUEvN{7JMZ`;#KSMfk$D8o+0rw5z8 zYncKZa2{_JQW#pJ=Z*nGvt5|x#Gy;#IFgc zPOrny&^EghZ=s?B{E{6?B1>C-Ynx@v@~Zum+#$RJ zNxd`SRNgml-W>N$bhzj_9R@D}yXxM3%Tv$AG$J#))>z25z+QQZRciLbOLGIBxV~@o z(qpE@wb7;iF5a_=9KdwZ?>Cjito{_4N8^N)B)_T*!IR}w3l>8nie*aVa(d&+j6%LK z9n;IB>c?YaV~@>yx4@*riz;MZ2qV3eqDU?B7P{CZ!Gkg{YiYk1gAl~AVq^+wmT@V_ zWuS)siR|JG*nNI%Sx`PxHC)z+Cw3uzsS#Nd$fsqC7A{z2!c5!e>m#en@OtO95?^XPCZ|4M%t-D_8Da_+(#0;f>YAY%lms@NtBNei4@d04V_E3gYCmbCVm(6(vFssWk}Alqnjr$(olp#u64# z_D$;$72i=u0ewm$;6wi*Lqf}=*&9mhB!r94295IaoDsDHj?duSi}gP<6|cZ7sQfc5sFp)&fC%mMHCC~*D%~NkU z*>k!44sXwH?E)0z?dO1jBKpPvze9zo9*y7T#cE1ZCO9mA2_Z;g672(w&n*xaWPQs4 zx3!rJrI?)3;ZJvpZdnB;!ett1%)n;GghbAmi}d+0qAA6W9mO7>83hNE$8MNtkF?4- zz}Eml+y7vd=sQLg%Lf~d9oF@ASvqWn6MGmGnhwbiOA+Fd9%X&b9uJSz*l973po$~i zZk>q*#kCnIKV-f`xMi{HW9ShO%6QUP*KVEgI z)wMM>EygBa=Zsc9=&5-L=v2$Qty&WXnTR0ikTcA=e)9{;@GLKO7e zeL3Co_}A_#Z2>mBagR##w~qW2X?Z1Tc>j#+dw}aan_nT79Y_mV=ZZ1Jz3(L8=lJMH z&itOUNd>OA9 zX4E|9GhJOIKVIV>APQDK#T1)pO{CH$E_Xx?!zn5SU)$=Z(rkJaK0KcH@>gDcwNXpP z$5)5zpVVVFj@9E9l;M^odBsf@Mnim4cts>Ybb+{5?tDLvug7!IFU;`IG7rzfSSHov zb?PMcmmd4no)=oWCi)(^_^<4fkvShz$A_@ns2qYIRr^&;7n`_mWyg*fP5VE86^CwL z*Zp|(z_z=$Q$#>FSt)ov`Wa!{O>h7H{i1oUOG}To*rABw;t(MDa``6#K@}5sWv%NA z*uovI-#FjR3*uCe5k?lv&xY)ys{G%-9@qB|vzs@qc)bp?7BDN^gy`H8>o;y%Ws^u{ zM(R;M72&Q6Pp=EqX!W+?BjmyV``6FB!v}q($NBwNy+7Z+dt1FW2Q8V{<_WHvzC)3I zWv;2I0ZWmCzf9$;fDRxKghhy$@k~KY-MFvucHA%Iui~<;{|?ak{lDdJ6OJ+WSV5Sc zyI{eBk5M3^ls^Il^E70p50w%^RkRB9mWgar#D@fBk!)v`K}P;tJimyUL&;8bV+(?F zsZd044%>%eScz+9Cgw?ugfgYfNdNc9Yz?fvo;Ts5?GIWwulk$n+Z@9+l*eL}KB2gv-CL?kgqVKwK* z`2V~qD09dyRZH`6VUp@sRFLQu115$Kq`Uw1SDj*5$;JQw_8z+rK#;}ZZ7jz2REhL4 z4Zy=i$_$4p!wU#;8o)Y*o*+0E%XG5!@%@gB~C)J~uKx0~&+%V^@ZoP|QfqMSmruNSru4Xe=0Op$SDsEO7O2 zj|`FCbAZGR4LBFNb54SrE0rD$h*@6DCfJ{&%w+R-Ohd@H1*(({ke^x`-%g^R2QTM* zU&SFr_*FCo{3pE;v+mR>PtacZ-{Er~waTaGuh9J~d?%%cFA=#`~rl* z6dnRN7yBS*>@tiBG_D3>VshuRWx|Nl$ujF8Mlg)9BrtI!;0KkF2)cNhYD`qKIOPgH zmVg}i!AtEyaiRame1*xJ4w>%(*pZroy7w7?ALpEkN3b`Po$c7^%ZU|EOD4uCtjXHV zX$W}n@}E-dzhM&LM)kWO+Wdo5a-wEKiAg0cW9oozsFLo2Pl+~_Ub?kkP0cQ z0|12BzwfYN?GX~en2WWiJZNYPsR|%hsL;jx0&*W0XSQZ+hvnrgSm2Q&#{#1AA8xmd zTOmXF2f!Qh4ylD5O(e;BI~N!pmIGUeF*N1g1I`$`O8Zh0fUu?c>30Nt)$;z7UuydM zJ)TTx5oY&wh-{!`7#B4cq$_Ch+TbjmdJRrGr-8Ax&@R_2EfCb~Gz$EA=qp=J`-pHC z>a2R%#Hx=(B=IyuDMXi5Rha{rf*1mVegFe2=o8?DWWbzQ&fo!Pp!6l*V!zj^q8zr)FDSOV#Em*Ljcap+Gpo(_0U-ME07f@ zbi)-82M>?|h+uANAJ+v&Mnt)0faEe(Oix-^CEMvrH@+NY=gCR~`qKu8AH99KR-z7| zWp02d9Bdtp{QQV~<<`xBxy7}EhkIzm#E2Fx|>O|lOr&o9I<$tH?M{LhO^y*g< zeMF!~ovNsV19VrUi71?EbCjo(?Ga!?Xn&Zk>4CS6L^V1G2>YLNAH^&E?tE`AyFF&H zvGId#O= z52e{-Vv!Tzwd_xz8MmO)L}7*cqkMPvJhaf%v(kw0uS&pdrNqQ(P^@HEt~^gVl`HaN z;{HcbQD~ecoIte`$`#bUlSRdIfpSQOh|r=RWtb50y{)|~sA?zx_4`<5z0NIl+vFLr z2ZMP@s#~D;4Rjk~j*bceAxl%6UFnp{6->vWkeMya29DKm`JC6lb^c)&S}wu?wNr<( zjaqW<0E=~gNiwIvq!Z@=!nPyj+M!5VgRPiBAjkJ^Ih_bXa~PJAiM~PR|7C;yM@H$@ z>+o~MnSt)y5wFdto_uInOmkO?_l z4!XNCu#zylpm2-M9%VCJ@GMm(W>$^B>|(}X#*r24(`h>6L)%PL1ZR?x{FRnf+>BE=)6$!R6UQ3kXcfO)3z&aqj{t#m=kOr z;^i~0GWb^#eVpG75+1OEuqTsyVk{)v+C`VXE^9c3nA?yJpafzB<}=Xq6%r6g&^XE7 zB%QiB)0_g*9>5EU4GeG%EemZZgy(QSRh*5`Y9S~Deo4gCi0cC2YFW85?l^4+;CHeZ zibCxfUt80j;0E0zMF!d&?zGIz@I_y5)DqE_?CQcV6BQ0~C*(&ih%9V(3jQ7aE8M$g z*?*mVk6MPx2PuEqxQ)gNlL_$xwZZ>Wb4X(b@NS&wsJ=rC_(@~a_eTREp_yoU6QF(U zrgxoeN910l;FDgJ_K>Q8*enjL3xdeu1;}h!W+Og19O*SLuBc%R^#(?s1_v!Sv z&NL}5H1|cZg8YV_h9Ok6ZDNrO3`G31#UhX7*^R*hD4Z2AQWO`+1gJC$nPhB&i;oJB z4>2f;&O~+%U>!vz`l___!JhWLSrzdb;MO1278_Ae(=%xf(RG+ne_#Rr?fJ`>TW^Jo zrgeNovXw~y0xx3-|8SofAD@CK8g13T6Wz~{xJH2fA?eJ860b>q7`CpQw}#9$ zT!Vt@JD zdyAuH~!Tzt;_L$|AW0&um@NJ|BVs1d2NYW$9(rz*7Jg-7^Jo7r@DTsWD5d+y+B!rjf zF1c|c4h9c`YX={kh6GjoYCs_*x-nG`aLgvb!>cZT!@&i<;A#1;=z)Niy5GD^{~akF#y9x=L%bc8}_H*vM0=9HJ@b!(J! zmyQRdTdoB#pRr9pUuHQJ`ljo@Q@mY0J7Z9&j@G2K!~bbNu(gwmLAz$Xc@lOzWY zV(Xx%xe^_8Tm>#aGvbq z;8(*oi!%?la@|nqLl&*cjT$Bih==2l+yBIWWm!#ca_K68x&_5x?1a#DeU)~M53P8dW98IJQYBa%q(z^DI~BK)7Q>i>;?&Thnep8@Ffxn5 zYb5HT(U4jn61M+Aa7;HbqDInd^iMR(2$YrPfUL3*6<0V|7;daNTfRh~A%GfZi+4!e z=XZ!z9A-2!*i6t8wv{|7%OF7-0G5orWv?zC=IVuo{Au*>?JT?ML12lEA=|k~Lzs_H z({t&bM_tF1c~Gqjx(%68$let6Ya#QBFK-?g?J@a})e#xU>h2L)>)12do@oS-_wOK> zG;;mLz)TV%n*rVHD$Y`u4s);Df<)SX*ygx%^H~@)QW@x#0)w$X170AwVZ^Qmzx&;v zkvO&GE2|!64hPJPX}`YKma);%O!^JdA6;7MOk|z;+m=y5jev`x{*`-UNlY@Xf?_Oq z!K0Z&;?$290?U~l8sE2cd$XoZnS9&E%phC}9kbdFSyPWtzX|3LI}|B+8Z+Pl$c}D* z8n!M7O`s2J3&+Bw$f)6a zPMkO)GISXokwzTGkW0W$6?=jd=(-c5UG%*Ld`cW8|=|7@(*M0zQ) zWg!xCon`wXvVaFZ|4K@VBF6Z{A`aj| zzO|S}aofc1mx}IY@|-BKSw>VLZvqDb?tw_-0@C!U4IbCg2GM$KM4JHCUJ>VLf&zm zXpj8DP!JdeKlzPGxHsorSdI^w)1TNEU07mkpQog#_&L^Up}*09ZoL}n`#zt4FZfIl zKbL2ld67PGVZ{A|OWqgl8`JQTF3dx=rFpm3&EQt7o~+}M$P^E_N`$= z&UUWLRT)&_(IUNtm-5?rAxITaR;>wg(9};+Rsl;{vNfka9gLBzv>{Z@skQ;H&{06k zK+n4cQUpkWOX2^_+{oKukNJ%dn%LlOsyF_R|8b0KL>m&!RXKxjjRgpD7oO=$-*1 zEWg6U6;MeSb#W#LgMVErjfs(kDMSOf%0txGxI#xO=Z`q~mzZHtJJGtU&o0R^?@gwK z(-j9-dU#LlTIn_Ow^YbRVNPOw$ZoI=5mwJAwhb~|FnZtr0+PRQNg0ezlP!w)H}x4l z{7Zb?w1$WioTw2f`(zyx6}kTKsA#%dW`QWOsb+4@^39?ymU}tV=t8T4 zJm|~spsK2!`0dj;?Mr{U|NQRayt?lLKL?#gYj7Aczt}s7ksaJ)w>Y3e- zbH|qCc8IEoK3g#s(5c4n9->-W%IE~@YuxK+ zw^6U&G64@ffZ=!N|59m~VWtwd+%wOn-NWu5$Bb4<8pFJiN@RXn0E7Q?6%AQ!`6w)A z>#=FR)cJc*4DG`+^-$9I_`fG@B{qi>jwR|N(4@3Py0gw+I6?ssC%cwz)S?2#u4R(TYRMp6S~?}E;5X%nFBQWW z0z}%xRW5)S-FxoU8a?k^QpHJpaRzmn8SpsIx2g&Q%{NFY%<6vr`1x_Ydv7*7iIo(f zVL7B@_o^`}!M^|g-vv&$_wGr5_cRQwK_ljEFNQ6jd=C#BR6+Q-O74U3+>0$3hJ!fo zZG3o>ZNp-cO-H$PQcr0ZWfOUN=ZU`^5LMg~&awlqbwYmr+Qn&sAQA%F&<7ERWw*Mp zyqNUjLxTj_#O+6sv-zAqK}tF(G?69;Zvl9_R#>)$IRB~N z0imBPYsaxoj3X(;wl%t`!tG|53WoF8a@&t~8@@uoLjHPoEFvRg z!Rjafg3&0jD!mWGf@5tiSmP8S!AD7{@yA=4^eV46$2!qf0f|iZRF{b*;VmE|Wj!8* zukZ|*R33rQ=%l*>VOHNy7nTt(BEb8;U(Q zpG?>hFcw+zBa7wb0YgE_WE|`3H@19@L;|E%pg!?7V~%V%gAn4Gz~&-OARcy2v#s>n@f1M}@k7wZRhcq^e7QVgv6vk|#^Ca9TbaIa z1oh9T`&n17q^daN-da{)z0fAApc$M&RPiaR?`+)E`WTC^E=|zSr}aPEG0a#L9QhJm z+lCZfB|EGqn_CBEzITG(mZ5*_ZNp-E)q=k{-8SQ&iv=9&KAd1r(p_=9W&O#=%?_tl zyTyRIBgGxgPn@r`T$w_L&_B81eYP1v*4?V-*Ihh$jW*!@F&|~1e@>YQTef~{@P-~U zsw}?7kv3O`<_SMsON@#Vi2*?wEnP?g2+prppUN*2)Aw8!NLjYYW1TL=Z1lTJL0TX8 zGlm4RPeS7GBkxPTH{p7-^?JL)@K@l#ne!C;X;0gCUKXSxlA{bewE%DRP%6=n zab|q5mFF^3mr!BI?ZbedV7~9X*sZg>h}vDiX$Ud=0w>%s9YUvq)RZNS>EFhywnJP6 zD29V2s`U9v55_t_jL7-OG(hXnOq{;=D1WxZBGWSB(k5+lV}x1LyjS8@>(}fKntR)5 z6M!5PXEX2`;yg-CF7v5?a%Zn!A5C{iJizVbeE*i>gqV>b`I$?K*B5R`y1`b)bLYxF zP~cJ|e&;S@crP`vU2LA^tvb@PL5YE3C$^KZ_j-z_I`0`kTwPH?>}eS|X>)D1MJW8t z%BzZapRn8ZWDn- z`Y0+~tZB`k)T1F|2m=fOt=ug5F)A+prl6{ZK9Anq;ZNOj{ab=8ykU;Sf>22>aVgU@ z$;s2a8{R^+AKSYaHeds{L^xeTnhijuz*eKCd)`6OZOrHhxz93SaYzHA3-_Cs2FJW$ z#QgB^@bt^CsN%S&yjUSPs%nt2+$!BDj1pk%zVotB37-QDo#;e;Qr0|wKj;5OnxhIH zEtAsm-2z$=_Pr-uOKClM=P%mMcn(ZK}mv3|9*IOf@;dZ^1Exc$89%n9CV{I zxn=I$G`kTNPmi7N&$mO<;$u)R>tO%q|9p?w``EBxht@k&)!3L?cV%6}!{)}9|Eg_7Xi^jhgWtxRF18%SgIhjX%_bqKWv0f^z`q)o>A9_9p6O@ zH+=oe8%M80i#XvA*mdj%br7bBh2_7tPTJaZJn37~lUfg0*)(*aYx3`<1jr8EH`h>e zGI`1>KgF*x>iVSQ!p*UC?BhOu15$)O?lo>)&4Gn}p`oDxVPPF~4F#74irt+!nHx-u zv9KjTx<3B?J5jA|T4x%n6rOb;&nBs`{P3w$&I_vFEsxA0Ciq>rfZgZcDQiIX z>JDV{9{;Ocv5EwRN{Z`}XQK&I%&mhY(27fNs#uNOX#0azI)Dk?>Hi zaVYsf#D0(1cDSH6AeJjCG!dryeWk<;9tTUa0#q%3U7@;1d)6N+IY;FZl2GRix(CoW z*{~DkB8X)XO;}$|%_@rscO+`V*oh7Kb>>_q-8}@JjJn7k(ttcu4vg?1{6j69t#79` z`n!RI5UL)2xwt9FPzJ|DRydP=y)UfyZUYCTCKgc)piEAS;R`T4(womK6);KHgV0-! zV(@I`u%DhJCDD{|igGum%?hX;dnhRp$e6-S{&NfSK|<$H$%&WY@49#w>j^*+Wd|MO z$e*b%&K!?#V50GB#{<7bFeQOH@mvH&*^+G?m1omsi0Na%QV~qD_>yW_Ha;2T2+M?Z z>S^#xS#!D3xxStIcX5&L39$gt%`;_(O`UO#V~p%bCc>T^W7mtavuMc6e14uRIN#gv z41Mp9sGO0SniY88+T+&2%KK-_w){mLsMiNrj4Hh#W=FT6VQj}ZB5S@F8k$tJK~_q{ zv+El3S+d)kdw;B#?={()ugPxKhfvDf6ARF@iAlR`&OkGR`bu1l8Fms&C$tT+t&zY1 zLyMG@ailIJ7(pzU`oviFU}8Z}MTLLMC+K_1e!~f857DKH%@>eOU~sTMO&OfqC&JLV z-65u-UUWP1p`>^sEIkC!6({B+>bT+FL0WNg=!$LCw)207;nV*taBoZerl5yWO2)uH znfE5zQ1R};mx7%)!`9?X>S;So^V)>7?esmL|8?Cr$5TCU?zfwP*xwJMY}3n&K+S-GhD>?Ft84wu~$>UY#AeEj>g`_IB27;_?xpN+8> zgQFV*CYT#fGwf7ZGO6dex-Hi{%r@Mx>v7uEF6Qib@6F6t%8Vn`r}qSh^KNmbL-w5~ z$<97C{x$!v^Oi$41aN`mK=RsNYuW|XMVk!^!2UV?5{2$CG#kH5prjH(V(S;5l zrcwY(nJN>L8eZ>@nehs~ua||O#QyL3^|i~+xPCKc$;4!o9w1U;xGbs}Y@VO79$2is zq;a;gvYPV;oxU_7x`tx_-7r;o73y9KvF1%93;9YZN7WXFL`O(E$~dT*0%l2NayQCE z10Bmfo|6ZJ0)|`MWAD%P$2(G+QgNYZZ$yiPnQ?D24+|H^HsG?!5S#G5l_Q9J7!}BR zUg23qvTI{g{M5Z}gh;B~>+1-FEJE0qXH);9`O;r!tiEM0`>)+I05-`KvP^(oHK=Ih zF2Gtue~NjJZ@vQ9RZ>|M^a*92*v?RwB9@r~in%mqW5eYPZHea^Ok_irqBWertRpcD z;04X?rc)i3vEdz-CVlN}MqyZyP!^STgJ>=hABR?8E&3ixK}gV@kiN1?jdyEpZ4I$_ z4)Y+ki2}q^yuxQCBN4+?eg!0n{6?xeyi2z}Euq6EyiI04=F}(#v}8pVi3Dc(2)$QI zM#cq$igzr&qQC?27V#NR@OL%3sbyPkE`S}})%RLA&?(y9o0burTp_mU-sf)L4ND9O zIdf(!4X^!lJ^(7aS=tm9=E>(J@BYTLu>zmTj|FYk`&Cyn^15(NgK(xyM2i-g!yTvj zd+@-A(PJuUYVz+`_l%3kp*bg*?iuumvvm0A(d~Cv8V0Oa>f9OH=RjI1d!bo#N>raV0UXWvL{_wYKZqb*PjylV;v=zxCtMLOW$VWC@&JE-F@nY(L}ety z$B%gYNWGZq^6kGb=9w-}M5rVx@|2`c`d@qv?NKtnpuBD|b zuc__#cvYSJ*qat)QBpSjX$KhbS;aOAb>E)$| zZ8o(MJH$tzSf>+VFKPs>QBP-~P$b69r>@w@N*94MWfj|*zVb(R&A{S*~| zb-U8S0zAJT8JAa5ah3V*%2rN%RBm)1bijZWFcCf)mr(|Gh1jVso3R`9_r-*Y20SM5 zszX?|$otP|#wvN=F1dvR6t;cNzt3;wDI+};E1a2F^}wo$ z6W_Q`QQOs~?7CRB$^sj^W)Mu=fpUR;O-)1MEifDg8>Z}+5qr7R&z@}sGmMBhPCtS; zxfDNPI#mmE?O&Dj&u@EQU2JeIa}#172^4(%b|#JmJ7sECssLD#g3Ynwk4}(P0U;9` zNO=@(JSNcQFm1ptuTBk!f{4xOXJzFiP3g1eX53paFR8Lmo;*pjhMXiCE5>LfgyYg@ zts_|1lqCevMu`m}_gSQW^t&*@78F3V;dJQCK@B6CAVUxfj7LT1*&jqSB-4xIF%`-i z005K?vQG?=uu#@oAKk=de#3)4Oe|4rA5q`SxP1zdn#e>eD+`}NUJi?eD|$el2;BwZ zn)tbGrs;dqW*UY|Tl*q%eGk!&_3O7ACMpcY4M6&C9wccU(143s?x-!A9Izs&Jtvt` zv$X7m+<`in<3RU9f>p&{o<@feERWTA$9OO!?=Pn9~7uzMYjjXUkE(Z8*v-!KPi&zQjc$PfTIT9 zCOr_@u0VqcBFB}w4T1}gv0%Fw!{G`oJ;X}}E8>InIV5ulZRqBD0j=vAen+8Ai{461 zCuJ!w5-Br~Zyse}!wN2`?5C9(TW}_xw@msb56@?9BAtFO)kC}CPw6BCoRE!D!-g5E z>?dg9!zEQMYFC!&(jmz1M=4N5pC$eyoC#=bSv5p~EgM%SXUd9o$9I7N!f=u`#OeTB zwNYbEouzL?NJa%XF1?n`-QU-DR#8c&>YGLAcF47B&Y8F$c7QEm^jOsI069m@*>5}t zrB43Z4AI7m&jY_`mAN_6G~f6D9D&!2mihpN=-6pH{>P z>DKa|42WD#-^K#hKI-aIgD1LvZM@d&kuGsMY>=4VFq$)qnU?kOKYnd+zypHj5}1e^ zJcvlHHP8&JZ^b4Bk+VPvj#InfSU^`qcD_k@dvb!S7PCc31-2q|rxMi1el#F3IH@j| zUR+3QAYyb3KPyAsi_kI7&!5N#&3CUK58*EOY?DR}Gc{FZ|9d;jrwHB%anR*T zyc?1D@}b}fefrM`s6(V8$wy#eICELYD|=m8o&DJ>;pa|HET(<8WQ_^%5APR#`U^QO z&^UyX^h%&b6n9eHiES?%Fgla^h<5k6{Mhn|W0b^?M;fuMx8ggo>C`2*^>kxLD6FvM ztPp7K=_--x`ohB|)K!M^;bk`@{Ni2K&mREpr0$;XDLbD82i5AC9(gZyq<-9=5n6ApSC5^OnMyWH048xTJN#?$%CHOn2 z3U@B^U*4JmUbW{Ut;rX zJ)no0E>&7+V%HSFw+DwFvE;uXuXK~r@5>qtk}oKt7;S)=k2@$Oli;b~F@>fz;DiZ3 zi-yR45#tjuBV#{(-4JIQ+H8Q?%9YQzu1xy+)nmvdR2^V~Yevel8D3P^t=tb0Alk%~ z_U)w0-k>i56KnS})FlgFh9admaJ_!*nr)W3*Dyw6g}4wQdw$(FO^xU`9b_~EVaPqS zqfW&qEyS!tW>@*_Bu_E1p+=_+VtlUrLBF$r^*@lcoE+z%@$Afltc;9%SP#em8V3uu zdqdu)Oc0EK)dy>8-Q>4O+b3_DR)7()Vp3NLvR-ONPFE5(fBLLsqO zigpKomqk7d$xGjg6k_YQSO1TzHv!9WUElvR&oa--kU619GKHmNC?rElC`CwyLQ&>f zndfGtq81t?WGsn75=BK)Nh(d!^!r@a-fMsV|8=ar4=eTdzR&aA_kCUGbq?$4&7hq6 z-_|-!LUP1?0*lER1${xtxR@J#hg5TrRm{c?5(6ZG~HVcm7M`PA)!A%1M!Wxykhu6${s)KX&4X<4o5+X-{?dA7>+R4W=CZ%*h{>-8#StXXV(}U$Q~>^ZKk_v(=S7tg~wDVm7%B_-E1L=!qgW)LeQ2uUOCA9 zRt5I9m^P~&C7mwSH}K83N-7VVu+&D%TNFYX*{SF^O$j0x?9Od-Ixoo|;S?bvI(bFv z@g$Y+e>+z@veq!}n7gwd1scP3;oH%c@#M2lGGBY6GdE`b`Sa)Nyjc;;`D>&57*Rk) zRdIshs6D>WjRf|=Uknx9&`yx09??8(&`!!{qR*I6oJDmiPh)p*)%g?2?7-R%1DCw? zhQJ0O=<{m1kZ*@0R@e;OUS5;*ksVVW7f5%Jqj^&+8YkrPP9ATu%a3D746Hv&WC ztWH|7lFEpk=nyA-gTwj+UXy;!PA`umJz_t6hCnVDYJl-cp+L1!s$qSu#T9;YlP0tB zp4$xX0=5MHMa_=Z=lA41<~LSM{oPYgE^Qj);WhoK1)p+6;MYy&DYOX;OD(YXmXsOb z+d}pcDIy@S%xX7zY$F&oy@2Pir3HO2AB7kJ3aAEd$BAjRR7`wZ(v3z8E_fPP0C1FS z++VWM6#`ZTZnZC|Mhze`{XbL+p8cGZ(7@lVeDB>;3X7aF?7v)q1*Zn^T;Z{!Q@Npn zS%~F=xxsq0+W?H{@8?tkBh%8*DYpnQUn#fDZ1jRtqm#U=6FqAlL-UikCTbultk0cm z>gC!xW#@Hy3Li$m?&49MC#+Jzjii-TyZ39UEIQcRQUG(~`d}xr_1!z{4cic!4J5-t zTZ1u!&a8G+tI}ky(zHtOn8Ey%Q_qiT6%p%ciU>go3S4TPxC%0J6JH|=Y%DJaUuhm! zMEhrlS$V@3-ELDMyG3^T6bo?$nvP)ERM~%QqGV?f)&4ORQM0n3z_rGF`t1A+ zUCBsHsjI7H_-}4z|Y};6B_}M>o%@0B^HAS+7kO!06JISG%;#7 zxkZL@eoo3Vy+oVPr#H4lH=Ek+MRu{j{RFz$rXh{4E?XdOWte|W9UO~>2w?{x z7P|0GX$)9_#|bROUmEy9FkhMj#B~Ysw28p>`;EALhYo$=;G_&Z3Ayw-oaoZpdo7vS zVwveb;-Z@a0~0o-2jY3g0unIw@_E}{0|v;(cB)#)hs%dcLJ#sNL0<4$fW&NMW_Hc$ zI4r9xNRTiY3%iqnTd;0@0yF}>yh42pZlwMcpaAW%v< zL7<5Ol`JC=v#~3jsKhcPg^*G}qnxO=DKp#c z7KdFpJGS>Ktkj~a)^SwP{?ZMhJ|+V&YezFRL^mSV4H)qfQ@3L(tsB>;9-wGlwk)g3 zygTFPvfA0`B*9cFYwCf9*BqTf0LQQ!5Ch@Dj0b*6HP>mVI-1(mfn6YG1Dx7GI0t;> zjN&m!fU&i`EN>am&8EAH1W}~82Pge!n10V7G?m^3Tn>)tuYSq)=Na@!LnbfCN0a>C z@YEOdovaKm_!^vm!!{KzhQ<=879_lEFlI5D#!(cG@@{@~2lW{Jx4m|E;k8JU%5ha! z+F>3#DZjXQhE7+dP{lZ@n{a(>AheSvO?nvyx}8-X zRXet}Dto+a;Gi^+gVpX7PNb%aAeC1T1-TpCZkvy9El7=|1bi;3;7k?qaM1c_bm_q1 z!&z{K7SqMhl20_-EY600Ctr0!L?X0)MmYb4!QpxVflCoCX|Bw57@8c9z4+E`%u()| zTxwB1BWSqxR_`ua6gYU|yerB>xOCv(a6;W~Pu+|q<|M9~XiLB|C5oQ4jZOhKp3efe z^HDzqMgEXeG(2^4j`!X-Wpqz+Z8x)7h!LkWetnPUUhEtqHnbG%8DKAxR>~rL1-m`- zl&iSZz>A@u^1Sh}Em~gLR|J6(zah>=13wE0lr~KcTHNeDY2w8Bp*CVeci%Q#T1C*{ zojY9F;7r*s?-WIM4WZrPnXbB61R~zzblelXHvaCy?y^7X&jt6Y=3EhdI}2zxlNioyzQDj??6=Rhet8JWzmkcbabQqT zW5+^L)2E;r5XR8^i+>7~e;(g4U9zTU*EWsXY#V+a=c$0i1f--;8ia)v+R=Nf<0kN1 zrfgI{NS`=cCc)a_VMEfheED+DsP>>GbV*DwvD-Sr0SPY3h>r7sMXcAOl^93EVPkf5 z5ath7W-rDuuIb9b>%PN;`K1VEm~F8a5dy@J!as3KUS8gN5U*n@fQT0jS{L924ffv~ z7i3-)nG*1|5VQWcGw@5%(*iy>@2tLyNGn=d0L(t)$D6lU>^MeAl9a%H7;o_tNVQ0S z_={?k$PBvDBol9HZJQUbTLMten-@c0o;1Lg_avh*;Afr&fKng>5k62u;3B1SOhqJp zu(o%gkuE65Mym_7L-Ol=;C2l zzD`M*%CRL=7Fpi9YvJ+H4~Q24{RGD@#H8Nnu7OkbfdJ1k%gD|t4(G2#a3tBZv6fi6 z;oUc#tyjk1TsNEhg&ejLE#Mwxz2H<*p3bRdKur|TE;F|UPXbG$(t}$7@#Dy{QT=m% z5xJ%g;EwUe?E<=z389--+Sq8p@nNd~9-T>^Du{KG@jilyCFckofz4=6Go8w3G0Z&Y z?mW~zm0J$`{kq9Ds@UT|&|D&!iun6C@qP6aLfo4a@0cI8+mmo9J!?zlH(;a?B%7xj7vR0M4_^fux@3Plg-FCU6D=8L7 zv7$UDq58x6^#PfcM$z`_H&oX{7ZlTc<(k4qaARZWc`E44MmMml1Kun|Loqy}+o@Tw z)ibxI>RfWNe{|V2&padXj%AJck{=;U`oThgf4u#mVP{>BQL2p1YVaSXknoH4{`%Vg z!t2-_9sQcFx?qrzIeka(@z$!f{?)Z}tW(T^l|`$W`#NjhcvrvFufbclus_IPR@hcj zOd+WR%ki{3D%?QU#YFgNH&m53UiVJ4zg$_oa*_G??DF5MF60@(l0`tp{vBeY-G8}EyApe;>oxe)4JukvmrHtv<>QkF9GJ+X0^kka!mTyzQUZ;se%XZ7Y^?b7C0$%TN~2a*G48ueK+RA<$lA15kZ1|Fz8_=WnlmQ5D!!Zzlh zLGY+7t@yqR_UPz5Sp3Vr5-ge%wc1clf}nYGI;pH;iBv^d?aVsmD!X3Nu0pSCfz3*8>6)Ix9Ln~^)teN(up zv?}wyQm*+B8?TM`ws#KR>uJ|~V|CE}lr|BGc}re(@z@flTW&fw@ScN4!5Xy>EnhD0 zskR{Q%lPx1)wSy@1kd~GzF@U#tp=;%Y~l?+5UDLT3B8&x7!PK!x`%fb4MElMSTpg?bzKn)6i|f z+Q^ifI_JBN6G2^|x=ExGduF!w9wC7uHyoWc3X(Y2m%ZZ z%g_I|d$36(Uh`~lZSL2D8$ZsU6k0MS;pzDVtpS6MohhBHmHV;9yOoyXw)h@?Qn2aP z=G&*<-OA|k>A(})dz(@peM~UvJiOPguYJ!NrmZXbl&5xi%*8%~C%O4-i@E0Y)N7=d zRlx7+rd?W0*^)yK-?Mmg`?}6Ab0_#EZ}ag= zTG6q$MS@A6t4x_zLX_-^d)Bc0!P1n5Xe5vEzdt(Y(9oV&8N>x=;V5x~)%Vr_jf)b(IH~HeEP!(~9-|cj?(o$qn$k zr2jSYlC8;i^{`HZukY8M_`J*Q4T;xR9`sDBcUZ;#)hC>uzHkLHj9U?1oh0WsP~A{*Zyej79fv6YAl!`}jh1k(~S& zTxu#N1UubbB>b33lj?Oe+wf{d_&mr9$ZdorAK(8wz|3QIVq7|K!{#(|2hAj6vu zOp2#U7tPfe%QH$^59PjgX`OfJJ48?;Tz5Am_T{GVA4Mq-i~vMkRG{Q4+uwx|haEa! zYuVJL@bfBTyV1)WJ*+S41!wF%{%V-E?JuJ%zt>j)XM{Dp_2qWk@y`dReX>prclJ2f zF*+e)SwP?^yV32U&D(yMx8bVmwBXf>w}a+?f4F@6uZtO8w&APBe!MYh)ZEp^3Q^OR zd~g3?bzhadGrwZWG!Jh4eYVtYkZH|uwsdJo9e z9#`#RThg~hy}g~9gs&(Xwd~<)lQ8G(CvBQ67~A4`?cU>IeLHEV-T&0)?6TSo!#*!< z+xO<48R->Me)z0WbiHkP$|WPyF!8~n!PkFvA9A;0UhKDP*6Ft6Q=JPF*KgbYWq7>? z>AyEsujr>3)z0A7jDvp0eN|1TnH_!}-QKxjbIn;Hk7B<2nVPO$-#EHef72}Au!&Yx z_B~fE%JNH7)A-q@ZHK@;<>u?!p1=BJ)tej3Jq{M{>Dr`O@^uG)w-X!cogEwMv&Ua9 zZnw-2hd*3+#0)2|RGqvw&;>@$jE@*v1NUW0qw(zb_oqXXE_`*LqxV%M#Coez_iZOs z_UrU`xnfMemFB0G0U{jm@#_C_WA5zq@pD zE-F$U)2MD!&!|kRjOAljd~`{BHe)@D+mN~aRwH$Py?f|pWJLOZmMuz{M*-mTCmF-QE&o*&;d1L)~Pxrifhdh_}4GdQD zo#j)m)4S`uUvy1U`wJ+}^?SC@RgW_4qIi|<2zTBxs_ zGW~VW23}4<9t9npnz+4r?Hg6ccY;r{Lhpr5@90!k{LZoOxVd9)#5ctbmYp9yymR%} z!x?V%wA(dMyW4YD>&zKBrCsjTym@r0ble`-;Y)@tAG&wBzCqHG$Y;9-PyK7M9G#yw zQ4)3QK;zF8S%FF$?7fiTnH{$32)pbeKQhngt>1>km%yZ{(32Ee?yU#3XkZ^482D)E z^(zbf&@r$y;jd#&O#9&QEj_RF^_w@lVlwO8UwR!6bl3CU5l>-11Q<#i#aslFUT!{g zJmHy>UQxd;-1$2BiMOHP0)_wn?FiF}K8>&Xr?SuZCtd@W!03X04P^x3IS@sGK0sxo zqjl{M+ym^!qHlN?gaokK0}`K_sm+@iyTg|w1rPKt7n>2O!BoI4W)jpW+wiW-htv^{ zD4j}JScjbtw!vr4cR;GL-_E+^33jJKmjgY!~ev4o@-I=1Ff+_$Owk16-@IGetCiJ!)@gD-uO9@O+w-rA^U<@80t6IUGd9D3gM z)?eN040#&!xNG+p>dPwYJ?@t~WqQTD9>aT0ZFXQ!y~?UD-A?w&a~RZaP5JSZ8HUUJ z|FWtrOISXLeg68K;h~`2J4ADUT~(@X=(RmfcPkmCBwU-@?37&#Tepc8 zW=?|>Z`C(*8awNLmpXM^D&JI2u$b{ZJ=eNiQ`y_wq?bj=4&NtxAsl!im&37u@+ldA z%#JxRckSNozg=LBV@O1C<$!p@tPIHpeCe2LBfk|_h#Mb>DdM1RumN9KSQ$bJPdDznWh++RawT!8X9My%D)#6P6R2S+3&mZ_& z4L2xWsAH(I=hHlY+Cd{*Jx zLQ953Em`3ZLn%XJGC^e|8y=3F7|@`xWV{K*6@*-{Yt@=lazH$EIhCU|Sl6g>$G8Kp z@1+^sSA1)+^xT2E4Fd0|nq@30T;A4KZDi{%4xi8VbPB83Z}6t-`_);?6)hd|E?E>g zDLIx53u6Lz|I=%QY2(&uY?$77!PXZ2Z|p4%9AoNeR{3bY{_J;^zMkzpooR=yqa!=YJ`S;!mXnn5YwY9 z-c+75+THA$cNZ1UhE8VN9$SvJJ^gU|);dcqHsox`_ncQVB<$O&X08r4pi?lS4F3 zcPF(stux``w47cOm-p1^QNPX9DSgMDwM?n5KKi1%)r3|32Nq;!9^HF3qTHi$oVA+b zm$BJ*+>DlG&K{j)Y}?R0cY@t6kDohRmaVq8kEqR!HJ)52YUu8rPNvP3($+qIdv&RL z|6dI+bPoL)mACNRoQb{dzkGF?Wt_Y8!D!97&L4EQ+^Dn0T;H`R;U#{@zg&5_AwFc~ ziWS~rVW;370+_}=eah5Bq{Yydbmq=|+gYP`)NgIf-t&SYTN)d`k8&9=);I9KMyCNs zg6Qnuw~zQ{MaB?t*aS9$@P~fiy>+T6P8&CtDGKBXp_c*Dhh&xc#o)IE%c~I_1>Dk( zVBZEpib@bik~!1PVFTDjSy`DWG9VvDQHS8N%`xsnz!}UKBV%KU1z`4e5e_ydlZ=xQ z;{M0aQp|y-wQ~Vrwm#8P0ibj-fRzLpflhFk^&c?6n-`>XLNS09caCSe?;3&*B;CGR`*nqheoR-@s zRBr**Kv!g3D0%^wE&lbTZ)!E6j7S9);3()rp1;qF}e?? zbPP2fxObZAhvG9GOXrR}-z>GU+wfLOzSdcL^M@xz`iI{BwIPVb-?Q%mLr2%6F9P%H zlbmJta#*wV37USz0DMlK4r%XjyBq=vn%?r_VHAS*cw49 zt=Kr)cB5XKIl+5hFKu)_IpmX_!>I{7@>~jHzvo_i+%IM5x%Qev*7O^YG-c_5?IYeL zI0oMCGV);h%~wv__8)27-5_%6@?CXy&T8XJXvyPw`s+$Mis>8Xn>Uq;i;7V5e!Uv` z*rltx{s8dzKQ+?AY0FJiJ76G&(&wVTe{R>*sWWCwo~3>7up;VP21aFN4*8pmjN0P; z(yM>}eXLb4iw;YjoP_#nt)fS8V`!g`RA|&M4E*A6o7SfGA2f&u2m1KM{L4y=fuLxz zQtw-;ujr~NGC>Si#*7^sIv-G%A`RGjQE;-Ajzig2I!m)3$qTZR9zEL0vQfar2BQi= zWU+sR<$CGx0_F}3eN%q^;*e)Fiqa)Ba}u*@T8zZpkgTr?X=!Pcr>JrfH$a1VVU-wt z6=m;2we++!*Tmd6ZQ`KkQd-S1UWN-T^PUye*MQga9hjDX>@&)dH^)H*78jWf3F`8T zD)7c6=Yk8{ul7F>hDPhhN6=viJ=lo`8h0fu6R$>11HbW!j&~QO<^&W+xhG?Q%{PRW zl{i+r-N-%FYGUJ}^-GH8-1=c)_*QLY=D`sThm@LzkIk68?%dI@ecSuCE@@~N5~yPR zZH4XYPs@$ghWO`{G!5&}z3Jki0Xc?)(mQ)D?J@jYWWU#UwzhZt+IheJcavtr`#fU$ zmpkc`-|Fx0Uc36}xTQ7x-STITUeVhYDeep&-nNUkb=*0Ju%J+jqB)&5o!o!tfz_7k zgsRFhzJB|il*+9#zd0Px4EG&5@Qaz1&qf!;x|2$NHTrgDc+&YHO;ZP?W~&TbWLPtF z$i#>C8wytR&@$co!^Lbmf6@-KXuh;<>3r4hjb`5{%{k96Ia1@O!thjqf(>(%CMev*Jw^z1^)Q z?h8KlC1(hl%WR^EtjBgB6x!1AOSu8HN7y=YJ3;zqwIirIH06xnnmunu4fR{>%f&2NoW1lP6x(qc8`gAVKrsj+o;6KPAIg6eKX7` zbbU8N&j#-|+s>TXifn~5FTMs}8{(+x=SFtkMOu)+q<|;u9cv9-RuAtIc_=-ijkEb- zn1?(p6^!oa!s<6@(7H<(JjQa?*;-#qj!$@&wQfZ<#2cQ|PkDJxx~b;w5erRB0$$u3 zn|hO{m?m5-%jinNm)!T2^>Y5!pm+nw6h-cCXPa-PRI9&-ba!%r2R(FJJRRqRK$>AvQE*7sWxuNvzf_xYIo+5gCS>t4N+_oXJi>ge0#khw6(kL8yr`+RQk!OpLvL8F|K?w-a|FV|7Lxx;VdhoKLqbq#+0 zp|-1M)eTQ2m+wE~A!T}UU3`EVuckhIc6%*44ryr)0O#1M6 zqgIVn3G?bb;nc~Km#Tjd$#kiupPQQ^Jt3Oc{5$NZWYvev@GwYz{rVyFBe7MXD#HIz zSQI28(jCGXrGmMFq7l2)t|LE*fh&4;W@N31kf4@kC2u2EnUva44^e7{yuaeE(PQ+013P$FTxkc`_C(f&{ghaULi?xTra7ks$geK&iHJDM z&v9Hcg7mw0&x7)uVg`|g4>FaMt8+3AX?gb^_8xyllr$m$T0B(L{IdNWKBdi@65lBL zUfdKIfkQ{wvwoZ})jfVwtuWL_R<)cq2`EU*J-)#G@tk%IXw#7xQ*yDv^Q%a$yT5Vj zqGnPc%;~GxAaPz<$efzfDtQ;fw`{fgUQ(xT5zjA@X_2ua$8q{B?Q!La?llpe zn;+<~m%Y8`J&!8;&8;h8q=vqSWY?C8huBG6-ZuRkwK(0(%ss5_W)2UYCwhMgAL6Qj zaCBmVzTOJJhw!T(@lirMf^I85DI#)MDp-xs@BDptr+q1u6Jr<>h;|6y6h_ziCiXFxgU zpv8v9=BClkojVD1=2eVl&wj}C9yWpb`9stS-VoSjmdxEps{s9BLqVE5h>eUTnMj8m z-h<`YTHVdt*Z2es1oRO)5NjdU^7X0rPB>!0RZyrJvUE?CNk0ajiJvvhBO8@Ei{&3l+|0YMr&lri}S77xPMxOkXf|ou^tDaEZBsSsDxSu~V@IK9 z&~gmcR8&+%7zjJy)uO$-cO%Y&^7V3@>~fH%g?t?s*NjX68h5rT#Q*r774n?-=%IkM z8k5?P6mLEG?SLc(A9(8LfJCwp%-&mB(kF zdEdz=NBE6jsb)XW_CTGPQ}lXf_H*;Tsr%J!bAE+ZL1lEsq~GORQ%9MXkNL=!Eowh> z^nH70eou%kk0_|9Y3`CUBKxjcXqWKWjkmcrFM0N+SjkOx3wbzuI(t}lwJtjBJmu%N z)J0C?;w$g1^$7m*VdIMIm?@1N9UU=1Sf^|DQrR)RxVm%A%av-Dk^lYCUBB#)p7Whp zH5K1EXr->PmbYJe|L0|S?W$f=*3H>xPCjtC`^NB&|NhjiGjs!|b+6rf+4_Iq+_)&P zN9-%}RwwUXd6w3!`<{Q_ADeB{8$A;f+}o`4?%nEhuQqGF>;3zej}50-xz;?-z16Z% zVc?Jr{U=sEtMHlEcTrA{Kc7whuc+;82!}&9{QEP1zG!rOS?T!RB9y|ic{DkRFVj+K z>fr^6)fr{A0?&urn4gV>jk?(lp+ON+atS;`E${Xv-uv!dcOY0QclubdOTxlyQO@80 z{??w46;)zic^>7N@s*6RU@2g+#L8#$+Kw^T~s!q5B{rP;78HDa9LPOLN0FDy7K`#tx z2ls69YQPOKGHt^$XR8SakbQ&=iEbu5bq4kt^f#O<;)6v02A2uEgTy~KOa=kbz&Axp z8Tm0JJRAcLJ>CgRC;N{lDvO!@8+en3hRhQH(lagAuYNdn2E4}&f5hHjdLtGBo z!OVW=J4CKnwdx|=e+AZmyU9Iqp=J8VaF4nMEf+D?dwF9xQ%XY=5I}4uUzKx;rO8(r z@Xy#S{xNmoIHsUuAF@lc)Ugw$B&N4I<=7fGUKS8(h^Q+ zge5=US-5!z45W9>%6cM}T(FeHs|&Uc^9}N14+aE?fRxaN)cmj9R#_gBz0MqfJ=Snc zQGNJ-%T7Bhk99l&&sze*C?R3(a18#j_auH1CC78X)6n^qCAp7qG%$c}htk6m{mK?h z$S6$NWF%O60$V>A@5VEbM3IYg#6nZv{Oi-+Ce53F!S2J48W1+0Xy`Dby>FjvrZ<27 znNz>IllKj1B`&f&Im7-D$i*TEjE#%SL{epq0$3z3Z2K5+NjkW=tWf)bc}YMHr~uMy z?0&DK6k}z?=V|o&-(tF_ykM@2$47u@u}(F0$`9qrZq3f)yc6hHNOV9+)QB7#x8RD3 z223wnZ?_*jb*6`f8BS-F|db*D&4+TsX z-KIDMVi2GK=UrH@+zvLF7HAwS*o4e}=dFv71QoDI$yXGT^!TbzimXkqfPoTU27p*q znO7Xm6pq=dkU z2QmxlK3Ivlc>72KG;2bx-bn`uaL#fpt|KQkj4jGQJ4CRLDA~ z=JO$k2>K;+JsL8KAO4`#%~h=&s|&>RLe6DiMD+>ANf2GV`%sz-3k!v}E;krL?@@R6 zYkd{~g^3E45(vv+X4?PwzK~2sI(!zg5TRyMufUKv{71DjblsOJSg}*>iEfhF&JEV_ zsUha^T<(O5ic#HK3i6AY7Ae)B1Z?a@Wo4IVHv97nUsF<`}B;B zDMZUm{1R83A6|zgzGP@sy2Y2=T>tL#+BI3q1HsHUzi`-K4-)atBr`1h5 zL>R4%%M=ieuugxR*O%V>V(0Nm@aDED@fH%x{$@w4so9yokhm;Mk0ik?#;!CHa>tgYTaD z`qfIJW*{2l&}__=syLOm~L4GLOMke4q5G|F*O?PzE zW{t7xSzl4bR;K^wf%5A|X~hUb)x)J`Gmk{k&!4Z;YG15zek9fd!z>yq@cX1mBpYQt z85dLplC43(&i26eF7ak)%rWmYSQy|OH#ocy36x}}U~u?^5i0;gvejY-uFFzbz9Mgw zJ(n>H@9Q}@0Y5)#$kq{Orwi+wu2d9$d~%rAR2>Skme}teLM_MY5x2=5|IwSE1&s>( zD6R>3{LAbYda%qP(xW_u$9uL(Gy1rQ&j$txfuAOY;fVxMG1y1u+OFMS>`kJPW=qhC zQGE&T`J7mZO2!+zJ*At71GoMzIojFhf7dEX;WsYx26tah*cSxQ&16$-)){E7?%+dB zm!F^iVO`u{AR6xbWbQKVD1HDw5R=J(pNe@lD~iH!b(uAS9EkY}7#6+0ws0iZ<_Z}{ z_)J6n&!Fgo&zFSknBshnYC=vZwDaAl+gQxm&8R_i4N>7Fq0(E|)nQ@c!@AtR$n zien`vjJXsWl2EEWJw3y^jVD)-r-a=K-#YdMv}5s6>tp+zmN>e9IPN_C zv(3y7KUkb`YN71|OLeNBY1CWnwmhAT%0i0bVq?XI6!HmMDWYU8ig0n8+eT5s*za=b zP1*w98_%T6=YCWF-2x|GIPCMRUAXz3_=_3ytp9R89>43-qTqtrU5mG*WuB*$5}i3O z&`EPuC$a`*D+m2TP%;jD<87b0bWn%wryC|ONGM5tGd}++hW9O!5>xBMYa6(i|FSte z>%V&~?M`vu*jZ~I>W>wm_n|NWZU)MMS+|Mx%G z>r79mj2igAJ#W{o{`%|Y{O|fSUONk9eDW1wJ*?rVjMCM{Bgk4xGEztFI|n^*N@X2! z8w@V)^dsdCfKdGMYquD_!^l58`~)QyRZ5LQN=g$7E{LS^=R^siZ`}Dfol(1Z$SjC~+iF zjPZC(KdXLe+QNVUnHb2u+DC!G+CrmEy|$%%LhFC8%B_7*Z~Q)ZCNcLh6eBw=NDC}4 z+AfiUV|s}0L&|88M&Y|8DdmVh;nCOpJRN1nzR7_m1wNSBf7TrHi9f|Hzp1j)XwIDa z+bAdCZdsD{0b&R`2sH!13Cose=r^U-qp=k408{%UV+;IHs@-K%uhY z4e-%AsF^-p<5Ia$&P5O!_A9ZPrdnT-*$TxWCo7jvJV01-@Vyw9XCuy%05uGmcguR= zm(YvIHU(NnTKj3#1sVjBNPIE^otS=}TONY(2?2mbCH~HxIw8%P)R+c^^%{+c3OOU% zkH;gDO~nNq09@P@-y|hfZ%{n(F9`8?$RQQIAxkClq%&tPrJxlrBWCFJw5{e0Jn)dp zeSVblSWqO<*y$;4-o>tS6Td)-orrW8jJu8{(-veId#Rf#=k*|Y8Tc8k%^MV_ zeIzH8vJ>ftz`^{=SW$gmy=sXla^Sw}D*xpIaQXI-$#xu3y&FfsYE=>><1y0!k6i{S|4V{wCEm?CjU(64a#t}(2b^1l|M%7=wy-ih-A-Dteyb5K5j(nZ0w zb61;fElt{x_qN64S=3tqj$Rfkw$f^dF^aJR{y&r%Fv zf+F^=VvX-`-10?Gl#>XR)jGQ%A^ z{O_bt)0NSeydplTWAmdz`%h%_wFrn8UlwW@Z^f?^Ftg!dT9dK zaRUNUMuB#vr5Qjrzz|C=35BqvD{FN#bhKHmd0CObO@P-44li%{*nv!o*%_$5X!lJn9!8Cw~#r=d<2TN<)~`%(5Vxx-(` zh3ukr;zh@Kw8a>P)*!RJKxUgg3B4%OGci)7@D=|Q zsw4_P$)A8-#BS{$7?{aYH<|rvl_nUHzOAhqlcH`~cH7u!sl=Z?fBvTC6H^OB^^geN ziYOvwhw>xtQc`&wH_L-4IWdpQ00 zBywcwKJlD=={o3uPtuODW7jSOW#Q>s!O5SV?n!keGGPwUmsuuKFKuxW!+pVcpnCdx zd)LXCvY{r|&}Aw32@94PC>Vt(@#!4C95U8M+A873l4eeU%;Lsh(^{H&v)k>~tSL|q zRTSDNRnV=EKh(?}yOP$ZuI_9nR!DdNAL8V`K%+JHn2>CC{W1oPkJ53E%Sb3Iw)hYT z^9k9hSh5I%igrX|F#Lmpz8;&VCcT|F-Vt6P7OD&YXBxLhx=e2tkImH+vf#wx1j)UE z3e!72HIiGlWACtBBYpkYkI?BYg$Ra=NVgJ8It_BlXw~97Cv(CIq(V0<2E5oE9yzOF z?NMsVwkW0oYHC(E56QU*qLujJ!*l>!&e?9`oi9)>uefRR$7PERftzuO(*onEPed|a z)IWYN*FwtH#|yX`d)d9*ab;Oq5E>pXN?LIpCY?dTAO%GQ*Au*t;h@JW!9nDDK-Cqd zE-fk>PzA^$>BdEFX^O_iEF&2M043-95ns=pscIBnfG;7Rn|r9evR0N-Pv=;g{nqNV zj`YZ0US1lm1gcQP-B#6eb92i^F)gz<@vghJFkBrkV%UfRe&Q7~nw!qB;yhh7BGpq@ zx6+q3Y1}x2x17PFEWizIBpf8^g2miY94~~xi+xd5S$Gujy{B<+wD&hVN8}PE7sr7# zkrF+@<^2hUHw+`0n!>%~C3bNl^d@?F6wVhyYk|YXJ3_2BK9+m-xv2iP+GyPndix*AC}&+^XDa+jKk+Mn86bw{g|vQa;{j$1otc*Kh)lrr@l67 z*ibCpo9}Ur&7g7;QS^xu8$3L^ur@y@UxJ+|ZhRbf*BrDrsMJ-&F&3ZovP*e1_4}wI zDX8A%muaLh`_7Ur0Ox%i9K|l3At9U?vwJyJ*NM2|`j;`*WShSd@Qj(82>T`2h%Fv0 zXD3Qof{=9#*q+$bmd z6sc=Llh09Mi+h_mmVgpYrasxs0k$dk(rL*ek!8xsVfFf=KIRD2sUGXqj5kJpl;;$& zHbt=HVu`ExtjhI?Ge#Dn9#aPa7rWK`YK|a!?mduG=^iBLk+N4#4Ss}jUUnbBfcdYV zJlM4K61s(tBn0pqQZ?u0iA!`pg9|;_OV8Wh-p_m0Alyf=AO6U=TG#*-q75kPg&k4PDEj$0`g+}cfFzGuSgP?7io!#FK(>YN`#3pYx%U%^z@U0|| zQWr=~Tx!_U)h(YM3BIca37_pzG8a)u^0(p!Y8F3g-t+9&5oeRa*9O)97V!frq?~U1 zg6IfAxx@<=(tsU?W;dBz98!N#!ak#fgh?Qb zUS@OBi?H}bNzYaNf-gcQJ6IOC>MP?dZ%n@z##{;*D8o%@VwkK-%_ZQeYkJTZ+%(kH zjUH8iselXBPUs~|S;EjC#xDtx6ZzImdaE)j-RMFf%|KMkqHFIe(G7zK zi;N;QU#vc5@DXUC4dqdmzY^BDQniVrO>g`<7cb5*ObLgjLZH@TjkE&QM}Y9OA<Y-=`U2YXkzY} z=}N2;Y8AL25(X)i7B>Uf-+&TP%uhMgKT|ES>*iOsJStb>ac9d(|DbDYU%~iaOiNl- z<5_l~n3y*S4z^S`0^P4aDT%XG&k9%-&`*lr91zKm zdzH4fcZzhqEJju3+P^eY>&Tdo-`5nP=}#Sim-~o?(B?2HaE`7vG(1EoIHnu4vp|{R z#VO`NfW`RzFu#&8Gueu%&Y3%8GMMgzGuP|auM0vhm`jK9IrYfdKlNy<&pt8~WN1v= zl;R{8484OyW&uV@hBCD5$8;bIfV=qzm|5N_BNvbrx!!=#+{Jfzc4Mz2ATh;SF5q;kvbg*%0R)h(i<7}`L=UWatbgH$>NR25CVUMQ79 zp|TAZa}foBnV33Gk`XNc2qmhdz+cr^X_&6_8Y43lJ~C+H{XC~3qo47ms|5t$6r{hb zVq02DGtMKjaN1Ko&zz|}1vU75C(*Fl|KOiLvvX{RYCt&(le-dg5Ns&KSdvOsm`T(Z z0R13=(#gqKnvk^z@Vii%U^z{dEbie@P1t(rK~+HLprg|XQEy~X$iK2$Q8S-snwujS z291&D+7C;wiwz%DIQm+FRXr4%izNWmvO?o7Xp6o5Vnr-;5=7c%zh43;f@g8xQ`(OcZHFJ565o5gQXkT-6TeVf%cj)<({=w z{iu*?qSx9-el+PG0VcP|F}DvEI$IZg{uio$9DER5a$-QhADdjM^^sbO*BtN>=2zk_ zq!TmyvhukPsjN#h^rMt}*6ThknikM8Ev53h>{#>X?~BX&tzQ7A;GTniIs-335-E1K zV0*=;xRWE0PMAfVb7R00Lw#domgO`0%X>v1qypec~6ko1Oa^8#4}Lss~0D-kUd-ax{~-!5w-3ITqDy(E?cNdq z|7KW0US8$l&_IeQ2)4&#-z*DHTK~k^@j^g=&4|c*CXKFYY~C2wDXJN4M+1ZS&gX}2 z=sOLSG2d)#Jj&sFCr%$WTy~i=u1{Aw@;OLhB- z=A%cs8{~He&&!GC39(^5t{Al4KKIb0_WOaictU09r z?*)rmrM|wTmnEit(9Sr<71(W=vu(~gIq!`6vZkQ)a&yGai-TJFDzS32vg*s?wE&ow z5EF^Hu|qOxNAWGvPcDAv@y=ULFQDI@ZDR5aH{+>TQ6eZ4Lv=8ojH^Zb$RVku09PbX zl#9H6a9m3rKD^!{-;fq+y%hTGuRI)h)J{J*pef24`j%Zqdb0*)5lzzWbhElXkpa& zMBdA_YfqRLfrm3i5GV+S#+ZsP$9af7hbi&OSz>+1k10s30b63-?)tf6qe)PKCrE?r zsrCL|ovIlW@wE%H5fKPsRgIob3Kog}A;aJ??UZ1?%xkzq5=_8>kF0l$g~Mg)98P%| zkqWDb(~QUX5wpxc!vlE8xLKq;&ty0tkr(tn?6^w++f3>*3pxQ3N>>W3m_a;sL+v*1 zGz_Mv*R^B`sf(8^r9yriLuh)u3ZGjp50iK)U1XFmPV!hCf2Cd)r&BQD-Q*fTT$WHF z#--5IjuTWTeG8g7wqe}*8@DlpfNexDWsxwA`BXL_wZps>MZ<@)LAG z))1H#+E!N(;J@L;3l$1B01t*QrdGhC%I4x-)xT~C~-=>Fm_^z~z9b34d6uS*pu*{kOd9XGiK5B~r| z26DZHT?LLrBk=81%x&g1!o?)bMUkNq?>PbQQDT(F(JRP?%j7`RHju4u-Ri{AW^8mF>hAkJCHQL&dWFs%gYA z8FgYf7@5E3YOMdv{$I8ku~%!JfAPbK?laP5+Ob_wV~BNPfylm5QB2*>p74miM~?_0 zc*w%Y{0jUl1v_b$!r4PTD@@3iEo(PMBJ%R4wRRcV@KG0y<{v+N01-G5Wi;?4nGUn( z%z4b_2d2IIPSk9Fm7zobj@24)a%!Z>NrGauMvWS=P`NmI`unbj$%p`o7N!>21$scc zf~a7Q$w|d!&ngOezY6JBA(Eq;=;Z;Cc%}sI!JAYv5uRo#2**GWPY!0f6o(j+nWfbF z`n9jQ24#v>W%4GEk#7$e4?H>JS@REC4M)CJNg}7ge#IC!ijm05`a$M9qiLn}qZrlV7eVLpWwO1b zQbnG8(7tH{TU%QmMVWzU(8;ksKEBSI!3X5;3udqEYWwi`pKx|lP72fq-WxXfsZv4~CS zo(Lz)#l-~@*cTn!2@|&8(KbEK?6j`p#fp&u217=!?$!5R}nHQpdo)9?j}ynlJN|Ks=X z&w@bNm3}ie30tMl+lFZZDdAqLF<2z3##BWCF-7?X0b)rsnc)RMl)mNw7cRqKsJ?NW;veo&6NhzIvzA zrabO1oB>7?41Mz3G^)vQYJSAiZ_SFHK{n z3+3Xmr8?M+s`Zl}so`!+ekHyKGxWDAI*pQ*+wqvkunomfMvMYfWQ|BsL1h9hE*ie! ztxZL}=sG{~-e#n{!!uo!G%zqOgPm|`0omc~^hH=He)Jr!!WoC^0ntd_d*-JvUv_cJ z)6>|yEt40OHD3gS3+@l_hREY##Z zR~~bCF~OCLc|n2jmaZqWC0d=D$g)p!CBBpi`}?u;YPw;tLl9bzT34b8p5fRkPU8HM zOYlc2pJIM2tAS5@mUMfZhZaMO<>Q<+4xAgS;RX74&a7j`+{3VLXeuaMK{A9P%S<_o=ZYGX&O1;mjcJW z*qHFfg;vBu21B%le2k`rG@NESR1d${#Ux#%qWUeUYaLPJ~9Q& z7&4ToN$Rn)qq7jT1fwTBErdh_9(V50@u`;{QUt*+(6s#^sSKO=@I|omsR|fHGQep# z?sraarA--iaGi8@byYy>(2$oy?IVsTOrd!Egl%r10MlnTJ{n3i`!6Og{8 zxP^>urOjetIT)ordic<8-8!4sjUZDntNpUFL#Iyr9xOg`a|HWcQAx?;SFa>IQ)WbT zUHhLbT|)0ZrtF;sm74^AQQpuYj2~yjX#;9gt|&T# zFJ<__h=UCv#uxXEX-f#1VS5!sw5Vta@PzRF=$%32X29c<$RoZe&yrBq&|L7H+w$yf zx|$E=J<(SuB@!0~^2u%@nda~) zl$CA;UAaQ+@Q1mDLur>evKbcp2M42vsZa#XTE=u0ym;39`NA?hGjvH^CPxCNV(Q<4 zBbW~Eu&1XoeArJ6ti4(7K+#?K3z-Y!!9V!4B62ahXNZrSy*11uWbV+gWw-vpTiKrq zH(oySc#u!jh@0i;j`htcrm(`i!$S~mi{r7@gJ%_l(59!1Kdfw1S%FX9Xtx+?mc!F04<0Mj6x1u(8n$TQj^%)|36t&zBFsLC^$C<0*rD zaM*SEue+X|-Z!G!Q(M{hRpTCw3|&6BT$;T()##x!RU8wUzKI!K+?rMS?9EF3e@wjz zSkHO;_FvYq?<7l>EMqBq*-9abY=bNjqKqXiwn$|ggBCJmiI}J{Q4%VZ%2JYqBuOfj zN>NJM>;JlH?%(r2j_3IuGjmhl@8|P=U(0!(*LmTzcVTK!^aDkW@cD~}CCz_35GM*m zxMod5oHsN*pBfR+?6GsXlSJH_(<}!Fsc{VqEZtgLZ$3_0Rt|7~Y1iv0x%El3twkiVHEpsRpa zC8MRTN9<<{+X=NHTo9nor|j&c2LnWUj60{8*GJ2 zqjMoN0k}1c_=SYL@;2-xRdPF99OPl~Lj>btN=wLlC6*qvIH-8qU?%q7@Bvci(2;_|N^>o_gLyje7ZQHPe^th`_<2p;C-KOE?G!B-?O$jy22Ri4pT2ljY`9HxT?` zYF__6vyFmajL3B$rBB3YBNKz@#Evl@niO?_Hx-fW!lP#6m$6w(me!!;k?nghX$yy) z#-ZRgM}_R0|K@rZ(7VTJX&0#mh^aC~i@@v#wKY`hr0sc;cvW2po4d_;Wy5mf!gnWy zRpplpcO`JTZ77Zw+<_SBvU#N<%UT}3=dSUY)_&$UmD{!u>e$EYvQjbZK4^sU+CPkM~@y1bjhAoq-gFw`-EnTzn6Sgku_oVKedyi zS6t8zx=D40;ObldbQ%W&KDlbs-TNsD=X9@}Fd83`^1WB;@5X1ZhnT1;_fV}0DYe?Z zeM@Jh@PPV=9c#LtXc`xP(QDE58vkZ3w(YcV-WQs(OWFDJkfvUi`>O10_AlIc|LGg& z#lx1I+N;;#b^Z*PQzkG33#wI1u@!n+C2hY%u=dXCVXuC$s z^G}$DumPM}8V?3kzq*XJtFROr6zYegYRXnS4kI(pF(h)She>>b5%MFlNMOLdGMfrq zLsuyyjIzQ3!5wP4{_KevqN>VFO$)hYWFT3>i138-_L>j_kQa@898zr$ZHG$~iN_=g zPzTE(62h8!oRXU>?tY>(bf43Uq}NX04K_IA!nOxdd|AI4Cv>mK+DjQIL3S!GZ_F|> zFxYS0xWACHy8&WfNiGoiq^xF$irSAEh&)(os*B0sX3xv1j2P*ot%o2GtO&^z5 zvVpAofkseU9rl#hBHIC4F}_NvDA*r&DRgu~d_239+kt3>=IT)BfQm@qQpip4H0Mde ziV6h`rpVN)4BrqRNq45uq_(G3NnEf!8adRsgUbZ76_9?ENr-U*R?dAB6{XYu!`tL! zk><m@l-l@(J9prF{B#TLFkBK&@6Q;YVs+l}^4lsP)!%Hd` z=d(-IYu1rs$nIjgV^vpU%LGs~OFWKxdZw#XnT=+xkBW+C>gqLL^r-yk=oI7yuILd#B*M3s1>JV5Evw4NQB&KNT{EzamSvv~6p1pPzd~MJ_G09F-6hPD0{i zlPkbBa3c#ewrRX&enoq)N>z3BSf=}BeJ(wEgEX1>KXMl-^{kv;Zj7ICh=8Xov$Sqe zC@-D12P9z2$FOris{og112O^CFz`BqSOl4l%rhZMW!+Je!@Bz^&9QkEF~T<%eTv?Z zza}sbcli9iluH*cj`TD#4PU^8oOrx4h95|+67<8yd%;kSK8vlM9=G_lYikDPBqVSE zH*ia3@&H65GcWH?rs_PFw0%j3LJ=>EO+j=Jf{8Ypx?&-^lJwx_t2@j`?V2yuQ^GdAg72WrNkE0OctAe z&d73dQAzH;)i~pFc*D z!;zx!p<}ud9K1}c18)d`0<{H~N>=OWURlHQ9on@ucY>)-Y)a7Y^OI|H{jzEqX*U}f4x87Ku|LvRTI~GSniU-NzIv4FF<9$u0NBjliZv67simK}$^DR!*zy@!wp1NT++C`e{RL4gao-8exVhq{nM7xz z9F=uPs6dL>?9L|6piJ4GZTRvA*ZzjMjNMe~riu}yBC19m@MK^!!)PJNXq-dS?=s)? z>+s>H4tgoTXL|I0y4W}AM`6k-G=3n)dW~d@p?Y>ZV`Jm&LQ`_-MxCEzW=4IhNOc;zUQvx14EbRP_ZPI<5XMHexW6!F?+Lq%}r5;5okH zW_R{Q`+shi?6V>?IQZSx%@}^Yi16V;@0jwl2t%A7O4TGlE1hhJl$#dg<2( zLW9#F73Su>56iYhl6(Sz255$ftn3tDn;JJPA`v&WG=ITb4^}D^= zf7Z>VvWAcL2}cVh3|Q8~q3?`(6@3r%dVy~e=$~vSLW%L1f*>!+w+F+4;j7ivhn_oo zb~ZT-=NfB6TZVDCb}~OK+nQlL>GB0oK*cq8=KpGDeA9q+?JN!rhptt!kPqkUyw=@Z({l3Z9J*@}%` zwR5oTum1=cE}I$HL`{Tb5a3pu_aB%2{1UVOL-bFJ-lg!CuvVg%MV=zN%m@Lbk^x0b z;vij?P8{|8ay8~{7pzIv0Eh@JP$tzdPlo?acv^5Dl#>8%S$TQ0Irj8S)D`jHv?$4X z0yG9}Ht|h*-@LrxNa^dhf{v2OCCE9t0ID(ag2siBBhU2h#HJnX0XF~dpuE{Me(U=? zl{2d+s6CYJ<}xiu#|BL*hS>l~9J)VN`{(kd#rJ|fg}JOh4XzCsJlI=*FH}kIse72z z*al_v1oZScy*Q7CaV%GoL4w6z?g+X=X28|~=mF?YXmx)z=r9?uHz7(knad6<=;0_K z23oG9bR9ihH(_nx7Cn6P|%t`AJH z%n^&*3LKRt9RSmEnUp$IQN(NU0p>dyjMWd*t)1*k6-@iM=T6L(ZQgwKHp); z{7aNv(SB!qRrUWjNC~-(&DguEkDE^8{uXXJz z48Y3V1DJF)o6AB9AJdpFdteu`N(Fiaq35m1-jvxqP+|1|Y@a0-)z;SLqmMbYb(OJk z1++>2+ncF|G1N1n|G?P*T3MXAUy4Bq)wS*C=Lf0BBo}Et|b%%Z*ikTqIx9U!ZumrV<5W z=P%4f3WG`j>IsGWWeO3n9@xYgH1h&4^4383nF1N6K6JwZVoR*4YenRyq|MLq^?F2TCiGPaBNRVe~Uj+Gtb>RADk$8~1@+fECT$)AZ1&#pnp@`SB2;{%+OgT=1 zK@=&MH6bCF+JXF#1oG3LLdOifk`nSPFVP#P~HLnkTR&0&g&!z?YnLWx*(HPr!WUEMMM} z^er)vYX`H2p*bMqDEpe-Ak~H6Y;G=%gPZAz%?`P#WM6YYf)|8W8QJArG0xM4NJGRH z$+4fG3lA3n1!QW65TYrFK+mxU zMV;J~M9ujD4ezI^sYI8-TZ8+TKKI`x!`}yOLrC93NL2n_!~SiP^SYfYfBcWMt!c)d zV=80XdQDADQRz{w@XSF{M=`Sm{{SjP1VBEWQn+q1&zncgYx~33cQ{d!%IeCZ>tM^j z?;Q4kevwv_(rn_!T+#`O6m+9}U3keH)AQn6xG!)YCyH@kY7tCZO2!pOE4#a?E`+FM z1R0u$fbVhfBIk(F@>oUIfyz&TwV;%PRP!78tGH3sQymnz zS5;O*u^fwt(8lD7k~6ezQgpzW3-Odq2n>d+um6#?B)(S=1|u9`aIx&>*TD<2i+CYc zyLS1Y@F&kBoS%JR!dAN7f9={SZ{7iJgz2^AjvaKfhtWVWpTZwz-C{;&=6<9OAQ|MJ zXNtP0aNw(WDkZiPT#8(mkLX_c-oWh;`Gjv!GS!H}lz-lIR~hD#uZ!w}7fIq)FngnN6p@Om{gISS66|E#JH58jry9b&eHOswa%@WGMsY%JXwnU>av zH6wTg@VL>#@V(AY4U#EFlwP+O2B{2;uJ-%>AUNQUOH%URQfh3a6T@n2R3DZzFXKT4i3GtU^FXN z9*k@DD&eqhQMnM}UTo4MF!Xe&lz3i!raM_*nL))90T0Bi)21EN~ z0pYBTKR>?Y*xwODaA%?8d<5NJ8>%u#emQkf5f-NdMpf0L0->5I(^gSBTrm7TBX!3j z^NPSbYc*OqJuG`4O8eY(|3XUc^rQ0qxCKlFgm!D+OMBamUZtkIGRDT@Vi@gJojP@u zT8(|+gbQshp|s(|aCG9oCBJ;>7;hGsT1WgKx20LvkLZ4URWIkVT^2QS8$Zl{|JQ!x z_b>SxX5*AaKulM7#%NH@HTu1ClXt0+Gi2bCcSY0{PgXb8?-Un{7A}mU`e8-2)GWZD z83kG&bI$xv3s4Y8{lwUNCT>5?)}YFvHWG9nE(+6!Tn1W2`M2|M(Qs@Q@EC)~)VsN~ zOV_TCk!8++P#1Os?c=rHVPNk=!SA4Vg^{9lKVWc8ieo9>5Kar-C#*TJ$E_7NrHO{t z4YbVERlvJMeCP#{1qf@%78^FK9dm9OzmM>@fe&D<^OL+2NM&F$-tT{hw4p;*7@%2o zVK4KB6==T+ry2O^4IVl)uSXDsuMiYC0Ih}ehZh452I#blgk>Z?J=rorc++*Glq%5b zpmLorfDI)9ZFa~_iaXE%v0Q;6;~HPu{i#)Gx6biqW7F-cM+y-I850;4o2?BVL$z^(u9$vAQly;b!; z0jSH&3y7QF>hLPx174O>r%hs56+mO*^~LgHK*<$=DWrko96xT@WE+K?Aq2F*usXM} z(1}JH-2lcUsW-R3d-+o4p7U7Wb8*rRT{l&f3xG)2?;fO7m3aYHw*nggM-!kG#EA`t z7(pHkI0ksoFvV|=c}r!ng|;}mn>t-2)FKRPHs;N5>!B&I?reN zl?9g<4BZGE%X6*VZ#nJvqsKMYF&wNOU?kw`V&r|NYITvaRJ_$Zfd96h_%As(A8XhN%_> zxzNF?`co#mC=${N<7PHQ&H!G;qnGh?R>%8vKFbRGfF z`P$HwEl7J!>h?09N`uCbIrUOu_fh};^G`)e9ruF5Drdsh3B8~V%m9ix?F3Wcp+O+= z$Si09hZU_{xpH&RpKqv%ww)ip*EE9SfF|zt470p(B|d7)APSyzat&yq*K(o2k(udmkhQ#g|CX>b<`d9udk7Q#kmp@V$dh!6bRYeO#$F)MGB0X5%7WI|!Gd(jx~xHia(49v z5^A_J5%_pnRsHyV($2!CX#1YY|0f$ajPBETjf}UykN>s6@E@{EDaEKHF~SPXxks|n z1fbelCT^N+yQZSXFJT-^5K35yX|&P~?rmd48Fc=9)rFuoV9N98I4Pon?xsUGsSh!! zQ6?$D{Mpdi5T5vUVkD;!91?;N5?DdHzm_bHEG{27W>$R+l`W%fQaxT-@btImy;zJ> zsq-u)r6*+*@pjYQ^HlPpWuW#HrGgMhJb{4>c|xOzt9~h5wIP1d$8A5fMg1w zN0jX1S-|(%Pe&(Fo(ut9N3=Ywn7Rotq1Si=G@!9Do{kaCoC**Q5<3jyo3{4b#rWSb-(^d}={ z@mK|_r)M4vyig44ek-BVg%!5)&kUC zU>hoD(!nh7PllnXPQ>o(Lc9zfAl0XNk{*|{PwRbo@vw=zzV(K!K^g!q{D>NY771kQ z_1(=z8G96d(wIw$f-Ww7yIqGqlV)Jef=;g=3@&YGT#6^WE+QV`14)}oW6j!9Y?th5 zhT4x){E8lsOPdoQvM?qQE)ys@@gfw=sCrY!sg=Jd-5zeAf%^zOIa~|@gup48y>q2S zqG`cQA9zXL8IvPK1EfgnIpsoHpl{6KGjg#7`r=}{dU*|`Ql>c<*)^B|x_FdBHVk0X zt&zN_cWh*X6}lk&=HugUrc~>4(JHDtM!l*ZP2RdnsZbJe%FV6tfdhM^6e0G2Hpe1; z5Fi|k!gu8xh)u1!3RCJ0ewU$l{W!CIbrn(beG*4QaQEGl*PmAd5=)QCY6@{YGz$#T zk99xr~lTEuG;+F{bYWwB7k7L2|YZ{lTU7tLDEF-3zU;4FK zvtm+}=l^%^9864a&L;i<;vrW;=K`5JmvdyxT$7mKk?SPRO1KgOFeEu*=sHmo^k69! zIx;5(aWN5z6>>q*^VL-*IJ~|xy=7%EU6l;{!>_b3CF-;5Llkfv z|K3JoD!-G^*#|Xt=SH{w|7kb@Ip8-JA*w)s50Z}xeIaWWkcSIrX;<^#oJc7(>@DW+ zMRE@=PA4w|RU+d6DW+%I%|OjLhP#CN7BwcLNv24}#B!G}Ic9fp#^8M>A=ZOLtA`ac zCC^x**{ED~hPsqO~y`V?jj;j{FHns12M)QB8;q4dkB)<%x0touWo| zsL4`!erakio-ogxt4Kd@gZP(7LMkFO*uUa?`>3r zqBSxs*#9xuQ}@cPHpl7&_&`@Qa+~^ph0ZQ&; zp#B7P)&w5dTkw+@2%d>ARawHy^(guLuqg=tuWfY!La>v0w zO_R?ox}FW@g)njyZ%Jm7b3GmG6HSls+Hf%tA0p8Zh^B-zAxMl&nLrB=f_lT`1L}*| z5`r!?tcY3hnINwmq)`x0d_*Ohee5l$>Hp>ii@&QlrGTaO*IyJE+rpVL)s|^0j0yhc zU5!|A=TBtnKfk5Lfh0cRSOAlV)n4z(?32QTrm*liK}Uxlr%6k~0gK);L3$tbgR%6` zf9QGjXJ}juK7fXW<(4sXa_6%gEm@1AxBBU_`TC_}v?wT^4-H!$WB$luY z1UoT(UwI#BqTYDCix$>NY4iao6ww2dr(UUEd5q|6Q_?UlLte7KifC(L)WAT;Aj9E+ z9DxQIJ^H)RX$z?q>Xg|`JKw-3(TZs*So*SAyP89diMuN%jw)&0{#R3gH63FNt=aJ> zud_p0sqqTbF?G+cAD^xZSg>M+*xztq!Rb2o?Ac0Opb?qdq4CMvet&TFN2Nk#S|Q7Q z_ZH#50M9VpKRGVl6I%+3U@`e!Jggh)C}cQbXBV2y0!jW}Ufwb?G4T}hAN)6ml8T14 zW!wb+u#(o6`!+GZ!Q5LDM~VR4f0{;;zkW}tCh) z*9z6e@q}nqmfd_iI6Z&+eUrb&x0VzRJS1+c>|kVVPt=;o*w~}UYG`-JsWkbO?@<3Y zEMYs9N+sXK&pa5LgF7p3uDbOWz)VsmiwalVWU4}j3>b=fb9Fvu9P}RiN8HPP`)#0k z(0P7Pa8T#RHgr`ez)1W}*(NN*c6@n8%9=at4QvStHC0M&p7bm?RV)AzI}%(?=|Y+$ z63#WInlU}~Vb;N@e&#=E-4e;@C$hC1%@t^%X7hRumWx;~gt6k#Fre9yoqDZPj zK~Vw2LgqW)UE6U4I+eRV>1BbtG;nArXsuD&fl)13DPcg==6+bCuVf(NG}y*VgJirEz!3vFm&W1 zz`P~mT;IF5fEhe%zBlF!PdF+v>&-~_bgEtsjUfKRhd)C0CH(`UApQgqet?FCJ7ch3 zOMRt!fY1Tn0L`XP9m^M_e57-fUAvqCB7cm32e&Ypb=lh=r0UPP`b>6;phNM15t>T#wF z*xYiQ(mt-%%F^;OAP~?&n>f{V!L9eWXT?ShzIr9Ku)G7euvGMT&NReRx!o;_ekjcN` z-3>YmD%F{FFUSP$-04d3MTG=!oB{Sg#fR~RK9mCr`JJ^}Hf}tz*<|$tyPg!goDKk2 zemoc+%+xHOMD#17JRvg>L*PVYIV|(Ya4MiL$Uz^k3$P^ZgDwzq?rcc`T<^hH41!^3 zw29MJu39y+Wow3f%yyf>N#gqnUCHN*TC>ru-9(VRNxQzyrM|@7iR}O!0mlNx zFGw|k|Bg{F@asYSaYPdeu*WT~wiggO>=R#09w>*Fx(C4pa9Lzo{ufRhL44-wJ4p>5 zKt*OTcL)kMm(D@vNq zi8mXF(hXQm#fQp8uu_^#Wd8h>&$xTZdIRwaipX3wl6zf~@~0H3jW710$vdRFv~?|I zf{Fm*uzgouN7_bFHp<*WmoC#mCivVUXt%z+Oq#L1o&O(jcqrl)*A!YzpL*of>8$#B za9UzZ&%SSx38!ur1!(~HQ4I<*K3}T!HscNz^`=EH9(ny+^u#s7eEyhIvFk6+{W+CNbzjR3ofcYMU%Kte ziVS<|d#@JSre1lgzjU`E!&@>myNv<^y*Lh`= z9a>@^rWRUwTm6PoD64`+Xs=zDrA=>cGF!#7rM?>;7(*!gbUVzHn&OZ{uiDv*Vh;B` zR6Jj~`q?h;v|RNG_7N%(>8`q0rd?lr%(P^i?vjjkQy6Sd3bo{ShTvi{dvDXGF zu=~2%#1v&{N!p^rx>g^@|7oYCvf97L-4*+yHw^9T%Ja!yQ}FcZFXV4C+Bfqp2^K+P zH8p2*rZ?@#_^%5#d_XRSDm--%@bsb%8`BHQScMXO zm#ys>r#S14{kF^_|E`ypmtwE(PE)__422puZ@W7*&En0b9g%0-v}uzQ-|#jf1`hcYl=X~Y}qBLSOt2z4bQ&TJBOzIw@ zh?V&oeh1ZQCi`%hMiAKL)~$~I$@uAwl07*1JZ#^!EAaQk!F+vLk5y16=BTdrKL(1l zo8&&5eZ<5av>;h)9WW z&=z|T)P4|Afhx>|c}MnbcZ)FQW_4-3J-RVX;Ig_9Y$9P9r2ooVmIl9Ccu z<{TC*S#nse;jDGx8X38;z{~4qSB{NAKYmiDP#mh5ELGj7`a6v zGsE_sd-gn(E3|tuIieZxF8w}P!*l1i#=*notWPXMZRgBNWMc(;sFj9&tTMQVm`LU}l zFadRLSUA_c`vkRKcj2_etQIVTEl=2rcN4d$<=Dfs!b-*)MLtYFPIBL$s2EQD*f!qVd$9aHm?!5~8wG2SK`H8J zac7`|q!n+E@4ie1QTxgvr2n4-^h*MHlxbOfA-zU4-m;?zI2Fejj9r@m8ZqILld*Bu ztd{f*8>scLI4X6hFLw~fO}v5Ha#T&~N_zYUm`$HPeG0^aILb26;}rK#13R7>H>-cn z0o`V^o9k5A=@*7dEY<;YJieTJ+2Wwii{5mp6xZ-`axgK+f1F#&Ez~hG>cNwniX>SV z7!vH9x)Ei7*g?Cvv`6|zaQeU?Dn;Zc>yTi+8`jQp%b};xtr8G)BQ^E(^q_G0FW{aD z6F(D_$EwvD4eiR@SAYH2!Oq^%pYNgc^t=CM7rg3G~Wr&#GxFF}Y*L3pzGCixyH~O*FlqndBffo!smf(gKqWP-yhHnydZYG0r4D z4ma{cl6Z(AO1wCLW4Xt&{t9yi1U~Gh2p}#|MWH@!`?T*qP7_FJ?q-u}Wy%!ng5W4; z6Rio%S}1*F#P<7cB_*XbYt~HDYL8=$OkUEi$Vd_&#}?;n@r2*K`z(zDOIbTFXo0S! zk`X|h@6Eq`2$3yh);C|%l$3A7{Z9+>xuakB&RnY_{_iwNTSQ;dKDS3XA4i`=o5cR zCJ1Ovn)(FpK+uuhW{8vy9S@EDz9*czJ~1h2khb@$jSwAh@imXC3UU{*DlB%ra?q!z znU=Wa=>itQg5@T?CAp%hT>ts`InQBC5sjOH$cOWZFt$a@mduM_A@((_x^5huYxe5} z4|}l9e(abry1RE*MBHKR{p$Po?*lP~TpnLH$H0Iu)L%<$b;Gqb;5w_H18pbVoExiU zK1xX|NhL2}kGpx*!814$Lk{g`@CPhK*sC%uFWZ4|U5MXjt0fb&cJ&**~ctE+v((2!?En+kke@p9?Aa$%1g4CKr zLqQuZG#u!36JVTqG`o6Uqt~>BC1dSX6Q80F6DCZ!jb92rn_|sV`O4Lv)~f}%S-ZZn zDD=5Y^MDxWT?o@X(Z_uQ5)9o`r^shyCM(utDGf5pymbggc--wY`#jcAb~gXe)<9lr zv$ak!SyvEc(QqX1-Zkl>SdESv6$uETZIcRqNAPxS<3fdm$u_Adx6kG6n!Vv0z*(J2 z+qd9$Gdgnp`cbk?VtV>~+_(7D<{$nlEyeKZP+U%D-qSJ@6M+I{7ef8(j5Q7p+Q^4t z>{h+Z*ocJIKBC@9|5wS&dVecrxX#Uj7Z5`3m%pm`gR=ISw!==XHzc~jqV!@3k%ymUBp&59uSOwlP`xZ z8Io~mfYhZ#qt~TfG&diD0bECi>eTdL3hS7!AKH)7)O^ZNfF6Ek7cX8E8bmBpZ{508 zs6fpT&&y{Y`mNUz=WkEj083 zfVhk^D2R5PV1m&hMGz)lw)k4*7Zmi`^hY!#9<2nV+BktbBeLh*(YIQmY?h(_w^R{hM2SQQQNpf8Y z7ETX~O(l)D3wm{gKUX6n>VH#N*>Ka<=222%K7Ns$I%@CFEdsX_jPmpH6y~LGv0#Tf zhI05vR^DGvxPS3tUWjP*`1!<5&G4(?$b11o_Uzr8@GdAJ*9%D~m=HUMUf7yCY&kuT zL8iX0LoO!-jOG%)djI|zQ39K<*=~oZzt*f#VBa$%4h$ERSIfG-t5*+UVqaMs9v)6< zMWoosny;erEb9<9xm=|~_Z@Fpdfv}ZZJvjwj*U&}MArZe(s(sgicbf*NB8yTkD-lU zlOy(a+!+ua8YtWxIY7vY`;Mw7l(uNm;vd!l(t2Iq%GKqqbjul}en~*x^1N z^L%QS_kp9mckf={i$_J}GQ|n1o0HYXr|B7nvp{CJCOI~1ocP*-fii{yY11#g!d>+! z^%9;tBI)#B%PLI14Z8wxLL8=I;uxu?#<{vWIW1VYu)k-VX?p0qi<1r~<`aEH zaCAR3bbq2w{iRENS<=jhxXcUc*MD7M=n4oqGKYDsmf*V^hKym)kgR=adcXq3EHxl} zrxP7Bb_2-NPPn-ZP(NM&KKa2P6usCEG&lpI5-BT4#sE-%-@e-A)vZARsN7^0m=A1^ z=BKHT`XmYx`iI;dD&gAhb7dBHRh$40S_73mGx0n*5-C56v_1K^%bu5m$@=B zungE}@BLiwux=Eo`%hNP>~GmOV{dwOUoqieU%{Y>6MH)AJwkW)7?%YXP7>W{Ni`IR zR3;Tk{`RsoG9Go?SxP>>8mjc-@S=UL@?{$a)WcVc`#yv3F?}w`-WaH5c(XZt6e3y; zYdIcn948az2+i~$Z2)yQkWosSn^RPRM&_X0@bUL|l_!B`9Q+%7ZWd;XGUg-<1_ZZE z_z*3qxCpDcPB9|J5T^*yxXA`p3}nFwV;FH&%j>hX;VwRyLOn9QXUA4m?#Z3#=cj4eUEdlp)wVxfnRHRx)P9^S`s%wn~2*GqJYF6j+4I87%?o; z61)OwGY&h1379}_3nxlU2B42aoZ}bD9b1ov&)RVlxtq$B`RyoLtq@v(9LJ6G=Xao9 z;^o3eScRtX?MBn`gREgZNWm`L9p{wGdm?VtOj|7*CyVxG0-4{@eC&2BK z;BYoRnO_2XLsz5&%u4_37g4td?^j{u9+l`W5{$%B3JyNiAr<7}q`w791 z&nhT>o3lp}aJ1x*Y`9_QcfZ0r% zJXyRkY3O*Vq$p4%pZoXEi@hmNocP0V1c6_CANcZ&7PO$lDltzXhZ1{a){u&fDw6U# zgx${hU%%$?L0BK?ft5T(tjH#LCP*e3vytUA=cd?}1lxXl7tj<0lBp+9KC$Vfq{Pq> z{DVKqKS+W?JVUD?(?lS}$N&KwgcM>~Votgzr5V~Iw6@Zo13cKkEATA&RU{b<&1EGb zNEbNA2>=|l7pUjC$sT3ZXW+`+&k1sbKsT(_%OU%wRNDYKpoSTrVHLhQK^Eh}R&&na z&-e=bYEkNdXHDF@1Of~26DI5WV)2^75&Ddy<8r=7eVIx9ju!`hL|}7BKVYE&0#5IL zQv4_R1XR*|wxOq=1)BN)o3!ac>BS=1bIn{RBMl{*6p$#ID4;{?esx4ch6rLxmR0Na z?a#O#Ow3nhx&X7?ge);#|JT>=VgB}Y%T2Ry;C;cuE!}6qP$B4OMAz-!t#o&VAwTIC zC!uu?6rV#ZM-))%(}%i?)*+goN-Zvv&iJgJ1NF!(+tbvbJF5fjv^?!<&BmMyMxpY( z(vAjaAvNiO^Vbmvk!PeaqLKk4^TFf zQ0m=#hHsKJ8l2aS3$x*oV6{ppmKL!+e$%F50CR8&toZvgCQB6cQfw1@~CF@*r~cPq8um zQ6`|TxRv#8f5c-62qtA-Wd8FxTo_!nm?lG*Kl|f{2~>21Ht;7cHO&>q#?On3M6-&V(7` zz%nsjMU+QjL)@U?%JNIo`kffH@$L$|Ql?BXR?{EnO*g|+!np#iAuuTk2u-iztCC$racbIU3F>FH9Mz9`oY)^BE8) zjN3saQaS-xfyKdye4IEH63$ug;EJ1UL6gi&Vnu7`!w2WQaad0fCnvL~5)H`qNf*QJ z*caMZh8SaBzGCG{#%kTBxKk@oh#=3>Z4e9)KLiTlcLCgRfU{n-p$eyGMwL%21P04d z4uY)`+YQq7< z8RCE?9-Lf2IQ#h|S=wXkCXe6kMnNuflWf=f82p?kQ(g@zFLt;{&z|KdXkE%VcmBKq zU(-IqlN7BtYgW$pnRDU3GjurJ}ms57(BPYU~{%6Fh6`-yQQFO@#^YMx12q zkZc>a+P}AEb+)nggSFQZa;N(wHedg56UFiU5|EM4c%as+Km(-`aj-?RG_ox$Jmc*d z+b4WVu~_FB7o**Qx53`R>x)}B?Yl8AcUgLFsAtrWgBuL4bp`{+fbh>_$K2w^g`*cP z*^C)Zq~1SNKZ>3Q6LNVCYL{1?Ht06WHK24|;n*cK@pCPTEA2`=V9NP)GMSB<=Ompo zxDBd8&8#pj+mHLK>r4|IO2X>b7mtJepz5&Ade1|#I@-xJW{ndE`rtXwDMw;tM-HlR z(Om(7z6kE{=$yyR@PMTCj5H|B^W4QNM%iP7&qwK|m4d?SHk)oC1uN* zz~NoGbO8{J&a?!)a7@TGCI0mr3RpD@Xpdr;YXR8XbZOsf4cNXR_4}Ui)vGOPV{a_f z47W9;|L2AwEJg=F@5?{%`v5y5zwS(Y{ko(>?&PJvjb|4nvIPDFWUaaJ;j!>}^jL%3 z*KXRfh4xv60s#_Z(_KDcF>u41H;5#<6x%!NO{a&TI)#uyGF5>NKBwO;?B6UcJ2KKt zLWTtVZ9}zz8+(DfLHJv@*g`={Q^w5`0rjhme`zRIW$WoHkgI@RI%8&1)Qvt*2R091n>QiVuwL(54kNAYF>PO+t< zJpOOhF-K2$CE$gN^Li}UG@E(xo|kx@pogRmWRMgM;ta)p2%=uUp+jf4f9$-qQF>)<3u56pdM%iT9Ln4p2ClG>Q#hE4oB82EUY)w1q(BnGqT=mYV&5}I7&~{ z^1{pj=gVZSbqF6_8hqE7gR$#dKW)+;1l#>pFXw2-=Si;H+)kf78O318Z1N-^Irb{A zHnP`eZhK9p8|}IcRb4o0Mg!IfhCRPnzu^0CijIr!ckTMhbFT^2f#XMv2~JR(uf~pr`48 zom^ZP@G`Kos|nulf_9s~DW@qfFOsc!XV3mg+ICX~9b*=f&RR|#R~H%wqzRfBQlGc+ zY5OG6t$V%7D6OOoS-XCHGdw#HplWI=U5Ibt@iBP&h~1i#CK-@K0o1_)*fLmSOk)mi zl990np#d8Rvu@AI{NX*rbcZ&w9u#BHHPjivne@d}LNE^mAfP9-miTV6^ZQonS13Gs zv+U=woIG(RH8UH`1P(O6g0jcQ3d(4>e?wY*>Nb84`~~%@Vwq0N?LK|lw*(1-C>pC) zP`)P|Ab_8kZG)B9tK{S%EuSQG?N_#Y3ft9Rrl-52xm*`OnV7x8i{W8HCn&l$>$R5J zmhUr? zj7g{jO<(~Krw^@I>{o>S45hK*5FY*%vn#|sjUz17q&J{W;E`KL?ko)ZmY=V4WdXz* z-=BM9t8$nRLeowGxI27xnLkTp}BLNesQtq%A?F|PbrAplFhBF^7@N`>i_+}T%BgD0-`?S zeLSfBx=m!}m45%=77v4!u|vyq{zsifZmK}itq-sJ&}W^#Tk-BG8^@g=`>nmL8bXq3 z-*QiVb=k1q{`M-cshF(F=TWou-6&fTLOb4z`TQ%~=|zLgAMMW-mxpFEDa9P5HRKmc z#$BuTIh4G6n4e|oZQ3|fXn94y_3)Ra0kgU~Za?E0D%1Yx0Pw&;IRo73c zt}}mM73O+fzJOi8jIN&toMCKB@}*lR&jf77`)rG-6-}0c?!WG-tgMSsCSxbO zBbNW=;+>KWVNSo)8TI5mA5&0ItQ<;N^K~APw~T-TZIgF_fc%0#wdUQ60XxJInF4a5n%$# z2{e7OmlhErIOGxP|Mlw+iSwUe6zex`{FBM9j&xCkYi7X)Pnd89nh?PpRiq#}wBz=J z+N8=%`GMjb)!O=11&!zS!KNAgPal7W+((9PFzae6CbLL}q8l-E&-xm3gf+6jH9Y(x zYBfgh=fHw-TV=Ve!01%mbg0}<#(pjuh<#RBo#gh=|Jn8Jdg!7z{$1ZFHIu)oHBn?OpS!N5o~41!@s;T~SzRdpSmwE@5DJh3OHV zyjC(XV^l3U76c*uQyZl^YwxbGg|N(VTE@m#mHLWV)MgX0YZFGFKgzKXLW;3`edsOX zHDMYoK(>+OWZY@Eh7S*4UU1bo54Eplr-ehU6RPjJsU9tw!}+$D@i}kijceCtu6}lt z)e(a}!qZ?=$AFQ{(8#C69M-O2WxAkS5DNCC7t$?(UjZib^7Au8(`(g`1qyj3KEnEw z!v8YcVmryBuIcB}%Hrx;I>%e|cRUGM_CjX?u~9;4gwFnWOx9X(czUH4j9db2@^*3r z7ia0F*f`r2?M;7_^_@A0XOWQ#bmp8q!C$FL=(z`w@`>^Z%iUCE`51+6@Yj2(v^wi> z9h5~AClWM!0B1IG&DDNdYBKzT~R5*6YQ=Cqw)~qb~pBA9Lu2!xILMn&Mo{jSA z;#~$7Gp{_2RNrBjxsMfY5H3A?_lBpEA_6pm!ib7OC{jw`J>hkpUt$22xjGGQUG|?R zP-oAi!R73ER_z0l0~`j_<{x;|w2|70%j#AUM`*n%xF;8tb0GO0KoPVR`@Wfe`TF%5 z2k*v>8wufG9n2fcj&aI{k>!^i#vgekt28kdHXq^nQ-9c#CAn$$RP{x{R99!O7Lx52 z_`m`^8Sa$4#22A34{Gyp4j7d9=8d@HIz;C}i!8@Afno<%9|c+r{p zWsW1}0!*ubozZgg2iPVoYB*lTWro(TFBbdqi1hh%Y;;4iotA283{}yB-@46fxw)6J z^0Gj)hUJ-ETLW~-x}2L!#dsI}lSNQ3W;!S|ie>|)P%s%EdBYG6jg*N=x^17L(R>f! z(@r!T6tFnWF*(K^P(b1#&`nHZmd?~&I7%hSXZVo%>q&3lmLOqynV2{oWfQTes;bM? zYwf;gsniQC`m-oKVS{`8V7MO7FBlh`@TsdAN;a%Xc1Zhi?mczPy4t4cvLcZSUz3_w zxFxr)+MWp#v&xd+8+1*c+Mcnevd(E{20G`Y&or7fRsBJ6lZc8Zl?h(HUPlo^xl2SB zjb`p~poAE2>gHW(nu##yCzzdn0k6qKzCN>zNh z=`N-AXlC6}LH$_ukoJ6>va_A}eC9N_0^z9YyEQ#aDX)1khnzVF(TK(e%cdx1kR`N) zouz%Jv}u2~^qn0HRE|}v?|U3Ygy26#oIe`sy#9sLPH}z@?y{G z-BbDkClIA{sIpj%EvRF5TPzKr*u_fh(v+SEd00%cbEj;<;rB%Ds2;+*7x`$K#Sj*1 zKpQ9sIOy~kX%MXf2MyVWDW3Ar(;+sgh|t>+MP)}N-69wZ|3cG6bJmak0!~=LXY3Jz z2>j;^H&p@%0J+)r?SH}Elh8qoxi?R@V#deMq(ilc+;z{D1&Y_$dj_e+kl+w)i=fm> zwlE7INi)qkk4?YMJh>jd8DKrXLS|=>`Zy-0=g4Np4js&KjO5fyOPI2S_rhtw!eIb3 zKTZ|(+sr()S`HjAKu|9|ukRi)59q;oBZw7cgbnNhE}v^c3N!;3vHpD=9j*J83)m-$ z$O#z-CXdvjEvF&F;p>xz5DFOp0?;bTenMXU0&W>2anzqo@@HUq;m>AR7pQA#p477P6d({znWjd?IJzGJ3E;1eGoJ_gg8 zy8wvKs1HtnQ4sfJ(VoiIk)onpCL5mQmdbWiV5z5KRRs66EW~<4I zu;;Ru*Fg>w<~DoYR#NveyW`67BaC0U(qBqQv-tC*@|U@#{TqR;nhRgPee>oypeH&5 zoG@|C1VW#Pgqc?6Cl{uL_5cJyiNOf$I!bPkW2o5*`hX)bS+x9TL6mOsr8!1_@Kli& z>q5=o%tvI7O|bttHl!%velf~D`O~VMf0$3w9_w1d!s^O`3Gx zv$oJ&F)E2#K?-wgmab9h$@KxC|G-K~AUAp2bf0ANHM~6f=_9=?g7>3KK8Q5PHt?-V zO-9Qwgj*w4-T#ZN7P8KjZl2myq>Sk`pEa1M43u?>j6{eio4Z4LmqVbKdkBty8w}< zfUi&#O(}cx+Z1LosCF*dmFUx^LHvC}xsq{gxL*dJP6XrY0Du{_#BLmajw}&zczI24 zzrr6SATCKPUQ*+7Y6A{B3Ivuptuc41aiyp*D*U7l!v(g0Z z1ime&FDTvq0`FG@bo_P%CQK4u5Z0Sxz*w2+qD35e2u&k7wozyy6bI6D0zDC&rzNXT z`ZIrmP$zERe5|*zo8^Zcb#}gn+^gI0r8t;B3vBTZ+)+svxFeNeLx+l8IIsLDzpAIc zn=El4^gd)NjkwgX`^gj&aDhtaRAP!n?V0ztyk>4&F-Ms@{3-Z zh96|jXw{C>c0N^GSai`BL(zl-&D)T&VAZTa^q*}d+2H*A2*pc6MIFnNWR4vkS^*ak zN$hAf{K85MWYU1lMpJ0KBWVfv+Ef3@NQ6Y)NakXyut6osZgr{K5kVQEuE!HJ7xnLF zpo&R6SI&!ToLV39!ZUWy8(w1jIeZwiHRg!h*&dW1wyCtSCbBz+-~&pZVnZ=mi=pV% zif@P%zx{T~!`X;^USJ~ZZ`CA_{f!LpNZ&ob5MKCMfS6b4Kwlg>l&BL4x#IW$K7sfy zO&4OQ#J6vwIT_CwF_Q?(@Sn&k=BS7Ng&l&GDVxS~vF3kb5mbu2V&T%IdOSRCaLH!W z_G0FUT_to3e2BaoN(k9F@L_wRA&95MM@oTURQ95xDUYb1O4Y&dEF~b_MgxyRs_BZR;*Z|NwN{ciX7_&z%y+rU+_bPufoQR zG-d_lQ!D_I=)&X_}?UVjI#iM9_n3vWIAA3J7vHd9^H!YZOd8g@^<}lJ){~ia>mINu#oh zgZbc?tnac)2#>pI%qd8oqkyPku$#1%M<@J|(v=ySL@s6n3sZ z@%4Z3j9(OoX$z12Q$&4r1O+mDCA#qGFfyM$#;9P zq9BPP9Kn*P^yC+#@*{Se;;SSpwum>fz6lCUf7dPz4!4N98C~ydU$NGOy}h*Ds5u** zLQ^oW!`fsWrC%5WQuM&1Il$B+4BT$u5Q@7HsFsM(30r~!(RK{QM?#f)T|t~s$d{6` znYF2m)_5T5yqtD_5VXD^xjw#tJBXg3WXu8A-+Yrqd94`ts%+0xIDEO%@4oH~2@Z-~ z5BqPOvcWxexht(N118UkRx!th29qk3LZ8k9{F~Mea;D~sQ3T_M@N#rJRJBl9lCr(5%WKQ|qt9&&OoBT6Vo4KU`CsCy5=#i;xuiBWsdF}Bh1Jw2B;Ra8X1e$D8 zOvXUBg(18clzhKz^Js>QoE_Em`t+ z8`##?VLx37t^?BnV!(L-!%kt#1xCmOAz5v)eHxR_3Uo>9m?wjikh zHHhU&H@5>gS%GkiDJye^h_NFnEaq(3FvxP!oC-E~clgBxFA2o+_*c0YpV`9f8z-KA zl_OQ6XM#wet}y1=5-N0eY5Te1bmxlHp<>HLdBZ6dbG7X9L4yZB+n~->rH8Wqnh;>P zg|ADV5k1zqbGFgx%^eB<;+J?yg{b zY4dK@mo$BkwMu_#WRBV5kNq_0G3X6IG5#~PipZj%K`cuOlL=y5LL7jiEb!q>jxDKw z7h04z)VJn)R#E<`U(e|m#a=aXo7QjIM#Tfo4mV%C#c@aTP77S_f7)Z*tpr0Z zk?3FMKMHGfI8_i9787TO(x~v&t_?e8?vQ?3+xxhy>-?bJ`dGIvnznfGDg7k{GSQ4K z6Ue2id8tzD`Y~X5i@TK;R<~%@ETgE%;YBVr!E4)9r+y`Za1GPmV^z_rO`B6yBM$uCz+TlXBpjlJdl4JZ9to7{%@1MJaw?z`5RgHsBb)a_ zJt1R@W`P&Ss#8y&aoLPA^z+SCHh2B{%r&2EQhX0-F9XYMSZz`D^K0DrWaGrIgCa1p z$@r#nShs(g(Uk@L+~XMh2~PWFp*Y($#^&Q*&zr-~p1ycd7V;^Omq6k4S3Y*=t8{p5 z<%-Zn%Xd&=y)M#)DYEVC@VkA=>BNWvO|&HRA;1ty&UzF(S50kzIA6SwDV9Z%Wm{;; zLeoBu?Ds7z>tLD%!&GyAZ=Lb{?N?8q$OB`4Z9~Hs50)Z!BZPRU+&Njp+~Y!%204z6 zNcRiKt12v9a&HxYEp!}SCbcHmA!dI4YB*=koS@PjvbAf){cXub-kY87N8j7r*52MY zIe?qSrJ$sqNDVFS?0{3;w%NJ7;{5vdm^q#4zIS``RFyq>S8SH52i>_dyKKOHUij=b zQ}1u;UGo9w+dS6bpaS|)ly1`cOOv$jJ~cJQ(Bm!|`U5 zi)u6H-nutj9TDsk_AGLz@@?fhB7K32+7-IZNGB~2yFPKZ0*+aZV_AnO#R||!Be4#< zv)u_qi(ZEPR{6FVFsgFh=;Msl+@p;eU7BGn;uw*X9iO|A>{n7G&Uimor=pAW0!EeB zjxI^w6=)Ve$;U14iATBTotbLxiDWOb4kNzY_PT#d>(g?v9CA_~kI&@xSGl$C?T=n= zG-+@chxOQ$sywgy^jwAlPf@?nI?tyYquGo+7j_8YP7c7pgN%?d=bX@c3Ju4b%(4EC z1@GU<1sov&_SuT(@gniGsRNsrNdrKQK`6uNjHq=gw;eoZX%<>T!2(?d3y*?HTtP83 zk1`A74;-C4I198Tw_R_~`1ND-CmP~Hy$AYD4AAI;YM(ru01JWI9!!zn2Q0@PlK~^A z1TSM)N#L}g)N4(a{3lVTy63{fD+^;rs5cn?Yl6lufTuwub5hH7Llw5ep&-Boo!L_5ZR`PF&TfMBlq0*GiBoN4P0UX zR@vQEP=KPLVGBK@!NS?#=)mU|TT3o0+OPUAi;bkHrf6}G`+e)yL9hhwaWk1KC)s4t z{ZO!z9$$?NP8olRrrMlBmX1r@g}M7U3u_M1*bGd@D}xk+jU`z@m0IXTd8V=ggW$fX z{R@hHo0^L6$M<|rm^Jv+T6P$)Mu8tHq!>DMW&+gi2Nz;332QEEa48+2`p#)PXrZTB z^xy-oQ-DC!tQJ9Q)WnP{h2_FX63y|^u%n}v4nz(N_+a5q>>`fh*e4rzgRQcVJ__E! zC-*Gv?aqobjHP9J`fu~6K7p2=jfdODty{$xxbg66Xz}2fv8!PS_yw9OLXl!n8(;3KmV%Cgcn{c>m202Tq?H{Fn z?+RB;T!sau)Z0``Ct}wV6{Uj2{EU1)h_Z&d5Ab8;wf1@Uz2^=-wX`*%U&e?;`u+ON zn;DFFVcI5l@3cYE$XR(QB8$QvNIjxv3=rQV01n*ak)V%A^W9u_dG26@x)*nCwglf6 zmql(Jhn7NA_Eqt;Nvbw9P_oV$dc3%-Y!Jets(stzojHgYpW+uR=S7rnydKasj8jE) zju)jIGCmXkPw2K^=pg&Ll-){q>xcX9Dc;D$~YZTgb>rG9wyN zX;8M~*qKR%ghU~i_@!zTaznuFvOl zjl*_GR@uX-Mrwsau80*ErwxQJR3CYkh+G&c+j8UJD=i`_g3lB@wsE)>H7;uHmswCd0Yc&G0E_YDV} zWODfrX1KWp1t?q2aXj28Q7Nv;_Vf|BX$R(Bb(PTq+9KjHJTKOwKLy`JLQ4*!SZC%+ z59jUci%a}p3@OA+4GNFC`n}}0KUFM)E^x}k!x!oWqPYl4n0ZRcI|e^i_mAW*}HQ zWTOdM4Re{rDYBb$*|PI*aAsfWJfUar=>Kp5`0P!ao_Nn>k2C847WEM^(M1La0`~uQ zW`Ju)>g3s-53kG`hEk^85*N_JB3)li>Hv>iEtBH+|(fiAiL~!+w6l zgs=*~79ayb0Y+cMRPc8z5;9MDNXa)zVtlY%;oaA&KIL zN7v2}d*-exW@K!uQP!Yi1k0maJ<63b0-qCh89gKVGkMFtbfBl!z`_f-*{P_; z_(eFX{FiT5sZ53!?-)MCGrVdYyj{N?C?yXu(z*Pt)A@Fep#tR+>)9@ZL@7&1J`z1g0TvHE`;yXx3;XZzo|Rjs-}y%=TU=YnC=__&m%#-zG#8_AO72 zACY!{`h2G0)E6o39@GbMjHe^Uxoi;MwDX{b^gvqq^i6 zt~niV$c|Lh=CX#2s4P!~RKeST9q>fc3=or3yx$r+&95PbNt(AXLWk@O# zfI1q5{AXEd=GowSPl{qPEQGehr4|n&*+YiiQ5FtDQvFowU2PbUJcq8H&l0zV-sHg3 zEveu5xi%qH8XHUhYTK_#ixveorU>xRJ0ooqzF2B%G{}$`71e{jA@y2+Ww^$C6o$^p=u%s4vX6LWqvwXW0wM)0e30^#$^e$8 z=-eM0i3K65ew$4+Y_jE+vYTce1bY>Kioi}Zp2Vv_jkT)mYX-?cx!yKv9C6p=q%?c? zYOSi6RDiHk?DPBTTVS*dlA9E`ML0A-L;zSZGqlVDlBE~IjpLtB#YFJum}^pBNo69& zG6BgXA}kqB;4T1?C?`&qp>dRVlA8DsOTh)H%Vl+Fkik&{m1{&e@*LzSAS*F6WafI8 zk{)HN7+rz(;^Ga#U^H18CI`e45)&ipsVbd|)a%ZnHk}1;QPrhjTgn|P?=Q8~%_l{3 z;gPOcadI50c!+g?n0#p(a9Ui*;up{d!v|l2#|EH!CN#1W(KytL`Co+T$Q58fY{b(zwZaUbzAiLL{X+L!`;HWMKRz^NcI zyx^xWPL|#_sz;D}$gE2oi&>dT27AUVR@Rjf*Rh=-*lparxj{PKd$Nv`jj}wOq_7=h z1hf^<;rSZuHy%WC{0=KZft&*5M7iRL*#Uv{E`ta$J;(M>#!`r` zSmjkru%iH|FZynIH~di;C=x;=vsUwT1QX`ze8UB-gepzs_!NggF1YQAG=dUGyjYM0 zB9m?%YFINyyGLF8d5wmWN6i4~k&Byn=nz;afv=p6!ULi4Xk*789x$kXdy-L%{B`hP zd6e&tKA?GAEI!jDxT|zYJpE5aMaT5)HrC{4S_UC`ez8HFSSkcb{7otGXT4Xcz4xAi z4ZR~VsAOeq#^Zq)3*IM8?OK^y?mOQn6OA`*+9dlLP_KwTJ@p(ng7RTp)%OLW180J< zkGv*~LSYla;$%!RBT;Wq2N(qmjK@<+%5Ze^D51@WLXvG#RMP;f5zYU1lkhHQckkwJy%dlx%o^HJAu0<2^?1cf-(amOog zzY9L%{WRkdz=jlWd~10eDX1ia*P7NE=jqgk1hR*^F&mg( zyJ#C{3CsKH3npJWlR4r2yUbftUsuSoB{Wj$c|81u* z8h;pEB%o&@S%mh$c7~qBH?9rw4LSoUZ30o9SHc13ISuc6r2AO=Q@ERM)J=T*b}Hl5 zQ**mOcs1E;O~s z`(e*#7Y0~j;wSv(QAvSb@M`fT-Hq{!=8hB?$-^Fg{X?)aq)-@oqSzZDbKu3k1{8Jp z64pa9g+8W^Nax)e5gdV8ekI5XRX)Xb`oA|~Xwzkt2>aS#E|AP%W%H{bQr=wbv(WY) zi2`Ybw+DSTBf@W7KMNoNm}atFkvhCV^uPCq3?2-X8i-Ili78>wEEL;rFf+Rv6y(A* z4b|=u#KZPAG*8bPw~$^v z4hbDV8)gNK!5-ni`zQT%?C9Wf{cmG^fGvEK9q9zKd1P`XraKY7!jw{xb?> z_-qeDL%GcKOUl!3)-k@H-CcHzPf;Iz0`0itqQBiaF*I{!Y$k)O#c`8;Ee0w%lv3>Z zuB}e^cGIV)%cbN0;l{#2CdXtw?`EDEIV@a>ZfM5I0kl8m+)3H6MKLA&WGNEq9|`Hk z6w$z(ciFmwT#e|<OGILl7<| zd3`%HCr%k86|qY~8NuXMY}z2n!+)UqrLw`mb{#rqnWUlJAQ=HSwdkRBig|@hWqCa8 zq-RmsVOBnf0UQ$s38>(6OtPETGKOV0*Tp+`+7c`%(|F|E@dY>pa0R&-TuPR6lNP|d zm9yg6LiWvdoO!JZVp_k!A(fA1`7KNl_tF^FF*_!#)vu)_gWsj>K42Nt9YGb)sMLzjhF3O(90_D7x(W6$05t6ZwzCjV zEN%{BJnV?6oZ)Kmq+sWDX9dB~Y0Bfd{)9>3QVLli3=CO(Qz5#6<_eXw3*D+$E1#Z8 zzKy}jjG-pkOw{Q(=T4&RpqP-o4J>WwI@z5QQ&>7`^hg1CmHzW^k1=PsfTTZgkv6|wh#gM@8_Fgi*_a43 z!YaD?`;~|_y0AYFI}Db~LUH13lbU7A2@#a(ldyo`TQikB8Xm3#sivc#Jj?F?%`XPz zu+6^}uv2Z=M-7N;5Of)!Z%1k&+=zrl`eK|aXene>_+5lFY5|NZjNt;7m6yv7U)n+! z4fCEvY6gvW0MEFHe0;*sE{M_l>A0sJ>lsDCC$vv;qHHAy*N`BP1 zUR*KuV8jAD%JvnJOE43X9t$E*pGo`aKLlk5D;=@sIoeHIGz^5hI9vL-J*ea0Z^`$| zc(M=j-x+?lB~Rf}>;{>3h@Bc)kKV#w!S#xSFwuB6~#Ju9B$iANRI;0QPU|%=SfA# zm5lXUsY7h#1LoY!WX!4oLt!BLT=tHVzX9^sP?MvDvl{c3m4xE0BCH*V-r7Bn-Rm*E zb_IDPtI&iEY!0BBMzY0Ui>tc zM@P`yOc^ntwzGA- BQf=Wsz8F>al2D%7ZxY$z3ll}nqXpXnTo`6~@Qv#kjwS$b5 zsYxy2m%y7B+ZE*OmYLJViHfQVP24KH-aa_hR1u8Dc!e8&{dyC?TRJug*8sRr!Gyrh zP|@$Es^JInKkR=NM8G8amvR0Ko+;2Qb~Oh%wnE0iyoym0Pkc9?OhWV_LP` zMYh8;K1sLIA_2%$fe?WvBnWtrK@K(of9U9ho9&7s8vys^;$qHuChbwV_qo4SHbHOy z7DeV^w-k|6+BBMN{-g{Y0T#*foFhR{WUU)=T42MP%6jdo4)*GdZreSyMZ*RSFdH3@ zxujkFTk!Z9ugT&{9OYy*R=0Zh#}6UjP_BRxg5F*R%VL7Y#260b^W@}i%sa%h2lyFv zIjLBh>!!DD__t#7#W{r{oXaVe%m)Z}c7Qjqa-WeSJMtHqlfe{|2&U=+VgVEZ6-4%U z!8JgB%XkDg{Id^=53sZcH3DsE%*ILd2GT=P$a0i9x6=XGsO$WbX46#hfCwaXGmIN= z8it-{s!1rCL%|9PO&X>VQ4o&kuhOD{(8K_D8Hq@wu)v9stB~(fmFfXHqj29DAC2Qiobvs@jM0Um|FU zWnTy9=^B~>^2-)_arjA4cAT>vx$j~D`w)l17G2ewAS@-)h^UBVujfCJ#Gy%LY%MVw zrJ*q^`CUEb#9yE?^-yK&U7A1sy;&<`L-%b_14Asoc=&lh2?6VvRoF$_b~vF}4xdQV zxC*Q`xl&lhhXdy1S9?A5B#+1afcnIkkxAmlFHMZI9i1>u_FCjheMNeQEDEq7rf4jh zK-oOj{=4jY?Oa)9wdnRSSm%y@?B6&W+27PNk$!et*CW}N^P5ZS^&|^3i(!*Uro^=B zk0YSL5H`tfsxCK^m9zkAD>Nyncr9?6EQ1~>G0e$*Rs2Fp>#h|n>x%A> zDdu3mH{+4+g$+(`AC{aK&8UO9nV4uomV$ySBv$|ml@&Dwj#ZUKo!6ial!zu&J-`bo z-H1p~mGrc{1W|G*HDf5$;1NJ0`;r5`@BX#D^!tw=&sN{TicoZv)F_1El{0%JSnDR5 zBrtUP5?X4=Wbl+$-e%*@op5?CtEkYUR^#-F+Thk=ngO~3LQ&<75z;*DjXZ%`yR*{C zh-%Y5p1z+{7B@``TS{ARJ~C+ft_l8ZD1*wcD`ZocoSSr%jc= zk*t?%@78Q6J*a!FAJjDXQr62a;nHUzicuLm(JyczxmUn+(nApwsLdw7+HxKzWcVLY z&$DQS8pwdSL#Ix)b0-4-Vn4$uh>O52xt-oc!V6@PoQ(fON-=WNTS)l=mr_Jjww{_( zBVfhTmKqjlqS@m)kHY{$wiaN>z@hLylLa+~Y(h@KE{q_uHaE^oijqaSF)|eq;E3TD zG+f!xmgZD57LLQ^Tes$D>9W=}!6b=-n1@D_DaQ2-OTZ4fvKSEB!Ck&``aYu}5#mbk zKygk{Pm(ZVJ8)dI_cz{=6l0+1s!r9FX=`hrTE?-N{~e??aast=2TCqB1>bxgT(1+B zSI(!QqJUt~vj*%lZm}J#9R7D8ie|=}1l!|q!bmW1i!+dR8uRNIual^0e%V^Z`hXUM zfL&^u1&v#F6^~cw<;*R<@@E;WQgU$Y#rBLh0BeQQ2}CG7edNdk!KOwrs_rBr3^(9s$fh=olo+?Kq6PsGghdl2>}wvg z_syGYsl@8kOuY;DvdLX>l*hbPP*VS3D|Z_L3@Fiop0mQzl*t zd^4x*|NqtrZKC_`_B?w@WFJr_@tZ;bAaFb{9G>Th5p8QNGBTLIm8B#vM$!bHL)hW$ z*L*3hF@FbXgJZ@N%rNij?=M&P!HnAqRShdxRO7(oq9w$VRD=|KAhJ9qLhXp*XmVkr zyIyAre(RE-?v$bmE}2|gP+Iv6=9tPDT~rK{B!!}m=}w0YX5h(#4{}`!tFZpH7))X zkLJyqL872_>ZAZ>M32q9l9G}}b|wcLZazIW6Fmh<#AHFhYKjKp-l_m<9$;XDJL!>~J9j#D`%w3A%RCvGjCPAQ^MFbC#^k=O=Jta;J!TE` zxo3lwTeR%6x5VLq-AQrj1&I;2L^B1 zaI$DL8zPZn(k4~|6zE?@dEs}L-Iy3YiJhN9|Y3Lt1-U6(u!e9IQZcq8aJi{v=P z6ne-tupiljc+eunIuQa9C;t)JQV6o76A*i`osg{BWvK4fbpwZq>m@=Nc}e(t`+;2JN98k8c#Nlel*iTp_4&~BgPYOoh-yq!-ojz3QZ>t16TkSt?O=rw{A$e*GW z`-)we&=k4bUBI5?+mQ&*W|r5*`ZDu#czbH3Shc5?9_??r5U9^TiRM}_uPA zNeNF};E&<2B{&TL04QMlE?r(SJ4w40N{nc9{7ZhZE%Rn>1}Gvwwaby`TPp_35wFQd zPTx8kf)%8_?+??a;ON1K^t*kPxs48drDv-rT#L_u)5GW-5T$O62yx+Ap^ZN*2A&C3 zS*W_=kJ3_OiaP8sSl;}z_sIw$jcaPkUUJqN))%f29;0K%bc6p^m`bxxn@b^ig!6^* z3`34u5Tg~76z&qwoAgGfNyUKbnnSvWks1$50fez_`}TXttNr^oJn*!SSF_K{l1%)Q z1X^~%nv8|Fgf=k)#>0v63y=B^NCv@^E5qZaDODiklWghNso*B5oL#_*Nv}SEOUT^= z)YRJ300N&fe5Wo%&?HEIWaJ^(jQ<&)I1Q$)?A6P|%x4qs9nnY0SF;vI7MMmgSza<(VOYb5fi|KufeLq z^@M8C=Ca@l3XmW)W5>F|q&)#>t$f=KKvP(J;58Gu8Uz!v5{LyE&xbZ`5nFd7sPvhdQ`b8H1}+3&&CKQf10C3MgH^F|iR7VSQW> z%5mDo@v09=D#bSho(U?pNvJ}P@P^1kF0=Q)_;liZ+)^RfdYae3cGUgI%_IT?guB|k5;)z&lcVEr_Fu;{0qKY#<+4(7dN)*=#ys> zGVxM6>^&Xxp89qDug+aICzbHdWG52qBFLz)s_*cFWnVWDh2G9cas|x=UqGZMoKDfC zl8ta5zD@Y2Jf8ymC5Ab2$O~;qa$I%=`Gj22I{$BEV`cJ2=w5j&kJMtcpF(DO2N!^j z=n)!Nq=CYc5y355Zg4b_2GXiPx&nwl{vJP)dgI~OF~p)jvChxuGLzup|}`KI(vS*osL(TL+3oeUVem7-E>@LIkri z-6IbUQc=m~2cFhj*@H#SLOkWx&?wGA;KTl@a1a<`1V;uSg`>jrBV~yHH{8jy)R&M$ z%Gu#9YpJCX!(geiJRu0}AnfyH-I-2xS%{8KZ8_!9X2`S}Bj&I|fgM&><>WapCOiZt z@0yp#`v7Z>F#9l?5GEN5$Pp;9=lA@?xr56Zh{F(A!Bb>EffO{g%c-g7vDKIe0iU*2 zNHQR-)SKd_&;4F}YgxnBrpqgyz31Db>qCDgyb1=PP!&>2F5woAzXKveMbIRfa||<_ z&0{D16TM{xDA`_iCZo2{yZ8-&SG*7IEP2OIBWMv-Hx_WAXE0rX3CS##;sZa9HK;Cg zqI%s}I9Le2RDcXi&U5Y1mk1eJ`1J`@b+ofGbI4(9)53PdUHH72hf6VRuyDQ?WhAD( zRyPUQ=4oLRqzHp-5!JD4RSYF~7f@2=nE_BfeB%VjlEUL29&?$5IQ%RSb|3@<*%VG- zdv|YRd-2r!=b!1NTSs@7HRW&{_rr1Q1bcbet!x-4Iivw9`-`=!f#{iek1|sbHxj1q zRH$MJXR>LNCUuoiiD2PE#w7XRdck-9N;3Jzbx>e>9SM<5I&tQfBEtoj--5UcRFXDi zAcz`tS_m_|x44<{RQ^b;bwRc%S59?mEkG!jkM>ZE^A%wn5SP}FE`;kegg3gnXD^8f zWgfkEdpeD;IduA!9|~%E99x1keV!~c(;L^fR)5eay2DsK?}bvbbB|^vJ43J^51)W` zJ8ro>CKqHs@T@bII$YN~oKfg;PK$nt)7zjya!Dwh)z}Kf6e_p}^j0Bqm_ICT6P$|Q^lVF`d>0scltMi6-i4IDbg9d!V^+X5`~U^M^%ak(^=h@cBwa`h-=FY9UF+3vq#$x_YSnRa(S+&* z;knwZ^g*p)MLb4Bd$(@VMBySfLPRR~btKJ(z41zZe;Lamc(bP+7Y{zIcPIYak4yOv ziFDpgHWHed`3|V)3Wp&+Hdg)t z^|fAgtT3c0#H5j7E=w%t)C)iZYSV>1?$pTCFE%!#D504pq9&Cw2W%TO$Cu)B#lFBx zqnLXphaM{KAI1YVl1d0>qH845FxI3njO8byw6oGxQDUq>fsZk|r1#S^ryw>LW(<;j*!9N}{}AOxPNt`S=a@?5$Dc6AG<4XN6{7PR_Pe^+_TGjgHWKUn?~_ zxqBN1pCEViwShn1Z=&FV#^leOoliuib7rx&4HmUrZzg)DW_r^zGh1e$(Q_xF0(uMMqQ7wqU@xiXK~+ZrjLZP zU^Cg39FX$7H##ZC>Gc>;25%ep5 zCFwxLp4ooN=x+n63KGr=LZ_re${;d!{x=sj8@(NLKd2l>^t?|UZP~2ZYWQQ1T#VK+ zYiV_0(yP!UzFV#qLn&v+R!y25Pu)XV^xd?<{eOL|K?DS z1$9-^ELH#@vi~0PVHQepgfQ|nH~@Hpw(!_q(v;W4*AUe+r~n-pZoPyXkOefUvZzXw z`wSG9Fy&#at-wcdhejs*VMx7Y0M0@*Ma>-9Fj<~4(4Axq^b2cAO_(kSS-^Wk{3N#e z%%RDQp2)F|z=`V_dE#)28N?F#Sybb+bljJ_w#BQ7Is6ZafAqUQI=@&4TjM{jeoV)O z5l$|aJy|iDi`gN;eiL{s@bA*W?T{fZedQg_pOL)Rs8#nS7nDy~leg8Js<#8H@f8L5 z5KD-@t-}N#x^~GHW<#&=H%Ho3Yf~}I^eVahpn6-w#!ij}N#>tJnhmWQIN@=f=zxoU zE-L%bt4sD_3ZM7ACz4{h;sp@f`C)ZZLsv&r567r;zol5QG&fXMG&Y|{>6F-N(~=1B zN#W+R)hFVHpFVZ!HSdl%gZ(+S`E7ARWX?jizsOwS#`{$MC09r45$Y=0uuh@IxTlNi z+9u@o40gQsC9cC3feH-tpu}`gkm2S|Mn=5}ApMnvq?qyn@CiK!QrT%R7Vdw>%PHAGq3y?F&eW6C9XGKl2aBzWQ z=gtEQRo=reqSbi{!wKH&OuL0Oy&Ot==r5|$v8c2j*g3F8(uTW}AKx0}t$hAWx2V%D z=g)Wz^&dO*e%QMFoXtxe7sRViJ9=Tmmlhpcg6XxLJmF{dla!p&1IHYCw%cH`I4$qn zcJ1xjneJQ1<#+G7{mZZIQ^|w|sVvorbe%&gErw*0&bn)wL)rtpxdqXqrUZn9FSXok z51rQn+zbIo6^9!s)VZ0-M90okkIm3;Z@Mh$w^C|}<@2YvjM~+9uhVg)iHu%)_Ux&l zeLsIanC5&SJXBKE$G_K^p;kvI%?SQ7D}Ddbl~ocOqa^E(P6IWTmFlp6+AqK}PbWer$m~Bqn?k5^2aBD<1@xzET#FeA<^3DYGw^VT12KSa zz(%BHu+iOVv$uk}$@Fv23jM>VG&?!>B|Q>U!r*M*$v)??od{+_k<6wlbo^@ahS zW6kdwByRHSW@-%hM~BZGLwoBaJHsJG%Ws9$ev%qjycsD=A-e-DFVETPlVBgEI9CHN zqe|a=zX3Dav5ersl^@f9#)(xrL&Nj$A9%JJhpD%}KJbw5EUEr{dF0FW{v(%M^}*(p znsZK6Z~vst{NdzOow3`#bhq$oZK~cCKRC8QYsGAxRLZGYQK}6iD1Gb4myLbzJ;f@* zeA5ozU$s88&G1u9qu^Q4vQDmkYCg(UtWn_VILG9^@oo?G5Z(QJ7AI3SL2|sjc2f;)XyAps0{!4_@PAWi(bowXm=hj-nAw?@e>vj@lzwaEB`A4+Bd;KE@-B*(L} za5tuM;FLgQeA5#QMd|1?9e(}^lm(6_u3JFgT?-Vn-hcZLv=!w5d;$DBf-X4n1*H^W zSctqHKNx2v6@$R>^osJR`J_}%L6gqlQUE;(s}$D8khn9WT~PJ`uhFW~i&9Fm4B`0s z^Mli#^5+>!z_`q!H3|4$S?2{E-j8XlSZ11~1dkx4Q|Jg+P60BU;Mo*a6=&j|u!c6< zFyPIRK-=QJq=|<^H&(S3%ztmw_SN?)(X`}(m+g5WqEa|IlK`A@VmxvV4GW{g-C8$x zNYc4=xD^ZpRM|Dz{sOV#wn3l_{9;Gx%)f-cMOEh6F| zCxwDeOr(VhD~s&tenI0b88Z#%BRZC6bq05W5Jkk=k4i*NEwT?O&Y0}2XBnyXw|~|6 z4qJ2M`ZKtSq@~8JH@GF>4x24PZWft*qCndKdlJK;|$e7D~bYBOeQb_-#Y@bCpL;}s&A zp$?}l;+nnWv)J*h5KW336c6Eoo10iea=f=wRSAg_aJU3j-^VXsqG9;R;zj6PYbnm< z`+|QA2UCDa$sh;fL>!G#(8;CCmq#*$dkPID26liHpG;O88}Tf}9AC!A0D8wyoY;ls z5WBZ{XIE#tP(^BUl7-q_=e(Eq=03C_Mp{DoM4@RI55eGo40#?*)9y}mE+TRSc5#lTW{ke3ro$^l-QA}eMBz(RS* z{gGS}MJ=oAA2dQb5>EJpiRH7Muh^@(n}IiaUcdhNOr+(Ib%8E-&qu9?XK4PpV!7!a zA3IxHNM|1!9b2?`F&YKdg%dLLFgW4@@rtR%D}7Zzn7EPN^2Rm~Uq8wflBu7@-IBa} z7`dTskbwjiD2LES!FD(j5Kvm=yXVt8gfXw`?6?WM5cHA&?JU+Q`pR3N{JhOGVw@}T z4sH+eggb{N@lCaJnOtlmxaO>?z_EeQCfX~N6~Qm9gROGgQM+-Vz<@-wK>l3ENF@B% zQrH4zD+iElW!tfchj`SlADAu|$??2-$1A6$j5rc8VhUSh52GZY-`y7yGDaA3G{OB) zRj_$tTW{h#L4OrSle9DO!Pc8}J;p@|w+&J@&EWu@no2=5JYxri-?2LU=e?xOd=z|o zg%wIIk;#Y$OuU2}_7zl3_8UTBTIi?CcMx(9IFj_^-~%s^Fg;_j=?3l;NFgDmIBwRk zjJ&*8DcjPbM4AqZDjHNR_x=4LVxs{Xgk;C(akL+A65=p0R|%lqZBT5X0@Du2f-^KK zpYYpU&oO00)M@VAxnY2TWET-Hv9gqV7QC$}8dO>iE=&?g&)~g>bg%iux8idMz9bMa zZKNeSL&3;t)#b(UxsOL$|2QQwl!&#?*BXJPNM|H-3uKr}SS$pxbP0%B)CPWG6@O!( z_A)WK(1rp@CMdE9P*fR&Jh4;)7bSw&;)cYD9R!KnT!dB3gDyQbel%i-3b$A$oA9O6VcO8o%5<5Hn5yiF!0+-a<|$Cg zz9fHNUR#wt@$hC$!n|F$Vg@T#kk;>+CZB;fJl_3}6#(3v3Tl1eXKtA6c2;29bstsL zb}(_E*H8(w03-Isq9II)Zu3}7E;HJ3<9fm- z0vgWh?aT_Bj}#}e4FL5LZ$dY~EQL%jGO>FbVrw@Msk%V=!uP2wF3Rw+cwC~3=BrVg z&P4{7-@pUq%|XQb@$n};oT?R#jg3(PVq*}fJ?REGI8+OU%Fk)w6vx=y+#ZTQEh!iv zsidR?CDJM`7IUpvoAQg216p_P+?h8x1E4`ySJyf(02q_NfHQ~^2TndG(4!d9k@{ur zsAMAQkX3xmlCkWe)&K=C2)1ep-5a_U+E?)p0n&sD%fxIo$5Hs1+=1cH(r98cM_K$k zc_w^q#(h}Uh`$F~coB+9b;E~m(Q90H)=6T$!V72p;a{v=jMy=4hI1LmS|%yXFvI}i z<3~J(#e9#6UUR%3SX@fXzXk`*`aL^gr7v}?$Q@WGFfd|N#mVPKJtG9mON9tSY<|rJ zXKG2)Cn8F2GT~(+)+vBJmCU{w!EAx#OzIM!FPucoLm#c-3;^ZPP?f8J5{rQov<5zP zC!5Tz|KS2$;H(Sn5R3>#gD~0qp;DlqR6|n0uWbk8X($DUVg zMFfk!yV}gm?0W6q+X)L7z8UFsjE1QC%Rl!j!d+-IK?Rf2!|^Sd;(pn&--nbGML@=t zJAQN|S7BSOw!Q4@CikMx8yYoin30%h)@1J)aI@J8j zmoG5tu+skFniZe_gJ0iKUtj;c`o`V5*FJ^)`Z5XjPnRz5(zP__oL65ZoY9I3*>D2L z28s049&@Jo7<333%g1L3i$Y|q#Q_IpdjW0aAUgsf6Op4<1{8h?{L~8n7*J4k)Ay%p z!Tc3&^FK>)u?A6yu-v;0HyXdEUvC(_{1P^B#9f}! zoF7JZpTwpi=0j-)8WD1g)Xh`7(;$FoK(OIGqH#cBhT!62bU76twJdm;QqDFi5ZPWQ zF%c3jH&F~M8B*(EGrDe_*TV;~XmAet`>Vkjr?B3d@nm1O!8r-kWik;necyp0E$fV; zqK;4m2u%d@Hk;(B=8~#+f6e*!_3K5ZsHkuci%SuAQ1S_u1(Cp7vhq!$8nt0&PL4lB zoN>Pj)VL%sqoT5KKcI||1R{HisVgz00iAYbt|;eUv<)t<1I_Tt=|^^ z$$Sw>>M+XDtC(0wPfbBZ9U+SvIOv|pt`sWMYO2tSmaPeOfD|wL?5IFM(q(#2vDc3z z2JxMG45x?Ibu@1or(qZY(Izr-6ma#ax;@zobl_4V2d@X@%v>m%fqVYVkRQ9gVUur z)^cA(_5@|H9@@5q^w7pK%N0I0KvIb@|C*K)gPkB6O3{Av2LnN`5bcTOPx?%wG?V+P zjF~{(WV%KYM=hZFF0Y_qb{$4d@x`G4X=8%-MzM-*A#;R%|6uddP*o7e%9DSc@N`n+ z??KeP@pugf8BJ%w)vG5(DQZmf@whkK5qH3?}h{A+cp?j`lPc zisWYdE=RAe`f~_pKE^e2IXb$7)ran{@LFhg(ZhVQGyB}_cx0-k5BkgDw_pF zK92W^vi7qTQgRVEOmaA>EGP6q@(n7y-o&pW1N1RJ?E30G(U`DF}M728)ygJzK!hK5^=;h)A#qpZkAGypwUo@ zP)4v!=QKe5L7P|-7^{_tp!tk2J8ZLeX3lL%62xdEDFl@KS7lh^f#F zOO_prj*hleh^yTsHyyZDHix6Q!(T@{j)Kf(j^l2Ztw{N_-rt1+OIureG+h`qvKRZB z?`=+UhGHY$ymq6G?_r@ew@YF@WF8XMlDli0QlI6Rr*`&?ola~*w84}CEO0mP37c_Q zn{4`CogBG4V(n#8GuMKBl$5p&os|f%8C-rJFjbVd$FlfMQ4wNS9k@5qbjz=;%^9WhU`uf6Mp|nGlaDx zW)2wOp-aWo*~o2v_|dk}41E2*rCcJg$mRftmJ}*qxyzz#fKtzBf+9pR}Qat1XHmLlLFxTpC5 zb@fw3-BGsxwzYkzDEW}}>AYJltIw~~ySfH^ocfCL8N`7o2`^8gGr=l+NE)dkvfub# z*!c*MMT9rUYnW)kqm}hs5|*iu0X3?9?<%nIz6sL+VT0mcLZYQHU*N79#te_*xoOLm z>j*4hCJ8R%wt99iO*I-0tctM@K;!M`>v66-Ms=T1NV&p2n1%}lrB+{1PjV2?Ia+2r zWIyS+xJ;H7%bk_Pi3SrpBFt*W_D}ssmI66y4?RSxl|!wJz`_Ais~FHW+P0@C&a3%~U@LEp6~7V_bF#DJklWyH9U+Np z=FHV1uW;2k#s#<*T~6S&-1*|!vni?Cci|VKg}k(QWx0L4?}{;$`C0k&Q;4#ltZe!6 zL6h>3EeI4cROMna!gffAg}gtM7A+Y2U<5tY(WM8ATT2HrVy4r9M;KYplj11RE-5Y4 zVVlB*3l}VGY-HKD;TR{(tKk|0Ug90nvXvP%iTwFtg*dSNO9_(Sa9X##PZhs@wPzxI zW06l8X{4Ak1JDk_ogNSn+-Y-^iwR)Dgl;Fb6gNeLY0_xYVKROe?Hv3jAfJx~ z1&2L6JU)c0yUYemjr5#P45O+|?0zry`uu)WBnqOEGr2!%^mOs3pm&bgks@2_E?mf* zfBa~c%XjW%N7Jn7mkRZVt3Qeia$$B2cpX(s~6b(8mY0_8jM-c zRGiM+1jg08&9y4YMwi!)u|c^@@%QgHHCDgfqSNDt6{R@S`9^^y1=H9{Pq}BOZidDU zJqkkE8Sc+`lT(RR47OHL^IBlHio<+s#Gx?zq9(8>8#SJoH)$YVju@bL`M(k*YDH*tH~>mQRV|iu}{%3)hm?9 z$DD*B#@Egb_6y{R<9l2PxP-%3Jqng5crO@8%{)ekmuvy2g&(b{xh4BwMQNeH$f0TX zrLvbr7642mR{!&tYxFeMz7`d=egs0xH|sNYY>#c*N|&pIpyLGdgUwV+)4sQH5`7U# zK&XkpXwu}^b=U=&PD4ZgOFAWVYg!VnDa{N6(2nrDF@^@KrIT)}s3|VJ2jehahMa>0jE;2g%O8cAuQp(3A!~j$A=Ox?n+ajOiMc- zAD^s8Jt}Q1Ze99xG&f(rrZWH2(XbE{0$zF|(`8N#Ym_#VxFHRiO~{H?EwujFdDNrO z#vwGfkX{7iR6Pc3P&t}3Yj&9q<#GQe-Mddn<~Uit=&`N$jCRxls9VmSO|;H;vhI5H zuBQ7?UM*BeeBT1IttGQbK`u7B`H8J}axsBpiT4Awwec4inwa$LnK&{6uaP=$Z=dUz z{cg|4JWE1kWqTRI9KUvLAVAn&?U_~tP^w4RTf|%eCQ%ntlYf492V=f*fx*FXuxzvz ztl)YaAUlzlAjr^3?Ii}w$DmAkbo%Hg8nF!tH#%BmMSX=WB8?YsT?ha``^az~$v!P= zQ|t@XP2T*~xTo#-R%JmUA!=mXpsl3DXTWIr3Af;~ia#P4hYRO6p35)8Nmw8ZEkEvR z-18!(a7j6FA4WIzCtv`6hQcPH8^*VN^`1?E95N_nLy8K%@Kd47Wd)>BItZ7Jzthv9 zU<92NR5DJG&<&VKAEVgfe4$A`!N7tjEHtf)7v-w#Z=pDm83D;bo5I-A_!S`)Tzav} zA;N!{_s9XQ~bm@n20;GC9Y9Bgf0mTsU}6gbZ{>N%L|U_aw-n5GCEgmQsiKgau; zyFe{;k@5F8>1$c%$xaE%H*r}IZwZ% ziCrN+jR4zh&57aF2j=^RWNu|fhRTr%%Fq^ystqVt-4}4h>))C7fQ=de;m?NxbEFF$qx;3x&36yeDTYPMoU6!ZY$WpS1~ zx&GF18#%`e_%8D4Nu6R`%uRN|!hmDsylv7p(l*~sl$j)mKP>XzD06u-e}TTNYSmNQ zc2ep0shV%ohat5^bP2imHq{8ya;74yE1B*V5$@iThO>2t8S z_{qwDSKoQLsawiXo#3My_o(m_Ow0$*nc++sYkl>2rC}`$PK{cX(r>=G(y&@1lfy#0%DeYwyf7p7qhxka5 zmm}^BDF&-!spp znCtDQp-0U+n-NkHy*ut@qGg>PMiKQC>pql^)EaY&F zbIn*62c_qSjmd!_kv+x!2B=w9@csOf5(x$990Nse1-8N$gvt#R&p`S)|AGQ{VyzF4 zOx0-tWnG@&QP6(G2$#+)Gxv+|ewq5Rwr6^3z<6gR&N;}2j;tR68WtKAh%&2$3=Sefc;DN4RS znl-S2SE4babj})AB6J!&&jV@F^6&lPLj!dv9_lnyyheF>&gag(GipD7!~kW?_=jN z0WKR@OHnZ!@?v@{39oJU?tiAL)&U8w^yCx_C6P-o4PkUe-X|Q{UHb;6MDYPja)vWx z{O4p;-jC3oyxtA0QTGV_CHl}bep6e0!o}f*n$%|M^HfzfFDX)Nmj2s-r3yIWVYg)Y* z%WfeOqL}AHW0C|C$uN}fOelj6n`z0TV24cIwAjw{9jhhz7#EJN8TgZ@^6&bsZuduL zywYOv*nNH=9U%B4b;wK4E&%OFU{L92EC#!AUhn1SbIaGuqqLH2h5vWTXnE2<4aiL(rV5L&3eeTnrYg^ z(N9@fw985qwUj7#`2R-J+y!b|Q0xC1a9U{wGo9Brm#U4pTkFrdSLXt46IX!|->g&% z;!82J-S%zU7N321y^!ilZXqSwKSNg(H91Nu)Hi%JqimZd6B$bRb(q&XMW_@*#+B`B z0wz&B>Wp;~`;(LZFU0;Dpbr&=76M8w%LO9)WmGql;)inFv!D5y1QRa`9oFF{KX`NU zYbja0C%W-(XB(73SJJ8aE?suOxuye}JkfFg{~uagKn$9H8cB;u2sqX_n$loM?GGBj9}VEur{0&vS_G2fy6(C+x2rh{pT~h z5zHKdTRAJ8aCQB4z{^REleXCBho8!C1-nJZTD!dGn@2IEH`^3E%C+#SFWym3(>;DA z`uf6J@;!Nt?FyhSKf;2Xl@d0&`o#Dz`LpE%x2W|#XR8IRQNQO@f?O*9UH`3@^C*L$xf;K^SG(k<{Q074H&yU6@`$d9lT^^y|-`q7LqlRRoZm>e`pbligQR#lc|+7`x&CEgV9LOr1Zgx-Ejq zAd*{ZX0zZu18N5fy(>pR_>iB4`N{1{bFwNHqC5F#X{UdZ1>eC;Xz8&M#To7K%^gU*Ly7kujDqN`?-dGfoFU1{}VaRH~pKriRTcpjIasA+P!! z(-s&lKNHpQ()%VIIaPR&WSn^gYP1Bve2xgej`hlcO$FIermYshdijQ%)Vtb=`op&P z{)O6z)P#ltX>VxlQ zZ-Hmd;oSr~SG=DAT|V#^XKXtR!MLhW2=SX7EXY6v~GU3WA4y-@7L7kIME* zn@2GlXtwX;Rll(e8NpE2GLCN1eRP{6Q|mtxMKKu)Y;H9GAj-vZtMP&%PAh zwBj@KXagaahbtzU+_x?{qtulBtc{HkS!StosRo~(sT)5ZN4Ozpf!w+hI0%#cO~*rn zXS5^uO?Tc)J3`dQ@`oy*)`xLGVy*6(Y?IIEMP35q9?=^qfGo*Q2-Hb9{W#6qVX_lO z0t2*@-NrE@u*B1mf@RyR@|44rN${S9&!7N~CCYkHmeIFJ`wZg(gsp)QGlrIPFG~#00|J`$GLjEgm8C;CH~7dIBsCf+bpf zI?<@{JDI)#H{tsT|AjQJfGlF~vRlYYPl|;cRODFtc%6{X#Fa#) zzLNu%^36o#iN*qm^wQ&_em38u2LFZeX zR#SbJCydJkejrysCM3zLZ+d%J*8U}~baLxC)}EXvav_erY%>%!4^te0s<`2q+xyRu z(ujeY%m)D@K?-Ys1_M=q+FGGE4}_dAYb|IDKVfwy?bk#0AX;isJbz??U0?7xy4EI~ zI<%y+EDK_Q*c6Mv3%5!!w}zf0I&>b zRhg*HXj&jv$@CXy2uL4L?OkT0;6%{)`tf&xZ&qrALqz??It5X3K!eD9RFJ^$dk3ii zW+ly*)W2LQfqdakVg-t-U@Dj@4(OzNHl49606;;g5vaEO6dRNj7oXTOjZS6WAc>Le z9TgO2;X>g)foL-jp+|bo6K*MrRgfQe3F%yQdNEjV>p1WN?AIS!CD5I6B;EpcFguR;KYt9i5eqsemu2>h^a3 z932_C246Oy=>^M{y*C>3^z@?=&}irYSKzdjZ1ZMlD4XJ7?oxBF2b&d^;px*;aI>i+ zffI}dCMK@;m!6uYZ$A(cCag#gXGZ7K!i#H=@J5(yGHq|RZ(>i|ts_DEIj3|SAmqYL z;=FOoyuXERqeeq*8JxOpu@pV$&n~VA)%Mqx*+lV>;aI-CNtp3I{G+) z;qVJCHrPEiCkIa$OhRqpqgE2<>m~<{_+-z4hsDQE1XKJPes#jEc%$JjH&uw_1wa&H zqcEg+3k-5wQOGMRUjo{_xjf(~NKZP=9`Y?neUzDRmoK==)<52kxUoTf$!jpRhaI!R z8P%Q+TsRKMW8MTc{!>6ZT176$-?1CkGEQf8#4aYmJd=Oub)w0pA_5koC+~rVg=ZnV z97e-T7KeD|xkT6DG!DX_AVXt4@pqHMza=KEv0WfhaRRUzrJjm~Cq{7YnlL{h}tV<*iDIaFcOL8udeq=SJEUyBI zrht^7Q?lVD{w23JCkaDVVk-m}l8eZ%8R{KoC=W{%63qpQ&QVKvganO}f`Pb5K+|N! z2-6jDRYa96v|om=y^){LHNa>B=e$Pl1RDq{G;}B&3DT_O*VK-gE3u<%i@{jQeq~k; zxn&B}X4*g)rD3AZd^-o!=-7a%M^mT5*~dr)z^slq zjS|eP%>G5M6{lw=q<`--?FDIp(LH<>rr^v5rcR&Ugv8hn@*uohf*i6}arjCwQ64hn zSCq9YJvzKUfg<6O$hctco{ev=w-t~U7hDA)RYMI!%wZnrs2>8Gmlq5^{wiPD&cQ+a zvzhb06uU?gviKEK><|Fkv~T~EaP;;2_kZe^$udRS5P!8L!09E@xw_ehb3`bK7+kUq z@9%lP+dHGSm&%Ye4Y+l+^v(T3##-zX>b0?$DwJ-`e!>|a&E1EHYHOhP0HV-|V`6=_ z{u+yQd10QtZnAT9kn&{{5sWBIYL(&8-PEr}(Zi8db~+$~)UWA}WjsYOjd`#L zGN|ckcRKMHm)$pc1{{Oy25FkJ$zCSc8Ja$v(NOPZ7aOM*b*t%_3JsBi_Bv9tdL;3ict6HVyoA|0Tc&QI|qT^{G# zMeNFg7qrW<-~bPJ4g^Tb9YSSy%_TJ)=-8`s zy5Yc;|Hg+WBefQ19r=C>&2!zmbeT@!D}z~TgOZW-<`mtk_<#C=XbJ)#n3oguUYzRmqL*1<$+Q&eL7Yn< z7V}xiB?LSij4Gl^#$2@?eRcBa>J3_Nk8UB@0H#Fjdf_wXpTzeGB_>2=bQK^d1BlJPb>KO$kt0G7N@+nrQb?XR)#8Rx@lk=) z*Z<=$seB;869a?}!W?R)aWlx}SE0agJR<6ic+tF+P*1*QIAs~iVHFlDGyf^hN?|qC z4zM_OrI=m2ef#VAe0K~eApU_K;s79w(_ovzztLII0g%}!!ey_ekawYV{px|E`C*c){fda!1SUl@^YY`5dvd!BQ{xD>g zJNz!8(^2BUZc-3yp_2W&(0)62KHDhSp2pDHaV50*<_6_GZlQ8zlmN*l(KY4smoF+Y z%MKGqkjb)dP?e{T-_0CeJJVSb8;C<=r5O`3%#8`BS0(gPAtFAqk8&v61hm>0&IT7$ z?9HheNee+4`7nOW2BIpD623UizIpC4X4G^fE?igYKdh6Q!;vJKlY?X_rkJWG&Uu=Y z%I*Y8m$o@A|n1R ziw^%RV;|M1~$V4lN!*%P_$@oDSDJtFH@o@c(p`IE+v@{X#4 z(~9 zw$>BoE;_3Y&GtPkz6nJGRUmK+>9wIjP!R!~6a=rNN&2g09w6RJMZ{ z`hj}J0eKKbvRrJ40+<45?fOOK&TE5Wn#nl!8Z%Nc%c4^W8q4?2jEz3Jt4~XI(D|tO z6jhdg1CL-*ki=XMi2NG&Q63AEq*pnbXKcXKL5L6mFcQ$N{Q6XW5|h<7$Wshh=*tO^pFy1BWK**Y$DNNaFC%N} zar_F{Kc_r+Ff+3H={VRDy=4N$nK&Ka93CQfK{m!v;C{+2uPIDfzBzth+Kb{C;;PmL z{pW9cXpPF-Km2%~L3?)o-DrNBb^{DHv{|h*bo!A@>NMg>dkAv4rxI5o`5!?2rlg51a@#!O!d3rORv1)eqD}iuEJS zpKTuH1Fwu4eI9&v@Q(qmQ9sZ6HdIhhFvBm=sp4z3E@qmMS(Y<`=jYncg5EL+(mSSI z@)y2X>SM>=!g+4RVxL7c^&_=TZy)DDbiK!IoYJ>#%hs*aI=o%~ew!NXRxi-RsgxOU zXmoDI#?GhSRrCm0@@Fs;2`eZWJv1#RV*_DgX7(2S`r(-x;c0%jo?(bu1()E)ty>AW zNGzN`|58}kxS^u(z+M&ajV?UdQ!zj?F+B{!;2UKbkjfj?GCB6%1DWKS^q-qyxIC9jeJgSsf;*T{1 z&8*DK>-X+0gp*K#r|=?u{cGquhIDCRLNVlQ*1?5&=VAuy=iS{G&!2w+7~$u&K29u} z2T=9n#%x->dZMA9K6`m8$j0{|zJ3Y>>o$RYPaWa`9QfxH&-v^su()EVo3*SQt?B zb4GeN9Z3oa$#QgelZ_i=nR>iQPWHjkC6u=LyqfXR;=S+J`+HxyG{O1swdI}=P0buOTzq0GR)LUK#B;tt965roon3 zf1@?&*rdUC_C;(YF`pmn@Zh1L-ygen;`Mmg^fZhY zcyW5VlAP2Z-@jjf@L(}?rkk;0nHHlv9GrZQjK*(_gb=abA4bR`jxip?uJmeGK-9eN z+?mhF7EzhpMV@QBgL_xsIme~U`eDCrlxsq4Y#-OCt0FT#`iFwThjj-hPpqn{YSw5E zuoiUugh!8da+mJ|XmP8VB@F3$ zqHq;ccGL9<4PAlzrrP@(3%pO++uPqm1JSWlr@{Q2fB=1xLOhATW3zp4;^RFpUF!2G z>>)3QAh~P&c-fM+|G)uWi1FqbF~I9*u3o!l4KcI4%8>`U0Wg)|1{cpA&nfxU1l+lz zyw`Gj-mWk4YKXqCd>tHFOiWD^xYBYuj!czf>Jf9zR@)b((*)+DTJ^DD$Esl8mEmTa zLrU#K&!0Ot5Bt*K;NUkYDYr2HTL_=y_1CYrc}Dm7{5*bOSKVzAt|i#I3ty##o6 zi z0l}!*fu}Q-+R3$KcypO&4^`mVr!D2%$MH#gc$A=G$44~#zw*xgr>QfH@#pXd8#k_~W#3by_xpnKQSWDb%! zDp~nx5C-;{CUsMH(?)dCpOhl&@U)$YkOg?G@E}?mC;y)xO6?X)2;h46zHa-adY;?N zw8T7S#6G>?ueq0<`jn==fb9t|1j77Pwpz=& zpT7$6KdMLPI(GCD7Gl(XKDTzFs_7=cJfc)G`zpfk2Yr2P)eX_HfPA3HXkWn0CPXjX znUiCMXLO&`=8_F6LUVsdtU$)#*;sy=pcyiz%49OoV9VKu{JZqs_VWqd)tv=V7%+%* z`ZLpQkd)<+r!*EZQyb z&+@Ra)yF?PupY&yVHH6q56_r6v(ju1yY{dV0+JJl$~^zU{rg!)qZa*Ud$CV0mskAy z+}YK&AHXi|Jf{4JbIg-~%}p;H+c@|Z87L|7!ftu3kmN0R8Z1tNSY7Q} z5;!%Kq#QB$O%2y21oWB{@873Ty}jf(LtWPZa_|g+m}Hv)53;E65W0 z5(tFzG3=i7W9PVyDX;f87UGY0j__IE6t6#&dUQ|r%`4gMQZ(*9TfOW1Dl(swthp%Z zGb8l)!lf7tgzUcWqoxh+)ih)GRbt0PozM{4MlM8(mQ&ER$EE2e-Pg-lhI+3Nmri^JL(Bzq4d&V2ZXE%jS4{PV#JyASftERD^Kl-peV6 zk$C%lSXcC3+DD}rF2lRpt*Q9e*OnoJC!3Y?A(EFrdQ9V9-oNj{6Wu9t*`F>?Nl8gS zD-l;eex3gQq+O4A<925>?*J3OfWXC~U_F)`8K>Ul=x9_^L=FoS)9$8OTtySbVFcF-#q9u|!*6xR|AuIXpaUJ%v12%_+ct2)^1oI*vA{ zVoi76xwHgRRv0$>gEhv-$2mQBf?P;D$3sT++^l-<_qnFz4LdUS#eZ}tjqa!9tA7`& zS1OAN9=Rp#jv79-2;YnTwArWP?#H%VTrRucMYn49hBWjQ8Hh+oNPIB~BlJpb*W&Xkjql8tV09A=2$=6Hg(E%Ww+m(2!R#En+d8D-f)s$||%FrZ$|f>o(^{ zcCqAj!DQQV)09oWuBN=ayrxF%_CB~sZIAd7nwQ7X$^cWeg2Y}Y z@67q8lkjd1ODb73uW9#ObAU#HUc5vzZ;zNAxG6MJ=T%#e*TtSe_kfb9)y}ss79;t2 zSy@%<#T`5mcp8GXvkmR-?J+Si;BRjzCQaG+$;nAcw+Ie7pIPtW#>9Z21K zFlkZiiE{Q@>OlAX;_?S{xdIfU+3GnyP>HMkepC{9vD}*+c<(og%(QOf{xq26aU%h| zD^~DmeasF#LdCQzt8Fu$AeE3U#Cf-kss3z%^Jr~ktM+IbhZIZlEI2rLM8{6?{;e^k z`IH%p^z?Mei=9w!a9Y#O^TCa{%HjuuQQXhrcHP3JYr}a}Pma#^dN6CBYif>t`w|qY zwUHq1_N<7UFz5?U-8c`b=;?Y%h2;7^$tA;;o?Lve$+{SY+Rz8wLk$|3JV{@uH z=f#s2^Tx);MNcieV)z@6=6wkyj`M6hSl2?#EiG}8`8XVvvjC9T z^a=$6<9wL-ROGxSox)3Tdn=iVdX8hp;1sR7?u_RqPgqxPfY-W_%DZeN-MrulpqTiU zGj-<;-p~L}61ax@B@W;~8Q4K4m?QoO_y zI$n7>Uit!@p`LS75qRR+jv~-kTlJTouH=1Y9UUE!9J(T&XU7Ju{>|Q4#JA7Bk=0i& zrvxqbB-R7Kr=+BmS&U%R56LEYJn0)HmL7w!xe3t8J?ZpM?QH z*TKO76a)9GS-b(=i0aB715sds*ZEq5qTtj%=n0;z#_R0_d5^(k`V5_$%;% z&;Vz#I`C+={a-)OdtIK+nAQ@rxW1<gkFcVa!V72QDhwHF-c|e7L zun2MW?Yj6wB`=OKY269k6Wk8hZ@Qm8R#%^LS&BDJ^l-ee=8w}-RV7MbUs!>A-}{Z* zd3$#IEo*OYuPwkg6aZ;`w5W>31(fHNLxX0H)di#6Y$I4~EwAE!2-VGZn-dkB%l)9@ zBsvs|mzzQNMIF~i8Ra9y0AJl~mfD)Gt+1YQJ(_Y-juU#>9Ve`RzN+C{Pf~3Cyizh% z+J8tO^M#MMSqZAg$^MUK+6%(C&!$sMnvv~MOP3d0mp;0u4Yez}nZR zmG=SKW!F|7Mi(pdor+()GLb2Y}GpPoJ1A3_vT#)h8v*j+rK+ zpB!$So~#v^;;HM#I7vIPYUsTDQf@WjGY2&5ip-k*@$^r}N8qrJw@Gf?fTZ3JKIyXY zv;$=@J(m$Jb=sN+dI|v)V4UP7|3hFOrF3)FtyExg{ zY53(^B1W?^_ur@L>Gz751 zej=k=S(NB`@`A5sUtPy-qpZu4f^IywG4g;uRBX3;<~;w0ylgF49qbx?`wOS%%aMFt zLl?gCeMfhoM)%*5zZ_E6&~+G6KLuqPuBapVUFKdrE-~o>o5c1at(x`0>Capgeo$Oa zKPKVoqGbe3g8p$6S@Cd*L8DIqjVtqL8=$<#hBw#g1+2yg<2De3hBPkUKg`yJ0<{GV z?XGzB)iqgV=UZRwwfivO%pHi-oy)1gAcY4mob~oBM88)ts(z>4;!Ins&1} zv8_aId2G1>AVYxc5eV2=qf=iJP4?u4_izRsakO#BRlYjlhqNSYain}t~=zE0}$B|EuQh8j* z#4us`j_*A8X`E-hb=Y^EypEhM_mwZhSi1q0j*N_GXlT?Qe+xQ4J;Ge1rU?a` z`hi@_59%gd%*Xof5=a03L#AH@!`rs^{KhKVgpV8?9CUT3mitmu<;xzvO1>rIpQ}~I z;w;2K-=;9UFa5(w-tM=yj}R7RN?E3bKrt55p!13P^9cZIa0*SP4JnjStYlAu5)NTx zy0R@C<|a+)Myo>$ngoT5OM~s4^oEaytvbU8ndj#}I_%`;5w?$N0Gl;aWoNqmy}RhfY)(A0Ier^6fmagnU$2BucK!sw{_a2W`ZjdU^&W_WHVEDC1w}j@Aic~Y@-UaI9wkit}!bF99d9%sC6RI z_5d%;q9RS6CR&(D8TFG{aq5}XjrcI8U9*f-Ko*#81*Sa-K=QvLy$v~XOL`DL!) zcDRv6nn#8$9PQz@ftH#HUmf9o)qL~Uu=KWu&ggH&6fz@&s}K~jk`kI^J>%HP?>zXQ zx4fHGH%1@>WrIjP07W)Nt1;6%Dbk&&p6&|{n{*8z^kkx*ECb#>ZxO6Rne;r}XbjX! zz!zF;sC+pOJTPSf>h!A)cF^e^Pc`npN;Z3#t`lf6oTp9Zj-#9)CcGB-_`YF+(>ZZl z+(#yq$9%~u%oe``C}zd1CqW!=Pf+VTFhb%WFTAoc;G)8-78WKbwzjk$ z&iW~G)@M(I#^L2z`VNDT zC^Cm}Sf=i`^WK)FCol~$5gD&`vUwl6yrzHY+Omb-hc86oXeTn8OG$avA8&6zY%d`( z5^ZQ|TE2c)KIFBOYg392t@pl53T-0S#qzhlCvVDaD!oG`PL`eO_NZrDC~e#U2YwiI z5a0Ps?C0kv1vb$?5G@OUxbUN(3>?Tn)i>)dsGQ>v>2p+gihTWFhheq6h1Yq2~+ypSor5YThC@TjCzTT_TbWV>u$8Ckmi4sN~y2N3oM&T=CB}>H0V%LWw_?6|K)L))& z`6d=$<>17N{Y)w~>-2^o&bs5})X;pLDxT+mp2PiM3X<>0ABPq7=Q;Z4ER*byG@ayI z#BN60?J~gIA28o|Okr#y)gb+Wcq^aOO&Cwai&z_=7=rvw-h00ju? z_FS{~EPjT4qyCJvON-16uhR;z)6mP~&=p>}z0&s^XvV-G&V_%U?bqkEW0mcJpB`;_ zZO=B&3PkAGVKjrL*Hn&zgQN{K(rU7DCy*)OTHR+}M|mN;;VGgi@0EYQ8^9-Z&%V3` z805DYHabfppW^K+jNKzw9S-h7zTLk%9HOyeu@CdOLSjTbA%t4581AV(kgecWj=A%j zoTdHM@#Ha77G4i+&B@L_!+R={eBM!i)-iL|HDhmy3lv$Y2Q61eX;eXu<`!b`Sm;NbA^ zG$8wx8M8hjgNw5tfS8~e0I*J*lf%JtSL2DbC!>zzmpS#qcwvu-ta5=51VKc!b{rhW zJ4!)(azX3KkIE9!5-TC1o5yX+o~XFwTy!5Ee1290((vU@sFy+_lgss!W*Rnq?~#+jvM2^MRjmgv&Ag|G5xXWR8RSC8cdM_ z2xx(i1vVXvNtR4({v9tcPc8{1Ru|&4KrxfiaBq!#WUrI5mqIXhIA0 zYESkDlxK>K<=>}d{-Iy4uWH|Q;pU9jdAO+zfk4U1$_lIi3o9!Kq{rhH1@Ug1RSh7P z(|Db|oXyV3$L_zL5fFb}xzYi6nf3?O6LA>r%z*;K?{4z?40u^doiCB1RO za;$g(+z%6EVw$*-1lQH9m780w+e+|(eN-KGhc=;m{xW{o21wrP&qp(U= zy1o#pj}HbYj92rt0gJCQR3N22NQ}wME1~&_7|fDYzQgnIN^ZXo27P(f=(O`IdnY7( zuPG|piO{x2sr%7o!=a1Z2h$5|)zm}~^8w26mZ}zGEQ<44<8J8M{&k2zM`6Sj=MW6K z{PNTa;)hM`0qOR7Nss3|U;V2;Z2a$1lp6#@PwD7EGG=|@TC=hLX)|UX|g;}#%>WE%97{%pl%XiJdl~-$`V&!TDspVdBM$Px7bN(Q^W0% z{v($DIZM@q$Qt(@So}D*eZ#`S0uXI#kOfXG!M?Y~N|<`VF&xc!U4ofjNamGEYP>T7 z@;lG&y#E?D0Gs>iMupqKD*6plQcqwt`shHMozKNV1!%dZN)2r!NCy@`iO>|t+S{NY zOadCJH1w-b!&5wMVrf#E4Z2hCTJBY*2eYQvSj1pHsjp+-Ckx!NK5${6lg7&|nmY=s zSlW;dE;008R|WFe@7r=;5^V?;oFb(#YSylx<}ky4mu~PXKg5FB-W;G z>@VS5PFF*SP++-nrgV@>LOe0*qSe&2SElcar{ zXgLScZ9rW>*x{^&0vsO!+jUi&Kw_ruXx=5DkLJB=X*Rm0h+OSR2QvOlhViFM@lJZq zjV{1>fng^w1Lo4tei$@zKW{k$lB!rx0vONhxS7_6xa-WqYr7E>K+tFUyx?NB!1H`f zpHr*U?CbkmD|<{tfsMYHfE7ei{m;6t$5RMAE6q!7O&esX!O@~l0;@;?7{7RNM@36Z zOH)%*Mf>!iY_HU*YNsubMB&;twPjgZch-CwK!l8Wbh!lvC`sj_z%yh@p5NL27Q_jh zQYx!PJ{lN~`52Tho7~UI&dJ@A7sfVLXQxY&cKUXT0bUm@Hs| zHYK)i1A_zX@?|incHAcB=K@Aqj>d%{H}m%?gva*}a-K)kGt>_0lmeEO8|4$LYir(D zqmGNSB}qxM-Xt&zxKvEc%+6i~oTUf4uB8|>kqH0$zTv767;JTLH%#WYF6O-59?lA;2S|stZZLvN&1a>0!yyEME8utV zRb{v2U!wTWksAj)6xm|nd}TpM24~G}FE7psXvBmpM+-mD%K?cD*fYIqConO#SZEIi z17T3Jt1*xFze~%VwnCFgm%T;f$=42p@ucj50#9sXD1RCVpBZ=n9wk_?;^lk`Q-bqv zm3rdfCSYoxq2UaAeG80~DqBuL_FvFT z|7YuZx2Vg3IuRBN3%QukshA;hx4b8$j`o`h-rC%R%TnCfaPlW&GxIh{2jTL9ahcu% zw95JvBRRJZQe<`Q$HkE(YtJ%#t2&fj+xb8}zYaM>|1bkjAKT$WlYuinmH$v7x<5)U z*)-he3Bd!zU^-(-xEOTCZ@_>%*N>tS7tU)SJb2ed`)G2jMy5b7+D}=cEwWyr-m~UN zk7fA#b!fGd+T+jLb7Dt2IdWkNloD9ep*L=aQbnOiLS{*$MppYCAdpC-w6yE_D6@CS zp$)=?Byd?%(qs^-fJtJo8ERz z+n%RiqQd2e)Ii88WTg;k9PH6xdYLd;y-6)?lxlP(L6F&jKheXWr0llUx&D3QmFB|$DQCT(l}qgDEf7aOM*I- z28Ti-c)Bewq$2G=(8~DGa&;{$fAI_1$_(u+lcZrQzMiu;nA7LlcrK8bbe(iGoFA3A z@M@RaZq??|C>@ilQY$ZTpyttG*gHQZbuS+gfusVH<@M=lMaJKrT&2h zEXKVMn&5gAd4xzUNulrt{yMERo(@(SSI(3?15D%*E?U15ck0;AcnL#TCpQxEO$9SR z3mK1KaJbtx*pM)YK1sfAeS|O*)08u9j&s*mi?T^!fVHPHeGa9<3w|AFD_fU-j`tKX zIOP5w$?S34y?2u_+1FNmyxuo!_wF(Jq(hi|uVVuuEkEP;Z98%bXKSjUYlm7*Fu+zV z5n0|!7v%lYPYGVWk=c4at@X#e@YivxH2AfW&?5a~ouLOHn$g*Y`19)_xdf|>BXL!ISuCWgBT;lQN}so@m{wM=N${ z@Rm13nZzaGs;X@s)aNVvo`|HH&=7fark`ECfkKNq#vu(wS3ybi)#V~|EcZ%6FqG-! zrb552@K>V3Ih!~jEXgn!iYux4wUv#Bw0_ zSz+{p>tEXJkAkVP?jE!Oq}A4UCZwv{Pm{d_JRCd*4*uVL`oF!{9~P#f*F9Yuz0hV< z_Xvg<*Tf2w8Pz9g=K17ntTNfcm~1rNXA*>x`?PVfi;tiBIW^c$C`sYXri)cM6{yBt z_D=J8gaEfKosno`mjgzP0m_b$g9DYwprbSl5%z-ay<@-T?~PdT62=_;+#cm~GQQTN zpg=tozcZmLPMBRckO9`p8ci{}Hx{n*tgt#*KE_P=lFVR@(228 zp%1M2X2TB|R*rwLYF23U_Mz~pDZil=rl7zgPX6NYe6I(NgELkd7{qD4LcsttM{gUH z%0!~+UW=XmwrG7Xw~99-mOm()rQBLP!Z>zggfKwJ5>DW4S&`QD+O?7vPX1U57TW@V z`uO(~vYbbx#-OVg9*_&9{xEI8Bq;V2-x1mos&%7n&er;le~bm$Go*kF7;-@HddVmt zl{gvY4$O$OZn|iS<;S77s9zss*|iF6QBLTgSb7h5TaG}deGIp6@B6;Z-`n$MfW=SU zdm2R%GL3kG5o>_W27g3NY;ZIZw&Atq{~^tq1BEQZ-)@T7^9~z4_KJX<;8QwkIG0%# zMIMaCf*78$0x<^>rKq3aJ&hdX*F-0T@4*luZQN7nQ+g&1^e<91ZD6t3th4mXc<8nd z-CCJpsz*Gy0yLULwTyXa*{WXmI$u*~$^A!kh!p8?5?j5+{UjbO1r#|m!ZGI%b0b%+ z{;lfO&mhzG?Nj>h7D)d8gYFkd$JKE!@C5GS#Sutxv-yfV#rOj01V7Pl7;vy z*{j6qY7q0KV?3ZVd)r9|Gj}Ko!Kcei*uJfU9yGT?wa4buF~<+-4#19@wBB(rRvZ(V z%CJmbeH){-tBl~O#lMmmH@IbFlJ}qWmsEivwDR{7Q0j4?qmbiFKt8=zg*;5=;h%W? z6oppWh8eCVLidw!1`N?3H&c*f8@b_T{rx1`zkd`(42G934-40S6D{dJr7Q%B8%15n zkcGqI{c1FpB6yl{Q0r%7MwCD!((==i7%!0}SA_reEHnut|Fu@sP&OliVTBU|^+jfK zpP+2%lV7cePu+6}$ik074cZq;QtH%Ypurv2SsxADG7gj!eJSzZ@twd z<^Rvz{tFGiE|66_g~ZCbp9ZBTyXcdAZD4{Pl^U50)AfFQLvzzqti_LtH zjAk7OMG_|;#Fk9KY6Jq_3o&UJ31Q0$D1nfpO`tgA_&3J(60jsC)jkLAV8R8L^e#19 zK=QxH|I@Vi2WqSOC$5 zO1D$(tlGuPD4m+8j)@+C#)S13i4wR%dZCAqziNP69B>xC-EJ6SWcio|3fa|p{|Oj9 zGSr`wSq>;|_qo%EK0Q3Y&Q0u?M)OalOe0nk^t6>hApIjGgcr%2j(T0Td?FaKD6f#v zokF*t! z!~;X@Qd~=mj~Z^)gy8yY{9KG&7xMCx?~`S$*clW|lOB`qxOx4&LGzfik*P~q6~LvN zM0L45t|P4+taLFqwPfz8TT_!evD+a7jpQ>vzE=#yOs~F>v{q_mvEQ%r2hsIw697BvR<^_>PTI zqhmi!5;dbYy-ib0WX%4NtssQ9A$r^M6q5;f`*5^kasS7t>RD_3yoPeCAAa8%u$kK7 zzp!K9w6_tA7`&}zuk17Pg((U21>HY^^4I774;N`1OE;Xae=EG14^1MEkfvtyeFibP zD?Ujeh0BtZCi4uO(ZtVWs4$BDFZJA@O$YVte9=n`FKD2I4E~NXNX;K*Rq5sa0Q}(w zn~$;q6~v7WLkiass`3x5C7ply;^FzsjXO5&Jk<=ajRlKss`q(Nd>w3@S(8ujHflnH z4!*MOL?r2ihHB&y+6~lRs03=Ut`7!w5~>7dwE^9_<&~E=ulh+7+>?-o$XWh>@9z4s znpvshwXnjPrw7gU+oBi4UL#!Osw?c0D2NI%{GnrxkFg%7U%ZLJ5>*Xl070q{x;bb* zS67-gp9^fqo9W7l zIE0z_PfDK;F5Px!eb10}x`MSsFDFB9_?u2&Hwp|f7|o~#wX(-T5(+ea$s>HRREwj9 zNPAA^@hU_3k3Lvy0Z~aKQUR~D@A(5vL-EhI@N2dCU;R4tmCxUT*#8g5{ZBt4a$hZ( zw7h8ua^rWiiQAy?Dc}_4jWp2y2f#HuP(tZYxXJOo(Ei2OhXjJ0Wo;xhiPn%+Nco?9 zed@&Q3&^1qF8pb>JjYK<-|z_^XPZ~CH%uVT0RvbV|6~;cDBP0Tc2@N%L{J7@VG~Y% zYv@#9FA*6*%Adc%nkBjn^@4L}^)3G;=3T{#h#(Mhg-IGpwy&LWsHlZ{JK#{0F*2eZW($jTuOa4^vyqVUVNM&zPw0Z*>a>?J>QU)$QGj+ zcp`350~iz1hdux&gpG4MSL0vYS(Y|8vCltM5qzLOFg5M)s2Lif?9ppRlMBNQWjB2~Edy(zH!)q1HuyzU-nJRzVp}#LfFURxpHw~RWbMI10 zUJH4|t6#YMxgzgu(_I0pZ{LC@e!~V%N}7kimj(Q8mLajuWDH76h;g!J$*1gRYs161 z_Yi62D!*4e5yYcF}KxwVn<( zdAulSO8EN(;#>xJj8kEArG-B-W|M+12uvwP=5#UARk#9;H=aULMHqyB8ufJgbv`g( z*rtFi0q9xRw#NcwHzomPWqq0%JI`x_nrdnZ$$@ce6{tL|h z`v<5id_wT05HaaletV}I8A=?(eJFpMU0f}&x~^2ow4k-mJcm``gcM37{!>x@is1kC e_N!qRk}tY`1crDqEr4IMhrnc&?&aS#@cADp-(5oh literal 0 HcmV?d00001 From ba6c3f4ea0f7bb1ba06814bd9d9518f6a48a5c7d Mon Sep 17 00:00:00 2001 From: Scott Shawcroft Date: Mon, 17 Jun 2024 11:59:40 -0700 Subject: [PATCH 147/227] Fix S2 and S3 build --- .../boards/espressif_esp32c3_devkitm_1_n4/mpconfigboard.mk | 5 +---- .../boards/espressif_esp32c6_devkitm_1_n4/mpconfigboard.mk | 6 ++---- ports/espressif/common-hal/alarm/pin/PinAlarm.c | 6 +++--- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/mpconfigboard.mk index 6206612cacc7..5b4f4b7ead6d 100644 --- a/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32c3_devkitm_1_n4/mpconfigboard.mk @@ -7,9 +7,6 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 CIRCUITPY_ESP_USB_SERIAL_JTAG = 0 diff --git a/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/mpconfigboard.mk index c795ca6c4981..9685a7e62c59 100644 --- a/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32c6_devkitm_1_n4/mpconfigboard.mk @@ -7,8 +7,6 @@ CIRCUITPY_ESP_FLASH_MODE = qio CIRCUITPY_ESP_FLASH_FREQ = 80m CIRCUITPY_ESP_FLASH_SIZE = 4MB -# Override partition layout to preserve compatibility because the default has changed. -FLASH_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults -CIRCUITPY_DUALBANK = 1 -CIRCUITPY_BLEIO = 0 +CIRCUITPY_LEGACY_4MB_FLASH_LAYOUT = 1 + CIRCUITPY_AUDIOMP3 = 0 diff --git a/ports/espressif/common-hal/alarm/pin/PinAlarm.c b/ports/espressif/common-hal/alarm/pin/PinAlarm.c index 4046daf0426e..45f676fa5993 100644 --- a/ports/espressif/common-hal/alarm/pin/PinAlarm.c +++ b/ports/espressif/common-hal/alarm/pin/PinAlarm.c @@ -109,9 +109,9 @@ mp_obj_t alarm_pin_pinalarm_record_wake_alarm(void) { #ifdef SOC_PM_SUPPORT_EXT0_WAKEUP if (cause == ESP_SLEEP_WAKEUP_EXT0) { pin_number = REG_GET_FIELD(RTC_IO_EXT_WAKEUP0_REG, RTC_IO_EXT_WAKEUP0_SEL); - } else + } else { #endif - #ifdef SOC_PM_SUPPORT_EXT0_WAKEUP + #ifdef SOC_PM_SUPPORT_EXT1_WAKEUP if (cause == ESP_SLEEP_WAKEUP_EXT1) { pin_status = esp_sleep_get_ext1_wakeup_status(); } @@ -176,7 +176,7 @@ void alarm_pin_pinalarm_reset(void) { pin_31_0_status = 0; } -#ifdef SOC_PM_SUPPORT_EXT1_WAKEUP +#if defined(SOC_PM_SUPPORT_EXT1_WAKEUP) && !defined(SOC_PM_SUPPORT_EXT0_WAKEUP) static esp_err_t _setup_ext1(size_t low_count, size_t high_count) { esp_err_t result; if (low_count > 0) { From b658ce988b8628cd613336284add92a474137eab Mon Sep 17 00:00:00 2001 From: Scott Shawcroft Date: Mon, 17 Jun 2024 15:40:28 -0700 Subject: [PATCH 148/227] Only start BLE for workflow when desired The previous implementation would always start BLE and rely on advertising logic to make the workflow not available when on USB. This change removes the "always enable" call in favor of a default value that is on if 1) we determine we should be discoverable or 2) we're already bonded over BLE. --- supervisor/shared/bluetooth/bluetooth.c | 9 +++++++-- supervisor/shared/workflow.c | 1 - 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/supervisor/shared/bluetooth/bluetooth.c b/supervisor/shared/bluetooth/bluetooth.c index 877fbc6ef262..48b186bbdf12 100644 --- a/supervisor/shared/bluetooth/bluetooth.c +++ b/supervisor/shared/bluetooth/bluetooth.c @@ -212,11 +212,11 @@ void supervisor_bluetooth_init(void) { boot_in_discovery_mode = true; reset_state = 0x0; } + bool bonded = common_hal_bleio_adapter_is_bonded_to_central(&common_hal_bleio_adapter_obj); #if !CIRCUITPY_USB_DEVICE // Boot into discovery if USB isn't available and we aren't bonded already. // Checking here allows us to have the status LED solidly on even if no button was // pressed. - bool bonded = common_hal_bleio_adapter_is_bonded_to_central(&common_hal_bleio_adapter_obj); bool wifi_workflow_active = false; #if CIRCUITPY_WEB_WORKFLOW && CIRCUITPY_WIFI && CIRCUITPY_OS_GETENV char _api_password[64]; @@ -255,6 +255,11 @@ void supervisor_bluetooth_init(void) { if (boot_in_discovery_mode) { common_hal_bleio_adapter_erase_bonding(&common_hal_bleio_adapter_obj); } + if (boot_in_discovery_mode || bonded) { + workflow_state = WORKFLOW_ENABLED; + } else { + workflow_state = WORKFLOW_DISABLED; + } #if CIRCUITPY_STATUS_LED new_status_color(BLACK); status_led_deinit(); @@ -358,7 +363,7 @@ void supervisor_bluetooth_disable_workflow(void) { bool supervisor_bluetooth_workflow_is_enabled(void) { #if CIRCUITPY_BLE_FILE_SERVICE || CIRCUITPY_SERIAL_BLE - if (workflow_state == 1) { + if (workflow_state == WORKFLOW_ENABLED) { return true; } #endif diff --git a/supervisor/shared/workflow.c b/supervisor/shared/workflow.c index 152e67b27b1e..13f896c45bc3 100644 --- a/supervisor/shared/workflow.c +++ b/supervisor/shared/workflow.c @@ -83,7 +83,6 @@ void supervisor_workflow_start(void) { #if CIRCUITPY_BLEIO bleio_reset(); - supervisor_bluetooth_enable_workflow(); supervisor_start_bluetooth(); #endif From 6f83fb8eae3b7917a84a25906bc1a91ced37c567 Mon Sep 17 00:00:00 2001 From: applecuckoo Date: Tue, 18 Jun 2024 20:03:37 +1200 Subject: [PATCH 149/227] fix typos in existing blurb and minor comment update --- ports/nordic/boards/arduino_nano_33_ble/README.md | 14 +++++++------- ports/nordic/boards/arduino_nano_33_ble/pins.c | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ports/nordic/boards/arduino_nano_33_ble/README.md b/ports/nordic/boards/arduino_nano_33_ble/README.md index 42d7a861840a..e0fc01db01e8 100644 --- a/ports/nordic/boards/arduino_nano_33_ble/README.md +++ b/ports/nordic/boards/arduino_nano_33_ble/README.md @@ -1,11 +1,11 @@ # Arduino Nano 33 BLE and Nano 33 BLE Sense The [Arduino Nano 33 BLE](https://store.arduino.cc/usa/nano-33-ble-with-headers) and -[Arduino Nano 33 BLE Sense](https://store.arduino.cc/usa/nano-33-ble-sense) and -are built around the NINA B306 module, based on Nordic nRF 52840 and containing -a powerful Cortex M4F. Both include an onboard 9 axis Inertial Measurement Unit (IMU), the LSM9DS1. -The Nano 33 BLE Sense adds an LPS22HB barometric pressure and temperature sensor, -an ADPS-9960 digital proximity, ambient light, RGB, and gensture sensor, +[Arduino Nano 33 BLE Sense](https://store.arduino.cc/usa/nano-33-ble-sense) +are built around the NINA-B306 module, based on the Nordic nRF52840 and containing +a powerful Cortex-M4F. Both include an onboard 9-axis Inertial Measurement Unit (IMU), the LSM9DS1. +The Nano 33 BLE Sense adds an LPS22HB barometric pressure and temperature sensor, an HTS221 humidity sensor, +an APDS-9960 digital proximity, ambient light, RGB, and gesture sensor, and an MP34DT05 digital microphone. Note: the Arduino Nano 33 BLE and BLE Sense do not include a QSPI external @@ -15,11 +15,11 @@ filesystem. I2C pins `board.SCL1` and `board.SDA1` are not exposed and are used for onboard peripherals. Pin `board.R_PULLUP` must be set to high to enable the `SCL1` and `SDA1` pullups for proper operation. -Pin `board.VDD_ENV` applies power to the LSM9DS1, and must be high for it to be operational. +Pin `board.VDD_ENV` applies power to the LSM9DS1, the LPS22HB, and the HTS221, and must be high for them to be operational. Pins `board.MIC_PWR`, `board.PDMDIN`, and `board.PDMCLK` are for the Nano 33 BLE Sense onboard microphone. -Pin `board.INT_ADPS` is the interrupt pin from the ADPS-9960. +Pin `board.INT_APDS` is the interrupt pin from the APDS-9960. Pins `board.RGB_LED_R`, `board.RGB_LED_G`, and `board.RGB_LED_B` are the red, green and blue LEDS in the onboard RGB LED. diff --git a/ports/nordic/boards/arduino_nano_33_ble/pins.c b/ports/nordic/boards/arduino_nano_33_ble/pins.c index 10037c05c0d3..98f41e10e8e6 100644 --- a/ports/nordic/boards/arduino_nano_33_ble/pins.c +++ b/ports/nordic/boards/arduino_nano_33_ble/pins.c @@ -48,7 +48,7 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_RGB_LED_G), MP_ROM_PTR(&pin_P0_16) }, { MP_ROM_QSTR(MP_QSTR_RGB_LED_B), MP_ROM_PTR(&pin_P0_06) }, - // Power line to LSM9DS1. + // Power line to LSM9DS1, LPS22 and HTS221 { MP_ROM_QSTR(MP_QSTR_VDD_ENV), MP_ROM_PTR(&pin_P0_22) }, // Pullup voltage for SDA1 and SCL1 From 6f94a09b73bb33bdabb07aaa57c1b8f337e3092d Mon Sep 17 00:00:00 2001 From: applecuckoo Date: Tue, 18 Jun 2024 20:30:53 +1200 Subject: [PATCH 150/227] Define pins for Rev2 of the BLE Sense --- ports/nordic/boards/arduino_nano_33_ble/README.md | 8 +++++++- ports/nordic/boards/arduino_nano_33_ble/pins.c | 4 +++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ports/nordic/boards/arduino_nano_33_ble/README.md b/ports/nordic/boards/arduino_nano_33_ble/README.md index e0fc01db01e8..ba0b1e520994 100644 --- a/ports/nordic/boards/arduino_nano_33_ble/README.md +++ b/ports/nordic/boards/arduino_nano_33_ble/README.md @@ -7,6 +7,8 @@ a powerful Cortex-M4F. Both include an onboard 9-axis Inertial Measurement Unit The Nano 33 BLE Sense adds an LPS22HB barometric pressure and temperature sensor, an HTS221 humidity sensor, an APDS-9960 digital proximity, ambient light, RGB, and gesture sensor, and an MP34DT05 digital microphone. +The [Arduino Nano 33 BLE Sense Rev2](https://store-usa.arduino.cc/products/nano-33-ble-sense-rev2-with-headers) +replaces the LSM9DS1 with a combination of the BMI270 and BMM150, the HTS221 with the HS3003, and the MP34DT05 with the MP34DT06JTR. Note: the Arduino Nano 33 BLE and BLE Sense do not include a QSPI external flash. Any Python code will need to be stored on the internal flash @@ -15,12 +17,16 @@ filesystem. I2C pins `board.SCL1` and `board.SDA1` are not exposed and are used for onboard peripherals. Pin `board.R_PULLUP` must be set to high to enable the `SCL1` and `SDA1` pullups for proper operation. -Pin `board.VDD_ENV` applies power to the LSM9DS1, the LPS22HB, and the HTS221, and must be high for them to be operational. +Pin `board.VDD_ENV` applies power to the IMU, the pressure sensor and the humidity sensor, and must be high for them to be operational. Pins `board.MIC_PWR`, `board.PDMDIN`, and `board.PDMCLK` are for the Nano 33 BLE Sense onboard microphone. Pin `board.INT_APDS` is the interrupt pin from the APDS-9960. +Pin `board.INT_BMI_V2` is the interrupt pin from the BMI270. This pin is only present on the BLE Sense Rev2. + +Pin `board.INT_LPS_V2` is the interrupt pin from the LPS22. This pin is only present on the BLE Sense Rev2. + Pins `board.RGB_LED_R`, `board.RGB_LED_G`, and `board.RGB_LED_B` are the red, green and blue LEDS in the onboard RGB LED. diff --git a/ports/nordic/boards/arduino_nano_33_ble/pins.c b/ports/nordic/boards/arduino_nano_33_ble/pins.c index 98f41e10e8e6..50d4acd148fb 100644 --- a/ports/nordic/boards/arduino_nano_33_ble/pins.c +++ b/ports/nordic/boards/arduino_nano_33_ble/pins.c @@ -48,7 +48,7 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_RGB_LED_G), MP_ROM_PTR(&pin_P0_16) }, { MP_ROM_QSTR(MP_QSTR_RGB_LED_B), MP_ROM_PTR(&pin_P0_06) }, - // Power line to LSM9DS1, LPS22 and HTS221 + // Power line to IMU, pressure, temperature and humidity sensors. { MP_ROM_QSTR(MP_QSTR_VDD_ENV), MP_ROM_PTR(&pin_P0_22) }, // Pullup voltage for SDA1 and SCL1 @@ -59,6 +59,8 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_PDMDIN), MP_ROM_PTR(&pin_P0_25) }, { MP_ROM_QSTR(MP_QSTR_INT_APDS), MP_ROM_PTR(&pin_P0_19) }, + { MP_ROM_QSTR(MP_QSTR_INT_BMI_V2), MP_ROM_PTR(&pin_P0_11) }, + { MP_ROM_QSTR(MP_QSTR_INT_LPS_V2), MP_ROM_PTR(&pin_P0_12) }, { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_P1_03) }, { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_P1_10) }, From 17c4e9c86493a9b0794d5a6714d074136dbc113f Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Tue, 18 Jun 2024 14:13:27 -0400 Subject: [PATCH 151/227] espressif: fix returning ping time and pinging too often --- ports/espressif/common-hal/wifi/Radio.c | 49 +++++++++++++++++++------ ports/espressif/common-hal/wifi/Radio.h | 7 ++-- 2 files changed, 42 insertions(+), 14 deletions(-) diff --git a/ports/espressif/common-hal/wifi/Radio.c b/ports/espressif/common-hal/wifi/Radio.c index 71ac1469758f..734fad8b716c 100644 --- a/ports/espressif/common-hal/wifi/Radio.c +++ b/ports/espressif/common-hal/wifi/Radio.c @@ -532,32 +532,59 @@ void common_hal_wifi_radio_set_ipv4_address_ap(wifi_radio_obj_t *self, mp_obj_t common_hal_wifi_radio_start_dhcp_server(self); // restart access point DHCP } +static void ping_success_cb(esp_ping_handle_t hdl, void *args) { + wifi_radio_obj_t *self = (wifi_radio_obj_t *)args; + esp_ping_get_profile(hdl, ESP_PING_PROF_TIMEGAP, &self->ping_elapsed_time, sizeof(self->ping_elapsed_time)); +} + mp_int_t common_hal_wifi_radio_ping(wifi_radio_obj_t *self, mp_obj_t ip_address, mp_float_t timeout) { esp_ping_config_t ping_config = ESP_PING_DEFAULT_CONFIG(); ipaddress_ipaddress_to_esp_idf(ip_address, &ping_config.target_addr); ping_config.count = 1; + // We must fetch ping information using the callback mechanism, because the session storage is freed when + // the ping session is done, even before esp_ping_delete_session(). + esp_ping_callbacks_t ping_callbacks = { + .on_ping_success = ping_success_cb, + .cb_args = (void *)self, + }; + size_t timeout_ms = timeout * 1000; + // ESP-IDF creates a task to do the ping session. It shuts down when done, but only after a one second delay. + // Calling common_hal_wifi_radio_ping() too fast will cause resource exhaustion. esp_ping_handle_t ping; - CHECK_ESP_RESULT(esp_ping_new_session(&ping_config, NULL, &ping)); + esp_err_t ret; + for (size_t tries = 1; tries <= 5; tries++) { + ret = esp_ping_new_session(&ping_config, &ping_callbacks, &ping); + if (ret == ESP_OK) { + break; + } + // Wait for old task to go away and then try again. + // Empirical testing shows we have to wait at least two seconds, despite the task + // having a one-second timeout. + common_hal_time_delay_ms(2000); + if (mp_hal_is_interrupted()) { + return -1; + } + } + CHECK_ESP_RESULT(ret); + esp_ping_start(ping); - uint32_t received = 0; - uint32_t total_time_ms = 0; + // Use all ones as a flag that the elapsed time was not set (ping failed or timed out). + self->ping_elapsed_time = (uint32_t)(-1); + uint32_t start_time = common_hal_time_monotonic_ms(); - while (received == 0 && (common_hal_time_monotonic_ms() - start_time < timeout_ms) && !mp_hal_is_interrupted()) { + while ((self->ping_elapsed_time == (uint32_t)(-1)) && + (common_hal_time_monotonic_ms() - start_time < timeout_ms) && + !mp_hal_is_interrupted()) { RUN_BACKGROUND_TASKS; - esp_ping_get_profile(ping, ESP_PING_PROF_DURATION, &total_time_ms, sizeof(total_time_ms)); - esp_ping_get_profile(ping, ESP_PING_PROF_REPLY, &received, sizeof(received)); - } - uint32_t elapsed_time = 0xffffffff; - if (received > 0) { - esp_ping_get_profile(ping, ESP_PING_PROF_TIMEGAP, &elapsed_time, sizeof(elapsed_time)); } + esp_ping_stop(ping); esp_ping_delete_session(ping); - return elapsed_time; + return (mp_int_t)self->ping_elapsed_time; } void common_hal_wifi_radio_gc_collect(wifi_radio_obj_t *self) { diff --git a/ports/espressif/common-hal/wifi/Radio.h b/ports/espressif/common-hal/wifi/Radio.h index 7e91862c300c..1a37aa734b0a 100644 --- a/ports/espressif/common-hal/wifi/Radio.h +++ b/ports/espressif/common-hal/wifi/Radio.h @@ -32,15 +32,16 @@ typedef struct { esp_netif_ip_info_t ip_info; esp_netif_dns_info_t dns_info; esp_netif_t *netif; + uint32_t ping_elapsed_time; + wifi_config_t ap_config; + esp_netif_ip_info_t ap_ip_info; + esp_netif_t *ap_netif; bool started; bool ap_mode; bool sta_mode; uint8_t retries_left; uint8_t starting_retries; uint8_t last_disconnect_reason; - wifi_config_t ap_config; - esp_netif_ip_info_t ap_ip_info; - esp_netif_t *ap_netif; } wifi_radio_obj_t; extern void common_hal_wifi_radio_gc_collect(wifi_radio_obj_t *self); From fdd9faa7f03add9fdaf6dcfd1c252aebf4743377 Mon Sep 17 00:00:00 2001 From: johnnohj Date: Mon, 17 Jun 2024 18:46:41 +0000 Subject: [PATCH 152/227] Translated using Weblate (German) Currently translated at 97.1% (967 of 995 strings) Translation: CircuitPython/main Translate-URL: https://hosted.weblate.org/projects/circuitpython/main/de/ --- locale/de_DE.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/locale/de_DE.po b/locale/de_DE.po index db3a52504267..6a7dae42ea51 100644 --- a/locale/de_DE.po +++ b/locale/de_DE.po @@ -6,14 +6,14 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-01-04 12:55-0600\n" -"PO-Revision-Date: 2024-03-11 09:56+0000\n" -"Last-Translator: Sokromatrix \n" +"PO-Revision-Date: 2024-06-18 19:09+0000\n" +"Last-Translator: johnnohj \n" "Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.5-dev\n" +"X-Generator: Weblate 5.6-dev\n" #: main.c msgid "" @@ -2365,7 +2365,7 @@ msgstr "Der BOOT-Knopf wurde beim Starten gedrückt" #: ports/espressif/boards/adafruit_feather_esp32c6_4mbflash_nopsram/mpconfigboard.h #: ports/espressif/boards/adafruit_itsybitsy_esp32/mpconfigboard.h msgid "You pressed the BOOT button at start up." -msgstr "" +msgstr "Der BOOT-Knopf wurde beim Starten gedrückt." #: ports/espressif/boards/adafruit_huzzah32_breakout/mpconfigboard.h msgid "You pressed the GPIO0 button at start up." From 467f82af04555c4c2c05497086ec6f55ba9be139 Mon Sep 17 00:00:00 2001 From: Xfox20 <136956349+Xfox20@users.noreply.github.com> Date: Mon, 17 Jun 2024 18:55:18 +0000 Subject: [PATCH 153/227] Translated using Weblate (German) Currently translated at 97.1% (967 of 995 strings) Translation: CircuitPython/main Translate-URL: https://hosted.weblate.org/projects/circuitpython/main/de/ --- locale/de_DE.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locale/de_DE.po b/locale/de_DE.po index 6a7dae42ea51..4788ebe4a47a 100644 --- a/locale/de_DE.po +++ b/locale/de_DE.po @@ -7,7 +7,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-01-04 12:55-0600\n" "PO-Revision-Date: 2024-06-18 19:09+0000\n" -"Last-Translator: johnnohj \n" +"Last-Translator: Xfox20 <136956349+Xfox20@users.noreply.github.com>\n" "Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -4350,7 +4350,7 @@ msgstr "" #: shared-bindings/bitmapfilter/__init__.c msgid "weights must be an object of type %q, %q, %q, or %q, not %q " -msgstr "" +msgstr "Gewichte müssen ein Objekt des Typs %q, %q, %q, or %q, not %q sein " #: shared-bindings/is31fl3741/FrameBuffer.c msgid "width must be greater than zero" From 255a9d2505a849fa158b8d280f384d8c5adf7939 Mon Sep 17 00:00:00 2001 From: Wellington Terumi Uemura Date: Mon, 17 Jun 2024 20:46:58 +0000 Subject: [PATCH 154/227] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (995 of 995 strings) Translation: CircuitPython/main Translate-URL: https://hosted.weblate.org/projects/circuitpython/main/pt_BR/ --- locale/pt_BR.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/locale/pt_BR.po b/locale/pt_BR.po index d3a460122a28..960bea16135d 100644 --- a/locale/pt_BR.po +++ b/locale/pt_BR.po @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-01-04 12:55-0600\n" -"PO-Revision-Date: 2024-04-07 02:02+0000\n" +"PO-Revision-Date: 2024-06-18 19:09+0000\n" "Last-Translator: Wellington Terumi Uemura \n" "Language-Team: \n" "Language: pt_BR\n" @@ -14,7 +14,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 5.5-dev\n" +"X-Generator: Weblate 5.6-dev\n" #: main.c msgid "" @@ -1325,7 +1325,7 @@ msgstr "O endereço MAC era inválido" #: ports/espressif/common-hal/_bleio/Characteristic.c msgid "MITM security not supported" -msgstr "" +msgstr "Não há suporte para segurança MITM" #: shared-bindings/is31fl3741/IS31FL3741.c msgid "Mapping must be a tuple" From 2d56b1afb89321ab77167fc6118d0c3fc691c859 Mon Sep 17 00:00:00 2001 From: johnnohj Date: Mon, 17 Jun 2024 18:19:20 +0000 Subject: [PATCH 155/227] Translated using Weblate (English (United Kingdom)) Currently translated at 100.0% (995 of 995 strings) Translation: CircuitPython/main Translate-URL: https://hosted.weblate.org/projects/circuitpython/main/en_GB/ --- locale/en_GB.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/locale/en_GB.po b/locale/en_GB.po index 672226e4ea00..c5aca1398c40 100644 --- a/locale/en_GB.po +++ b/locale/en_GB.po @@ -7,15 +7,15 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-04-18 21:03+0000\n" -"Last-Translator: Andi Chandler \n" +"PO-Revision-Date: 2024-06-18 19:09+0000\n" +"Last-Translator: johnnohj \n" "Language-Team: none\n" "Language: en_GB\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.5-dev\n" +"X-Generator: Weblate 5.6-dev\n" #: main.c msgid "" @@ -1309,7 +1309,7 @@ msgstr "MAC address was invalid" #: ports/espressif/common-hal/_bleio/Characteristic.c msgid "MITM security not supported" -msgstr "" +msgstr "MITM security is not supported" #: shared-bindings/is31fl3741/IS31FL3741.c msgid "Mapping must be a tuple" From a004c1685eeefcb0c930d0b644c255a1e7b31c86 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Tue, 18 Jun 2024 15:53:21 -0400 Subject: [PATCH 156/227] espressif ping: reduce wait time on failure^ --- ports/espressif/common-hal/wifi/Radio.c | 13 +++++-------- shared-bindings/wifi/Radio.c | 7 ++++++- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/ports/espressif/common-hal/wifi/Radio.c b/ports/espressif/common-hal/wifi/Radio.c index 734fad8b716c..5768c2103bf3 100644 --- a/ports/espressif/common-hal/wifi/Radio.c +++ b/ports/espressif/common-hal/wifi/Radio.c @@ -554,21 +554,18 @@ mp_int_t common_hal_wifi_radio_ping(wifi_radio_obj_t *self, mp_obj_t ip_address, // ESP-IDF creates a task to do the ping session. It shuts down when done, but only after a one second delay. // Calling common_hal_wifi_radio_ping() too fast will cause resource exhaustion. esp_ping_handle_t ping; - esp_err_t ret; - for (size_t tries = 1; tries <= 5; tries++) { - ret = esp_ping_new_session(&ping_config, &ping_callbacks, &ping); - if (ret == ESP_OK) { - break; - } + if (esp_ping_new_session(&ping_config, &ping_callbacks, &ping) != ESP_OK) { // Wait for old task to go away and then try again. // Empirical testing shows we have to wait at least two seconds, despite the task // having a one-second timeout. common_hal_time_delay_ms(2000); + // Return if interrupted now, to show the interruption as KeyboardInterrupt instead of the + // IDF error. if (mp_hal_is_interrupted()) { - return -1; + return (uint32_t)(-1); } + CHECK_ESP_RESULT(esp_ping_new_session(&ping_config, &ping_callbacks, &ping)); } - CHECK_ESP_RESULT(ret); esp_ping_start(ping); diff --git a/shared-bindings/wifi/Radio.c b/shared-bindings/wifi/Radio.c index 3dcea68a20b2..76ae4345ab2d 100644 --- a/shared-bindings/wifi/Radio.c +++ b/shared-bindings/wifi/Radio.c @@ -698,7 +698,12 @@ MP_PROPERTY_GETTER(wifi_radio_ap_info_obj, //| self, ip: ipaddress.IPv4Address, *, timeout: Optional[float] = 0.5 //| ) -> Optional[float]: //| """Ping an IP to test connectivity. Returns echo time in seconds. -//| Returns None when it times out.""" +//| Returns None when it times out. +//| +//| **Limitations:** On Espressif, calling `ping()` multiple times rapidly +//| exhausts available resources after several calls. Rather than failing at that point, `ping()` +//| will wait two seconds for enough resources to be freed up before proceeding. +//| """ //| ... //| static mp_obj_t wifi_radio_ping(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { From 1e56695f565969aaac6496c4a6a2b4ab75d8dfca Mon Sep 17 00:00:00 2001 From: Matthew Lewinski Date: Mon, 17 Jun 2024 23:58:02 -0500 Subject: [PATCH 157/227] Fix display power on Adafruit Reverse TFT Feathers TFT_I2C_POWER is on pin 7, not pin 21 (NEOPIXEL_POWER) --- .../boards/adafruit_feather_esp32s2_reverse_tft/board.c | 6 +++--- .../boards/adafruit_feather_esp32s3_reverse_tft/board.c | 6 +++--- ports/espressif/boards/adafruit_feather_esp32s3_tft/board.c | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/board.c b/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/board.c index 60d21ed14bb0..5181e4af79b0 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/board.c +++ b/ports/espressif/boards/adafruit_feather_esp32s2_reverse_tft/board.c @@ -101,10 +101,10 @@ void board_init(void) { bool espressif_board_reset_pin_number(gpio_num_t pin_number) { // Override the I2C/TFT power pin reset to prevent resetting the display. - if (pin_number == 21) { + if (pin_number == 7) { // Turn on TFT and I2C - gpio_set_direction(21, GPIO_MODE_DEF_OUTPUT); - gpio_set_level(21, true); + gpio_set_direction(pin_number, GPIO_MODE_DEF_OUTPUT); + gpio_set_level(pin_number, true); return true; } return false; diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/board.c b/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/board.c index 60d21ed14bb0..5181e4af79b0 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/board.c +++ b/ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/board.c @@ -101,10 +101,10 @@ void board_init(void) { bool espressif_board_reset_pin_number(gpio_num_t pin_number) { // Override the I2C/TFT power pin reset to prevent resetting the display. - if (pin_number == 21) { + if (pin_number == 7) { // Turn on TFT and I2C - gpio_set_direction(21, GPIO_MODE_DEF_OUTPUT); - gpio_set_level(21, true); + gpio_set_direction(pin_number, GPIO_MODE_DEF_OUTPUT); + gpio_set_level(pin_number, true); return true; } return false; diff --git a/ports/espressif/boards/adafruit_feather_esp32s3_tft/board.c b/ports/espressif/boards/adafruit_feather_esp32s3_tft/board.c index ff3bfd61d43e..c772cc382751 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s3_tft/board.c +++ b/ports/espressif/boards/adafruit_feather_esp32s3_tft/board.c @@ -103,8 +103,8 @@ bool espressif_board_reset_pin_number(gpio_num_t pin_number) { // Override the I2C/TFT power pin reset to prevent resetting the display. if (pin_number == 21) { // Turn on TFT and I2C - gpio_set_direction(21, GPIO_MODE_DEF_OUTPUT); - gpio_set_level(21, true); + gpio_set_direction(pin_number, GPIO_MODE_DEF_OUTPUT); + gpio_set_level(pin_number, true); return true; } return false; From ca02590588ae485f22f370a4296df04f8b41fde8 Mon Sep 17 00:00:00 2001 From: applecuckoo Date: Wed, 19 Jun 2024 20:30:44 +1200 Subject: [PATCH 158/227] remove Nano 33 BLE Rev2 pin defs and move them to new board def --- .../boards/arduino_nano_33_ble/README.md | 10 +-- .../nordic/boards/arduino_nano_33_ble/pins.c | 4 +- .../boards/arduino_nano_33_ble_rev2/README.md | 31 ++++++++ .../boards/arduino_nano_33_ble_rev2/board.c | 35 +++++++++ .../arduino_nano_33_ble_rev2/mpconfigboard.h | 22 ++++++ .../arduino_nano_33_ble_rev2/mpconfigboard.mk | 9 +++ .../boards/arduino_nano_33_ble_rev2/pins.c | 74 +++++++++++++++++++ 7 files changed, 174 insertions(+), 11 deletions(-) create mode 100644 ports/nordic/boards/arduino_nano_33_ble_rev2/README.md create mode 100644 ports/nordic/boards/arduino_nano_33_ble_rev2/board.c create mode 100644 ports/nordic/boards/arduino_nano_33_ble_rev2/mpconfigboard.h create mode 100644 ports/nordic/boards/arduino_nano_33_ble_rev2/mpconfigboard.mk create mode 100644 ports/nordic/boards/arduino_nano_33_ble_rev2/pins.c diff --git a/ports/nordic/boards/arduino_nano_33_ble/README.md b/ports/nordic/boards/arduino_nano_33_ble/README.md index ba0b1e520994..b3a6ffa4891d 100644 --- a/ports/nordic/boards/arduino_nano_33_ble/README.md +++ b/ports/nordic/boards/arduino_nano_33_ble/README.md @@ -1,14 +1,12 @@ # Arduino Nano 33 BLE and Nano 33 BLE Sense -The [Arduino Nano 33 BLE](https://store.arduino.cc/usa/nano-33-ble-with-headers) and +The [Arduino Nano 33 BLE](https://store.arduino.cc/usa/nano-33-ble) and [Arduino Nano 33 BLE Sense](https://store.arduino.cc/usa/nano-33-ble-sense) are built around the NINA-B306 module, based on the Nordic nRF52840 and containing a powerful Cortex-M4F. Both include an onboard 9-axis Inertial Measurement Unit (IMU), the LSM9DS1. The Nano 33 BLE Sense adds an LPS22HB barometric pressure and temperature sensor, an HTS221 humidity sensor, an APDS-9960 digital proximity, ambient light, RGB, and gesture sensor, and an MP34DT05 digital microphone. -The [Arduino Nano 33 BLE Sense Rev2](https://store-usa.arduino.cc/products/nano-33-ble-sense-rev2-with-headers) -replaces the LSM9DS1 with a combination of the BMI270 and BMM150, the HTS221 with the HS3003, and the MP34DT05 with the MP34DT06JTR. Note: the Arduino Nano 33 BLE and BLE Sense do not include a QSPI external flash. Any Python code will need to be stored on the internal flash @@ -17,16 +15,12 @@ filesystem. I2C pins `board.SCL1` and `board.SDA1` are not exposed and are used for onboard peripherals. Pin `board.R_PULLUP` must be set to high to enable the `SCL1` and `SDA1` pullups for proper operation. -Pin `board.VDD_ENV` applies power to the IMU, the pressure sensor and the humidity sensor, and must be high for them to be operational. +Pin `board.VDD_ENV` applies power to the LSM9DS1, the LPS22HB, and the HTS221, and must be high for them to be operational. Pins `board.MIC_PWR`, `board.PDMDIN`, and `board.PDMCLK` are for the Nano 33 BLE Sense onboard microphone. Pin `board.INT_APDS` is the interrupt pin from the APDS-9960. -Pin `board.INT_BMI_V2` is the interrupt pin from the BMI270. This pin is only present on the BLE Sense Rev2. - -Pin `board.INT_LPS_V2` is the interrupt pin from the LPS22. This pin is only present on the BLE Sense Rev2. - Pins `board.RGB_LED_R`, `board.RGB_LED_G`, and `board.RGB_LED_B` are the red, green and blue LEDS in the onboard RGB LED. diff --git a/ports/nordic/boards/arduino_nano_33_ble/pins.c b/ports/nordic/boards/arduino_nano_33_ble/pins.c index 50d4acd148fb..b2ca13649070 100644 --- a/ports/nordic/boards/arduino_nano_33_ble/pins.c +++ b/ports/nordic/boards/arduino_nano_33_ble/pins.c @@ -48,7 +48,7 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_RGB_LED_G), MP_ROM_PTR(&pin_P0_16) }, { MP_ROM_QSTR(MP_QSTR_RGB_LED_B), MP_ROM_PTR(&pin_P0_06) }, - // Power line to IMU, pressure, temperature and humidity sensors. + // Power line to LSM9DS1, LPS22 and HTS221. { MP_ROM_QSTR(MP_QSTR_VDD_ENV), MP_ROM_PTR(&pin_P0_22) }, // Pullup voltage for SDA1 and SCL1 @@ -59,8 +59,6 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_PDMDIN), MP_ROM_PTR(&pin_P0_25) }, { MP_ROM_QSTR(MP_QSTR_INT_APDS), MP_ROM_PTR(&pin_P0_19) }, - { MP_ROM_QSTR(MP_QSTR_INT_BMI_V2), MP_ROM_PTR(&pin_P0_11) }, - { MP_ROM_QSTR(MP_QSTR_INT_LPS_V2), MP_ROM_PTR(&pin_P0_12) }, { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_P1_03) }, { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_P1_10) }, diff --git a/ports/nordic/boards/arduino_nano_33_ble_rev2/README.md b/ports/nordic/boards/arduino_nano_33_ble_rev2/README.md new file mode 100644 index 000000000000..fd3e4fec132c --- /dev/null +++ b/ports/nordic/boards/arduino_nano_33_ble_rev2/README.md @@ -0,0 +1,31 @@ +# Arduino Nano 33 BLE Rev2 and Nano 33 BLE Sense Rev2 + +The [Arduino Nano 33 BLE Rev2](https://store.arduino.cc/usa/nano-33-ble-rev2) and +[Arduino Nano 33 BLE Sense Rev2](https://store.arduino.cc/usa/nano-33-ble-sense-rev2) +are built around the NINA-B306 module, based on the Nordic nRF52840 and containing +a powerful Cortex-M4F. Both include an onboard 9-axis Inertial Measurement Unit (IMU), made up of the BMI270 6-axis IMU and the BMM150 3-axis magnetometer. +The Nano 33 BLE Sense Rev2 adds an LPS22HB barometric pressure and temperature sensor, an HS3003 humidity sensor, +an APDS-9960 digital proximity, ambient light, RGB, and gesture sensor, +and an MP34DT06JTR digital microphone. + +Note: the Arduino Nano 33 BLE Rev2 and BLE Sense Rev2 do not include a QSPI external +flash. Any Python code will need to be stored on the internal flash +filesystem. + +I2C pins `board.SCL1` and `board.SDA1` are not exposed and are used for onboard peripherals. +Pin `board.R_PULLUP` must be set to high to enable the `SCL1` and `SDA1` pullups for proper operation. + +Pin `board.VDD_ENV` applies power to the BMI270, the BMM150, the LPS22HB and the HS3003, and must be high for them to be operational. + +Pins `board.MIC_PWR`, `board.PDMDIN`, and `board.PDMCLK` are for the Nano 33 BLE Sense onboard microphone. + +Pin `board.INT_APDS` is the interrupt pin from the APDS-9960. + +Pin `board.INT_BMI_1` and `board.INT_BMI_2` are the two interrupt pins from the BMI270. + +Pin `board.INT_LPS` is the interrupt pin from the LPS22. + +Pins `board.RGB_LED_R`, `board.RGB_LED_G`, and `board.RGB_LED_B` +are the red, green and blue LEDS in the onboard RGB LED. + +Pins `board.LED_G` and `board.LED_Y` are onboard green and red LEDs. `board.LED_Y` is also `board.SCK`. diff --git a/ports/nordic/boards/arduino_nano_33_ble_rev2/board.c b/ports/nordic/boards/arduino_nano_33_ble_rev2/board.c new file mode 100644 index 000000000000..d5274998d1b1 --- /dev/null +++ b/ports/nordic/boards/arduino_nano_33_ble_rev2/board.c @@ -0,0 +1,35 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "supervisor/board.h" +#include "nrf.h" +#include "nrf_rtc.h" + +void board_init(void) { + // Initializations below from Arduino variant.cpp. + + // // turn power LED on + // pinMode(LED_PWR, OUTPUT); + // digitalWrite(LED_PWR, HIGH); + + // Errata Nano33BLE - I2C pullup is on SWO line, need to disable TRACE + // was being enabled by nrfx_clock_anomaly_132 + CoreDebug->DEMCR = 0; + NRF_CLOCK->TRACECONFIG = 0; + + // FIXME: bootloader enables interrupt on COMPARE[0], which we don't handle + // Disable it here to avoid getting stuck when OVERFLOW irq is triggered + nrf_rtc_event_disable(NRF_RTC1, NRF_RTC_INT_COMPARE0_MASK); + nrf_rtc_int_disable(NRF_RTC1, NRF_RTC_INT_COMPARE0_MASK); + + // // FIXME: always enable I2C pullup and power @startup + // // Change for maximum powersave + // pinMode(PIN_ENABLE_SENSORS_3V3, OUTPUT); + // pinMode(PIN_ENABLE_I2C_PULLUP, OUTPUT); + + // digitalWrite(PIN_ENABLE_SENSORS_3V3, HIGH); + // digitalWrite(PIN_ENABLE_I2C_PULLUP, HIGH); +} diff --git a/ports/nordic/boards/arduino_nano_33_ble_rev2/mpconfigboard.h b/ports/nordic/boards/arduino_nano_33_ble_rev2/mpconfigboard.h new file mode 100644 index 000000000000..aad0300dce9f --- /dev/null +++ b/ports/nordic/boards/arduino_nano_33_ble_rev2/mpconfigboard.h @@ -0,0 +1,22 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#pragma once + +#include "nrfx/hal/nrf_gpio.h" + +#define MICROPY_HW_BOARD_NAME "Arduino Nano 33 BLE Rev2" +#define MICROPY_HW_MCU_NAME "nRF52840" + +#define DEFAULT_I2C_BUS_SCL (&pin_P0_02) +#define DEFAULT_I2C_BUS_SDA (&pin_P0_31) + +#define DEFAULT_SPI_BUS_SCK (&pin_P0_13) +#define DEFAULT_SPI_BUS_MOSI (&pin_P0_01) +#define DEFAULT_SPI_BUS_MISO (&pin_P1_08) + +#define DEFAULT_UART_BUS_RX (&pin_P1_10) +#define DEFAULT_UART_BUS_TX (&pin_P1_03) diff --git a/ports/nordic/boards/arduino_nano_33_ble_rev2/mpconfigboard.mk b/ports/nordic/boards/arduino_nano_33_ble_rev2/mpconfigboard.mk new file mode 100644 index 000000000000..cf6203bf1825 --- /dev/null +++ b/ports/nordic/boards/arduino_nano_33_ble_rev2/mpconfigboard.mk @@ -0,0 +1,9 @@ +USB_VID = 0x2341 +USB_PID = 0x805A +USB_PRODUCT = "Arduino_Nano_33_BLE" +USB_MANUFACTURER = "Arduino" + +MCU_CHIP = nrf52840 + +INTERNAL_FLASH_FILESYSTEM = 1 +CIRCUITPY_ULAB = 0 diff --git a/ports/nordic/boards/arduino_nano_33_ble_rev2/pins.c b/ports/nordic/boards/arduino_nano_33_ble_rev2/pins.c new file mode 100644 index 000000000000..759893e3dada --- /dev/null +++ b/ports/nordic/boards/arduino_nano_33_ble_rev2/pins.c @@ -0,0 +1,74 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2017 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "shared-bindings/board/__init__.h" + +static const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_P1_11) }, + { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_P1_12) }, + { MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_P1_15) }, + { MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_P1_13) }, + { MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_P1_14) }, + { MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_P0_23) }, + { MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_P0_21) }, + { MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_P0_27) }, + { MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_P1_02) }, + + { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_P0_04) }, + { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_P0_05) }, + { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_P0_30) }, + { MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_P0_29) }, + + { MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_P0_31) }, + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_P0_31) }, + + { MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_P0_02) }, + { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_P0_02) }, + + { MP_ROM_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_P0_28) }, + { MP_ROM_QSTR(MP_QSTR_A7), MP_ROM_PTR(&pin_P0_03) }, + + { MP_ROM_QSTR(MP_QSTR_SDA1), MP_ROM_PTR(&pin_P0_14) }, + { MP_ROM_QSTR(MP_QSTR_SCL1), MP_ROM_PTR(&pin_P0_15) }, + + { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_P1_01) }, + { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_P1_08) }, + + { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_P0_13) }, + { MP_ROM_QSTR(MP_QSTR_LED_Y), MP_ROM_PTR(&pin_P0_13) }, + + { MP_ROM_QSTR(MP_QSTR_LED_G), MP_ROM_PTR(&pin_P1_09) }, + + { MP_ROM_QSTR(MP_QSTR_RGB_LED_R), MP_ROM_PTR(&pin_P0_24) }, + { MP_ROM_QSTR(MP_QSTR_RGB_LED_G), MP_ROM_PTR(&pin_P0_16) }, + { MP_ROM_QSTR(MP_QSTR_RGB_LED_B), MP_ROM_PTR(&pin_P0_06) }, + + // Power line to IMU, pressure, temperature and humidity sensors. + { MP_ROM_QSTR(MP_QSTR_VDD_ENV), MP_ROM_PTR(&pin_P0_22) }, + + // Pullup voltage for SDA1 and SCL1 + { MP_ROM_QSTR(MP_QSTR_R_PULLUP), MP_ROM_PTR(&pin_P1_00) }, + + { MP_ROM_QSTR(MP_QSTR_MIC_PWR), MP_ROM_PTR(&pin_P0_17) }, + { MP_ROM_QSTR(MP_QSTR_PDMCLK), MP_ROM_PTR(&pin_P0_26) }, + { MP_ROM_QSTR(MP_QSTR_PDMDIN), MP_ROM_PTR(&pin_P0_25) }, + + { MP_ROM_QSTR(MP_QSTR_INT_APDS), MP_ROM_PTR(&pin_P0_19) }, + { MP_ROM_QSTR(MP_QSTR_INT_BMI_1), MP_ROM_PTR(&pin_P0_11) }, + { MP_ROM_QSTR(MP_QSTR_INT_BMI_2), MP_ROM_PTR(&pin_P0_20) }, + { MP_ROM_QSTR(MP_QSTR_INT_LPS), MP_ROM_PTR(&pin_P0_12) }, + + { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_P1_03) }, + { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_P1_10) }, + + { MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) }, + { MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) }, + { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, +}; + +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); From 32f96dbd342dfab2164a41719c6ed697effc4fac Mon Sep 17 00:00:00 2001 From: applecuckoo Date: Wed, 19 Jun 2024 20:33:17 +1200 Subject: [PATCH 159/227] fix typo --- ports/nordic/boards/arduino_nano_33_ble_rev2/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/nordic/boards/arduino_nano_33_ble_rev2/README.md b/ports/nordic/boards/arduino_nano_33_ble_rev2/README.md index fd3e4fec132c..446b5941bccd 100644 --- a/ports/nordic/boards/arduino_nano_33_ble_rev2/README.md +++ b/ports/nordic/boards/arduino_nano_33_ble_rev2/README.md @@ -21,7 +21,7 @@ Pins `board.MIC_PWR`, `board.PDMDIN`, and `board.PDMCLK` are for the Nano 33 BLE Pin `board.INT_APDS` is the interrupt pin from the APDS-9960. -Pin `board.INT_BMI_1` and `board.INT_BMI_2` are the two interrupt pins from the BMI270. +Pins `board.INT_BMI_1` and `board.INT_BMI_2` are the two interrupt pins from the BMI270. Pin `board.INT_LPS` is the interrupt pin from the LPS22. From b053de23c050a41ed22fc4b5fb2d78bb11b0f2c4 Mon Sep 17 00:00:00 2001 From: vboxuser Date: Wed, 19 Jun 2024 15:39:12 -0300 Subject: [PATCH 160/227] add ARCHI NEWSAN board --- ports/raspberrypi/boards/archi/board.c | 9 ++ .../raspberrypi/boards/archi/mpconfigboard.h | 24 ++++++ .../raspberrypi/boards/archi/mpconfigboard.mk | 16 ++++ .../boards/archi/pico-sdk-configboard.h | 7 ++ ports/raspberrypi/boards/archi/pins.c | 84 +++++++++++++++++++ 5 files changed, 140 insertions(+) create mode 100644 ports/raspberrypi/boards/archi/board.c create mode 100644 ports/raspberrypi/boards/archi/mpconfigboard.h create mode 100644 ports/raspberrypi/boards/archi/mpconfigboard.mk create mode 100644 ports/raspberrypi/boards/archi/pico-sdk-configboard.h create mode 100644 ports/raspberrypi/boards/archi/pins.c diff --git a/ports/raspberrypi/boards/archi/board.c b/ports/raspberrypi/boards/archi/board.c new file mode 100644 index 000000000000..e6a868ab2122 --- /dev/null +++ b/ports/raspberrypi/boards/archi/board.c @@ -0,0 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "supervisor/board.h" + +// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/raspberrypi/boards/archi/mpconfigboard.h b/ports/raspberrypi/boards/archi/mpconfigboard.h new file mode 100644 index 000000000000..60f686881858 --- /dev/null +++ b/ports/raspberrypi/boards/archi/mpconfigboard.h @@ -0,0 +1,24 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#define MICROPY_HW_BOARD_NAME "Archi RP2040" +#define MICROPY_HW_MCU_NAME "rp2040" + + +#define DEFAULT_I2C_BUS_SCL (&pin_GPIO3) +#define DEFAULT_I2C_BUS_SDA (&pin_GPIO2) + +#define DEFAULT_UART_BUS_TX (&pin_GPIO8) +#define DEFAULT_UART_BUS_RX (&pin_GPIO9) + +#define DEFAULT_SPI_BUS_SCK (&pin_GPIO6) +#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO7) +#define DEFAULT_SPI_BUS_MISO (&pin_GPIO4) + +#define MICROPY_HW_NEOPIXEL (&pin_GPIO24) +#define MICROPY_HW_NEOPIXEL_COUNT (64) + +#define BOARD_HAS_CRYSTAL 1 diff --git a/ports/raspberrypi/boards/archi/mpconfigboard.mk b/ports/raspberrypi/boards/archi/mpconfigboard.mk new file mode 100644 index 000000000000..220c2b1711db --- /dev/null +++ b/ports/raspberrypi/boards/archi/mpconfigboard.mk @@ -0,0 +1,16 @@ +USB_VID = 0x2E8A +USB_PID = 0x1043 +USB_PRODUCT = "ARCHI" +USB_MANUFACTURER = "NEWSAN" + +CHIP_VARIANT = RP2040 +CHIP_FAMILY = rp2 + +EXTERNAL_FLASH_DEVICES = "W25Q32JVxQ" + +CIRCUITPY__EVE = 1 +CIRCUITPY_PICODVI = 1 + +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_MPU6050 +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Pixel_Framebuf +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Led_Animation diff --git a/ports/raspberrypi/boards/archi/pico-sdk-configboard.h b/ports/raspberrypi/boards/archi/pico-sdk-configboard.h new file mode 100644 index 000000000000..66b57dfd13dc --- /dev/null +++ b/ports/raspberrypi/boards/archi/pico-sdk-configboard.h @@ -0,0 +1,7 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +// Put board-specific pico-sdk definitions here. This file must exist. diff --git a/ports/raspberrypi/boards/archi/pins.c b/ports/raspberrypi/boards/archi/pins.c new file mode 100644 index 000000000000..741e771ded85 --- /dev/null +++ b/ports/raspberrypi/boards/archi/pins.c @@ -0,0 +1,84 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "shared-bindings/board/__init__.h" + +STATIC const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_MPU_SDA), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_GP1), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_MPU_SCL), MP_ROM_PTR(&pin_GPIO1) }, + + { MP_ROM_QSTR(MP_QSTR_GP2), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_GP3), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO3) }, + + { MP_ROM_QSTR(MP_QSTR_GP4), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_GP5), MP_ROM_PTR(&pin_GPIO5) }, + + { MP_ROM_QSTR(MP_QSTR_GP6), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_GP7), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO7)}, + { MP_ROM_QSTR(MP_QSTR_GP8), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_GP9), MP_ROM_PTR(&pin_GPIO9) }, + { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO9) }, + + { MP_ROM_QSTR(MP_QSTR_B), MP_ROM_PTR(&pin_GPIO10) }, + { MP_ROM_QSTR(MP_QSTR_GP10), MP_ROM_PTR(&pin_GPIO10) }, + + { MP_ROM_QSTR(MP_QSTR_GP11), MP_ROM_PTR(&pin_GPIO11) }, + { MP_ROM_QSTR(MP_QSTR_GP12), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_GP13), MP_ROM_PTR(&pin_GPIO13) }, + { MP_ROM_QSTR(MP_QSTR_GP14), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_GP15), MP_ROM_PTR(&pin_GPIO15) }, + { MP_ROM_QSTR(MP_QSTR_GP16), MP_ROM_PTR(&pin_GPIO16) }, + { MP_ROM_QSTR(MP_QSTR_GP17), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_GP18), MP_ROM_PTR(&pin_GPIO18) }, + + { MP_ROM_QSTR(MP_QSTR_D), MP_ROM_PTR(&pin_GPIO19) }, + { MP_ROM_QSTR(MP_QSTR_GP19), MP_ROM_PTR(&pin_GPIO19) }, + + { MP_ROM_QSTR(MP_QSTR_MIC_DATA), MP_ROM_PTR(&pin_GPIO20) }, + { MP_ROM_QSTR(MP_QSTR_GP20), MP_ROM_PTR(&pin_GPIO20) }, + + { MP_ROM_QSTR(MP_QSTR_MIC_CLOCK), MP_ROM_PTR(&pin_GPIO21) }, + { MP_ROM_QSTR(MP_QSTR_GP21), MP_ROM_PTR(&pin_GPIO21) }, + + { MP_ROM_QSTR(MP_QSTR_BUZZER), MP_ROM_PTR(&pin_GPIO22) }, + { MP_ROM_QSTR(MP_QSTR_GP22), MP_ROM_PTR(&pin_GPIO22) }, + + { MP_ROM_QSTR(MP_QSTR_A), MP_ROM_PTR(&pin_GPIO23) }, + { MP_ROM_QSTR(MP_QSTR_GP23), MP_ROM_PTR(&pin_GPIO23) }, + + { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO24) }, + { MP_ROM_QSTR(MP_QSTR_GP24), MP_ROM_PTR(&pin_GPIO24) }, + + { MP_ROM_QSTR(MP_QSTR_C), MP_ROM_PTR(&pin_GPIO25) }, + { MP_ROM_QSTR(MP_QSTR_GP25), MP_ROM_PTR(&pin_GPIO25) }, + + { MP_ROM_QSTR(MP_QSTR_GP26), MP_ROM_PTR(&pin_GPIO26) }, + { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) }, + + { MP_ROM_QSTR(MP_QSTR_GP27), MP_ROM_PTR(&pin_GPIO27) }, + { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO27) }, + + { MP_ROM_QSTR(MP_QSTR_GP28), MP_ROM_PTR(&pin_GPIO28) }, + { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO28) }, + + { MP_ROM_QSTR(MP_QSTR_GP29), MP_ROM_PTR(&pin_GPIO29) }, + { MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO29) }, + + { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, + { MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) }, + { MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) }, +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); From 70901164445e7c69d8178284d1e26cab4d418c30 Mon Sep 17 00:00:00 2001 From: Eric Almendras Date: Wed, 19 Jun 2024 16:00:49 -0300 Subject: [PATCH 161/227] add frozen modules for ARCHI NEWSAN board --- .gitmodules | 9 +++++++++ frozen/Adafruit_CircuitPython_Led_Animation | 1 + frozen/Adafruit_CircuitPython_MPU6050 | 1 + frozen/Adafruit_CircuitPython_Pixel_Framebuf | 1 + 4 files changed, 12 insertions(+) create mode 160000 frozen/Adafruit_CircuitPython_Led_Animation create mode 160000 frozen/Adafruit_CircuitPython_MPU6050 create mode 160000 frozen/Adafruit_CircuitPython_Pixel_Framebuf diff --git a/.gitmodules b/.gitmodules index 510991a5a391..c2e219475053 100644 --- a/.gitmodules +++ b/.gitmodules @@ -386,3 +386,12 @@ [submodule "frozen/Adafruit_CircuitPython_Bitmap_Font"] path = frozen/Adafruit_CircuitPython_Bitmap_Font url = https://github.com/adafruit/Adafruit_CircuitPython_Bitmap_Font +[submodule "frozen/Adafruit_CircuitPython_MPU6050"] + path = frozen/Adafruit_CircuitPython_MPU6050 + url = https://github.com/adafruit/Adafruit_CircuitPython_MPU6050 +[submodule "frozen/Adafruit_CircuitPython_Pixel_Framebuf"] + path = frozen/Adafruit_CircuitPython_Pixel_Framebuf + url = https://github.com/adafruit/Adafruit_CircuitPython_Pixel_Framebuf +[submodule "frozen/Adafruit_CircuitPython_Led_Animation"] + path = frozen/Adafruit_CircuitPython_Led_Animation + url = https://github.com/adafruit/Adafruit_CircuitPython_Led_Animation diff --git a/frozen/Adafruit_CircuitPython_Led_Animation b/frozen/Adafruit_CircuitPython_Led_Animation new file mode 160000 index 000000000000..251bcd13cf14 --- /dev/null +++ b/frozen/Adafruit_CircuitPython_Led_Animation @@ -0,0 +1 @@ +Subproject commit 251bcd13cf14da68bd176d6d2d97b844fac5cdd5 diff --git a/frozen/Adafruit_CircuitPython_MPU6050 b/frozen/Adafruit_CircuitPython_MPU6050 new file mode 160000 index 000000000000..58a9a05c0c4a --- /dev/null +++ b/frozen/Adafruit_CircuitPython_MPU6050 @@ -0,0 +1 @@ +Subproject commit 58a9a05c0c4ada11ea9f18c953f62eab97b94c17 diff --git a/frozen/Adafruit_CircuitPython_Pixel_Framebuf b/frozen/Adafruit_CircuitPython_Pixel_Framebuf new file mode 160000 index 000000000000..b09586b52dcf --- /dev/null +++ b/frozen/Adafruit_CircuitPython_Pixel_Framebuf @@ -0,0 +1 @@ +Subproject commit b09586b52dcfd51e8730a126899b4128df258a8c From 0ab42ed9c2fc9054fe30734986e458881b3609f0 Mon Sep 17 00:00:00 2001 From: Eric Almendras Date: Wed, 19 Jun 2024 16:08:43 -0300 Subject: [PATCH 162/227] remove unnecesary frozen module --- frozen/Adafruit_CircuitPython_Led_Animation | 1 - ports/raspberrypi/boards/archi/mpconfigboard.mk | 1 - 2 files changed, 2 deletions(-) delete mode 160000 frozen/Adafruit_CircuitPython_Led_Animation diff --git a/frozen/Adafruit_CircuitPython_Led_Animation b/frozen/Adafruit_CircuitPython_Led_Animation deleted file mode 160000 index 251bcd13cf14..000000000000 --- a/frozen/Adafruit_CircuitPython_Led_Animation +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 251bcd13cf14da68bd176d6d2d97b844fac5cdd5 diff --git a/ports/raspberrypi/boards/archi/mpconfigboard.mk b/ports/raspberrypi/boards/archi/mpconfigboard.mk index 220c2b1711db..023251c6a25d 100644 --- a/ports/raspberrypi/boards/archi/mpconfigboard.mk +++ b/ports/raspberrypi/boards/archi/mpconfigboard.mk @@ -13,4 +13,3 @@ CIRCUITPY_PICODVI = 1 FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_MPU6050 FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Pixel_Framebuf -FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Led_Animation From 86f8d93c2782d8359e508ce1c956dd792807317a Mon Sep 17 00:00:00 2001 From: Eric Almendras Date: Wed, 19 Jun 2024 16:09:32 -0300 Subject: [PATCH 163/227] remove board has crystal unnecesary in rp2040 boards --- ports/raspberrypi/boards/archi/mpconfigboard.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/ports/raspberrypi/boards/archi/mpconfigboard.h b/ports/raspberrypi/boards/archi/mpconfigboard.h index 60f686881858..b6878c415a73 100644 --- a/ports/raspberrypi/boards/archi/mpconfigboard.h +++ b/ports/raspberrypi/boards/archi/mpconfigboard.h @@ -20,5 +20,3 @@ #define MICROPY_HW_NEOPIXEL (&pin_GPIO24) #define MICROPY_HW_NEOPIXEL_COUNT (64) - -#define BOARD_HAS_CRYSTAL 1 From a17517fc974b11d6f758fe8d9bd83a507c993c6c Mon Sep 17 00:00:00 2001 From: applecuckoo Date: Thu, 20 Jun 2024 07:43:34 +1200 Subject: [PATCH 164/227] add exception for CI check --- tools/ci_check_duplicate_usb_vid_pid.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/ci_check_duplicate_usb_vid_pid.py b/tools/ci_check_duplicate_usb_vid_pid.py index 76bc1e667586..2fde26cfd690 100644 --- a/tools/ci_check_duplicate_usb_vid_pid.py +++ b/tools/ci_check_duplicate_usb_vid_pid.py @@ -66,6 +66,7 @@ "0x303A:0x8166": ["yd_esp32_s3_n8r8", "yd_esp32_s3_n16r8"], "0x2341:0x056B": ["arduino_nano_esp32s3", "arduino_nano_esp32s3_inverted_statusled"], "0x2E8A:0x1020": ["waveshare_rp2040_plus_4mb", "waveshare_rp2040_plus_16mb"], + "0x2341:0x805A": ["arduino_nano_33_ble", "arduino_nano_33_ble_rev2"] } cli_parser = argparse.ArgumentParser( From 59954cfd063fcf88b7f3bec5df4e1e17648b6e51 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Wed, 19 Jun 2024 16:20:16 -0400 Subject: [PATCH 165/227] Update tools/ci_check_duplicate_usb_vid_pid.py - add comma --- tools/ci_check_duplicate_usb_vid_pid.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/ci_check_duplicate_usb_vid_pid.py b/tools/ci_check_duplicate_usb_vid_pid.py index 2fde26cfd690..60e2a6352ac0 100644 --- a/tools/ci_check_duplicate_usb_vid_pid.py +++ b/tools/ci_check_duplicate_usb_vid_pid.py @@ -66,7 +66,7 @@ "0x303A:0x8166": ["yd_esp32_s3_n8r8", "yd_esp32_s3_n16r8"], "0x2341:0x056B": ["arduino_nano_esp32s3", "arduino_nano_esp32s3_inverted_statusled"], "0x2E8A:0x1020": ["waveshare_rp2040_plus_4mb", "waveshare_rp2040_plus_16mb"], - "0x2341:0x805A": ["arduino_nano_33_ble", "arduino_nano_33_ble_rev2"] + "0x2341:0x805A": ["arduino_nano_33_ble", "arduino_nano_33_ble_rev2"], } cli_parser = argparse.ArgumentParser( From 59e604c783186d65665ddfaa72ea922cbb2df66c Mon Sep 17 00:00:00 2001 From: Tim Date: Thu, 20 Jun 2024 09:58:37 -0700 Subject: [PATCH 166/227] move pwm test to tests/circuitpython-manual --- .../circuitpython-manual/pwmio}/README.md | 6 ++ .../circuitpython-manual/pwmio}/code.py | 0 .../circuitpython-manual/pwmio}/duty.py | 0 .../pwmio/pwm_flaw_explainer.png | Bin 0 -> 306697 bytes .../pwmio}/pwm_plot_explainer.png | Bin tools/pwm/pr.md | 95 ------------------ tools/pwm/pwm_rounding.png | Bin 31492 -> 0 bytes tools/pwm/ramps_esp32s2_905.png | Bin 22386 -> 0 bytes tools/pwm/ramps_nrf52840_901.png | Bin 26353 -> 0 bytes tools/pwm/ramps_rp2040_904.png | Bin 29074 -> 0 bytes tools/pwm/ramps_samd21_tc_910.png | Bin 26196 -> 0 bytes tools/pwm/ramps_samd21_tc_910_fixed.png | Bin 25190 -> 0 bytes tools/pwm/ramps_samd21_tcc_910.png | Bin 25373 -> 0 bytes tools/pwm/ramps_samd21_tcc_910_fixed.png | Bin 23646 -> 0 bytes tools/pwm/ramps_samd51_tc_910.png | Bin 30159 -> 0 bytes tools/pwm/ramps_samd51_tc_910_fixed.png | Bin 28474 -> 0 bytes tools/pwm/ramps_samd51_tcc_910.png | Bin 30925 -> 0 bytes tools/pwm/ramps_samd51_tcc_910_fixed.png | Bin 27905 -> 0 bytes tools/pwm/samd21_51_board_pinouts.png | Bin 1103760 -> 0 bytes tools/pwm/samd51_benchmarks.png | Bin 69586 -> 0 bytes tools/pwm/samd_tc_tcc_datasheet_blurbs.png | Bin 663649 -> 0 bytes tools/pwm/slow_samd21_tc_910_fixed.png | Bin 12173 -> 0 bytes 22 files changed, 6 insertions(+), 95 deletions(-) rename {tools/pwm => tests/circuitpython-manual/pwmio}/README.md (90%) rename {tools/pwm => tests/circuitpython-manual/pwmio}/code.py (100%) rename {tools/pwm => tests/circuitpython-manual/pwmio}/duty.py (100%) create mode 100644 tests/circuitpython-manual/pwmio/pwm_flaw_explainer.png rename {tools/pwm => tests/circuitpython-manual/pwmio}/pwm_plot_explainer.png (100%) delete mode 100644 tools/pwm/pr.md delete mode 100644 tools/pwm/pwm_rounding.png delete mode 100644 tools/pwm/ramps_esp32s2_905.png delete mode 100644 tools/pwm/ramps_nrf52840_901.png delete mode 100644 tools/pwm/ramps_rp2040_904.png delete mode 100644 tools/pwm/ramps_samd21_tc_910.png delete mode 100644 tools/pwm/ramps_samd21_tc_910_fixed.png delete mode 100644 tools/pwm/ramps_samd21_tcc_910.png delete mode 100644 tools/pwm/ramps_samd21_tcc_910_fixed.png delete mode 100644 tools/pwm/ramps_samd51_tc_910.png delete mode 100644 tools/pwm/ramps_samd51_tc_910_fixed.png delete mode 100644 tools/pwm/ramps_samd51_tcc_910.png delete mode 100644 tools/pwm/ramps_samd51_tcc_910_fixed.png delete mode 100644 tools/pwm/samd21_51_board_pinouts.png delete mode 100644 tools/pwm/samd51_benchmarks.png delete mode 100644 tools/pwm/samd_tc_tcc_datasheet_blurbs.png delete mode 100644 tools/pwm/slow_samd21_tc_910_fixed.png diff --git a/tools/pwm/README.md b/tests/circuitpython-manual/pwmio/README.md similarity index 90% rename from tools/pwm/README.md rename to tests/circuitpython-manual/pwmio/README.md index b5d11c0b98e5..11bcd4de6651 100644 --- a/tools/pwm/README.md +++ b/tests/circuitpython-manual/pwmio/README.md @@ -31,3 +31,9 @@ These tests can be used to assess how well the PWM API delivers expected behavio 7. Changes in frequency may (and will usually) result in a transient glitch in frequency and duty cycle. PWM hardware is generally not designed for glitch-free frequency transitions. 8. PWM frequency and duty cycle should be jitter-free. + +## Examples of PWM flaws + +The plot at the top of this page depicts data PWM gathered from a device with an API that displays all of the expected behavior listed above. The plots below show how the tools reveal flaws in the behavior of PWM APIs that are not as complete. + + diff --git a/tools/pwm/code.py b/tests/circuitpython-manual/pwmio/code.py similarity index 100% rename from tools/pwm/code.py rename to tests/circuitpython-manual/pwmio/code.py diff --git a/tools/pwm/duty.py b/tests/circuitpython-manual/pwmio/duty.py similarity index 100% rename from tools/pwm/duty.py rename to tests/circuitpython-manual/pwmio/duty.py diff --git a/tests/circuitpython-manual/pwmio/pwm_flaw_explainer.png b/tests/circuitpython-manual/pwmio/pwm_flaw_explainer.png new file mode 100644 index 0000000000000000000000000000000000000000..02d58e8edbba03037b67711514b491f8cd4d5bb9 GIT binary patch literal 306697 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μHcCLw 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≪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%0Dt|oIg1W4(3pGe z;l?(k(yV1B31p}qd&n0cO9`pTs6>wGfbN%LA=NsiX_-E$cyU*p1eT^oInnUO)Tyc2 zEvwvwlRCd2;fu>Jlx|d(mhVqU)>QSWue{nR%@^#~lrW>XcM_75I-P4{R*#d`38&@X zqxCK;eoVyV)r#jZVx}zdQc)(Y3Yy7i5r=gZ}P(TR|ifsY{#Yi@A4~tFz>Vj zLly%wKs1UVd9By*st1h?&n$gaF2x0_!d5~FPHl6m5}pk+&F0|vSVB;0r>-jB;aQ%q z*@cIjtLEwY%IrDWE}nDS&}|J_Ngdjfdj*HOsTg{YF1oFbzwMT1JHCq{v#Fdif!1t|ld^6xG9Az)O)%A-mCrY4 z_2|Oz#6f6({c<|yx9+IFPRkAJdPS=sQEQJ$i*v@ERpPe2mH>EsE#< zPK>Rw#kaz1-IiIju$G4HNgN3*fzl(bUsSUN`>j{>(OQ2nV5%NEb*Ne`>LiqfyBeJRghwUPZbN!vcK0_>=B-5uXob6@9}Oj7&I(3kKip|V^`#dCT5 zn0M|!oS~<@w|BP;9Fe=7B+tF+wcDxv`f>p~cP1(@QTkxBX)@=PuKw7=Z;gMeW>MN| zk1^c zl-<)a^T9@Q?)7@rs?5n=&+-0(Ysp<-hSsIN5jIjrD6jn4#zvtw{qGg|vn z0H2ujQ1f-Jh4eQzn^Q~ctSk>_I_5LYn{eZd^ZD}m<5r{D`k|r1dhVA=PN&Zv-L*r9 zh4q=0nt8S6UH-q;94FgYBA3htae!>r?PpwOgL_T;kzdPaa0Pr?t@d!uPlb-ly{{%o zd4G=_Raoa6M-)}1958w^;xO5t@LBt8RKMER#T0*jEwYl?p>^$l>N{)a?7@MfY^!Zd z6DVI=zK1JkimlnBgpsNAwd%}xtY!0AeXAjja_h2gw6?ew>$L(t%`FjE5nR)`PSlTM zv6WT0>9x;0e%?;4*9!T#w6$8?KR~)~!)|lBvbBFpk^bv+Qg_q}*gD~}DZJ43E)#s? z9B6ouS3ei9wSr#HPZWUO3n;fsES@vYTsEtub0cZ94;HgVSS0&44dr)rh8Yx=dOeE(C?Mwrz}qF74<${pYT~JIgHjp#ThPR%N40}9l&&rcF4aKYcKch z86olRXA`=Tu?jk1_h@~>68*5M3QCt0L+oPrVg@{S0 zZ^Lp|m3>McVxDK;o~ZXtto~~e(VV6~F#!Y=7?$tSn(SYLgEH{>tYzLxHO$GZE|=0= zou_}zFK|6QJpx0xnB-@-2|Ye$T%67b6w*ERLbYD?=Utpzefp`n{Zi~cleIj~HOc+< z8fe<-6WBW7m&aX#1NZmH9ZKcfpCsVjc^oI6v>pp9v)@3HLMnSz`yZSYe0`ukO%_k5 znP1pw{>0jt(6uxMffu#7yHFa7*J*Kr` -

    Datasheet summaries of samd21 and samd51 TC and TCC peripherals - -![](samd_tc_tcc_datasheet_blurbs.png) - - - -Conditional compilations and `if` statements in `PWMOUT.c` provide separate handling for each of the four combinations of samd21/samd51 and TC/TCC. The code modifications consist of (1) removing synchronization delays and PWM configuration which were found to do more harm than good, and (2) adding `if` statements to disallow rounding down to zero. - -## Testing - -All combinations of samd21/samd51 and TC/TCC were tested separately by selecting board pins which support only one or the other of TC or TCC. The boards and pins used (outlined in red) are shown in the diagram below: - -
    -Pins implementing TC and TCC on samd21/51 - -![](samd21_51_board_pinouts.png) - -
    - -Data gathered from each of the four types of PWM peripheral before and after code modifications are shown below. Details of the test tools and procedure are [here](/tools/pwm/README.md). - -### samd51 TCC - -| Before | After | -| ----------- | ---------- | -| ![](ramps_samd51_tcc_910.png) | ![](ramps_samd51_tcc_910_fixed.png) | - -In the "before" plot, the variation with frequency of call throughput (shown in cyan) and PWM ramp slope points out the frequency-dependent delay found when setting duty cycle. The clutter in duty cycle and frequency measurements results from zero-rounding. Neither is seen in the "after" plot - the PWM ramp slope is nearly constant, and duty cycle and frequency measurements contain no outliers other than at frequency transitions. - -### samd51 TC - -| Before | After | -| ----------- | ---------- | -| ![](ramps_samd51_tc_910.png) | ![](ramps_samd51_tc_910_fixed.png) | - -These results are very similar to those for TCC. Both delay and rounding artifacts are seen in the "before" plot and not in the "after" plot. - -### samd21 TCC - -| Before | After | -| ----------- | ---------- | -| ![](ramps_samd21_tcc_910.png) | ![](ramps_samd21_tcc_910_fixed.png) | - -No frequency-dependent delay is seen for samd21 TCC, only rounding artifacts. Compared to samd51, call throughput is ~4x slower (as would be expected for samd21's lower clock rate). No rounding artifacts are seen in the "after" plot. - -### samd21 TC - -| Before | After | -| ----------- | ---------- | -| ![](ramps_samd21_tc_910.png) | ![](ramps_samd21_tc_910_fixed.png) | - -So, this is the problem child. samd21 TC does not provide double buffering of duty cycle registers, so writing to registers may or may not induce duty cycle artifacts depending on when exactly the write happens. My takeaway regarding samd21 TC is, don't expect too much of it, but it's fine for less demanding applications. Here is samd21 tc updating once a second just fine: - -![](slow_samd21_tc_910_fixed.png) - -High-rate samd21 TC should work well if updated in a DMA/ISR framework like that implemented in `audiopwmio` in other ports. A logical next step for samd21/51 is to implement `audiopwmio`. - -## Other ports - -This PR describes PWM fix-ups for samd21/51, but a quick look indicates that other ports could use some attention as well. Here is some test data for three other ports. - -### CircuitPython 9.04 on RP2040 - - - -This looks pretty good except it shows the same rounding down to zero issue as samd51. Probably all ports have this. - -### CircuitPython 9.01 on nRF52840 - - - -Similar to above, looks pretty good except for rounding to zero. Tops out below 5 MHz due to lower clock speed. - -### CircuitPython 9.05 on ESP32 - - - -This is more complicated - looks like frequency tops out at 10 kHz, but duty cycle continues to be adjusted downward as if frequency has increased. Needs investigation. diff --git a/tools/pwm/pwm_rounding.png b/tools/pwm/pwm_rounding.png deleted file mode 100644 index 9db3296828f10569265fb742f6bcdff4686914fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31492 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 W`#`0L1FW-j*`N?}aEYPwoqquZC4;{J diff --git a/tools/pwm/ramps_nrf52840_901.png b/tools/pwm/ramps_nrf52840_901.png deleted file mode 100644 index bc702740050ef65f88994891e2e33c14c338aa73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26353 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 Z=Wv7TH)&Z+fxof=AvCXQ6slQ2_&=z-hED(h diff --git a/tools/pwm/ramps_rp2040_904.png b/tools/pwm/ramps_rp2040_904.png deleted file mode 100644 index 328854c9528f3d6521247b409e7d1d6b67906cee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29074 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 diff --git a/tools/pwm/ramps_samd21_tc_910_fixed.png b/tools/pwm/ramps_samd21_tc_910_fixed.png deleted file mode 100644 index 47fa431b976bd2ee20c7e2fdeae4f5a4362aaf7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25190 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 diff --git a/tools/pwm/ramps_samd21_tcc_910.png b/tools/pwm/ramps_samd21_tcc_910.png deleted file mode 100644 index f4499b24d822faeb1345b4cc0865212d5e346049..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25373 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
    9MCT3Tt>E=bXfVdu>&02E_@;VNB73ftA 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

    TlOe-ir$fIeFgyU49rc5F4UOdrBxM3tXB6d(% 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 b&zFBDP?P^a`V9O{JRChOBh5;6WcdF8-jI-~ diff --git a/tools/pwm/ramps_samd51_tcc_910.png b/tools/pwm/ramps_samd51_tcc_910.png deleted file mode 100644 index 0d1623598549436a765186cee9fd84b5d56b90fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30925 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 WXBrv;b9#KdiT*PdTAMfE3vCZ<41 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 diff --git a/tools/pwm/ramps_samd51_tcc_910_fixed.png b/tools/pwm/ramps_samd51_tcc_910_fixed.png deleted file mode 100644 index e39171679f6a9e3c532466514d0edf61c85c357d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27905 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 A3jhEB diff --git a/tools/pwm/samd21_51_board_pinouts.png b/tools/pwm/samd21_51_board_pinouts.png deleted file mode 100644 index 117509c00e0e49cc08d0eb407ed8d5ad913af250..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1103760 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

    OJ47wMG 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%0A&CW0#s@Um?8e5kC03MD%K}6$ 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

      x1#vz*Z`W=)10i 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⁣of1Xa=XMccYBGj{Y|Y0q$o#7+f-~ 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%0D2wB7xjv7%(NBH96;{-*&B8Nw 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¥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 )Pj%@oj_xo$ts} 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 br_ZFQpFv}4(S>)7+xX<>oIW|2Rb2ZAPWjLF diff --git a/tools/pwm/samd_tc_tcc_datasheet_blurbs.png b/tools/pwm/samd_tc_tcc_datasheet_blurbs.png deleted file mode 100644 index 3afac9d2202057b75593ebc451780c9432c62d58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 663649 zcmeFZcRZH;|37?I5-mzpDj}PanNdhaL`FuGy?0rmjG`i;%uo>_Ss{BRNt7hX-evER zGJnsb>-v1hegARa|J?uG*W>zJpVHZR9_R6XzhAHCdL03(=jC^7rQb>-k#;DYl~E^= zHp`PpWD6AJ_{rUuhR5-LWKPlw8Wi~F28F3Ve!t&Y_M-Cz2Xp6ZMvi7A3wsAUv!hNX zj%H@|PL>YNQ=2Lz@S>x{i_SQj897@y*fVNa*_n|vEL|A+1Q-=v>>2rw^9wTa@r&_^ zis2Wk%8aTq8iH|*$4Debl7h@>4Y$YRUDup7HJ7GmrtC(Zvp?vj*dWbFz3~~vGx7*7 zbsmmh5&nc=$@CYAJ6#V^+rD^_c=lnk&-_mEjbt0i&N5O`Gg2}=Z|PWEme>0HQHb(T z^!`PQ3?8S3w#CPu=QFz}oPN#OMo>#LDulB9kALUc6U&o*b=VfKo_fW}=}cl{>uZ77 zdJPSY*4IwX&hHuaWiin9NG>v3>=$Yq6kB(a3mpdZ%WT&=v zi=5}mDJHV!=4QM$zR_}ecGh}UV&8W1d-v`g-?zQ6q-0=lP)=ES2VG#2+NC_*peIib z?cBLj`;_;lz-nnt%?QU*x}&<6n}klhNJ~phNZ5#%q@=LxPBh=WL>G9wy=Y zV&bZ^bLrq%(IG!-yt%ctHNH}7N5{bU`1V$>I|mOQ44?S-me0qX{pZe(kZWpaTp4fW z+j&UrT>uR`$I+v*N$PzgBMPy?cK$&@tYTvHR8%46n{4C~A8Mv)J&cVFq`vj$jg(vv z{q2&H>tPcoY+K*pFNU}1W<<&}xcm9|kj!G+YzOgfE3+SY>x3;VEQ+s9ozK!Q%XCv7 z85yx{%Slp;SIf{E=C^%7BS^3(ogU-O9M{a`{zOR-R-TwXiAB(x%d-;;<@slS3 z{{D<&VlgjXyfF9mz*U%ijC>dofe#l~kz92SyP0?E*2cm5Sa}_t{YT{P$Lp22+IAK` z4BX2rY~4ZqXkl(H(Piwr-|gFd{r!&B*B?B2Qjb@2^73vm?0s|dU3ImQg~he%#nY>0 zJ;g5EwY9acEgNsuFkHW{m7%M*;Av)NHr`njcK`nUwET&0sWfHR7vDEE&Aqg9*c(J`E&63Ct`f2AE?u{xNAZVTXYq>ywKpn*Zv%T+IRAzV_|vnyySx9*%}sBO zvjyAM%9kf;xFQs-92^{Y@oVu|VO(KBKBY0joE-#xw$sZr*=qM z=jq})?~OF21m3^D-H1Qhw!6Znyvg&Px191xj zu*4huA3S(qKGiYVRU&I?`C|B6YFKOG)x_3v&l3FlLarydUr9+x;bQmo>QL5mG71W{ zv{RM$_Y3$H6co&M&kWQAzJ2>Pty?^;nJbv#6j%Siz-C6>JZsjkO-)%#5=?#{K761a zcpp^KFC@64^jJjA)WX7`>8e8%P7ZM!wn-Hh7W$_=^-!c>@@ur*<23YHQ-ZrGS-B)} zHT<7C@jUIJz~2HfLjF7@Wp1YCu+#7trjsX6S~ex`kdTm|VEXX!;}LfDyJzn1i`ut?(*RR3;>OfOd(^tmTTSrGnf8+A(%ums8CwHCduD?E2Ca_ZxrD)H|oI&%hON@7bBV!aBzB z>FM{w!}r97l8t@O7?|>27sp1a|Ll=>k>`0*(oCC0+*NGwv9e}iXR$+GUS9Q|MRsi4 zR#jQqm;Cu^?l)_p$;rvr4m}L)>?t-ehq(VOs_Oy&R@2O|T2p4+x6eW zrPCW9K74pFLyIUD7IB{M^X)oByjDcEP%%8m=5cd#Ydx6q;)VbGyz|SKFRxs^dOEAc zL^xLGmEndnceXPL3eMkiIo8$LiKE=xTj{HzrNx!{+r`D@v8a<=>MmV9J_Ni|4vd=msAYz13*>{MuA^ z>F@qPl#xgp_VdT>+6B+YNz@m+jET66hO1jM9y#LMRdP+hq5Guzg$r5jDRC>SA}pNWICE{H zUDnlA7=N3coqgWpR76CCZTsth;bBW%)Q#a&7M~v*O?8*8Ojl9i=afwEc63dVAJu(r zIQ-?=eTGxTwX0YOH+OfTcKhS|j?)LBN}w)hrhe!A=KXZRAa+KIFU%rf$oc(vPmZ+F~6N!@U{A4@%rk_85KB_l=t$XzJ z>C>odoHuiEh`G4A8?E#3bDX@}ZMOE#k9Qmpeh?PsTW!q5$M?{rCiv>wio3eHx`_KM z%gviNhnckf;?=ixU`PhGbk7W2Jz zYq%*TM0vG|>CByYt+YSb;;HHBrYL{&lU=dc9_o5}%BH3)3=9lP(fqe@($I{Q@PoO* z`hoGbTD8T~I`!=b^QF0=hM~Cz$&|vvNAdBDbssO-)U%JA#ZB>yk1DK#yXGd z=F-Z_4eVjnwC2L1qFuXpOW(M0630u?&}nsPAv`j&|HluR3a{0(=gu7w5D2?>Z)<5; zSpeGQv17sLJUJE(4317t*%x`pHg9gsxO76dz~0WuKC#ii+1k#LFP+?@>?zKbpiO*%84qs8ZCG~_W7kmqfSTmy#?WGxgUC85I@&r z7Z(@r?CNS9aek!4_G_xAp~b*kxhD7!<<6b&dwSwWbZe=*z|71HK+7w~ zpNeR0$BrGt#_GCqr973#lxphKmVHOsI9M0QjQhgen>1F%cQQQC0AhI zWvgBhB$vpaI6FJhQQ%P1*!Zy0cZs^QwqTdk^ z5MbL?9Dy3b#l?m5y9e7EFHpCNiinW)@DR((%lrN351(1xo@08&@4CybN9=!t4Ie~j zzBEzL1At_Lsz+P}Z~5>39#q|>8Ws=DwVv+I9GFkLlrhbAgV0yMcia$@hlGr@viL;X_R_ zV{^gx?YS|xgIgZPTnV?H@&>taPyl?$YSz&sp@{e@3L`H#9U1Rqr);XUeaatrvAn&+X68 zsH{|~0$mpuq4h=Yb$MCY&8S76VuZH&pao9@4Qx7o{g>^^>gv?lbuX2Fv8$NSr}4m` zpq~Io2gRKIFQlArEOxPJ&$GcvX0dC3%>>wp)^Q@Hi{i?U54&=5a)7pp6Pc`hK>Ey? zwmh4?z~npz<&RS@r1baoHU2Q9V`O0=Lt{Wyx>)4MO0+yQC>D11M6EQd#)R9-(^Faj zfq_SkAAf)yit@pE^k}uMFwOq`3h4BSzc@KL0b@+EFJ8HJjh%%>CVKVCV%IgAefvK6 z?>aKQu<-NGP@KcBQlR#n9R97_wvBWa3D|Yymkmmk6c+Xl4c!e4+(zzu^X*${R3F>P z2K2BG_4U=(d7FyMl(`F5Ae z{|v_3Oln^M=4h?(mhACf_e}Ie<8~fzeFz?*s;~b!L~`u|5C zJ3r5=Y4BxBHhM+ALr?ek+KFyAU$51rY}4A^u{pBR6i=^Dik2^pa^tRrPe`t>2xL{P ziJgn&d4`)C6wL0|8=&CjuS5dnXgW#uiun#zU5<0P0e7c=NY}aWTHe( zmQ004Mct*owdL@Q2LQ&bB1`>&y!}&CA-WmK>FMM5hB7iU*^V69RHh%2k}~ANyYa{H z@QafRyxiQm`;TjBXgmlFl~z!oqz}4t+Ls))qw8?ON&-z`do`t~3`|bi)4W>y zXs~uGF77aJ501mw=!FaTzl&uaLa`?t>|ama+`_4p%F6oq)b+^UzujV^_oIWbu(8dCc(3?Act8zU{SkFKxY?Q& zFj4-nXE=~8-IMb*fG5%7*N&k=;8*gL!TKTSYrFUEl{YtM1C2E`H~*S+ZZG=xmYoMx zN8hutvF+Zo$9dp{3IWL0K6=hK$}3KDu(0^)mw6E15!JixwG|B*EKc8}lF8!0hezav zJ-n+P%{u~>IPirz25N_|#a zbf#8X1d8!-qqk(SjMEE_SFbVw64%!5IV9#>*f-G46C`&=Lt_t6l8lT@XSUa6?tk>0 z=LdT6?LRy`GBY=4f{k`i((5rw^~0zrd9=f!hPa`XKXV69dF)ARu6x91a>d1E^XQm4 zgQ%n5?5v|8{SE-VYCssEU;r)=6rrS~q#Nt2i}&~OZIqXF?>jpj*b=+L_N^yr7Uu^{#LlI-jm(liPMyRr38S-Hh<4 zs9d`a;mPu4`*^QTU3K-1-?sGIn?7s!`7x^F{-3Q|w+?rgiMzYIkGE#~0#fq1&zdIL z`O5Pa$xpqnPQSO#m#Et(@E+=x}~{B%Tpnc+unbEBA%71 zQX$!sH(3(#FXy#?5F2{{mzInc`&hy=W_;Y1Ad>jJ2#s0%hVIzqv)I8z<5QLVQvd1G zJ6qv_A3xrq@d9|BNm4h$;XN&nip+lgv8p-i+Ed+(!S3r*KcUaOH9Y>xZN?a!QJUiM zAF;Zlr2w6cXvP~iZF1-! zWuSX*XE^z2!zOaU_Pw;UNjwjdnyn!iK8K6|^cxl%OQ;KI=B(`O^3k`yX!O!Eo;-QE zDD$I*!HZ^Vv%aJ|v)gxMzMlRXG3+d6Y+^$2EnM+Ii5rh_oKc`Y)YZMU6#SZJqs@He zh*<_9(~hW2%ucm$+k32)On$0ph@snK?CALT`1InU!~7u!+^m?0XV0FMt}TrzJv|u> zNF?#QcT=)TT=%&9>gp=6RZ?>D9RM8#%3%AR@2n3%6eSzTNJo5E6Hj2>o?mJsvlb(oQ zE4P-slxHpL=*WLa+?9}Y(Dq}r4LoTL3=Cpj2?%VQ-P_yy1_frH$Q4E$L86wTy=OFD zt+~IyDn`f#D(lJVH=B5LUk|_ZETT1Ucv{~exvm5~k}hzwyu5t-YpbeQhjIlJM^(vg z260y&R8pesKq8y_dXD!Y*tk~OPjuD6jDqe2FjK3hy+BS(-^Lg z^8tE*;MogPLmCqx%xJuIUUhx`TTjnn2$8_CL|bunb;U*jC3QGgruO3SJ3xs|3#WMr z?&+h28+`c2^ahlmBrtrC)48|Xcpp4^)N1-*Q5PQuouam(fgOk)>|bwjnVXC2MQZAX z(Y=w@6iYvU{2%~4E2{)rG`i(nw)_$Xp;{^L*IG=V^_5}3IVbZIGFvZTmQWY zyrT{<#Wp$~##5*CbVTB@?q~yOkI7_RvBnM#S>q)q3%g!Xoc86e=PzPF8;ghXI^I(e z2WWr(=}85wAoQHmiH%oU^sd#0d;HzdyliZD&>u*lp`rUuc?g06v2twkBdM><>+SpGNaU4aNVOUU+(V6wh8i^QP50ufMlf3OduD z-vc2!rEW8{zKJNBpb1~Gf^w``F#|(G1PMYz-xnkY;$}m0upXdbqCHP)mFKgc9~t;Q z^bsbI*CX=5U$7TqO=6VTn3j~T4jg{ermU#L`LA~Vk|YIK{L)p?4I50b>SjY;S= zt@MM)$oF90wI4pbX>3%}8E&@DbNn@~)9pTVDE77{)gdt%U?fnXJ#=(jL*gLQXi?g9 zmxQ8~prv0(6>WbETIMv_DN5XBYilmhtXrXnv_MQw^xQae^(r5VLVcuQA+3GArS@Mq zB}3GGLUM$@{7BS^t>oI27WsDILP%Vb#bd|7qkWc^f_Dgrg&Y!>!>5C_VX<+7ARnLt za7sosyt|xdO}qElWlPszadL^M**mfCKtDLRxZXmUfCAA*R%jn_XFjR3^KyK7q^XpY z5C3m5Tz;;3y)pRwx8~-n*lBZEXgV?!qj%v0!7>d(6m$d zR&4zIp@gao%s)LC>+m(#LM7=&<5fnCM>KKP5W2M_11DITZqj0ZDMD4RC4Y25eV%^goWvFTD!fL?S4L+m=bz^|IF&R z4Ag%RycY+#g@hLF4S4~z-du8?g`#yYFfc-DV#>z3n+LBk6Z%tErcUQjlOOgP z+}QBVqFj(C`I~B>3*H+-^4iOx&XQ}qss>f7x>kbpW;dAqEH!doGFfh2sIgXt)($u!%JpAQ!?W1D1nS|Xx?9pBTW(bkk z#nQ>i324_P(Zs^cjNtgQv$Ig)wMM_JL5D$|$;EBR$<2)jJqu*sa!5)WC3$teNy_v1 z{A|uv9AY)LpzQ}mR5{gL#Xm&ojhJ{l&t+GB0f7y0 zXWu{}icqYEz#@vmC{3}OhGxIW6~i!<>7h^2XW#^&#Snhet5?U(q#Q+o-$3-kmo&ie z!Aq_*oLcOhclrMPyCX!A`;fxs_>Ue90y?@f(=Q86hA1C`f_q-X%`5?K=emq(fr(=! z%|UG83x-8RBpp1#!7*ICdU2e;d*aikqQ0>E{vN731ZGJ!_!#^hm?Tg zbqO0y-rr|}4pOGCVr7-8JmNceYs{M^LQxil4D50fA#zvU*@5F=BuGzyptaiQ=Ao1vzrW*BD^${UnE z4R`<5W^Dt`0bcCWSlwURVNah1%Ox7U^WW97!VsaDM0Wf(HN?-@RVW9iDQ=?IrlvgI zIO>~)&dDZCfpvN}mQ`UdU~WsXbzKd(xee3+khV_xDG97eG)+6}y>T|2!>(aZLic26 z=iYCXp_|taVu+3>Y~Ohn%wPl24h%dOXvuy1?yynMkF}_zhLiyEu_-j_wxmE!R)dBZ}-+WzZ*gF*G zt)(7BuM{Vtm&)#v0U|EqG0y?Er+s4zE`RcDr(2>dBtS%3pl_44l|OZ@7t)%6aa%5VJ&D@#H717VmDxwSJ39~E zt2BJm-TgF5--Eb=J=1^SdA?L~EYynHA_EFp-#P^f43f0z1r>u$o-XvWtB#J$OiVZ7 z;o;_AL~lYTF75L&2)KK93v3NrLE)Vg6sinj9UUD_W!JCWx^?Trr%$FMUy}$!8VWs! zkbP`SQ0GfcZZqjya*35tK5{J@`oU8KE)?|5vG^4}krqLxE518&*g~%5{#Kk zsdv3g{>w%HLS0&%YA{$|(q3Dg^1h&|N`T$g9J6iKdGukmC@`Sj#>UK$$&W*~BG4l6 z5uhVZ05cbtBB$=!^^lXZ6cDxJf!2vnJ1p7#gR7e>VkUb_xCx)Uy_(i5==h&8N9UT7l(VDL>qUvr%4ua=vN6SUeb?QgR)cq`M3%*?^g zA}2@-)Q1jr*>->kv+aFmebICnDo`(+@G58oKEUuCtQ%3I5gM?}iF|<)xY+4L1>sbk zj>~N@+9I<^zj@+IqCAzcu`ve+2P2BHPOdq8a5*SmPoF-8iciR2_V&lfeJjn4lEkZP zYXe}&ysfGd1rSh;>uv^c=+Ko{{0mEBVXVP1$tMYW2DAz8P$e0$qo z3M#4^sHkurf3AYZq=w$vxh^?v#vlC~#Pv_FFICK`YuH($uH*agt&>sWNS!V%dWxb6 zmt-lPDY0BZ&;;U}xwoTZ&hCAie?w-hMf-HC(h(OG6;+&A8ml$TxyXYqxp84&@}qAd z_I=XqGEkr`U4!*mt1WI=^ZmlMkLnet3KVfJz{N`YH(h5Un<|~#NgNQiFa@2A?)rLV zouKm6#SZv=ol|$##+=1sZHn5)zFG?2n5|_;?|c9fvGbsaPqVcq-MKOxAp6nZEzCoi+}2Si$%df ze!`h&1$sm4R|9O!%@qh^S4oBxmu^t;6wA~5blNl%8>x5ieoGJrXJ-v_uC!)r_!|51$At7G<%*pZaPOY_t;8Li z3)gaFZvJi1>>^N}2+uJmClvB)w%4kMSsVZ>cnw(0mFeEoz$v>$N}((fTMU}IEzRSS zPN>}O2$#eh@^u~i9t1T3S_h%zT=5hV%W8)97S0oeq)5m8P4HrI35EP7^DtU1(4bBT zX<5D~YJ)+*c1}}BKC8uPY2GT{Yo$r`{L4Oi`inetX7|^wW9RMJv!^rrHv8guTNRAO zph^gGZ*D5Z3J2ls`$t9sLPDt6!bXD4&urMf@3;^40in(i&;n{$!uUBw#o~#fsDHca z1}Fg_2LNvJaT1;!kd=~?X+h zaL~}!KH~SLx_WbvTos&;2#eh}a z+sDB0d48lR;?30yr}c3yaNO?cXUV5D={dDW;zj|(8GVUA4Xq|tQ#BT!Rik&U3ppN+ zKY#v!6S7i|kB%xr%u3D3kWFdg6kq{qrUWygmhK%JvuRof0U<3cF3)O?S5;L-^O=w% zbwv51y{)Yg0+0EpM>i3ZGY;S{nUYUNS6xw)d(fAOdqL?#=Z6uvfj*=)Nov_ojA9mB1N*ZlY=Jo6wr zy3Ll2NRNg09HrX^L{zu&Y=QKdQ@`(A-O@^KFgH89kKdF6;24*p?=iv(hIq!sCGRVg z*1lpo{v6$mI%&z4m~MOFSWXTO!=?EVMY|G*v*ug5dfVowC})YwDl-8GqifXkUj%tV6U-RROkns zPqFzmw|D=3cjXRxXV^lG!V!wM0|U<`dZKr$sHm9zn*BLZR$3ZP^7Q@sRUN{Fl$8}H z>KG9ylUf}Q8Xg{w)lb#@+sw4@!}$l3*m&If8wdL1@b`=ZDd(Rsi;C({-jb7(+f7X^ zb_Jr9nsvDJ>PEGS_3{dRuvNJX zEgUFY;l!4)h`a4j&W9e#GpMx-^Y~CMjPwGvK*$pnu31Jybn6db&-}AeU0wa-=g((N zBQbifzZqw9xD4H#7$?m_*R>v@{SUl;_uZx3zWtqb9>2-^ z?N8kYqs7(bUKknQq`pNUGU#!SAt!&$GLTGCuIgDn@A2cIe7IO5&H_oBXTw$Qu0LO1 z5!Df5xg=tK7vO~5C1^NWIG~6u+<^Tj-KG!oACUTct1gw!eHMq~O^@3RY>bJX9@reXja}(c{Bxm@11HW?7QTP~o-1!5 z3r1VA+K%fl8jA1Tzi;~1kCKIjrFEQ}m$$+=Uv-nW_c~j_T|YmL#RQ`WmlssQM&|O& zrO^Nzp};7y(ZD~~&ZwqG(S_pc23rxu1R0J-#MKB98kh|5ULF}>5Nobw+#_`QJW*Gi zALKBrz{8W}te{=vw#p@`b1v$EL;%y*)z#VZCnB1aba`s(qcac(o66HqJ?m@N;>*`2 z4(G+cP+Td0@#vqO$IYNrKJ+QXydWYzN3`{|b@SE?Es3-!qTD7!(n877N~6Wj zEGt{J)0tWEeo|`+VIIox+P9<|^opA;1!Kl^!$(7$dps9sKJr$O9z1?*dtuX}>wjgd zNAhzo@&MZcQvqmXp6C60G*}4t9J!{pvg^?4=60w`+8{Gm=H2S1Ch?N^c>HTG9wc|f zqU0>`YZe9J(6F#SHIi%3O23adm(JF4dk_0M7cml@;eY(=T?h*H1w5v-w3I03P!6{r z5FV$R@KyTzt^WI^NQ8g>zlX%X|MR1fNKS5U6GSiJS)J&3k1~m%&NHnR$wa6nM5gFp z#8put3DlVc23(MC06dBC3&ftRR(qV|AA^ITa6<4V1pgL$G8wrr;6W%tP-b}Owh<0q zN5=sla4aIkiDHS>O+<(ed$4z8#9e;LT@5Fc4vHeB3|)`%~!DPl}7huz3(02X$goj(L~cAQ7l_eXfc&u=*{c4S(Pg zWVYHvgdBt(;ck;{Mj4~^|e*g9l%`}pwW`v5?JCx@K`}Y5)fmD z-2-cjSO{4AT&IU5L#vJZfN;`v^X{Sd&Ar(~wbJMLZ&v^Lfq&D5EM5GtPOv2R!BIB8 zy79-6NPlz`@WNw($Orp@`s1r|Ky?P~CnuUXBJoqV^Q1hW%uk{W6yFZ^F zVErdDi7y2$2kaAfcB2$5J1E13A099viM$JN>hI2vRFU}OM`WW89fJHQ1epsU1NE*J zKD>g8iUqQOgbN*^=yG8dOsUhU;S_)=$p==y6S93!(;xAhZH2KwdehbxjcSdrh`J_~ z){Oi_4HDVJt-@6h$`8yh@K#DHs+8x?{fPWsp6>qRhNKM}Hq^NzPKHW^?{YX#R~g@o z5aGbC5kN zl@hD-7ZCgeG}gG4C{3~Ru!Ir}WE==s+Q@julijefwuVen4ejgEBY!9i)_FOwBw%4S zHa5C>csN4A$2-e|r(k~&SxZ1bID?4rJ%h6I>5~%VMI7cn+%70qG_AG?12bYB*<<9tVGkONUeaV^EFNZp<8WT8`0y(sS&*W>7u5# z3x>6_CpFh9HQ~>fN5K5qzZiq)VvS8)L z4&WSL>RZ5X9gce5987=fpmQvCjT90*L`EIG-y$~)0)ljsdH`DVw!rEH+Y`}B%-r1P z5G@OYR@Ct|Yq7`M0LSJY4*J#K(?+qLM8*h*hnh(K1B+5ah>U>vuotL@E;~CL`o)>T z;^M7H1@QrE6A3to9&DYRoiZ94;Ucc%kEo^n@iq96vg;cfV#is#9UB`t>YP$E~!`WSj4jt9Xyv&IZ z*Vi8Cfmi$AQDWWM0pjp!$mPx;85w{WZr|uA7x9TvQBiK=*)=k1Y7g-O(BgYoPGo18 zpf>tZOJk^o00+DF?c?~Ku5$zxt{QnA78u;sXuh&HZj>T*x7Xg@o>@#x7m-hu$0yy@ z?*lu41U=JAyNx)t8*rZtGzKu&kbRIv92-uaI#mq z)(F`2Ff!8h(%K}N)_U4E>pW7-Dh$s=TqE(#F-Q^nOYF&cSlBv$yr`uqFz^t`YjEsu z==U+cUbbQ7#@MNej%Ej#^sR0_XlYg+SM9YQjP$kjS8 z1Oo}t#FgOrDd16K@D}D1Cl(_Qml#xd)d@);VO}ubN*5?gL}A|c^z;ns1ELGlk9BSZ z7wQKprbWD~Y{Ud{4=EDy*R}1I>$tNxTJoXY$4XqgFz-=DA{HMu>n;S|>qH%zE7JDz z>hB@^}t7iT-?bQZI^2j<6_a(NC4j!DpKZOQYvvR|} zvRyc6z^^DqyQB?|@8jU*wLl_<@b-zgT|u`;Afg6yh=mGV?U#WD{06w`EW|dVOCjRN z1ox&CN-_dZoa+c|2@{$a+5uK14vi7c!i$$L6QGe3VN;~!XOrN=0I^Wg6&F1P7eO$Q)^1dF8E5jXlZ2;@I7_?*K^=;@A1QWP_8RF z5oQQqk6gzc0!Js`dGH0#;1H}_WV2AAh&~8O132{q6nC9`+x^6SgJ$7AH@M-IeV5o| z#kv=YD30KB?2`10*|&(>{ozOmH65KCu&#qu1p~X7An_Pm2kSK!#YvM$OjU5givez zjsijo;+RLl`T+rFAYnCO1*3ZoLxCW6T0 zD-O>;MRW*Cw5q!LTcog2X7)jtghDz4-a3l_@LT~zrs7OJv?qG{I_#Re=TkrtBGC0! z_4E*!e+FzrY%};Ws1EOtj%-D8kZ^~Qk055#;Ee?~HpfI$Fa8exs&(04(zw;&3C?cA-zsKt(|DkMA`K$WdJ@-uQg;kQAn zra5?U`?oD>&}v|3{D5mjOac;e9T*=9a1}bo&hCpU492<@D&~S2YJJtyw@)U`-Y3$h? zObfA!aQPW7P7;3FA&4n*_xBlv^_ODg4LOzlf|i8#2bM$(J>Y||xiI08jZei2;x~l7 z@%ptOak3vUouQU~g+GBChfxm5vkV9zDJg9yA@&5WzYAtM)Fxl>2~~ry=19e0f(v~{ z2UZUHvm~~F#*&tsD^okc8ANMCiLNSjpCj_Q zFrI9~T~8r<4Z9FE(EQsAHA3F<`eTL3G6~K+c z^+q(z0GUN>X2wK?eDJ|%g@yZkU^F2>KZ3X(4)I%5L9C>J_u37>&WITuWF~CBrxUmh zqHx!jAy0_MNH%;yiG-@BgD^Z{g<@+-dHx{=J(&Cmw7dcv0|AEz;o+upQa9f+z5*%eV`nKtB#FfugWQ9y;+IUFhM z9GN6_BH4o?P5ORMbc?tJ*?_(Q6*6) zNE}TAD}GyDExUs5lTci&i?HSy+|vLQZSERkxQ2`of;SV6bGG>Ta~Y6JyltRdYCGC*cG9 zJV<2v;|Od6iY4&y27gqjZNP5&o(r0NQ&YUy_OiOVF`+LXM@3z$UIuVGg41_|^h`Z9 zoPPrZq^HE2SmzNSe1kt|B9k9AMDe10tkqT~KmVX0T77+ef~Nv{=y0By24mmmTgeEC z+a@fONUm%Pt7UoWG0KT|^eZbX`(mAk`1&OfW@QQ{8O*&Q!eqOj7txjMnrcg`pYTI4yvPxLLZ(QL6=*i}Rz+=Saqr zokc|JA@%#N*K|Lrk=0yX-{jrZwvXKO;h_yWn|EEURTXIYqEUV( zs#R=+j!ravQS7yKoMgBn z>NF*~*d1N8=-D&$I7DK%8PL#Xa`Mo$H0~W}LE(z58yKUN*n$Hv+X{ij8Z!e>93M(Q zqaJET$>#mF%f2b2+mv4oF^jhLcGLx9aY8EsS9zJ4nT)a#Fkoe7CQGtJy)gyA6%%VW zHUJgctyX2ffYB*N+^)d6a)1)&g;7mr<|W)NN|MV&djyQRTBOWa6qqkvx^%T3fp1E% z<0A(S9GG2LU`Pllog(S-k!f$W7-wy8jGg|4`ng!L^|` zQerrFMhvbfkr~GYmi<&Yd)D7g(KD;l*3n1YOys2o7n+d~DxceEYRYk-?N3j{_tLN_ zz4{P;T;(ho2@?^R)&fY{hI+8!o3iuI@$vhp*hh{WsWSG48JOU`zBb%bAqg{oXN2PB zqRTtW^c~bP*LqG&9+)H3edEpVF&4&Bn~)JSk-)038!9%2mjj@I8Y6w;HV|~;xaX4d zYnzty;ko(wgSKk#_t_YOMsFqomtW%1=GcRoGHUNQNpA+6NUn&Nr?ssiyUchl#A|A4 z^`omjg3g0Eq~qv<>6eStZ`@@Nxk7?S0}TB(EvtNMw9*~)3C0sA_5%MCqroW9)l2B{ z7;z^?LJ1=AfQ1rXv>zl7WUVlNB%|X*m)sV#Y=%s3E2bMk9j{`Y!1kc)BYRB)yjzmy zN=Hi@VB3p6Ep;r)1QM1iR|LH3GceE6GcslXGYCE3qFV}}PBycPq@Hb88o(Fr%la5&vZ_+)ob>gbT@#X`P88w8=h z!+I{#5RIEIOIbyQcp}2u?*Xc_p?+N@*9LI%iDi*7?`My@aSIVN{}yP~pz{<&Mh5L9 z1d_E8f~crEXB8ER=P+PS@RfNzJ+@9kW6eai=5bT-|j*agO*DqJ1}G81CWefbC2Pa2Z==7cAIzKINH|Sn&gov8fr*L9X_*Hff9^Q; zqT{udFVxN14b8<@QC`{$975ptRK0&szP`3tp@xhB{yGyY>t?JI-3hgY8f^?IaiRTU zwx1Y^BS`_N5|%0?*sTXn*vmkSV(|KH^kZnqq&`N7NMl2bBPoOew(dl60V3E5sY?bP zHiGo8VBQmV2q8sePzc?pgO`KD2RVsMgNk6NJF%ZdJW_lxFwDrj>l0#@w~#{^W)K0* z!F&Tf-e}Lj^OzFLTGN~@{N+3*_l4L88!U?J(|?iHTuJ>1+|Zp#?nHiP8?;Yvo30ZA zka<4*bZjhZudSs-N5KID?SX{&ZegqivUU)*Ezm|nem)(J>YL{ZVaMUe5xGS;A9Q1# za1IDK&;!*Mt_$xE$D&r=!Kso1Bfbn;_f^VQGVYx4D&e(63Os(sK~iF7P6cZwuV-tbllmr;#C z&r1fYPUGi?5=9x2HoJV)R$^)R2xO(5Xu@y6&1BjTXW@uY1peNSRX(eta#t%&_Tt4y zg_A^sf#&-lF3ur)$K1sjg!49$crN8DZGSk8X350QzZ;wOJ#1vpj-{B1?y>{A8FUR2 z%RHw1`;jRl@>4+9y*Rp%e0^pAAc+JhV}johQ#Vi;rtwz;o;@IDDxmFxso_y6^ho~F zIXXJN0vAGS>drp~x%@5GhYy3-jmemUjz>5LxA;|Fo-D%FupYB9u#TW8=0a#uW*C_v zCHU3Q;9#$hLwQl0&FIRG;QtduEJ?0Nuhip zN)*23^2drA93wo?;T=+=*$|#FSyk25bqEddR$iVE_!DFe*QS=i!NGo5BgE=q$CJKw zsUq%1k8J2~kbFWN1;KlUZw%oXrOj>a&kzRsH=^;LoOwq>)J{~P+c2r6Ls>A)vXAgy z5FW%Wg^N!CA6`RK(+I*0p-d7txzd!sOHjl^9D5KgTM9!n_|Ph{&29pBBD(cJkhR`}~0pn7Fw=8oOht2ay{;3}!;|Lrj3gAH5wJ zNeFlZkTnD02_jz0%$#uAhj^%h8|ain(JEkw5n9V)`YB}SNNY{GxGQ=$yrVbypp{}o zmo&S2AddMeMxL@aHg$HL1;QZ=3W%+k=@h)1#1Jr#8#hvtWmC$qJ+ zRlRUwQ;^&y>^img2lpL2dNj{+OLOd=8FLM;2#WDqQ~nR8IUVGCvMv{GBoU8-ku^`k zV|aiXFGdvSqy>(hP(?|5-fl=G*B|7H~~+(0PJ_nPF>Hw?0)&+70Ia zp|0_CU|7Bl=4eqwtOdv8&F9ZMF+N^2;O>ejC^Jb4v4-m9 zhW2)PL>{G$jGoEnrxRLoR!oQK&PS5Vd?q3Z-aU^3CUkm}o+C>L}qC}@XIv2D!e zZGXq%aT|%TOCUUABAagnaQO{Unel)mqOlPgBoT}P?We#M8+V*YOT2t+??e;}C2rU5 zTxL7~Y5*D#ym7aYq^N0#(2SCjhlzOy#J7ULE=_>OD0c3=bNSd^-HbcB8RcU>Xhqp2 zczD4+l8b~m75PpOiN9O>PaPs7%D;jE(S~F5pvp=K@Qr$G#slU-BY!9?uk_(M!v~Ta=+_Ee9 z`HuKw(>9SX_wekHLy!?6sUD0xdg%@(s5Zh^Bpx3C$>^wua96;eGQz&e{$zL@kJH)Y zSk%dU{Cdg2H^@VTFb0@MJU|AHH5s0Af_-$J%rI6aEZDLR`=0MR1qN*a)TH4=?+x3u zx(<902_p;TLRsnH6>&hp6eJ%7@ko|(Oz&X;gxSo(qQ|kHYc3!3T`3CxF)M;SRg6#~ z9$3~{#8-gPgH$|g2%w(+U=@-t5WNzi)$>JfAj<63G|Ff^!{I|qOBCq~>VgvTl}T9C z07?yF22srwotVrA>uQA~_Zt2TvLuKZoIMuR1Y35>y==-=IvEDk?piJPTKm|{^P{9#CLPbSIh$Qd)l!O5-JJ8I<5e4cpZiDfy@Jtos z1BXswCPfg6+bD$e4U8D50M<3-j~)h!W+ClCyoxv!Wf+`z-e`H2Evyldm;iqcc)BE2 zRFx4RpXbp67WWivM^!$U;sIc6rSN={v0$N4oMcbYZrw~wonwlINeqjDuqYsT0(_Ds zSQj6vt8W7)aY#xUD1De8P7LY(<#xHqQC4ZzQ(&Eq*Jft1lCRX_tv z@HJvVvkj0`srFMMy};5#M;7)NdU6fxdjUFaYH{&WFbzLGG7Qhr)46o131elJxWsSI z&TI)~2@rPZRwAC@upu7p>H>Nt3fVnKv4kXmq%3m+iWUvY11TWfSTAPgkCf4w`ell+ z1y~dkh(Szvd(wacj~@M2NNEb7MDFA5yK;W-@5tyOnU0)^I?_#Ip7wF{f&14cLM1K%Ya#is~@`@hV{D6_iqnt14(r9m7Xn1%T6!;p}W zR`yU9HPjmTQy&vL5mWu}{kv8;hOKBSg%XPQ_rW)KCq_Jti_d1Mi%dR6CGJ@M3@A`& zrC~hG5tOOA`?V~>-I!^{0DFdAC1S^vlIlD zOt_B_IOm0A|Am-MQCQ1hx8C+gy~7}sM?NoO*7g#)yfPb2{nJyi@Pw<^C&tGuLAMh= zP25U^g@mWOeL#}p(^vhTmzrtF8I69=h@}WdV(VUTFx^6KK|u=C@uEA{Z;7hE`~cPdC8OVmeMy{@h~7TC&isa`e+1~w_D;uTlc=kzIzO25pH6GW#6Jz%yEMRgyatzp?srSU{@I@& z3sL;gr=d#5u^k})skI~bNrJk%r8RY zL0Xgu6i{CIv{0U{Ke(znElX33&xdRAp7wK=QJBN>d-`9iDPRJWR0qiX=Y9 zo4MgY!v%F`dk-)A zAUT98nT{Uafe1aMGhY$56XGeKmS^9a;dMyM+(w`u$9>ZJMrVbuZ{k0T|91y;$z#-z zS%i4bT@(L;Z=!bQWvf|6Bd6-zW&vV{{CyFh>tTgZGCbGf61iMG^lDji4jXz5fdAK@ zzi;)_($fROB|C5+_EKc(%a&?9Pk`mN&PC0q1p|6cv~?Sdt3qbiR@ zZbC;-%*mNOt$q8S?;Vd-ya*!~TXHr&ZB}vsJ`v<%s$%-T-&t8ML#wK(DOcfp*Es*b z*SEZ`fX9d7aSY4xX_drBem5lsKrmIprgJTKTQDXoHUezR0D$>sZvFd}N=~Ete}P@F zMQ_JH7o;Ru()$A1A3WvlVYTz|X>b2tyuG2F-HvP57PsgHt#d-52L}GHOG)O;qKfT$ zl=wfEjgMTg>XX`&^LLSFx}x-m_)6n(HFb4cAvS-T}__65EF_aZ?FynMR%#OPhoI2Kja-Ob=pw)Wrm4P{!D zBc_XW)cYs$(x>(HyL~gsi7$IGYy{zK^yOI7u9Jftf4{%UdKK~zA?@w$|NY)Lr#?PD zY&s|YFY6pSep=h-pZ)gtR=sB++ZoLN&oBSpqZroz|M&mj-j8bEOwzyW#)1+JY1dcD zb@?P5wT*}qAgd*PEUG7^z3VCJoqkq@i6}RB8u>(8YU*hWSV3rpLq&zKb4O;CDSsb? zIy@!}$^UJjaXqHXcD$NsO(<)Hv1BR9GWLBfX_2yqknCki*^&rRQnV=hl4y}VQAk88S|-a>NFhlf zLfI0fdfo@W-+kZDzwo@CdCkmghJ2UnI9SnyUfk5@xYe@gRojNdpj zYBz1X$$NAM{T%G)>$?hvzhV^X2X>_(*PsdMzdBfSYXLOwzd-~P-l}_a4I`%yacuJb zQSFT>5!t9nAI<4~5T(%bgB#$tVI^zAM-FIhThVICpS2df_yVXc;URE%%Dn1J3@_B^ zVNp?^PQF&_peN)KU?LsO*O58jAEPE|K=Yg?!V~Wtlr}GkRq+6Pf?4&YR3?;7or5A3 zSfK4P;|n=O)cs`94w24QNx6O~Z}jQw*W0wNO?BdmKWdT$8~$_}7A(jtkhA&d(;p(=fv&4kux_3oe1>jph{*&0vjdA&O>`J~ajPyR>eo>Ev@$e^q^dRlI`2 zT^tLAw|`7;(Xbv6v^!cx>HZ4PdkkIkRvikKk|2wMnLv?NqQTr#*-V3S9M~~`#DSRT zXhZ5fNPhTYWgr00?b|UDg`1arUq_tBe6H}W^o6YrHtQiDR(hmweuGn*4UII(rhwg= zn!ezM#4{EvTi-L5^beH$DN%M%+O7i6rtt9ntA}{`=&5}!ns`Fhp;-E? z)!ZdwQkVr$&ct7HrcJAd+StoT$=}p=a?{gyH#cd}z>qW)z8T97L=#h&FaV^awHvXn zG#Q#kNx`EdVsv!gP0aVqU%66^x&T2AEw->fQfYA3l)j7EWf~rBHv?mgd))Y}wgZZ2 z3n>+9CbyXnyzWVj0ida*z)miJH$5rOq8BZjhquM#$y-Py6U-6o{TKub9qi(%d`ZtC zi+Lo{*bU|O^!y?#rlOZxbMNx^d_H+GYze#>tpg`BSo{`B*h12yC_-XfUgUus z&M}h0E!+Mx)WzWR!J0k#_0xb5R+Ns!CLl-V3w-KOEIGfMGKYU;L= z;{%P*!!5t}rZfWh)&hoO^qiIDuqMVKo4yCS%s~k=;ZWZ#;BpPzbGs@q;(ALmDFs}` zjhn-RPXb{h#7oWNV_Pj^AF!) zHO6}N8%=nJ2|og?&$B4ejPYOfS3f^3jp4UK9j|Kk?jR27?0rtCvK#&%2~QRfX} zUQ%HG0Qe}>Up~X!+-G$4wC;Z?h0@W@?AcZ4PI`J6;M1M^_v24F|5zy*Hwt1LJJ19_ zG*;6$QGjatu%Vj(^2&E*4eL5MIMf-15@B;@c9;0MeF7@L?t@%sDQNMon3sl^Jbbt2 zRax02#p$W1_O9qKgiTjXIawF(OO-Sczv3xUldC@#uH}4ekG@PP6kYO* z=yOT))vJuoST5;h+NH*DaZvdIyq;RK0= zYuA3)f6>MEgPU=9TsDNmOX$>86ixG~Rgf%o!aU2SD$<=#pecuyBax}431dlV^`ojv ze&56s_EL5bOyM{EGM7J`dd3nq*`1_7$fbhPQV8qL!Ja_}Su)mokrR=y)89w&Bq8TX z%*kmbE*v%|;2(s&+sGl&*si9vEouJMV&~~dF6L6PvEwT#V7iF(_pM#Oabx)JTC4>H zALZh@b|cw-Eu8bZj_ zU*9shoj9DG4P`YoCF_x`bdui+x7A*^n?4pS7M^1GE8W{hY<1*HLur!r?zKM|_oglho9 zVB*OxLKuxU>=O{HJK_ki4XE&F@jJF1+*oYk2zMMOJ$o&>5w`&wH&)fZn?N|GkTrPQ z26?N}ycm*-aO~JI;n&6=>Z?SvC8QK+*LIX4V9UxR`_p6I_NdpW=lPdSa3!6e?IXK7 z4jKsz7+LjU07Zdse?WL6UW>4Y?Z||cNq+SX2#|RQkb9rfwA{!cYlo^^U|Uv*isA>U zMXnX@9rehy)Ms+&ZfE+IRTw~%NIWL=)HI}+{GB%ln@m?y$(rPFPzR-+v`GacXte!^GAq~ z1@^i_%b){O4-z5M`T<->7xG0M^dUifzhc zu#NhtzFLPJ*lQHdfrl@|e?NS>7OJ%`M5iK=I7W4T91KOiq$>VObiZn$rJFaRlMrz; zizbW2SxnTDGCXAY5?eG2zMDRikffxLZUkIp=05oSTO>;Pkat!DQFmylqmKMRLZ@62 zHnc3;PTj*dUcg}`%n98yu67T;|D1)V^F=)=(o??$?NEb6*=KjB{6cBgiq$2SQ<0M`UOQr%D5azEKoP7{?;5-Cl5;(K9g9p5#Yeter2gFO>95AUTw?>C}4{9Cx z6}0?RLT3QyDJ|ZWZ{QGYaUuT6!`qdM`1R2(Jp!o&@W!Bp;!K%@*xzOo=om-oTkda1 z5OB5)4W^t}pr2x6q6-j+7ihluGi#jRG01setsYkWqP99D<>$ilPUzZ~#yp+%_*vdu zr}p=_rkrTxZ|t|4n@~epl{B(n*(5Z#R5Hg{BjCvcSHCjLT08(1UCDH^Z}|i*o$>5| z$OBFJqSym(-90_x1cs5SFRuO%9ITXad~&VB^@g5pT5S!p4gi zE%Lc2p1j~+clL3c4aTI1u8gq@1aeSc3inMv_iXB1h0 zysQPJF!IzNoEd6`tjF8?Ee&SNXUlQ+;o0-qgdcs!hz{%t5A7{A!$70Zac%|be|fDqnBt+?Oka-V zhF*2}H}^=;Uxj$ZY+UcsaB;%v=yIj2*JCfrJWTojWt*O<%r znH$p)ewQLn+C-{9@kq-b_$W#_NmS=A#iK=fl2X05%LFM_K69eqMo~2C`QCUAX3R}$ zttsqrt)V;GLQ&m@`qL0u>gk89%6?E99644y25o$O=Pyy>u${ulsVGpMbV2}wj9M*7ZLrTz9PY5RsqPF_|du*6;X~^KsRWGKY zFHcH(8Swi3yrSw0|DGO6vcl~64S(Tt`td(OWudd=5XsGClnqw*M>QiQ4yO` z-7|Zn4w6X5EWAW37-f}!%mE-@6fKgT#+redM}?*{;K7j-#f60rPCL$Igb13#dZ8<9 z&H`O%4;u8B6myCKw&!a_zZ%5aFm+_<16_!}dXTE7pg9Wfdk>KnQR*rZIm4w5#!MyE zHEo%c)L6J>>J!Znkdh5T7$o(Va|2N0QH;rS7D?J`QX=M-Le`8z!2=;tTe3mn6UGGC zgohA}MWBDNlj4a%vL(I`g4L|gMG!oULs1qB)NEwX6_W6+e&ru>s^#Z@(vTfi-SS5a*$9?-s|KV6TuFG(0}LPi)2xyDT>A$ zBlge~v$8~ODiY7lyd-%&emRuUq7)U^DNCA3S9NrnRcxh2R=88#golPISfW3mX65EX zhCbG*I@E7%?I3%jE^MJdGo5%wI81-A^u+Ok5>L=HTsT`vPey~S+8uTyDJx4uA)+W1 z6&2vOFbKtW)=pZud4107A~79^( z-7j~NkpQ>pM?`^-pe+3C*@lEA@QcP!GaSTt+qLQ13J}1G&%5K^bOxx=`vwq4rcO^e zbX9=@1cYojjaIExyo|O0IA|mD0Mg)UZvm%(+zO!1e@RDa3KWy_V)eClY-LUAFNlqa zNg+a~t?SPvfI7IvB@&!Yjx&r~Bngc&!R!bBh;j~O4imF24hHzEmh%cwX^Arh$5s<; zo%K_8`uWMl;(%iqiyG!#$~2_>O+*LDjtfTP$O0kMWQ(`RWJT?Y_Lj39 zswCPsNy@aEHOt^_$@8h@D^t&C>>Zcgr*_@SR|MHC{2W!i7)^SwxPM=aV?R57=+{HN z9u@SXnH2QDB~PPuK(7)ZeoSnn0;Ba%;`&0NX`|AWPDv`6=*`HPWd~^4JgbIJxN7a% zmP(7963;|e^=0>Aql=1-P2>9~_f?YsU}BuT#CcJ+qzJ=BE5$K0thrBI}Qnxv>nka@87E@^Oz_@d<}k5}!s!HaT|qovz-gCcwuBznH5#i$-M1>-0<) z^IUMT(B@JiY@@vg*pJ4MD&Cxmuaqafw`EC(DzyX>3Wa0>feEt%r7T<{W7C8x9$ZoO zVkfVubb3VUo7G&c-k{48RSje*(&`(j<0or~IElm3=3Z`eZ6zwBm zxNxyR#wrkP{!d#W&2h?6wphGyVFC4mB>L8810r~6%Dsgo;VVZ@Z-mp}H++M9h3Qy` zFAb54KWmw{ge?p?-!`;xz>Pu6zTc|qOzJt^wwak(BI*H|V}cmEhzCKA4KLgQ1&D0D z2;7nuA8`=G3Ok!ECk7i2&24>AUt#(Fi?LfnH-0~t(rU0pg=Jh+lsettKs?sQ0t!Hb zgWl3#c!24E7ec-WtBv9pkaVE^4oj*lN^Tnt7qB7eZlyD%Bns#9p~+6<>+|SeOVE!1 z@$4m{H}0XJ>n>mK4>2^6T^offXup?R_4|2mvm;uu31JBr0L+FePL4*Np!&RzNI&UR zWTOIv-iq;d0nI~8+cI?x6ezwDOqYLS{h=W%gZ~L$B(=%IhIH++h^Z+Jdmrq?Gf5)0 zOJ=rxvp1uf&krQ_sqB?D5Pf5)|i4x@JaQWzjT?)CR<5g#u;|v)V>SAzWAU-JD=G+Y zOBqSL}2jTL5vJ9dP8~1^|M;GAMzb6-`H*97=sbO zJgxrsXN0XTn14r^6yBd#tIP*8+f!Gk@>$XuH(x|2kZ%Zguh;AvG(giIt^SRohc@PW zaCY9U-)d>a9(odBJgRUNz|LcAMrP*bNx;gUY^?17KD&Ze(wzso? zn*sGvsV-QsKxiCD_8rs!vzDd(>KuozJNgCB$?m|w29$#uzXr5!EI9+k<83(rMLof} zN4@RxdjE{%R%-zOB|W_(i<5S`<-AwxjL%rw5XaM6&!sPyMV2DiJ;t?8?2~v<1!zS0 z*vNcO0Z$F3AC?k%E+pCz1~rptB^Xp}cWpQhO<0$rl4LO>r8ZjDXXwz@^c@#nG}D1y zqfbue0RRe<>2@N$caQ7M_?q+7lz#;p)F!;+apW`!efW;h4tI{@S-)z5VMLQIy$P?+ zNU*jP6!?LTyw$OOf#O*vekEmOs9_?AU%Jblw4Np&y@qUf8@9bBV(s(DXZkyabT#6v zXX}Ycs$F^S$CPd@TINI%bt9(&(Q76JL_*Xd!%b>3@tpu!TA#CpW?%Y52Dj| zd?JTL{bzl8^icj3;vTX7S@|WWvPa7A%JLqfW>Hp%wGb{WI;r-)k}j(>^7_kHuj-ob zq4*@zwQH##fEtC9(m=iX{%szgbE~b9cs`c*SB|OPH8Y@;z_&QR=2Lizol$ABQ^C`A zZ_jC2MQWW^&eS&B9J}I%%0QLT_nS8i#8-!@RdF@qToxIy8hQf*#}Cm@fZt4s4-3q) zOD4mtXPw(`oIa#>9D{N-@t4Kx72ARblx-CC&|hWg6mFx!Eaa#Z#SuuJ)bfI-(#;96 zN;Cq+ZqoJOeYr=mH}0!8#cu2~j3<<}1Du+O`^blvki{TkCF+?^jFR#x z=x6((=KA{rJM1-LU*Is15lSMc$4u)-tKF?dLyj8_-Of5ZJFtcPO;A^GX3d3*F)_GC zQH^&51nYIP-F?)ah9;ONysRTvd|EIYIXgx63&)cqS?Y9V$vSpxFR=UgoJx5UZM!9| zQO~arKUQAK3mV@=U4w247v*GYYhO{o6&(%=YUE{<6}p_KnTNRLyw-05N6eWsXS8}I za&wL)ny^tI;aEFUYC7piw#Lbm_1RLRu3Vu<48Cgi_WAYLw}ncNoc;T|g&kg!{%b^w zhF(__59+2D9(vKcVBV}*J>p7n2e&u)^+}n6T1lZ}JeVBRq=ygTCT8lLSor&xAUf+d zYm53?xL3?GbZMq_o8kZ~wckXpxRM5m;KvOQBnf9$+x z4kWCk4gkr*wl(KO!uT)Y+d`a^bMZ*0>RVa;hP+J^EJ;-Q5+M&svt@jj+sL0LTUn{f zZQZ!m_R1iFZRK~dJh=dOV_$Y>i(tpC!-bRtc{VtdQFZXf(W27Qu5?0=DT*PCj+l5c zwDid?tMj6DdByVT{DX^!nxO3oo5)N+UN_GA*J=0C12#5SOx&q+9ssaG%v9 zh&HHcqY8Aj;gmI;fy<)u@#Zz5o@V)qR)RzxA&UHZmn))3IlJ-g!8qg!w}C)bF@r?m zTw&**4dA&uJ^@l%>LKMYT; zA9^5?5O9gL4EY%CGN;<{plGokUq@q-#gja)q;Y-XJvBO+&L>t#1}cv}SW!FO!eUqJG$&43 z(zrb6l;qr_nI%~lith%*S)WA%o#cBiAAG`lfpV~0 z&3ea4cELC72+~_ut)2q@)9xS=x)EI*K}o_9GSXNHXiBprIa%8V1nI3`9UjY;Et$wl z3PKLHQI8D%(NFCtv;QvEH&zo6fck($h#umTQP+@VUocnTE!Bn%jhJediT{&NVl{K- z0(evZ^A4mcW|2Cht^w-UW2BQ<3~1zwaG%Avs1AY+>xp9#0?g)zij$7-u)s#AgXZ76 zfB)mj3OA77WMD0YLYhbsdP!eRxS&EI4J$y%@-=PomOSO>WTasdx5$UOcG8h&{R2Oo z&p7v}>;Gs0v{G~9ozqsD(XkuVjp3jU581a{L24KCP? zIIL(WS$(6`%_6dWSB$M4SG23Xib^;eIC3%R*2D#7ZQYQD2Ghz1Y>)VR6WOuIVL2HT zu%M{0&_is*grz2Y%m8L=tGDTT$cn!d`_dQMJ-gD2CX8ny%CX24=eD2`OcJRl!yAb_ zI+pal#2{r*>&B8gPfQ#?Xj1S92P?i?588U93n>NpJR)pJXkJJS)01x`d?xf zb3O&+l&u-5+I#?J8Ez<_4}2rdMt|&yFA1f-x25<@o!ou@4tn>FG1eip$gzZX`TNzOira{jZy^Uwi(v z!X-YqZ2iCM-wfIunXO;z76|l0b~+n~I|sQy05X>nk1lr1%FK>IoVYlx>8P$->)%JF zvzzN9F7k$6M(yIp0n;F~10VkD`qFW_&7z$zus;FRLPaz=6d3r@p!TO4WL>u|Pv&m? zIEd*QYE#a%pfye5xQK!|J5~C)se=8{gC&XTj5kBnAYBs!?dqzi6tRkAM2biX$l;Kf z&`J8gtmY8ZCLzDKXjG{at~$SO$ppGj>@2oSAeb~~1&E=bYM44k|5^@)w_y2le=4{6 z5DJBkmR+k2fO#pli#SNdiO6Th$0u9oNXKfRl){w?f77WB_Z}Eb?Y>{c9cZKKG-}jH zP(J7$6l{{}nPT#>h?YJg_xeX3$umwtazZD@yCwn_+n*aj`|qtvpSn$3RTOEAf1KB& zfdO&{Pft%-{j6m60zCU?2h~lwZKm5y7Bc|;R&EHgdJ&5j6>SCNzk2nm$Y1a+yI;FD zjPlQmi+2oenJD`sE;l^16WQ5i&^Y)5*N}5hD>sNCt)FEUE)TRgHv#Vs1qBsBi4DQ= z_#-(Xo52)@5q10fZy)ZOOepNxt5-TfJ(LxVo?_8+W^NnIaeVpXS^I*6Cz_Z@W&vPH z?J+L(6np!UBG1pW+cEl)?hi&a6H>(?vQ^zJtQa#|Sa{acXsHH5T|K?IX+*EtSAYLt zm%RX5&6g7md)fNqJk1OEQYayJD=fHpOF01sJtmRxA>tz=1#R;VL=>Z-$eHIdN^zPd zV-58Y!ZR#b0GM?~LG(%8siBbtjc|t3psxFWRBfm*xDEAe;BaB{IRmPs zyW8w7sT#+y;aNbG0paX9KILzvP;Pg#x?6f3MlaD77bG{yPOJv=zO{c(BfI&=C(XYn)-2 zwEU974h(hQ-o0OQ@&?k9wB8sBDm8Ze_~ZBP-D}nUj?)b0a>z@Nw$r_5PuEx9Q67lv z3YKHd*EbWI)qOe4FT#>jZ)wkWI-lciZLY0ehX7&Y+qD4pYu?;zGj`&{lYGcA z2Z9b9Fl8I)v^D8d;&Lea4%hDQrQH&pFr#tiMmlpIh*^#2G~@Vrm3{==MDro^A6^7} zdIw5_;eXfzl>W~VjXl8Y@^|OXUf(uUyUke#Low!9kH((z^rq zUXD9*QfTu=naI{GPyz)4PHUi%Iv_IeDek$+^K^D6GTV>N+a`7&O~ZV!P4OyGmyo{s zW7(yfZW=x&9x^8po>wOFva|PddNV$Hkvnxc9%96$X1LuNbl+c6Z_KY8QO5|IBbcmg z9rSGUNZx4rTwGlAE~ZGZJgqSba4Xvf9nV<$veXMjAV*agK=C2Xdg0IgcVCMV8znXJ zre16HwE)H>=zwehSIl^LOag~S@7=y#MWEZy`3{r{q%R2D0^_Sn%Y*oJwEvdakZl|i znAGrHG1mjAVS}7K65aLb-w|b^*pj?G0&yGb7(v8p4q34Sga9e}<6)}9MYJE>2Zv5q z`|NL%Y!)w`?x1sY`|hzP04b^(b*kJL9UJR*?C~5ld02!tyjqLZYSN=waCM7!=A}|7 z(=_ay^Cn#H!!_#Fv;E%G&KuqPpuyv4gC@9X(t?W_RI2~b$0_*Dp?zZ)9c>=0KM9l# z2O=+(9p5y>YmEL@0Ss3yS1T$hX*gp>PTE-x7bH;?(YCJpN_=*-v32XSbAP)S3UC1U z1&bGNqu4|3t!U;`mp7N71UW;aXRb#CDP1+EoBj#9mc*;ki?r(0|$Zqd9 z=U8o196wUR1C#21GS0{UBIE*PGn=9Wx0zlSP|&#!}*ADZbGxwJiKOgM@*`jZN6RXcdyrmvYhU9-j0cdNiWu72*+r`Lg<6vClZH{4LYjV# z!jAjLf`WO9rT|ZQ+|V9fSFLOuOt*Urz)rdvDhGBx%EnLlGecQ4h3CAvEFu^a=>{o` zyi+I}J?VWd=vS#?)e!4D9?2r|76_@|`VFAz?>ob#-4Bq0Dj2g)EKU!vPAa6KSq&^0MEDS^^K8l ziSX32J65x=%Ck&M$|a%P_|!v+0K+3ce}$N;*A=Xm$P1z|C^62iGw+2>0L%-PpD+yl z$3J?AS?=CFoOz@Db&Eq9cu=NnMS1Z@@j7z#lnbbs*-H)2SdRR*fo6(6Hu1rOX6)OO z^ew7G&Hqn}JF2IVMvokkFxb94|Jzqw=O~1v z3Fivrjos7lyTMDJz2X1+6%qMQ`n2ruo&WjH{8nyl>xus_b5cp?|NsC0uQ}=ed)MQq zU(-MKwCDt7Lv;%a3$WM*?2f}@`vs1_>Qvm6W*5fsm(}aVOO_a`*Of(mca@eOtv=I} zIoh6H{u@<5@W#f@S?|mLu!d5J`Ze7yE33S9Y&&7c_^*7-!oMZUXT2U z6-A0>tOpg*cNm>2_6$O*ex5Vld>V_1=x*U5*rJ+|`*Bo>U z+;iTVZt^}6#Y6vN;Vg*(QV_=s^r#^qHB8S=KC(`iF7-`xSFFQhB{>?V;h&@L^aA?j zz{NyRJ;Q76DVSOWT()r8w4#C}ir|;$m7Z4+QCn&HY0P0s15G*2yr7jQs^{=aQZ_^rxJkB7^coK zURzZLpJPFiW*8k|;=Ox~Y3V6?qN1a5T52f@P?L+YhRi%%$&C!viHEL3U4g%;cy;g} zH&J4*KWP*9i4!NdN=bh!}&SLV0l5ZN_WtNO1ExWpCi ze6*1{jw5|kCDch{0Z6EgO$)`5qelfCS0ti(hcl8Z^C4K%Sn?mqk)Sb9hhA`3ey`C5cL0pCBIZFsSbZoAvd#M6kHXIPK6}DV z>Kdw}ebH9EWgM$fH_UX%@wCsEtMtd2)CJZH&+68p*l$O%VNKIwUwL{ygq#FI5qgp= z5r2XvSdP%*Xux$wj;x99y1+VWz7oaic4~y06pb897$v@Z9R)u=$3YTimGY{3QxJFW z(tIasw}O1nsq{Hyl&Q!I3cJl^h3ZJKN?Y!_Cr|hib_gK2gH#p z@~$c=hQck^HB5wIm|L7|Nhg|yIY1sWW+B*8+Hve9C)8H2gw~Z117X}s^Wz&qAJDca z6u&8wALKe%aDDmgwG~}=|K2I?*shDnL4vZmdN_av9YjM8ZP85~IB>vbMn|w^B0wcc zu={>#sqN6O>>K;K)7^}Wj5N>zLld!V&7M6wxaM?l9gQ$-`~OLYA{nF!l?oN6AgP2Z zum1VMwuJ|~j0F0?L(0@HMDcUinEk#{wO{KRx>I3^*pFyNB)`?7h9Nm7knIZvW;n^^k$`?jv~B0+#%qFB3!espA_x#ghp;2fd_23l*zo;w_lBpT@0v*A)frl1 zO85Q8r<_4#d5XM zfKszV*K$4r;q>!#*ivLMX6@1MdRt`%_vSC};TefnHT(79&~cJgy+mIm#k+}06G!(;;-=J68GrmhWWT}phCPlZB_O;o)H>X{wiRG@w zvCNd1lH8TKA~yPbvxT_l5G2ECnV{DO3&Ag@qca@&n^Gu{S~HEwJWdVVf6Vz+<5sU; zz2n*T>G$sKpvker*UBZdqt&hJ-m>>>Gle9LWV~!Fp#vX6-b5cZ;t(xDBZ9!DUOxGE z1MMHFiYQH#jdFWMqzknm`C5d7F95jNWu`0WJK0==kI9tqgZl#m+lVWRT%Gzr4qi~?^oWe?+d91HN>r4)iB1ydUC%2c zBNuakp}gZR3opiKhE}i-atV=#OYX9wLtgj&zxU$>9Rk~R)}aZJvxDMX=uuS3m}&zs zhw329<}j7uO(0Lv6xe)umEH~J7vYBEuOE)cf=~SW%FfiZzBJJ7^f$ENRCZol{WAh` zzhCsTs0GHNM}Y;{bEx$P5(s333?xTAvCpw10b-%f6agV!z2fSSe_Yu?@QA8I&$5&y zFc8j`7`pB##(+PT40L$hn2*Vg6>JpL3)NE;v%IB40Mn4e5DbhkX=NW1=3L7tTeQ02 z+yjhdTMr&=CDCq<7kH}pma@OhCa;6Kj1YA%kVf5RK11J3g=Xa3h*GgA&I^VP=a}R5` z7dPe@Nq+>Dw1&>(fsF#E(M-=Wc+YtuDrwQC@G6I(d6jLOVyJ^XiH7@-MBgDR^OL!x zgqa73|JhMQ&TJMiWm|Zd>EJ~%%Bf7^l3v8re}rw2`)f!tzJ(> zjq{0gt z_%~@+V3uNN)f{Ly3QHvO&ALZ#yvgzsbTJ^H3#S67(lHDT7=j*Mb+nCsHW_m%a-?k> zRCZ`S_5}u-gJr!U^+%!{S-cV)R{rtXL1d1y?NZm_>3m34b|xxn7nSa4R^dQG-+}Y? z9Xe#j+T%}|Qkv@GZU$jwFtI6VkD-(Zda(|_Lsh=(@Vc4^l<-8?(Ox?uWVo|^*4KExKxt*!-c7C^>_X$a8NIj+CVNuGe#LT=<&D{Q{>>_ zIr6ZMl#W712ec!zSwIyLIFK+THTJsFyd+XnGr4gRv?{+V)9SIosYq3a#zHy|>Jh&= z`xV;5hP9!{H61;=9?Xdc2Bij|vVzVLqO}wFP<9_=GJsZQk+!rlsen4Z^4tNkAL_fH z4s)WB(e}pxDuOJGUqaD{928(%FfY^~xNvTX+5r%m=oT#z^x|}n)%>lWjOYB3gKvJ` zRmY*kBtSh1(+}a4{d6$eKJ>ySG>r~D=Miwj28OrAz9+)+(X(ggIfdk2;#rpcPP~wO zB184M(nuhbasIcZ0eC4&+D05#fG8~v!g>i+%xV*;iZ|i_6U~g0LUWM4Cs#h{-o0~= zbLpE^kOEPN;)5b+0lXnQ~VMLSSfSw;BS$VIss zEvsv7T}RsOn81$A-?Rk<`3LVaU4ZceZIF92^Cyi{z5qQiRWGQNWJDtMZ;iExP4^}H zDYjZAbbh>*rGK9jY@1@w*4~@0ty+fwK`|dK5PxYuo4Pb&q1pCQyrcBagCR3@rK6Oz zO+h1(x61*7&_EQ6$ZnVz;Qmve?E z4E&wDR6Uhq4FK`+uojQ1K@Bp+mU36?atH@Bp+hy}ZCs~hyA|y8@mc@s3d%rcQA9c& zMe6^@|7;&gQ@IZ$H0Gwx#j%iFEx zx_@wcX4`p8JwryH0GKDcD=G7?ePo)33~*t%jRILc=eVPh*6)Taxq+u;_i6s=UNsY0 z7;KPSD}YK)y)2$1$N2PxWw=A){J!M38v_dmzTKG5(STO89zP&14yty+xq*>7s@CB&Sp_j9g#e@_ zIu;SvVU3bDkHc5WCQbkP94K}VjyI4V6PObyft4o9Pk~NR1#t;olxF%ELb){iUAua9 zK4+vf*>Zr>$0l(z*b>ivZB6CQN14yl3T~mz`%#hc>WWODcJ${2aTwj8?o*HF3$ zym)m9oI#wUB%$Ag1+w{AbQ*T=f36e(9oe1shEsf#B`J>#T7MA#`bcoZgvGC;93V^E z6gr9K6BCDUFkBjKM7Vs_-@XWZRgy6+gb>7xgTG;=4yQofdiBB>vX{&JI|62#fN_h} z8Qq$2uTtKCnaMCNn_~m8MZvNnsv1El#z#~TA<|jTnuKh=riK zcD&56wMc)xS`r6n_EOmKQ&!C7z<2Jj6;@VeIkV>~^K^Ur`U(y6n~xEC-+iO)2rtjy zGky@<7d8&1^O2$`%(8nH`Edi6K6uq<__O~kC0SI}n^;a~ExHx3kqAS9u0*2ez4!va zVajADis+szr@@FW`2ooa6ayDF4^Dm?F~2uxprjD1fW#k2L;xgXO|L!Sih|k6#!^2sI^|_%3)%vrs5I_U}q5BhE@W5^;+=g8tDJ zaW~}ICBeYOE@CDN4GR=!d_x?|MjSPtp(XTIZ6uf)52Vol;!A;EAQ))Z;lsXMMu?dX z3I)e4kDehU3@r*l(UOqCb>)cxjVpNhQVD2aiObsmlLuF|aSy4B8^4DS=7}&uDf>qQ zprn9UXsy3tAS`WT+!Io~gfP=POrWYK6fOjU;}B$7TVnv5{-jX}&A=_$arGv?GHPW{ zR*xLt)ZIy-pM0*u^>s@pv}3GLbtA5!%Bq!ps{vlbvja>ak}a5a-`|mKrovUR+==FP z>2T`k|L#`Nt;QOee7o9~f|uUUC?Xpm`R2a|LU^!=meJPXqf}>1_+V_po;B)E>JX0v zS0E%#4+Rte2;~=L)Z@1kYiEe$kR6#_f@S33{N(@8KRcd(HA$cRznf%g>#9?`ZoXCg zcQ1%e>!|86^wBeeEgUM8jnU%?nJmlOW*(7kr0!XJwlOEkK+TZJCLfkU-{^h6LbqIh z>&q?g%QtL_bg+g?j=gzso^Jfy+RSo#h>X9R)nB!G-|z1k?Y4tLx*pFsNSh~)A}aeW z*tBH&DN1MDm>&k5Sppi27__i?S%suaBV5SP-L_;YHNHfjIP`iURhxg?ih29zAb%EM z!NilMyAWug_QIWw`(&C0*LPE4HGu+R#7NLSw&c`?U{A?+?AmqA?71Lv+)yRO&Dxrc z2<3{-+|lBBW6P2XftU8nctGpH%un5aKYr>-bJG~fX;n1^ zE5$JbNq#Ed4Or0b@wq2cpW7>z46!pl1Md*? z_To;REpxP-v`r5w4z2qepNb3&o-(pZp4l;%nb$`QdoL)L$geT!0|L)-)^ z<=}2VtA?`OqQ9<4EQflaB{pWnwCko#BKzbWWYd^Ab0&60*~0~SCf7vFy>JLN#~#h^ zJD)oyS4H3is9iBZb6^nNG@5;eo>KN~M8D7uoj{rCeVC=XG}1-NXPVJaDmTee`QyFZ z&Kn}tei;}XRJ%U;&zh_ngIe#-?7KZ|Al8|@~kc8gv>Y|j56W@?Le@L zfxoFxFS2IN96RR08nEv*4`o4N|RMdnorfgikSR0hyv&S|7!mLx<_z}}q{tY^**(bhQz*0K%x&L_*)4g)nwry$Rv zNy7#WG(rfB=zb?7qbo6y;{%E|b3d5V*dO(YE`$e~v17o!02#-iK(fdi3tqa3FMk3( z)v0^~J-s9R#6R=<>V3XR1Tg&eQnaXOGfa_VTqbqs%coD;G1k?|uTPvhwU>klp0M01 zqH5d`pVcHg>z@Z62ft%$kmvGq4Lb5L40i$E-kcOXy(1s~C~ZaVGFL~w5-AI)Ez%!9 zK7f3l5D+fFu%!bvzkL6GQi3hWvFHCJ{mQxIk@=3ShY!j6+LK&S#UivrE@)yxptt-^beGfWYT=i zhpfm8MY>5M)d^g8*4O|vG$e?GD88{QMSy-omQiPF20=RK+;G_qBq9k{^g>T^b2I4> z%vc80g-g*64YJ9y8wffyhJ!pDv_&*ToRz!hUN}Y4Qzm&d!SAm9oR@Z~{CCgN@4FgD zeM-8?>(#?3g;__+iVExcwD5&E=2BT(5{*N7t3|6M%2Mtaqy|&rJjLnyIQcAwh9syx z6#&-*O%zD$L}wy~1kR5_^k_6uU72a;DYB8o_~|3TY$4q;-Mn@r8!r8;L<#>N(mm;fuf>AU33V zW@_(W+}r5&Ul)tLg7b2y)0@T4~)AXY3KBT{e)-YTFTc?8r%I7FL~bEHr( zw_F-c8WdsEfE7H1C6bL<(;qp_EyQ|4FiNnHw6d^w68XX(znI#OzC&&(Wg38^SbxMI zEkRY{NRfy!@tC3Qzz8Pk-&}SdTACL0=h9K5YgOR&Ku#|ySc)hn0LsKdmKXzn(t=jr zoEbis?jm|Ku+Yd6d{MDGGojFz&K;|K3)Z$VPpYUTMcd3@q9>MNUK9Z`FJ#c5zxY~E zC%D8&12{^deDh!)2dIi_e)!1k0B)K`MTlVVn1Aw4j}j6@+)*NP1k zoK8uE{3sv8C{fY2iN?AgD?y4*k&I59NU8u2VASQy$=rSMMI&Doo(Bj@CQ?C>^d-9n zF1B#1+DN8P4BCvIj>E1#P^h+!JY(W(5qD2W?JpHh8?mct?>3{LtU9M>-ev71l` z6rEC6NS`A{ax%IlAC$O#`M5}32|gP6qhPCb#+~YlXSL)Ey%hS1a)`p01*f2NbtS@t z1Pg{hkCcMHZQDj{QsaXLH(|60*g|1BeVqDTLOKSCXMv_%5GF{=ZI<0fQ-RBK1Q5}P zbPd?LdbFMWm~#f)U4Wu!3v>L)BSkxq#UGR!mEd}L2EA1oSHuTX1B{TGhf&V0Aem^s zl8L!$LVw$4z+$1SAv#>RJRozinrW^dpAJIVAf2>g{)!b%v7~{x5b^Ule;%zRn4$!2 z`Q&^cW@sx}=ZXTc0D($CAg5epF3A8H<)~25t|CwX0$TtTG{^=ZdALmaYf6{n#ER;K z2}8OXY6;YGpAdwK`;y0>usab%pPUpD0KOwL{AA&AjfHrpffd~}qF+h|(cjZ}AnNj! zUqo%s*&zmNVOEJk0IL<;O9q}WMqco1m(Mm5LV}D6;=^<7iCci`nZ%t9FAKA0W2NgW ztTG9+@Gfqq5Y-h`f}o7Q85L0}P@i%WlLc|$D7nQ(^Scq_Yy3sOTllFiPlhai{%ofM z&Cz!N_hEyTtQa0J4=Pw-6yjw%?l$`*wLg8X%nh5rc=7klqSFWG+S&ikjsl4|$PDyT zVmzv4o0?#W20Bmr#x(CMN9V5WB>9W@b=JqzqSS+jYe(%^P@(0()!02nqg_gh|+g3qHT*w4F`$Z{js6p-oLH zteZ0e|>J<+lFem)=X>!J>da^i!d1W6K%2J#&aGc;Wmf+l# zsTtnhpeti(=yX-<+&?}1DBL=tbfp{uKOPUnc$ukx(XZd4PgzQ44@9w*l^NJI^BVB~?4s`*MR|s0R;Ge@ zdsBQ(q=@Tms7{;b(4u|&32<{#+Xy4c*Vd%tWBUaaWG!UEl}-S! zXTu>z%K{gg6gY(O&U-(1()jV`vQ}SaKewDR#fVY}zw>Ah?MyD+8G08fybDYSLz1pfR+O{3Xf1N^y z1bq%BI7mk)ZvEFT@c;|QbKVPU%%Nm%VuJMPXs*pqA`~cehr+oE2_lq;&M~&9DdgzL z;$WRMVc;)_0qprj)1KMA>a(Gy-@d(-25B_66bsWhq6<4w-a}lY1$@g_8T5Tl+?v0| ziRRp)lSUQ``V3?fq_t?MY5%bR``47!)=bi?WnD8`LB5xKR_-qcm3&B1u8hZgS6(@MR=@!o0|>VL2M+AvD^om+Vn9bU1G17dG@vPb+1PLr0F7M6sHdZI z7`h<->%SvRzSUX>G;KS0hiD3@{NxTwP#-OVTzx=x`R=q%7#_j(C(&A(tSNgEv0|7e zL*3cY2tLrI<_|?GDi52mYpk%pJ9XO1H+zeMl~9Y(TtbS?!IP1##1lioV?fs2)E755 zIUIdY|Cz}dZr>B}$SF>6k&h=YqOLr_F`m6XzOG>?543NYuZoYKUpQuw$m#DVv&C0Z z-LbPgU-#k!mad%?KQZ>%zUZob-sX>30*7g0B79jTM>Mv@ahJ&iq15KG$m|-93Ul?k z*4&oSW5%#fUVZ#H0rsLZ-UC?)KT4&Ge}@H)C#GA+j$7z6=}jKMDV=7^5aBuvl`Ihs zHoi?fqdq|5j*q$0F8&4ByhHp2yZ~CczSD^<+`IRo@?9?2*@y4!duH6d+X;}9OVoe6>EFwerOKJ#sQ-QEWf1|To z^H8%!iLp8(3RoL1WoEU~+G@Aps z!5`X%0&W#`EU5SbqIo1v67d+`#>SEulgDZqxcq4gLMq5pxA9BmC}G1C!y}(Ag`bpZ zrs^7h2q8(am3TB6S`c3!;?x}ri2!=<-u)f$_Y*o~7PBUGBxD1IF=2er`wI)4cVm5X zaVW!f@wi1}<)rCwJa=D(=SdB`Nk}-v$X3?Y$Ebj~vPrBlnW=sY5-@e7bTuq{kw8G9 zP{7QXJ;W|kTku@)MPNWm7pt4D!#Grg7otyCmVcuSj}M5+(ABS0*#K3j1PB@h7>05L zP18XT0?`wZRXFiNjxD8irSc&lQgl)5SJBgE4LW04nVG(xP0XD? zZ**cxM^GPR7->k9loagG!c(F@Kmqf<-8>q?H*e8f&@GC}A$pqA9|;2%_1R0}r3(OE z62Cf%k#>ULu=^{pdd+C}Y&BEb`38Nd?zpZg2hs$Z;;WY&8C6W{Dn4`kf-F^;NiT?z zq^9zdq>b2%>%wM}^Dqo(!oG6dZ*zH}?>e$Hx}>%OA%aBD_ED^zqo7Vs(lu)WQ$;6>;6)!ovrD*QJYo%J{dv0bTk*GbWhHrzXiT{Js zQCT75{iMBNF(p)gZ%b|JC*m90e^Ybw^iCN$MJ~BtYfd};T*BE*kh+Q}FJXDOhvGLR zpCP6sE@6yvgnvfUKTK75a<$J0R=c4(H01&^;)$MQzHukiyi`T!KO5f>4yx9z(`rNl zii*V#@np2DXriW;hU-u03N(4H^yEKks>+}QDl`oqaPT|mCQ}ty%$^NmE6??T3UZ}s z*ItID0h*_1J7Q!-d3vq47G4gXtnGYxxT~=rrdLK4VS&J_)2yh3_7YWx3hgkd zM=}jTGB|{1TDWMD{x{9MkY#ZO(H8pSw@`tb=ooTHzx?>I344-ADtUr5u78`6Cg=nj zFN4cBOI~W6ZBBmoTEZF)`jTWQI%kf-+oTyed>F7YUvK>3fuaF>`|#8xe+P@_F;|9f z=E|_g&)y3TLj8?k>G9AdlsN9FQ-oeaB~eIC3v_uK@kh!gA5{~zgIQw#Q?g5WHC>@y_cn!<&!l6aTFlpVqoatq*-Y3pRz*8$`+e(Z*W+Y1PYS9Go?y*_p~VXXmb~ zjfZFIaL5H@ECnEG2WeUS^~mKUHC)PY04r}*s*~Sro)Xs)4K1s%Be0sT{(B%>ebD*zm@OAd2PXd8-6cs!mWDH^uvZ-d)%`e zy2#x$T!g_6y4hP0=b()ZWf>%H-Mhv4=xvG@*hTM(g|vrwY3eWx0sd$BU6N-CS99#n zWj6ElqQEmZi{CXBb41)Gzy;$>+qftRezsQznvbo;!^V!-mfFi=xj>3^O#sAh+^BrJ;Cj0@{rQ(jhfYhnND$fBwU=BO2dL&uD4@xHB& z(Ud8BhE^3`>RDmF_=#&vQE9NiYAc6rwx*gKRMWjykJ(Da{Tt!Fb1i%y2)~BG)Y{;e zFzRRvPQ^{6?+|Jm18MWJjeM@*2G>P531uXB9VK|54>jv&qpA-JS<=UM;wfVagBAHV ze$IZ6M_ujLugy=Zc2o~QpCx`84tqg+1pGh>5}CR)6Hn3X8!nPzB1vM1v6S-0t$kZw zS-Ug-Yd}E6jql$F%z4lvW^!5l%=;5A_L}kJpVX^E#@e0i>^gf-+d3Uxm5e+(CXN}P z)cDPm^U?jT+Af>@YK7-(-|Mq=pOh>gxX1MH+?xhgPUq{J_x4=7cm3lpHvJB-&v=$G ztm=7H?BCtH+km!Qo!z_U^TLZ$-~3k#u+xp+qYW4gNZ~6s*&?)H5`$mICjfxP^8Ldav+jhm( zEx=q2UQ3_NdDb|$3yOmDg_==2N9$;Sxrc{`Z{_fFd^ll<)B(Mc0tqjhjBbB@%zMS>p1OIkcQ9xK|(LrpJ#a~23BRWhgtJXBlyvz0mIl9 zQeC0rirBg3eai*=1|lM7Q2; z_9!hp=U%kYQA{Z)2H3;i zcUKJn7mbUH;}a+Y9mdbiU{`^aQsr`y6tj=hdQeWP|3 z+W;O)Ue&U}U)fdrlP@Y-U@j*+9c7uy-t^?_Wj8mDzQ7D@Q$h5BN&$hS$W-2ta_9AG zwo`NLoA_GcGzpss4-hM^R$L9T=*RGXoFlLMj(+NF> z#u$Z(lKOINtZlRvaRrrgUx$oX7r-4|5M%w5R0i{L! z^JAYq;oJjqy-}!~xN|hwP|KGuKW%w-vzCbxX$X_(p*h++obt-?yT7=I23r;$hOA)v z?Xo$KcltbEu>|=$A$Vn*;(jF@6&etFPbOO$&aZr-fz*{g9dwXNr`NQKK}mkXDiayor#FBrT4droG#?5W%tgs zMhH-$bAg__^y#yc*phjlJHIVXUN%^E8u~SOkLqg?MUee6avGafkDK4BGhG=VV5GXb ztSa{I>q4AZB}0^U9&}U7OCJrFOi$Qx@ZbY5P%a-N-JCJMMtvI}KY6klNp?nIl9sth zjL?;p&04fbCVT>(!!d>-ss-s-!(WSd0JJ3rdW>ayMB zgpA|m<>frG1*@;Q@U&O{nsdhT3(KhC%agO&T!e%qumw zAGfFJA8ggrDiILe0Yv8~A!%1%ADHD*`R&w(&-Sk; zEcAmZ9b5{O=DL0!Z8&%V;!662uQUfv&z8qFc)%S@GeF1vuE@MNwb!J6s6BVap>ajr zn1~1G9^0kkwb@cvD(4rWsQO2SR}h8DSpc@O;2e%8msh*TAc(PH)95)TuEmeR`>IGX zD&W+VV*#-1`>eH`>NIyt=yEv-s9V$In=k~C716!>eqWhkPP9d7>0&TftWuNv9=H|j zWGgF)#G?IU1G#J9TJyBFUJv5#M=wlo#&S?{DcGV?`N3J%DGxgrWW~GK#zXkdK&(zM zhhMM1sGhiMz)Va6qK?9Y>7mlW#hvlF?V764y|=1tAW!A^V7+S@mzL421L_YY30fNu zklM%}(reVzR3r=_C4sBnph=TOu(dN>^B>s_l#pVq7yAI9i7eUl2~>#AeVE-g_b$V#vBZMfd|T-(Ihi)zyOuzd9@ z@|>h_Vje>XRaW8ZYobo!7k7@?bYx;z{zHxKv3bd-GT(p7SC)3c?k)5TdliXt9eZ|R z^&t;IML1#Ix*-Ww&&%F^_+S!|-Ar9w+cS|Pnpz130L!Q1$tpP1r7Ksat%!AkYyZM^ z4gjst*_+-PVLKal7Z9T&mbdPpLHmP)JFxv{@cXdEbF?ZpTz@{%!J!AjD-yYHxL%*M zl`;Wv0nJOns-e^#B={nwA2`r*)nDsEK2RaC$bg25c+A!~JCjtf1s?CQwIj!Co_Hir6+Jotr`o#!{KhCqrn@)gYyyXR<7)ds2m#Y`HEBV z@$E4maKUJERh6#fn@LIyk|jn zX3p`|pPbd~u-*hvTpp8GJ&VZ_Rz16bZd{ukaQF4GQ>V69R&MBcDHN{_*4ZUEVF@NX zL{R|rOdr4n<}ylsu_Crn*Y9hu^Myu)MrXWUJ$c@|ok{aW{u*Q5>)aWhu?2&JI1K;V z{30_`hD;JTe(T+uJ!mkp?N7wTF?QFOmSAv@KLhTWX= zYF}`CkFIee-WN+zJ!EAET)v&4mbWHp&wgkVotd3I8mM`Cgxpc?SxY}JOu0N)_wV1& zT{f8S>1A=O?7{Qr6DY!Lq7N}bm?t}soSxdxTD69hDEv_XijFH{xP*oB5oq77=D4V@zS`2GU+_ zhz~w+pe0v^%D?)2`=I-#d<;hEp&j+ux|MX2%P}#`Yh1cwMawr6%dX6hThn0sZ9^(E z1R4cw#hW_(%g#l#Bj1Je53g2^eknRfRL7W@h`{y!VzSU0?IMx(&{mW}+93@JX;5itNhOuEB&219C@E4JlE_FZnU&1&ywB_U-_P^h zum9`+y6@{Me!uVc^EtC%mCtLmbMWg42Yv0vm5`wzk-82%G1j~yDmX?+x z-KA~hzjW_#=yl!}q6g@nufKmTAnO#L*Cn)oT{*S|%b49^4K}Zt&STFM57I0isRm69 zIC_L3G<^7LG;30@Z(oz>VFGq@&I}CPO6K{!%>(gL);t=vcFh`80pt0^He@05;4}({ zj$i$&Gv0C03ntcVpSfkr7OY?oV*7*#bwvcX!P~n&ub11fbLUQ?)~2{Fwi;*TF}x^@5yVZg4KHQ9+L7WDyh`&d6_R6X zmruEl!CnMhzvPdBjdoSr4)(|oYu%lkK!v`?e3DiANADE-ieyi&ZRgher(}92uHx+@ z0wGc*t_lx$9QokE$l`!+pn^WwY6FGI_s?a#*vf84wL2!l* zAGWETL%JY}sk`5Nl^GTuPC=44>;dnZ)XRj##no&5lBcg;eLZeiz3%Cc1Cm{%Ik;+x zMc+pIFRG5{yqtuft*vd?Ij&YL;1gHfGxCqyyeA=7>1+9fmt!NSNE}yoNe`*k)X*ro z`8y`t8u*gn{qu$aY8dpFMCDI8R)Cz4Imo^O);i@C6+N{KwqH3oCI3&1?mR1ggXY;= zuS`DjWgcgL|GjjmqM>I#Nfg!0wam)YZeCtqi~Zk^H*b=8bgxO^lwL}Id^1^ag2$T0 z#mXgf<~%}yo?P5@<9(yN@83hNMMCoQLut^VEMfhp{J;lMA>S^iZ7W%}VPvNvkrh4a z%Ij(~*N2%{rT?DgzostfL>+vOaI(LZwZXouNmJIsfxrs80Y zK)t=mNUMGhc;>Js=sC1Hce2}XqEXUCNFVP6A73|I~c0q3-AWnFX%HRf?b3c9ey<< za!Y?FxuewmS=GcT{ z8{V1T$bs;+XP@gLKdCjd=^$j#mbZ|-Wvl=^h$$SO29dcy2qjf49{6$-yu0`XLNj_DwJ(nF06xnuy&W0Z zl~~Cu#sQoZKsutm8ATch&e(B?lQeeRxS+H`qM0VRGALFhmUk{e?lf!XM<0hL#Xw0k zb>!ksRu9{TE`13DxXa3_7oFptzKO_cE0P0u_O?5;6bO~iV-omH5*9>B$(Bv~ho|$R zTC#);H;7`0>*lIU`Lgoic$IJ7zkdpA-GAV~l?d3i&~8zk&R@1HkxgXLbd@szA*6B! z?csC4qRU=wNC(j~zFvc$VrRgxt~HJ{X{>cT$|9AOn#a$bi*Ge5z1}0Raj}yQOi`xI z?qZuR95yA;)$s66>}O*~gmg5322xA`B=aVyT}i05bX3SgAG49tfIA|3nIcQ{0Z-_N z$n2{iV@L>U9S${X-Fg)lsq0oP09n~+oVUenxGIOpl-|ATkVaJb0u=1Yj*N)#g3i@s zGI!Cf#k*5COvbkCX%HeVrOusSVBl>)BIBvBO>O6&ctRU6{ZJ}9MvAi=CFk16#?#kw zrc_b?DhDlo0Th?_;|C_DQVHP!h<*iE<~eicM)PYZZ?A*Xk`GOz0{r}P;Gy*n{R^@Fbkzbek5GpI9dZv7nRR0X!`mE2S->_PvWX zhgl*bHYWDMJ-lA?g|7$K&9S8d7Q@jPEvWz1Fv`P6jM&6xZ~!_O?QFxSD)%^DQHnqx z0Aakz$aqOUaK68T!xNpQ4a;sBUN{n!B=CBO^)b`nw9x#3aIN?)ufhQja+s+6WJz^! z7=Rd0;y4tAv$zz*E?4~+KzY=X&im))B8%exrr3qfoHYwUj|wjfO^r*#fnWka(m19m ze*Cd>(I&U&Vz!dH0s8(d=Rm?PfV&jcl>3Nt=Ph08FzffbggVRgSH}&poeR$FIOgok zvWS*>HST?tTmu%L7ApXkn8(jF6pJ1o>vq}1P(85xcin_PAtvcflWTrX)W2Q2dTPFQ zt>OClPNjx{yT2yiSLqwIzR^Raly!Es{YR7stkmfItb1<`a*G!EQMynoP7R z4jpuSs@93C%Z8-fu`1nfca)K&j-zN+o6F5mnT|17WhVfYZKli=lH*M0@8bm-`+Ut?kgd;yphm6>^S!Oi;R z3qqIf{N!jKQT;jjYijb>%Ts%qF(Z<)b=D|D&vBC8!`dB+WgKo8?5J3uuaA6hTfCY{ zjSeTGw^w$nEgUf=aI)3hEIe^=Nqt6#dLuCKn=Id3p`pPGg?hjod42BPI|ax8Ha-0X$*ZyUWg1ZN zdL7uI1+{?%nn9Am$%_|XAvA#L8%3{*hz;(I7FEC&BJ>GWdMCYJtLQEbj!gww; zOeWZctOVfr$akRf=5d(cH(J8<2L(8&@@Kd&CHKznThI0LF-j^ezG87MgM1n`T?ZWp3X`McQzA_cRNY>$0u;W10 zEVUKY(QTF&!cnTd@IX-sI8|tRMa!%4jW zS}e6-Bl}W10r8SKb-@ofxVeaW)dmk{Voa))>RFS8W0R_?bS~{JN3{UeAX*I!S!Q!H z069d##B)_>x{&M)ULu?+1prx?eLg?lq^T_UBKZ#ViLHTr)=2D zX|I)bwM;q4r$kFfCIG;04I>5AtIs|O?R>y&s zPr*kV=PIzbF4N(6D?FwZpQdULVZlk`$64~GsT65gfyP*{5ercJ^Ut5&95(<8vMVgd zS8flZuZ-P1ffyOXi{Q;m76+#=GrJu3*avnDT`!mw_Ze(%1pp1l>NdkNWL_u%a{F<< z`Rt^; zYCZ5U29Je}q<5v1e2Q!xqvr0zhMk1Drstq1kE7uM5Luw^9=Cb_xF0|v7wAI;q2-r| z5&qSAf+(wY>Qv`j`8hVB&2vC*=az9M5AA;bGQWe-?@pcKS7-B_It72)mgW}e(Wh@; zfj!HrgLhYz?N}0OliOzA%RfEbr}LXDo(FiGKmUR=AR(&O*T$0miJ+H|Sz8v|?Z&D) z)xT->M@?GL@rln@#rwB&15-9LQ;e7h#N!fzo>KBqc|Sy-evv2u zf|0)cn-{eXLpKsMq$2~0hx%Oj%qWD~EIMBkAOMzd?u!n0hWt+pU}!jn$dC6P$CV64 ztnWjvplEeF*&(>v5tb7|68-?)FD0-1L>^;{%Vk17Vq8PhSN?O?ozxBD-z#;#bZ>`# z2S?Qm61@63a(Jo^d_LSVnfMm*W|q_8XO=@c2Y)+}y5TF*PQ6sD!-(;;7Sg-o+AR(z zuKKcwk#VZzg$AveSwAz*cJMsk1sWO#q^>m^+Zobi#eOa&QDFskuXNOQB-o^3ga6Ej-;pH zz@x^1L5v{@cAWVBg9m@T=4pu%MGTqnNgnJ0tA2o~fcy8`lZB|ZVCI`DHv0J~`}DSO zFIs}ONFi7eLwH5~Z%tp>@pG*yxENIB$bU^7c9T;aPbW!D$Gp0j(EmWPIE(QW^_7 zodk9;^-)=sp79J}KRY#4Ni4M1plYiqz$~ue&tgE)Vxbhrg2RTw+&oz zjH@lin6$na9z3D5-A+d;74es6$HDSUHtoE2?b-MKY_!C563q8$n>k95iNC8nz|u9>S6dFKn|IUIn)Rb@`aQD25g-girzi19x_N2? z^r2cJCqa>dOTdo54|q1zQkP$^S&UU9#|$0y_$CSY7CdTs+B6ApuM9pGVAV#sf}DX* zjv$hS;m^HnGxD;Bme2xj$~iJhBpUTIcZhR@O#A6B&RBOJ+D7~+X@}Ey{Q*tly0`HD z4DKScfRGyw4iCGp&Klp@Cer}D_Y;73@Xt7cgr{YgD<|GAJ&FzWQV=oa))xUiU=ubF zhiCRNe{*FTz^uZaN6M8Ah z_GuA-18!WfFJiqYn~7p^K%v5XXHeB3D>lJBB%@^65Mq2~WXmrLt6$lr)y}g{@T)nq z)c0?UbgmLM0w6+1yxlv7g4LUQdsDsket@K!(Ml>yvY#SF;*STAkkA-{!wt->~#I^ zUFty@VWYsV0|$r9YQnqaP>sP%hl;1ndT)7o`L}@ZqR$-VYXJeXHJUr6gh&f~*CL^V zs;a6u6ZAN4*DKOGe@jTKK(ssTNBchd&;GZ0S5R|t()oZ8Dokxb|7$%=1fZOKU70_m zG83;vdT*f4W@?Hh{tI@G8@k9Ua{V#u{D}>CiKUg1iK~2IJV?&E>ZT|V_Jl{w^X)Zu zY*^;D&_F|D;{+g4F?2&=kBDRZ#?8u%N1}G@g>a#5v}^!bJP`Vq>6%L|zF9`S&ErET zn59xhwi~W2i%e5DbkN%L=}i-$4B#3gBO{Td^R@dhkqFy{Jnvch>fx$GRgdsvqC<38 z$D%gzmY#RW&7i0U4^HFF8GUzT|Nhf7u9UvC&U@cz>q#~nc6V--kZUur!=diU^)g>N z2CEtRE>L0w%h6GrOM>ueLP_)d!sH)CGb-M9LIf={k%xR?i{1F`B3elSTh2vaGMuvH|3uW`!=I^jJihxya&g@?QjtH zl?wq~qpcU8{yX05`TSl=cxrZczCb5odZhGy*MUQZbR2GrvP=8xs^Z&@E_!NqoB65P zee%1?_!ey;+~b~dP?U>^LU=QVubu|FCO!K1n{2IkKM2x^qzgH zp%`-x&8f8_`J;%6sSA&-vCpAp_4QR_JQqF)4GTjeluoGRF7?baY18AlLinenjK50E$~kwS7Svv(7d9?_`R+%? zL<`M-V0);fTR5hLU)=F(1~-D;m$0iJ_U>>>@pma;q0>EE0t;|>v+^4mPWj6WK%`A0 zK|~RIA|m*TB5luw8`WL2iVT7W`=X9{^(rv4+sNU=SKK#hs&$pJzw;QIM!=_FkKI zhS1SuNpQbiL#5ZXNz(2op0Q>@-AfB!b{>VoP29qk4lYkRu5>6C#tJ%!C{z6Q0UA=l zZ|Me~$-pEt8rjyR>pKtPGMrH8!sDkvQd2wQ$^0<5BE<<-iiXcds-Ju=B0(4Zc~p6( z0Q-O;Xe267rtP+J31fGOIbC8Rs9Ce-&CSr0v}@OnC#e0Sy^6|IgpvT1 zg-g*t0z8=ntUcsP8LNNG9uYq4HQCP0utrFwB2I!X+1{gS-)aY!kf6b>#xogxv5RuXHDKW{S=~n8{NRkQ*L)N!H7ftaELGP%BfQ z%$zy%aF%cS+qV-zb!qIOnBkgH#O^7(AH5=Eog?s6>-~EnkI^eI!taB@Wpm!a03%A*e1FH0-j zMxbL;FIv}0Q&-M4G%Vk1r~dy2BAV72Px8l9X>ZEEQkW6pNpuow-pD^Ppyeqv56A-# zbTqNsty7a{z~gxh1wgUYM!R&*MGafq59tgK&Vq`D2ovIvu1>Jg<+Z;$;^77?gqx7r zgq#~hRp=zTdfAx9V`GUAN{eiZ`F&1qg47la1M-`|cm>5gx)AU$VI_#c^cW^~*^Rju zup!q%LO$eN<#}q7%(+zCVc0+o6i>Ws`Nb4vIGOCJS&-PUvvII{m#mi`nq=R5${YJ&Ip6dui1MF1wn&D-J7uhSwpPC3k3WB@i6 znDkU~U9(}sN=kc2=kQ^gn*G$(KZ|8GH9nOso&=2yaB13k77hDr=uw(OE|!EHAi@h^ zb@LQPAgUeA<2*lh>p=iS`2WFn1H-AzL@mu1*hewd{`%W#Sj1htG7G5%+O)+A+QnUF zkAqbet#R#7Hzy9q3zj=QMk@G{N&X5Nw0N}sGtkrkFlImRd-37mz>)MwG`575mXJb# zOvA83BJ9kB$%6)rU3cFGB#9$c^>-)jv><{YrdZTWGdK4+Ryl6`c#|{s__A{*wZ#bu zTGfUsT||<=hJdb@G0s5M_&B>nVcB?COs05o_M=D;(_P9Ro;(v>vhXk@dtax;Adxhw zl=kHV8Vv4m2sBKlKLze5J=5o&9lmznMdvo)H!I;|MAas@KI1_{8uG#4Kg9&ArB3z< zTHdoT83fq-$`xl>ZzZc@f)>v-Hts}PX!~?wFQwNc7r|Dc*AdKf(uZ>A-0m>DMhDXd zbk&@_4M0;0bxq8;)uihE0^kCX(1um1%%>6=m2TZolx#dlnxg#-V_Qc2SwscBozZ~p zKYXv#ARyTp>Qwu8K%XwweV z6CY7Gh}zrr@Zm3P@cc}pmQ4c%a!P2+Ha%R5inDLu{QwESP<)FeCrOHLOT8@SHnLoF z+3_|FW%Nsa(fGe56Ym)f0$%B;^x)4|DBWD3+;3-BU(g-cK?ns&6frI>T%0%8gH;oC znwo|NKwdj(OaO%Wm|-_P!p0>Oa#%qBrS)gJb1zR>Ui#)k33IF294{yx`VA!U|d)G z!#aPn+W>c*yMAHELGUF|Z^lzkWw{ssSCmOmOo&oF5%o8Bh*M?gfS)rSbs2w=m13Y1 zig!9w5$xCzrf6AM_C{oFCP%rs!v4X(0&}&lxSTt?G^h2+eO6mbiQFz8A;c5hQiiNd zELx^R&-88(PY|eV{?erbdo9H182Wh_(=yV)0z?oKdAuSzJG_P*2Xn!FJxn!Aw!`G& zD6tinJpt1J!fC5mDs)Wo2Ctaxs+K;I`hh|p@OLk57W5LR-u5*oT=jc!09~rq-Z#SP z?*(ogL{CUA{G&d%J;;3$xf}}*7z<$%7=q_20Fvax+XO8njVPWQ;jGV80wOHD>-STL zOLi%1-?3v0$8McE4RA0)-h$7DcjkFqNjDm5Ah+}FmTxe+21~T}19_(e_ zoH^YOLy<7ge2TLvdE2dJRMCb{XgcX|D5bv($Um1^l|^5J$i^43ZNG=tUzt9XzhCRkO3TlP1Fu&e(FeB z(|g=FPxv?7Pl4k4fUb+Q&%pr&mk)z5)DsZ?phQX!jXSBT^2GF-tWdq&Y<|@$IuXDhlqAzB zE;;&mKo3Jb2U#_l=g*s#*N)Bvb_Oht~~G39N)%S{&x3yLs(SFG2&b4^$6xf$i;NTNZ5rb zA-CFYIy<#^$zAu)qGy$FG|v|kDzT8HabpU4;L@~+;C&<`qB6IDYd59O$+qM(sVN5z z>@{FOg1MVb-%uMTE3gLY;>gS}H-@zD8_lAypr6@OAet2FHlb8`{LqY0cPm$|YMw*; zDLt6)0w6O6g|3H$EIxCQe+i6XXZI~Ej_ICb9D67YXe}oDMS;D>H@OzuBpE$6C4}N^JW=X3~{G;RMU$s?QQpp5}s%kvXO9-XWqt6fkK_aS3>Bjm1 zRUkMgo?#zVHhRr(cpR=PXGJ_*n3B*qO_qtNc@gn7JtVgc;r~CC?H;fz%oS%)CGlRl zzQ9~O0LEQU%Uca?tE8mIH-;mMaU4wW;2-{{&YtM=ni1}2bj}pGF`H))59EQo@}E+` zXb3O`FN*8k!f_0nan`>q%m4oc=(>^m0e;QAwujPg&Yx;#)4TZO`u=e%HF5RUj>)Tj z+~q=1PEOB<8^V?j1~zWJf1-lUL)F0^Gp2TB(z?3l2*Ov(V4petv`peRjPz7I_&p#T zP{^zsP;tSw>h=)BCFuZ-krb(>701>j!HqHDS>G!-y>`9m+t1fW?L`4 zzpUuK^`MNxqLE0MmKv(mxW{i^->A*-Krrf&p0kop7P=LOXNG;NOfGw0`_-g4bm#rd z@__3JxxW;Aixcl3O`TwY#?y4?n9i+XU*q94qwlq||FufBUO!c*MA%iju(=-e zwx4@^x8%q9%NyHHwnT?&uzgeAVmOkvs;WB{dg%`_3FrvNfzoP6gvr!*f1-X)`2UWu z{MenX|NZ#?`!*)EE)~Bo*3Fzh|76^1KnJbLFDFx$z2E#wJ5Jd^YiL#`?x68E7y4B> zT%fz{>86Fg)eJa8gcEe{WX4JiZwGbmz%?3Q`9)bgJ>KT6#PLf{DJVl`qa zihRqxAh;(yY6e)}AIf%!?juJ0xp?9UK)%d}@C8^R^lSO4hx?GXZ5UbZdGFWqR(Dfh z(B>tYyJ?pV8L>a`DLq31?IuB{=6Zt7zY1&;acRSM1@Y&#?N5Vmz)W4}R$~+a^dLW0 z>-URcIy>HFaB{@A0^L=D+q_z`CX1UMUMuFNnmGPhC`))5BQM!bRfzoR+o-6@#I4KH z&~6pneWl4fF9cXXr7f-IU%qSM$w#DDp%sttWS4JxRXawCccQDw>Va7vn>~L28sf?V zmJK882BthP@&}DNKl|G&o0{U!TgI+kzuxECwI;ZB-Yq?pyzbAl3$=m!j9ZjV|K~-Z z^YfKebDzdq1|zJj-0P9n4KuU|lgwhB@`|(#4=!FATxUtBnAzv8K}HnqzeD-?x7pT7 z5c1!C4`ApKygBNO_V4T0LPP)A8*RPJv1|sP!F;5r(}PW0*1Oj(E#EmL^A1)mR0LAZ z)H*Kj$rNIzfQoVoIdU^&_bYj`Qlt@DLDfJNWOVFdNlXiD3S9(b0q3!ds@cZTCkzoN z&b%65eVB@G)9=JlcVVY%t5TxMLXSSqt}w~}jl_L*;<*tiHQ~!OGac&}i>?PA#qjUT z`*XnI@wB!3?!ABKrXh*6^@_lQI<_NrD#5Me3f~_$;co%)2K$oNSpc0N465m#i=}Bv z`sPYdZUlsAA#IbBPSS)Xqg;-Y+!h$Tz_ot9#=#R}o#S1;UdCEvRW0+29tLutCCoZZ} zHocoFv=_Lq&Y{*zq4{VJ8N?;gIh|M!$Cc7?|JcR-`lA!DFIjtUUSto6(Yp z9ruq-`@0Uj3Ki%}nn3BL1M~s zSd5whwV1f|@=Swh|0q8}cN9&TpXcgTo;qA>AD6Hg4E(1%Gay z8DQWue)G|(y{ewyvw)0b!cgYPL;-__MyfH?D~tkmlPSvf7JY<@gNH=$adJ_D+BKFu;83RgUbp% z)D;%BD`>mC)#(*Of_l9^^Tl=A@O8uIx{jC|WQe=uqzxZp_Z+x!X=?G-8^eCrWS^_v zyr;iGO@>v(E0gu7M{oAnTwHzL@nvfD$COnpUQ#!o%WN|SHb;-PhNHq{@GxB}J|RO# zjcS@joDu~XA|`RSL(G7>4wD0=DO0A9=*8)VW$TBm4|AueSOFM;9beG=VrQg$%%4>< zETKC0<(4(~O&Tj&Q;>zvH>lR>#(C{Y6dWn)uF zA%0tw?d(K^cIX6rhvHA580H{1Q_NosJ?pf?_fsEo}fFEsDj?YzjQNxBBg)+NCXO8 z9`!UfwlRlv%kH@GNhf zw747e+XeJyW~QdQao+`C139?t@1H2Hmx~8p0~P_8^hD^{?146<8*@KQL$h9P-n4aV`-7{lUA-Da zC(4_YCpc@?5e^|-j)?xi8gL|i&Dq%9u&EqE-oPZb;9+RzIdUVIl@R-=O&K-^^f4ng z?P<;bn?XCpBvw>-fc>v8&3G0a-oGaaqPDAtJCU&IXuV3tBXRx^wsinXnn!FhrEv!Y zBn?dFCAR7`5-Y5=nUUIzp;HsdbAY{|uDk>gp*Qr4_(C8~6vNsPBd#)~i7U}Cq!qkN zN%cf`*z1S3#mkm2=j7PqQ}4VY#l31y2D`K6+yXT7ghkWI$78GaQwnw!ExX(CBic7_ zOjkrGRAe;u@DcWh_j?K8e4N583#0X^y;u-(5xqLRmTabB!wR+qn{lxbp9KbOfN66% z8|TM6s?y!DM}>#@uQBVMR_XY%vuK444NKO{Ak%`Z%Erq_X^yfEgQ0ZwVoiWw;D0Ot zJ8}y5dwH=tqb1NS@S+seatI^rJ^0gg0bS_3yip-ixR?B`+|0TU!Mj*Qcf-%`E?$4E z{)vaYn%l3Px;X{|NBOY|ImN-3=k%j@0Fvv8o@VlyV&2`7sGZuJ{tl(*&YpeF^JwHG z^9Gm>(P01ln%D{YLqxC`kq#R>b}XKGd&nuxwwd%f`IFg%&DhuAwnunoAHoSrP)a%W z!yrsMEcMJ1l=go!5QPhLaM<;Iy<($k<6*#*?Gm@v^s!I zF&{ph5md+Qi2?$bTAz*7$Df1z&8X^hos;Lzsq+1Q4~Z(OzJe#Lq+Ilk=4NJlJUluQLoASVhJ=OvDo7p1 zfv)Yjv2yhn9(&BwoaJh~p}G$5w$Q>dHG@2HA0Q`cMr!K{kIZl7`U5)*W0Vh4k~6B@ z<1JU3KUBN6*JxCSGL^z`EQ}IYhdJHazUOMAu*sj!>!p*gOPI&@nNFC3WFg?MJCR?r zkdm=CfeC$8-FHX#H|gm!;rXpH9#+vOLFViDH3V(CAiDg4>Ztu~z>T!d3N2rFyIUNwA zxxpPC70JnePdm8No(N{IW9-klu_?*Y#lISHe@{*~)?hes4j#Rg5vBg=29?5Ba;$v_ zY*2gjA$D0C&sE{Mvnw)kJaIy_E4%))33A15mb*FAYpgqy)H}+HW?|;Ye_$e_I(iRh z4Q_P(abO@_wRb#0UG)g{C7xDaNEWiWVwZ#nWcL(8JVJBYKq4VQ1qfFO7y?pQ^xb~9 zj_fEan8uT1YPhuMld#6RRwPMUa`9mo%X=JmD8T$ba)2%2-VWg}O!L`&xGaP0pu0Ni zzAM`E)il6(fvs4v;t|}O(X!u&hGfDkD{BIFeLz_l^eC&SJR>3UA(>0w!+%3Tb!N=w zYu1+BKb^lN4eK$lyMlFwMB$(GSwCrMX607a6B0x;wPj^rF=t;%_IhNz&J|Cb`E%#~ z4FCO+FD?>Lf&(#k7Y;f1$F4$w0|ejU_1Ba43o(i-7i?1fZ9xD zwDqN|Cqk@n?&;ayVt&U3K_FZ9`YHWshPwlugz37zpY4?=1dw5UVy_wI02G-4>rz^1lq0EoR!E z^)XOQQr4jOfgQO{=>h*uaUn(lIQ>yMcbF6BETgklRy?JqSw`%LvHIyh5emd%%fiX4Z($f2c!#Ris)(Gka0IW!a-3qSs0 zUyF7A`$23wd-)^TFBNOG_+naT!B!!HffHmKCXAVKQ6&?N*#vWXOdp}y2{SW@$;sr@f$ zM#6V0G;jVH77dF+QBDg5OtT}-ketEd!u;Zc#3il4KUN{PfdNE! zMEyS&K2>fNYt#;i$N&rJwQpHeroqTMfXr1$HcXm1I?*IBM$s|;_u{A$$lG)qe}!oW z1PXLkjIs3PAABM9W34knz5NS!4Lgf1YXICiA)E5v^k&%MAMCQpm;`wlRN(j6QRz|Z zixFpGVIpmB(%ZK=WF{$BKz)Fs`JQb6t)VqGqtb^7pheMDcejC>BQ9|5dq6fB8>eL^ z&qb(4!t4c1&7cn-Nrg#&v?u~~Y$?w0qLKlN5QSjL`>E`##hGFX0UKHw@}?7ITegZ_ zr_@lEkKnn*fSxQ!mwnQvrrwvFcCpJwLJb-L;FK>U1ucgPMdo~%P0mPYF>mf%HGR*B zhYwYt9Z01FCRtHSwTC+rdJ8thrZqQRIDh_QQU{8<$MNw8MHEa}XU71EEQg1?<$Ka@ z@NYR14W0x(dWb#|U7zIN5wd04*(Ygw8%Wxe%$k$A(h$v(AuWTEFZ z)#Z8Ey%QiP{z|B|-eMZhW-Q^IF(09^`UQd`gSiY-^TjSkA?8qd?1mz!*r?5^TRc0Iw_H>OnwyKF=lSW zxB&h^d?YBFLH>`xLP0!H{|l2KD_rB_KSK(WXk{lO1yCGQQ0$<%#IoD}n@S^XUUV$` zhg@LjI(WqJ;ns)+#C{i(-328vG&B^S zB*0PdA)FVF@bljWEE^}^i}Z&=3?|5?rfMryH%)=Y#C?Xza_(Oh^mB|nk}kSgbJ3R#gz zo}(d{f_@IYt2{Uk34_6MCNPo&2@$JN8g8SFUu0+wpkz4<9HhLUDZFJIe3XU{eM20# z*m~Qx4pp&~?xf{Q+$S`AnpCJD;4;ugW{7$B?i4}nE&D~G2;~bjY0?C%(WH0p^x-18 zwfeMgs8yQfsgpru=9jZClN?oLg@>rm*Njw{wwUS^Z<39kQT-0ND+G_47U32s1%@6eKbP8JvJ{(8A)_z_N zV|Q@tA9O^=*(A*gg3X0Ol-tMYos6DNicJ<4)5eGi4pEQwH?ka(nO^isobOn^0=%+( zK|lhHp+mFrJc|JU;pO4Z@QCB}IweKMjX{The~xV-r4P*m*Dp3P@d)-(G8PFiBm!8K z)fN^~Y4edoY>T^sN3vMu#QF0xF+t!-?9moyL-=F%il1dc%A)?SIa%}pGAT$0g5z%+ z?nM2JCQVcDBA}eb4Vp_Xj}Bd7D#!s?JK0aPSV#i4*Hn#QGzK)HS(x;wcn}c(I@9jx zdJy8IMv(wn@zb1P23A0jTuN8K)v9m2g}@jc_J^d#O`2#D#ob3FIpt>d*@y=m|)Fk3&Jq}ER{h4&UwDa6(Z-4(IfJF2p3;tn1`S8Ps zTJ>|cVEaCB&>#wl$xQs;7Jn6a2fSw#J6A4GVUmYB2?{KZbq(C{&!}ujPYki(DrRhv z*qYYw2}Dv7dMC0PdrKA-uVx69Ji+wI;Pdm@X0t$DCRgjR@Cuc1jLuB&jbsL_D{%@x z2R2C^^aM2AmCZp!I&K)a( zb8a(QPs*o4ze4b&-|Xp;P)T_#Og1p1*7je{SSw<#^W;Akw56C65yyF5QcY1K6N^?- zdrPNI@x$Gx8k#s|%6@(WMP%;+kfvb^leWte95FZN>Y>7xkv~|cUBNFa@LBn6dvPnZ z51)IHf&w1-zlbfQ=P?99&I<1aeZjzz;bgBaL|;NVd)Lf4#-qoK5x;=!FubvRoa$=9 zW|CODEyzA45q|Nkm1s_O2e}*4s6d^sH$qx`lCR4#l|GRJ4N!vC{xayJNG#|TdmPmM+b)rYSP`o&#Ww( zJSV9(?&}Sd1x)dnv%_0vAL7_7|5;j$4pN<{sHoh=e2{cG$Iy_u%(mhfCuN?$0Jxm#_{}Wu6vZmbnfkLz8f_fs|23xh0C|=4M;gP2qjt6~ zN*_b7C^ZHGKRUom{{Ej1j%DxpA%H-nSuFqpS$lg8g%V=;pw+LsB7tqxu7unnC>cLf zMuP~e^1DnT9i~O?tP$LrC<6J}7^sv9r)j|M*i?=YttkyMosP<=QNcR1b~_QjC=vRC zQ&U_DgF?&^aV-@r2h<$IHay&ZK9vLMzJnV z0vI~boPw&M2wBYqCYfaA75>2}tChXC~0Yyf@e0&}Q zNaSG}Paz5Ca)KE}Y9FZx=pkuk(W!+37qLH}V*i$^;$wBcpP_S_PLiiCu%HS)7)j{#xN~FKjURs=a5uo}G zL*|5oP^Y@_bg-zd1*@Q~M_3~lkFrNhAbHAsQO6;lhYT7t>w`*0q@yRlTD(rMTzo}J z6#W(%)|B)?`|PW)$God}7|HO0=O{PEB}$Nz&H?yD)Ib?%PJ}sg=8Rmz`a!f})1;mQ zIIt`I-d31SZV4Hl_VyqTg9Vvt%o*t$o{vF-=5a3N+yhU%T0CP6}MEBTH~t zw;XJhxe6edOLc}y%!U`s5nT8Z#fz{>7@G{kl!l-s18QPv0G-885t|JDq0lq@0GZMw zC(z$FfB5O)a(WLCM`CayGpmzl>FF zaJtbsNNq3c<@WTXCvf5Y`C8W?{Wh?8bNcy8=;7Vq2S3r_&WD1a++@7LoYX1vqA~*7 zr3)iGt;9i+kB4Ma)~*34Q)_;sQ7-Ou&1nf6D`vQL)mFg}42JF-r-*J}Y!!08e}Be$ z6Xtflz;x+jj&|O7(W0jeZ!jt-*GJTo90E+SpE1uV-LpIz!no+cxsi0Ujo#VeKFgA1 za4mbfjT=tBQd zr&7PiMMu|Xy#@*>L^h3SU}bSQy(gVc9JRMVMCd$0G&Q+TGJ|1bb0=%TOKN?vNfMO8 zs}&nJCQ@BPMIaa3ob{;w&f3b=%mRk6rHw>3kr7cCBmye+^i$~I4^!{oyGNVloS4cO z&B6`mSz1B*q?eZu!Z0I$$%hFIKJYxe-RZ%>@mJ7f)8p)??PA`Kbzm)tZwqy=sgF9w zy^%$O4I4Hj*-Zf&THz^OC)GblrZ+zbcs7V+&#jU@;^Zl&Zl!gCLrg@pKM95it($Zp zs6T+u9&rMuv7;6_F9H6|gN?>Ww_SJdt}j>#q!g1WM7X4sl(>wH3&`v@)4|etN z>-zV%qSMpQ(^;_VyhoFcuJ!+?1?YZPggVUE=! z4Fi^{A$O!#w}A&{L3CA{w1B$!8`fXRRb{-xXi_Yb5Bu;q zzDj53FgZW%f#s)<2Ui>abN&HN6Oo+=Qh*KWlNM3Q)yo$C1CUVljT>j@mU;wsJekJC7_TyQFP3_>KO015_$lH2&^;+%bhPaq1J7#nor@J zPziz>*UcGHeDFlh0`ECEkXB;qBcu2LGA~4>b*FGl^O zKdS;bYxN4(GUuv?%coeHatt23Rt&)!3>1t9AiCu(sm=GaZQ`RujwDKjzzM0kPpjgCb zgrNrV_;+zonA6f{41fOoi43(#B@IObvdxLWvXeD*H>?$+jdQBmmW0|xz(oq%Xp#{p z_j5tPzztmosH@Y7nv*7J8s9i**~LY2mV3E<}*xYPyXtE8|WgCgb z1*|6hA@CfDmd^EhWTc749<&;0KCngp&qP3uQtQ@uEdHXbHhoiCQZgs|AhS6jjopZ# z@~@%4;C0(~aI^_sIzf3dZ{qH113+%)0~Wfv^%2puR2@F`>Z|%P8G@S$^c90o{-f2I z8G;j+k3lE47usIxHz*A@OUys}!O1v%(%CR4I6j`&nGx$dfXZE`;vi5W^gl@C)R+ut zIDw$V+sUF&1kdKORDQYmbx2FRiWPmJOgRE-xuQD~YZibnR`?hV8cWQt4r;?M8+<|^{Hi?6nLLmJqrmE~Nj!GGG^NYfdkM|K|4O)s574vbd zOnXkJLt_Ggr-V@i+#3W@yQBoJ0_jC|c2X2@BA>9$E_CT^CNU72$uD2O{t)&5>C>l$ z=SNife_L_LV_G{(DWzL+A`kic_6JRr3p$Z4l1~_l;Y9l1UW1BDZ`m?0>IuvA5SHo% zXZ`(1o5BaJ+dH+_WhBG|aA`kz+P4>L4j;Y}&5hKnjH#eVy7u{!tPecI+e0+L}7=$jhuGX=>#d}ypvant4-_YqA6V8^slSOjajWf+e-_e^y0aq-8 zLLfu3K@Vnz@s&4NxdYnJ!7C;`nr*k z-w6PS-#c>cgi&G~7ZXWFd;rm!0)W)d^<-cNART~_!k~q2097Bp;WD8j;sBxt5+KY8 zk5cQRBI2WPL8)GJ4GlejFeNLEulnAz{*m`&8KOlHLH%GO^^LmJaC~i&V9S;*VT8K# z(J$f1h17t4X(*wR>XVj5kYe|p1n!M!Bfn=xp(`vk6^U#9d;WSWShm53r!;Na6ls(A zq_P|Ru~41-zQIK=nl^CLwrzdTDlwc0avykNn}1-S8_<7NODskJ0UUW0Qc?RH>4DA+u6AX%RAOjU;VS2>%5eG z`}TpnHdlzG=H`-Ddf46dJa=v}8*9-Cb2V5o@@~;f!>h9qxzu}@TW~8Nz;fZAbaEUy z2!*3AP?dBn6cGqxFN}8-qONfS^t@5OkC$cP28hutVhpG#H=d(rpScokgYa6=4N+%^u1(-@_3MkY#OLWyVm|qqn{e zfyC|xk9;{7eEjTm+xdr4W{P{ZC~#3~%ja5Y+CT8BgBwiK3Q(=68I2#{NFbOx-WQ5z z>J+vvpyGp`K9cl}$2@Dzni~gOBkN57^_3P%vLXjky&RolZ{8!D|EP60SzA|3RJ}&L zp0{k-pzl8%zZ;|RlsfZAfb^{3Jg|x46}sz@MYY?zZlbi{_MGvd7NS(~pA!`2PWyzP zzDwkC>Lso!h-`hB?4uu zSWI@F2Obq8Pz`nM^xKuR<{()}_ti>^35hzbTKB6yLdJz#13zfKKx=xViegtxpg2Aa z>P?;&$GqJX9s+C874PKN*3By@t#dGncoUk!?Ij9G|A0!DFwWz?jpBMm9)9^O7Q8=w z$WBA{Q4~+!g~IpW-DS@Fn}a{sSz3N2V?svG`M#J?@&QnOnymv~1Rb~3A)&@vw;k6JpDZRN6xGelB*c>*J!r*Xj zOjq=Gy#ub{TpekpDJwz=4Z|KZEzY|wVqQ7 zAGGsgxVn4mQ)W-?$wrLWM~`-eg^h(<7Ex)HQ+XxlSzHEnHd|ZU4QYG#PPhJ(c-b_> z1aQ#$%glOEANjym@rpo3P*YeJXJ`{O_rez85yY{nf4VN9Up1GeCuxg^*{mj=-%KID zb?g142QcNxf+_f8HUY-S3aF%{T@=^6Es9gA0O?AMH{Q-T@~Z*DBFef${A3<2ze*u& zM`pdY&?6#fSpV|Sks9D=jbVQ~bHp~R<)KF9JxJ$&-dqS>U(YO9yv#srw zb~FRzJ-#2C$lZwv(Rn|o;9M&O1P3aIdP!D)f!4kCGaO>tU~ZWOVH%JFuvu_Hk$BMT zA{a>kA*$=&)ECB%FG72y*6$a|1yYl&sgV}rB7L-WK24Cw|o!gq+8jkn*-(>QeL;CAgGEITB1CuO&9(1M;S zhNBO50fXf7Z8${(%sJ&7qNVMBez>nVL?8nJ`%1*7aP2@VjYF@$Q!6GK^QL+`IE}#%p;Jo1$ z=MPX^q3^kQYtl~7@rC*MhZd;kVuFCnM|0%h$RY>LdG^<^){)`zN(_b;D)vS5BC>z< z2ZYl7$B(y_9RSA0!g`5{62DahoLOWIhA5rF4p8jK?8orE>ZZJR4jnmqXpL?38ezwUwVXa|l0xC%51VkjOOK+)W08LpZJ z11_W-$wyrw#&!}j3iR&`8sXF5hL+j~U3N?{S4&PQrRN(ywVE?{?qVek3@^*ds0EIIzXQRcSSybho0sh8F`+SDvO_^|=1iE|AA1rr z7+xaB&o9rFNeP@msgCK2-avD(%`%3ThiJj8XQint?hMp4mGi&3^0j2TiR>VzOn{AI z(#gZ#cj(Xzzer_9;>mjh3hK@nBEA^eXe_6H!@hM`A^oQF|qH4a~ zzP&S%06DJ+Bc)&92jHu4%*1HUoL!-zV@Mpdxy{cXhAa|jntZ^+olPyue3TDH05nDI zlbSukM|PBOnLH50pEQ_K{zq?bVHLNNiq>UjuZFnk1BCmA0UoRimfm5h=+x<%{O*Z6LLa~)|v;D2QJ zr+4p3S(pC&`X%TpipbYA2eRdhunPIrf9QtP!!)`3SW~lfyT!ZqBAc%2YMFE@$5J3A|RgAPdXpQj%Vw#|LRV zj->*hb>W;(QMRuD=-)EA0WM?IK5`>pT{O$IAA$u^HA(Btv7kE^y9^o`_JT};i8i{L zJ75w*dS*J&uAnoHDW~)2!^>VzFcUViA8YRZs936HgsMVi!^DW-8NTfxhXEwH{f(Z0 zEXna5W$J;>ZvWzelLvOdI*w(sJw0t{Dbdp>hs(boNfu?JnM_4%Vx`%k4#ap#4WqfZUF z_3+_&Itdyb=AAl32I5P_#tsu10z%fiq8mDQQEkoY%QKh%gJ5vi2K$N{ zy~sM+F{^$p>zmUpZw#4if<7E?3+H&Ei|j`yKTzNS**(h0FtK>U55-N@)Z7R&PZA6m zL;EB>%2;9Y;kMOszZU!205i${V_*nmHX<8UTS&+5MfxSNG+OH0S4M} zBqcIEg@f~E^oCdWe6X_}`qR?6+_6W8Ly!r%)D>chLp>!45phGK{nzg}#+NTxx^(8; zxyMUhx~CZSsOR3=p?BCu9)mPd9_Q-_{GyKJC-3f57OZ=+{Qh!wauPGyZ#cty>RT#! zf@?>i{n1v5L|GWg`SXRoKpjJ?fwRja(UIYO&lqGjdr9i{j;j3jD{be^FD{65S_3LH z*cxLsN(HWhiJ1mg)p2ZLbh&w#!OGQaIBuXm8`SCO_T168{QT^P=%g0AzF9jK;Dz%J z(83P&f51WApZ!?=k8N|81{^V>2SJbmim@|ns8=CK;JsO+|Elk`Z1Li$z`=^8sw395 zLove5Uvy(mUBJYyYueY_9lULJkKb;hVTqo9|EtP#5SO zZ-M^D$esY9BBaRC(?{r(BvrmQ8WNa4Zo#iFFu+qOL@vBgD_ z1sLtm>E;#e4}QJ1ckF>XUh$PvfJ6H2645hh1#=ev&Tgb%s+s1qUyu^Ksgj|4n``g= zl}R>7WYC>ZSB3{I>XvA3<9ln54d*z8wO+pFU3l1)$<01PXa)diAWhifox`Ug@TT1 zV93%O^db&cbGzBC52R0eA0IRvhb8U|BPre}3*gldG7l_G{AbuI4RCF>57mgPqdJZV zMjAjj(I{T&Du|50de9ppOXkc&811EkV5t2$0xwKUn$lo3IA}5^Zp6ruT%*)rtBdgt z*9R(z-wAZ6bRz(_PwCdEb7d-*h$^0%Fzm&-uaCI8id7fb4vq)X=FmNLyz_`O-Q&s* z;`_qb4w%c}zr>ik`>r*aNSGLqH5yfy6gD}j@|F_sU5Qo3;>|^!+Yb>l6mNSI?O)6BSLb$+p#2;ySK||`M{1o ziQNyjL}+}FzhVY_{M0FZDnlS*h~s7tiUo1@RwjOMnW;C#E(z3{98OHvTfY1vLs{l1 zNnw!Z6g!-O618FyGSi6x={pfX8C_27*=yP zIU9TJ#V)DE`O6Hx2+&6K67?>V(}LU5AhAOhSV?iiQ?djIBx81hHr7`G(LT&|(I{TM zYLzDST6Q{f1~(cV^B83Ol-_N7RcU{e{mNCz;o^!h`3PIzZkK16F6?StU6Qz}`2XSR zO`v*S!?pj6*$9y-nc9TR6v>o?3?(U%GG%B$ks(5bRLGPNic~78Bq1W9C{!9GVb>Xykj}A+G1|IRV z&9j}MHR_1%UX9CT=~MUm#2MJ!ox5b_-pR`Unm6dz!9X`BY~zUQv0qwm%Sv*MA6lZ; z?%TG(zt(TE{_Is6FmE{Kh-)#xmjb`AWNfl z0e1_k?j{CzKX&kf61oJ}E1IK;EX;gsy_ez!$E)op4 z?(B!Q9ZhNC!%vrVG=bZEKlD)Ir>ps1_-jV4@ zUzBwm^=o5$C9r1&}_NLUHyUA?_zJ&Zz_#|>I(%(7@AB`y0G*_ zIA;qsm&*h~6d^_5em}Hp-?nW-06hfsjYQ!My!D8LmOol zSIQCDg5VS|Zae>p_T?)qDxRf$QBlGHz7_fm+Nbghqcb5#QJgdgm~nP;;a8X6QHQZO`Dzx4Q&ixgOSZ`3Z^$7Kknsj#y4093_*9O3&pEB@0>pi1E(Fk zOiY}O|EgY1&4V#Kgw|rtLV~*R3bD@ghAswmh_x@RAm~kCk}|p+@z4%%k40d_$^FN- z0%@H@2lWQ}6teubMdVM-ANqKNg2|jYvfJ+J_3OpFH3ajGck1_~ z$42xXbJ-U3&yzPz&n7ht5gaQH8$6K(1EGv2uRxp>uLB0VEtm}w(iO>9p8OjE@cWS) z4}yX$LNv`v0yV;%jo% z$QR=`%seZVXL@`4O}e8vcLMcfCg3R~xJuA;s9#fyGjeD<=l0kRxd~U-n?i|YzPp-sUVyv%7m~C$V-`+gB~r-=8h&;kci;S$IT|vu(8(z%;E-=vM7Pdp z;1-g)%neUwvi6Q{@(kxhjx%R}5ow86@4LCYm6cX8kqI8T7^_pf2thy!K$y%9I{6d~ ztysoPg|hC$FxX+ z*5p^n+@0vIDG^44JO?Obm!&EuHcJhjD;y9 zVBN0A$kTAu+Ojuq8W3eq;*&t-%|n#Sj&RwDVo~;VF&dVCNdXH(Nx5CSZ`a?gw6j|r z`jzg6bDsvCjW$L$OH(IuxY#be`|**8+k`hdXtYwxEGlBH65&a9IL-B^{r#wN0wD){ zQC}c2&M)X@Q-}mC)m~Omim(QhGDXdg#F0W07z&M1J_b0~E=r%q4I2nTM6#uk>n8eO zDknMer1v!6v&}yrk=Kn(Vjus4ofy8GgpevA4;TTULId(4(wEHPGiz9wNLkT}ewG+5 zvZ|28>JVnZUN91F*4MeRgS91Bdii5Fua@}X(6-(IV0cqns>tKopnIL3n96GGm@#9t zw%_<(^t-6QJ+o`Wua=T7fo}(f%AgC{rA+?aqXstfvZHylCYwohXM_oYC#UA@AVru3;nMjJh7*uygbsn_DWpb<05a1{DVX= zitNe%f=6!E-n!|D|61~fZ{nf?BLxpV1w}?ehe=@BB9ZWEb~9+ z8+BvsfBBRJSQIL?Y?-%GD?8HWWqS1S@N?aqk`A48Mrv*nqDD6af#kxjE!ID*dbGKf zpKm^}+a!z8DW%`EYXVIAnmO!`sfzr$=5%ga#M+BLEApq``6qw9Z)$PnA_s>k<%gF) zjE0_NAD#@N{VXl+Tu?+)BlFbw?^X#)X1OJ;eAbl&m9IWBi;5~4jEnVZGZelO6$|J7oH01s8+pY+m&L4jZPEVQ)Xu6 zIhv0S)@*(6dh>NZU&h$P>Gd#)54V2&^4OC=qozS)H`H67u6+X`vigjt%Rx>cA;^n4 z{hs3xk=Mz>AJ9?$wc*sM9wvRo5FS&1(abW|Z^NV%Kwo?t@q-j{H}&%!=Bu6i_!u-q z2=l!nzXj(6Mb8d!uIoXq)-AAR_;eR%16h&@JZAH^x{``u<>>?%I{X}$G2Lih#giBh zTT5Jf~@l;%JBUkQ3wi> zKB#4JqgnPihcHZ4@5%b%Mhq0}TWsyN--{?s6WIfC48?@_2_hX-;+e_s;gu8WWy$&C z6)P0gw^QPExquPP_3e>nn$T2Q@QVp5499{I6?Gc2NP&1nhec%Uy!AG1M6j7=<<~b8 z=~&p%*^xoLO+h!J2gBz^f@!dWgC?D|sI4%xk)6dUe11R_veaa1JdTa1u9&q%8L3`% z$WYt=87^qin>QXzq&XHU#A25ce~Y}Po4f5-go{VP+oN~yCKTt#MmcMw?d#eCI@8zR zThMk(q6WA{zO|FEi7@y85F|sxq`I09PEJnZg`sC4RU2H4Tg8=9DT62zoffeHSHy^P z_)izzFRpx=xt7k$-oZgYP^tChQ*xF_NK#pW8PVWzf7?$#GGGD>1F7nu!TqbP-5vx( zh^(~G3hK~}8l4Obe1j<6`%tcifg-Sl}rL&xfCk_eX0@fMDJZ3vm0kwt7|7? z_TxH&?J$; zcf!wocKU4dxVbF}p`!2n@d(0^NJT20cN?e!(_g$FyTAK*DToEL-S}#gSKyW+JVRtr z-ivGNTTp+1D>OyGC(JztHSViAaMX(ZEf#nH{BnjwOAO>FX_nN!BC{{^V5B*EOnzqB zI`vsI-_lZC$4FOq;M75#fDoSoontS*0kZ*lUm#|XBSpt4dUP6ihn80nyI=q_1t^r^ zkuT$Ms!%n$DAe)&VhC0t$CX)Cq(DVcRh8?y0WckaQ_c$=m_5uLXLL_R79jzVVRLo<$}k zv`3<1<2RhmBosL*d?PSTo;I`{#r^jt@^Pt1SX@KFM#c=ktUzMrKkTp?p*gtv8<@!C+t1PMMz*d&8rz&?)c22Ht9}sYxL^%9Etj z7PVu-sEvWsS;PUA*j`J4ZJPRE5nL~>;$ueoRNmryzH+4z_y&CjbF_aLc5euK&9IW< zn;?koi`)_T+n5OMfu#YHvklda{Cg&}ghn)gm~ZXn7D}Ih3g-N0fH(9ny9uRt3JW_^ z>F~)7K)1jJ*hy{HMkArw^A)y9kSP$cPck z^Cm!JllGGaocSQ-aP{?*1ICt3XubLC>(k)*$=9ydYa{PXxpSvD`RuXkDB$}aGcuo+ zio61m<=@3YIpbSU#Zu-aZ}PvYIF{!tb!)N7sqt>(V9i#aNv%j}v8zL^Sun7a# zz1jE5xkx9)EYKeY)~I+s?w>CAJT%%gdzx=@I`^N4l{cJ>2VqThvoz=vBu_d-kL2X! zv{tGX%hgT&;zB|i@kn1*)vj6Ji@(#ai-+FnlvV6_Vu^P^$UfIo{r}ylee`-&q)FdS z^kJpT1Y$b_%+0PD=(YzXVrFA1{Km3zfL-Z#Rdqm_WI7=cWPG`rZt zic;hJU+d@7u=hzyOyUzd9EIQZmY!X18Ye0a&wq6NOJIYE*Ul#Ai)$WFXRemp-`IH2 zecy8@tv}46eVcgHJ=1f@y-ElMEfTF-k>J&Ho;LV&t{o$jut(|Xf_m_}{3>?c z%6=1f2%JM&jr;t?YBc$cRHX-bF6wz(pT^|#0Sz?@e(9{9Wo}(u>2iL|xu5@3p9-`w z&v0L1?Nze!__@DreclC(*qz%b=B7^JHT@r#0?uuVxa?KoJjgocq1vw@rGMYPDz5R? z>*3DrCuU!NV*RQ0ijAXAh?|`HqqQDeuRW1io_UL)%%OdbJ}x|& zxn>m?M!Unt7tY43SN|=#>gW^ke9eBp&fK1vF-|`o-QF?b&T1+uB)rrs>|4deBwz5 z+;lpud9rJ9#gQn-&%ff|tDkdjZGNLPt)3xM+5}Y{YH`y&(Qlc{V&V_9#L+$e-Rx~|Yp0X#E{tS`y-l={XwW~H{ zxMur6Cq{Ry-&dt>irNS|0O{_DeLacPlz)_nbrlJr-TwY&|KB|(Pd(c-L(Z7dap1nD zU`25(p%oXs!Ip>XwTslwX05&W|NDHs<@1%Lv}oG#@rgb5v74{ODY}hcw^21-(XDlx z$8M88Mynd`9vxP9O4ri$>)-4j9qztXdeQGekWp&4zt*SCG#TW!=-BaSa%dLlMnaeV zYFFoXck9?Cqlwz@{=vFIf6d8f6fGY|+^>iQd}dw9yVh>M92fzjxJW%^`GtxS-qjPA z)ytMO;lkM16est-@-lw)y1xsYCPZx;cXTdUt9bim zgvZ-#|93YP$GSYm4~G>QD$EM%z9-SzGvT;h)`ktj zai4-<)`A6fN8iuG;J14dU5o+m;z4-bSHJeuTlS7lG&at3o*p}zhNCIt;xyRIZB$ft zl5B0r_@WR5$=JnkW4v~Ky^7ER$guSxjy}z}187aQ#ta*1b+rvP6B0#8B~<@G4mB^| zP|gTZL17V22GvN1dibS_?H#p7ZN(MJ{=1~o1_}ZsQ~dl5fAHrF8C-OEhP@7z9(qOH zBqGl7M=xz_Q4qWE9wlb|p(HawS->IdOMb6)VaXXz9{C-Qj8_mZLw=?KGc4@TYmSyY zNbOv{o4QQImu>-S$sNZo;K~1gZdOtK6r8IhdNZ-v<@}jeACPO(;>B-}f{KqDOufX&e_1JI8&B+mL z6I#7@6Qg3|=Z*B>-7<4L;O7_eUTw9ltsZ1u^cLDTNy{AExLqgtL_8P@aMS6r5ChWt z`=vA2QdHRcr*m1TAzQR^ofZL;_Z%^z14NgP0W&nP0N%B0&^j-+AQdrAtHwSc8-fu! z0cF@j(#p;q(A2oQS>O+Dhm7Qzx|}L+vzk@_0v4cOe#M~v{aavs#Or8~UAUTd*M9w< z@8z@GC_`v^{Os9oz@4+{|1M!OVL+-pFd`+KDT1hi{{_FJdOyFH zVW!y54_kwy`CTYrtOoqb&-|H0Am9ZN?i8~lr--X>-@c2kJbU*1xpMdJv5%Jn5XpHp zK@}dROuaqML{$>MHzZ=|vZfTDS=372QGp{gkT-8;Li< zYQ*w%fB6QOLGVWyS)5)zo#tT=?F6%8nuqN_MjD6n*W#l%SX8o&m3xjK-<>xAD7STa z;5a0Tm6eqbTya1cr$xLkDgkdvqEcp>e211D8v-v%c7?#7kwAKAs@ZrlD_)t& zK40fydRG3ZjXB4?kFDBtr0e^%C_bLHHI=VyRRPXD7Ck^yQwWJr5QIdb{X9z3kHbVu z2CO;P|#fklGW8U99<)W6fP^9k0%R7{TKKpSL~wWs6tBbr#fl*V-+)F zXzAkDB*91Kh}duV?&-eyYdDy$C%+6$SCZ{4Z*QKFFOQ@j(qGsn5jSqs4t@mH!USOb z%5P2ojPX`8r-dEj(J3o4vz|r5{!_c6X#By-WU8Jp^3EZ{URh&T<=40>R}ZhU&=fB4 zWLP`BI_!zOeEDbc>Ub`?{i;>9&%fKW8ho)92{g{xv+e96pE<*EMtc;-a3A`~=AIX8 z1Br-wG-6r3quC06XoiOCAiG*sCb9hLgL4Nwsh&^ez_%W1{qB1lMz99zkGtp03^Sd| zJwJb{Hn3(sgX*baIUNT!Rj!>mb}W7b@M0ER(ivNQLZ4Z$N#9;{j;b{2g-@TFa9@>` z$6^P?=*brQf~D}8`L%QY%!xG1!BE4FmR5`L=rGKIp}SS!7(%6)jZVlG4xbiEm~*kQ z;o#~g=v^M28ozL0Ach-s`$=U?7$@DzDoGFxS z_?1oq&{ScxZ)|LQiOGt(`f=zfj3f4M{eZiUfq`Rk?Fe5y(NODP0kH>sz>s$WVltii z#wF-y31b}W?PXb{ikjLCk#xZ(IEeg}sQ_#ce8J2uEd1#7{f{2aC6%Qk?MBp*jtdL% z)!W+^>j^EK6NH*l`0SY}++_T_G3PvQi>Q%l@eCY9Pc!YB&A^{qJihQ5niN=!|rj??ZiO%20bf=Bp(mF+h+HOviVC$rwb? zw#tto0+o?$4Gh@Vi^J+10|PC9pJ_8^hJXCH^5UgSp*)d8{AqYYKAdTGgwJBMV+)q^ z4oglkGEhGw+G56_lxcf`#v-A3O?6e$L`yOX9*X)iOiPhS( zYwM#XZ-y83jyEQ9Dx6hdFLp^^I?NL7IazKNADpzxQ`{ecVpX)#H*4{sw55gW)k48{+p_D-(3^miVg9NWdpS{+}>9n{a zhq7yW*;cL*Wj}#EBmTy z??!!iA4^vnp?gcM(IyA7X3g81Rj5XgV|)3f_r=48t5F6qH<EvE{A&e#Et{)$>X&5>CF?He8 z0Ug>Ys3JuBU0r$D&QvPRQ5djZt!hGrc>&C=q^Wptm;xEP_b74wK|DPcy`hQ{WL4mKi79eakd9Ca zQwHwC3&M_|@DA1%f%@>FL;5&zyelrA2wwaz6$^@T>^rB}r0or6Kxhh>pNa7JyaBUW}Q#9Rkk-_ThdDe2{#BAQYs=+_9#+gsMzNkk^v zzhfjlbe!_~XS10LaGw6<#@1km>*H+;MkZexYQ?`$jF-ESgpDPtf>om3YQGG24WITt z2T2S;sm~-AsH<uI69FZn8kIBbz7{>B= z$l!dCX5bvEFkCjdy5`FKD+4F!$vg`vOX6{O2K~X>b?ZW*6<06^?K;NAB&1uN=69Vb z^#=jRP{A0R3>|z?$jH;GGAvvH_pV*h6VD%!kK-wlrTr4f z;~MTofgI_?vwx4fHh0b62>4}d4@t}AOpH+6tbOK$yLc6fx@`Wwix!=x0tPdhC$B73l~nqf5|1b)SD*OjTD>ab)cc8XTAXx z9L7mPEwpAmjHt)1Uv7k7?prM52VGpG7#3yI0dXOH0LpBsPS-)I82_$^MilKU|xVd9#@blTgy zj8a$&h?mH*6p}4JrnwDwl9q zddAF~@xno}e_GSsECWDpA=L$6x_PTs%SSARV4%eyO!6{bhTmhZMj1ScvvdsyI3RQ#4m$lgf78Uzd_7J09PQFF z_Xdsn!Zh{vrrd=pyN_Jom(<5`m~0T(MUTHrd(ex@TH@DZC=ahboi(8$-wHm&Cy&IV z4ZJ_{%$c_%14G1|iUQ+M`cmd#lg8s4Pq2|t4*ONTV%>`m6%~jOyCz~8je1F0IW;Y< z&LZR@KF>=m9^MR45P|-JAwgkN z@q#qMkA@HPgL%-Sf!0=5*ilS3$SW_CU`wHN075`i6xB}^JNKxR35WkxT86z$yA0+s z*g?{wO5$@FY3BF)3$pyYS{b8nR-OR{$mI zm~2C)q+E)P0uny{x*cNFOPHTX(redlA_Ivt94ElO5Z(y29+8A**PB+?j`wATpO1k7 zeBMjQrr)dGaH&-1!l7$e+(p|U(6|H^7JsLIY?3}V0diztEv>`!BK`cQ)l@wgjQPU; zakbxPZwBsCRxT+m^@DWiybmVDAD(4Lk%v>sQRMZ%!H!%5gX9XeKx%a7835&`Tyf>~ z`v#M5?0?L&wl;!UaF{iv1_o$sB_&HfWf_vC<$X*#IStX0Y zA;F#cm@&P=4ylmQtMJXH4mz3}F)O4D9CTfAn$mH`5b@TO7$H=`!%7*e%uMHJV$o$t z{1mfR!ixPxj9F(9zU1xma5+l3WG`EUJCv07D+aS3*IV~q5EB&%Qj|MYzkU^D=aN_8 zVzpCVpSe-7m6{>JNej0PiQ>xZyDe$atXX!a=>(?f4DYCWl};dp##l$$7jl1Boj(Lq zJI3+^1*sCse}O6360kX1Yu*}+h=onrH@#%7q&J5z@VP2pULUDkd(HWe@aA1_@ub}fkMDaymXt(8?#c3~{ z)`3&p*pa++Sb*x4&Qq!$c5U)LsJ}{cVCoH8CtEyw+_mQjWmXS|+_=$o%eYfbelZ6D zd;Iuk#Tp|`mFCnHZIl7dJ1YkL56qvHxDG_2#pe(+O;{bk$WI@a0@VpAlBw@9H9M<9 z597~Ti~yNf<2Atlo-+t~y!R zcHEQ7CuimaS<^#5SdVd`z~2WAnN;1cvE*qE%)^fJ5ugmJO%;&1y2aOttUMC@(%B+~fxAeo#+~#t~Fcbb+{4bnN=ybEi@dD>3=5?yI5e~`k-@T8~Cjvk~ ziFZ3W&bcbG=^fMBUDHq9D~|ha{%1_Vl~Jze?KdXszOQL!@i}Ho$V*>E{on&XhQ_F! ztH~-q%p4^7dZQJ^iOJ6Eqo3_Nhr-v@&!LZbVo=z(bIab=^gflfV*R~x?b_u2hP26F zzkYS6O?fsqy}0t2;Gm*-0%!1|pon)It*e{2GXG17<0^am+w`!qeD>MV9rg=11r;aQ z7nRhEHPIvS0#*ih8V3S<;g~4j!gvqIV)Sbm-d~oJx$q<9{nSk*}D|rrf%v zpdgD*K#5NSArssb6i7DkLZhtRzO-U=y>igquwMhfK+psLC{ajUykx7>Cfluokp%!V>XW) zvjKF;IiCV?+JfaU{JJ3ZqNQ%uym`Y@S*$|}++}nPS5oPy6arV(;puq6!H3=*B+$lV z2>My^z89aau&@-`#Idh0EN&#ENN6S~EEm1G?fJ55OpC@1lfLIn7b+8IWJ+;mUd-%q zEl7vAD56>-`-YgY1V0g(Bw#Z2-qgJ<08v=P^qv3`Fk=_oM`<~3gy?!<>v?t8c?!y> z2@V}8t??Fi=R@%Vk>WQ&K0NEX<_mF&QdHn)mu{@=_~-ZU3D{V$A8E-qbk+JI0l8s= z)MwT!FkM_$cKdJQk-AV`G1PmoGEa!H5*WL0{jN;i!&7TT;DrFPgc6GvupMk;`g0s( z3LDe(0iy{9!$s_VSo89C!L7ot|3eoQHS@|C%LNN!I;bQ7 zvl4p?yA66xJl?#_B4{aHs38^pwpME91rV_q>hCdfzwpsJbl3&yCSmP37NJqhE%~s0|G1iF zdZo|slG_TJ>q(Tpe(1})ca3>Q%R64%L8IVa|5#izWUmG@4F(B{*`rQnJ$mE`{mngd z(`G7|;%3@Iho(?}i|40ERhv9+-m<0adO=Ym+#A?z3hoRkhyOXs(mcLmz^a7!_#N@_ z--efz%5n_GeB!r9ihhd5^V>_Js`xSS0^oP=BK*@3Z`1Cv0Luufrnx=zIB&RZ+&>;8OEhItR~M7ZEkiHG6#BJ5}y&_*Okn8RWM&%8xc9BK7@ zp6=o~Ori6{$?1J*so114r%0oE5<^=d74lSNQP)AZWI|VgAFtXRr5;-YwhO18Un_)b z=NfmP;hD(*lD|{Lt(0+!oH=rruv_>bLL`P+Ef0wr_|latLaHIq>)>lG z@BFlL8$SFUnk`{Xh@cakL#QPPU!h*Nf_)-pUX*TVjKm=8z>y=npwZxy)|AU!4JaWN zZa~vZPzQ-J;^U`J+D%6=nW3dB#)4Ww*Y`cWswfSuu5a))x((e*2@>wlmlS`{o*SLc z^_XjAg(+7HF?oh_6A=-iN4D^8hUNb~S`S&S1Es7x8~L^aaS`q0vohaIfqNtBTrfu_ zXI@4pMg$`v0hJJryR2gno`Vp1lIwm9K5v!Smii12YE=T=P!0upeKju09qLt9eBE`~ z3AS~bYe>Y$sj4$N22b?J3~>$|KfW6yJP{Qla}?jXXGPFa0-2$x@k1a+Y@`m{9lfeh^2;NCNV=lj#e+dnB>-#0vn*QpVn$1PY&&XSL zY+x#>K;QY{XDv5`m#4&t%!@f3NIOod?ns#_OW!0EESQMahHTgrZj>ym;xR)#mCOS8 zCqaRs;6!L>4EZC@ofA5ztiIrJz7=DAFf(ez3;6oT&IF#R`TS#)MF=09ABi%Vf=ikQjJnlr-^T0h^Ft#5bu_W=Xo>K2c14e&JqLgFqwzuZpQd-m*!!_F0V@9rdm+W-kd^e9;9 zMmgA3LcjRxjt~i63g23EB_LX&-jHpv!b5<*dF9pS7T7$Chm?eN$ZsMBrqG!Lpe82m zs0vevuDl{WfJm9EqO!s7Q?IYe+o;%^+rdk=@7N&&J6y3qVH5$DnLhI;ye~lserJHA@U(rM=x50uufR`(Cr{n0I#+B`(a`Ik{yYrkp>$! zj9?c)i!nHG@tlvb-i%ejyM#_fS4Zv*sGJr9xaa`%FdSnB(1>xJ+Stu1RHp;qdSv?K(S9+|R17xp2K!%3sAGGf zTn3>c0eB#1S^|~fLVUc<>v3!@lBF!%vc;HAp;h2IHY6?xmlMETL?D>zQF)&MZyP*pg3v7x3=p5Sta3Tx8uHX$dlC4=lt-`~R-Ead3 zc{c<4kO#*YA8z!2ghyZxTz_uMG4l79J*_hWb%n4w5wL^q8TTXkZQ|*|RfUcgdVB{K zpvn?=z#=hb5oRxkWoT)G>~zH|9J0`}XT?8;m~$6d03&DdIkaL85j8kN5aArU+yPjh!{0|)(VP+}9_!N;ZkG~qN@mGu&5$pt0l9Kpj_PC_{h?D807 zm>XsUFe)w51ZdcR@ z$pIws3`0V=yavnx5n6wxDmz!wdfk)t3>DB2KV2RIBEZFijB4CZ{2<>@S@Y-bA~(GE zWHw*id+*+*Cnk_zr4Rw0UEumj8=jL5H-KJoj`RCk<#o{`8D~H(yQpBS7rxaZp^&iT412HD;%lDlo318gQ?MhFy9GHHE9w~J!_riM=4}6g(5-{bx5)Z>D^8h~biM(>haWn`;mH8h^X*~2r$UzaN)C+Qcy+@ZO@9P{s%xDU zFDMMzHnY{qc2>~4nM&(`!(&o_xQdbf={eocDUR2<*Slk<=^QtV-sTrdNknZsQmdBzpv>hL{o-{^ua^VU3OvoaKQD)@|2WsCViKVd1Dr6}E-YrW3tIDJ~NXpsV~<`(89NXI>_ z22G)o9qp3lI~aiHxvx@8rcR$r6`h!G)?I(n(yeJ-mf})-+>Iy=MQurQR>badQ36Q7 zqz{p!N+~9xfG{gsTzFMh?53tY7Q^kG`aN+I-%ao9`<-7bQD2U>=o{oGV9Z9vQhy6p zw3ymTvZW;6XBpm8UE~&0*b#`FFhJMQ(OJZ#5$g6W{$eE;=q>dDDw9;`V8RWj=8)Qm z(4Pi+Z-S%`uN+jtixH!U^D8+h(-^tVw=BV7UTyv`knr7w`KBlqD0KiJ?{Apmp6O$c zaT~=w73+9e$XU%^bRWKyX#G&c>LK!kP(FlBVi5fP{&`(5wF3jGA^75Q>LT*@>-D(B zXkdt_HBb@JRbJildl&L?rh{m2PAxSv~YJRe?@~xIZoxxY7}M45ZQ9U zh(3-*#y`r)a`Zz)s{GB|pb4ekW384=T zfczCn-%>A<2A?kd!sdn@bV1YrFh2KC1BfgX|LrC~mls$ZLm+ueQOMnZMz@myA$eDP zW|XQfnv_z2&H`D21*B`KGAkEB`7XDXEZHpmws#tywVZ&Rb!}K*zF+mae2{oB438fZ*+%$n% z2;H=F`?t}bVB&d~8|L)xzA{b-qP~ZhGYJ@(*misSKX}UD!fygEOpl{SJK{^~1Ha=< z=_$7~s=zq9m4&{y$;o>#S(GN?HehK$@kJqIBeH!1NmFdLz6!Dc9wbkS_zH0k0!nkK z%qe+D4Z_t!>44ERWW%TNRM>C9#*#KQEcibzz+6U?I1IOw$`zu3u;FM?E7798rGAkd z&A3t9FtG(L0la-NPLvLUw$O>TuO0*bFn**Lo%|2PFgi;3${@;k+Z>D0&|qc z55^N8^6+RinVecvqExJMVA*X;Qy>i|YD zOq-Eo_!51VP}m498D^xYtljGWyk4nSyrG=es|00c<o| zRj=kn$dPtoO%)xL_(GD|>)k#EZnQF+@~i&!^!Z1weOGU0s2q1@$-V89;}o^yQafDN zP;I9@^k+<5m;RF*x1Yb{%kH#pK5=_;RGPF8oi=6B#%*rZ&;HmnG1_E$GppS=x0IKz zD>4HET$jIpIO^06ZZo?td-d->eb}YJP=eUdGBxNh4?P^Mx_IuR$HTdj8@8AU7N2z& zvT;7xjpkD;UW-;ow(_w}k0CQ;>b|u{{QbovcP6YWSQ!F;{qN=#X&`9~1X?9|Fbq9J zjd+k@ZwWQmAV<)atYxw4O%$VaDQUoVEL!V=R9T=dozbJ?v5^p% zl1Ui;4}BQ11C$&e>6l4_SpMq9Xn146Fi`}BU^UB-E!9qRB9rM-|9ANeaGVU-o@f=>?B%W&YRz`+_yI??3AHnCp)l10V( zu-&IoBGBtDX2%@5NSWVY?Py3=#>g?0ABn<-UmSL0S6cZyYl{4LoLt6g+2_pri$4%p zkGNovzPE;lhiV)uBa-JuS?mW!kyR}Ga6Vl(@PGp+H(-00!AJj%!Gn9jg4J-vD8{_7 zhZ3_bUTP3esf3M3%$j?(V+U#|4w|OpM6}Kk^f91V8Yk&YJBw zrGqPxJB}Z@_c2!F!yF*t=d)<^QJ+&=)VpfHMOh2p#4R!n?t^CcP9d`z(sgeQja}R~ z**GQ30Y}aL!SOq_tww5XL11Lq#LzIz6mcW4gPaaahuHT0=SaIMd(Q#Vu_xyK2p&i) zx@P0XJ}93F+1!n!=1Kuds#>?0@8S>!zdVb2;Zjmi1EECBzas9Fz1VmSecZOUs%tyQ zmCW8|o0#aq800b~r_Zi75-T{C0m$+m)JL{2uW7@oKfEmq_bj~gSyME9ch0773Jg5< zQ;rD+DJuZ^J)vcW;H02?*uGgLmbovy1NQN%(Z6tGm&-9 zazgk&VP_Acti_iv;bgly>gJyMRXh8(;CaHQ zoesCu_Epj-6v%n!%=f_mWhOI$0vfpY&eNxzI3k=ESvUqHjUSr|!3VpOeQ=*4fM`&p zgKV%oBh=tSUgRCDUC}YWA)T5UY9s|k@ZTai$2?-z-^zC4a~84tLPA2c-aLoqaec$8 zb7qnH0Es-?en)5hG?G1ZJg+5y!KRV#n2icNXr|d2OpHkoJqrI(BYn2AthDT_f;`=D z(C@FChr@{S0)?QSWK^|;Y{8pmOwkkywOFkZlejeQz~ZC;W@w&7VlfB8b_D1<=e=0I z@cGa}@4!rlDkx|9G;knBmV9lZj5<%0G{LT~ubEC`$(AIHeYi%Gp>lleC%OEnXb-LH zZeiiPs%H*QF9aJr0GX%pZY;8H|7p}|II6NkbrF`<=0^zEXzC@rC0NR~Sp8;1=?oZ_ z2D}PdNSe#5`mIywly-3vp|yKhMr%NwrXQpKpGR*CBF*NW#!P$CT|>$3TPjmK@_Tr9 zccBmf{zYj0S97(^k? z5?gyUu&~9`R#eYW)-R2?Ou@r10CDNvT8oj#|1Lp?jf3)cVn&4>2GG9R)REE>;j7EZ z*yd0@D(TfRNPG*c7BF$G?FW2+ODB!!ys}xJxSGb#n}4 z+Yd}FYNEIFRNJC{8N!$os{?lb03fg-yynDSAH0zX4)I(6Y=GT04OTD5jA#nV(tBbU zhk+vn);aA}2s!*tZmu7p{~wS8sJjuSVa-RbegWmO9f~~0St@TP5VgSYsww@ot&YqP8jFK#ALfO7? zmhxBnUSti_Yy50Ls)-*$uTx)Oar_UDitA*|-%osG$a}^+6d8+QPPuAqUnQ_aL4jo! z!PrFxZ(*kCU=_03O5n_9q7(mzsSo@c%XI=Ufnb|bIPfedq2rU;GtTaE&X|t?CimLh z#b|Oa#BCW2LXV@#3PUQzA*4TyoENV_bqG5p2cO4u9nGCZwZC4=;s(=GTdLo9!C-jv z1+S&EGRnk<oiT}+Pc4+gs~4kZujJTXWDa_k+5M@4hbq>ks?4^ z!~-q|Ph{#tH zw@wNwh5s#9(md91l9I4#K*?~B7+Ag$`f@+@6(mHQKaW74WJknwaA?qU@ZHl^5m%W+ z(+u{;NW_1dOxf)opJ_szUJU8C{m=E#O7A~jbb{sHz;~>Chtk=5%bPJ)8PbIs}5ad|h*xa5NfhA}LPe4{haxzJxQ`2g$ zJYutvmE{LpTy1(x>Mr}Sseg&`)xr@SG-x@J4r-`4>eaQur|1m(@CvX(Uu4wuI326t}5HmMiRu0oD#ZwK#0)&>Z7(DFILu#IIewqTH*CD1|-`HKl zzU?_p1**^gH#LOK~ z1cduNQz%ikFg=_4ct67BIzPmtpyxyG6b+f@&8>f?eV9rvDzCf9Y*&kKTEv@_ zMKZchVxhyggp)L!0!i$ix$Law?WL}M#%dwXCf#_EVj#kJmpXY0rUVWJgKqx$JUY)_ zn@;O2m80yG0WP=ODm&-wqL)%=kf^_I&fMtaBte6ODG!>I^bZVcYDUgj96J_)fqG0* zvU`@r5-;jOD5-)W(Yi{rA=Nk`q)}|^EsU+%!X>+7v4(&9>62KWlI)07J87wGJ1g=< zAMvpxiL?CsL!a3NcA({X(u?ez~fDN!hL7~iyx|ZXHa%=jKxw?mWz;ZG&d@Q722#Oo|2nuWIl87D%Ri*AYwD0l#Y7HT1QJKj+jmIX7)Cqu?{V-lRvNs>%P07!76wwBQ zjt+-ctcI^YZ~>G?7%GAAwB?)9gG-s@K1VBJdDm94t4xpgo#4CozghY-*)S%1z?mX-|`20)gm)ge+r5efr z11F&`VQughdFDZ5yTG>Rb=D0%7w&drjhW5Yyq0RdkITriYLJrgv}!=jK!&_zJOt+D zrSeTjA0+c0m!?|uRpFQ!cDX<`GX3O6Za~4Xs(*ThUT9WbzdD~d!hf}W2?deO5E_FA z&wRTsZ_KwCkFYm=@|`x{{%|1ZVwS^*c-3vQ9@Q_q6AW?&Q}#X0Tie(LRCiK2WbFED8-$^2IBaiLOZFZBAjOvBSTyu)J@bK`v#b+aD=Z;t17jm)N231G`)BNHY zeRn7=dT#P$E=H(*@+03IAK;2-Mrgm;cf#g&a8&Itsn*g`l}?W5WH=1UQVqFu2X!iN zm@HmA)bks)%X=jCOw+NscW=`WurOUgHu7}V)xLORlO{vMhhSY<#F9|oOvGcaGyXju z82E^~S6pXdyL@@)!iJ6Z99GNMkyOe27OpD&>QxpXF&oR7T0}gzeQ|Xtt!NRb)0dC! zTpryxJGAVU!<~(jHot*7nKLypZAbtu6rqkFbl+kgevff5JTTPApmdsr(F^)h5e+#zk8=5XT16xO!s3b1rTE%~ zHrWc^#9%&^@{*g%+V_b7X%2D#$dnhtZCPxj(=D%uXX@%AEwwjaYC)mnLICpD#rzJJ^5tj(pcxQE_&H zy*UL0BJ~3|r#!lv^VRd{Do4(-U2#aj3DoiO=Ba;*ISvfR#G;7uoX`itWB7N8<6Aym z+pNAl#zu|m)PM9ZySf4%ht6c}zM~5)-nun9p8b2bEc@Vhz5bmPA0Iy_BD^WohY^x_g%z!Gu2pR7-r6sM9VgPl%#B}el(<&7|LHCv9-y;SaGDmA3)`5wLk(&e zTX4nE!4F8o%+@6`VxOk@xeHWYYkwIZ*P2@M{N+pQsvKI}Za|HPwmrYP#>SJ)d`X*} zK}2KLGgt6sxOMYK0J2F#HCI*JF^QDZy^OOiQeQ0+@TEXdxe-V^9HZkY5Dt0FY&3oP zgXZ@h^4P+X$Adfibez>F%yi!3@ta*;j}}+u<>uPJp=qDdIJUshao4M(+P6P|gA-=U z>lsbi`##?N6>GMsNg=AXC-q(#&>IUEJ(95vQ6;t zNQtc&gX!T9C5P-wcC%?>&aHn$ulk|(!M^=G+aZXMg{S@a@f+s;PjaPob+(g=c;m9D*f|`)? zThE-SnSaT)XZpOK?yHa!H|xm{RzxdvQzbHLUc7zFTaITi@wBX$XIEylik_A*_UgB2 z9WATsEmhK9dy`8@nK*vBKy-nEAhNN-c`y@sLAh~_CwfzYSw5{MA)JYIpGWgeS z@hgcbX3>`ZpfNym7g*f@T-Y`X!bIF%$FpztMA+JJk&ICENKB;#W6FG(!NejvJ0CIz zA5a5j37ir{zu~F>nszwet1sjW1bQ$oWfuiN0HNIf+uKIHCVu-O+*4pF(@st#6~+#1 z6F)#Hu@AUz2sJ$%B<%m*!ISWBdxjc7FimFuPm#_MSe6nc+8)htl!V0Bpn;y&E#%9v zsvEL|7>Ou|3Ni^m0NyH_6V$1{;dA%9yTIll(##NcCJuXl{Ma%0zA|ax%IgCZQo_-5 zNerMl>^*K=5Yx3P$l+|IoHBW`P%+nie0q@3iVisylK0;^jVualh%>~qMdUx41KCdt zD_goWp{G*%!iq9Xo8Ypl$5dnE_Y_^?$49qEToC$@=J^L?6iCbRm*CU@zQQSXmx}pF4E;wB|*)A_anehAZMPj_w{Z>f}E=aLTAsjp>Y7|rm z%Kf+CTHrPZsNSkR77oW(ucv1-yLG0FJeax2!a(^d%sn-kDQy_gm+AD+npL6?!Yd~XmI4w z@cO4WeNLYN%E*+)@6c$Pq(i4pWzq03HTV~*U4o@iv}J;nW)yi^b~y%bowbG!ca5sV zjkh~OHHM357|*< zJ^-U~Nf}Y<70FK*B z7hht#jqpz;)!Ne8%j~wf=b4i|n=Wv+2Ce#5RfTKAj(3S$FhjO$aPCdz7H75g9XeF; zxqN~s_gYcH0DPc3X{n~uhMA=N5(s7lXX=tK(Zik>7FJf3OvmVY7xtDiV#fFBcH+gh z{t*Vf>sn&VP;Jp}(VVySO?injNE4|aBSJ!nd0GA(pYh!}t=x#pk)wY6wYEh&HfrLk z-gP%vqD!iehcm$g^a8bHp7T3AwdP)B?8tqhmkT%UN(b3HD2^}$h|l92Njwv33q7~& z=K$#4Lyd#R|V%cXGM+SId2N){V|7#N%13u0@oi#7;~N-uuD3k z6*TVnS92xhL;}Lt&EJJD&i6tPmdNA{tQOqEGQmETeh?7(;NC&UKPF8JGaaT+s~Nxf zhduje^jKCT?IdhFLa=Z=gidSsFSX6Q)n~F@EXOh6;}p*VXJc%Gp~q-kCn#U~(5TIO zPzKo4r+1HQ@I@{aK5^<~m$Xvr)#c+i5k&Ii_(n)sy3(b|C1=x(AEetE8Uh&0kWWQL zb_J084rJi7CytoFGiYK*t*{P) zAt<8X5MCE-fBEiQN&QH(DmExh4_YVmT8er0yMlF6WrNj8;N$26{=DTNM3`xE*g~@% zeIN4c4;94m1P~))mmPHfzG2XKH)8-xV#XPIKqAUo$W3@kJfiXm9l@0s2iWDy(TO`}nwmL-@3GW3R+X{4MC$W#q$SXTNS5 z^r4=O5qAnuM;H?0Z>A7r+ENZWt%Ho&t*osRx7F$j&FT8}Z@6;N*!N5@pO;kvwkDMK z^aJaOa9ol(pZ`>_R)+{wiqDzQ;OSz^L-U_KyY^y&kB0NrwAog7lAFXTc`|`t{JW|I z8p~`mv%55@()&YO7uzg8cFy^E!?_)OHkDt$c5N-VpLk(pW@?b`_}4P@;C|4ZPjRVy z+eFqZG)qBV->0{CPSSpjcU=~ESqz$gc`po?weV@6IrRE+LvU|MCU~M-$Gj#-0|UGV zMxX5+l$4D>CA*9X4RXBwUL+!4Fwh_wQq%%$XwIJYOA#fGtFPi9{ zh>yUVB+Mf2<{v0&sd>okB~)g@k)WrB^b)paIY(gW($K@H7thD!`5MGp$P(~y!c2WYwur8ai0EXJB@~BzyJN$a zO&c|FD}@tP31qwmv5CtG7DgoD(53A;S#8HVFk9?h)6QtV{X1HrV7?rCcrJ1%LFAjtwe%CXcj#7v&vv_P_Y9c^f`a?aVzUKChcuTfe-rc@jJePm;yqtDou{ zE*&<{^VLoN>Wz0&Q%j<|U9X>0mRWPutsme$KhGrEQf$`*#)Rh=$}E`96VIwi6flhT zLkOviMA<;Fmj_0=F?~Oi!-|09(ukXEgy-c`5I&+3U{u%z#_7&rE8;>E*=)Lx|N{_3SVzZ5f>s8DMal2J&v+ zP)$=rNbVF%X5?B#eZHA9qjwHk8J6BuD3$?FWzw{EgHm}iBOR(`g7Y}oZfieRa(qo) z`}#J*kWU7*1Tise7)tjw&dz==(?INf7%-73V4nL)#dPC_p#MyEWm{;FMPN3}gv2Nd==&9lQHuSmK1o4vRV!wlM-YNjE5(WvYEw9ki@1z(Fm}HU}QjN6FzS5GxZnY%im+C z1aE^=&1zH`V5(YB&K%b9b^Ts80VK57Z+0%zEFEm6F1#f)Nvx1NG_1)L`~2NZB_tCv zMe4nOHnqNN@L^uLHc<^rAI=J}tL(3re+Ueuz&d>BEXC?jEV%mpoj>TP^N$L1(xFAn zKyF$kw*j^QxkHEqQ#U-i%H8wVKdHTyc-fV*TNr+1qO(l4c);-|*KA@~AXgBz)VVp) z89<^eUA&W-*@~+RqlZ9q2FH4{s5!ozZ1%8BLk`J)@zV^G(GQ&h1m$u}1nOXOXfXXc zL3sxLRJ)Y=cMOWId{Us6gx#C;dW1__pM(FIV(`Z9VylFd2}*_?L=@#O?W*N(#+o34ZZ}KYJSt>cf6==We*sEo1trthv)Jw82J?A)dg3H4uP8c z05A3}HbVH9@~qI^WfRU2oXRJ7@4#ru?q-Z>*zP&=g~`BVnQw}fvY7r+sWIx>4)(=% z`d|h#Tzr@>6Cp4&nK-;|2j&#i>%E}{39@vuNR|7t7V6{F@sauVQgu_xau47>BX;@E zr1H)VkuRcMAthY;oZYJ^`}{~ipIt;OqABAZ3_%U(E`<~h>4_+Tn{DsFdCbWK7}-SE zJiTTzwb?fRpZ}XdX8BArJJZ&`dZFhGv$jUHQNlt25z*rifjwekdXT{cqk`Jzch>f= zEbRd`hzX1Rlk@$Q`_|8*MZ$(?3Zsa+@mCVJawPC=DUMyMUz-afRp{z%H`Rin+U11) zL(NyS|8|zv&fl^h^v<2)nTMYag%mz3W`bQmHiIe4D86uV`~LXZh5(<>A?v%&SiL@L%IIKEw1%?Z^-Y z-WKJjH7k=nGOV8_t8rFSGctDb!=d?X2fE-^pVQh~mzwRe=Vp1onkk3~?FuiJ)b~<6 zoYwzWy{;%#e*RpJv`69I?hadmmuNOThmpZUt`t$KZ z(=>eC$4#4A8XqDPG9Z7i+>lUQXSS8A9%rKqe|{m(y%(JjjCz} z$j+quyi3){Z>-ny%QVs+59KHX>&!|7{JXzUS7hTW;sK zxkCgccktMHGeP(}W!dkUU#X*XH+(eY3?-5V#t+O~xEubqCF1Jp&ES zGTFk+qHx9QIR%af-#q%$|Js!^zhcX7BG5wkoZh^3uX^tR?O)cv|G~Ey##TR0bdOor z{svvsv@d3Iaf-IF3e8s>c5M`VZnF~|yC{B99sOnV&s7)am@O#$uZ z{_ohIc7^rz_vdD^D;0(o(`gKp#+Kit{It(MCkhOX_*Bn}b$wQS9~6*rq;mev!q>W= z>utx<+QAz+{9st^E>HWo8@#Em0hBt<&Tc z#Kmn|aYI$MOY`awW_F?@V}P4FU+HkN#q0ma)_ceGy#N3I+4E4OjAJycl$1?YDwI8< zB1*{2R;Wl(8BvlBMI|8_4P~Yzl$9ijB9aP~m1z8~cjtXR-+z9e%V)jMpRC-D_W5yf8+WeWI1)eN_qbp0SC%QUUICVC)7GueUkJ|ExaHcv z_ItBH?wACMx>eP>lS<@@X$kv}=Xw)^hcwcLMYLTrstI*ER|u^vo}C2bNr-<70YenA z)J!xf#C99z>cW2qRiS4K1k*nFyp3!@Mgri6=^TP)b|te+<0!(6wye*lWTWNeYOvak z2h1z9{Q63MlfQ`+5dsoAWv zsv3w=ACE6;N4VVG@xEf5Dm;vPk>xymf#-icBLuzS8P<6@w;i%UJ9OCeu&gOSZMNW>n3$wme2Z z-yP?y;`a#|7pvVH5WlJIe*&HirSDOYrOyQ2aPlv=J7(3ZVbX+)GvUyoaNQ3wd0;6| zGM@mlRx;H#$Qn%B6Yboz+!t`6su7AcRpWpje77{71i{w@f_nq3dmD!%B@GivP_$AE z)`iUi-&eS=Z2X{FEdn$M(C;(w5w?rO@)hR?W;e`H6n_Bz&Wa_W=} z#VUr1(8DymfKO4x0i#QSu74MRX(+-9s!2QKg9<``5kebnTQt88jMj&q;M-p(Pn_t7 zBOzmCM=YfPfT&q9TNw@1!7 zE)=O%!un!g^U1QFQFfNXSrMd!z|Vkm4eA%6S-?brXeN3TTCU>DM0__lH(54BcNNYU z0*}ZbdardqK3a$+4-y6J8(}*NN8+!)jA0JKzF-JX9AJ#$4h$`Ln7bmbEQc5mxGO@d zuNs_THIHn~)Igsq(#vn&4&Kj%dmSNKcOTIoQ@ROV>3{qoQZW!Z%)kL2NDm#IzbMb3 z7)JA{#r20*soF;Ai05q=ZZo+vS>4k`T@%`zy_vq^4<)cThE{fQHe!l!4z zQJ_#xB54a5pMv@=gZCnIUvy=wIm)C|0+B3a6&Rbp&I{>zFMz-SPhLnl&}$hQTqIUV z(EcC23kc8-zd|}DwjMo@Wp=AqzlJ>f4ndb}gylNQo09Vjw?XuA%>H@&FmEO?g_tmD zQXx6wJ+l9W{1}Lx$IT;!$3_b1M#V_z68$!^wuFY^;z;CnCGwzDa zZ>AqR86NHh>$&Qg7`wJ8GP^q$ zp-%hrEBVjC!F`FEwefdnt8jgsi#DA!k2Ibf_CTcIZ2H{1}JB=nz-1BTW<1}wNZ~2P+ zEhbxT{NSw3Md0kHOS_@MfS9q9aQo~^1Sn97t13~b2NOgMcg0W&KanijLJUj>C}9jG z@2Lfr__*M0L1NhpNF@an>o!ru2zIW}mW@`eI)_Je2&Bobv1uc>{5T5@{QT6&EcKBi zt=Wk+x2akRaOZ6hS$9Q4HoDJ{WtV(-h6vrsrQO{X*)=v>{F;D%^^k!Q5Y-sjunpjh zJ&a#PLr?HNPlgoow#ZEG=g*%9Z_n_R)upx&xi~vBV5EAIKAZZRc7GA?pi5EOlcx#} zsX}Mj*08DUVbsF|M9p0hXz)N<;3(G{Vg=)&Xc%jsVMvx=o;73cTx|wAy70$)yDLgT z9!llOdi+w%#Le<**|-_r6o6*?a+m_^5N9T8rRmgiQI%XjofKjKNi5EB)7AfQ^h zC=+jU<>TyrqoE`{d4LKWz|T>U^xc*}D-57y1e&xBvrB9F9878Yx>OaaB7oDPW0y7# zwQek-KJ3Hui(%aG>78ykRu~e;C(HPRlLyG)PVBy$p5B(^A{)#D(mp?nIzp+^h6Jbz z(1*E)8Nt~byw#f%dl`~#03)h3r4k00;J1+s;-Xp34yT}NjUx>~bR5U$qV3_83SCNQ(t0xn1a zA3ITtK<~(N{)eOlU(Jx==U2d3styq6WigG4Hue5`$9^+J4CDU9SoH-; z_60?n^tK#1$bBZzDUBlUQz&P^%bqY8gN$7`6U-&6>}Iy?4Z~_0350^b44D)8k!#qTa&$u3cix0(M%gU58>Gt{H5dn%=c$4t@t=Us zb2~a>i#hyp-m6hl3IqNC#O*)#kZ>zfZMdO^3@B$+Gl2&AG(p$w#dDb!ZrV-{lW{(g z5$V_C*s)`Bj3L`AQo23$)g^)m$cgKi7pJfpMB|Ip>-=$d{-`_z(7uZao4=poj&qTA zGsO2oTlnVn>uwT@h#E5JrI=DBrnKW{Dl=jJ6PIA6%Q576v6)cEU9o^Zjz_H`hZ+{w zpJzq^b>PsU9_S`+1D1rZ`J3xZ!bqWx^#E^`lt&tpm1h#cO6T3E{$eJ_Sw?$AUUr*% z$bsb$9Q-z#Cya@qB1lab8tOfWAb{*GVPUu6W+OyZlM5;lT#lNH%MJUCP!IXwKwin* zEXoxV=pbGY5lx?*Cy6S-sUQULWQ`JCYRC{1j}Dn8i+{M1G8acJEO9PZ6}OHjB_A+EE_%@_DY1*MP00mYlx0N>q2k+KhZ#mddrks;An@RhQ<4${FT& zZBQZZf}*lRk1OLL-Up@3hbewvfj>D~r2aJck+79TO#|*kbuC2})sijb7buub9Y@?i zL5BIujYE~AF-IX?_Z&9tAA(6VSt2?*`b0kD6sUjQgjfzFOUxs4b$|#^9dUiiAMmTw zsTmQin9;yBM4%$tMMRY;Y-2@N{qWc*A0{|rRz>5CN5Hk02E_#h;>=?YDwkOOr3FL` zo!O5d{Lltt{^d)shaT9w=2^IzDx(0*pN=z>0@Sv5np1CUc~TRG<^~1^(!6MCl|+?+ zu@02|geVbc2dT0Ym_$ta!yP}mjsHlMU32b-m^Bi|g+9zL5TH{?ucl4>^JD+x0)!{i z3M18IhYCwEdO#GFmrhkC=a~`l-ibZl61^1$EPvLL=@6V`2och#fR7M!E#(Xn+rZra#Wup9v+>8xc5ErJhV{kIC@um}i}edZ3500OGWQ3OI@ zBuuHi$n2j^X|9@PEr$%1rYM7hiuzL8%H zTKzb3wk}3-*xqg~4i(VPHP1hw4HA3;V+>}d zl2Oj!Ea8jJOI*va?gt(^Jyiv&(u4>(jSe-JT>3DmVgP=U;L70?T?E`eCMdRyqXlIE zhGcV(AUpNs)XPZa+iSjaTv{yr9poBhK&dVJVwFyT_3bLm73PH3Fs%W2+K#iJ8xM>k z;*QKUuxz7+qwx7N<5pbnIH`YV$iWZDIUxZ6-F6}{`F1zcynZgDj(8ox?ePtWYs}nt z5h)I`Ek(G@uhxqz5WPTa*s%)oyL_`3(r0q6>U^%_j~{KB|6^eH{>ANl_q*>m^zMC7 zQ&X*B{g9?lT4~V?hd#eLZp8C;xnp{3nZ|58Ucck$-fc`3>o*PQad4{P=D^qqfp$Io zdgpgNn=@a_ZEe~kzb!h?+-wrdRz2!lHsiDS)rMu*TVBs(L_^XC^mqhwDsZqv7rIB{ zG!V|3wQCE+b|rjzZPg>!X!N%jRB`3rVeH709znG~`RI@&&d?u2G5!VKI0dX!84Y&E zY{PuRIU2>D!H)Hj#WI9v817vjJ7wZTWO%I@$iD8_$a8Mro|>8sNfXk`e*JoDLBH6y ztMd|FM~TLpfhQt)?_PhUTU=X^RA0PanO-zBHl?I%iV_g!FsYFbRrNi4zBm^^{8u}F z{YOVaM{?-^@Hj9cIp)L5uHB-A5hWwrYqZ%p7?k#jGb`u~IK0A3CLAIhz*UW3U}QAT z$S5W8=-{9E9(7e0Hea`%f+Y?w>F~rJYkt0X{(M2d_K!=y!-BzE1Haj^RC)~m2(yiM z)Z3A?jUu9Nz`{XCGVBM4!x=ydrt$nvsEmx^pjOSCITHr5zAO%I+`7x2xqTxLU9e*o zUb|5nUp_>vrA`mOX8b7TcgQMnw#HJPCl4q|U$x_&U2;}d+^oBPjfMruZdy1Icy!R^ zMW-$u(2+mN1U40GV30yS_~Mujd;>lLBQ3lpnpKwV+}W6i=CS1l_BZwep0L3#XN5^b zCP{z$Jv;HnyKe0R=ZlnrMRzo~Jvs-OKrvZk2=e;HIOl~6!yMyb;;;hrd})*)(^wtgE|}ls&h=veVB2N z?FVp@?l0~y9mvtCIyM73o@OUgNXVGj`C9(A`holb`vD#47kC0I3QZmQwHNaj0;TvS z5DG)HmMvv#?}|Y(2*%Qh!3cYIVJAW5`j*I^9-wRYT^mj3QV`iT>in)2Bw5L@kcF?7s&msunrf%i`2$p6LG1 zKmV|bV@$}@rbB1;QnsDMR)vL#Qd3hG^gEtejPtkHA7jnz=QpEI;3fB)7Rh zJ9u`I-`1_`&&mEchV#{auL%el73qiXn=b~lhN@r3y})0w|7bw)I{!$w)1NkD zhQ_lKCSk0S!A5vj&We+C=Qx<|+O=zc0LPX$i~DIP9xyP4IAJ*u4#Ak|3~^XWhj=Cr zjC1zx-P68d;ftp5MmS(3j@2A(KAQ7|MMrd;2|I0;C+VkRq{H=rr`vtxzN}>fndaI? zvGES_9!~$rK*q+7iOiDgfD(hRgnc%_0!!tXgkJnouQgev-^I*xKu6afU$6}AHZuA3i=iV}szq5X z7DnI$_U%UIe(92x@hWa*hnSp~ONSoM8oH`?{*PBZ{7!ey?pS{H9!6YkVPx1ECj{e>DD3Lf+q&b}v^9%4FJQzHZ61 zcZk~!x z(S^dFmcbWa?y|IH&H=o?pFhkK@M88(NpSn&!*f}G=WWQI7n)BL4a>Mo`WJN?uYKaN zkwFw^oTLem1t}Jyeq}|!%3jyazK^P_ii&gnxmJm|VG-G^w^kT`PONj0m2Wg(_Vd&A zR^+bQcJ{0`#q1rHp$I&B`plVSvrM%7qtV`o_=g^+0~$*TyRlmSm#k*!2cCW9pp(5l zXGLmST64d9PnS*F`}ff4FP(?y<`0W(Z68oC?+dG$pS-Eum|l^|AJ6LY8H@LO~afKjk}mP+q2H+t`b293Mpml6Z|(J7mOx) zaq}UhfwB&z;-1qI!j+s7&?uWg$oDQRW%}>45Yti7jG|0oX#+HadnT zLo6tHtAt!!PMsi6$&hqqk!VX_IbPL(#CK)Z9HeVj<#O6y@vi>NzpJ zH(&U~nKRyeI<~=jCM`JbT2~7Pp?RQ$ZxSXLrj1kl=*TS5iSg?CwQorcA_N`II>A+H zCGtK=12#?=S=cu0bW~I!y)H>FEVEb`&|pU3;IgBfI0r8mJWy;35#96b7y;mqmqzw? zPqvOS?+^CE*RWs_^b~`NhNxb#9upC<-;|NPm7j`9T;WjS8Q`#4BDuth1ORXJ)qLpHen*4XEO2=7kf66+c>e6$&Gy z`kP*^X~LUfXwa1!3Thtn6pD^D2wwnfq(Q8$+v&pbf-^JO+4=hG3@=a5*U&hr!$Ns( zIy%IheVnyR(^n_QX}gM4IxM4U*iFJPMU%k2>YXA?!a{gqd+^Z;ntX?DjC^<}E$vLu ztoG;TiIzn~!BEf0=1jsSVDA_{{eYj}Smu^sH5k8n5h8h+8o}Ac>!pR2g$RR=z-83v z-Mbm2JNa-#s($t1SIISt``yn14>Ft$20&>Rmq=qM9r)^p;1ZmC5bWx^~XpCx9 z94cYQwu>^~&H3g>alR3+Od*p4?$A+AH{b_7AkJQ9;UU#Fcp;++M97d{f>=5ga+dS~ z8ME=0Ex*mz)nZ$(hd3SJBPF2~*7`Ia6=h6OK*?@lZRGgIL)Cp&4ZW`|P^}o~fHhGh z$pUjQWwuo{25y)8OT~hWh)_?dX2=TFIajIgWZ1|VVNB|NJE6tA56N|%DFVU%C$3&y zK50b2{{1%@^EkrifmOGVo*N%e`O)i`8D|O)sf(1^+6z)74eE zOK9UA+fj<|ZvB&AAWi+eO|Nbb&fhu~N(5jBG!u42^fQ37Axw={T@0Sv{ATKVhi+X= zPhdhWVknE(TF+umvh=_FBB$1z0$| z^A3PM=$u&(GhfxmCY6S9>t&TjzNlgNX;1-n1IxpXooHdv0hX_LW)Nmn84df>6ygB1Yl;9c2#?7#{^2Uf7@ zUjNpHNdJ;5^4iaW-Jg!`*QQZlz~uc})%znuh7J1yrYRIS0rLYn?k+XoXN&cN_|O6Q z8fylEsD1zbJu1`ys?2RXJsE1Zq7yITYGXxra_pUbiOp+^Zk0ryIrAJ~m7or=FFYA2 z9Hv~W#F`(SpiO8{=Fq$l!Gt%+b~FLc$ulm$ihBwXhN_a|Nl8UeyHCOsei)yed{NHb z#w_b`TK||USN@Sgl|Vr#Hlzr|lBx&H2;SvaLcDOl*#Sr}U&O(qx)7UeSQjaaz5>1D zKpC19KK^{RUvTh4yri~GjtFC4{Q1P%f6$}QmfeCBHy*Jm0g2d%i_;_GH&d)3Vr9z@ zHKzQ=ZqENu$AG85zs|5h^#S4k6PRvq}a8 zO`v)vRT4^AMs=I#=uJ;a^>+;?SJu$Xm_7Rr9%7njL)hTPsclbxMCCFk*8afM3qlc) z?Lu&(g|{j*C5iymzH?tw(n$+QdnKHiHj6iWyCDMV~i6NsoQut%A&7akN4uG_2IGFntEa(YV7!gHu4^CO~epvIgbe5+?>Zv zRl{Fb4u0R+V@v7x&C=-!8cywG8Fh$}CV$}$+% ziSk{3?`0a%to}Ftze#t;re7Q!I8k1!we@6rXHM`to`x4P?_v_LWSEMGxdI+;Q1SrcdB7`TLlhPnarZs%Om zxr`@5V75AISIAG`0owQ2=u<#xEp)%q1RT#UEk?c%c7^{w>(D0xc)|G7WaL18rHVHp zl#uUKbHZ3FC7moa6E4YsSoCN;`t`fu?>mUyl+-RL0yED!{{eA+3%}*_wXc(@!Pd=q z1i45LlNJgR;q#LiUlPHi#LZ?W$dOFIAtyN%1#K#?s1PG|gYQpg$h9B<294R#SPAc` zb>D{qfTzEh;Q>G)XTj-v)@#?BTXsu`AX@zjd|WW3}FNq#sa74 z;+-yUd9}CMbxeK@U<_XXLDH>J3)l!&kwx0pml=)08kHQ*!5seWZi6|X=*(c0oS|6V zBCXYH(Ad+6jaP$S0+gt0elrnse=HPnAY4p)NY!|0M)HWtm+M4eEl(sg)RE68%r$g_ z$qNSamd!T>K$QY}mth=na*US0FEuaMjiI_012s)-vWCN24%%ENO^F0zdRy9?X{Tp? zvU8%lWwXyg+Bu4g1E%5foCiOxyyW;kaLEVIBeDHz+*oMI)Of88$`zPaf*h}qQ~_Hw_7U zCuQm>+dZI*GW>bhwBeb;tfpO5l{Ng&d33Oj~>1*k58;C6!5h${x! z4(%w^PAhi@Xvf|BO`TqEZvrn$gI6L3gWb&ziNTMQ;p|b9&FoB#$&CG7Yq!dR8|aXp zd-oO+v9W(BzpLRR`^UgqNGseE*-MnP;5EhPJLuP7PvSq#Ni~I`H`N5K;1?#hzO+gl z3mnas8y#MQQ@m{Y*?c{iXBEiANJ?2k%jLKGhR?aO{&d26^Vze%@)Kpx1AsA$DPDW^ z3_cD~`P%nqR_$9hUX@t0F?e%HZ=%6S&N3L1LDf4yuBkG#HnAk5pMmr&;DoPl^0s;n z=Iht2_>T(!drCki#?c}>ZxQ~HRwoq=L>03~C-T1pHW?8TV5IV-HxZvI=InxbViF)u z>yRj>Q@W8=UT8hN(p{XX=@;osWRV;rF$9eA6{#o;kS*DM1Q?S+I<{lNc;}>sWS7dw z(8u6QQ!x)fku4#P94wMx2B`9ezk~mX2_0OxjAe1c2SF1qX5;V)WwkSrl5q*Wp&?V> zKAV11BX2Crd*I%ztt@V$8ku-x&|W}-uVfBZyWHXZATuqXAY*-y4?~A-w4H|;l0Sy2 z{B83HfP2{{fQhjfs54$ZkX|SX2Lz-%o;wSDMnG^a2wW1ZWJ<{Vy;pvMxQFl-^r7bR zscy?lrf^Gv9EeBr5-5oFahAY@eGI}FfjLpW$hTe`6UZN$>Hdm31v`**Zuvuc_D1I) z5H3YG%gVxDG8Exn2{Hqtio$yzDhD_{5H|#L9psQF)CGXo_8?Ev*+8QK0J%jeb(ywD z{8X?-(SRT4*rATq1ur+|uB2Y$Q+8LjA{M;oZ_8ifcX_fjLvAvBW^zeuKt%pvu*cR60-IxGevfKZ`Q`N0la>U+) z*aEaW(v7khO&#qkgEXL1^4%ZXaq0!q5hDvHS*wIOKcFV>Kmo?@<YBTm@Z z8$8X<_QQFHcAN2>!Poo!r4trAQB1y( z2rz*_7$r*xs0O`1Y;kfLDu6sN=UWKBi#dUIixyRI`h*HEOmK>qyP(@V`D@$*oG=6@ z1JuYN8u^U)(OzIcnI>%=38o}ygn&BK5^otF^Y$^|7G=H&J4j+;y(wHHwm5=T)6HIB zoJ_{t$F!X4+ZG@N_~Q%FP*xa#%FwV}t4Qrctd%+uzPbpP$*H~hWn#fi^Z7*p7Zwm* zy7KYxgT-(t=O8|k{cu|TV&Eci=Rl+B;nOkbeLzC@p~ICcjM|=bS%JN0G`^|=!x1XN z1FQ=!7X`nCX|KTykdUDd4+Is4Py+w}B@zfK31rJ9Fe79DA#2Y~P(;HJ>{?ruAFf|) zsCuP5ze$vNpHn+lsqiL~$DZ#mlgCAivP!gLjW$A{C@Cpn?*GXk#icc5{KX&+d%BLY zo;vH5HUK8*i-6LzXZJj1qkZA=so3w^idWoc6ir|5=3ThC-;oD&g)FpuwXg5Vm`fe^ znvg^Ihn#;3=ahMCKmj4DUhRA=BD{;0Rc@!yQPN00d)EBSd8_Rb0BB(R@bY7#$2{ZH zhwa)IVzcz$t1Rmx*k;;u;C{LO@1qJGOV+ca&(MBHgrW`^vVC??vn1{!+ z$dz|5cxWxd@=TgLP;DFiz=pS{Sb4;nge5V2fBkwj26XF(ecS9D>9TmyB9YgXCHVZ2?Rmr zl0fQnktvZbaXnMN=2u!;dSJZf;JL>NKW<#T`osEF!*a{Cl`gD&)Ff!~F7wEh@xgW8 zKaaJJ+=MFug&ncr^}BaQIF^#K5uz2me=n=GnQ@~{ojz-p2P_CCL1g%_Z7NUWvN#iQj8%kTtBox2I=6$}|JUQDyo z$LXPuk5P-t70i4k`%o&vDyxOXQd2Q8-eJ-aq}^_InT1lnJ7oE_EEEi8Kf{Gt8# z_SFyEY>StheKufN!PTYbprpWqCck%U52pL9gu8C7Ybbj|Ww8WEJSPs{ zzjo*=xR4-%?wL3W>0?zZYfT7-(y(Bin!D<1ROafI2`Zay-sncVd(6MQ)`M{uV>3D- z)wK)W6tjOR^}&OvTRSqIENRh|rNzgm{^V#7j<+vAvK0>Yhe(f7{*d`yaapHWb2Hlj z_%C;wxQbd@Q#nkhh^frvtFM490Rc@RP^_Xj zb7v&E$3%mGqZlxhWln6te66PSuP0Sl#&{Q(+6}E!dGa8R1poSq)dy4@+#$7v9F7JH zpl=U~fTB@|K+sJqlo=Eare3YitvA|l*YSI8Ud6}9FQEp(UgpyBV^E~o`F%G6n(zJ* z>0Q(Rj$b(&bvm;W&dz=Y&|pgf#ABaiJITtxWmn4%Zj4Ar)m6tF4xr`h;#$3iHofn` z8$w6`fkUAe%?6oi0h1#roTik&8Zvx%+s>U|+1PevYU{WkQwy|=pZaM&o<14&&GO~D z@tRKf8Gpj4Y0H+%ss@0XFbSbQ5q*UJ{{p4A{p?+hR#x_I;jLai!XhAsG8N_@- z%4qsENbVzfY_MAd6(qwc(35iAQE!^kGEm~uCV=PmDv3F(n%*R3evST9kG|FIDwd2i zbTA6ZIiP+z-1g1pv{R+B2)9$GBc05fZ)oUcWJp;+_2ia+qx-Neo0cr>5s>aM$H_)- zXMQhjwd;q#o(A{rd#-a?Y1h+tl6$)Lk@-*Xmd`_(D^eT00~7ohyCQwK`rPHNx%mp5 zenNafURE2O!cvpMt5LpRd=6cnw!TN@p^KZ=ty_M(DtFqbH}Cy*!MCGQi~MI>zoCz^ zA(IA;TzCD~@LS(g*(_TCBwoC^>bmpowRe`bFq`=-%5ce7=RV3|kArtSsgITE#^sOG z(n?zQadxnq)JNI7RngDQ>ue6RNOz9YslB`PW%FCN9uzDty>?*WrpSY#D$-60EYG?a zuuexDL9B|Kt@`ozwF5C%`&X6SAN^#bLsg%*uGT}Bv5J67i0meobzl<|zd5l>{Z?Ph z18t(sTfkh4!8$L=$SoL~q>Ue+CqV*{-LR;CG;2EO+ewP0@aNx*0fokFod{;ar zp5#Af!kXQ>DL`HM{5GNRPI1|R-%#n0j>;P2u#Dqb%TAvP$7`WTBsm@YN$UC-iT^chtebDrR&> ze}VKw5aDG$&7JZ%9dpA{doYp4_AI>@Qyi(QgqX~vR@7d{(*|wr$YfWx`?M@!J3^~u9ov8U*OIur9SBM65Q-mJFX{!cwWd5waXHE~l z4Ekkqy(4^AST4MwG43u_saLvl`>{rfIDUMzW}XaFVNCK^#8p8cTZ*>aiU*9&2}K0& zqzNiy@ng6m$a8`B6(~zTJwb=V$fWq*J)pL_@%Ka3v|i znJv8m9HLnnespZYN$oTkw|F^Gag&iOqs;$qvoe<@Diq=Z&(Phq82Je3=G_(3t@IVV zPuZ~~I1a#{db6oku@g@{1xcSZ%YVoz?dGF*``%dj4B_`&goa`dhOvpjWDI)X{u+bU zQe#3Em9gcROxa3h(@0(W_@cq67}IHd40&Xk(YW)sSZsNHhs!r z3*|3|T=SdeIH&uhKE(Y%T0)8s!oQc|I-)tY5R5oL7S#PsaTJSASWo#jpyS@>yK@(} z>I?TD(B6*U`4Y?@9=WU)ytvE4UQe5hM@=*h>K@3tD?Zck$n}%PjN3n66S6?d#$)>o z?aW%4J`Xbvy%k?}u^EGui6`KJ@rMiFy%S*$8ta*T`dpxIC&H}&rs0t*b?A`uIrKz^ zJzNJ6v{0&@g7fFzP5c8#W&y?(9(zB)Z@i|=oa0X!*IBGT(Z0rk%{=PtE`n{xg5&QI z$}d!a^J@8oG&&WaAlvN4Cx-JA&%Wfn&fML!Z+Qb}&4bVY7T+ z_JX-dzF&f#0NE)U6_Xi)f$gXx2j*xn(GY~4e8ETus_(1f-(WM1I&bqh3j_H&T9k|P zEO!6i%$$RMNDXbBoqjyFs5}F=JDH&hdwhHZc5c&bG=v`xn5y^nOZ@^T(kFVg^w1gX z%k>^(x>7$-MA?vofR|)CBU^vLLQbDMNAJ@WC{J2Wa1+_2%td1)U$9emG2<<2+Ucyl z#!wT|Jw1)+?CHj3|23STMgW3ECkxKn_UZ4dtL=$Z%W(5VXm{OF|%wAg^+D zXwpm>w?{@smK(u2y?=D59}wMsG;taS#`8N3og&uQfNV7Pq}W|$3<1Wpj*xn7sF zHjSVG56fC6R*Xzclh}1a$4?!&tyOyN^XL7LN#r@c{Y$BD{`Bp+Z2+PeVADA5zzYzk z0l~?2)98e0l5t%%zdE(4S#m5VvMFNCHEKhL2EsuVyH$o+68o=Q>B#&AXS=I|Xua1` zt_mpm?VBB-Bpm+`|D-$Mjm)p2>8vxJu^$)nDwq_CN3U^@E{9wE#R)WHP=yZXCUKfE zV1JyBW&0PF4QN<*mlr&E^r$Ds%TyMuYhr$=4hRLNy>TVx(42%P&!6Ar@baKTPM;=H zH7C%4ib*+Yn@_+HCX+b7LuOxyaTdKOi3?=Dbmwm=x)1sdZu5(7o_$`jbVXAIDoESL zdq8upz3Ptzn6#-#H&C>s@>{HGTnU*lsknQhAK|!{tLh7Pn}{mUemYEbJqgZRXW-xKl)a0fgzW_!MY}3 z^p8}MUB$6gDXtw4`TQVi`5r#p>tLw({%2>af`8J|LPn-F$IBmjQ@4KoruOQHT%||T zoOaC{0phFYc>GH)r5|tRa~!H69fp9Sz(TBhr_;O7Gp(qsykn;?Q$7mb)erh(f$2qt zZ+?C{(LtQ8m2DX(x3eB`NMEI|EV2T!1SogAdXDK9NrD=k4xe9v>Jh~ok_iPMLP`d( zJQx-3uv(Faf;Z3$h(U1pL2&D3g6gQ80hrr zbBm@MrWBYk%S8EfQ<0c5xnmN;^4Dfv#BN1+|*;9YUSB z)XC%Epfagt^hJ`9#)6s=az=O0D%cS63JJDqV|R+=2f>D}ZtI}Q;}EgIduq(pbDNrv zl=ALO^iEbI7B*Yd6_y@d01<*8$Pr%YUz17c+J|#Nre$tO>br#(1~PM9PJ^_^u((aa z-cVdCy?F$c2Tc`ZIw-gB)RFBrRhk`{1%v?7*8ws#Lt6g%iWO(euf=G-i+2AhpudXB zP8w|LE`S+kKw=sPFA-jqJQYp`ABf8>D=9b^^1Ociq91A0$i4fDyXu>unD8-R;PL&% zSq6k!Z5%Wy#kb^JP)ZfGKD1mkE9f;QLO$-JJNLTvBMcVUz^F-=mux?vO{Y$Mo?W~> z{353h<{)^BET-hwf(3%>fyi)oDeV$IUCKqikI%LOANAtN?roZhGA}zje(Wv80&N*p z;abt0{j{()nKClH^d8X@&k#!Bqz#eG)o?_I+KI%Jol%YQ1G_7k*xR3S%;P8cA4m;7 z+p<-w)ZARFkK+#2OgNw2mRTRe4-8Eh7dM?!4InmOb2FnOQVLwLM@$TieH*k0yoM5i zL(5MU!REF3a*kP>c03kNDn(*__kC6Ole4a6!(lHSvq)btj`P(0a6KWJCUrfhqyZ2 z7G5phn-CR63v#eKgCrxsb9@I`KZpRJ8i<&K3wdQPcaki`rlQnb zx_MSR*zI9$j<=C|2FMCXgQiK zT51O5vU_#dsI+Y6>)@oTvRB3AXs2Fg+m+y`^zb1HY`gnpxQV|Gmw89h>RZp8Vsa+V znBn(&dR)1q3#Q1_s4`|DD&~9+6vhi}#IGNp%%F@2O$f2B7O{{&rPgzB|M!PRZZg`K z-=^`7G48!$o#VSJU(x8WV%ajJ`X#MBzQN|8_oEj`wAp6@r`9~OUGxhT&?J7+p>N;T zixM+wfqk|EFj&rt8>RX>F0h26CMv( zy`ghZPJQve6FPfN&0n{CkH25ctj}S5mED93>-%t@A>oFB3GtZ0xzLPa7Ibme^}(h3 zy8N*ZYiUY`f10txRH;S8yS-3|-hTd^cUnCz=Ip9AUMDh#R`n0*rjoX8AIy~RyY!pNsl$D{7G(SMi%f3OC>B!E(OBa- zF?#jt3keggr%XPVeW=rcq|&II(wf>O%I>c2e$&(s%$s6iq zmmHPOy$iRu>fbHTbnc@IPjd3UY)L(QDLTK+Av?#;ZyqTIkT_+D6GVOEf&|x|WMG7Q zTXyY?kmpi2dW<#a{vP46)!K`@uxh61_=<$b5v|P%hB9ziB zvu^N_2M|XtAiH2W+9SqpSCda({Zk|Tb>(1~>oj7%%yLO5FjYxAq`g(cG~T%OVJ1ze zt}9+#J^Kw4gj=_6z0LQXWr<2bS=k*zhL9Bwbs}BSjS_kRI-0g>RhzzU!mDNUgLF6N z(*Mf!NbCYuy~i@D*2n$GmCKj8M12xw%I~kvzeNG~lX0iskq0s(gm8>J^*;Zw;rwdp z?uE6$q>#x!TJ$b7Mqq#!LQA1M)AZrj0%A^Gg zVEsw0K!+$g3~0NucL$P^2HvLIU{kJPKnq;NWOxC1104K*|4zFDgG;6K1N^9*}Cn4G*DR=eJV zGAQ7;DT3V6fz z`Y7v#sgwDl0=m9zlAe|(tO(=>vQidk-nL(RbpF!%!qpNX1|!DY4ue?7C7}jt91Mbh zEuSwp;gm~{D9f9e0a9)VL;*0*K6ZGS4!tPeUcI_LHV3=EKKxt!PWDl!%Ulf90;cIp zI712|6Q#{DKbo`oy7hfmvN+#Ol#6>!Zh<-7D2$V^!}xn%|yb2!$=UKV8+Y^j;=cAL}8Ut34S1;(-hW5ux)R&y{|+pO7#R z{v#Lqs&bgC0>hHQgX8N;R>aLq_@_Mg(F5|tZrvMAZ^BU-XKDG5W2KNXU0fmJiJBXUJvpc`LJ@Af`~#d3AU5~M z9)vOn&y4pJ4vWElepXc>(sKtKB-c88|9q*km}FP+$hFpwvvm};{8vW&VU)v+O}97c z@>&M>^bJgRWunjR5O*-bx2%E`0vzN?0V0Jr0I8t^QW<&>rd+1kVAf6*3&{p0HB*KY+yIejzv&Aof=f-WaAB&(X`W9#K!Vl9=oGzr}34+Vt@{i!o&3g}q)0Wg@R>_;gD`63mUK_^h! z+$^VG-JCn{(!P=>?ooHIad`6m5jNt%6Ljolz87CQe zEA%du;|fR_?(+GzFOMBxS6ws;&0(7jhXMjJ0hejj|A^7P)jhvjmY{X6x}r|kyPI)C zql+PKjraoH{&{{ib(MC;;Yn+Brp0tzII-YluL&zWl`k4EoaE+tQN#PxHt%f%iVN2s z$SWI>IO?a~dH3UqV4FHvip@{SWWTJZh*BfJP<}6zsnRGDveLB>Y2PF0)+*7s^d9#Wh%SZDc zuTV08QZ6B91MKW#fQp3DiHnS)UmOMpT6ZFTgY-JR-8)#yQc_@?wb`k^C%|o-KpV}V zS#*400HWJ~%Ob16WxFRt98xid<2KY)Y>JjZa1bP1NLqe=V1jhaqE|pr#JhcB!%=m);?ee0X}gtr#=f zXSkuTl2ZsSrlK141-9A+82-aHeZG&Pl;|gA}*KAhHA358WXxD+=bB|- zeVVJunkA`%fS_3r&>qK3wydEQS}2zf8ZDqVrRLd|Th5<;h+hoPa)!CN39kW*=Z42= zOp#tpH8(%`?Zp5+z0+%+UowxJrQ*Q8#h!iov`_#Jr+`zyxzGH`>_%6~GQ^|$S`Bv4 z&8Of?&I^g5+{S%p+NbtsRDPYc>~)9YwwYZaxq){EO1-Pc{brg>o9 zo%tRIZC>$t(*8bxs_Oo+QO5|N`ml#B$F&C)pp=cM&V#m$WcFZwg5fkD!^Q)1`Ru1VhM?@$)62Q!!+E3N2D(4K+RomE(XPm>g6sO;V@EEA#iv8Y-;AE zf&?!Xdnnx5i5}fwk)hxmo1TBqwU2@L2hU3iT5@*?-l|MUAtVt^8?e-%-fJpbbbP&? zvSJmU#JENdt1Zg9ToRrV^T}|^6j`>*M}DGrDaRpz!=TY7YF*fwtYzVU;bJSB_oz$QrZW57F@VZw&odGO13wPc`uA*1a8;@- z%P&F}A*5sG#5X-ZX0VJDMJnSd;Q(2?L&X}BT&!iAepp7??muEuwWY`+Z?CZbX}4QE>YQ5<*8 z9zE*&CxtQ9JFdU_a8S@*?3@wl$x>L;k;KtQ^F~K|Ls;OX*4Nsl?bBY*jr%McpRtQT zZ7@47>t^IhNT6REkpHJOD|wNVBeeSPt?*)ktb-Dt;a@778c#SdpN>;l2-L^dgch=w z$*@$vOdTFCi^GU?b_@5o6*+BOU0oNA3FEC6yna3PxAD(9j-43u!$&|KaDp2Z*Z2kA z`9|a(I(`Ll^txP(dY4JJ0%@T!Yl!|Cu+$AAX7nj+KF+A@`AzKLRrEwHKow8%i1#pS zI%Psmu9g;p)_^W*Ckam0J_{#@I-l5V2fn}~F2_Pa*6)x)&i41%Lk&iem8Qp-M9VcZ zGjq%7-Tf?ZlCiT(p>)`uX6z3yZfVw;cKC^!tGFR0obd$b`Chj^(6JEXGVXoFXwty3 zd>eT|oUR6R{L9d@W46WzHqA{J_h@Q|*p<0I!aIj?Y+T#steg378uhJJx4g6h_Y+xv zjUy*j%>>#!CiB?M$H3>~cM-E2%C;5=Pa=)Oepoz}z&mOmtd$(d$*KAnBi`j|Xhk__ ztc&3Is-YWUve<>^5AZzy)MrfIljzsDG;1)eCdJ4C2TY44go+9bMNr#z?ZUOSIC+1I z)WpU{jl95`xrW;4)1r4rRB3ZKTrT+3p!FDFM0;Cm;vz*ue8UHgV2_l zGfv#OM%5gIfG=5}m)dXe;3f-TbPBy5lI?zE(zGc^49;Gx<|yd#s|oH6XSVW!e$*W# z!n7mckIbc{=OO1XsiwDZBeCP&Bf@-2$cs#}b1zA!K&*qD*9oGGw0+heEN6b7`w|ys z(jMiFKX-UEd@A(~w$TJa&ak zhttSShM%Tj8VMUp4?TIvOjGQEIi{{5Un{LJ`o@^DlX#KyzIV0m`US?Q>~!IDN%My` zpqrZ77>m;`l>C%VesIoB!wthSKD@*3cR5J~21#35eHuu5gnD>Kb|Yyo;zVIfj}8{< zIJX5I>@8+HRHmh|mzT6tR+bf_LB}utsqlgw1JB?5Q{r(#fBBd(n4~aArPe#wT@hQ( zO!kxTi#9xAKa|ai6?5ON{$8YHD1#anw8h<=kD5`-zohkdqs(P-^2Z6BK_M>~fS}(M z?_)uI0Gqd`SvycuU@0{%qUVCFib3{|Uwf$ZXlIC`br%frhvg*#t1_uA2ZNrSi}js1 z@PW;$RWf!Gk}sE^_Er6l>mZ|~?2hf7FI96az)}u&EBi`lpFVTuiFGUMad%mt7l{oaya(@V9oNVA}*U$MuM~~t?Xh36$_1(lJcO9** zyHJ1({864|KR~|6sc9NPr6SxSU$N9;bMM`L?~96ny=HxCFB9_E*y?#jD<#2VZN31 z*b(->P@`Eho8i_HfTp@HYk{gb9Sfpn{3TLl?xrQX*qJZcy*{sk-^XH3{=kPjdP{Pv zYxe&>)4xCJNuB1%Z~y;}(w{$F?CSe}9mN0s`nORN8jt&5 zf%U&s`s^|*5iq>`b7_pjH8BP zdv>i^`qxLiH5fmy!wW@HS9~YD;n~GhL}#t9UwQF^ zG$2O9q%A{Zq%bRZ?OR$KK5YIbiN(Tcb^xos^wT+)T z3Y(l!5338xTL<|8{CQ4-;O2rCALYS&_}>Akg5KBw8FB zoaeZMlw7hR_g^B}sY6UC58=UAy*OB?ePrFUmz?QiaOrtJxH7;ckpNb=zTL7|955MO ze@iY#@`TB0Z#+7HN-77J1*o=DRjqV=U-*OyP^=Cqf$ECSRQLXW@7z_1i;&Eq9u9+o zh>+Q-Gz4#J-}mCt0Fa{_evL{43D8{vB{^+tZ>QQ0WDORRe)g!}Tel=G+xk{g(i??7hZTt3~At7&gz `vKiTQ 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 z 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

      BO_tK(Qvx{@A?HjIaqcyHr+3jL~p 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 z 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%0D3tV<;%mzGjwr8XXnPHC}Li*=4?i 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 From d35c2e34b0a7ab0a5770d45db7c6c8f55aba5586 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Fri, 21 Jun 2024 14:16:59 -0400 Subject: [PATCH 167/227] tests/circuitpython-manual/pwmio: shrink png images --- .../pwmio/pwm_flaw_explainer.png | Bin 306697 -> 81424 bytes .../pwmio/pwm_plot_explainer.png | Bin 777734 -> 235940 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/circuitpython-manual/pwmio/pwm_flaw_explainer.png b/tests/circuitpython-manual/pwmio/pwm_flaw_explainer.png index 02d58e8edbba03037b67711514b491f8cd4d5bb9..0f5c2a7e195918f70968225252f1814b83accaae 100644 GIT binary patch literal 81424 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 literal 306697 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μHcCLw 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≪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%0Dt|oIg1W4(3pGe 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

      eM><1JP=?ru3@L=dT?pMeDsG*A13lPINO2 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 D`o2s! literal 777734 zcmeFXbySq?+cxT>VxZz9C6Y=?H%hA@NOzagjdTp5A|fr_ox=bl-JsG84a3k#NjJ;@ zL+opw@BQ9SpYQjrz5m#2?SJ+xmJT=feZ?8ac^v0;2PrE`-@zxxzjW!+9hp~>s+TU^ zw7hf)Pwd7uaAm7W$qM{;)%k^t`VH{$zG3PUg^VxE4 z=k)(IFNPNt3byjw=ZXHDt@OA&V@`Z`G;*Sdtl^$FE_4}1)Y03kaf4}ff zBr^l=_Y0RiUp&9{$A!I*A4vbWuy_-X{f`TsMF0On{(p=75fcBmG4hOhoW$^06T8Sv zvHvrQS_JKKmPiiY5NI6Lzi|nC0nw{$mjYG zd_T%~-btbc25tPN)PXeiI4|EuRpiCrk@TMFYnm7PzJlAQ^10%+^*0S~$$c-0LEA=o z`MOpYUT_Od64hDNm_zfXi=r1n%reD5tG>p&)dXgi+YeGXy1(w>3|M&ni zm;93y;x(YGzPZIFVdG$)z zS9p$0%Xw>|#4mZCBDrG!O|uC8dM%A;{?1A}dQBJ4k9Z)7CBjy2s5T)h&}(GZ>(yLl zqP~LMdHNHZWUb();i6H@@UoeMrSdRo1fi&%*H&*qgC51mSJ8*tPvmkXwUHc|NvKQ%72lT4gKQSd7m+dC?PR);`*o8=%O*(DmPc?0m0VjWF5=CkgB~R0bBJ4n zZ*cRQ5&imE!p$xk#Qf_ES7S4@vC!GsVcO1%C{gWIg0{;*E6+Yfc;Z?AwNO!W$n5^v zs={mmuV%Q7{=RGvnMu!2xxY+g+Rr4byK*sB@JKcyZ(*OJt^9^@#|EWbj7%dHrC%sa z)E(BoA(+;5E?oU2d1gZnY4w3&_4p)x#=*EHJ0e{nL7VN3>Uc9Ic_2cR_hbU!E!Tb3 zcW)29)q%;ksH*N8X&A5}Y)?=(K3z{g`8s|iXO7nG9qc)|`Y$v6^K0jw;IjocUfn^S zX->Q_2jgR_I&HDx(>Hb6(KntXC*iYVQy>P}t0HL}R)@_i&H5~5m(ATr$V`mQxr8i* z((%cv8R&G{_mw+u6Xd6_Z-ykEqdv4-MD#h^frnzL9WEBO5YBHs6-+!1ZWB}_Omz29 zvMtPv*`hm!ma8sy6Jvr+)yH3>nT9%6eV~0FD`|rsM#%Zv;57uCam1-_d=;#c(&N4E`=P@5sNi!`uE0W#$LG!{az z6(~IH4E}ml%xZ8Kab!d;Z}cfGwS7J5)Vmjv-G5;t;kJcRA1G@luF#B__07X8wh_W` zqh=|s6I~RFXx#IfNq^iC)TAm`=#8#dK$PEM{IcLd)GuuDe0}gN`#KFDL_mS<&G@)8 z&8fn}j>-mp)yKbAlO8HMmC7^Au*(q}s;IddN<`f9dvd&V%h9xO`#Wi}mOIbtb*b-k z+J#LIsvb%;Per9%p|Td|_FP#MHdqs5g7)OEVT*6}3$6L)8|>b64x)Ca{|E3kLubXv z!(^gtC!0h975=JaV3@tj9AiSTTP-x?Tu?CjtB_UyR=id+3PLaALj@sukXZ9Rdq?k0 z8-ot!I`QM$A0D2rXUj7fsbsH|n|IUXx+8P2)*8)T^EPqnC~>hos{RU=lm!nhvjRED ztdgR~fXc<-fsMZIucp2$Qw{p%qQ6(TOH-CIho^3V0vB$98{O|NCtt=tIxB4Q3-gYx z5?QxK)|6;|m!25;dS)>JQIBHtWJLhf&OS@hu8gElUDsOtsII2L;gHMFxEv~M&L&n$ zMV~80BinAAbX2q;@7)?z%_4d|zeqPs$~(41jot1baQb zDm$5BjZppEGC8SbH~V0_D4AS(nK)SsSG?kNQFrMe{pFQ|0xPv=rOWQn-ABz06zhxA z+WAs4eaaC+hE^*37n{nah3mX(bmWcU37`Mqx8K<5J^6~Ni~^9J1qMEFWOt))vNfxl z6>2ahhFPUI-MW#Eby7e^@VH<>KTYBQ>2JioVqGU1SHrlE*_>IB}EvVny@oP+)G|hPxEA> z{`+zoqPDR@Immfg%q0cd(L;qQ4jq8gBYQsz1bP zjn#CsM#v4l(hsVk>r&|tyeAknh0#JJ!&1~Wir08#6eXu=ewoxVNc)I3t_mLIC-~cX z7EUFpyzE}pn0+K2mCL_=MG&)lc|wnAw-`;49`R_qCaBUaS$I!qVYBoi@n>B-R) zFI#oPy7!*^M3>4zDr03sG)I7^W{lBfh2zVA+3v>jv_L?(EX&OT&slq<=2FR?Hc6%R zaehVvN7r$N0hPpRN4CSK5g)~&!i*&9J^3+2ah*}bmh;1y>1C;qrdqAJoE(ii*1jXc z(9p%1nZmO`W7z{fgnJvLg8_N&6*wO?HA#W|YW-u_jNjUu{-Ip>$qYV}(>dgOrlr?m zDfTjcsGcVxYI`@e5Z>upH25P45!ZMyp*dDpy38SC&)-0$aq<2uT13oKq*i3FZezK!@dO8z5wLG+vw2-B-_QrwMv>otwn$P!cjZI9q zos7_6CRIcg3y-e+kaDt{h#qX`)?dh`sp7Ns$&tf1>fxJ_+kwxKaA&#v7C`WlvyO!V ziR>nJ*L90Mp;G*uZZL>X^2A+9l6ZEwU-?=!c1cs8inH46md3D56EY{S`tn3Me?}ap zuJRYs%~d+OtZ7y4XJ&>q3&V1@!Nl$hBR87mX}16+RAE(-X7P5VO)tfCuwd?95nQ8D z96HeSncR1S$}c0bfR>4VoEq8uchpRXY{z8fLi!1x32Gx!P9Dkh;1`0AhNMz{ z=4jg_k2C4z%G~h^Oj}P5{F8dmLDQhEHH*0u6+6*}?Dptc4imQKY~}pG|2lb?aEEWx zGIlu7%Vgfhdp+m%!QJ126E~$HR(xt+8YBDI zt43*1N87ZkWT$JLS))`{R+4UwqApyf#@1649+|H$%K&(L_~TXiYJUcdb-E@8yXKmD z^NCov%|tIl7rIl+Os*?|_6qNqZ(XMSVy#@+lp&}<8oF$&w(@5*(!|YaH;twKw`K!z zANu!TzI5qzN!A}K=FPuh8m*(9__sq0j4_ zt4SG8Q!>;kV{P1vc`8frl31Y+?QL)WrzU#~`?_A457%m>`9!QQHW^*pRWy@{z6(KO z&pD9V<)Voq&YmM*!QXuvCmLN#(rwTG6l34`zb;Ly=TEq%ji=q%u?YL4E?p`~BT*i< zc@*F~ci)EXFSYDH4EYXLU8gGs0iyZz*!f>Od+Q&2Omg~Cncqf~rJAxW91UHMowlav ztSl}5maR~z^XR2;(umhU;!cAeztWa+#+1r7tHOlvPmN8r=XhK2SQLXG1_@hg<9F&i zT5WGHF){7YlF8O=_NtoYbz@@Tfb$CA$AtI6W!Vt@Tx=i-ps zNn)P+j=}1XLRNm;2wT61J;iMHBVG@dSPlXMrRQ=yPCD%vZ-=^xVHFEo1dmg0gc>SR z?EI(0<@O{#am2_LmCt#uet$$nBfsgjz%cG0!*cAS^iqRW?gl+Qd3RdT{J!-35a~3g z`r+kKl&yD3mq{(nro8yYoZSvX^9`P;j?)i7lukO0SmhMfhj4vKUwZ^E6pV-_ms$31ijO z(Zl2*6iUB9Q)^zt0lle|yNqf$!C#)=OK88cN|IWap4Pw;=YDXMXHoGM7a||I+ixeu zxf02}v>)Dqua=_4x$C0TbhdP&l?@lkv@C%jp7QTwDLYKh7VP;Boy?F0@4@EkxE-v1=CNy#$NsoYilfsZFY7f1VEEYe0KYBE}V&R}j&FMtXC>>Q< zp}tfS1cc)Zg{)DCqx0v-LbP2Pg?nX#9aG4{5_uZVQ+t;o$NB9FR`0Fu;kF)mFX(^o z8hm-{yr=Fl)Rse}^3u5?IE8MttnYT=3sm1tn4M8Nc^Vq}E7Pmi$bpJIV7zdg`U|`C zT%%odh$NA=AzUOb$C>+(rnmGtPf2GDftsoTyo&Wi*w~R?r+Blyk4jx zA{tARWXD3<=PhbSrRHji682Dt~$(^d0je!{- zUhNK8t7<8|V3*5x%WEl^$qLL{f434@_zZH_S~W_#vJzQFthIt9Fk_K-TO}z$-Zt$h zC>ZQpw#l2W8mY?n5o>9L>SSt>le~=x_u+sZ2}(Pu%Iav5nS4U6cB2HC14%0E$^JZw zaF(pH<<+2TC1?M&I63$Q-Gs{dM%ujQH;*i_pe?H&WqB>P>+`5GJ?%SLqH}3c%KFQt znS3QX_+h~=o}brYiIyG-yl}XxGR~#K05aR$;2Rr#oXv{yQs<4NS^(7dR1$me5wIw7D|?v!lD&)sudvg>p+G?TF3jAgxJsjfrNO8CG;RcAp8Ugv9H>V5 z@P@KDuSG|h-NX_xezbOnbjMf9HnA0zS^iM&IEY*-$ii#7B&Vw!hw_##<5fNqUTS^N z9750(Xw`(WTg`tk=ZFyTY`pucIQMN8)9>N_j)G2LAbo2>-D?SG>ct^USmE(ZA0M<*YT+D zXgjH^^a&E{mhEj4Vz%p6*%%#DWR0|ktDN0EiyF>GqfXj4X)eAh4c?Q91=*P3?J=u{ zMfw$JVbkx*>jcZ94?@H5DL?EWi!#;nGVA}Up>f{pq!X1wckfW4L7pRGty;6+HiK1= zTxBG3QI|QLvtvJ!0cgx0>BNjd)tKdpbo*EeA>_WMmrY90>iK{GXirSFb zVA(Q_eFP(3J9X=l%Gtv6V_3u9(^3~17FKA9mPBy3>LDF_p&q;7^%vF@30&vWKoGgn zBjBHmP}Wl)RJL^aMF_vR$7%(?%x~hKoBQ&DCM$V`L(u}g+g&_b$pLBk$1 zlgVmjTM>z2*tP=bxmQXHZ#fS+GncA+iDG)?+zMeGk&B~M((4`ZXnkt_Q=!M4n5FtR zH8H@Z-Hx9$_8#h$a7YeYsjINZ84GOb1 zj}Apvqno?w1V!-`wA-w`!hiH{DNnY4`2ZtF9%m|LR{sbVTGB1I0$4vWwE8tEZCrRY zE~pP{xAt@@qg}($Ge*6mX&|Tm$SOyPz1dcycQR~Glu~szm>^(gJKm%?#t%|_nIvle zI|u)nfY2eaH0{KpWVt}|Fx!QM-P*pbWzpmUt9LuHkyI;&A)_KL$Kv5?Rq*MmX# z2@>B?_%jXv7gTY&vq7(_q-}h);S+@gNq!Sqy$*Z`qf&)1C3M%>b8X07{WgZ)VAv+j zid+FDA565EuqHLERX&zptHB%*2b;xWv-$*FT= zOTB?uh5d=3eaGaVlR*cT26x(h*q7B*Op=686pTH7Oc87dd`FJPV8Q8_0JBMGP=LH$ z*T}*o1-ZgXi?-L~#t!!|RyTV$K5QKQo^)8;HdK&=r*ia&y9oKb9BXu)sb?@jy$Dqy zZeTK1l9&!(&YaE@7Vu4J&HQ5J{Y@Zha-?x6J=LZ#yH8v5+eSFKiG0t-c+7%V%t#`- zd==H;c{sMrws5vfJxnF1@Km$j%Hx~pNfJf*g$e}SoaeAd9D4poPt;i^NUsUWs-c^r zx}ls-yUXk_;-0t^=YA*~%Na)~?S*{8=V(_bBiz{t`cF%befhFhT6+x)`I}~8ajxM) zYa$a>+p-G^E$Ghb?(Css=C<$yW+&s5{oTd^_zY8H@cI7TioNX?wb?u_XGTQhUh!kc zd<5oyz6+oQ&b$UAu*9P7RL*R1s-?b%RN+RuHG;Lao~RO)V`FC51})Jm3-Dx(Uvb4b z^Z9VA1JFe%+UqW_(1tEFu2H-)oJ`?n_!I0qZ$XBs58d#V1Sbk>u++r}Mg1vkxPbQp#$pLNbiOH7;*!9_I0JZ-xKrwTiKk(ui? zP};W=U;k8{_LP%!{d>j?;h!oosAP?^VPG`oaGUWx^%&UG@%$YJ8nxFgCTl`x`A@mH z8vnO*+e??6@3H>B{tm)7ebaF#El|Yt%0-EO#!3Bo+^Seg;^EeOO^Jb6n5W?T!nCy^ z|D^L}dxMhkwBLd4l6}VYqzWwbod}0?q`L(E-IvJZluenxsyY62nDb|!W+lV;oCtU5 zd7#1?MdIdzzp4f79dGEKX=@NM^ZU)9AfRM2^sP;Qh~+Y zZ*(G7L*1$$S-1P|Q$!!VJN+BVn=E>fT7G#Qh7pF;9q2;zT!!^1WJyPtB{hus#8I0H zUIAS%h~6JSuL<#slqn!Js*3JO??%**pjBZ%7@lwXW@@Gl8(4eg@HZxDX%xGOsTL1O zR!^K~nm7g7+9|WU8m@Z8CtWybFKqW&b~R=iM%dl$)LPYq%E`9Ut@%F5sqzsGj-W#P zez+^j;EU&XPrX++qT4{#wm@kPr8jco>mBS|sIikjNnGFr8(GS!o<-$VVX~a)b?#n8 zp3=ejke;uimeh8}y*v$Wx?cPebfrw)!fVwx|4;g-vzN+d+Md_aiEN9%7iK!8!qg=fx-&iWF}%$Rt+WG{k1rW>>Dkp z&LUuWEjwsqmgsttLWXS*8X#8?xyh&c-adur!_*27aHq0rH>1h>^pg{;E=nzaP}(l| zl?}J@Oy;OEx(YZ~66RrYbr<47S;%|N%fUII@9^F?VtCi6@`--LHa9;*`33(AbN2s} zLZ+K93&lWP?jcliH_ei977NYI{P=s_%sG>eCqu$nX_(&a$~3 zm1w+n=ZK<+UwvOix-9%FvcU`8%+a}#tNdGrU#f9U*-~BUJv!>pH?*5viCrwfhJB%> zBXXBzIW^A*=KUJ_wxz-ot-~>zbO+dfGSlg=F%5>+Q#Inja<(I2+GC4MVI0ZfZ z-xE~&(Rb~!d>s^Zq+OdyUP!q{8yx=1DYme|_Mo(k99dME6Z!eawtO07v5mY~U!`Oy zte=^OR&aYu1FIslMUHf+?69+On8R&I2`Mr=(d6{xEqPAgA zJ?BDu?Uwbjnjl(Fza)m99n+~t8$czO7VN^zEI>Ti`iOyhDMH1=K`;CVg+0Tc$29f~iZ6nK0v>5WHwb0Q79lk{O;*<*#~LuM zxCLj zz!zUtdo9tp#;RAjUXW8}S2+7xu8UxE`hN2~S;FL>jDBiQN-J7bpQ^b)OU}qT$&Lyz zd8}z~y0IGSFut6=tLvayY$CT;se+Yzx;@_+{)?Y3Q8mu2*Be(jv4+u?^-c>fg0$+> zf;wk(Vei=6FaaaJC%R1jwIBYdpWlk@=}X3}WEg-1*6jbDsGbrf%Q&=dGH$k1##c+W z1l^H0a7oH)FpHPxkbW7_F;p#E@sAoaO0$2k@`tV)XDu0k8CcJ#GR?+$9jDC}^XpwH zBi2}k8Fafkzns#=xA^m2rUWxZcpWw>icJH4cacLQwq~iA3>%s~^S*!{dMcLQ&9wPb z^V@c>BO6mAT2ltPAtQHdybujfsgNtnm&R$TzwlU`(mxoi#`-iOT<^HRFctLiT1X1U zS(d?xv8=6E&0e$iF%CUbsqT{_zUo7Tx^|Oa6zC+QzZQ@|7+S1+?#=QJWT}3)- zQ|kX_@pzEt(iQnc(|3lsPI|M?Ntojx96Ce|NHlR zmu*58e9}6@7u`VhVZ4?g{5fywIr3ZSX7hxQ4m+JfRGO2la~s9CQ?JxltWSGw&Maz} zNW(?o?gdy6*`=9x*41#8)6}o?dRG>1Y3vfX9`dn%{hs}k^$kh$40I+zeeF)cR%UE) z!^|V>psr{87BAso2~$$#ajN+-jkQ|3MfnS=>EN_-QwXebGgJ4toARaKWZuBwdM*C{ z6LB;e-~$gB+0RirXNg!mczmEcdnkX^IrKkijz`XPpnn?1-JVdAQQ9tI51{z$=)KfJ znzdj2%FysZ@VOfP#kK0fF`*kV$p)YfypY!hk$>7)leY~_&M z+V%}K4GZ)^Yda0ypu>v@Z0OmukX0Iic1mmN<_OdOQV|_A2(swl!z6URO(*fduztHq&wbXX`r5T?E=N0WQpJ39?{nx6bar;yDiHxgep9gR ziee}%C>R*Zm2=$~jusRdSH})tj9E7V3pB1^S2DTnA3j`W z*RN5&b)Q2WH%fmxJTmegL$pk)D8y|-5VwAgc)1W#_MxnoAuhY~FBzh{teTfYf`cn? z>jZ{~=P>BjDdTI$joZ@FGQJHL4@7yFusnXO{N~LY^l~a<3HURfG4?e(BFan$*fetC z>G(3w?0%KqdIVSrN%OJ;UTsMi*cER2SUh+VY$wSL3#U`ZG#J+U zwwwEIS@`BJFC>}Htk>w5Z1@HQ1b|(3o*Pm=c+j;K@5#m+(Sy=*baX_Q_6UIKd(Jsh zYm9JC!+dK!V{8(CP;c~0bOAWLV-s_TGGdLDHS^mJo!(Y*Rmdy%*fqwv-N^6kkfhli zMCX^YM%Q0G5B@QDleye4U31@Xx$Y*v-gvOO@v345xwrzbc%1!@v0lLXxGDRVfw9Li ze<#8-fBg92crnA(Zt6#ESo8Kdu;bKrP7f;COoxSoqpvA2GR7y>+>0R5?>f6~#jB9} zoSGm2=*=$JzZ~l%JTOv4yPN-7=X9QFPuTD@Z}R2ccD>K0&9xa?hxdnY#K) z_p1E&;*ftR**loBx_Zvuo)a#uXCT|iU=mh7kk)Bw)OQF7*5=zn$f>E*2DN98``jz+ zr-c{@Z&HbPC||j91;v*?>CkL2i=Dw7q;7jlFZZPm*E%n|;5>W&eM=HV1qy_%x~eMe zWR)vO>ea=r=#!1|{<2*Emm#F9CG}g~=bTuRj&KEt4=%Ua^{Ut)VRn<$n9O+)JKZRIj+cX7BI0P6iF@PPeqhQU=M%M`_2fCt}@~4_|awHLP?1;RE1`+Ig{a=UY zdkD_M)%B@es`ijRXD$2 z3@aZbNn0N_xjAa!KAp>J(YJzWzVJb}I3UVgF3vDE({--@EOzJTcYqQOc!@S;zGq%k zV&2-v5QmZv$?x|10Yh%@jg2EVJ8a<3y18gr{mapO=YtpUrB-h0;sP>Dp(Q#APSfh z=b_aQ&ZdDKH@?OzrfrvAk zg_!>GTTXQc%aTRJbM}*3@Vp$i2ld70)ydFBv+Lgmm-08Y0{kZCaWre4}7*E zv%}y0ueH7fcA1?Q+r`?imC*$Z-MLbn^JZlFYl%>!#>*|tCaXZem5bj66#-YOHn3JEp?xWW*|^v^ z+Fc;0r0h9Y?2btTk=b-u>;Nq*Q+1#5%*PP|xp)pUqx{6v&@SSywv(fKO9*g-kDT98 z3k`klY<661Y}cln&GFt63o9#PE1tQ}!q+}um04yrYYya{>)xV_L7j^XSf5-R+aS(= z9aQe25I@N35ChJFC+Qc*G=M{RtIqlD&bN(Y+Hn(4*<*4ro%u@XqxtE+g_)U|8_hKT zxKdpmSHXfLUw|KgqzzUVcDR1<&wiSJSkF%uHtny^mX?<4wwtgAD8Dn*$vLJOepl@1 z*{+9vx(`|hedTN7j#uMElTSSkIKa?09G0s`da!Rg?;CkXo(-4+OX7%7BW4B$$}#YZQ}?=>vT}xl_W}hjCz|$C zw=I{tW9#<&gv&4F#P;8J`JFHOnQO5lM0|N!SXhQIO&HO$MJDmVZC{M=OWH_g1UV>; zx(yzs;I9?dNS0#VN?Akr697lQBxZ0R#M8b4;AULonR$H%4lJ$Of=SBk^q}f2aJ*vA z{a>p%#9CWhJD3ZkSz8&*)?%|f>zzFfJ4ZWQX!`s62TNsxayS4!IUh6uD+2Qz{Pe$T zjV#o_Wl<0j6LCaGKD%Xa@)M=%Szn0TEcmv*GuJYHcQ3yTBnsZ;zs^>q#Z^IYv5_WM z5X!K`s`8N|fBwt}&esxzWv?7~90d`eYii-FWi-u5X6$R*giQnVD96H!(HO zvKyUNn{%x`&WlU?#|NNf;1C}emL0?z&PG-0zWt(@0+2M#*y(MT#m-3PTe_Gj=ZFTw z?Hrq-;bCVaY7xQNoZ_Ou1AC3*4=~N*q4qF}N;s9`PbU9K|3A@ST=n%lQGQ8#< z!GDl!hPixgx-I1X($jFU<3*xWVRyw{4-vh;)1Nq`1p|6#JI*7z^X@MJ4&vLA;XJ z8b?bCOMKv%mK913j7$HI2f^XqG_Rlaxgd)n7nl_1{+x zY2JG>O(#fr_u0hk%V!8nzIhj+-DB^o{?C8*?H>$Zt*Fpt?+B+_sPag+(9$k)QA3-%WXBo`Lf6xvlNx&-+HS2}w!w zW2Gjy@7_gVf|kv4Ro|GHNQe<7_cEg3M$0FM>wL)yp;C13pFP_uZEZ4o7rno~KeFyB z*xWkHkDjDcl9!*Vln$55u9&o|l`cVAgH`>Q;|i1VudL)35D-{A*NLQk8BENqn)3?x zMeGjqySU#j+GICYk`N*mPJ z#6*@l%QWi2oXUtLpQ$rcw>U~R_j8+Z{Ux^Yad~>eIZy~}?d`XM**3)d>Zdu9SpnBB zP-g+$y!ASb_rv5^`)Z1a4u4J95`Y8kVoh@k3p3{xEe(O>JITFL^n`CrO|Mo@_U`TR zJh7k37_=O)709Ky`izTg5v0s7APj&nyno%ZCJ6K|E#>xtKy(ZY&gA>e;F4DwhgVkj2X-=oR-fsbSKPHiLI^PcqE-$P<&3u|R^dmZ=V7`8r$05jz_%Yh>w1YTJWNFs~OKWd(1}#_C*B4rYi1^6wn46n#9ebtscZ`e>N4~lWX5~q2UEY_`cG)H$ zH;A5_n^US}{BiFwC4mV~BJdn-JR-8!d~p5n;NSp+Hz;5!fCbcf2&F251prttKw4{R zYId5Jg9X?MP;kVD=oU+Hk;S}4O-zuBrAGiVa?_cOojtP4bZmV5`;yb(@bHyyJ3Cxp zJ0Q}AR{1iOKZBdR#b|O>gT}{o%EsA{*0F%y>vP<{=KmfFW$rQOwXv~LhiQ1)HHRj7 zk77R>RTUyx#%<#?VJ}OyuYUP9na{kdZ=|QUaE6(US8g2R{A?*3k7#Rcy;`h!3x*6v zEd4Mp{eoCZNKDK$gqPRWGCyLQ%ZTk?9v>SU!)tqR`x+x7BXC4ii4GW5xA>D(wr9b< z`%}sT42B3lU~#H*$qD4i-m%E~`Z}b_>OZ+f@W0ZMnE3=5 zbJ_BLW+_P5gTIGXT|7jnuU)?mMOw45v29$g04sv3uf=;QT370}p8&KeF=|$<)z2HW ze08)qtlVgrkF-`{iG7tnY{^GHe*50qwF(ZSrUnPzSJ{Imv_e}Q~FI`bu<5tDat;2gI_Yf%pnmRtp4L3r5%GwtrV-H0(gh_bW|Xn7+g zEiLG@cq3Le;Q08szhQUn?Nc%;Dzn$G-$jU@AMuLDH%{EL6iiiQBfUi)b}d$x!HDjB z){@V-e4Hy$9-zVMR#m!WXk44|8?Y3nG>;F!z~5hc{PY~ZV|n)Tx_AvDCB~C6(B-{g@rBolIrzOuV%O|cHT?sWz>Wn@`@~62s5Nvk%xWq5K%1EHud#QtF0AW zwPkAeg&`+M4)NUey+86sy^ZZ!-oLwHf1E*B!ez3Cc5Qw193E#rP0`POBJfm6Yp0CXq6I4bZ`Am|Zo9uRIXegJMm}36$8yg!r zsSzPcg1r2EcN%r~|M@P!&1?R^-6@Jpn{LV4Y@ZNI#!gOA%8w<%6RxfrLZmz0@UdIUm1JomHHy{p+Pw{=HzR7Yh7hkRXgbVApi}zl(U}*;2p4=(+T() zIY=L=?DyYaKZB!8xX1u*ya7Xdi1@}|$=1G$*}^;U5+x!cN)h)n{PF7Y08eu7UDxx= zANP*Eha6=u=?1)bFPr;XnqyAuNu zp$0dCFb@q6cLL4I?j@dT`{^ugwzAsVAk=!>rW-)d$MJ~t!b#X~H8c3!SMINh|1PP- z%wCrOeO@I1=?zc>q@|{omX$#A*rpp8T~AN%TPkDjXMy$2%{JrG3{98{RGrY6oQ&+7 zC0}>{-=)IW{GSW3-M)4OAgNULbFuV%<;MWy08}OPno|;7|Ni>#z?S!I#+l8{>3~mk zukeSoy?9Cqq9;%l3cQ;IMuZ_BlZGrh2|j3C*gyU(l`WY)SWm7Yl^ywt{spM3K0c|I ze6pq5IpemnfjC_WpuWZjD*!4DfY;8>8$LchAokkZ+n<6M1|h&m8X|+b44A>}_VPfc z1lS1xcmUp@yc0%rnAt{5+e^by*_trGB>~|$@H*qj&jztdPZ-%d=v2!FuU3UBL)E#G zdp#NrDG34_n1D0A#W<;SKFWnC=0~FpU`P-SnbYAzrO&KE!ISgQHHdA z0A5>l0sRH~k2$JPU=*HUg%P<|d`$q3!1%_cpSw(d0K1!Lv53b+4 zA#wHcU#Gs}(b3T_8@y1P`BBOV0o$oiqdf?n$<@-V3buf`%JmRQ@ zSCRvN`+tAeYu;jCE$309&w;>olH9{?Ms(n4t$BH(Hk*_Pb^MkyZOMRf>3}6)fhG)? z9QYpa1R)0y1};KWL6RRNX&)uGfiiE&$70|Dc-R9F%nQ4J69fwSo<2PU!QlS87L+WT6N}hnD3reV9(9%?)H9?j! znw~J|daxV}X${iPezvLiy0qsp49i2zyVP$o7EOb%DnyjEoeEAtlxwCYEU3*GD|91h>5k4G?UV`my&%g0SUJ$2gAVgFj1}DFDlWWGf^lN#!1XO*(eVa~yB)BbWN@62_ ztJCqGS&}^Cd!wiJ)_mk3%e4&*VoOTR%XOsQ<6~G$se>`Ia`U1;m=$XzZgx}!Mk1{l z$ZpR&)oKF|0k~o^_)B85x)1+Zl_sofKTz0DYi)f!ySbSLNDG1FScv|;^{G3VAqi5+ zy`KPR_|cHj(BxNFYqdvhP1D`_td&1JI6K>H6QK`Pf0e5WvKKg+I>KUhO!GJO1fX7D z^%DDUSE!$5d1ei-E>=&KkFx=328cW;IUurndV9MVbHBfS?cwncpFp9Ql2tChPE1Og zK&sz&v;-&!TCmRZtv9{Ayl{&1GQe#%4i4E%pl*K#l?$}6IG6&!iOmkERe#^U<_RQt zLPEl8XJ@tcX@K>h$mr$`I$s*4`j0r2v0YEjvTe}A(Ta9$aB1jrSR8-bQo^fqe! z@Z*a|p!M+`AR#D>#-5&u@{DxTL09Q%Uq6`hezX*?$3Znr5PmjrY{AUQE5B?hC~I!O}p67Um|KuFj6As|5P6pPd8kH~$OoDw}m!a@E6 zYt76UT31e#bTR`$w7bypfP$jsHP?nUPYE3Eyg9+IgRy^zyKOn$FYPr~C(xJ4$;qJJ zP1!$@%D$JXC@qumi2eYNkBx)!$ff%2xOxw7Q(-=}xQe@=h#z08C z=6bwd`St6!Fp4LpizSBeWgwGr3RfTxkIe~-wj;fN-~BIL5RW1kr~9{W-~L)#DfBGeK3w?IVT2(XovOdkTsM?-jraVeLeU>9gaFS%|RT(5t0@1CP2;Dn?h zF$lA@!;>rh$*HMS|7rQs#@nZC-;+T{Nzf3Fo{x*`87RyM1cESb ziZy%i^R&H%t!*d~lOh)%AAP#j{MfwVB_J%`0#$S~jNs0l-5%cl*Oj_By@tlC02z)W z#Gy-|cv6ab9XuOQ|GyY}6KJaU_H7&~LuE`MB$QH_GVIJmq|&6wSSUi7rwp4)NJ#3a z6qO{&6hg*~$xM-X*w_^|GSBa|&v~Br_dM_V{nz@RrFDvJf2YsqzOVbbuKV8pa^7}A zeT~{lA^tU*R9*>43vvB=_os@1fmgR3bQ3thmm&4$y~#BZXSxWo77!G4%*Cr$LjWQ= z#y;Mw&1$zle&R&`)Pe}3ZB8dspauuGDS~ix&6sm8M}tCU`@QeBS}EsAt_oO8f^iL; zp%sSa=F$H7jwUk;KJz{*z)riPj<#z0pQpRSE{g<-@@}cs>e8hEeK9TMc*Ff)pW?Dc z-&IQ-e)XoMrG=xM>qTyb1!xC==Xr`p@i7@*-?!w~Z6iZZtYiC8!xePx3nhPSvO(>5 zzk$3kPl}-aN!VyY;2WmW_yDTQs4jo3x7p0fIyEFge4-{;f=GaN6^*kN{3mutAz)`< z1q}}mi-uQl)*F@1j6$oxX?&42^RKW_-jd#W>n&IZM6o!pQe``9YlgUnxl?2y{mG>j zU?V)vqaqy6{A(g-aFRYM;e3ZQa2ICBI+3skCg)RijHJxLtt9C)Bj&_6so{rH3k27n z_wR9WjcCsa(tNNdG!I|l+I{!}%f^gFA zxX$W*@8aSoSJ4mc_RW{I2}ZZeE@`~H@0xZsrxRcY=#(YsFx^JF*X$Vzs4R+mBLHrz z+HA9N0iYMK`Vsby86NkSd&MI@@Dk(=ZvQg{x4SX&4qxwRWg9)}Rmm|*LBaGVufaDQ z^5badd(LnHA8!m!gD40ev$PaPbUQ;g21((NqXq2 z)ZRJGKDn2U9%;{`LIpqzO3Izy@#sk%)V{h2LYHy?d_dT{MzOP)0Oz>p*C7M_a^+R~ zcX0Fb+pfHAJXVaA-f&mN~-2X=~jS_&>D2 zSNhmFHvA=07zFLHFO492vW*gAZWDkZ5}It%v$J>Y+$go7eEh)H8gbDqVeN29Ik`I^ zpEm3EE5v`drPj_fGfkbH`}pqweIw!OB?@<65YQTPHU>W(07(n7U9_;ciNC}*2|m}W zVLT#L6nLxaXIc zJlD&q;i|Nfu68>|sALS1MN!kniKtO+CB(;4(*}*ibn5h5)VE-H0j9v}MpBM;v$zPo zJ6hg>)p9|izZC>m^_5KEhZ@UJuS3$(LftV4-cSh@{Fvkq#y9PuO>xf$3G&ye6XMZj zWA4~#g9xOVMV8?ngP)7IgfcU&c|cSs}w^-dmzi9s~2 zEfj0`kuIpx!5b(u5bQxZ0w1vik<|Q;l=t4zcNtA77}?pOKu zU#=+s5DJ-QB@P@ITfE6I+9RBnnhN9&mJiql#WA=5+w8j)7Lln{-IRj=h_x$)_oYhn zdX?506jdqaP{!0!e>T0QG5U{JDEr^u7tl6B4G7diF#w_Ko&txOE^-ePR45(on^2-+ zo1sQRAqFf227vA6=Zk{eo2a}KB12oMDd?2bDd#hgT=n#vr+=P))wBoXCQ4;Q01%hR zz96pgI#Q78^3Hwx_5oV~9Ev@<3;JB_(SzPUy+C}AbdT;KJMD|AhG-QEbnN5v%sH=i zbaemP6mj(=Qq<)^j;^bXsBhY3woJ-+({eXC8X-Bm83TiUS7X<+1|0*KhXN5m0DR9^ z9qG^tAz>@}S}9psQ1Q3lU&<+$TJJB!cbPfxrhV(?O`Cv__L`>Rg1Ud5GDec;(~!LV`P@W2BCxs;Wd)V%rEvY8vQL!t7e3{U}>N^k6|N`HL;IX6V7BI&PfwgOeqE7WIs$w9DCnq38l=XtcxmB2ORlza8M5$A?S# zi(-q7cu`UZ*MYwn=UhKZX31^o%kCTl4;AaTcohW%b`pV)1u+nQ93aPu;Hip2C00wE$2{2f)}t)YPdgxSl{E@8p@ugS%*j!I|F^#s3tk3tTV zF*ZDq?fdh|w-eLMi^XZVY5h@3;-(@fYWTvj8DU%`^ zQB{Ug3CXY7Gy_CtS{rInE1WbH>O*mneqseQ3?>V7=g2b5jh0YZ_R|g)LY8U1dZhfa zz-us)NSNPk$8HYHww7O%RB}CW`X`IyhmH;>G4yyKWK z%WQur3oeMGl)WTjzR-XD`c1oI8%p_)(UZ2#2U{}Bh4&MO506xz}UQj%>YRxe>i!vAvJsY zh4OXrXcAR&5i11i``BQT50RIl)EYJIlP5f=R|f?y(DcmQ;0Ht5eO*=Z{Q3XUtzVg6 z=4mJ>C9c%hXcFa16mtZ|LeuY34yIzu_4w1GvTtYig4BAR* zvYZnrIKZ&!q)aK=objl zROJF&UrkU=JUU)qOiEt9YHiVc?U>wgO&250Utn!M6cyEXbaVvxSCj4sCmoEb1B3^t zz|jie`pECwuh!ZCUiy48&}Z{rHJP)48>1bA^4v!Lay{L?(FO`1*nj)fjoRY^3vc0P9$<4Pi&hKonW|d?TyO z9r`Oe`huC+6(^@igesmuITe-q>FKQZpVhI@0P=s;?h?wHJ)5Ne!0EgO>dmqsR!d0S z&!0b%It5RZf*}>`gJqygY^m<*>N0JUct%fOe(>PIGI#(0*zp$BP=RtBGz;nX_he{# zAczrCfZ2I2c_0}1O~>!(K4(m8a{xC6;t;N-Dq=^~kTZg_Ax`buwJ;NLZIE($E~Wj$ zr@z}~gP}r5Ihy;oY)&rnpyv-yZ@UQXigYZ(D_R znr1xMM4fG0b~ZV3O&RA7qRM>;83L7k_+C)8$b6_95ROZpKQ6eghPTWFphne)g$-;8 z#QFq;nyoD}s9D64gfmySz2FKvf@K{&HHyp)2H^n~CwvO1QGslcZh_#zx?=sn1aig2 zB?^XG3SD}S@0=<14-;E>SeVoDywie8P}yhj9AEHU09Coej(|=C_tH7!w^JVsqX{x+}sJfFcO*KO@Z>24L?3t341hQUX#e zZUHp~oqh;Q1U;^#a%855t8MRag5zx}?}MO$TW3)8hpT8hLE>~;Tb}2n5LGGf8>D{I zZ>-HP3=p@wYc};3mN?dbvyDu!rjWC}TNzvT_4{<2GCRkRxR~xT2OrjqJfD1yNq}); zC_32!B*E!$ce=3|*BtGF8e2dcl1YH_4?^K`ifs z93?qF?Rar6I+cl5Ti>erpGJS$QMc^>aSvm_2z00LM@3&vP zD#Ob$$iZ^ODCNAuec6~3*qTb(wCg?^9pLfZZ@cT+ba|$pNeqoOlmq$`^ftRvQ#zeS zqrSb~E|hO@LO}DCfcKnEH`L5#b;oh1(27^jP7aWT{>q2mLY@$%&Fb6c{Rpa)P-I_g ziZLt|mn6BV3ObM)XhGz9@S<~kbKO;(mVj~8y6Xf4hQUijtas;h zyqa((QqOj4=z5^|!5bGqVp&>Rf+b5@oN_5f4F)Dq%{!xmoVeIK()wp}MV?N1 zZ*M}i56S{iEAooa8Ht!WXVAMyL_;H5W5`$N2T(9T*=~`+4SU0bCQp?(R#ao)QBhY` zw)wTaJ(EN|3kW(NJ_tqZ<$aBO1EWUFYoRN9xHswk)X5EGe0)SR)J?moD_JfsYn6^0 zy4;6YA!cov+YAg0IK3>R6jRc%XVJO|uZ&VYU|Rwy1kSU5b_xuCu4*&`vg8)h8e$)m|f-Il$@#7uPTBJ#ksT(fd)BLv=z{QLXJaO_7r0>?c-J6y`d zx3ecBbrY@?3BvX-jN?HWx03dmZqnv>$TnxFl+!UL zXK87PPK|Y{hh=6w+}(9{M@b9m5;B49dG?-5Yun{1M8n-r82sD+(wPko=3E}j)8lW} zwW;^tgp&=j%ixrkmpO=hfFRg~pC%imeYMH2dU>NzPwdeE_&cPVV~LLuSFp0ro;?e0 zk4JsK2+daDL||7i1NZHyTw#K?7a ze+YucT5+-E0&r_Nq3?s~14XpBw_##pLV0d~x4A7m3fMS6*)A?FF#RZ;1_lPH~9d zJ6*J-?clg;nl5db68h{pW#>w zmiIhXyK}s}$IbUWBYQ5e)^lD8A771;&ok^cj*$;hUE(FqcUlKeu=Fm9_73oSc?z#4 znh$PYo9C<2UY@quxjl|lYF=CsL-dODoby^UeLENHl53+}cC2`bgM3np(PrmI=Rl9u z0k@v{&bV!RU1JUW#+9t&lv&gU<;_SlI$Xm=HFiYzNph8(^g=?k=j1W#Cw#6J-!x?T zFH;6O3ud-C^yUd@vF`t05Gv`YzYxMBiVl#m0AQ{P2WV3OS|E?W!h{`;;%DZD>8D>< zl}s|hm7z3Q2m=7JnnLV6Cq8a#yulsvGyM4OGEgC=;oPi3P4DNk1XFJD?uWGn*o5lh zBJjb`Nwtl%+Ye*?ZlQV^w=S1f2!ks8l8rc|Bp@2sK$=@ZT?u~jQf51qVWvqbth0C0 zL*>QsmMxW5NL;6Urj>AM7~mrd-^D}ZK>5obJLx4gNkXZ9)P0gFLe+%-A8*csaV^T}r zuI9BRB)AMN!b4Tb-{0M)UH?M%;K9Q%{&;&Em+EM|${^1zQQb=rpy2Hficnb$HW8l- z5sJB;Up_r8BNsC!PO~enVG53Q)E>ZAU|Il4n{2iK!@}N#^IM(>QXTB}=)HXT@(_NN zVi`hcgxLmFG5hIK(-SmC{(Of)SkNKmZ!9#6=p5V45dy~?w2kJ^S~6-{Cn`K)vO!3J zrh+Je#{~iw1O|+bRH@p~P>?t5)py&=w|mc?RIWgsk(rqZ<0gCqUuS1O+JD{1G+$$p z0rnZF1@#9*qO)Ga1j%%oy(R~&l{O#+IGoHqw zt(qneZ5%_Fy4u>b!8`e%pHuh&ciWXr=XCmO*k9>)zuR_auewImf%eslRjQ_)mOM215BzRKji0)rG&9rH+B3I=zVB71N zqawEZp2>`J9ZLN-(wQbEWYO09u5g(#o4&r$^hJKHX5?As@RxI8gy+_TxrA+=lN)>c zM#rysjivPt+TFTe6VPILJF#IZyO&V!V!g`akeDC-OSNHSZRLR3p|RUn9(5hL_kNOK z9jnr?ac$tT*=mD?)2c^NmH3gb#8}mpksQy3$DD7^oFIScAFOR56V_&;7b*?Rhn6?? z4(o2);x=r)c7J>&#$`TRO-j3fQ7?j%r0N$EOu{c)6DuejkB#-(%NVd<~q|R9;^wqN38Q1YFN8ZI`YD3Nb%;2rX%wm#KoNs ztEy4l0k%rI?>ovS6C0dXlO?8ptFCP|U#M&I)c!^u*C@=d-?@}?&TQo*@$1H&Uxwas zKliX*Ep0O&>{3;(F<2F1Ud=3+mN38ahup^JHGA32YwP^!hYqXlTJI{4nyosh4$kxj zcO|KdYo{{lHF%lLFV+03b>)N?y$Agp&fbuH(>G zuJ&{&F;MN9P9j16Bi#eK#UIp+Nlc7)0e?YENQ1=xodhG%7GJz0I1%1NI$ z!M+`7NzV6O9y&TV*=EOmm9JU82tFA`_~zTK3PFs1*HX3&A78OTid>; z*4>ff;9eni;D}hKz;WGPckbL_x!tNsdSjMWLrA9ld|W6PHNR`%zNUzQ{A;0-Hw+5XtR>; z<_ZF&bT`ceaO-!ZHY&ihis-Dd*#jQmE!pAignos?7ssbcW%mS`}NrMHZ+F zP_C4_=icj!L8+u_ULI1tf$>j*Lpbs2CEmLz0gf6RY3#(^!$&+gv%C+C2=tb!>%}+W zdUBmeckFXRrFNA(hx~9T=byF(I2d(;p-ky;H;^WE*v6=K?lhRDp$IVrP(#vezNt1M zG^D-1iBq@N z3LR?OX1e>jJmL%VP>?%$ek%%8v0jeLQxe7n+#FnEB@=}!*ODH{kibCgbPw{>3U*V6pvOgPmRxTUdz%d!r-8P$RD^$N= zCYu-isheZl)~!fTgo$jlUm&;D3@JFqVSS=S1+)MO1}eBsz+}MG*FS#p6-D-#iHiq) z!rP`Y8iMznig#PScF3Hfjz!@|$Um$FSS`!T1^4Dd!H7g1g=3a#4Gg_e*kdXIu$fkniq ztAfWEXSq?jM??Jo4aUi@#JXt1RtGN+uMYCit&J;|Cm#_q_l?@Iw$K*r^Gmj8ai65w z@&?dVQTq-##@-0bSzUCik0|)E&)hdGXN}ab)~%~py{|WK-NvDwH93iuSvwzxBxdeO zAVi0ig&ocm^MYz)7X!~>)w}6R!sNC26J{#IuW!t3He3Fk>@(i_oY?EEvcT-H@_ppl zTC=ztS4e6;D##Q7EyomeDRf*c+!HOUhu862E#fW{!}eHwnjN&wzlYHwiXrbwbYgK$g`Z`zk3l}SwnWe4?ahii}kI#P<_&0@dPhC zqmta^q)CW(SV__fw&OXU=9Y+)<}mmGl$p<$ZUf!(C)%;{kk9;tXMm3}N;7?xVY-tl$jP*7o?U?j6y-nQe^0#&ykXndp%++nT)nVs5Yenq4;4Fmp%n>;2@(WLe zK#oYm{{;Z&G=<_bf_j8rvN|kz}ymQb!#iD+o<1R?#VE`2e3z#D|&Y@2Xe#fh2dQs zKJ)!S95T1N{r_@Q{j;<}h476cY8xk?!p*7PiGrN8A|Ts*b=>Du?+xes93i(|O}Dhc z9uwdd5HEqfm6I#Vhvq>zXqz|-YK9IPDoYpA7k1lvIi!38+~{ifjS66EzeDG^vUpK?t++S1;B zH1blZb`vQzq}qzky-gED-x2Ute;Ty1U=xR3=#+T$W##fEl-zJbz{IHz%`3Fp3M=%O zq_)3GsZ>(CJ=NiP2*ot)EUx=G?W%j`LV^vP^y;o~0#uUU(s)&LaoE+zw`!V971}yW zge)MPXDKu&5pLi?Q za=^OVWzMgPU3SbYS#|8tW$7m{kHKO8dqx3THV^}>W}rGzyp7-V)~dBnIPo)B-S-xqT*Z#~+e*cstL;wU zgW~oWz8tFL$J2J8PnUM?f1ub;gR_1&QkM^!E#{0b^NGCUSV?yH^SpPBm*`pB;54#b zX{w?3ARna$+o5+bhOVCO?GZ0>Z}AuT`Q2oDm-4WPmognk>kW(R+7r$5U5Yefw|UN(^Hu3Q zlqZt45K*5kpPp%*^PCxBuQ&60ez15_OyY!3kVE&P;+gSO7shh)p}bzNs6&(dZCzYF z^YMV=$I>JZIX~kR$mM2uxBRN|#HS)b+rjcDoZJEXhzp-^lJ6!%3nm-PZ+3;!x5jg4 zd-Np#T>WoXFl8s!#r8L-fPrHnK>$zuk%e4}svU6+Z7gqKOh(frG{Tl&I);Y{T@d7{ z<_#HkY3@xh-9lm(QV(=hIHB;IYLvOtS*BnUveuLACDgZ(HX*n&0@lP|uFajDOFv@z zG)iYI-P|659NM$xfw&f3ESo>Qpkj=}y=a^GyDl_~KW^Ig@8# znYQGT&+iO41s@7@O~eMO5%xS&POLYKC_3^yf0JA3u4^1|d!J^b<^{C?dnmLKZKx%T zr7#_cM+-mFg;^gkEdOZ*qPK$G==%EE*1k*Af`T1>bG2CXa6?sCpvN?`u<*e6g$%B zM_L-n{o8O4;J>z98@ZT2%UYW(Po89j397E{1e8m(>ip^2ykQ+x#Lh*+&%tpm-0e z8ZuW&(=UJp*JsUKNK5-#YRXL%3o@m2f}-#oA~tb2!tv z@sq)c=3mnRvg~a$g0fIQn$O`@a4^z?N<~-%h{cJ(!w<^(k#6;#CUl0%#h~bdZb;?p zojdI1;87Ie6Q=CwqJ0T8{@s=f$op?GxuzFQR<&0$yGEGW-b3|Jc>bo{9=+F>Mcfg) zuIG?uZonVa%%7xq{@^2BW#n1$7x0v5HqIqpDmAyLyIz=JG1*+}+ z!i7s9ieX_GnJLXar^K*hQ0bi5BUfIoIkotvi=d$hd_dd_`-^)g1>DA`(m75Qqn!@j z#c>Uo8T3FZ_elKd`VorT$x&sMl$mtne;V5OZ&FQs+r9*yOKgc`3CT9v49-2^T1GGQ zVF-9UvZ|7jg2KN2+q?($5^uGQJUUen{1>H1ICRcqJhDRNFu?f_yENmZe|L&CrQLaF zGQXp@n_uzAJr2{fQYqo49ljA8zjvoa9I^D@k=U{@rFzhL_856$U0$(oXpUU&vB|Yn zW%1>psb@QsYFs!SC&e0{k-~a!+>vJ?Wad?Hp9{B~o@Hy)C}7&+;z5&8CNVLPA-^!2 zI$yx&u(sqdF)O;Syy(-P-kz>?@&S{-$OJO|`JQ1#Q^&u)rHoH@#}(E;5fwc&_dd>{ z`*$kE+HjoWGGA|8?4LR4)xdtO^!3Lee}*5u-^|5~3#Nubs;!GlpQz@QR#499OZ=%E zH!GN<-O|15zd20-j*JU*MqraXR>}$;t)T!RlmRC}VnF*x^7mJ8>mW%Z2rl>txqK7YFO zkO2iUwGSU{11RzkGSb@G(bL|29Zi(`;*%&0HrE^+4yvj`UJ^x%B|2ML^kfEsOklqR zt8$lLLc0x)*frYyQk5 z#|m?ALc`rcdxKx)(s(iPVnKhIZaL2lB>|AX>FxGiMZQ$8IBaDQ*wK*}Rc!^*;lt`c zECLK(0vm|5t#0l*G}bW9b)`9B@(i97@Ex`X{0^&!xwviW(SOsvkhYZ<5+qiVY7&l={={^4B3*fog>je6m8qFA~{d)O{({YyS&@ z{%}-$@CxFd!BLE`4Izt1c{@N_paxoLnU0Qb%W;+9&l*<#ZNfn!!o81vTMJ2Ua0yg5 zDvb58c8R?zk6>;oUb*zpE1qHkImX0xZG<j>iL(gi7ClhX^Kl&U%SQw>HyHH&fd|%|pJ9Yre!j`5y zad6D9VX*3S8P+Te5`n$r#J5jrKJ2C|?>3HtcMk{-c?te@C4s7ol9CDv%v~X+*|SO*GJ_i=bWB|(q$R}c%D_8imyjr-$wO0wW5G3e`b6>W9WR(uI#kBPLjJt-kPqw8>Q@5pdpbkv&NEvG=M?IlRg=>T zkRkK+l~k-ZB5xstHK{s3H|yggZ~2+x+|e~BF(c!LZLoyu_lOE z-+3lVUWrv6Ukdv0m-Rfy-ec~gsjL_2*$;WA70wzJXTP3#J|3Mq6y!xIyL(#o!0R!1 zC(b8xiJpwT4QHqYwVOE8x}kJ@&eG0qBb-v5Y4}1AQ))!mpE=$%#dXIt9B1SzF(+wW*0Vv_hk8u64y+Ng$|Z=#}{?Yy^yQaE<7~ zJdo8l2zN&Y9yCN1N>w?z79TI~MS}i(QIgwSyqQtkea%}hgg^)^`?1i{y|!BRS?WsB z(!sI|1=HrE-d$Cj!WmwCDC_U@KYxkKx^!B;IPl3{hT7dM3K@KCE`6gO{7?N)j;7BO z7mgLk&G8ixZ)`|2n;OX9VfHz}Ben0Vq66t`%9qrSehSSKpWK6{+N=0-_dWVxIm}ud z@k?3dDw$Hbxr3k7*VvJ2erxpzZ%>Ipsq{n25yiVsj0tQJc573zCV3NLSBn1lnwWaC z81&@b+&6Ca`H_cs|I-NHynernbO-*qm`xisd!93T|a&NA?Qrxa5)H2iBOMddc#wPPdJ#S z+D7J#^`rPKtvy>b#2%sJ`K3|H8TF?cFVSe~z{xnOl&N${d}aUk0vInbXCdpksWQ>e&g*uj z31;Y_`BX2F6SeT1Jr$dx5g6``*bJ@mqdG{qShU^U-9LZ+1Q;rTm)eHI!@rL*84NF46*Mvo%h3^xkcD`NluxZ2Fj@il8m;WYOd8w6HXs|} zXIKjg3JM*SONm?x7{LZyMwNE>s+t(VUI*ICg`#uvH{C9dkhiB^gZGU-@JRRj*0QA+ zS_&nm{U>m>4dlbeYvYUmTOYU%xV=u)@HMZ~%)%#li7)h~G!(HU??{RfugRa$`v?dQey0 ztP&dU*dXIi~D zIq-Z<06qCh(Im6@>ddjnQY*T*ADt9_K&CCa&5_u>;}c+W=vcWGh3L->8suGrhD$Dwr#|Sja#v;-P*zV)i`CBJ}%de=M57Jv+_gg zK0B-zv^{4{xYJhKq9;pRSZYliFAkT6(s*hPi}w$h7u+;h^`rGZ`kC9ijNa&9DP~h8 zEyN{kQJ^doyI29d-?aoO)Hyr~C*eYe#Zn#ikt><#o1o5G0w9M|3SV%lV#)fI<)2AH zM*`Y>c@S{S*B0B7>}W!6q0YqH%KSxA=i@_L32!yEV-uqfg;6wnu)*{~;;!yryfl8S z3raNs?cqhMGijvy=Ze%&gDmWyPj_J8p_WM$pt1mQ*@?Pgv3BrhpI~78b+ar$e zUKiKEfHJ_89y~Hm0at`CLijDzs!$ukw+uSkqG1Le7$g=*nEsQ8{eX-d4=Y=&;b3yGihJb91|drYmM?s2=!bB#XCSB5DJn zb2#Ur6^0rR!Lt4?cQj0Vhe&i$k}Il)1RruPJf2@#<)Xhp*y1a%Jf`ba_SL<8^EAjB*y=@1kcK#urAX6Cij zVX4MaLgq(FgKovQ@josJmfq44p$jKD!q0@A552bW>D*Q5S1|IT27}Kd-Ecoz*Qr_5 zbQ{D^fNf;Dumga<^Ur%1_>E2m-MIrv=+{oTH(m)fGpu(SLqX`eAL$wSWrraHcv%Rr zxPJUL=wJxLk$Sx=WR*Y-_3l-w^A@vkRN2(&F4SlVVb;w$q!1Kvpmwj?8x@*qBLU0s zYN3q*DGp7;`1PyD_d8uufT_f-X=-T&z7_q!7JE5p1JuzviU#OG(tCy=jW5)AOW}o@ zLbTB}>#^9|vM`j!w2$W00+v<8H&LrF zMcX(yM{tJd@WB+99Y`cd{ovhF3y}&SH(;Iu(k#4?%vR{NL1;$lhCwk>($aKjNP%XD z3_p%$CMv62SQv)(rWWtbn>WAA%#6CL5lkQ=WaC{zH0i)u06$PydFR;A@$sOte*Y#L z`i7~Wqoc2Ha)8l}U-gVd3S38XqquCg8pX}K@4o|lHB_`02Q$@@^wCPqhE7flq0t5; z&=*TM?N`!W$oY%fxrwn=Fiv6;7NsP(w{;Q3rKF^!e`=~YpQ;}pwmCmPKhpV+o*s-Y zDn;vaq$&FjdMjdkXJ;r(b-cLTBayly98kc40$>*vGZGo$aq0s(PR+)s<81aPnus$r zOwFTlx8FUVbu{_pVf5~SIlwt1xz}C6KQT`0Q`!joHcg@C5g;6EYf%BOL3Y$WC>!w* zcqJgL_D^~ON51{?;G6y*FUZ2ciiRnz%5z^(zEL8PVevx52<#ff6Fj^J)r0FOhyFpf z_arv%5}Th~t=l+1M;xnA&;LEWm?omQ(pxb?ob#>a_9PIOm3_t;(nt?RI1jPTjrVB& z9*?z~Y*^%)wDTNOjjgaFT2)QU$9~QvUy+;|-1MgE&Ezs`Px(Qzd1Y< zTT33C*?(pACo|_&evaLZsF?qW`z-#9S-@>*7c1?b5C_Pf7Ad6_YBVx4t3>*SM%L8b zeWF4bc!Tg6I2pHPJmBVI$Qt>z`>9$7yIwuvun|Be`Fx|Be zV+FJUn3D8?tY7J^;|Lkl8Q9+!m7D3Q#1dLThX{w-8hk|sbNOizfe4hD7+k`GE;poN zDEj)`Iq3TM_GkaK7tU53{A2ww%+M<6xMsB0Mz0*1Wx{2$lct0I7tx_`!Ns`OH2Pn#gr20 zY-$S?mgcic^GNU1_wO${IkAI_&`Drf77Y?UEaU|E1G@;=LK+%@2y#gSrlC_4LME*w#^H=!g!Cq)Auyz7WeSL1LTl#)~(@NF@uD7esA_g<4j>RE>zgq)4M z6((4S=}Z7XHZsG0Y@e;g9+gtXPdtuBg2=!CaNq<6Q}o|rRZ;sJufmsg1QVem&9TW8 z!l_+Psi{H&5kNe*NCcptzGU+iF}E5tH$qLqyp)$W?>^6}yo2*ZxCV(sJunjc%cJy0 zh$EApe33eXI&=r5s~~w{vdCtz6ZUdTCGPQc4IfaVgs8SC*ETJ%KRS|L%UV{}kVOuS{ty?r<->I|ObqX~0OMdjK~CBkRV@g-aq+>oRMcyh zIw4;|bA?rE|3TiUKZNmiykY40CPiusyc~FkSyS*yGA5j1!al)dJ_2lt)c2jCg!5eu z{KhKO_@LSf4~ZHmv0Sk-@=WG`#z$ay!Z=UclBD1gmk_lbC2RNrKAdH!6qZJ=2a%7# zOa>>$-e8VUp5;a=Hq8&QnZq(HsoFt2UXjPT4j_MW40Swm{#>E;?xt55cEDE!P>ou& z4`&uYbq-bmfmFbphi=rQQ1NzQSV=x<#{wUq1vRw+dI6r21uTw~$PhIQUKQd95#(c0 zo$!_Xn@HJI866~3&@V%CU@%)Ib#)~BaL9w>y*>g5H_)WEO?3CJv8RsBW0-08fqL6r z;}zL)1$XRJy*AS@EXkXHt|<0qYB}k{DnVS5^%)sAzO24vax__SUckF=Cg^h+Z8(X& z$Zzw;xb8VwV#UhLT-oi2{e8{m2k>WwjV(rUD$cyBLe+c2*|lFw^AvNF&k;UxF6)W~ zB?Gqpb8;JQInf}}La)9FD05nViQfmYxwfGJwMQ9w3b1WwTmx*lEuL!5>1ZT}B|ngw z&-btn@X^qqz(UM;RZ2S`1ZfT9DAZUt9o^mwd_x^qgOSrG)HpV6a9a3t8TB+g@5-HZ zQ%YPi$Y&^vs05W57YZZjV%X7esbi!?e@C|6HQ)QyR*o~j&ta4-X6$@q;sN@?&F^F> z1?C2h>+DctX+4tvL$(Fd)EkG%sPG%L= zzWbJI9+$?N8{FXQAziq zbYvmtJfFU7(j)=%!A^AR;TE}dBhMg7;SI2Lr+vX5V|Z4<$}Eg^y!!fiy_Y)8#>5}# zA_`G!8NbDrI8a4cnp=_cj#Ti!IXP=VCL9Vz7{{y{R=7=$TpM$hfA`&%S_5Cn)YpL} zBB@LhGyU{rG0r!U0_w)OjqjeO5H(0(;wvsH$q{ZvjCg#cupyGy9Zv~72_9T_-2x~w z46MVOqeTX1>&U0wosP;LMLQT@lv>DOAWQ&2@obVB5y$9qy1S{Mq%~tFg!W?$$cN{pS$T`7{b0nJH(-I zz;8pEFHga9h{Q*&ou_jPf>2Q72lImeQf!2V)I?dZR>n9ETe#|9UGX@fxvmhR}nn zQGQ;mlkXL)dMfyvy&N=MYKIN_Ic|~&zbCZ11e66>-Cha}{Dnbx!XJ#t>)21R1&Fe{ zV4fc}_am96oIm?=XGp&Z>acL9C1qnY?4%gyq!$)$2GRjV;G+_O^M9_#fG><+z=9+}fUw;<_P*>-`V}N6>M%{$6T(hmR%THdkqu-iP@8ZHq3{Ei_?_-1furNOsx1B# zrg>p^5>;Zo5AKCu`%X5-J~X3&Yy6R|z1!`S2*=pFTel&Rn6JY51*~CarjjlJ#Er-@ zS-IVzvG{Bj^RbW;Im{)-fUC-z4~iK8!>K?Ng%0cztr~yK;HX^Ts4je_ax~w-z+k+c zavm!l(J5>MmLM73xfhR35?exu%T+|p{aZV;-$c$qlz~|vfsDG8>k;9UuV))+5%@4u zCegdAwIND2drRIGZP92;4 zuG98>L?_Sc=;eaN%<+LbVq&20k4=J`zs=`|8;G%Vq;{VszWKG6P);~AXujAX>uGn; zaZ}yJH#-b}kmA;|4zmdMX)eCplSoM`-XZhsb3oG060h!d%KdYpeP82>Z-y4HZ8GEi zP^MB#Thw5zFl51a59@k@eJz*>SMSNZ<#S8p&)47d^2sE=hP2+x>Mzx_;-t2sQ` zXQ*W~-WoL-rian?aav0{`)hZ^R9o46+u}H8T?BE3|>5Bt!{R zWcl-j6ewY*l|?t?rqCXVxQ4SYFGxS>n(Dyn5zvduNT2eBO%NRSjW7GK4V?3^!{7G3 zF%ci%emTn^-?%rXfsCG=mqL4lEDpWxW>BwW3VEv-j4lT1=Ae#Pl(iI1nZeA|(=Sna zznXjwG5{m=5G80Dw^r$vOP82NR$@R~zjI!PkbcOEcW}%#nd9!G5jYsvi+lXBY^tzQ zh21(*jd+dp3Vhv#1aUxZ`n9#xQu|FfgH{R#jI4;`?X!) z1>etSdiH2GofP}9vRx}$!}p;>;8RbsKe+YmkSRigZQ5dfX1C^qVUj+E7zNMF%y_q| za|mNJ!Q0$vJi2Lt!NLct+?}5HkKW#`!hM}XDl}c(s{-vio1e)p|Sx< zY_GFdBO7qLfi@JZabieYh=HB-ndMwTwRyKJM5~_;!$6#JRYV-UR9Rsd;X{Y;jIBL> zK|DILW{72!Q=`zViWQ-7xGQ_k3Fm-%pE%2LUDGm^|$NPt-fCx z6r?8A!b0D-dDKb`B-|;3wDXtDWOys^aTd2Qu>=!O#`m%y41>eu-o70@mgUfC@L>-x zt3*Qz3oyR~TP=p|`Si9VG&QWF-UTvo)tdK7$5*^A>{DkNOOVFS5OGNrl0&wT$} z-v7{k64aZHUYy#iY;1l@p7^?>j;~#PW6d@vC(5pZKaZ{! z%-eUZeF_MxN2w{%i2oaVHedEU*d#*!JCn0+QFme8v5PH zF|e`v?}$|ljb3vLqN$N&38Gaya5FtRB$H($r_H}p12==(?ejrk`Y>3==NPp*q741o{7dD(2K*Lh(zBR(XKw~? z`Jbg3j$AD-%B>7TY;JWO}3lssPxj zL+_^@P#YPabyb4maY9iytcxi`q|@$%gIrA3b>ddvX0cpcYmk8Xpo_Mt?oO9Rwh3L{P=rVGX@oD;FAi_0QhoFT%`0MM+l$ofkQUR zgjxmS!wkp9uDormH&ng8NgWp)NVAe=D((fXc@s!*{mmt($FgC;$>TY4k+PHNXk6JH z6#ym^s{QwjaQ1HYrvNOi1*!D<_;rZYYJJ6j}o-ppAg zkLd3oTxpNV{d4PT?L90H2Pe-lYdtl)s_He;dL{YcihadvVzDc0W}jWxaweLIX8ykx zxlEQF(nuAe=H<0sG zFgEC~b7@qlA28k)TlO#@XfDmHsv=0Rp3c#nx@0F7g=mgHUSv%pz4|RyDl00!TCG*E zxNV~+h2iY{YVrGvi=qzwU$03tD>0;W2Rv~o_UAdkwoq+8Fcb8h!Cd39TIj!S)_?pj zZaa|tCwC6fk|i!qDFGHu#^S6j`n0xC-1z6iMLHS&uM1O7zhTwbRQtC)c5Bjs7QGT% zuM9|#zN`AOH~1{=I_|p^6_*e#(XXvKFJQJBG8d(4vc|r;Ld+r!5Q*$9y`Jo8ez%q> z+dUVyOAKhY9r9dTU4PuSD!|%rqF8dO*xa9zr&^L(98;OBIxil(FdRC+DsRkNqMbew zwPRpN)sH9IsE8qb!n(I&Zc$?3k%OY-)Q+ME9-6la858oo6`90Z(vXV;9bXB*I)9n@ z+RiKWS`)vCD=KE5i(UoOkI2SPGyHQ_r!N=GubGtg7v1$D^5qqeZxo1L9pExqtW5TN zW6j&J)-S{6$#1Ya?PjuA9QQeMIb!1L+6>>7qN(O?zg^|ebEnB^ecr@oig+af1BE2& zdt?6%!Tv^$N^F3$m_Ff;!7+Vkd#a*N2STCVkbhxQCApLop&E{#K#e4Y$@i3?uv+kv z5BYqN?IWXq4RL?P?Oxok{rcZtfPc_w_??eLW|n*w=ZE+I zC}i|0s=X6wEp=KHskMDE7*{20ur%(xfip`-n8U$CVfZ);;ZAL1HSJ)jVcwADAk9Im z`o5BHQU?e3?DSdUea5OAl$LF2+syKuZ%?2>dOF`{YyRIJuUCt95DxG~u{dTk7KlqU z<1^gV6$kyx-rUmL^tyDPp`%s_QH-2QjQJ1VgSwv9Ho)KU_}Q~^blu9y%fm}m%O}FU zb_LTU@ZH-mL!x|Dd`5>puUR z`{uqEbbDgzI?cbym;dCqT zECLm)#U*AFdBZ9rJ0~uvbsX*JvXMbO`^)8lhXhB+PsQD;7}fR9{)(V(P~#%UQjg@j6_oM;`DjMAWGXNQKQqIINBMjFTINRpM1 z25B1&6=f$`AtUpDe|LW0>wEov|L@KBcAaxw#^>|?yk5`ocs`zwN9WuNFOu#KAJF%E z548vw(cNQ~t_BgwFQdaws(QWCT>NNbP1^W|gw@wBn#L&nXpTAQzW9dIyS8^)NGuF| zTG_Pk#gm5%KZ9*v+|s(>+s&`zuc^-4H6&NZ6|jinB<57b-Fb!YIx>QnSKia=sOfuc z0W6cC`_KrOS`=^I^>K>RkuJ?^QZe0cOtVcpZzuLXzHQrWRwI9Voi6O?4>=V%k2Qt` z=#b+uO&$aowq zh+iNygMY`z#ff6Nv@p`%QaqN)3BOxqbl{izdYqj;?bTq60tXkE=*#`MpL{87KuFaK zsQhU4rUh%|ck2$KJp_jUv*VonJ2eBk0$dRlVeZG47GGeV94B6z2;=T!OezFfCBKED zKfLa)7%cGfp>(lb38X;FF?^t(=RiMGnh{w1%!Xm$@x!20A|goo0oj-0Ai})hA!5@! zfNl}bFQp8&nQHTek%zz`fi9aha;q1kA5bZNr?A}Vx1>VvLb(PEC4o%U|DY(sinNbN zX@EtDCk4nKk&=|O;sHbHRFGa5{W~2HKTYF!(QMYMgB_l%%Q|#?-ytv*1X~~UuTJgC zTm?eNi=@4y#|GAl==k%BBm)nDR)Wm<266gptGIWOH5WO(iHEyDHMysJ1Yo=U=${!~ z!cTx~1UWz$`*bE-MDLYnMgl5a4pCn!F=O0t9waj@UN55nY*!BFR6V4BhrvQ$&bwn$ z1>ejd;?#g~RA|i4`Jz*$REzl)EuGd_Ojg#d8^w1**I_6@XM@8Z392qt)b3)_a-LB0z<-$1cPQ6vggu?%L_BrAy#P`b{smg zgC3FQSX;q(;}C8Ug9CvT2laETq5eh43LG^7bu@}PWfZj|5DfbP+$5+)BTf$$H3UPW zZQ;m_JE!63=qQb$AFclbCIDy$np;1)6AW@gzf|F1t3G;j+alJAWOl8DR>ZOsWf z_ITon67VsBup)v8_l^*~LAO0+xoCiNM})yT)0PqqNyehuIhR*XEkWc0Qs2@Pv%9f< zuEWn0$h=-&@=Rkn!w5>RJ%SjPFhhgf0jTnE5q}>_*l&|%7>RRoh{drndWJwfu>}uz z&mqDHGm8r^R`16LZZYo~`UL`Y$07IkGv&Nmc7I*h=$X;x$<5$v&nz`?N=9AlVlA$U zxA;3a?u3;I8B}nG6A+;7@q5H#7+96hEB+w~t=tkrgXTe#a#0WyR4foHrXE-_b_d6t zFJUc>amF`o60lDnGHSl4P}Bi0=VJ0J9@itZsT;3T=q*OnAVhh z`7)Kq!q4Wd0*ot@DSEVt`zwFA<*t0IOMg0NMEqEkuNk7i-|#+@BD(2wYGaphDf z;zxzgm#_f-$-yT?WLXU()(hiJtNyEZag+JX81Ps7=)X%PQ2;Hx@@DIbNv0cG^PCWa zh6UrT<|`_(qRWw4dvOv3zxemxGG&Z6IXnMx^e?w?2p6cxjpp|^{pgBvygy+J3xigi z7(s*|qTqMme5ssK>|=Z?i5W2~>F^H(&kR;LMDF3(Fu$KEs^o9K@S33P zvL9BZFihN9P44U8{k#hd8X_`vVWBid9|v4+6}z##kk<~Efp#@K!dBVs6B7qMru z*n)yj(*7g6=4olcBaZ7+Rms4@H?{fn|01=P12kmhw`{jhR0(}HthOh_qJR0ZA^!z0 z92Y+TY6Y)_7{;edJR{B%#b7kd@4^{Hm?ir=_>XvU@}MnJnb2L43x+F(mQ9j`l<5TV zOtLZjUof86nh=f_5FSAWp=ChLfXTk+hM_pjHP}{>E2rib6bRHF4)E6=y+gD0FR~WH zW9v`iW(r5L76ys~`=Lol+7~XNQHCvrA}4}v!mPak`j=+9EG3lx%TOha^Z9(YCIE0^ zsjav)>&?urbkAUN?Z&#`ngz?^)@!f!IeGBaQU!O$HPWbm?a`fhK!Z7TT>G)c0;2z5 z+5z4bn|OeI4A40`u&014`EY<KqTaH7F;MWX2nb7$5T_-h;kp^n}8D}%uO zdl+vM@VE(7;!x29c)Y5ahXPxlD+?hi6P262jSxoKyet&AvxLUs!vIppfWs&}10n~k zy=$=rUmaP)ZM}YwgKQDI#o2i{AIJ}{9=*-$qtE>V^_e)pk1|7KKy}H#DRUB<#uLx~ zrpUk-g0SksXnTeR`$ALHn9|{;5(g)#~>(3&SfVuNmcsC-x_cz@`m3ScBbQE2| zP{2Wdo4hD%n4q6TLg4oDJc%6?KU7^`AHT-Q5s6Xg*3hrQt6)9wGC3bY_!#>MsiJ)? z7k~=e6dSZ<2P0aSmx7;P?wdD$To|4?FOpgYtQ_JgA(FGf#1d)C&OZl;kMpcm<>m8T z3{?3Lz8FB^4uE)z!{TXi3S`ums}QT|XMFcanOa4e25DG%?Q z#$c186va=*S$A}Xmg0l<*Ms%Rg+oqc!z*4;Rf%8$XPf{#!aX_v&Nz7tWDo#`{{z?j zoavetGIhyGn}}Bmov7FTt6ef@t2Tia5JjU8BIRptOL`S_s>&hhRmBL-tw<} zaxfTq)65s^-uEz_m4>W_a3!mt`BQDUXtV}3=lLn_JET&n`O0{z1S)U)p9a!9Mze8# z+K*C0`zyuwl6NbY%=|0Y%IitHRo5}~|8%nLiA;2P7((2p>YD=&9mBv?cfMlNNu&X9zcr;DxgN+cMUnkXNlM7d(`-<#a_*RBWTBT5ctp{5&B$YZcXq)OW`kmNh#x|)Tf!xs z&b7JIMqYb3N^`ez$g@3llO#>40uN-Dzu)`!J6cRi67o2crVB?`b3Dj9RB>owHU`If z`7P;(ao(cjQv(u$#_1aQEwpsz8c_ayON`w&gpIqSVQ}AglRUw_-^K^+J^$Nhz5RlP zA?B!en}TD<^MUbo;e|rSHxm?mp{>)3{4zkV%}+ie8cMf)Z7pF zZ4~c9Nx+HZ@B;@3!UzIyhTHq9TA$C0MQ2E@Bh-gNArh)NXuf=>y*wiJj!M~ga{83@ zU98xK&H6$97h%df>&&ytFW3k|JtHu4T)|ivJ+sJ$Bq}Vw!0PH9UUj=H7cnG)u){6j z10!+^LOQrtvfZ|7oi5`s_Hl$412YIxKZ66>RnG&m5=fF>jrjHhe zqBIMUGPZXhAObxF5PZ3$u-FJu#4iMYrKyBiYd}61J_0^JLcXr6P{AXb#Mvu$Q zV~M$tWQ6C*xr!vUl5fxb`R4@M zlNhXyJ;HITQ!cx-=+G}5KPneyfC{I#tI5%R2)W_>Z%OmVX^wwc>G-@v^)1|NwW&KETbpEI*s9y{gBcW)(=9Z?4b zKTq0x*wq5hoUKwWBzykUb-A74+-RJ%Uuen>A}mZQwR1x zxTpCai`Z8Wov>RW3NYjE)6c+j!RNFW+YjsBDwab?e-kEyJ9q5IY zoP`3YA&_0JJu|F1_xsf00!;C+R9KgS8@u}2l_22~5?$`xIpumM;%~GQ>i;>&?2`AS zes($DDb~rJEp)k&bv$=IEey(#Rlvan2i*sl)(gPSn>YQqVcD-O#6;EBaliM@9pwM8 zZMe-Tcj!YHXVF1aM*vuM^k@bNXy#91|DIzV6Hgrl;PZT1)vT@-oE83NfIVC7~hd?P|fJR>bJNKBza_C{x4ox)LqSWL_x&ya-B(DSgSfG>|MeT}~^IULf zD@_+v0U{-nD6NI__RlUEpx$$V@ENtBV`Wc zNntMsaE6#fiA@>H$-oxj;QQT_fq+Hx?2AM%<`{%ucrGr&)8)hf^6int>+{UftII;| zQ7n>~m~=xBHPFs^<@S+1w9X5!g&L7kTd2o;6rCruJ6ZltTA2qklnWxozw_Et6D zk_@-{TEd<^>>Kad#r2F@_<~B(^q7IRLiNO3QoGDIwjMpHv??*vd`8GKuxXU%R_!+d z9)cqp=7V5ReKZ|7$78Iau*cLKT@bC zP3lFzL5t^=jd{LhMTRG92VcBr@bs&iH}muXtJdD$9{(O1Hwo)+nF#^gm0F&%8{4EISMY3@xp&@>npbtTu+H{E2-+vFHH|Ol)mE!L``<80l{zoB z^o4FeZ@16V7I$0RlRqC5|G%2Fg#hZTiHqxVtreCJ>MO>H8?C%la;TKk$^J$2PsW?Z z2#^i26CxMwzD;Jy0_!c5akVSCBm+;|VI} zE@N$_lmBK%UNOvQ%eHMoX~#)C8V?naTt#rDR1!+p^;Gj7=QMx~nyZ8`Ssv#4X@|`4 z6|5TpFHqAF@!&M9{XSx#A34URnA}1+`gJmkFSz;$Y%`KODVmHZD8unXZoS=YuuUt? zUryrlL+JS4kLD_YWCd4ajpzXg@zt-Q9D2Ikk)0BVU_!oBP>Yz2>j5@xcgP=s;m}v%~~$!X2F^f^FwR8Dni>XYwbfq<`v1L{b9S z3Da(Qy@qN*& z0c1*OGvE+H`EE9gf?hz@gmD$if<($f$rW5q+6SsKD3#!x@curIl#}q1{(*hWj=`qt zqpu!NceK}~a^Q*}tLwQ$8!`lZWuXn>>y*L0t!iVnj7}esq?iZb7C>*_2CD-Fd;tlLQ7RBSSNJd=xa`r@mx-!uo+#d`!Y)8Q4!Sy#Neco4^tl$`T9wpjG{GG=bg&J|cDT zzi88q&KhT}f1#6cNX7`(+Yc1;d&#I=-M53(i~$IU*_;ac7BFiT`5Jun$u=uEr^3g` zSYg48VSB_bUOMZUJ{Od^SvzJ6n*x20=w~KD^YQzex`Wbu?GeyLI@)V)sO~dh@zq+E zbk}ut8$N4v4uI$!N-hz2wNOwuy8W$@Oo$&oFz-t~_#6lz?0UtL|lYSOT0BM0{5 zgpZz>CPS}H*%>;|Rg!4FXV>U#2MwpsgSjfKdHGVMuyO~wl6`#bv@Bq5-aW4?+^tMP zm>p;d`XunB1(3S_$g4uGUn2ymEiAV*Wc2Frz(&{)TTlY5{IQtpKCOhUgxgS?Fa-Yl z@@e$a1kAIH>5B8732`^|hYKs|TjVxuY?ZOWc7PWM06zL5G9j$aUHd!uyXXebCwI|O zf_eRF-|w{8P=*6nFmL3Sul-|j-={2#pxN>72KSY{*VoTLRL!^i_M8dM(+T&~|3asQ z24~HXVHV@ITP`ze0%ImxK_}(86T%4l91HTX&Duyb^>ftK)E4#&qH%>_y2M)ge)><@ zX|04WDXXuMEk=;R=t}vsi0KK>ZE*jGH;QvA9l>7+Zk{ink$owrSTmnkm&m93e|qHd zPc{y%$NSvNyL;qGd*A<_zDgZpb6Dy=q_PpSPCnG8SR~Z&8=$;l^y+z3^vL7=w^aez z%FwuYv87zA!LuR9-sI(@_Xd*wH76f#OIUv?ZFQpgg=?NNKR#y#9#8Y#c17=>R(0CExUN*mwC#;^wEfl$O7J5cY7NiQ{&S z&YqqLx+naHFI$!5xWDbQm*_%8>(8N8+Ep8Z+B?5=zNpC?wBmob09DP*MJYv*MFLr_ z?Qka(z1f*n-e`{}0?`_Mmj^RB{6Gr|9$zN>dEo-8$rMG^{SgJkmFeWm`7P2SPxto` z7m#N#kBuVF8Og;vM9UPcbF4|5mc#Zdau;t3edmseN*H+Smw) zsbE&yCuEj+8OdYg4Nsi3*do7(4|m$+qrEFutRP=kOUg(JPC0MGzn!pmnua&}&R@X? zaBI^DtOv8SPigAdTm)JR69;#=6x*0I(>T8@TqM{I_iMWED1M6+%Cid7E zzN*LqdP;xiWr9=|i`oR}jM6jKi3kz#oqCD+;^@(%DL15@3k~tdL9_@O^tM%9@8Y&} z&YBEi@XtU0glaEBWr&qxnvdAZe@vpO=n>KhGMYMX+4o)P4^Q5n!|rP-^V@p>EKjzs z7IR>sh=;5vX4;~%-`rs{L&zIyi#d;3dN?cjZg1k%1^op5U6QX4zF5ML7~ zr`gbFIo1d6myCs>7ITmqD=BGCisa{JcVxGM+Ppj?j>KYfz{(M7MF=ge+^#l8#vRlE7{;mR{h71=+0kJ@k1vM&)KJG7=F zg3O1LXj=XCtKiP|_N@uZjkSj0ns89aZkIV1g>?x@3$0<4H%WPXNny3 zldZzS8dGNRDRByk2?@FH-!C&X9E4?9P$wlf(verMF0OA8J127^h`xd59k+TjnYPm+ zzq8H9P)^!lq-Usol1xdlQA7iN8OJQU6z5#nV;FkPDC%KDTl2Wyav!D9foj|!uo`X< zJmv2m>CSInS39f!`fJ{+R|mPy=;bB?yMpXeTS=?!+__V*I~I(*7DnFOro6|-=A?=- zFe>hHxa015zwyxJb?T#oZB50-_cn!OJjb*N7#ws~UebTJF=WoTxK%;orI%7(tsgPV z9_&ZW!md*zc3i`Q$ZP58Vbpcpwn^$U&u%>@J?k~MHIufaCiGsi)RV^d)^^k(XM<9=(4i;I;T;___Zo*1fdWeu}u zP!7^%bUFdBp>1_6t2I69?6Ym;rwScFUvBHXh5y_$uiCbBsW^Z7-k$LrzsLQLqS~oT z#oOh+`TQ6hmEkDwb7IIM%>`c`iHCMq?+U$;)?7UB_F>JIY-N>>o8#=_$2vMJj4u!E z%{rmk89j8PPGqCgS7l?T=R-?gG^9T|=YHr_vCfMC|Fnc1<8Q0H{1K7ybXP{ljJVeR zX*r>vpEpmDt&dxzV^ETRA+6`~T-jrFUEXc4l)uHq2C3CLZ7I;xR=+Ra5L(&dGkRh| zTda1y#@SxODECssi0|k7H^qs_Y^l=dY#k z(E-}`T`em88@$hUb{78ff62BP+yaQ`P4%e_YC1Yb@B*yjNPVJf2~To6&gE30 zj)I0c(`+EQ{HqVF;&KW3Syl`cRItn8HVEAVF$bq!!LU7}yD-C{v1~ERxuQx2n6&fz z^EX_hF-74pK8XF1$jJQ&o&cy;HDf%mgZqc{;7|7r^t^t*lYuURuz}809J2W5k$*24 z{(j1oDTrtNag$}otZL_{W!-?sW5-|cmD2xh>#kkX`Rl}3E{;*u8m(ZOFwMh6jZ_Bj z)}y5!NL=NHE*U_%D3L-vwqfWT*}?gfsx5+)A9>-c;LCW13ViXBiuoO1E;kj~kI_!` z`f)3?O6)pHIuruAuU{*b{(<5ikDVAtrtn1#1sm2(@o`?Dch;=<nf2jZShSTH!}^bDP~hXa8hDP#_4I;h!L#6~411{3;d z=coda>M@U079E2u8^Bne&DxRQ7ONLpNUubCV;&TAETnJ6#R*&xW(V=_pEJOxV93uy zl$qJ;ef|}19n>M?^2z>pm~PJLUctzf-<`{6CwL3{RF^(%qO zP-&`s??z~)Vn;<6?*&W zl~Ab1G7#saM=vDA7en4)5AD#5uMPX{YyZK6Zrd`w?WhV0v>lK6?2faQ_r&e>qen~L zhY%T0YWpl&bTCxPH*~JmIBEMZ`_$nl|M9i%H*_GRkQKOx7QMoe3;ZjM(K-FG!FVH$ zKUlmcZ51u8$r!cIe(qeg(sOPl_e4po6lydzAa?I}n*_}-oio|&@7C#}>QS$D5E^Od zwgQwec91BPsLJB>e8OmcuKjAUaMk5Nr zun}>YTK^7JruA`!bxrOo@BOZ5 z(`n}_m*&$kC${&^)FiJ1`X78>{3>Rt^`ts>e)hQe&GNB1Z__QyD_w}y{ z*D)u7!R%JIb8Oo8c31c2QL!pt`!`7}jMR9yM7BGBnNe>wlEg2pHM^x`HtwI^CSlPX z5}($7uFl0Wwr{|g!*cE&eWzqN9G>mt`ln2>*PsBMl%VDZ5owRV9oR2rV$}2$xTiqL z;L81yTbtcJ_l*kIy>Dpjvwz&Dcg9o3$o8C>tJzjC#eSF04p+q!3lchwUw->A?s!v- zPs&HJhk00{7%$N;m;2Enx5T%xy=LIWy;A?T9P;pwbN7hr@R{MNDG+onL9D_6hAy=s ztywZe+49q2=J+>;cS89Sp5-9AI^lzGr zib&r)n4yPprKA%}-fHTYJXk0?sm-X|n8K zHFfnv#SPhYF0+v?dB1z|=)g~jIl9Lf=ri@Cj20Rtx!CWzxZrLj%q+j^xK8g`sXdGH zkkP<*hn~pZU}~y({M4rrnjYV$f|iJx;z!1zulAT^RSB3x zvNKEf2*!*Pw0F*hKF=|bhq3mLiZk4VW`S7b`u&BA-ZQL#d}G$nC__X5 z>s&FLx{7uae#lQ?9+KNy zlX0N9x4#eXMPe#{nTmdqhCEh!hAT^vXZUPr*&)sQ;f)D)i;S~?!l})PVYKe}Vm9ga zWcQZ9wyNO&m81iN1k85<*{aW()6~_RBbd{(kmVA1x@gzf??1fYZ3>b_-(JpZ!0;t_ zUmw#4?#4_<7_nn!=PF{Fx*wB`V8A|#S?4XOqx^%37$}>g_`J>C{XEmpAI!8DQ;PDs z=qe&Fb=-c6d^WRun9X8yV8-B1@XA>C#X~9G-$=!zz>P1b%iHz67-bTTv!r0@1dZ@& zM!%`6Gi*^JKrG0ONQu$%qSyi_NJHM;HI_01`YNd?DL(pYew>xnLtS4*XAbL^Yz_s5 z6}p0&kHd0l$|zje_j|MRXx1gK6}2lA!&jjX+%^LiCNEDAWWZ7t>m*Tlv|Mfn$Ze=M%dja zD$EtBnqF7pd$Ne>CF6cK`#g@2(A%Z!a7wYh6@(55jfp?I($*dxf3BY~Ir0zEW%X1y zW#6+Rk!!9E=Xj|tSz8+dDfXba)bhDE$yXQw59*df6Z-tUPhQ z_CHo6SH2{#>c6D->k99#-<5y6dq4SZk7BIlfKzjC%XK%$hjxFO8s+_6D_KYDWt*MI z;b9g%Pxfd`|7Pry=~V0$*4WoKuvFJOaITNz(Nns;s>;1>ebSsuU&U95s#_TKei&|;I$fxzu9{-tv7f$KA2gd7aJh>JTI?29UL)o&UZ(e@8dt+ds zy-8X3ILD3}<>t4$6;w*RKW}^4Q|>C){ir51Otxx}Pp8DY$sI5E9$4pd(zRghf9MGO zCCq5{ufHx{w5Sg;nKXeB#U$rRW-3XB!^f|fj1boex&m4i;k*(VxHqh-+#UP(p``53 zuY31(c77dH;W>8W@B?i}N62J%U6<^yxP+|;gDAoPJqAR8gR}}1={IIki$T6ZW_si? zAaJHEIHh>%w0R#bD*NDf@Q_Gu(!pt$ZWdyp(a_t|U|7O<^c97Bm=gh6={18WM(wbT z1iT#@^GULVu=b3n*`r5?wRLaS{P=y^2nryIJnEnE<~iWjS6>C2M5j+wjOAr8LEx4l zCMPWFURw*lgQ;_oZSoBHf^1EGRPMs0fkl_TgrZJi5)C+zU|JWnZ)TCPP*#Gi8AY98 zUror~xY2jmHV$_;eW^UG!m*gc1UD2jvP}}QV*5DH#X?{Gf!$41T9tgV=K2Gjv zHy@)R-Ehus_wJ$=?>Z$>mAA1Bz4dP#gkOLdG9epQ6AsIMs|hUb4fjn(J{Ub9wM z(Al#iftAIj6t?oLKr&{}otr#emd$L$J!rFl`uQ=!d!@Igyrk*IjTED|ERkEL_J*DD zip-H{I*HtV^3wVl$j>2OaQ3AtzZbX%Wcu2*05T6XEsTcb!WS6komHJtbcz-u&A7}k z^E@i})w_oe?%!6YFFVlhwqxbdzUFl<^WdHVhnmaPWXH6x$yD(`Lc?1ZWP@q~0?L!7 zrlz1>cj)OT<1a5gfps1Z3)av`f$GK<-YL|OZiw+QzrIuel+>zgYmsEez!{lJ*j`WF z=0NEqevN9Y+?a8-Hen9*YfkppM*s+dWDNHy`qIc}s6I}Dx5xe2_+o5lQ9kJx7_`E-jSh#kX6d@u?X46{J*G`*M(8}YI+t$9JtpXn+*40MMGTTIM zdX`pOUr*8-fz|xKNum4flNK>$?~f<;OL(_u6OSKEQCgvs`J=Z(ELMA1Np{Y0`wpq4 z?WGZcr(E4t`)14Lh`ZIz!@Nsh91-9&|q+ zq+R8GuwbEYjgs=dEwX(?EqXr>^6E8zZ{Kvrt}(wLO@5qD@G0et%<9Ow?L8G1Q|8$3 zu8{4&sVl-F*#2#u?U?e!Ua!&8%DGAM_b!S)Rq1*WqFH^ot5do8!QA5Z?;X!3JnH$Z zUaaL6nw+8YyxK0JBv{w&nD!>O&xEXn9r zoT%G5a!bq5KVBI2Gz8gIU+AhBlh*ah&f%;0#M}NS$_qlbbj?x;jmbFG{>I@^xm{CJ z@$1EUfAvXg30tSx_9i~GR<^R@$bP4Wqj76oeQ$|b?;H8Q)-*pq0`Dy!ii#>aT51>u z;u5@+%8F|PT2IEu^6Xus)1{%42Rbr>s-oblc;GjPZ(OEVGk4OeBk5z@ewP~B^_SAi z2(|0 zrKR9}PL<%9j@*$_m=PNa0_F@v3$VU>4)sbjnvh9JlNUsHPdoqH(|6-US8&ED3Xk8C z$y?HLV=Ryg(HcP8xrq5aEwzGoyI^mKor;*Lec_5<Ba!wzM?#bH{P37d}D=6cI0YQGgqPZ{H z?<3nz!X5@oad0?=w*7q}ZzY;m#$_v9PD$CYkn*|@c5QZcv3;8l$%MSve);NEKTrp` z-xD_?Q#q-+X!6B*!O41?v)i6?6E4nybPbVJ|-Pjubgsf82lg^FP5d?ZXJDis-`uyG8_?bov;U2l0@d$UvSV-X)H#`D7Hi>gQfZsXz{jB|#%o?(!|CbLT_C+rIE1KJ7F>`N$s z;x3fA-(Z`3ONifhkOW{sVeQo(m}OEleRqV{)dcD$@W6`WG!N4DTz_82Yvi zpMCv*OZQ%Rxp1BP4r6ZGhdYHNol&1)(R;8@=&MYL!_vtq7lP-uzx^^MRet7zO%p_K z?{G@oyvggrqBY@CpENpu2~|?pTySx)cVO6@QAKa=E}wR9V{g~}v9neNxE6mtnE8v* zhagq$-M+3(vfZZ6(EUPZeIM}4yEI-j_ z{>$~<6PmZAwbsQMXB4!%*URaitUBoPskCF6ea|R6nU0PfMaH2ew@YWftQsQUn?Kcd zd}DNcsQLRIxdGkJHhO)#EED=g^JV-Z6_>>NtR@Y+bXAw7#eJ>&D9PffvbndfLZM-R z&%X24y)BhtmcJPf9UyvRPOWRt8N`ES2s|)(uwQT zXNHtemHH%K&TzrF9s|dp=Djj_ui3~nELnXYX;&sJigt~c`0>r z)}%`jPAQ@C#f9ZvU&BoF<2HmY((uCbVqdm{gd4nSc0#GEHWo#}S77a9_PoTpb)8}B zzU?skqy6}LnZ8p;oX8fq69fHbIygMYniXbr=Ee5PU6-&Nx^;ZFjK~%sW?ZL(+^3f< zEpKc$H?QbBKp09qEIs*hx?+DrUrPp?Oc42Z$rXw^s!YiW5(!N(BH`A+@7b(&p4OYJ zA((emA)yOT2j77H)AxG+4;P?zqk}E*0{IW(1UNR+8ri{^PfyF<+x;u{Mb*c*B$_g+ zVYY&_$5^MRwbNMCtlWoO*NK_0s-2tmS)~baePPnR!ABFpz7dl*QXidOt`p!iYt}4k z?27cEBL3Os@SXEMd{~Z$NvS=geG1adpEkV!Bxj7aFx~y+6z9V1LT-vcDiFrc6%`dD z*Drd$k3}8uV*$O@Rsg@k#0Rb;`a)avFP@ZbBWB-ytl_xCP9HdCbr8KN{gr(wAi>1$17?v&r3===dq1 z<;CtfTapX0{Ng2b< zHtNgK0OBuqPBxQBj_vhG_s*`GHX-i@EsdP91Z#oYiY|-1%yhHcwd>5i>uw5cJ5%AZ zuV6!htM?L@l)o4kcZyqApbBxU+-$M@=BumUtF>jewKz%X__aB zA)6-YZ4!^V>@`(yQwHnnrqKda|^?&F-B)Pm#dQTtO0d>QA zL#%6~VjX&ZtdrYUo9dKSpH+wk4z?=8HEhGiEKg zwlk575CzWK)_GOt(A3{-Lm)C^8p7lrUUY0hdGimX=A};yOK~kNdGFpmhR?+op4nZm z^R%aSq6vN1vlq|zP)HU2^eRs6MBT z5Gd7d47D8}r6dB%m4 zLh)G}2cT;hGHY4xWgV+E`iGA$Y_wZV-3r3Gd4Z_ZkzFGljD4LaBbg=eK0sKYV?;32 zQ~PQpZ!B-!c`hd8%f`~d3C#Yoj*a?3(Uh!jKCtaC;c)j!9OWfc8M3khnUIkke6Rrh zg-gD+w6!%z_#WB&?OW+Xsxai{CN!+0KR;#gcyBJo*6eSb|Bd-2uqQr7`7K8GriraS zXl(w4CRGDPYmPQM9RixosPo#|uafo#zM~Xx-CTVQBKxG0+xyaB>^LE!$S=6M@tm6- zY-Q{M*BR8=ezR7Qtw?YCw8hG5;f-Bodx@-6ERAkvOA;_UmJ5U&rh4IpcGKgD!u?J0 z{QdCkw!mZMIDsJ0q@YW^ zYN1U_xgPSVq~YOVB3t`iNlTCD=RAGWB38jfEk#-R-zo7&K+TAK@&o#|TlUuYplX?P zbtV$<`PZzm4`t!*RrMd)qFWFBB@#iD3=9ms_g1sUUc;?qzc{5bj$MniBnRfYfR*xQ zwrrWmwPy1{B8dtc&LH;E51v&zZtzyVDBF0Kw)g8-nw2F7j7Up#!+4ez&2Bp|Q8zkz zTY6`Sclofz&%=PFawLJjne(w>1hUR3r0rMHReS83Eea9}QnEfNmYqvZ{$XLIkab5< z(b?bMU&3#pFbjoSY-oMUW4w`Xd`nG++YR(!n^JamdaRW?;OgqyEbJ!7t!H18USjsV zd8z%@&K?~|(h#1bhP*Lva5iTuC=cv5m~5a68^af5 zeYks}u+)Mn6ZWWX+3x3!qFlp5{ufR3?%W#hBlfkTskXcLO~n-1A3q^riL?kW^$4uY zt0F`D6q?_QNY$A0@l3u%*}T%I3wfAdgxPM~dZdcv5z;R8r zvljs4K1=(S5Rq5aeO$+<|6`du&O!0I9)9b*b&SOHwq$SbucFe`vQG9>XYD&Pz2`yq z9aCS_N9BBb`pR?Pqr)#;#^|4!R%O@6GGg7~%|^Z58@#*HdgtW-{u0LBuk&!4iuA#Y?`^;4(RX8Ws_ALS}fDLyXDvWA~Wf1I_VG zzK4dO!+E>|D$?no_4cVp&eK0bE63r$1XStwk#oRO8LpG?nHu}eSp^BtIp2MoXJkBg z4N7Uy+{Wx)KzYSbXy!+yo> zxB){Az3kLSgW2V4eu=-gA$8x9qFz?gh=ghT)^%%RO&r@ zRwOO;m8FP;*0{hRPu%rbbGkhEosjew76xI*BghM9p!#T{`L(q>4MVNc4~+>Hk<0vZ&9$|>1d@)#+}CYLJ+KK5 zg#ur9ZSK&?@h5K^!>+tjxHbO$Oi7H50#Kjf6{rT-dwLT!Qnt?vGm_{>q9In(%WW*$ z$%7|ec)zt#x7|MqFqU$T?Ru6Us;jFvgE3H;!yI)D%$v;&wm-BXnPXX3oIbd;&A2_} zm_+hy5ZxEs8N95S6;i1+LqtmSlZ5}3g^_ydqqi}J#j)DGn8%4IKaKhOVll}TQLivD zGXylx?|x#N zEJM-Gve2A4R(OHz-hE}|RF38^Kgp%=nBKj6cl&ZI^I8a(t(Rr3TV@%S)x;l|+PObI zDb`O+;pI=Vyu|3EKW2`<0chA(To*A)7t|VhU8AIL8fZhS`+R*9sU7<)3ea|30=)6VGj(-!{+ne07NQKy)~q>WmQA@V z43Se^R%q=F=wx%TqWPlzsTsk``7q>?zu0T=?~ETnNC||XtFA?M@Jaio63Y&~z1*GH7_B1hl{fyTHmE9NQn{_@ZJh^W(b(_)!7#(l;l(%T%b}5HZcCWyswY>`G62p375?D9N0C`M8dQ zeD9(u?v3M&RkXThT=sDZKV&~(V&=wT@BQnt+ZIMOMQB)7Dm@?B?mw#ia)wl`gxRF+ zZ4nP{`pC)th>q_{uIe5-y4>HVQ8Bj1>i9|d*$>myy!{#!I);RHB%2Mqc=bPEfWfIt zos);9P8qn584Yzeo|l{U+t&~6XFY7vq)VRqyL0fKqTYc))!u%)?@s-^8~7cLd30Zn1N1A?jyu`$g0d=gue8`q0U7>>J;=$eW6ZsSzwyN{;F!ud;9hgi`S@jxDKx{ zyef@pupj`+)<&nmZDS|`fE2QLt^dOb$6CeIZ(I7^g2Yn@V@#m*&<>%SPVup4&mOhW z6g+CWx>8;PUD(5t%bMit*U@ee`1w=sll2V)R!a@oXA+>w!U&(a;KRTLtiBbW{w00Q zn4~`I+VT~Kok?QHns|>N0&v#U;g?KfAVe=`p%64?8b(SoGO*OXajrE?T4A6EadK{bh4n{KfpZ1;Hd{rjMcLZ`6J8W#A>F-^4 zaa-)Jkxr>l$MKK<_?F6*@|ns>E+;C_2AT$E7hDU-lM;li!sG`YnV{)oqfUPdMme@B z`b2{I`QN}TpG{3A(o38@qBBBr^(8xMC)5Ly%&C~--wW63CwEwg#bbw$f0V8f{;Rq= zD>j;5?JB&JrgMB|?0w8!b+QGRj{g%Z{;K#f+??s)woL!D@g^VwR4Yr%EuKCm6U8ZxJlC+=(g1z-| z%NUc+3ZM6%E4wYs&4Wt>o&wZf!G&)-LKawV6Pc9GJV_10fP31O%FH{{TUlHtUR+5` z{QZ$a@8pESPm|>rR#jEy*{D;RJ#{Mq*~VNasQDI|AA{c+yZ)uAVHX3dEN6&Ex`o(c zu{%G~I-j=IIHrE2*joQ!HL;PX|5;LFknOw-$Ye}7@vnN{WET9aGD&+Kg*_{E$(v_OV(^F8n@WAmc7xlG4`L{XG*y4{xJi(Um0q* zSr*^vv-Q@;7Yk~ynB)F$uVki2Y)lD&46kg(|`l#XZnRPnqFH<4{ zo$9TN#RD(o>H37l`|LeXYUdU5N>?jKYSDxP)IyUQMYl9Gi1#iZI$*NMn83=u=bx)fv$JnHM$uQ#f+94iI@RI|t`z~8VfSNvSBH_Q&}SZIa4 ze7{@>CdblrBJ2ji=(@v3w=kPv=hM&6Z>(qxkdIKSurHwL{ADQh5($g`Ytm5c%z=;| zmN%laLp#@YHFk04T67F?BZI_LTdNe2W7z&2`v-fCo2D_~r!}zXnMD79ONX10c^vbR_(<^MM0t#_( zlrFN&yw&V?;3=l8{4Qa;V2sYQ6qnQXb&eYH`NItKgRina-$@eFT2=W&(CaGEO zmGK6M;WL6TG+;n9@|d8f#(zP8W%1>w3?s(qY=zPKLGP+e`_Rxb@Y^yG9D&4;oK zX|=Y&BT8Ul6Aa-VGpm#^p!Ie7k~@Jg2S+G1oJeq)qNdMaSU2eNJTaI9#FPDNk%IMu zMC0%AzNTLb?h|7R*Jnr`?M#XA=Jvsm4EJhU2FIAhgT9o3y+MLC+T&6-<{92$0Pn;c zSLZ&d7x)eqo8#aAwq}jMnBLft8Xa9DsW-?r)zNR^1PTvA3Z?3Dy%*e#H*d0_qxnmX z6PR?Ws&QGr?@sRgtDvUQO}p!5Lzl45W|ro5icC_fid{V8qeF)?|0I<$JpmaGBe9ig zm9GBW)+sl3Z16rasb~>L^J@`;VhC3hw@SHj9N}}Ou>8Rc2ATnj6}N8PQWV8HdMUb?uq!@& zG9uA|TChDw_(QqHvFO)1b4Y;GHYdSgSg-^LZ?jF~og*8ZQp|+xo|LTb64eziC)pH-7(V&s-xoNixx4E}6 zBy|3^DebY$wOz#$59HsqsE!Kj7>Zn}WT zMg9PTLSDIfD=A5EYrs*3!EKnMzE{4HUks;48&zu+TzF6?9J+=-ok*ypOTRscJuu+R{@2C#N+o!a^5 zXLXiEy^_`vek15Q!#MBHs^n+Z?iMpAjax4WY!NaT$|ss;RXVbZ1t2Iy2MQhu!y+k2 z-{3H}?MnqFE4&(sZ4y;uAxEmn3L{I%C~$JO$DfDt0mx0IWd+=jt&!UOH$6I!^goPU zvIp_b(PF+ZA52PG{w;5NJm}aXbW8T@Z7Qz1aiU(jaVLNnl1q8HxxQ@wS;aw5c>)qS z>B!`=dy?aHj%SybQbw?JB_MFu$pGmS>z8XRBtR3C;L;NfV5I=n3fy>kZMT(LH30{_ z=$q;DaA>@IihW)I%`-QzWRH<(z=T>!DS>U7ZDZ3=1{8K96i?0X)MsMmj|t9{3F@W! zZ$5r}0h_BfnIegcKI!JPOPfJXfZ-k}%*(3(xB`=Mtc-F$eF}QN`!l@QE4+0GYLDBO z(HOFN;CzQIEIxVr(g*#ZP7|aA($<|jSGEMAn`av1*!+0~&$#utN7@BuSL7149v1>7 z%mniCRwZ0JkSh_k_u2Quj9L154LUruEL6fO>0mQk!{)e;lQl7bJl+1 z@7LB+F8lGT#uOM+dZ55`ivfL9J)zeO7>fazv|HT;e*wroIXdzsyt=T z^0{~H#j}BDioH*j`gH4*-^!8{gTmId9JTR{ztg248MY_GPN~5)|P-I=nC_DQe<)xYq zUk1l|mCwlOu6z4saoak}@({bwOLh5enmw7%+TM&9?Cba~sd?SfF+C4$Z?7!aa(7Ky zPeG2AvB(^UjI5f7gwL|!yLRaY|YATS#*{@lW2M`X5D-1RGCJr+pYeu2jv|xg*kb8tJu`2~O z>fjO>V1@gdD4sewYcOSrV5EuY9#;oEgT2?%>*NeV%`zovSNR5uNg^>!99a)`tBuPR zczt=gW%Jp^#*-%qNe)6RjBv2Gp6=q_v26K5p*n66I|XZDqbO>0jwMUAhqkqD{4!Ef zhMP*16pGG&S92mH`tLUuoyh=W;wNDU^Y!aL&d2^~kQsIrRX?{ck^YqNoG#mscUsO1 z3@ox0?XH@d+5?({xb-t`8B_j(&>-4Z{i*qaNCLH}u#PGSsM#iOe6$w%3ON};uAk)bj6M72HEAKMEbf^&)@CCkBgd&zGe9B{K`_ z8S7`b7*~y4dBQ&PD^Ehwr0gAA9A0EMR-u@02)~Nq4t-DcjESK)2==$RL1;v$_31n8 zr80;s;g72Xf=KRP_V}hr^sp1zq>hauGfTCb1vOM>EdWP>wZb8YTVDa$Q5Xuod6PKl ztnu}O>u#8#%#;D1k22ZEu!e8rZpLd`^z=Ko-hAQ#N$*zXu zrkq(O7%-EFNs!WM;F!?(%Qr=Nqao!O!>1t-syOcwibuVV=_{&Pt-9SR(H1WVfJWrt zQ2Z`Ggz`$*7s*>X?#YpKri!{#^rFMV!)H3VK;&g>(6KsyQp)y0LqTcLv3tOgtqAX* zoK0`G-ODSKdvb1*%G9<;^a|wU^z^Z$Sy)+TcU^!01^Ucy`1EE$wAn0S{SO6RDy8jP zw+aO|SpDv*fA%03|TqNPb+U7s-k$qoB7|V8B6@{-@l*Fx<_;y zAE}y(%J{I(Obs+PFh_QP!Te+Q>$h)REN?6oiDk~WQ6vWFm&_vHVD-Eh7b({AHRR9U zYipogDq)!vmfL=Dg_C=fhYzGlv&U;n^Ci6S>~74E0pJ9KmI)}#qeL)a3AG_U>-AdqJl`LsN(!#dWXEFck+Ao)(azHe_glx^nlM|!HcBGlRo^Ll{$4gYbGzw* zWeZPD@U1})9^d+)fV5?ZK; zv?M!}EhHqXVPt0(LNagTcU<*(p6~O=^ZosPuh;#0o?ajKxUTp0exKtwkMlUgbM?oU zeF6fnOh3xoWyW)0cKV+8`N<5AM&EAP;k2oRAKvDxImu0?PJPPy%!}J3jJP|)FWyVe zdR-sN)YDG6TtasGoq1_CC)sK7YarkB$KdnLN%B`_TU&eQHKm)_qALshMP}s(*7R1V zR44k$=jx19W@mC#C7VfJiwTQ-T(@u`Uh>POnHL$%X>$|jcR)3;&Q}(i?MycEy z`QJ`?e%pMx?Jsc##4mPFZI+9tqPXV~?{i@tdFAU>&Zxw9SMM{8+@<6gHOd|>*Q-hF z2|JpfJo!8Ed-ix^lx5)WLsF(vp&298i+dhAnuqoE2H}H z*&2{v!%njrZ>it_NC}1mC=Dn(KY#u_$UyL1`nStrVfYjZ7eIH~>uZsM0!LJF{QXO& z(MS@RD`xqET?@K6W{74F!ziPkgwN~;y%Xd`b8a+LPmP+bZfmz^l}pSVE5MJ%A9lT* zw|Kv78MSW=WJH5do>Bb^G3tv~;3!}~(Y|aDDhQ*G(v!o=kjr7nu>vLqw2V9qxKE4r za~Rk(TFmCG1}lRQB1d(mD9!qDR!nBe>^3@Dq{XN)!OH<3?5$!mI~&cNL5#u1Y;^HB z48c2hv5(}`xs*5H%>{9Fz|e$R5(UC8w0fvFkhMom1X(dx!QcjzX|pM4MfFouY$S$f zeA-`C^oa({74>A(o(u1KsJV;L3oTs21$$%~3FS-FSuX~z46{M`FT9G-07oB*n^b*d zJ#K`**5v2V*waYGBq=nFox9kA0vv8vx^>3K-!PS!CXEchgWlwOeINeq+3meSq+(pnycJ^SOOdAm_<8B7K3|L$ z2{hEFitf@meh-@UU~{5QRB1FsQ;y1DVXxHlPv6mM98*kBt9VHrEHkvb+`V_NylA4d zE;8IeP_O0NY3j=LYbde)9zU`6z=oC5^&rU^#M#)Yg!!QM;*hA`0U2>bMkd3g>6}N8 zf~mfercWE7Oh-&kK(E6Zw~ApmWI7O8v;;G;*6)^Jp3Peh^35)aj5iKZ1($it9(VkhbCb_k#=L_XfKs7zMr+8>D6v}!BarIa{!>hw$Vxjm3 z9622wovhhPs2U+@(cN0qIc2~fjWGb>(0q|Q4T&iV>pq2~i~YU5=IwLVaQV_2Bt4&s z^R4I}D%~DKdqwl)$vy~~LGh0w2rxzIQIeI3&3?gLNh|UBKiYaw(|lE)qq2Q&lVoqGC zu(D|!dviLlbkl}cx!>N*y|U<#k6(VX*2pE4!-ZZUYi*S5{5lW+)qP{DEnGFB+|(X@ z?XQ;G=K6oV^1J66l{6C|pD^F@xXpKhizDBvk=(dY#D!V$`8Bb-i~i?6Ub4I-0S3I7D6t1r42F{2DFCuM{!qYOpJ%v z^$U;nP@hehc)PPlmdsN>J+yO;!pRYuKMTvlO$|A<$bQ0(i?TybtuBF0Nd>jeuD4La zgT2RV?D9}_=V$0>K=ugx5mG=vzfsb|pKxr(hElY?fEWj@!z{HEZ^#x`Vcej2R#+%y z|23Best^F9%gq@8ka0x~-;$ukY$H1!@v@ImqNJeEte%SgH9*|nzgNSK^(yIp`GO7# z)X~w=C@12VtR-R&M+%&A3{^Vyszpgfpzob~iVmi5L%SNI4v7)*dZ|>^&ctV3xbm5L^-;;pb-H4Lg^AX^V{LNP^~-X%w0QR2JSKQ}VnNu{kq5dH z#|(M&k$+=w&+Jj@os8(VPtu2`P z&b?&dXEYVLU29O3j%h&VqF%LD^V-!9vz{qYqga*YO=HJP;-bv5Ixd+>5>L|CZdNs5 z`lDDI0nu7$8AtXTSjYdBm$Nx!v~m9`IWREO!=I@K$0BNRb|m?hG7* zohLuzRf9MYoZCOtY6{Ha!`Dbc`jnTMHrfOed#&2N_u0c~#pERvd1=j>|>=Z;6N8(Smh;b03wf4*i-FHJSX;z zSf#Nx=9c4<=R+rT;oo3d{-$lXBf77&i6sh>>yIQcNNZxy3Yz)K%~7|sqHI*>oK_m- z1jVRSBy>WcPg*HIeOa9(P!Uuz zc5JECYn9{=%_RGap>{=CuYjP1Hj<`Ip2vf**f#gBYWN!NtH%@h3JP$FBd2T{1#@j$ zMrW`}V~Y~22U&xYVM~$iSqEk^mfjxXR)@ZneYZ?w&gflWT^$0f;bYRSE3>4sSen-C zx-DP*O>IvOF*V5c#p|Yip^I!pxemd?tmmr*-L1piAr*5t;k2zRNh-5>>mOsW(Z+&u zGb$!fwl;iPY9X9v?Lw4=$>uRFMn5`BV71pl+7l1fF-s4V`4P4nBH~pv@Ajk9No?!GE99p3uCS58fZ@{z_r?AMgW2M;M+I>fuv ze`H(9%1=6dHPi9S9o9j-oQjT~`U}JFYb{=n-lSQqYc-i5`Q~w5S#0v`Gise{QT|tW zOzo`++Jm@5Co%gwu@SE@L`dt_T(Yy>pqhd55Hx{8U}CB)6|Jpzw`7=v4-K6|kh;EX z@k=JFjt?)%FaMQ&doa|;v6(F_E!V)7Q0*uE2mx8bpulA}AW0$!?L|BAYK-q!l3y<( zHadGFK~_LGX~qSNP#ecQu8Pcn8G+)3p}0EPlYawuMDLvn&#QR;+GtWSA2V$d2v7)w zpjr%r4HDQ3dO^e{YayuvOPgj|vJI9FMgih1koGUMKO>3gUxb665XKi16MLSLa;a_* z6PoZMY$uH5p4;UR>%enGGgOT4dy?N?gfoyx0{B}KE{7t#K8I^|9+A@67e840Cz_11=tYmAlRkQQbe?Gd-!g20o(3;P}q1Z9Bzh{?elQdD#K1Vs+CR>Ps7X$qzvze&W^P$c9e|G9PIe+(7Y z1^KxDYc&dzpyQ7hW|_b$G9tZUz5!8f{^&Q;GImiFu^<|f{M|I$Aj06(>Ww2KwowwMT^Gq2u!cY_QTgw=)S zm}z(d%|Cy;@vp1-pHJ`%@C$CV5KBtA@Uv{w`pR3Gw-dY~g8l!)G z*MD5>g3TFzT;yjAOYy9la4leHv2^Hg*-p?t)@c-qiy%0r!9T~npJ7W)NaC#wTqXne2O~3fjb4y(> z>sa+1%Z64xaJpU~v-)|C-1*Y<-)aMGLvPnToOsG)!_BF9-pxB%xhDPkf4%+!p0@GX z-5pzmk5b$1Gh1D3b)Ijs*sH5H+csCW>d$f5WgSjw>+(vgdSKjkVS0tR{bS1?6x~>2 zd{s%EU-v##`H!{uXVq`Wv-6Ph48$Pa=UX+=KjRa-(E>7~o2`EmfGn}xUsCmRstJhd zQF{6&SQYN~;+dg}8F$H>d#D%p#;er4{O_wFr$rxTg=Z+?Lv6R;v&)^0o>PjX>GzFk z4E;xPxp{d+G*HWJ&lRitnl389dwcx$2d;q*Uqks;+Cw+`NiL^bjkt|hmp{-@Zs4l6 zI{&*ZaDK~}ZOh|{u)t6exr4t}$Rj3gGm~;-Z9juQSyFtHyYBY7|1-jv-&*IIPmW6b zEME~Bd-v*#PYvDH`6A8!dCvr;A|LLAr50hykYwjcI?a0BX`>SSw#D|1H|aT6hf+d$ zUJ8*X-*T~uI&V9=`jm69YwKWEPZ67$Ulz+xRq2f!3{!JS{ZE-BSNd}%8v{ieLS@6| zEN=U)gb<|dRqw%?)!-0Mr z)n;6Z>w}ge{UsMyjo)aKDJfheX7k2F!^0o;_i$CFB&quc4V-)T>7ioC`c2yo*);v{ z|1hpcG`@r~#{!fA?gpawX(4gtcd{S&!}8M7b!HJDgsgngHycb0SiG>py*kCc(1;Lh z3AF`?%9f0gQ5mk2U;h2cdOD)If2p-}HqSb-!}3T#>+Rz6*(wd5zmCS0ca(jEu6`pq zAUCRK?liY=;oKRaG1=dqvhT}yWuhY|OSf#E2&WF5o#f;4nEDm|$}Vv7LaBt1;Ekxc z>+|!+?hkwSgfCqZk*z0tB@Ay!>^(CuQ9pfpLRS3Op&ov-v+`U4H#PD7Wixvxz75G% zA6}5{866Bg`P84Q`yiu5U}SN?9Y?W7vbVRu>Tl}C=>__gX3g<_&B!O-a*0Db4{nir zz}E7vI&taXu!?Kbw2+zq%{dzR+Zxl~^RtY$luk<*c}c%{>>$6Y7C*e;C$jpMQ{8XR z=J>lEtyhy5IDZVvtJ(;57|hcAUzYh_e{y(p%FwX3$A7MC$!ulNtUH${?ddxdCl&y8 zyyEUz{^{wR`lWEpwP>Jspm;QKDA-`>`*N|V@bKV7X#AL&kF~JnZ@mpYqoV_fD<6eR zXS(%Dt@8qY=6&&Ob!#%&ehCBP2M1DneI|i-}>rZ@3^s*CH z86tmAD41k^bENyd{NajenTdYc5V_K6U$WP0hTe}w3(KoyQ^xe+4Neoz4@E+t3+VFcRlKTVIeLwlHRo(g`q!iXvhTWdin!hIn*A12? z1jTr74m?1tOkZMmidlY7>gGw#?*$a?k5fa(=_u28&t9lw@^i%V_${y$K=zGt)>wHn zdLd!>lV3GYYw&pfSE=Fd$uYFbZ!Uf14PN9ngYv}?abtIH!4%>u6YPWB;RAUlCHhUJnS%O?8QVd@*@SC#^hf2TbFJ>0h5-}F%`Y~H`fO_~2?O1Ka zHZ)3VDiY`mr|N4YVdUfk}?#=N4DIH?%BKPcAH9VWlYk zEvP|1Ub*s)vyB|Ym7L%m=&-0cu9~{FCSLjy({QFQP0dmE{}xExh!H;8VG`vIbm40|My3E59{Y@5o|)qSHXlmZj0Ml~H0j4oL-< zeo%>W7M2_xTKUx59d>l}!p+tT9LLrw_(-$qui!ff#_ z6g1pEVXWTAKSz}=I7VNnp5pejSmlxMkjZ76J)clveCR|J=jK;RQ5(M|%9bAMjp$VS zum0Ch8AyYOAuCaTq>`4GLl;hHpK>#6cZ?p}9ld`<_v(r@!f(EU4Kq2_7DATZ)S zFuD&A4WK3h(eje{J5BIEV&a-x;3vhTk=(_2(x#@Sb_-ZM{S-^v)_LD!tnCt*iB_X6 z>0{Zh!wr21>o6DeH}>Irt;tHZbq`zCHq*!Z_p9-0oKoKDI+OkT+=c-I_UkS!hhyob zgtl~lOl7_k;z{kfjcEtOE3V$O zc@(G{itosFkn{W*5Q_Jr*#S=#sZOu=%I5sAx}zAw_2LC>US8f`oD3Nd!P2r*cG!f> z6a7h$a0QYFxM9IBpddMK7oeNSehhg68jd0aSi@2eN_mciB3S~X6SW77sz50NpVdxr zEB7%oZr4EBWHcHuBeZ)liHuO~*4nFpvJ(nt>&NFQm+c*r_4%DgJMoGh=cDt*c zkwg%Agb^TR%u)pruH9D`w}?-nc$1<7T>p_hx@xI0-w_Ei&@BM(RhG`RVg#__3uZ4~ zNSkr-_yhip3&Ry!W_y({UQ^~JcK0quq>bP{-BEiwYIM7bx>YT*ABi067+4xgK(?`E z06d}^4IB!0h8Id&c=-}A0l+8BY6eJ!7p@8OD0(iUV&T6!CDRz7;l&NSA2ccSkpZ&A zBnZ@-RRm}-TxQlpa+RIAWkGfBRFU4Fe7aLGhSmc4x?+-+@f2B$dUR1tLZW|i+FteF zGXnZ53H8EuE7MFiq*U`!tMgIT@$H*-eYzT%v3Iuhd-g?Nfq}+&Q-e^oi(z#fDm~99 zPpp5yrW*7>ShA&{PeEGsy{Y+8yKuXk7p;eE9aAcK~_V%$}_v4t5Trs0BFXlr}m>Z zR9joCzFs^woS_ip1A{zU7LWySIpAj@%WMW!&p>d!xo{RVAJD@J{|tdmRqPj58KyM~ zsMoV|a42J}IxuITMa?!Ow29-EF!84D>m6(^oHx|Q&_a%E9Rti_sB&>yz&_E-G>y!1uJk)ta$c8|5&^yN>pojMVEnv2oNRZxq#`Iz!A-&TJxJw+4SmT`* zW$57qcy$H6hW(I1@*0fRM|m+TVA&_lD32DWj)jFqP=TM+BN=IBvA?f~=YfV<>wUp< z%ZoGlh%C^8j^%1QxhrAVFv}g_6_6O5cmgTHFdEc_!HPx)E?#t+5R4|ke9*Vik4OM1 zm{o_8A@~lIAN-?`S`%mupbXd`bpL?g2J4c)Jlo-nh#5a?b?)4H&@YIZC}dYzKlE5; zKLq0z4t50^dpULdoxX}B1zzP$;)Kg+>qXwOrV^!$^z*36`&r<=TFZ23aULac=3 z+WG+VWWF94bI?bsK-wcaR;{M*kZ@$cFORJXt2%e7gZws6_?RD04$ML{b#j&zLi-@!jz0|4) zf=*AUj(QwU@W0S)_fz&ti1avJvggV=jisLyk=@O~%NKo}EE|y!`Wlt`$ZN!VGfL-w znzyV=p8Cv7nIUlNLUm4KlzC5&RCYf%J=onxn}nAfxrg6&i;N$svz2`$D|emwy_x4y zwMkoGO@!>K9|gTw(@ZB#e2Lgf!5!oE|BjOe_Uu`=|HX?JO<>)l)xEl0pq95wbxCj1>;W}BPx6tRtdlPjUIF=AdeBhffdW2FG zV~8>OBb!!J>B>GRNue;T%W?m~18a-ju-|_s@C2jt^;@L$PX!RA(PjzJ+)H$9!gr{0 z(FkvAXV=`>xe=3I!z#;P@xhTm9qGV5fNenZQpa-Hliow#MFpRH<=7Lc8Sv{iar#kS zhB?=TYb*!cX_`q9D}nPvl^8k&!26a0 z0u2>X5p009q$(a)1?^gt=t0NyN~pfPY5QbBqdz?me87!Wm;h-|^fi2IgsOd879~s< zm_KU)!K3Dko;8ONS5sIm=Z=f7`&<*r97TGk6vBzjV&J_HONFhieXw!%+38nQdr324 zGZ2uSBce&ve|*QvR>@^JA(zX`%i%2|{y#}9(y1BI-plNfCAn;x0q;ZCCQJ4C4KYjY z`RJ5SP*YA$mNn6@u1((?ZoHt`_q+YEO-buje|ej*Z}-@mzpvexp*QAjvuQEmFx7I; z&tTUTJ6eCq+33gfzv+%P|7vn}J1if;lq@BB>&B6Zua~{W6ixB z$*IQ~qxYyWpzH6#01kApghMrW?ZAm6gwSKl#`VbMy{r0oFz#e=(TBjSK_LV+kT6~A zL(oNy8X@-c^A|5b45^0Yg<`P7Ri|6vy?n7j3pX*=2@f9iD$`f>Y&>=7JHg=U9ER&! z(Icvx^wIpDcIGub%9xrv$2EXERE^*lAT5_tJ0lnKB_aC3Ku4c-}BmwmBz&?U_7jS29wT53@8`!wsdCll&7; z>=Ee5KSLbZ4VVX204IAhD_UU^F)S(M#OPrCFPbHbnJ} z#Clp($3|L)P3rJmyLnKvFFR23N`Ke%n$XZKGBd+PNvqwrz0M}n6_x(p>p`jTE^0Qg zJ-qD4*YJi7!e38VtgBve;5L?*x$N(mYu>1TCTj!5BY&^i?b2DR=_Mocb`&mDLy7+X zcgnzbs`8Xnv&*OFQ^}r{tBs&9H0X_yZBw&Y=6k$oHy5l;P*90nM1Q29L~J5FGs`CQ zex0=6dfm@=yK;}|yw~rZiI9;Vk?C*2+{tAHY{_N&!b;jB#OSGRM4Auyv8l$W$x(Go zwPlD&p7SgpcTu=Rty(w~V7k)VU1jFlXSk$Wm*e%MIpUa}mn`G&8&x)=wk|O03|B?}@iRxe}w|gFb&HF0YV!yV&&1p;b_Lv%0)$H%h z_$0a4{^oncQQv4F}Y#!@wY^@Qt$dSY+yfHw`E6gYS<@~A08P@%_@L|NWpv18l=EMeGMRP(MXS5)vJgu?G2 zc2UO0*EPkpARx(d8B~M2XT1drjvjSH#MbGlI0`smXsHDw5~#>2#2VO-OmN_cAV}Z| zL!$?6UU2((;T$4+#6RrTo_pPaR;qU6sz1p&dM{8PAt2I|wCH;nT-fD+!7d_a z&fGlq7L%fK?yqico|dlzj|Ni?QRRKAT|0aD4_lL$gZ}T#%PfDezEQ{p@gvRX2E!E? zaL|4b`49;L!~+r8q*C0e8${fdDhe$=;_+cSm zzZ!voO=w^uNdcJ$DLm}b-=a2U<1}&>_$gc-S|>2FmKYu2{$Ip7x z*;$IR6LoD|DzpJW)B$?%k|16nZ2_}U5lw2<-Z*zWthk1_`ggN1FTf{`2(sqTDnm6C zwPSOkU#v_U*Ee@`(1C=CjR~)e^wgy}ktI?;GLFob33gwDHII%Vf3()AQ)p(d`?`Ep z`O(X~#^Gt~6v4B*JD&jJLxh1*WY!kR%Dj|l8XS@YCl;~EZpZi3uFM&lN^}^)M}trp z4+fwG&VZYgiQdeQZ~eJIXQ09Zi-l+fk0MQ$SCs9V(TkH%D!+u(6HWcd+pq@=71Rxw z`sVA0rx9i77w=K;^X5Xsc1i4H0VH1ja%NeB8TrG|XNdk=)+VR{;z8quVl*Bz0k+ID zzp$@2v$F^QoPvv4@GBh~igWUBIG2M*1$GXsmtf6qXemNwrEU;X0N{{8wIOCn?m<}q z`Y6FifRvPpbZ8#F5C;}<^YirdP!Kn);!D1KY|1<$cq%_7YWDppa+Y-Shu! z-76o+x-zXlMH|T7ut?6Z6=+Tp&NWkinleIN*v(#WnJvJpqq!%Lf;@3+?UCxK&(p0Y z)#07W{{!+$WP^oJJoRonRs=Q*D+v}uoi0@_jy@m-M4D*S!>C>?2f+sg?U`u$RYjkL z(k{kwI7dv$K!b$>A~Jvwbn!$S=0zTV4IbrXjE5VMx5+?uU*tJ~adiYU0YQ^FkO}d) z_D0|gL=Y+1No;)R7{Xs-Ct!V@d~Lg~+Q2dIp^xvPQhnAw!He zMzjD_v=UXu_J}~99T+bXg2sk;`9LllT*RCl)wrC;$b??^1V|%Z0p$cIi?s)G_OAvcqv**8#on?Q6ag+Lp^m=z+K z0DScp)L}R;pl~31!L7kD5h)HLNKA;~jjJcjAlO2d*~sm!PlGGBi3&p23-Uv_mE^lZ$xMb zY0mrYVm#jNaU_WWEspzTWUj+4L*nu~4h0Hf2=v(l?YmnC zY$s)+;P;ixE696p9|t`NkDMOZHu|yCV;R=LyaC)gf=z|IJuY07naH;e9)@9%#5iwH0Qn-qYv>zV)=qd6Y@!>Rl}t>! zZbfJ9CAr%zd~GegjG{&Cvdb3?%ZUIR#oW)&Z|iwg2eHKnvh$KJxmTGvnOpwatUB{o z-q&3JE|}DuL}ZF0Lh!J+$B`LZBMw@Lau{X=Fo;v2I18c^ng{>F^6==Ckiy}&A^2@T zL6G{w&cVZuT`s`HNCaPiTj0J@A09|VP!C-Q3-P#{wP&$_C?nu+1UZV93WhIr+fJRg zFWc>5dtgWr%E2)au!|&-SA$}PPoycaQosr6=;}hjm;k&0{R2gzc=J`ip06`Vm^B<9 z8*4=O%AW{_25ITc%#1-#p9RhZebb+s}=ztr|7^-QBe>h-7&*G z^$Q*ku|q)d!4Bz~XT@9iqY)RO&mX=u&HXO8&j7=&>RvX)Y>>;JzAHmNf`GDdLJ@>w zArNsKK@W_Y9IgcXdR=!kC6f>aO_$8)Knn@6CKd?ygMSDr@O+5qm&6fAdjfI;grW$2 z(9#cnVK(gvC4~==g08y8LR@898VO#%%i$>YDr^e6!STO1#;{Frnt+TTUtwLj3j}O% z?G&*Sg00$ca`5Ri?Px7))%h{JlPnWzrA1vp^W{FWKxF;+7%U-ivN6gka(CZBF|_<3 zz(iVtJ9Bp@9y`7rPaZx7>H|d7-PT5puu_Q=!6qIR&U*bh;NWi|en951v$f5#s9YZ} z>-#EA?KZj|u>}aiWx_CFvg%$dB~c)@z^MZA!1@(E){4kUr8PL|H-LE>x0AwS32|Pz z&7p5&?K!c_f{6QYpXkECWjxXTe(Osk{()Em3@+F$B%%nU_a8i1$-foYxs*nrL;M)&Ey@@`&IzM&t6CsqB1|o7vWbV9&$tX)*D#oLRCKN^6&8qp@U#%#q9UB8 zlH?Qt6@*^z1e0Xad(DcxMN7ar{_B+_55poe)1p|0+5u!`vu(A-M6`iDiH$`VsJNT@zq+xgD7iFy(~c9p z`4-UMdAh%k9TDMJ5fpZa(gN}ugaL>FRI#k>Vz>Gw;jEx+ho(c!hg2yW{!{+VxC7mZ zGJ6+iv9yKsbdl=*DZ#B3g`Y*P-`L(kz{>%30%*WS2-bc0vSS>7C8~MYj@Si; zJ9ux`nxh5-1*p6;r}r|am2|zj*a6GiH{(O>gI6S4fqwv6Ai%_k0)-t~tm12ilpN95 zfJy`^i`d7*jfvF+*Vht}5N763k-QS1R8s->3Q>G~iY8jE>g&#P2e!gc=gc}O*&RfU z3x%Gn9UX||up^-ofYSv#NOa$#UlcFBcQ7ZYOJa5)up8YS86w-Z{b|TobK2n&P+L3Y@qzZ@S0eJ6Bcs(AxID^kgv2(+KOnHMgwe*a z#8`<`z4Tzjmslxuu;D<{=_7{+p%}>twi>*2&a5qKc&Kjs79~riLB0~x&G$~|A#FLf z3yGhg&A#}|@O#`+Ou?s=C{iGN8RLrDQd_CNG{S9Yjo>(V?W+A_bwuEGc|g^?~+V!4AubsgGi5&O|xE3$Eih31SkUs0q-NaeDEd=2D#(k*!uai@h{&5 zqTq2>F8Ncz+1-M)7B{OpF)xoObgYa-tz41yKtmxxGp&|inL5yLU2xxR)m`i=d$t+= zyyqwRTSGFH<;upq{@*#(PQ4w;ic^9v`~M@E~73*p>v z5X*oYB&wo#z6d#?nU6s-*+AcMAofPT-@TSsN%RTARmQ6bt2q8NJB2M*jw8a!K3Bhu zP_x_m6caLmkRux=040>f5H7Uazk8vZO1MaH5A?o|ej5jK7$%J4FKTp_Cu0Hqpm@Po zBW}WBk>Q*@O8%EF0M}+>ufcCqnCqU!=EFuLdTfy@A_+xZAPN2ny$I;et3;ZSs{AFE!Twss}n*wxcME zsqQr`9>}&~?tseUh35>qNZNRB6)u8q{v^Wb*RR>2tbhoGc=R}eNCjx|3pwW-i3Hc- zwN?MS2w-N`+U@4Tz!#AQK`M zjaIXPND@A@AI*s914YtIRNoOC!erPZ=|wp)nkpAJjBiL?uMb$tohON(5l}H1=rM2x zm=8pLxVu>6wMk!Nwf5PgSrVrIs04~Y4nh0^RhDa^)ufo+pm|`CkpiN$fifiK zB*54PK~P?lomAbgh@MGU48y#=Nl!bYd%d}Ei4ck)Lbj79HxaIl_`V7RQ0cF`m0+TA zbl>wc(6qJzRl}O=E%UQ)Bq}=D24gQrcNce~tKfDmRBc{b9dC;|d%)Yo?j<|Vy#7CE zRtxR8B4RTzi4e6wb>vU1b(3Z|k>M;$usy;S0z2Z57VHH5%h1lGZyvIV0729f$gl<& zV}Vvc1k!+oLc`&f@NmkVIj{h5le{j7h5V_-05VOMc;w=zefqThv?pKAeHJdG2mG>Ry>OAM3ym~a|Y)Q;n z6Z`fU$G5+BXUCJ?G3;q8%H4i3XZN$Ds*PRW1jn`K4w$P+xQ~p9$C~lcG+A?wC@4u6 zv7a;NIQNi7=+Lv!s&+=(uswOMd4A!8af0nHg$!Hu*+!REvU-@>V?=0Z=$+&ao~QQd znJeyb?RIU58q%tH2W>v2uxw)`u^~v0ReLE757Ikvy2WEF=M{2sTRpSU7p?C&!eWk zzN)*#cZ%T81`JIvWCgAU{3!&`s=hOzU3oCEQ+}MRo;ZK+ZRk$j1<98mEkqrB+RAQh z1>y#YGkkrBa~GzuLcWFQPu~`SN}W_DoIO9YvsC}8tp>v-sx_22q)3WRv#~(16#nYT z)29fqF$IMOj)Z-q_UnfLM3J@N2*Z~1du-{{AG)SQB74hl@&9C07HJLEGQ&8dH3uQP z@o5@z&W|5H40^VA`cF5h4g=qlw}?0onF6J}etqMvUAvm(7#5YCw&rwZw)*+I<&Cxp1i#nlyf3MeQk=DhOq+?YBAS(9W3F(rBGnT6#5oa;xBW=64S2WiJ2 zQ_`eEQu3vuRMXRACBy`rB%$p_4K4yqB>+fD3cwcFO)L!1Od+5ZZ*Ond%@EMLP>?xy zZV$^r46l~th}>P4Kj%{dlLXaqrBkQ2FfuYCREh+U2cJ*qu1g8h?AvL@`3cbwu5Q1W z7*%59(FeYkq1Ufoy?X5UaRNPGm>zEa^yx@wCs? z9>d9kAjHjEw}JsVJj%~!$Elu24UIbW3vKEbHO?AFCMMjI3RO_+4{biit2b`n4mlYo zj=%#g|NTn~)7VAm7*o*Dpm*Q;+2&Bq`}c%1q0r(n$A2PnKV*A^-QB$TlWWWoH8t96 z;o&Jv53_z&$%Suk<_l&Q7Z9K$Drg@+efmC(Ws zeDIkEy*0Rs=lweNzAyxcvsvA4F>>U>q~K;?S#RCGof4vl=Lb83GAGIcvCKAAg{=`$ zQBcOiyo`$B=~JyQ(f!rBwLDz|QchSQf(3>*!xdcEhM+?SxegJ(5z~=5x2u1VMQEJ- zi6&i7T0{c~7&h#{;9&FT>|h2%-kUr2@85zGeMl@bOVw9~3q}@*M4lZUGW@dY16Dqy z0tXJf?Db9fbN1d1-(Ff;qI!^ZmpXjvcze$I&9gtdq(_fZK$G*`$}*Yl#P@ofQ3<9K z53By3RpMjUMV0R^-hWpcT=+fH@uj9!$ph1#-Gu-rBj|xLwoDi zt&j^r&^-NvEj|l*bxP1#hgITKZrYTDQ+Y{&g2aG`2WiFq%NT`s^I0*I_BBlK;&O*?^70{W&Kn*umEVo7Lal#Hegm!47E0Z6g_0=kY22rZvw@ zd=RgSVjwsq|E*Zp83m^T=m|#Y&DNIRegBW|-;-KlpYTX_?cR;xnnzlCI~1%BMaT6j z4LeENa401r%lY$NYR8W&dU%KvUneD{cA7)@ybSf4bf~o=>Bx5(PA&?)J`^ z19677wl>cC_x0CyG=1~tf(jdLZiWPig$6n2HW3^>NFjZDdzHy;C-|X{oY_KAg04bZ}`S?oj?}6>P%r9U^jr4x+GW@fBPQ zD*Wb9Ju0N3{%M3g2V%(G=twc#714=};bi2+ISHzf7b z9BUnw6F;!nq??r`aM6WTf_#!Ii{${a1vC>;j?MtTq!i7XbeI+x|NGxC9O{$UaVK#m zWpx+@9SXu8-@S2z0!IM03AAI1PZeb!KAeCZtiUwbOW!PE#}QWU z8=#U2B zF>38q?#f?RPIxwLZAL^}*h9sp6Sp3rB6_)OWhN7;K`@57;g7)E)YQ~&BqT(haVVey zyAyx9A3b{z(EtNAWPcjADlGfz|=;(0y}eiX4?0)=A&D8grt zsi{3mpgY#{io0rP^L3|)`i-5k6_^3~f6D~R6xC9oj|cdJhXI4Cm;6kgXJpr zqGq}MUzyzhgqeR_mk49d^K+9 zTB#h(lz6RGs5ll5&WJchgh`YhD*$@T9NfftomdS zZ=ut#icLWJims^oTE9`*k1~DHLzanrBMgD2yPFA~7 z?Z%V&4gFIfAn_bNycNd;vKj;-6viG!Y(xyfPLd}=_aMnf+k)PiZLT`9`1n4?7m|*eUnDBV+r5(8!m?(Oo%})mlg0loyb~0ou^*YeMZ5Eph9F!BO zT|MB+`7{$yFPToWA~8U2sjNq{I%NkJ;8_&c{vrqf>T;A%E75B9-8IcjUZYXI71R>p zy>NxKmf3eR91&6@;Y7kh`+D8YUoKQebP;nvrScPR(Cb|})8HsTLlE0KEBESLek#EHobMT+?pWIa&enW3y-LTW7Otv=UDJXCZvTnyRVxY zcBtO}tO>N0f6_G9D_zR0;?3R($rm!=g%HVwLQDz4$fqo%M$=q7q6~aXG)Y z=?;u@d^`t=xCAXA{M{}*GwIts6UiA0#Io>5W0i@VDegBw1}K%exZHYX#?-(^LhsNi zXH`LoiZADr7J>KS)`9&2`GQAaIY#}6mq#_SeD*&r`-UQW!)33P-jO9ibwf3%qs#a9>5s9wQHYy1&MGEH8_(OBut`C~N zJzyepkjRk1L@e>-$rHd3U?-sO1}#1x-2!A9p(t~TjT0a^ZZo8u0+c!o#IPFj<^pMo zqxw{~iv5Y;d_uKfR+f{a8tBm*z!^L|m!4@0?%k`fgMn}qNC4Q}{LWl&%ii&M6mtkx zu^En}ehFq+gT%C2tZ~{+2BSI3ho{keNR4!Z)`p}L5}X=QH~47Ht3iibZ)w?LJNA^9 z2ry7L&ExJ-dcs|P_ZyOQs4dK(;yG9T6a~}MAUk=T;Jx`l-E&)qYM)f^wUHC-J=xWA z$K$hkKekErcc~wf*q263jw6!o%BolT$H@F2!jMB3u7`-76^!074UNm7;G>#WH+W6J zsBnuv?}yuvSHMHZu@v!+xDlXt%<6gTD9~EeiJ#v+?i9up|AyEa_wTEzT%{OU+OjTl z%980_1B?hBAhKJqL=pR&kV#~rnT8!_r6N*0#@F+#1Cj@40Ms%`%cezYPcGEGn`i8C z@WJDK{`|_ddXm`PVefgr($oxTt_rDjCz2nrDEn5#LmixOgA=_VbBVM5?nS z4RKj>KRpA(OEGVQew>ed@{v9?aVwQ!lArOju{D+js8rOOs+ zP2G;vAlc)<;gK#qHUem=Q9?+!$tpxyi9 z*R90FC`e}DLVv zg^hHc*e;-ocuWb=3!XHNB(CV!uU}4hyViM5N=Vya+aTk@vDzUa5i5r=dJ%9*%q%RZ zuJQr{L{JV;=~-*FRJ6$^Ky@Imz##)wsj00c5=}tMNXWCnp!=~)4Dlr#7(~$#R-%@L zZjW9fH%8;3X;4z=oUM+>nwY za>0co8p9JrKwQ(%K;Y>_REng9h!zK3>eWOFm|K61tvdz%^vftG{3)gcgS$HUr(EJ9h4bmJW#)@_IsquVW2QX*+p$JJfw>H-jjZGR<1;eC*`O zrr@~wXNPJvp{ z#pM7Bwm175K#twH#>mw9{@Vxk%$8%#Z1$%3x!LZG(2mI~dtdY{lYYnIB(?lLJo<;x51>q;Ckt{uVr7FM}C^Nu+gHd+bN8 zsat;%tdB1P_xbI_wg#RC)(a{HSh>%;)sLyiAZaF!3m@Omd@HYz(8cn4r-WfJ93t`kaH`C#tOOMT98ze)=MTo5dEUFXrPdZCI25MvE7-vp z>hszA*a)VT89#aU3_|zKcP$HynlJAtCNv(=<*1STc#cK+BHo7&pe6-O9~XxWjsr_D z?_fkv85>`Rb;E^WW5cci5XN`$?%Wwd``NN9gp_>`0r8_pL~kVCfVdRvfeK&KXG_F% zg(5W0W+%@q2gsu!4lDN7aw^R%TY#Ass|Sem(y%ugT23X!_r9;3mH`gTxr*C?!9xCn zTrTPRB!;|z2_E=mjZo4_{g9?T;IBsZ6Ce^UL+U5YGBh7D zcWTcfh&^`fm;&;4Sa0-M;#;C%p>c6U2Gs<8TP*{FW2dcX9c&Stqu7Gf31CSphdj?Z zlsdtj3_@_#csxZ1%fA43aqEOt7{YZdw|!W_MGodkFkdFYl(qq;ll)!e=E_Yninw%D}y$Ob)VtlG+~ zwv#_FfI7_cuGXT{+DLV;JAuROte600dE~H~SYj?CY92E-S^;5Og1n!ug%SH>r9L1N zH}5KRCz2c>GZ^Vk3!E3#ON3pB>xsTvgi3JEFz+B5q7#A8E<*x^D1c=>N)B+!edt?! zgKC@F>2R>CF`Din2%ub1d=7$2YI#^mB(`_%+Y0NYLcEUg%T<;TXCpFL*dAoC zLa#f60i)qv(9hMr`DuP$62(D6R=(F?eiIhg#z-dV;^D)G+n|v`gxF|mi%?BD5{Yh2 zlvrzOs9}Cn6#CHDc~nu6(!K02E%NiJ^FL!p;n&eNUenk} zcu4@#vSiIfRe)*0L5Nx=92Dvb_iaB8Pba0O(xF0})geDs)`lP5FDZEixEB$KAPXei zFOEOR9`FYbwNtPKQRN6h4;p`qt0V`COEq)a5j zH8IDdEw%8x37~vLNQf9(JNaN@5pC)Or9vnl^1?)&DI((3rBB8guQV^cEot}{7l4%a z!)ND{OwO%a6;Wr~cR<9f^g6JvALe}V1n5V-&PGkM@Bgs%7EoF3-S+T9ixQFo5&{ZJ z2uQb*k|Hf2f=GuTf^?@e2+|?lAl)S)f^@fZOM@VM>pAbe-x%+?|1+MUhaqhC-oILF zuDRxH`Y~fojIITd6Ed)Z^$rb6p0Gs#6vd*QN`mK)-1DI8e#7r`QW8iD15pn+BQToq zI{Rm4LXe{*W&?=<1P5>hWR(Z_H72r8tEOCg?I5TG%{?em!ERCTs)<^tZxOt6fEov5 z-dSt6iR{1l6ca=D-~l!ypnz6!h2(+B>Fybv6mXm&`@&$r+X_zVCoH5sd^q{o`1YR~ z!bb=XC-Jrc#7I zPKt5j&5i^lWs9`)HR(-rp%!B7#oKJHUIkR{q?@?a5c>J!EzWBzj9-rS+)9m9R^6S# zqc;{G;=~%@J8{+v!R8h%_CPVBoY4-82_T5RdX76p70oV-aQkaNEbM&S;VpA~ovf1E zZLG#Z6f9lypyE`PqE=6uS*;o!D8}PP=UmSIWhdE8i~e15RFSrRf5kWcY zx!`NOKfTc2g~srSbR#Vqp;$-WyUUY$c|@os{U&FNqPZ0(Yz&lN=|3XEeid>v2_Z1CYmCt_Lov*gXJEb zm_H^MD4lDlLxlHU-Ho?{+gHTs4#Mp>iHfno#abLSvzXJuGf2ivM4#_uVXxx)vQQxv zTkJB1^>i^3gO%a~EfSAS5ekB+` zo6{K~8Qt(dxJ&RdT|mmpM+b;CAboBG?N21LzM&yWU>`yQ-uyRSDiiU*fl3 zdYKIkRIubBqyjEz)r|dZWfc|E$u_7@wv%NmCbdG1rvUeF`=2))K4b<%LG9E*Qt5En zgHUjm(5Zco4Nwm3o1oXJJbAdlgO;0`e;-enS27k4b^ghAmNCBe}X`jDG|(5;rN5!3`eJC zojog{<#w5XVVhW5Nh%+Re2A3i9$jMExv0exIkZ##cAr3xFO7 z9>h>dNk|EUfmIRc?*u#wLd-x3F%>J_8?COZy1RQ0z>9{Oz+QB*3q}>lpt5N2i(P}X zNaW(TIMRRywEG~nf|rK`76Dgl+>b7vhqxhjj0R##KF9sLNYf`I*`WRDjgY_45CJ+`mS8k>>s|ryoL7?15ZfBcX3W& z|9eO{SxP{{t5k09s$P_kj_?op*ZjIZOss)0khU(05kCr*HQ9Q!HOY%XsUE9ffg#PhSGqJ=<^Ph*}65 zn>yXlCTgE)>H=cObxOaRS$a9njH~gvw{rFTN9%r*ZoNsZ!1EuCVf)=qny;OI?|xWV zOTf|_M4NwEGL_Wab2cJqX0tTltn~LIzm$Au+F_^kz-dAM>cjDuLVOGHG-LC>Kgc_5 z6~=nDl0QG_uo<@Glt1zOfuVukzs96=ri5$eJ{ph&PteBsfRA%GPih;F{*+hSWe5kgpMCPOt!Xw`5t(9o{_^aue8PwH_8Zo>E7OlV4LLP7pC4P}b|cF9 zH*J2q3La{2_B&+QPtH7SZR1`+{p4iw>G4r$()ii5z3N4IL<8Udfbt?Juvx&i43hM% zP&qcLxq?U;L{yN3aIoDHyL0m~Xan(4b^!enf^y>;HDDP6ENB1=1Xg;PgfJ`<_{LWF zci730{G&0*hnep0pSc8e06vY}jgi*_c$*fuwk<%V`46us*SSAa?lXkACIXxb$*ocq z;dsoW71C=_km)CixH?UQK81vw&*m38FhXshZw&TWCukp8c;^0x2-Z{XeOc&k|9Jhz z&qRJSD7nFp#ZQLb6jO=9Hr+xm4eeVM2W}y9!_s8Yxa5I74R%x{)db4D_loL*!nHWS z+yjsU=tg=Bi74A&|s>{uU`Ea=bzZ2mB%X#1cV>J^_31r-x7B+7U z>i7`OLL7Y^Kr0a9K*E~Y+4O+QbU@2s)jSy`WZV-L$X*;^JObW5!w$&_GA|-2-V+Lo zVtj^_78uS|vDpNp7tmco=3T(Vg)snp7+D@y0TG4t2j9_Ye?X=I9FQD7W{MC%wULZ6 zfEpk+hce&wyBMW1@QyBj`-{#4@d;U8gd+`#kH*+0IuFOZYy>IsAT0nc!Y`y`K*1g> z6dwi#2T=j^8_Ir$>^%g)1-f%u0JEHjvHtZ98#a0PAn_2GCs4)!&LG#(y7vo`?_4_=k>&108Js^IbCz+uSVb& zA{&z8QLU_STFGu;dIK_<^x-eSs&?4HV^@2?&_t^6nHM+sL3|I>uXY8lhm_)iiU3?i z_gx{;pEr7X^D666zBgA;5jxe@D8)^e0>EMbX&w|%H^{aatxM(POwuptKk4M4`s&3q_)TR8&36^W^gZDt-^Xl>Zn%^(GSsN7+?!?_9{z`&45 zD&*uqN`ATMD?*~f=IcfY#Z)i|U3V7Y=a0LNL{MY?CWFX6kSh;5LT>8YeRy`IVcqhY zj-|smx|7D8()oA`sCwxs;5@H4*XX*ov7yz{CDQc9svZ|pZ`AGgY6P3CU@>+bxzW#S zi)dIjzdfZa+@qG+bWFQGlE^&Bt$PejcwD>vY>tg9Y3bi&uF)o^XUK9M)O`I&d2~~( zwQ#A~k8f;wByxqF_U;8rENT^Y*#<>#j7-a8Gd% zXN35S&&}8LxcJ}rMR;e=DW1NKz4^=Ho;|Cb{P}=t|^P6>^C2a=Y{e^ zXU<`x3EgykEuXUEo0Zc8&dz(8Z#3le{*+aj2R;Z(5Yc!gWj4E(w4-WE#bLu~H~m6- zvd!nFG+ORb(XjThDl;|+PR!eUHUAN9+)SboSvxdzQr_@f^6-aa@+MyRC_C-92|1^_ z1eqCEzc|gKj9+JQ=X{eg`I(<7=bqbVic*UR%sg9Af2a3S-j!c%DJSHn7;45*Q+~kn z2STF452iS56;h)q$GcwEWI5b2#gi9JUwrn7ph1F+5mWi>OaJKSr@s5$u7{$0il{!} zk3XR0&RQ?my!-P=`M~V_ury2Sb?jOFVeavI>4B8mw6WUWSIgrv)N4FFhrN27raP4p z_{oI~Bnb-N-ml8jyp+>^>vcJLaq7L^SaKMt`vV?pQyynNz-@|lkRq0R6~D9RmI4X? zMqOC_l%SoN>otX zkBp0xffGmO>C@CssK)`yKxpcq|G~ zYo`YF{Clve-KD2Dfd1oMLEc#?s|jEtQQk^aV0R}be}NJ|J=j z`3@Ob+3tel>jsY4pmtmg;q3x@Nf}2+{_kB~cR(?V{%ZH?ujqbM%7qV7 z9+vrR|8tW()UIy1G~NhVfNbE4a_&>e)u^1|B?HFxUnspA&q~IXhd84!UvZ~s{e_`T3h%dzc!a+qzDX zIbZ^>VX)pFMtQI%0&2#qO7$YdE1B%id>kK?3*Niu3-yS82Veg3akAhs|Gnh0l2CAO zd10$U7jY8~X{ZD_0(SKsibV>?yK~PV$z?YWX&6Pu`>r4|6%P@9Bs|BPM=z#7CWlv@o#iqem`g8!Hd3>i?A!&y0z~_*H`v0VY5g=c6peljX5>_$(o4pOeI=(VtyTs+@@GK96%FYfo^$YfM4 za?)6rPI~Ur!^Qe*oJ+sMr}{%x+}!)Y2fHH7n`sPk5aswKf`=?xV^aKuxRt{a728mnVv-BIN#Tya=52F{k`LMqO+UD z0?xO?E|mSj+nwLB7!zb{hu~Y61(cmrB1~42nK>f!U^m~1qfpL5_iPMS1#4UWKeJdF zHS1{qd|MfRuwlg4NU>uP&YcvFfXV57RkxYj0}tBl4(dX3(vKe$ZYZ~IYkbojqw7a~y52ZiO_%W1 z*!UZ7$jE_&%=C(Qh6Y*nw6Y~<_+%7{*i#R#U5=lER*5yDrW2CEgg18@KL^0RZh@Qe z?xz?Uas!Q>0ezyLGh4=ptdCrLS(382C%y7p4ydd%!AgF}{j;4Qkz`CUC<(RjjmF-i z+)IfGYD6wT#lPG~aFNSkr8{L%5o zNJaTk*4nPLNbH%pDx0I}<}^nJ?a14{dK?2^f1TjR%=SO8+m1MXQteGbLvRRLdr&$V z-O6pWHMP0RTu{<_{Xc)C{H42Aj%?6;2f<8{gHTHJ{z$P~^u=*iQwVeaAED2Hl6)C4 zlhM_se!#}Yh%fXT;Rwau@6dLy;C7f!6Y=ZU>o4m0-?J1Fy2SB?B^rTO8P#-N*F+B$ zzPqr2v@c!>MMJqkSxrq6Y1Es9w5eS}>dtpHoXpB0!Gdtm22XG~pPFL;67tfmrc;cw zWj1%2oyPMW3}5Ghl6^@guaYY0u$Z;T)PkoXDbrdLi zI6q)x1q=W%A?BNcmE9k(^9r4XuxIyAWG4?c{ za^36wI0`x(^GcSYImqdK%?x)E%rUaJqrc*mhtNeGcRh7%_SSI zpLS`sRN@LRu=hDba@@=p9@q4qG-sgnj|I^0c9wqK+N6 zh>_t2%R_{9+F6oRPp$Sh)F8{+mx)$c+l2HxbFa~x)6YUMV^=ey-lwhiE|#G6It z$1Th|8T0NusKc#N6AG-X8FT0@8ArK8G#R_X*MNfXu=(-#{!mYi-`kdjPMWrzD*;kQ zKl2u^j#pV};enc7*TJF@l8crlx|BHSMgd*B~}>iWIH@;fz}#jMBc+oA6vo$pdn}L?K6H z&AM#x;UltFst}jJ!40kJdq~ksWN8sjK_tcp`PRC^kg5QMeYgGq541Y? z0d$%-e|1iA{rYvN>%i|VwVdMF8ZSjdHf?|p2P1g&I$~(`=(z|$n7812OSc)&f!`r- zUC^4}PyT#$@#_{6gJmwR|Jq96hQe2N``-7samUwx+!Ng51A%%Oz=Zc~_qKG_NhiMn zx7qI3w9CEoy|65IiK8E!wSK>}DBZG9odT&sM46?HzLEk5s6T6Y@$yxbrv}CIg9{YZ z`vyA?E{1e9JZp`+^)DUyA600X43+m&R4qQmMyNG{cIMI zF+#_waKqAwpW3+>XGtw}XM%#Ps3K`^Ue;#5LOh3QWnN(K?#_cjG4n2IHzUGFyOV(( zw0M4&b|&K*JmyXDScpKBkvyEX@C0USz_K9 z^fM@~WTDC%xQ2$+Y%cCxuiF1mu%|R1b_jC7A`nYtda9@j94)3F6>`SS zS}ie!x#I8Ml|ek^y5Aco@^c`fFMYWQKYhJLAa-ZkcV$PGt6|P3i%7x5sfmEqb<8nQ zl7;(SC;1D&=6>g1;tqi>SX;7;y{=J8U*kGr~+aycxhz&L8V`l#qU35XjLX8 z^B73h{d05pz?uhB$Ny9w3*T3#m;>VtP$lSqNF7pe{{cO<5zqz#>jyr-G=s$pB@QIK z0ksBZN^bAceZXsbv^pWq0}vR}c_<7+kyt}O;vYCy1oXfOftu36ih+Ugqlgh)%d)c> zt=6}<8$4NoGOI1L_l;=0?gQJWZszVJ5G2@|YoY<>Bs1B>t(*FFWC*(0BQ$O|qdB#* zfq<-C^1Z(rMsM$%e~g?Ln)2gWeZJ*Zgki6rGHTvZnlhHQ=ZUGh607v0BW>?5f5JBk zw9{9g4bE?{9$vb15^P=Wb}AjolOJX-v&&Kp06$)P!g3x_-k|IMr%YoQx4r?x-(3^8 zx{}_u|4~C#Q@`#W-F7fml^tUq?>mot0>P%T+acl_p%bD40o$T%{>vk>WHgh3-L5B# zT`U8>)N#j2)vE)4nEe=wcqnJbJmL#0*hyo4@lf@@#;P8C_vsx%ad@#gfg>Jo)+_63 zGPKhgk@bdiD<$%4pr|c^n@#o0IySvo@>Galoqf6`_JePXo6J%|A}Xk?KTSMzQSZF= zwlw)ZR7`M#Lf8D8Cu{Wmzv|qwDYJo<*P1PJzX|gruAZZ9usuwtSPnk*{V;%G^w{;-!^a&m6{>LiB5urEt7YF%=k=AllZ zQBlP(okYoRRBXh8;V|uhSUNfaFB6~U@%pcUC+TSHm>$fMM?Y}+4pVKkh=~^#-qkc8 zJideaja#?Q;pT}&Y1&TQ%y{F(wIOe*Sn2|l<~Fx10^B~DX3w$77~*=?8?zXz)6({Z zmL!_rFGB-qOM<6ZLT`kGC0O^(KN%L*3LFd}$(hyk+_=g?(=p;|Pzz%`p^_RpBJKT$ zpbb20D_I~;?t#JxvXR<#!j%NvaOY3=kedE$TU$Eo)*{@n6aW&0KY?EX{Z!WgOoUcS zs9yVsrA6cI-4MS|3U1rB~8@;==n1oBf9QOO055a zB_@+ukG-+^;z0C@6Um8*j3oRsalYFW_V@gFaY>p{gZ)v*mtgKM3%!n3G(#`)XD6tx zC}_>2t?WmcWHWF(L(6+O-7Yg`S^k#`P9&=6alSxD_ znjY4?ohMdvVez+P+#@~*o=WOl6jz%ZT)L~HtaxEDu3>3zQ&>3@nn7)Xp*?*p42%=i1a3-|?yaa0M&F)q?&y8UoMo8TWi9R)|Lf29~>eP%W>v z-YwM6pME{oX0|U3QfZr@ci2h^)yr-q&ax!Q8Gr4yUi6NPSN+TJ$n{v+UC;Gwg)!+2 z?l5!H%~cLe1c6|D@@(i-@@R8O4QjNu0{e`i*qIc)JpNcq`G`*^&zyG~74O>R|HMMU z37A3ct&NB#OrPEhHVW8k;R7%wi(1!p7<(i?#lDV%>wTNs%T7I)9ca0O4*-}zD$-rI z{%7t~ugBhNjaLEALyIOqkV#67`>2t!bBATXA=#R$!j}%Ee9_WH_Tx(*>H!^{$FgzZ zN7~mxO`m(P*ac4pvlG|NR%XSr9?3m(zG!fNE7&9cSki_e*q8G6rG5emB5#`6>`i=Q~$gnqL_OtHgw)O@ZLTy?ne>tEW_5NsW8)Qk<>)rhSK?{ z=&yON^PQCPVzRx{t!w4)qsPy}2@ra2tM|250y9W&GMScZr0fn(`TXH!&6(AI+>W+9 zuV`+4r7p~F&r;;YMP1*Er;Xlk8`m|Awx<14&7P}%FaT{TPpQ^YP&P%tXKIJj(;K7n zm1!{f;lpu@hX{%{D{s8Sr??gLex%|G1<&(QSE{g@)Ws=xNp6*dpeUIkG&r?Hw4`p- zyt8QPyXGOiI4is5V)?Ty(j-lzqam_&YO4QK)Y9Z4g%Kr?I*V~*;I}Gghd|2f1H`5m>sY>`w}4r#$IeohtjAuRdM&@Wc(;SwqvaGe0{W#JoKJpX ziJqeT?b$s+(%w!XcdPM=;3&F2i)}0v(p>STkTBr)kG}dtQ=?i`c4n10+cd40oKn1$ zk)O2mc4j{3=gw=FIOk(mX5)Q1Zh1sjrP@-RdA$O0+DHmC3_Pr4LCms~c#3zu)w45! zNyT&C>G*La=Mxl^btmkcayx$!d~{xg0$6IL^L4Y`PPbU$o;Ci)&5 zOJVXN`td9E>x*hX`W?#ab;2sI>5Xgo!eW*7r7mfj@-Q%vdxeWwGm+XPLj)2mC#+^; zEmaPuO-zT5R+&GiAfmal5)M5^XlewW^Uj6k)$ye+l5ITesr+fqFT8D%+0;gy?TR^E zKM;CcX+-Iyw=nEe6cc00TOvjz@3_}DKunQ#_Gv%)r`KCa+k_hk|NT1oJxP06;b2D& z>ARR@hX^{-Shk*9gEk5Izbd1K$e-J16C5}(y_O!b#p>@z^Wbb&;wnR67?n3rY+smH zzx(uAS5n~V{N$ulLk;=saO?iJ?9bbe3VsWO>a89OePMA;-rJD;{NH2wpRd#tA)N;_ zZyuV>+M#x)Qh)j@$N@6{en?ZGnhwpT3t+=2oa}o10-2|uX1o8%uKrapZi`PX6aWw) zI_NZew&)>1LkBeI8$k~6H8@P4_P%xVMt0yE{$jyg6ex8*u>wZePeS7cxIBc)IyinwS6cv@K@I%7LieW#9$+~*=&y1zOkQ(+Q+qZ4PqSGO5Z+TiQunuoC zKR-9)j8Eq7or`KRiiye%PM2auahp&sI}NUw|Be46A|)@tkA)4iTCpUvf2xJ zh=<1a40TS+Wq4AjVn!B)i=ZrSX=ziub08Ai9UQLrWcvU&s&8`9LadjW6hRn#rGzSO!svym z{ekpxlkAO#4)P|ONER@Og?AUf?LL$&tthKJo`vzOdLv4cn}+` z_wLu&F1`4qcmJ(eetYO~cCg!Ok=jqxdl}+&M&C@n?%P;jxjtQo6XvzomCxO!1wCoO z_&E-Pv6uQqpN2>Jv&4R~8%FdsE(c2L5ZKh|CA;_#aR--E z&FqA$ZE`fgFZ+5bxuF0tC~nCT5bMB8Ln#IlKq@qX0`JbB= z4S(;dl48-e=Janu+V0RW_Xa zqjHZmh-ACXr0zMHJGTVK%m}P$m?DgC^stqOSY7r!*<$Jw9}+OoDf>_I|3IUF-go z_dC+ueEAb*$@?z4_y;_~ALq<`cN{t61uU!?Oj4&}!wPFC0$wWcohG{12^te^=vJlb z)nRrt;IgxEr=QV$M)UzYZ*km(t-5R|1;wtg0 zcU1AAFZ#EMX-&)7g-S>;u}d0se7!IEts8ZNvWkS3GFKMXtISGwlsF515}WM&Y*TmT z?P0S^{rzOyK|JA1bJZiC)VtFw)E03Uw{nLQ?d=PXvWoE|Z6Y&j9(s2b?s)Cs9M=YN zDs{&2aJ<6VfWi}V&qf|f7o+P^GXFhOVd5Gkfu_hjsSka0Tpa(peWK!O>=c39@r1E0 zFTzisK>^4}-LgM^_fEgX{2}sZjUFVVQb7*?ohOHF8`p=zc)Ztnq_r%mizc1ceG+=v z`7{*IKP}I#Z}eCc+&urlMjIUFQg;@JC%*zoIvJyK|Ov?VF11dIA+)JnS zc{-wBU%J11r(~XM?_|)!rEEA8Fy8fKv`tO5M4d7{IsUqC#Sdv7;z*~SW643w;w+;e zgVS#>EwU$->2rO<4R*Pn*ChlzjDPTqayGQO(j#wni;{poqHR*3HfitEOPN9|y02r( zmjNPoC~_vnB!*?wK7>$KJ;f;QHZXCM7yd=@Jjy04POFf#yECiRT&6%JpaGLz5f; z=!aWneS_L>8zf1C3=f^U`5^D>hibk&$e@+KofB~a_8kZa_k$)korn}^5O<||f##E@ z^O;@0nLZ?AqLbR0h!NWbXX&AZ)>@aS#mxf;Z#$t5ErfesT%!4 zq8A2PJ<2BI^BsquA9HIy2TZGf)e7vIQOpt)pNj3!DP>Uph8D{mn5#9oO3@Xb&uF>v zW+Ncu=V*jmLk!mfj@|}pUc*y~h7i?Q{$R|;tD*L zR4yKjTA)TFA2oj(Uyx>2K(@;fE}|`bkl?0%FH&Giw4?6*LZ8N3MR*#0!CXb_CcgmA!U@?w#Cn};SML(o|E$8DnYvpZ4#p$!r_dD zA@*VS4fGS7|12fPvLf6(Ms8r`!jsajnYz=S`n zQaAG?sc%`O<;LY3&Rq?a1#ia;x%OdPt(!6$lT3`d>)RO}tMaNBnzST4_rLsd9T{GG zrfeYmi6)q%{)zdPO{iVH)d%{Cz$FPbET&u&XB3j1qKu6;b^hd_5LM!M3*&A~*6{bw zNGb#ax-7GgHS%-beL!9+P2{Hi z@jw4Fh}BZ}BHiBRyU;X+OAo4TX-{e@BuPjx=3n45{@sww~`HCIXUh8@IyA6K`q#gWc&fPB-Y1ZMrhB;UinBK1o z-w^-cE5Mv!$1r)%RI5&1VImbHenU}X0awEy%(iEdHqy#jtskBA8$1*y(Xw$EJEcNf zDuxHwiH5ReLbO!KPyNhM@#r@_l+;5bye6J^Hom{_ArSi9hO0Fc%RE}GeCn>}M=Mqb z2~8i#<4w~ifg+HFH3`Tsd8$QT}5Sg=5~z13{u zt6`LtF^G&p#Bx0!*rh)gu95i#-gQ6HaQFTC^$|GM>rFsy0qLl5vHr~cqu!gIV1j!l zWfeDtc{CL@`?nLtMsTR!PZEC<*fO~)!L4izzlA|yR)KE(*;3Xrbbu&>g|%ExC7cdn zZ!S2gI6i+UpBcCwtm5MojhFwq0~Jq@rE^MeJ$dD3$EIYVFAp=-gHnW3AzTWrlDuzX zWM!jgBn0nvxfnr6j!Ol4M<#`dMlNlupI-`v^;{X1?R2Tng|XRQ7bb4`1jSQ2Jx3en z#v>(M7TamgHg=qUeQdXhZr$>SJ{NGbdM(9JaCv$8d?g?FS7q2i`YW_Zuf-QH$S;rI zUh!xefl{!pZm4mJD-YzIIBnAo*CO!dwZvt|?z}{0k=|6QYC?}@>#N{r?k~lR57r!i z#+{b7B18OF4vp^v>A!w)8+*?MtzPT(Y#<~m)+Sjq6nKE}5U)SI9@&Z$QVuIKGjkkr z-jaPVr*W5pnh+(Pv=5yDnO}{~0*=2#!r9cmPP;Te}&=jWh^_u zPC1b$g&hcJ}xjwcmQxgPgT-#ZVAK-YPiD;lx105i-Pq=NCy~ z^BRB=>=7MLZT~-WqOC_88pPl_+=fJ>-&OeR;uSP;+9YD2?>-H#1zkKXUx9Uj2agRT zI{773c#(0PB~SiOwgB%pO-5cGCk30?{9ep-`J2IQa6U2Yk=Inux5JZeX2;>=a6jO6 z_l9LPZ9iq%@)fC)3zt3J1x4g*QXOz>5~Hd2^3q;L;|-Wfc4FU7B)~P|d9L^3({-6U zE<4A+WHZ`oD4tT7aNY}WB`r_d2z}3mg9soTCVvpHUDoG+u2cw5%-mof&I?-Cs@^D8yXrqK+NK8 z2t;Az>qO>SFqtqB5;+>C5f26Qg$FzzD-t|Vxe;>r%el^NmX{GB);rfk?TsEi?SEr_ z2mA8wqvWTZoX!$l-Z4X_zRRC5);1bFzZy&8^;R+s@A5uIpBK{dvil(F8EW%T-PDyj zSdP`iDbsS_FAqm}e@F32=O*r2_0G@(nSLuSv8gGqTKbrp-5s;unWTF;lLj7A)?XIw zIOBh6_6z8{YdAjq_xv`(k%}u311%Dfb^Cu-afrN)4M%r(H&WS(#TnKJ(g$ebGS(bz zz@z)a#`Dz5`Sm)D#Rz&u1Ram)Q0PX;;~%24!HMoQPsXy^LX+Z%2h~-p)LJ}9x3uEC z8T%vzQYYxYYE!!XMsKXx4-D|LZo9Ll^gA4du2z3DGF7*U1Y+I+&@D ze9q~wbdR<}BzyGctq-O|%gX5ayS;+(1j69cd^tSDLTupFnaS2{{lX98|)L?YIx-ozH zgt)=V$FYi3+ucOs`+(nXquU%HHy)77Z*zCaq91iFHYA+BZ<2B?BY$LKB%zL&L;bSF zjGWhdlD%j{=ij@*foB9mfl}_shD=o(0}DLGe8SuX1B^s?Lc(p9^V7vJ7zt01O%6le z+ll-G@&F=k(Ry-jjR#zQH8BANPnbFJ+rw7wWEPWP{V?}3BAnqNsw}ekvgk`lDU{}^ z?@W7rXW&T`>Ube(d4t={tW|CHnwP)OEwo}ixUb`HupKSD)*+;hmSFKFx;kzrsh9Iy zBtDfDquVD;FO^rKB^S}LuIV2h3KGc1_g;usm(rJ$rNb#jC1rjp(pYzkt;R^-D$56b zv9h-xVdC5#Tr0phNzLqMrGm2WHtP{ja9+7lsrEWwH|%^EQ9G7qoq{bDM%CLVghdICotJZ3|GBNd@2gF3pH-WrC8a{sHBn?3BVA zO%*8_lCzblWV@qcQ8B28TKZ=t*miwX5^cE;R^BOZMqJGsk-ewLkfWR5@;j0jjK`yr z=zZ><=tb)2d|hum9A*yRn1!$Dl>pzlmj1(H@@~H9Jn_rpLUxPaoy#R{_IbDpY#J>W zp_Zq&<+2Fc!zjYvRbpqkzir>>WP0uphWX3?*CcA8pTe2ukIENw# zmp%R#U|9N_TmL>|&_wk--DT|63b{D%7K%MKU+^KpJx`WUsV-uO2eq?;Ug?Ery!4FB zR9`yrruG3KYq3n4}+nG)!~s3pgGW#+k!ImsOJUqBI=Q6rtq zU~F7T*6UV~X41#ig!W(~B8UPG;=vGz9CoPFI^Zwqy?`PaXvc&6>?Lx;cjF_!)+SH! z@zb}uyqu_jE-eKq4yA|6m$X;}{5fvfo*!q+ffBp;C26Z+sq@KpADK+Nyy!==M}@=v zXCp!D13qt@45Iyh&Sj+?jqXeKh$+tvW`;%C2k#{PDRCB-gxRK58%V zTTJIt+tfcjv%{lMU{qWFXmFh7R=_V$^<`9<73Gepbh^%OBZB2^O9nv#{w@2jQ~rP6 z)xVPYm*v!he*eSm~S#ay`9nnwb1Nl@V;sn(vAfuX`S4b z!M!O#ua<(#85?BOeelX(+3FtmE6TdUl?K0su{kHAin_p@Hi@&k+YfGHQa$`qtjPXh zk?D!FWU;-n9x2tR;zs%S_l4uDS^caFHTs?Gh-&TJN6x{=jPXHRvSxNanr>O;W*zIE z2~DsGcySE0OEFPQG^VCqplzow;`Pig$Ue%D+L>tkSJn)v(|5VZyIRoa?s|1TmyN7A zf|EGD0N7?uSX7qGxrem_M`s=QX6eAUWMX5>_NR6V09^!=fiIE-H1v>+y)^&$@#7be zC3xO9=>B)iJrm;wsf3Wo=n-9D`N^$_^%||bw`N%@Z6T_!R1~5GaWV*`Y0Ss<>4w~h zNM=cX3Z^nFS`oz^Ybd+%zZ#cLe42D-K#zGeKw+OphB-E zoI@_4I2^9;%%LW%A$Np(q8i%i{Jb+gF{Y)WC@H4Fe@65f(>h7nK&*E|$bK@xH z3K$Pm+CP03_7fE^%)Xdm$Sd0G)G^N5_}dN=0#A3PAJgU9-pJV}=NxI8c-pIgd^*W? z{0$k_U=iJ_mm>Zc=8}YCD^a;w$rN*3Lst!j9`ff3Zs`VfEh$MXHC3 znP2(y4QeDh!h;N+TM$y!O7fUeMXJ(nGp+A(`fZSTF|c45GO}gFXve6mZsZ&H5AK*U zz!IHh`Gorvk^6zG+i>?*Sfe9)cy*~(va=jFIgtcmXYB*Ad&???GjC5{utk#XhhtNe z|Fl=m&P@KuYj)AW6v35{ms9aMpiA*+N{sp|`I)NuJ-T;Fo1QL%m_6EF@rPj}%Gn74 zl6;#Q*SvVB8MQx_jYV*Za!2_-9(VHts0ofGboFiQ+Hz%#0I${~bK{ z&M-IoOPwEe_3Nw%Cj1{Kf$8^_C~wf2o}A+9TG-n(U$zrS! zwYO0diF?-l@UzcX(fK}^; zx<6CvPc@AF^x_&i$G11-_NV4gyh-hpk2)e0H3IiHmux4`f@x3thqo<1zwHOykusK$ zJf-XpO^zdx@jy4r7b9MR3G)Y{`iGnGfYzA3;vkvkCr&7uek&{RNwofNuuGnqS=J~I zC&`;o3poW}h5hslyJD*xA-y+rUw*E(zWH$5c&Fo2?c<-pQtElL#2vzkY7!w0`-%QW zqC;DFWaZZxl3Xo%YOaxMZ0gSB91n+mmwIfL|LJAFr+ME_6X^~<(McZNS<8+|G-qS) z@?UUU``64W%SidVWqjx_dO`ckrbnVpUNbZE5K1?pNGftIwA?B9S~IYKmMXM=|IY^9 zR||3GIyga79rw6G$#U)Td>0AgY$^;r#eAgZP0Ie{^`{49q#f9G^m=95c82MeXf({r1v3=b*q~a`Ej=``BF0l7w5g%Z)UM$ji6J`LS%aqqPKMvS= zWfkY^^%L$EGnnh)`IAR|qxBvt*^;_+vNh}%ctMgS9C3I)^>=mnErPII^{f$6{&Q>p z#N{6X6J#nka%P`Myvdxz;*NU65MnAzp+S4#bmxt(w^SBK<;O(7CvwxjKBVB)iHc=n zH$JJ1!56->`Ym-C?`;+#Z`@zJiL`@o*-m?gzc)gxNlKvA#{n!zvqME+>0R7u3;y%V3Ni=JeA79YFAv}I~mvPm0r%r{GAxITOYE9|%H!FLU z&`Rocyt5kn#}ZAPN=aiZefy_hdDIVM4!`epeC*MS`XeW5#b@XhsgQveX}tVdC-F;^ zk0(B+%p6pBh_3#}2?(wbGhUw}Eup_I1UQ1_UCwD#G13W2SL#IZv!;*R1gX}j9XA-g zwXhbY(B6%jq{b-UWJcVS%(07f$I;(#U|Hki(M^q#j>_~zM;HtA6I9ADvyk4l{!9_i zf-6xT()h~gMi@z@t$ueBo_mV;$rqz&_0ZcCWRQr6$a9CRq2Ccpe~C*_Sre4-uP8d+ z1tP6ZXi>KYqe-kEfKbwr4cxpz%JNuUT^$y4rb2BJl1%`Osrn-$cHE>SNXUp6ddEPp zzg_flQ528)>ZsT~1QJN7YDnCFwBjV)!%fGC;!#L#SNtJNWL}kuLWHZu`ZFefjn;fp zWj?jR%_l*`q0i0FXH1-Gs4Fcol;$iYLN$4(1^Y)32R|wa>=H`^Q68hU zF`y0aay64q?)YPsZVr6+8gw+RIUaF&1k0V`gYKY+12MQSMSyN(Ls zVO=l#=i6y}=b?!+Giy7xsMJ_@LJV-;+n>`Ma!SkYoeXXIxCR^4o-a+15-A&j8Q^a| z#t*s#gdZU5a}ELKFr5r%(7!M@qnL?m8+vN@3!97LtD`2VhL}&E(7{VQ!Ey=m%`)qS z*3@+~aPu4D(TCa=hJwcbW@SCxt@L3+UI2cvXmNcyUIbruF~D3E6Ztq475w62&6&u% zBzm}NevtoI<8TsCI#8vec6^9GNp)0WVezDG6G+F|)VOaenh8hO2$JJ^4S87@ThF*^ z_4&teABP;`xFE1zS$3V-yNqqKSYi z5m%xDBc?)@l;YL9hdTQ-&5mEuNb$#0?G~TBqvN0W~>36jSEqW7V zcr3oCzjPAH5NmGLB$x!qAt4Sict@!3kb{^smTRq6pqIQu6pw2cX62h}DRdr26vG*1 zGH4(^R9yLbrueSOyO6Fa6ORQeSls6N<3?Wk=_p}Kv;NtPr$Y3WP84?M!Aj07Cika& zBaLtOkCIeBk|4v^RBCeFp~3PjFu2+AlZ5el={|n)_sQ&)WW8w`p}=$Me5xTGOvKv8 z{ML*AMjdsCK+X%KPO-q`{;IkYQsLhCC(Oe>+{)1M7-hwX{6A>#kB>%Tf3Xt_#aDld zpR23;6}v1mw|oT?&eShoP~SG583BZCb+;(@%^f0+p{0k4b%~B<=rOmd=(3B^v-ZW7 z3^yaH#KY>T+C9o{Q|-p?9nQ)MxxV?;_ntFBPH@X0wk5Ge0EM@CIC8Lu%jRQQAGJ|o z<855Fk=Dvg#N;`z_|*YvxdY;jmE`OUT|dx{Kl|Yr4+TDvJsh(M=17@|dPZ&Az|n`R zC6Z`&j>x&w8ib!%bn{?jTxai8#U@u(6KB3VV9WrWgyE`+c}RjQRWAt7gNU_h@?&?K z!MM)?geG_iBv( zQ*G5}&kwysU1}laE_&%qFx{Er>+(#M~?MPbnA%F`ShE|9L zegPtGmcxu#-vWK!;uaQkpKbnOGCsdtPbmX? zBmS@`lC11|k~>ebFzm2Ec0JUo;x|#9ATs*d@cPxk52tUH&zu`OkA4AeRh;)>rsNb& zs)2p3g>Wp9BEp;`MMWj8MK)v0qa5be3_&Tzq<`Sl44m6=Nk|C~vQ=niL}MLcQ^oOIwV%~jiG*ivoaq0x>`2n(FKa!*%6subqGFQ{tQ-uj>& z$uof>%%)|f+*+;O>If0z2bD8}CtB3aw1u?g2pEYW8#MWF*?k&0D3DP~sWtwAx1tTn#520kbEP z9xKV50IydTkJ~%oq@Hbm;&EvQhxLXQna#ZrVJah@&dE7J6L^&!X_k>P{hUlE zP0|-#oiqy$c2{KwQyUsTJFdBfX~toxSD*9U?0b5j?auxoX>U+#@==gYI8P>SD*>vISYohI7wh> zCipqE&F3PGe6mHhv66g%3snrgM)Zmz`IvgNnzH zN44)w%yTolS=c&SkR-t~^|;;S{g97eelilBIuMBlxK)C;vU(27SnPl}9aPdpwlKlo z`sp@f>Kam>USP_pye=UNM$|36F_GRy# z5t*Dj5uicE+OwEwADd%$Xx@C7W3I#>WUN%U`=G8fI{kHfxsq$nKXQ`2S0&NMDL|&(n zPNBqKWD2BIac0Xk$4ZSX=sQ|vKML$3lJcMUWoJ{izX&fpNIgQh7O7vD}Dz*rb==n4ztmfdcmI4HSF5xBo=)GGUDmRFYP zh7KP0i*uBPkeU2vN^5J!DG0Q~lb~og+%oQ76;B8Pb)2fbtFd97(&qH8CaSIOuyid- zOIXpcN&XZ{of;+6Sg$TDyCSDwQI-yDV<;`FN<6V8Ke8ztuKdUTwW*E!@od_Z#_B5N=^<_(6~3h- z_nBavwoGNmmFtmpN#0f_v|3Gmh&QJO|ipRR&zU zC%6EqoScug_Wzhr0PBs-Qe7a>G%o`5>Z4^tepHAP9mFmh;C#PM7HjT zz~{dLu{rsp_e3DjylXd)rS7-3dSyM5#xy!%E+yu;OP|D$5W+7K1!!W+b4sF_f4sSt zM_#(8TiY7j|L7OnHLHtos{H;hl-dasi-5oLEzKFF(orsb{HoRQ$8`;trzSeyT~oY2 z;rv?yTQiJMmXzrDt-G?qw|KUnH!o1n$E>k>xMsw~{K-AF7_q;z5b7lF^qGeC&5Ow2 zt^TRF5?B6&?%Q7z{_*r$x8M6DmL&lD0kOZ>|JjMo^8XsB_Jb-f{8lZ6Yku;OtPmp3pmF>NCJF zfib5{>V1b4^wHsXPaj)7Qx2F3g*PAtsDmJCD^YQJ!H2+`bn^n;VTPG6` zdfG`I;_&+qE--*!`k|%^czy+U=zBaJ7T*9l5Gg=r+siJBM*^(?+@P~uzQnfhl9Gln z%k`$Xj>@ny?GQ=)hCz84_WvRV5y#2^w``HL`jDS-!gx(zUV~%*#a8PpIkYfdZEiOU?Cdrn#pdRw+>MQr z`b5d}!dM+SB5|E|E3bHeYM1^V1PuV!;nJ0wHpMr*rY1Mh;UtdVfcZv(D=b3~&XAvg ziWNYd3_H|;As;OkdSVVfBHNqH%&nkjrb#;hP;&4@?pu(ZGSYYSs^VZ;zoJjud{7EZ z&0saqj;x8k6%YLn_a^nM$`eR*>eVR((HyjC_`Ve2F8)b)I4{th~n?I&#m$D&eXz=JFYvksb7IFv$lVN zMz?{D)biz0t7*z(m{=)DO$;Ir106L!#^<0PRFan`B194bw{r~+vRgdGZT7$;4u;&h z9NwK1kyntMoh?L-kDqZoBdp30B(P@q)dNAvqKiQG8C!iavoFzc-_)^$o3PXmK`sx9 zk{-+M5zaPl-3Z>NmjwsysYB@I*#npKyN~%_p^|<;v|5cG6*4CouA_6w>e&)CUumO= z794Lz%r5$9Opj!;MWC6G`qQtn95KlRutW%+^Q-PXyk~J)^W|?%u=}gTNDoEa{Nd18 z?0L`+a6J2W8(TcDgY;O#A?S9h^Ga_U;lwPHErJJ^QJz!Ot8Lo4jY-oBOlyuqQse;fIpEB6+#XU*BQiQ&1oDJ+2vS2c}o2O8Qv+MLO z5#L_iLijZ^N&-RzU$U>JUXIFUkvTYGF^_HfP`D#AirQP_9MqqP!QqeeV|?-EX=e%o zXYg@+h!qLL;v=XE0Qyou2gYheqdP$G*#guUGXH$WGc5zrz)Nf4hc^$fU9@^!Adjv` z25nuV2|(&K6X`X(ci8D(cJH@jbz&I-gbXUVq#S@Y^RY$lZvseH0fY>oFZBmdyzTMN z>Pomg>Hi`-SNJ*n*WPYgdM$Gkyv zMYLsucJp1QOU3W{uK`xfVg$`wE)=XVp;mv=FV5b#2ymV{#6xFcx*zG>*0g+>XB@fa z;bg{)Z)lm8ey;1xCr>s6)NPDHg)NxZN>-H;dSZyOPJuPAeWEGE^P&hIfoBc5y94By z0$To2F$0cl{3MCbvPyQ*zYa9Kg&XsKvc9&%DRy#r6m0#2NV&r@vZ?~s&f>~XpQaLW zF4RBOxcW&^oX24OMv*>v_`_H6=DNHHIY}>e&4zJ9?t>y*qxBBOC$Ncj__d`?pY%*M?7z=L`9yzdun~{oM@3Fba0*=z(GSCGC{P>7y^nY}ha<8RK zuJ>ooaCE;2TnJ`q7m}aS;!cB>rQ%ekFQCP$acQqvbfV+*1qd_9bRs%^}Fm)_rq-Kp+aBGP2q|Kk^&@nmxW2nqRsbLTbD$4mv>5i{fO z&O4uN33(li75%@2T<`MZk+t;v2ga6eDO_P*cI=Z2o*}l5G*EYo;~zw z%bxgy#F75;vM($J&>am8gF1tsKANonj;F`v01iNHF$hX=U`JK{bgIQm7xrq*@NZJy z*eGqnn6y4+1sV(rJ`GqMEa-fOklPB4(6{kuS`Vqe!BdCS_RW6oNhwN5pe}forcp?> zM1r?G_**3@TLJmkh$4P(#U(<|_k-S-VuhJVD~2jT$*k!Y*i_}$;DHyHv=VU8%;U0Z z`ye2`2fyG08O5Lu1_p`4+|BjHKZ#aGqkZp}vB#-Z^WqG+g!He>=0L<;z4AUkEQX8S zOCt_~6#>#ON(MI8NZ$rPo8vhI`#NVERiMglp`j*r7>MRP^MazLgHKD6F{^I2B)`sw@3M8Z_*V~7jIGE_nX;Mq|F z8((omu{eFc1Va@<0P7ACI+<6*A_Pd(H;|r+JwG@?D!WYpm8OJ-K2c+5YCf?-MGTyD zCL7C2^X4MDi5LRABtet{6AZ+FDUG3~u{R}KsDd;=gfHh4=w~JA$R5}2!Ggk@jI*NG zPlwsVt4T~02>rGQvCpn!9Zxp>3k(`lT7|Bb(`|35P;!unSuz<#T8SiFG4rnj#*!xp%!-|ARzI>;`J?Vfg84!VNQ z!d>1w+9*dql@D=PN!}6oioQEqcXkxBjXS{$C}O5`O!hL50cjtPO-cF_()TSY<7( zutWxRm@#~O{15uB@cZM`$9R_97Fh62awJkM`7S=BOhB#Q2fuvTIHOrn6o}Ed%~V5_ zojACIq(jp9-MFgekbSoWY1&3~nLj=v??>77`H%Nu>qv(*d9ENKf`3utlV2SLyZ3kQ` z5fqF?_FfYQ^MG=4_k0*W?9CQ`8`Xn%HDH%1_0duymx~CJ%JoTy)79&xdSK=0OKfpT zL{DX#Y38CvFl!g0gxrrxO|*mIq%<%c@uJMF-ZUJJGFP0Q|k;iMCfns z+`2&}7CaXy{Og{~H2`k{HfQxv%zIcrTJP%N;{BHQyM4>dnUle^R8KR`UG!(hOkAf4 za|KECj33!3^hlXw^|mNLKEjE@GqZaOy)CpYoJ@igF`4ig55fla0&O$J2vv`~KX_@@ zo)5@gItfj)m|fd>xDJBC;VPpRvx^Ss=F~ zrR!uvf#;tdG#XG^KmM;m*G7|-)wtJPfpK= z2Hq)F*j=&8|IuskpXMxebx1IfG7^5{-)jA6fFgmUEuGEG@U0@no&br%2#z$a2}lFh zf;oP8!dE*!6w_n}v$_mK_AuD;w60uC-pG9pGWd^{4geSe`kg&>Mnh4#0FKVm_2Td! zD!4(F$-^?ne{uyfg-XenJc$@~j@peqES~%Q{D<}yyky~5%$-Z9CSiFXk2vHbN~+Ke zU)(Xiar)Kk_0+HuA_fjPIKChMNCxZvfk2wKF*Qd%eHJ1lwv2rGLrC={8`n;T|fb)mBuEd zW$SkHzz0LBxEb!fa44MRIp|0J^+=A@iVd20%gODQbQk0S34OZk3WrIzlsOSDD7_E* zN*F_|x;+0?f$)?hEq+R;Q{Z(VP8_=>iFKmTOw z?M{KwjI9EN1qf1FhlGnph=G%U>o*IU9}#qW>*9qtrHG!%g#}YnBODt6-T)Z6C~Rqy zn1%1}%DL~!2m%y`_>;xhAIby_*m{>^zywRU za!-EIHQB(zzx!QCej%|e4M(=_7-dcPcCJ5kz^^nQb$!X8vd1TtKl4#O01{Q+B#g(0 zhoV3iZI;K?$T0K=JzfXrzr6bvTj{plZmfU6Xh4*#WP^yXzq?TG;QXk!dmtS5 z;cCoanMwga5W?QVq7J)=+-p+|G%y4X1}rpH9`?lQlit2PS+>npI=;?n%gk#bs9-ER z6?oamt)fDH2tJ=b!%T{Dcj7vcX_odLrI=F!0;0~X(`bVc^&*A6mTdUIj{Zj^IddWt zE$t>xL~oKr)F_E-dY&5uZLbArpzfURF}rs>cuf1V2og7gHIuSrFn|NK<8WB0Uyjm7 zyeK#0wRLSms^?asta12^1_nW-VumfDBXXWQHir}2f)FA!*58ns=C2VjV1#w|n<;aF za@RY2N)W&+{kaS|u@UG!Hth1ow);k`c$Sx}R8? zGo7aV7f_2Yy;+Ik5cr!1LI8h@-T0l2bXT=kU&KPZ{q+JVc+P(QyN-#NSyR!l(H znE(0$5TnC!W~Qfo0GaRaOB3Ad5uc8^zrP0Eie7*7@OVkF0R~A+mW&Q|xP&t$nXNKX z#;PsSUGv5-mrZ+@&68h!u1lW^b3lecAyB{JOcKyXX(gszxE8l1&s|}kx(EZDyI~c( zP!PbCKy;|d*pUS$_91eSL1KkIDuq5~)3E0`ILen0{X4WsdY2npQtID@mxS$W0A4yN z9E7Z#9I$u!x#DI0?Q~rUpo#-*1qoXAk2ve*_n%Ig@t@-V%CuwK1u$^lu5dJjpWp<| zCZRrQk@`i$`Tycy>F7AnZX}EvOWwpk2nLpR6;xELY#(!(-n`#@#(O)Y%uHBi2e?Rg zcX`KiiZiz(@J_G0EOt7rQ1V6wYT&@rpGwQsDQ=UrW8KDN`-=;~pOCemLE!;O!?4ppG+~LKQW7Kba>B^2AV$lX3AJ3l`=$UB5rU5Ex6v%rytYk z2@h`VA#Gbm%FC<4s{Xc&O7yk#vfX9o;H7@(m$J|ehM1s!av*DrPzjy$XC}Ploj&J& zhDOp-21}BHX9de~|5vFMkUiX@Y*g4WY%W(7}8{!fx( zgnGw^eI%{!mxV+8)(n#bc!^@Z%LC>f!c=I*Fsm-7VeQ@P=jp=tJ+rjn-oPccVHl!S zt98o-L}xO$8=nvCGf%arg@c)`62GXQgCXDZ?oD)nfmw!{GN#!?UD$gi~y~G+|cBFu(WJ6pNLK2!L|#L(1g1s1cPTstA z-8k`E&jE(08mWOMQj&*mZ?85+PS`h5titZ^)v*5RD?sIW|myuhhNB zCwYYfNHrRb)|xdZiRyYET7-a{ecyk3k#v6iZ?FwfloQW$V`C=d4_agC>=seSY4`UR zUxr5S*$0rH%bfG@>xZkwA-miAz9pMrdU}M*a2zsMS84$3+h})yCQfeez!eGk5*y<+ zM1-A<-vcT>c@$-%hU;%6a`| zanPa;b*C$;Yv)!}jaEd7luI@cl!!nd2m#d6Kt%;)R;a~lK{nz(5F@fw*ogF$B?(IO zV6bS+j~>lCw>_H_&G5}Tm$`GNz6EOJUnEdNYD7xA4HMBX9$7aifJ#eR1t<|kE{dIt ztsYqJQa=PcP@=Z@raQeoQ&Y2Mr15=ODIj6cq;dT)3N{v1tk2ouFRjq-bi;X`!H+Aa zzQxf?MKuw|wkP^LLfSQsGPHk`=&Y?nIJ} z_|@3>&GP{l6Y>#^KQy&`_$Ye)ix54e5F_lbea^c>nAISeJB;>?7kkvCmD;Be19s~r zLhi~j-NG)og+~+9N6!^Zm4}F}VrfjCob;20Piv!Pg!7SpsMhp(-Hct)nqH|>^j={g zv{*>^gXP1=VC%&^e)UL;E&;=o4%yn1 z&FMc`F=)_7c@N*I*I9k^!p6d$d6=BKcU`0_#bc`lB^WFc&2ga|O+&)WfT;RFfTs_ib;8YQKKb3qM#vc&O($kXqhXACQbMKkez6U1xSrtWbN-oyi!twJP+hH5Z?l>1Zrb10Gy zn-Ho?%sh-l+c`!&Yq?;ECjG;rxVuT+}S*qPYQ>ruBKFLM|QZThunFC4hf4w&LHX`A@Ong zvm^H4G^+peyZo67{xYx4S!CEO_SSjtPyv7+9(L%<WJM}mojVQQ=ly!n8mMdqWkro@ODiO-B+s7ae++yr*rCxwJwc_-`?b~jR?W~m+ zl2-Q0Ku9!t7pW2!QcXia2)85tGVG}zhWP}-gNBw$zp;#=y237ZpQalU#wvjZLXbxH z)NCBNQ29gXlQD3!)!BKyI1;EVu%nb%7{ff+3ThfC`#H1a5AgyP)Hxilw|n;e!0A2E zEtdCgD@N~f8Kscodmzxvp`m<_a(WkJ#m8?RQy9Yune6H2sH8apnsYHF$Mz&8j8RH>+a z-39i`_kc&|%Gb+_W=beg5zHPoqPih21rHwiB5j(vN@cZNRyyoKb;ekNY3Z|31Ehbr z{-5(845bTj%b+v6qRoJmD$FmMbdMscfd{AUmikiz;u zh?9XuSi`7(U3KY$pN4^*fq|8J7e2U;e$$>ZmcGAheJ%)&HHOz`1sM+_B}hYEqGQAF zihvas1nAHQ#;T6o-ENYSK6*;Wfod8swYlvOjAu^8YQc$=z)|5sAnHi%)_jF~>AJv% z`H(foau@1G7Li-G?Zz7x%khkv(0UqE$z=kle61u>3r>A3l*!?B7{&sie7)ujyMN){ zO)f)kV?a^M0aHB`d~7ekBGN~H%=q0iZ8D`bA@ULR592>$x*c7#;G*B_7}+F}Vo(>W37~QIac)N#kzkq!Y3zG} zi@|SC{Nqw7@+1~}&q%^4a?@ z5Y;T&)4sAHZt&q@LQ~73bG)$s$pzyM!bF0N3z87y#-&G9Mi(iijMAeZj|({zX|lbN zR4{1<`)9E8kM(O(3398aC^l47I(FOFNMM}*&?7V2fuGw7urT03p7UUj-$itUrkjk8 z-F#WkpOj8b3bYSIMx=PwIK%BeLy6+b%4jG;%~9{y-d=X2cfllHDFD6}KjIRbLHuzf2hmJFEh>eKhbrTJ zlOZ}Fk8NGKZHZF~nG9FXEx9>4C3mG7@1s*Tyrx$gCvLr?Y(XzO*|eu3hl9}BiT^6e zJktI$AzRetNDY)tq8!KkBuFSiKxkO=3e@r40Da!1gB@*I7LL|t@R46U8G^yXi?n1woeZ~1)$>dw(^HO?Uebp@lv zUp$s6*~866(U8hM$5_HmLH>)#?TMa54YL16#m_y+k(zzivk#68_ldL_P|f!=Zl_vi$`6D8|~I zA+i~&P98U$9ENGjjBs`66CFc)<+~>d-I+MISbUh=7KSr!KevZ+NC?YZLozkB&f-D6 zj>0&!nfY?RC5y$x3``L&LgO&TtA$O{M6dPTs#%&K@zx#^4&Jp<%j7nC;MS`1LBQqt z5GK&RTeD?9rCZh9s8$oW{VS-pO6ja3tEli#v@|~BeuZbNOl9IA2 zUe;F>giK}(o(I)KZzpm3F~U7SH%lgI;3Cx&@bs&`_Pu!VXrpd1f^%=pvB1iF;3 zGQOouUJ4)f!U^2%3ct%|k5_Jz>eC?u5ejeFG`g(blh(aQEQldi^~sNx9NaT$fB`RY zKN#Uy=7e2yYcQtwo%vHfKXTc2jryO*3A>~!h!%y28(_$i03TAT1fRo??D=iYra{D( zUyd@CB>=ON7(Uwe__O@KxfX`M77pEYE=*RJT6ZsZ_lOWeqNHa0)dx)|DMNqV+NQ3p(vE_NR-Io+P?be=nL8Q~7@&up zvgLmYjoNhAJwAq#{o3VZhekJ3rwmgIhERisRD*>~ki{V>^eANK-pJ>}&Edn$nLVd4 zT6Qw!;&a4rbHMjE3#sV*2L}i7m8^+G4Hk=f3|-vKKp%%|8SfOf&4He#N(pT=kR1M^ zWMLYvSJxIllRkV+c_id9)s6CJ{rPD`iXyvc&6AWQk4u`7)|Qwy)qUO zDMAfHacz@G{}?e&DC8ot>15uIDc0b37YI4QTjIH4%>s112yg-hGyhW|q{E%)pC^}F zcA{WRCU({fq#ftTzLC%I*>>^apo9@2>p9bl@7R(mh!QKNXd)g@4}tWS0}+RL zrw5j#ptIA3M?UwI%{!O zdg~40-@RKMH%c@ExQz?$PdhlMSdk^l8z&f!sg%ixe_Hc^E_kk}!|SUK z$9uiUQRA{S5#MlkkH7KL6Rv;ERt44-J=lZRPdsq(Mh3xg1k+zx>% zEN;|iyl$4<7(9q^8N=K)17iq=!)&g}EJaw@8HvKP>|oWN(7LbZ^JzORqMhU{0xk(R ztq&=jxj*%YuK&r8u_($U0c#s*rxg#07)ZKKa1V`!raADe=O9+LSw{7=!6@-&&WnwooMej? zhZ>3IZ&*t~5QMN4>0}P8^5pfV>`n)y4&U3kT*xT)yk#YPm%K>oJ=vom-M?lQ807IH zBO_xY|61EE1A(oA6D?d?#?dN~grb;I<+N6PKMy zr6|yH8MCo#Admy7436*FWRez(@lNJ${4B+@Nm*$&jBLB5q77;l=kRD*?`tfCQhC8i z>PTx8=XgtS{z9qO(z4TRY^y#F{3SXhbmz+Kgs?||xF2~3MjUqlrqJ&FCJq!MEiO%m zgQlTE_mCNua5l;lT|6Z+J`9N^Otsn9D69}w)aFawfw&M${*xJ}yArxm;k~wxQ#Pshp#R zPKU0mE;wgD{14e5nq5-T6W#IU?15*Q#R!tblJA+*U!5axy9lPLO>ZQn^E>aEIC7vv z$IZnBu41*prRg^bbf~y2rS5G3AbpXmU#0E2alK2Q3)FOFoRIu-I7|jF3gI0Zl2r#3 znJP;CI7x5`BbbVaTZl3Tke_pm%CL`oq6)PiA6 zUJ59(QD#ioCja=xeN^HTXLUr+ z=I76Ea{P2)yn~}ZKLOTwjaBRNQq4g@&jcmfYBGUHg0OrR-mR$<{6gffnS@ktm47O9 zR3vsWmE2nwAIGpi3-i~e(Yv{0lqaj@bS{tnqZukkF=F^TZ6}Tg$zrpYt503h>P}H^ zX{mt^t@4LcXhlAgw|mlzucWy?O135VE|`1f^X5<}>ie125q<9dW2Cj)ra*>P9v7#F z71kwzA*e6s?&r*-2Sc>rs^~1#j_gs_y7Vcgw6*rwUNX&FM&ekSxsDFFuD0g0%TP%p zV_i*Fkb4qFHcp}Zx7F)Qc|;}_%1LeSqVdxF%`CSqMEcMK@S%98U)F`Ymo`qB(RdR# zd}*EPQm1ic9=Z#&I;BzN47*<|#+xK|6WE78#jGsIJl99hv{JZ&yS32%T-X274lzIZ z?X%FT>y-wt*hHA*H>T1e2RCRFr0M#m_(qP-V6l@sm~X3k$NyeOa_*=Oj?D9K4?nlg z?(5Qlkt3?lUZBX8>Y^5s!?pNQ>i%e$doo5OS}i_pYmWUrMvr%3zL{%=(SK%Ma5>3S zi)X?*Ev_!bz$CmZS!@QkbIIngHT690sM)Jp%wE}w-_wXED#VWC&<8PCOL@Xfv^k7dYDiT8lB_o+Y3AJfx7`(y`k}z`*pJ-2W_{;%g0NY4xJ`$R`g;FW#uzh=JUk53mK-C)H$d=DtFxO{d>0%8-5 ze7IOkd(s%XHx{ykwtdJ*U4TC7L;T)d;3{urPC$C%qg7vC41?M=t&Zt~$BG_$UgL1& za|2=UDsQI#r=q25f(+W6xb_wpr}V4WI?i~bVwxg z)4_}$2BFixy~wi>l!dx*y<;Q(SviOe=a|W}ci;z^qNgyTWucLtny28Ui}Xuf{sb3O zeU%OiIn_NDeDm{oJ=Ql{ZT+d^{d$|f47lHZM2C-_YsW|W4{+0dAg^vWYstE0zPrkD8}oD+wlzI3!o7Ej&{3R~B`*a*2)u$rooSnPD62Cli!f zlP{dBxy>w6WhL*nSTQ0N&w`~?UpSf6N(I*>mqB-aGrOFx&7pjS;a|EmJSU?uIyzEq z6uFdDkyGf)5M+52Rx=|x*RD~=&NbxR^-)UkZaG)AWh@nNwDoQAesIwYX*}jfa;`!V z2`^^6N1$1Du8%g7ETAQVf0f|Evcz6c_I9TDBy5p$_GYtRQ>j|g+LTxsJ+E5olO{VG z?^h>bzvWy}aQXK6?^;X7m+CBWKCH^Z&9=z?tBx)Q8Hz7*J~-&s_bn8nq!g15gM9br{Q4j1Ih21IoJd(gA;wP>O1YpQ55ij+Zs^x*2lNcq&rKel#z>O` zjUeCZl8`Nnx#3SpImL54Ns)!ei%EgPI`Wq{hXD+E0adAfM#~8k8G*F2q@fRDWZj~2 zC`LODi_i_I+>IFEi6&tZXmh?8NfN!Rytc~#LO$6jb3|>B zBaQlC-8~hv&3e#WrM?hG9#4rTfoexMIPg_VWU^7&CLLYbxJrMo*@WZ!lI>EFga&5H zetc^A18>eDC8xjM9Ege3U`8tN6YirlcD+v;3nc=`B-O$zwX`nakOwzPmG#U3g7ps# zMj{n2%!7VoTVoB{K>gcxX2xJF!~vp1CyRU{mFcr*0LXW{ zXh3w8u{k9xhnBsM<{ChmjEV;M%Lc15mT~Tm)w_QBfPp;EeqJI1G3d8YDDWis>PCn` zCc2p?SN_g9M%As1{QbxS)Ik$t6dv|@xtnOS;tolTnM4 z$-^6*?sZu&QPQLM6nbEzYK+!TWVDXgG_Ae(=muLv9{_xKIOxV4XRe#u&HZ5@pE&~R zyo@CZPUa*Y#DyRRyb@&CdrG3Gxx7GKA+f(}k?!@FoyCgZ75j$C&`jd8M`~GRYqL*` z{WsL`cJWC@DM|7ap_adJUR*rzv|J7nxB}ci%~q$wgGSHiyILR@&+>XY9Mj-H0gh;~ zT|;XzAwKy(Smgm$E$7SEOSdfR#uhJQ9*@t<2Q2}HU%^`9f~2@r9(z62)S>9oRV3|X zx$a;2;2jd4NH|p-L$4YZA=8(dc_2o9{asTLU5Z#5uYyxSTbDK*(Zb)?)q2dS+a(b7 z`^jXBwC;i@sD>V$R zU73H}jAmY%G2iWD>dL-0oG6E`v-LtU#{sO0wavF5&-e6zRS(?HblsjrmA-%3ty>lS z9P0&cvN3gG2%}+RC2x1w=%xW_=fZ>k(kCy4Xw_cr7_>=B#CU5WpOZY}Z78bL93qOC zs(2V~uc(uTMrq44CQicG={uiLPe{gTs= zFgg&fdEx9m^iu7esmP)|7?EyC`#w*|xSF$n+9Y$f_NA(eL~a3(&n;oc{Tz*!+4M}k zYqY&kKmV%wE$qPW7(OY{;E1o$#-BDStigJ&f7qDKf!9xUG*wIY%i(zHaG0M-+CeH( zQ4tz__V_$B;zgiXLHrQvt5DIxe9Z>I`uCoNbK|vzq+HM_&)u5)4ZuysO&#C0ogDK6 z15w6KF?b~fi8Fo*E}2?^N{Quv)yl9@{1$+zErnl71)GAsDVSI)7lexw)SYH7j+ zj?mZh^|al$Ku%R$k-`!z4)P4#k7EBX3cyccu*cBpNMe_$Oo`x8E4_IpLp6^L4Ft8; zPx0%>Ca#|o_dIWpaPl)027kFQm0uaZqw;gK_=U1uBPtOg*)0^H1E_c^Bi5RW9beiu zfc;!Ly`utPK94dOIVPA4>O;nsnS>_WrCms=P$)*x1j#J#+mCnFOkS)GR$Gja5OV#| z=vaLux&TmYfa%q`INqBTYoE~R5edaUgV$L^0D!>u1BlmXoeR}=R4f4O*Znexh&52& z2`3A5r%qH-#Vi1!^IE68n9`2@RZHv8GJw|vHf{t2gfxw#tq9%SV=zbx&`e_K5M@*C zkB#@z`+x%&^R~ zh`#O3&pd3?EIzG-w?E8=w>MWN?wv1S5V-s3Nc2UgTX;3cx;#Fxmz}LiUsFtQdUFfC zdG64Eiz4K|ljwV0spU^|u^#(%-;r&#TT7C4w^p2hmAhBPC2%+Yt+DCc*zEaNY4)bqr4?>lr_@WPRUWZ?b9#)duqzM$V52lPP7ZtHFYr1iBVFWBjPOC6|N3L;+!ufX;sBX zERW%V@F_Gzv1+Ok6W&?_S7sq&J9 z+++Q3wMR5Yd2p(k4Iah5i=X%{w5CPo!Xg`ly`nJ6voHw_{K}#%+OA|1vXJ@yK&5-n zvs2fxNbGNavDQ+aG72~9e=kDNBO+1d{fF$_G}|boK)E#N>0FU#vOcnqK=q|Uj}S1G z_*SjqsnQ%MdlmS*;z=1xSGbzO%Nv6$dR;2GOi5QY62eJnPJV2e<~cp>#@KjNRR5ROrOwY4Q^i*<8Jyy*WU>Mg_KYMQQ5f;$8V?(XjH?i$?P-62453-0djE+N6)-Q6L$ z!`a-=`(0;Wfj=2$&vfsuUTf8=>f$)AjnRM81t33bx{_`53G!);51dS5@JKj4nR|vG z`+7quW7HWf?`_WlIYU)i;tE)?}%>M)OJ)+}e2JK49Ja%k)a(zv6dZAPNyw0R&T{CD=}t!Gl!88M^SHo|0E)soB2_(1myzUsm%r-H^cpr0S!{T9ssdlcNvDF?AW=lEwU+ z8PT%`m8ru4toZ1}*@yZj(pb^}K{5b>?66MAU-OuDlE8#}#8DN9!X+O^W(QBTrc?N< z2`^@Uus}HcQB^eVKO+Wm`>y!VyVR^FRf4g3G2;btP`;ofS{kVgIQWq{E2HwJu7)A^@1o~>1fQ-B!<*37#FvUF| zeadfQ`~>j-=68_E;w2ZF0lMm9qUy(^gZa=G;G+%rl^%^Gx9{VL>zl`GO=pXaUlq6q zSGmreG;WMVPzXuG0F(+O@4HbD9kVvG;$Ib6JUB|G*;O%-Y9DWW4MX$~LVf}Mk4W*H z>~l6*z0vYlBHugC*zy>W-=@wsfuY|5pPGL`7_M1st`b?V>Wur#W!BnEmMsH$9FjlG zHjP3-HZ?JEbrafmCYJ0cKLRLWQcK1+OR2zi708n?_I`pcXvqBOzl5?iH5&ZPxk|CHZgxE8hs@Pk0q3H zvGxSY+9Dn5R;~8t%B?v%%Sfj&qG{8f*v){&_H@98Bkz9jyz#ZxOqMuN*k^ep95s)g z_2~px%CRhx>IPJbYQECTfNYur%EI?PPvw>{ZWU+wQ82554%5PPG^7qT3R>oJU2>M$ z;zRzXEI6HMfwv_*S|-2Lmr9jPc+ae~!};4C2W`nc55*nt&80>DvD?wn^4I|$MHAd% z%8J`cXxr3{D}*zk9Tt#Uct88>?9hWJWoc^-!X@0h#W50*rzj~QVyy2LG|f$X8KYmx zAs|RfeZ5m(nZ29K867`Xmb5F{e~O-~DlL2`*s1hwJ1?X(TW~tDS0bDrNH(ANx=%Uy zy`2-X^vuierIlRCy>frFPHr!rk5mOjw~=>#VkP6GRI@Fj++R=TP?BdYDO*?*>@w>`Yg6x4YHASiMtqIm@vr81lM=4$-|EAb%AZC-y z4rQ!;n@51+1Nuc|4iyud*p47yz~5u0q^FaOD{yUpEd^HKo{n`vuuUz4;h<%B zo?lljN&VZRvtk#NI4Y8hZgO{RF^3eU`jcr(4&o-5FgOLz4Q}4>4j-OIcKa}>4cw;h zBVkr%&P-0>bSpJ6N!*<2l(-enQK43r>UVGLD@I;kynaZJj1(Md08A#buZ}h(79XI_ zAwYtV%Mv4gGuAeBsW{vg`+LZ+qC3Y)I4Wm5;*&@3A5l=5*`v#q(YSi(7*pfD`X7S1 zg_y&K1@4phV>am5k!H)ggIu>GH1N2bfHo0_gGuOohFM%5FMsc_73;qRMA^1EkT%tk zXfg2TUc;E*9XtfKlv_*aY2Ezw6!O2$&s{eQdN@lncm)!-&TO^iDk~FM$wGGFl=2(ExOSc?4m2)#j%MW8It)?#aboaeL~y&UG-(ut z<0mLB;DqNt8f1X>$vx@Joji(B9<>G%;LdUF_Sh6d$PhvJODU31ZA&`d1`qMW8yCN8e#frG*HDnTS^&1(D*TK zRj76KL_S8P<|wZEfBnt>^%ua;S2Kkbk#FsPYM@v;)9?hm?*Z=`@ap1`T|D$n4K}?= zD|nrL`Jk@ie*Q_S@y{?uxLV=-ub&^1e{AYy0=e1I?;%|T%K7Z$(s)P=g`!&LNOU#uTrzQSB;p=v7F}nsP zvbT-l1~9VO+OJCN0ijSJpA{FAK}h^VB?529)3%cWAH1iFHHY&W`d$CUvrNjl%FUCA zhW6F(-U?tyU0c=9)Hf%~k1lX>95s1&C6_99(RAizaa=5JGg=Y+z#Jzzpi85q;jJC#X`Y- zy15`Snxnt8tq6U8nMs_`d1r1Sz{EZN=oWh?60JF!sj5szM@BYePsa94br2JzAKNl} zRm^$ahMg}*P%Q5{#;lotUUEKPd|_jGY=+|IbiIU3pKYxx+4eFhbhzW#U-W=`j?Ttr7IGXt{gpqpEDq_=UFzj;>`(4y(YraPPRag|7)lo&S@*}T@ z0>5-_v3&3RghXe&QWN^)SsG^=UASf!q)UQSgHV@1Q4WV;rciSdvDE}^sY;7Nr)BCB zVq2S0|Gg2OlQK2JyHoY%Y?+_rgQc1K$tg=5N*P6xXMC>S*J4ag8$Z1%eG zo^DzkxbEP7fN5KLZmbvg8L3jY+Okb!uqPFs;%=5qGs^~#m|A~#egWr^bN3fJm~hW( zrguf4)Dl}iceJXhA;qR5p#+N%Zlt~}a1VJeSgVh-6|g5XbE`kb8TCAxpM7Z-w$XzC zvGSyo6Ud}YtOXT=_?y&c1lw6Pb7h}lsXs0ITFiF#TAO{3v0}M7E&l>%>w?SqaXD$B zT@KTJFWafG(+f_`l!(Q2K=TV%+lN`ms8iT(F8C~7cbAuUBEVL&FczO|eKrWN0|joC zdtbxplBgiZ*zQJMjj*dF%>{tL<8yILjzCK z*|5Lu=(yC=Q9kf;GTcuN1xvo;L>tsRPLqcF;ckEl7YaIOJ`Dh+LxXhRbR|YaBM`uO z_TJ1ob{9b)h0LigxWoEmIDSa~8$?;`&p6~?;EP0u8bOx#rCvhOP=F!4TU}XH5zV9A zKTIFNY+yY{XIzw&W5QldlL-Yh9|UH7>vt$~XB=JTqp`!T{fCBQ*l$>p8p>FqZYwl~G)o_b03QbdUz=XE$hj|IKeOfHJoIefa-kgj7l(ThR8)e$n`)qm z*jB*Zh96|Sv-JpyyNETKb?U;g+#Y1h3IC>P%9$5Kj@J6p!4o|4?N(b3{L1P#tk-K% z>)nF(C)(0~zfO^8IbUuF{dDd`>c8%MI(K$a1p#-#WtA|I(5Som)fAjDO8UK>@ttnc zoEy7JgAE(PP4mC04VFZb!P2S-P?+ZTy+Tg7YfGI?*!&Gt<1JnHtnXc6CY99~D^jnF z;-+#4Nlq_E-2N_(nbcfjtFzi=&xRyTku=-;Uqw=(ue8g5pz-KCi0Kxb&dm-|2$T7> zB_Cj@PkRlPg)3rY`}DUZ?9dmF!I90&zu-{c$&{CMi5cF6-J~kZbdtk*vrjWm4W;8) zg@FjT7CbvHQH<>TGQd4oT zoQK%Pn;Ak?SzkX=IDUbmC2KWJmYxI!awsqR(o@p5U_S-s z)1`IrZlZHE?N^moof`1R${mRzIOM3#+3ooledI7IzXOQZHPt=fG%#&;Z?*MrbXHz} z!WzW3O?2k*)r@P3Z>+@kQ!NeA1aZQ)?jiaofrVx5iz1R7jR3)dA4Rw|fGZu?qo-zG zQ+}hRzF(?@>HB5PT157$jsUSF=v=%hLAxb_ z2Hvik)u%=)445zLIxg|o*;!fpLJ)8)?CkhQXW&pP2`|?N7C17>+PK7h zq!L5#vxo1*#;v)i!#BTDv=>D0EeYsu*cslv8NYuR#n*AK980n*dq&{Qg`v*TulRSP zcF#+$(>dn5wEfL-$b3YAEnKzq-fnbX=5Qod-4R4W#!7&8bsW~9NTZ~>P#)#gk8eCb z`boxC!W}yvuEGO{65CSO#4wRg#@1)AxRlJXR;Ghnf^xJ{=bM>Ld?$P=<+uQCmSQc- z$|qdNTce#C1}ATe)9aa2LzANrB6uoo!a8FQ`UMVTM1Mef=&W$R3^5(QI?t}3I$yz# zoXegJ5a4U=X|&xkV|S?Cl{sBE_=Jnj4_A-cJHnU3yfxZG_D79!-DaNWQd_&?>XTTS z<~bvaYfm2igciwh|146FIv9ELZ*W-A-(jL)^SIBaUP)N*Ty z`Do&~%Ix&nmytD>W*3*7glW)`y>~hH1!p&0f;x4-l$+xkeM*|uun`cY$YT8G37W{t zlu4u;lWlP(60|SnI>`SXJ%F;GSE8)l@k;TL`e|6vLRIRBIdm$Ys>ZOYGS*O+gi7B# z@flfB*{hp7$yA}yorhk)ZCnPg6-=@d{j4ML%Y#!=G@i2YU-=J0K-m2Uya+Z&RupBq z;so%p%6M~2jMP(RZfpUTA;3iVktRKBoLUIG_d*B*nga*<=w+Fz=|}KY%4CT844P)u zaVcx|aqWL*cNgF0Mx*=&M|YiV)~ z#l_KZ4~6;Vbm^M_Ge(bZ63?EkWA~%9G<3q~;P8W2;99`$1Y8(lq*A<(TR}iE&xMH> z#J{70*m}cW$mi$h38%(T2}30=hL8+6H7Rmkw8{VH1$Yf$o0Dyf-FcQ*8#pNVmFc0o zbY?VKu-bZgc-MEaF28e+xRPyO;ydWJqIX2-xbpW_jLf*~+~!iU?mC9aPEnff3WvD1 zCFmaP{9m=SuNqyGCkN$z2q)Wq?uCW<%d!3&3%T(AsYiV?Mv{+fy)C(PL`NSp!;ik3 zbC;?bBK84K+V;Yb)XeZn!~HI!9vX{xhFklA}Uu^{0f1nGd1Wu%E_w?S*nZYBAd(lW}#TBtt5da z$={F;oR1le^OM-zc}m*--&8!O^=5T0QD*{0^8EDc9=02ur$v+ntyn$9G6?{$=6$Rp{E;;$_R!^DcM!g|0|%!MP2$L$a~N3bW6_jndaDhu_-17u}!J ztU*JbyUn=AiQ8f`gNVy4hlous;t_`ml!_g2;RO@Xx-%Z#lRC9sM7K|SY#k99Gbv4{xp)1;fu_HPynCp0L2B& zQYOtnq;_0NnDrznsh60qIq@j2lZ_)QelkIa1Ouv)mJn|<(18?A9w@T@Pf>T?)`|a0 zS#p$oQe$xLp5*0sQEOoKz(hbm_*^SvnOx2;t3U}H4bYK7!Tiu8FCbJR50z@P#&WXUcs%xWqTODT z)M;T6RiP%Iy({_PE_#lkH1B-_`{Ys=%qpT9ctYN<#MysmV#w;KGOI`2W4PsQd=)r` zY$B9DchUHn$e3{E(*}p0;}TR3P&=}zE8$hnGRRDO;yE#L{b)u*z=#RHtN!MlAGXp(MI>`K-7o-hk^7zr!vA;MDs06$ct>O9}q zZD!(KE9|^xvv>V&d6KhJ;yhtm-kfr3h-`tX6uQbHt3XHD@wOMLIOc)l_Czf!3hpBv z(w3R)Q?nEGIc0xyyl?(0U{+AtIoy*OUtKY>F3TBZ@}849M-psH5WmEEWiQpmX*DFs z(Wqy+1TlA5cv?|d+ee`OcILXe;HH+EzL%v5uN%BvAFk#vjTk7^#WkEwC`o&zvn+m_ z=1xS?wkX}~``NV7lAtS9nyz=Ae02+cGGalNWMz~o{qVOmH~%jmRJc3OAX4zOS26?t zD3>zo*-AlRTJHX8bRSQ1{q;dp<9ln+$z}9jez}X=nQ#}2d}DEP>YDgr>(dZ)(hZu| zeYPq!%|284f#70=ZV9(Zn$*gNDM{7C+%#)R{74%tF6U@zi~ZPBE7{*-uo8~%Khx7O zL5AJk<0+%sl!3QYh12?=fUsiA{ z+#hnl&K8)61!-|C|92aqu4y79VCTpztqh z#6F|}cV;}$1$4RO_|=Vabd@W*7h(?MvvO4(*GOsT94=VAjP$A~|FhVEsrN8K-Tjc& zk0o=z%Es_67|SnhH9}=gzLuaxQTscEjE6s)unn}BYIQWK!s~<-u zutZ8a1p72Wau6S%tQ^B84{K6@(uJnV5&N6P(LB&L_iIk6HqtAgxaI~8D6Scy2zg5% zz6@c>798!}rKV_N=nefXO$^QGQmUA2#7Cb5G`*{}Tj#dxema=8wePxH_?X;yk&sZ@ zeEEods_SUTAhQ7<9S}C9qmInAL9Wx%FcZdVcz)xc&$;Dg*TT<*fCr^{4l`3}oR) zDwLtI-Apd14VIe;>x~<~-{x+clfK>Go2DUl@?kgUvbUo)q8Os+v0MAEuXV3^78XrsSrGoXg5v~& zwC>g*jfBPKOgJofiyLZjd^`mH(oE=w8H0roXhvYkJbr=meOk?geHMk_d7-g&YPq-5 zgmF#c7K7WL33^bdFLZ+DvC?Ui3gHcDF*_(e2}JdNU;#(VAIsBR8I`sJyMcDtcR`g& zX@mQ{0{VFX?H*~$O^n#Ffap;LvV2^OWe3H8wLX$3`G{3Dy#QT=K^yytk(^LB&Pg-6RN zpY%wwk2NtWk{=Wt5qc-|AC#e@-IKTVbY$*SzNjNDA5lHxm*yE&W0=|#X6U##fA>rDTxSm5tmt*JJ`i6}_@h0-?MEd(81pM(7zgN6cBlZB0 zEx^t-wf!~nO;4J@GS_9-i91C58@F$z4o>biBvAO&rP}FI9xjV#wHPP^$4Q-ZTJX@5 zn^b@lJT)B}H!CsUfbckcp^;gFJR7`P_N>R!y{W$Kd*qqkob0gqe6|TwWlN%XSmNUL z4FRdKe(%_r!0V!D+{TWkOz*rDNufAZv~A#R-? zn_)6YQ_bw6`y%+#zx73~p0(OT`t89>bh(9Ksx-ag#kq+i=(Os?-5YOUfq?_BM7^32jkp>Ho*(LCX3^WNUAxc(y98+ zmFX;VB4f@N7LM(i-!sn+x9PINl{rx>kYpB`Ug#`n>b-_J0rC_-B&xKB-7oE!9XM&X z>%c8SnYPp5vch-~;bf;bgds*gjDjw-rN}+raRqMQ7j*^W9Z1Qngpy|3;FKV;EgouX zq36Moy)`-AO4K)o(&k7crBkug$~8HW)Le;qn2!Z5d(*|*3;&N4YoupDY0;S?mV`Akdu=a zu+$0|a+{}RvTNx3vH?d@B&MVwCE;;8{CIx$N>5M!Z=FU4O$~OHdMKeKZE&>9SNU_w z5%cg^EH4X}Nmj)1KxPMBg|H|4{V(_i z^dC@yccb7bPyu{Z&tXpF6|n+kVAeKM+u0a|=ybCd7)z<@yup5ICjT+WqYl zzRlTISbFZe6r(0hZ7^;PxckFZO~`vS5mv=EB7ff$GI7MZ=*WPv(9`lJZY_TL$553k z3Y;FaA#yPg)edb<$IeWM!)qc%o+4orEfa;4DUtX z9(9rRR$b<{&qx>XJt{+zgR4|GYU5+*8R!@wp~ZXn1{M0(O+CIPZB1HPEEz>H#LCJ3 zcTL3jmQ|8Sc2lCLCK%&Qc$yOy+?dH02_$R>iAMB7O76N5|4kP^{4tWjl$4uJY7F9t z-UAduk}7O-cSQ5kjn_OsKY0`P69wHuDE;7a!y!WqwmxSs{%(S3W!Vm?x)D}(rkp^E zFoOX(d{j%4oy(H^%`6y!P#DW3d7PUSzuP7*ypY8OvD5{j4~9G*(n$lYbvjQmzJyVx z4xeO<5msY`HgRwHYS~uDt_gXZkAcV85+QmA-4qp~+MN>ZkZMe+QZ_z%5u>_x1bE$3 z#NA^}ZcU?RDruz1C2~$7Yj<{uVx~DkkmPSnop?#9?7zIB%&P3`R)!I@j)V`LYi7t_ zFOMA*Wg1pNK;2P+D?w$~fwQ!tVpjlgM8{J3?}Ss7*3?j7^Bp!bkdyDmOKM;cjmNr& z5PY~CVVNQxTR)}YMK=Bg}_JIEF{ly^rmvKtxb@rNHPB7*}gO7WTG<{3@nKaPx>$L*#%RNAW_ zYGy~XC^*f`+TMLMYW(1RJ8l<3ecDfp#eFrT7w_;8+7%}7Y98;3e^sA))x5t7?>|0g z?mxHt=`O0Qd-bjr?2qu_+_nP$xyjw7!?kX$=yJI}d79OAW!$@3CtuS(T&3~OuHF6g zWs&Ky?b2qB!{6tO>k5hehz6t8buyO6Rd?}j!(7JI^awXa@7bhf!~NEx%Q^V4)uU73 zVoXoOzCzC}|DJcb*yHY+g5${h`F7XHTIU20eKO4UAODf}ZE=Q#<;@>kudYW_p`n=MUR z4+!TPE|)WqzP&MD5k9|u%=F4y)r|K%y{q#Dz<(M(g=IV#9RCo8?NZE3?L$n0a*kk?sB?RgK zZ}rVGhUip@rpeoftA4&et9ARkqn*y{qDJvi3+FlTrcW!~yG|$mk0&X23e{IfIXb)3 zo1Iqa?;o=1rK5q22X$GKRe~sY=?veFE+;#EO6l%(cc%rq2MXMEx#WKP&xq=_gY3K# zxA5HD-0FM7hF1GGp8FSLoNP|GAEf}dou*1T$^$;D*8}OgaZ{A%YmR%zh}rbVq-lag z*G0_dmut^#r-eR9ULBiE`QOkUKpr9SKjz{ihQ?~PJnu93mrbU#S&tdBa5#4yu`gHD zoQ+h|Tw2ly*!gOtX%^WZ&AYz!Kz3OT7_>1LIv%~&ad@uu{RGK+WozU%eIP2lED*?djPn^PsH?HeWb9!DN>KfNt0x+#iIuc{5x z6IG6NCW_^!+RBvey^5vmz3Q)*t`qF=yS%J*7GF3{aheBQ`MQN_oRC&8M^21)v=@&v zUR-qjD})~KRa){>x-#c!&b-Drq~Gj-KWWzF5ZL2iQQ)pO%@W`&*LI}SPML4Kbv>a8 zJrz)N+00EQn=5=tnsoe4e{E}n*XXvOY*NPe#B|x>sPBlw#^QtK37h*nMRzsur`ivE zGfk@)K0SomHImv_(L1r#@637UtwwjjVrU~cM^&dhU_2a2TMQQkdqvp14P74eO{gEO z8QBjcnrvIYS1hsiEC123tvyTAU9|C==~_|v8DQ|OI-LyBkwFV!d5Zsx35}%mnF+P0 z7QKgnx!}>0DMM>j{4w>6&OIT{TMcRH?eWz%wzYmy#em}dirz~;Z%q|ehmyIrDms}% z-f3?G(Q1^t)YbFf_`RY*`0R_&r zo4JvV-KFKRd>ZYmiTivDL*dI%C)c0H9((Gr1P@y`o|J_0_O+n~9{-SB6j^|SH_PY~ zB~u;Hat|K6Im6HkpY&lZ`0YZa9c<|$7Z!HXFM3a@dgL>^6@O)S72N%044|N<^c4QX z)*I=r^#y|Y_U_0lMhrn6pt)GOS8_nNIc^%zJk_Kdau3pUl_F{VJ zVr@Dd>lUN0;BI{huXKjIhol88GIh*@b_D`ihN0<DsBY43o6h@1 z0sAwa3b=>Mpc+5pua|z-iZR^&0i6znnsM%hZ5?Ev%(XinaRDm+hSI?QmKt-ilsd4)32$&7Fyqj z+gr@0yZyk{^Ps6=gY^VVN2MK6iT>HZ>0#x=D3C72+tJ z2^MS&ijg}c#FwX43<-Mu22O$F04s>Y9naK!f;fZaJ5nAxH!AV?K4bczTT0j8* zom)dW!EK!p&|0g4i%3%65!!=cq%TmUmc`@WqqD@qH1R8T6K zXgqF0$ZtfDJ+5zm2@EGy3M#Aw{kKHB7MC-~8!DVl8P7cR2IU}yqCct9I=WA)faVBI zocD9&G6w#ix-6S4HP4SS^fdcJ9)L&5XH!PGa$fDv9o_vKvayQ_)uB68S^V!vRn|?ui>bd zr(I>u9rThQoX{cxR_=~DQb%3jiva|S9CEk)w0d`1g1~e*o=n8_<^H^&yF2?Z+uIJF zgoO! zuw#Dxi(kQGS-IWwe?o#XQ3D0E13wJtqFvPz>8l1>T$YN?&J5&y5t^(g zZTQ|IOK*PqpCV=b#J}7ABCHMeGv=wCU({R!+3p^c2o%SAVt5nx8=a_3Th60#H0zp* z^f4F>)%dxxyL;_H9JbY>-yLsXD^+Ca&Gtv}SZN); zdKtoqJv8S8z%3mLx~V*SK%J^TD!NtYndl+tLaOtmr+!|T!NeWWtK^)Dq5+G~#x97M zyAWHza645%gi`)fV(yoKL?xpN>~X0GK2}ewS)m=P)qDa7chfs2kD77VEdbur?3x^c z)yzW1BS<(P*(CtVk9@QzLp)oBUR|%*I-mB9$cB?ya5S&?j8TvP+0X(W0O@VEfk9OD zeH$hbzbTY$Vg@{_1jKDJ87RSkw=eA^&GG+Dn$tCm=AD3@1?H%C8jEG7bmvqtwyzGy z!G&g*v1QP%W@fK!tYD|-1N@~)X2)+3%AINRUigY6;4_|$H~sO3OvMOsR>}VBo3hu? zbBu|N5nvG|_r?T7ph50V2HZ$O#`Sbx`Hh`MB$)YoayGXzDfYvGeh>U_!RTqDRm>1v z5~L-RCSu<5P@yxLCBrSoFu>=SMpcM%Y}Ch<$VoxBbE956abesgwM)>wg4&9y&?R_A?x~hWo{ZguVcR!0Vv@>mbuU zpt;X2E+$B0?KTvJ4||$=s26SM-k$M#qE{)!Ij6PK(}7f7lBVT_AK8$Yp+586N8CB<>rq0De4Ky(uBDP``WcjsjF5rhV8_K0L;?3gNUSz5 z7dy~K#cicS!HI##l+WEq7PA{u`JQ-bV9q;S{EnGtGNR~fAU?r1ObzWahia_6iWCETQ#9*Fl zJex^AoO@E0p9r@$n8UenQz0ZwK&ZoI3Uf}DLvG!uuC>Sy8l^+0j}zsWwz9d1y*jkW z)T86O@FzMMZX25zE8&h+)vS#oA|&PiCOypCpo zJnEX2Lvp$rJdkE$%Ys}iXpJl<*0to9Szlx zOV@4ZjJ&fh9o;JZJ=Wj8|1J|&n?Qhe@1RKGQuD+Q*K(9$(W}LhLNAF0@GA8YV@jm$ zAOqSLv3}i<&oVKS5L&nivrR0;lKBq^52+tO-8HG^U-K5n0+DS%8Y2LfdaUt7Mii#x|m zs=!<$JJ!_z)05}&4Cm^UIDF@;x#K`@=bE@gzJDt)Cu9(Wj<6C4S%eP|ZCec=A> zVKjbT?;q9AUUX!$R+AqD>`eb%T$jL<^n1c`94?2BG!LS_dJ;~AhF`V)aw5JjQhx0g z2vI?MB4qNzSQG~qQTKM^u39C4z}{aP{M;xKaPdpvEJ^BMLB-rw6>((a$q`9M@-Si7DrB`2mXyHT9ZLA+r-Y9nqsz12`B7 zMQ7f^fWo52PNNR=Lt}f10s!Q{X-3hCy?EVq7F6O#gQ`i@Fkr1LN`t)&$Btykid}T@%NQ5ZckyF6H#do#}n51 ztU1rOWA3awh{E$S-MYmwayBOHm$$;xj%crE{t!o|8!$9C4{KeoE{O#8W0SfM0!@{t zN1M($1+;;`_&(5V{|j}@{H>qWq_@)&ZM!i%AtSLDER^SmNcRR{ZjUVwg#PdxfL zmr;?7ry0X(hOmwQQ_g_j@y|5{&95s+5>i;D2(*DcwEZK$}!NRX$x@531pjwXj2Ui zAwz|!3!E9ViYbx}-nJqSSFz zIwE%|`SKFM?wjMB0_0(^kO(E-BOn?|NJYy4@dxd6ikCZ`+)`h9mjR3#koW=h-#O&` zg|h53UdPIB8+cc(htNWQuJa`VfLpW2gG%j?7$84%)7AYoB3WJfajLtRL( zUpj7GJg#?uHBy$8V&*iQ!h<5)poh?xNCEAN%Lcetb<1ihrPL3{>`)MmW!mMsty(5P zvm{K&qe%H%&6B-VD})Pa8~9@~E(4 z;3WJB=Q66ozhO#Che6|vu@OE7-5H>5z$p@vgDW5~j5)n7UTZ8@Cd!TVl1B`3U5_hQ z`V6uK3`rdf~gn`?I&DzAb(@2o)-M%IW|%R zlH^R^gb3EHk@g?1BzQZLn46zBY$0&n_rG5@*96j&07A#<9s1wm89-FY{XfJ3P(f)I zJhxI9KdkU;M`aSjT(!Y8b{hA#OrQ7}&fFpdim8>FqUALL2^7M(X(^n;1%g2!OQTN^ zQ_q*pI){n5XF$(3UIQ$uqjtj;gM8AfJKo@r{q!Gl$hBAwMAH=}hkvlx;n;;Rokkwj z3I$d%qKK#B!R=fq*K`?y?UU6+zjY?r6)n@a#RwG~(GqJTs;qNqQGqsrNmjo$T+{H+ zddeP)R6LN$;&V&_aPn)OfH<)+E(g#KlB=}nX;&~x0}%;6i45U(4R<2DaDXNh>L{Ed zW|aef)g;--v}|-(Lp-b^zI|de&QC8!G|gP2b&NPiFxPb3sUk{H9h$rTqDBiSWz?n> zzUTcCV9$-02rr}JU;TAxA{bo=Gs3%Z5+>+U9!QI&T$8cBJ^KFN-UA%rgztN+RNei2 zl2;F8nUa9aQhR&*|MngrV$}_zS$xjMe;4i`nx+u|(+8<%b0((zI7hUZlHRDI1ET7Z zaRsC-T@XrrlI5L;2qy?ZQnXFYmMSgUCxB5_fZt1p+=>@9TdIdM1gW`4n!=O$7h5Pk z2VyJ;ZnpHv2-=487&U?Rs@!$5Awa^w8hUGDJP6Pus+B5%-K+zZ%8eqvlPT9}O7JE? z4tXd=G#@L=HXIzt1#YM$h{Dfc0CKExfxyqS*u?I^r3cfiaBSkND z54e=*_|ci9$;+RPD^g#r739Fez_kX$VxzpF>@1uQKvu|-ymsUL0~MY~r2Jc${p~y| z6Lm_Xl6iRT7ExcSfGiOO7}1~0Daqhsq%HTj~4|iOP>Ir zF;mdGo)*~jCdNHswF?~m<}vnX6U{K=vMHef_2|l9&gB}wT*LK40MdHyQLP9D?m#&_ z8o|iiK5_36__=Z@(spvqqWTZE&tw1g1J(lM2v_wE_zPLS( z(1OmIV)#27Ow!6CPde<~*lEtt#zw>VO?d!-95>!DpyC2ZqcX5(6III3+2e=%E)2lx z0p%&{$#ZRMsMtgH2>x!9fSWdBBm4xiuK>xk=$K1xF4(Wz6z}yhQ`(F;(205{`3$o?y{!dyh1j(aL>B& zLui@@*!>ZchQ>gY^OxS`V;knV0$<&Maf>xJC#@jdYL=9ZGX-|C)(N{J2hs9w0747O zG{}s<5B=Huj#$!QR|udrG|j(c;Xj*LU)bng@Tp}iemT=Ggs!~gqz}BSV!MiJNq$X@ z$4Qx%4RN5RNzWpdkxi`6u?$%}=L~10jh9EAcw;n;pk>iSU(Oi;NT1kR+oTi-l`cW~ z3kuas6lNt)-szcw|f&NNYNIf6bQp z7Iu%aw(_SPHM?X>Q!&E78HxhEp(EXh2Gnq&y|!^V=9}=A!~$sE&XpUO zYhys40kX)8snUelyS<_#jK}=8fr4@CA^w3ufI31hg#slz9ZVDlbn5v=^A3a9$xfqR zF9}evPf5UY`uq2ev6$s%rdQSomICa`}awqOT zu!w3z1nebk;&mut_}UMur{O7JfEW${y0AhPU;y$s6%2u9c!I1UgXGS@aBA2t-)>I3 z9Hh3t^`7tp{8n`LwLyTLbSga=hlgH@6ghg9Ef*idoz*bvu>8MmU<-&u`=8R}^X;*S z>8CFX$RU?>baAxjC_Q<|XMVfLe@n9S@)q8e%-sL$?oUD&tFhz!g-1hWucGKs z)Vi|TsN8=;y4MJ4goy{+(x)J8#B|hhlc)0gz4CH%KyeX1bf}W9osJcf^~l?t4es05 zlkSqVn4FZEhgmVSDglf|3xFFj-w!$6Cs8vn#J*hq&iVYw;&Dd|Zvu`hD`1NGH^v2^ zvbIOB@I=?2fXV_Wg<^zWd0ibobwhzYYJhboeak?_KWY;f%fOqLX~8f{V+}oRhZhhP zuhnJuAKvQf5RW@|5=DV6AN}C)>!=B5{4la=0x>CkHU+QI}bJDmlZNUwoTLLTq zLBc2m`BKZt_Yd7Dpe4|bxf7Bw{u&1KfCR>0v*EXrV2ItlLNQt8SoL(jMwaMTV z{SrI=7og3$Rw&^%5ks00N$;{D7pX&jN(SkG>=GKS$Q&$(3`klH>#lA%SXajS#Mr;hrigBKe*lG8HVx)j~cAb7J&=W+($ zduv49tuOKtNEWTm zIi(ZO^uGDAd~*$OB>nlxPuwUfJ;u=Q(EI&yj@#_ZV|tYL&0sMurd`MzbGKZ6EZM7D!OJ zaa7(NPvzdLFFUT)l|#lkB%b)Yc5{7V7+AvPM)Q>Kp=Il&D05R{k*P@B@5Ux1z4+{x(*HiX9(| zPyxkLAdVDau>b#_BByyZ4d5w~5EJWHT>cXTRaR4T2<)Qx{}DZT`JWqIM8eg2&tqbm zJ;CmVR2%Q~EBe2CnEj%SbvP20xamXWSjV)UNmtjdx~K- zxO3O+x3Fv&PZ|p`HN+(rwbmxaJuO-3lH_|!(3Eb# zdG&>30m8gIEBphOR2PuI_1WaG;{7*9aH62!p3j)dk z9&o}5fD>Nx*b;qi2?tEROd=9!c^0NC^7=}KPGL#-496fXp^XZZVpKi}haA8*kP4ce{92huC zwdd2pci;NZw_YC=6vqZ=!CFrywnV%9X_D0JV{H;S49?3i9|1d!ONTL3NO&AYt++@9 z#0!3r{hyqlra;g73YSKw9pn{9`@acT6Pk?S*;;C2@}2)y-OX&X4x|^KZV5C;#lB~2 z>3T|fpHTVUmF5(fkV3Ibtb1AIryP$pP!;+8MJ<@wc>2_keaC;XR-9@XI0^xR1Fn+fA8rDptD=pCP6s zJ9kKM2zDN7=(}?G8Y?NZRxdt$@uL*a3o0cNZ%E@)|a2~ zcIcH(%jrD$2z?;=XzAUWrbCZk+`1ZATagk@(nwOVCBGzjt7@Pn6N7H7@58P?W=z** zD06^Jj9|9Ex-7PV1LpXKCo!^rsp97Mq2Q_=la8*VjnB%jFeR#kc-U7@Mn;60D7xx1 z8mux+XO};v0bIwF@KvI1edPy@nYDwQs~%U9e+uaveD( zJUqH0kgW4FR|2l1A!;|P0mCIx^`$zi2Reg8Xi{-MNT_qTk7GbA3?utT>_-AC1~rxM zx+Oj`L~~q>LEoy(b_Du7;Hn?_%0hX?TF%#WWOn|dw@)L|R{uG8;t?O8;u*RERugW$x{~W#~=U_t*QEI}7ggP~*BdN@{J!Qabi9T;c(ap4_sy=f8A(FPy zcK2OD?4@jmxx}Rcx|PO0RUv{e6Avd^UlAWP|}-Y6=hF?axYNTDRa~k=Ufn_ddLrL4zxmS<{Mp<}AFFk!2S*e3xuh z$EH@pHg2@V7BRZ1X9%E|p464-Bzq?;5{c(@ngHdMT%e7YX~mp(WZ7!p%&Us_JK%?F ze0^ZiG!=-D+YbpLKO}Ch&bTO!b&0h|?QRIyv(q>Bs;XM&e5o8W{ZEDsg_S;aF%=-> zq!?&R9R~o_ZL%HzkHpzPdeyWnpniKf!mMU!IR5>tgF7VVKbK7DEO*}04}uHKiQl-Q zO}1{%i%bzN)4Ek{$witM#K~Y@l^Ss5mgs)lz}H+mqpEET2uYvlZ^-tKO43s0Pbr@` z_zIKW*KE&R@a#`V=T{pvB?VQ4CO~^XTvpPF2bCk4YDn@~I2Q53uPOC#@zYW(zU6WW zvA~(X=A3{|h}3&d^g?c^58U?`%uGdxPee0J`aP-KA^M}&PMPZqqC4^*2K(sS99o8H zy8I|PzgW}Ke^Hn(xu%PIQRi0&yK}n${k()u2R?i~%YOGWU151J`2MW2&l#rRb)<#!T5M>vx`4x9vtSdnpO`4#G0^M*A8{Jt|_QRSvLYJXJ zN?Amw#T?pT2Aho|=PY7QS(B%9cEKo9o>y?z&$hHo&x-oj-=XMX*|{4|SX*6nk;ApK z_c$|CoTGL_9nE3CBQ!iRT8<)%?{SjUJiif)96c55ss!)(Xy1wRQL|GMM$$$guGi9e z3!B^->It|oaO@6^oi}w=vh$3basJx{Reric0|bTUdrz{33CCJwtHOGlv#qh zUl(||533$IJR_u`X{li1+?L$eBIsvo+gh-h`lzAe(A`t<>VoKl%TMv&oI3s=3gXuf zOjIs>TnPCk4B!8BQ`T6KBCR)eFCZ=HRl7&ld8_!9;!}9QN`$)aIDzNo(2c=3d{lfbfJt+D&UHTmY;v)gHY#v8Y zw(uwJ{#7>srlBXrmDyoa$)f*r?P2{7keK&m2S_!Juk8%=rmMNwJSWW*VTf;OpW?2D z0M;%-U$N7=A^nyYUf)8WVpxh6?9q=agzyinY|#d`QTYU@7FImAz+z_l`uhKXO)vp> zl+i!uZ84hd`LizRx0=oV0-tSGTk>UF(#D-9jSFqIRF3Lx zS-8g8smt3M`jKIX21mT7FyfT%ylAvntg{q@Y};<4+RX;KtT|?`rB9GMtfdd&23PaS z4e0H|lQaM=58T;|=<%O}Wt@CxHAD#W4I17vNa|Mgc1!m8YWRFOd#oh;Vu)G5D^mzP`I3z!9z6*|PBypj76y^j^kYkV z{HmJF!E^egq91dP-TNiKHMYkapG{U;4{UR=rT6qI=0eVy@XxPW1I7K~7S^3xZAJd! ze~qzQ{G~r>M02Z_-b_A>S}(b0Jvt50n@~-Jx7SAf?q(YPs@ixMrk%QAnUi9e}RA*b9IIe{Ikr)oy|w!^&Dsnf2qWru@* zUVb(JHq~!IWRhHf`fV#U6$`>6r~N8`x+>HW%~=(sy!F{jNNTzGU2W)a5&lnGUByXq z#%sb+1GU)*B97IA!sAd4%r14YB-o9d!y(DxLi*z6)Dmq?v8N~NM&wNEf`bxRGTxmM zukf?#P}6UH$Q+;YYh2)MxI&aw9M%`52SzmR?Td5WtjHq_2Ep4yX62rR2vus7*Hf1{ zN9yK@llKwW_#|3&#uO*&qVfreepr?o!)lvQqw1tQVe8In00kLop~9Vk8>?v4?o{Eb>A}i z)rN1xHL2cDzcbS4t}73QFeh&5Xv-bxDz_%8aWH?kt0XA3T3wJnh(st&nwxeLD|7@J`PY1GfyI-_#PR=?P~rVfp!Ii^zY*8-Xd%QxlWmeiNEEq5akw> zheW|`TyCVDNQMRNFM5J1-7N-Cea{1(4T=EsB);!zL`Y9QQlyhaL7vf9(?iom(J}GM z?BTkP6IN>e#+hEb?VW_B#nGC1-J)XECnXk&(^eaJ_tl0VC7~CWK@FSbM!UV!-IU01 z1~`By2815YG#R^b`I3HAVmxuMkuB1{-V4eVJ&b-u2?T*AT|x{Lwn${a0%7r+FnA~` z8*CBsISc?z+}j+g5HDV+Yx<810oe0`*?3p^KHGD1Yil^+k^#^gjUE9f7Zf@9th<8%4Ga(= zi{S|)rtm}n2zRVdxbW=PYQ7lLqSWnGql5i^J~x$Y<-`<0 z`5#v@vRgpu79fbVSh~+5kXMxNq+x@QvG=+?LNRjYvCAa#_>43DhvqV;+5n9qrAU0@ z+kn9>K8{lo%mDyji!2|v{|I4T8&l>8;^M*;te~W5g!&c4``^9g|EC2YIIt`mYn4Gx z>1=l7&2f@I<`k;PzTPzI$(?MjjXcC67Ipeq@$F+s#SPv4Sw+DkF*lm%gB|@ys0F*) zv-+Hd8gEPJQWh$`mIlJ9cjlM{{l)MnGL;WzwE<4wX?NU{RO>c0=a9y|c9{ySOz1V7 z^?!tWv4{qhzgIX|)nG8x6th}PE$5NHRetQSrYqVNP1cc}9aZI7klZt&MzbVh$liXn zmNg^E!2wwkui;LQ6ql40YQwsk|4P)-jbf#~V5rP7l3ymS{sn>SAXDt z2Ddu*O$bVvw%(so6VTU>jPLrm8&W#RbM{E57DSOjP}JE35qCsy#O2O`h#B zPhl@@lUB7QU9~$jW8mM4A>#NoCa)PZNOV1toDWXUUW@e{1AU&AKh9g%;|5p_E^`bQ zH6dDkBj)q{Gy+}bDG2{terV!H`irrnd@nc3*%5p=ew?vZ^oQEG@z$c~@Va+o%S+n6 zT|_qq%szazC{olXA%PgZGsY{-47vN8pP0n6%IsD!Lu|CKzm80D#Kr(UrN5NuYJ=TF zqH~8Puwcy-)g0Rp>q#MZ%tbFRc>_%=Z7_Fp_V_Eke+9rcs)b_N^#QX49|JYvyHw?_ z3S~39ri0xLJ`E!-hOKrq$Fgx(S0(JM+vHI1l^1lbk6reC@NnZFFNu9XetRk{WTPP` z`*66SfJ=y1n`FF)FN+O?ZO^bR^u?Xa&_DrQa{y-*Ne96pAZb6d%5ErTk_w=(Ya=~45$_~9~&ejTI zYWj!f^mm`Ul(r`dZa;-V#pz>W(^d0{f5S~yk^au7Z=Ca!(ka+g)G zaGXy3J>Ufg6hQj5M!Q;D@l8%Ej(w|kgekAEFeEh zuVw*(b{8;R@zktcKP|H8Q5~)0Z9`O zH3107G5b#*#IGTc;igL>nifoRKRF6Or-Iin;}FZ>2#B1%fldJFm>5|kpcMqlJXzu` zr%f8pE8tQ7*$?yIcb#Fef99`_SGc;n)gvOsFoAP2aQ;cv7KF1t6zSBRh8vEkC7ZLZ zMeC-=4*t`;uyuFuXr_3pYzK-rGC#WtbI!E0-~%dTzy0Wo%+zg+z^35;p>_KrM|N^6 zE2FUJH3`)^y>6@lC6NqOoCzjC`wrm*sLG$H&ED&Mf-0kHKC3|y<#k3s`>UIpsUPMi zfq_h5;kaIiQL$QjZHs_rpb}Qpj2lhJQ_8CB9Y5wS#v{LQl4I)s(EycLz_l_fcIfx% zJO4ZXl)$}*5??k&C4KnUEZ0w(A}KnGBlH#VZ*S-tt15Vjvj zyVkn%T&k_r{<~O2@y`@+)*tUYk2&Vur(R4*4j&N^MwY`Y55qW-KSIMa0@c=f;zQoS zyA4vyJq_6~S%jYnH66yUw%i*h1mlrMgZ(;Dl@C_pF)9@pi_GkxeVb&*ofFjgS0q^w z2JOR1tP5{0*oL#LDC_frmYS4m4SZ2doYtqsuU3iUrE$u-)FgWg%X7ln8m`|g&Q9|3 z=*BzV#(hma}aKE=y?fN0kveW3g_BVJ?1pPslmLEKYw1UFDAk*8mAah;BTt;5Lb z2Q$;aaLqp=`ouRkGkr;M8;`!E+OK=4EP-LjB9eoIHLNVbUh$R6l&x;h_3brT2JUlv z7tG?FMMVep@gnnl=ibs?hx_T7H#2^gjoAZHL%CON6vWUP5B)Hs$ra0CuG$h z#Q#w@S?EP1pw(A4E^8!%_4z1Vaiawyep=Bh(1e|ZjjOq<-0Rnb%8j-*BRa707-+}8 zZ^PGpksE|6{+@ehYh-d?u!{`4iR4WlnQgVc$(7j8wj*wCPmDwUN|k*+^mdEO#l_3@ z9cpK=;K~%_yK2Yf{dufxjdph(m-IhalD-^e>lrJ>tc0( z9}%u&{2CvsKT9OA+HPMMEz~=2gnu+vkXK1t+;tNF7F)dUew@SCnANZpcKMRMp~@8* zSW&*(jQ*y|y%%?CSWiel2361NYn?7^%6>8){gRy-_sgT{Lgb|MLK;RTZEH{B_f#Y|DvDO8U^ zG#g0 zIv=`!-}jI!9+Oh4)6#2I#GJPE71YZYhFOI~v0wugN*LzN6i>r8eWGa{&LNnmb3orr zd1LNe_~{612t8}E+`IA@VvI{-Mi?d$H0X>X)`VzH!pOn)zTCW^RXT6VK94z#JYCkA zCyf(4UQ8t;->8$kRgW=_M>uBw5SKX~%)Pa{Pac6d4wpsu6N^1W#E?tMkZE8!jDmRp zov=N!Plrn;S3Slt>hhIWHw_7W$dvi1HmUbud}lyG0qFi-n*U483i`2D2R+#0#B^+9 zE7J23!(W)RS^Z)B?O6$^NvENwC(ymC%X*0ftXTE8tgs^`c$g&iQ~Xl8AC|uosXzAV zyaVNc!7D|gz2z{gFVsy*lT9D?dDNv&I7m7#qCerM-vex*+WSq5FZ%|~gnkXE+&MX( zj%Vrk?Q}s+uu&N}ZmnUj+2NFLuIdBXXI6Qep{_H&>!EG6uvNMXQa2ka?$aH4p_Ky! zp+LuuNiEIk`z^|Ql8St%N|HN_U}sbu6Eop?r5i;Ys%p+ZrF?WHnfif^f;K&sHeb41iN^_r1T7Hl0+;;R zIoF3UmwX(`BGD|mlM(8L*O&T3d|YRgGL=sBz`qN7aJEa$hV-~iMeAQoFa8GY?N|Tai87CO`bDok6n7^*{WCfIqM5?p4BJ7Pu{BYp}yv0 zpK)_zWX{WMJdk!*q`})BPx4_VwEB2XW6P+{$J@`y#t2CQbph)3aij$Uu2!=2qp&OyHk~o+!84 zr@iEH7m#0b>hBJl;_qJ2{6rLo`l2s{;PYtBX?({`KQCn0IP!X*0{>ev{DwP*p16bj ziZqFoo@Z^|kv zjs{g1eK>~ONnOvBUC%qrye|9Vw;=(}pUrSxC}a0S06!igMn!*QVP4r-JcGH|lA|0# z`LP}JE8AJPXdJ0wC1kTnDqkk!OrV<_3z^?Nq|don4UjU9cYqJ;n&{ z`W)PjXhDBL->72?og!Mh&2w4@6$^SLgJ(qf3hrO_6gtslQ^z(uaXo-j=<`^HLS4FJIs^Ih6UzLh$#N0@C6lQWq11gT@$%2F5}y zS{Kjjwvat?KO&4NGU1p7Vr8&>p7Xt7n#&}upI9Syp_{B^$kW@=hR$Fo#e_qDRHR(n zWHQo4?zF}^J}~XY#)%-QEZRjuwS}|=S+V=5xB1Tpz>xhoG@I08&Yr%AP(gD3iLTd` zGB^cVse75RJb_UnL*!v*&6$4qLuQ?c`$G7*#u9_%QSUUY|6AHQX_{;OQ)K_bW89I5 zE_ZP8TVv7#qK{?TWur^whlq3VN1yNX6$8y2Eycdg33KLelb4p0G?U3FDKO1rSqytT zutXv1%n@l?nZ{pmcIblG&w5{0IdKqbt`U#rFj|#E6_v|CBUA4NqKhDeb@Hl`UUea;(c_ zSs_u27rA3f(Q4^zBE3AqS8?Ny7$)p85M0Ro%|D!ARf&>B46G^5;Z>@SiC{w>yhbOI z2U_&#)GC{tVB9cx{RzcJoV+lU)4pAOH>%&8T0l%T&X{B512ZFA+RpUzxbW%s2CFNm z)je>hkZ#70r_2FDa&8Wdhhg&f`tQt6u&9F z(rMOuxWmCcU2!4ZQR1={>EQ@~Kr3k2(-D+_kRJl>)sk@O_mTy{xzDuR$+#QFtL87rmjIY1SU6kc zPXZ^Nhcw+4MEi)|y({T@_vTtT2l_BgAqVFnUr$-MsV%yPXqUQoE6C$vQ;5kvO7Vg- zzvdT=prxiA0@GQ;i`LyHzU1~cdpaR~Kea`Ix99=kJt zyYdjuC~#8E2Py-0um9p<_JRwkKz3I|-IkFR!if9NI((~do$14#a_4-|^#ghgy8FGs ziq#b-xL7$ho4QL`*IQ#j@EnYJ7gFzAQIR#;{=B&)L+%VoCDy(Y){uf5z%WW&-*Tk( ziOoOat}P7ag26z?6rK9tq2C%&*N=2m$m;~>ZW4<_*snp=1)dsA@+=Eiqdb2q%|=mOouj_to-gw6|dKeop`?YUi)}l z!jgtMkl4kt=+(Ic6NuW42TDWTc1~lvYrbyC$OrMfYoxZSt6UJc_QK4;`$7?ji|)m< zBQNDPr_JUo^~G|_fmZ2Cd#t4x&K-~*mo{*uQ8jyvahD8LDojAkwVCtrOx&@2z6W_F z``1{*bDW_Ebn|IW0!5v_cQ1}8`BO=*VYx9YU+dT)_B-a^*FOERjnu*_w9&M$UoNg) zt{z4|160rQ`TMdIykB!2yGsYJv_5*zs_&>j-YN+rn0}aJeFq04Nzq6w3obT+^BjW?Ey}96!h} zKb+MPY6T4xRZ=v#{&08g57b?8_yZOYfP6)&S04v-xqsC5s zwwn*RR1qM)-h+mbRD`#s9j&6Z-JDSl%X$@+*fZReEfqb*vt3(-lcVH%p^;$16H3o+rz#kPg zm3O@Vz_56-+GKu_dl?n|asZmN#1x1ljiKGjXY^RwDB z`OX|4_Go{eB23iM3y)y@D2sh8;;!DcM|D*|t#vcms&UmE|A{!mm4|i$xl7bdNpnj0 zL^mQzJ18Qt<4LXSU_a$xcp$lT&ldXN6o8YNnMv%@ZmH#^XbILn9dp+gh;hbP*T=kO zY83-DkCdeD1~3i`ltW5~{hFRcU9#$@5<|`|IA@f?CSGT~mIU7?F$3mmZ#V^^9wi8M zTSAAxcj&09%hx{_#2RO(`PxzsCt!g#f+w0y$-?Lp9IJ4Y#|rDjiveFxVee@9TvnDW zbUm=>V*2Bygo72M`2#ZBqWNZ)T*gYVj^pqy{ZW!TjAM0n{!cQA9y%F7R{r2>80mhE z$r`tU_>MR&*pH6Z7?@hpi3(c%;{`M;2KfNxN-a?vDHaP)?dtp8^auA=Yl)Llti(

      jcuIR$%V!%MR?1rW7=}+%anGmH=~}SpNXgQ|o0?d!ISbwTeJJ6k zR)Z2F3=5`VbZy}8!{IHe8uFe(aAT1K9EgZ=8F>g95eP3~y>!mOe@PEU?H0Pju6txm08?mgMfB_VB)RpSefFJ2!=4CxHpa@7zi)Kc z2Krp^H$}?SH4%q06!CozMi^%VCZliIggq#*@U|rCtVo)3;S;YFl;wwlC5UL7&^Vu| zW=Aev8E3|4e%gOCS|kT{A9hVX?OFXDaaPsio>)P}!)wAkF&t$1BtZ>kFS}qo-y}AS z7>Az(SJV@eAJY`I^D}$EpYeCT(wypILwNN$^P>y~UutWez6J&4=ccBHk-II6`jFI@eY#d3Oj zra)VmGWfd_)~sSwizcup_XnH}#yIdnZFfON{z;d38qNFsw`pn}GrmLLyT=66r7gHO zBT>(`WxX-*G;6DV?B;p3!tT3tEpmGC4$6hYbys{&R+HIjm+*MCVcawkoIhv2-jVpR z4CRu(9Z=6pujAa6G}!-CY{-2~Fno;$hT6KK6#jU%%DEPdn6Wm9hckc)cyKvb4S^f- zS%4Mb*pA0Sf@Ky}r!M49+tC+L7-rdLj{!V1ow_z7P3#|k^;A^(ZET7`XRt;=k9AIu z^`>tb`-gO_&v!MoB}5h`mP8um&m2l>9o|}Im&7Y z9UC$ud}cb^aW~1P`g4yd?>IdVGySLBUpwmd&V;B!YwtQ6D?-CS$)MZ4B`F%}?*|Vw zXPMgl&Ndk%yNX@dhMY^UJha0k~e4x|_cue=Jc&{aLZagFMO2`pxv^&2QF+!;UV02`u6K4CFLHJhLa! z@k+|`3HJLvuG+)3cM)?$M1=ZRnl+d9-21Eb&nymqyBBmI!$pS|{ZK1+$|E&Ut@6oH zr*JD@Bp{}6$50c+C7B2*Xha!Vk#6X~e3;~k3Do2#CP6o|TdF@GlX5k_rJBCBFxmbg zy+nv%{|@Uz5~f1z{YlLG&l7B)0rjLG9V1x^y9a%YX;UVdaW22Z7tB*Sw{zYiqNdX9 z6}=490n6wcm6u?0sZNTa>K}DT_!kWza|e)w z4R@)(;%s;-UL)c_{KnFi|C8W^YXv*lUoUF@FDNY<>D&l3@+l6kUNVn5!%WUE-7fe- zbp3px0{q`j-oHXko)R}B;pfqEJ{K_8}0 z$b0{|hPFx$tuDZzqwQ=@jjKo@?SOM%IJ=Rirr1Exa}+4Hgwnw-Eme>5W+&)vjco4% z^(CYsZB0VTJ^m2^hqKPd@<=kp!oBq(DjFS#m}B?IsVevlX~AM`(cC#Ad6)FB?V6JO z0S0JH@c!5zxh5LzusS{Eiqnd_yRmh-!ScUpy20;r5p5jT+Y-O_%h|YN&gaW|yEErV z8ji%8Ggl}*I6_KHc3#kqZK+uf;avj=xG@ZLLoLQ+4W7ZFjTJ^-oT!|JxEjbN5)>F%X?b(_QpspT7u3Xrz%hZH#$oY`6$?!L6nC;_*?xjvH+O zOQNh8085xR-*n{$dXaHPFBR8YTPF$)@H5vHb{^e8aCx*t(f#RI!em8682bZS;<2J@tM~F^zGF(CsW9or}XERjAGw z&e*a-ij{dc3U8B9UEdjBtFVI9KYjsHece*u{i0iH{o_sx=xzaEF958oJ&mn7m)5SP z$b@Aj7ftZtS!IE5s^Z2G>Xg&h?LAO;Ry}%almBCp=G1Jx|NgaEx!yk2qc^!-QSH!w zo)1@p_co@qqr*o!IYH6TYX=(DthUfW8gB?Iyhj}(8^dtr^*nXg#J|2k5$0GbnnDJ^ z(>o4S?xW0e%vubwe|RL!(@T}DfD(K$6GJwIZ9sHP{U5O1td zs3^K;$)L1CzwjsP=8-T0uA&(6P9B>`8v@FB^Oq@Flye6o)i4F^8a7l-YhelH%@#5z zc#Q+llLB8hGX{9So{viS?PfeQGD|@fF3haJ*1ax%3tq~4y-`miMy_qq|;tO(( zRxc;-OaLYZ#lq=WuHZnH!c(9!jrBaTS{Zz@aT3IYnq<5lj zm=a_hHvoASCJR}fVToc!8;nBXOr6Rc2NHi}8(x0^Xw;A6i zFAjdEOc_$%1I$`}ajWGy$7}6LMUdOUjOJrW-FM+L(rUA2TABFYt?y!jBOKSKrMHv< zI6Ar7&Ghe618rX$L(fsMRcQ!Hk%AI0kkk(^0S}uV%t9J~1ZYZwU|i z?#=M(#u*VhP|YkoLO!B>yEU=Mz1mU_(J4`LZPl7#6RJzpSie+j$woPYnm~1#diby zT7t6P4r&j!nId1U_wmEKS?8-!)orVYX;`lm_j?s2_IA5InlrRA9fIDe=kH8MUQUDt zZ8ApJY#%X3D#!uS$?gXc6)XdwqVThdCI_9~`wvOPl;QFUG5vNZ;G~b}?Syh@oZYs0 zVu{TK(pzI>eB2A=@pQXs=PhgIJBmdavTb05vS9!8ZUSf!Gb+V>U1sh$Ob_8;gmdXJ z*Qv`=*bY)-AG%lp6C_~3dh_4)e6|3c)em44idH!!>H4O7uxY_$I=ic;;Yr5ut>`kh zl#n>YxNuw>H1LD*RCx&i- zdLzkaI?Echjva-d5CGR+SZnr|AOIv=5-fVV;IHuyar?=5RW#mXRz7 z;<3<4o=iYAub}(NYve}<8L9ar({v_d;o0(w`iyG2M+1q5`I>tAq*2X2jSI;jiqgZA zv^%DUZzv}q&1^w@+`Q=TmTgqm&s!j$E)tHV_*aDwtlKEZ2Sb3B1VDCgAnY~4%>cl^ z8Mqe@EIY$*W*0pc`}@~*n-3_W0wA7|3(Y5;+TVyZYU=9viZ1N_+^)~g&-Xvhox4rM z4ZSR=^=m-SSI@#hiFv* ze7z2#Sxd`5PDG%{(}!{i2#Wn0Q|Ah18P=yHcIql%#6Gzcg${d0=&%h0y3t6FC@Jn} zyJZ?L)ui0&BQs>FC~Q3<$G=cW16_(2BeXfH(knv`4?Kz!9)}F9NvufQYXTuheB+1T zr+bZhKpuL&_{($34X9pC9G44MyP0C_f{qa*ChB7sc%8hnA@ddBdp&kNjMb23&(wjb zm5@8Gtj)9|b~<{!B9g#eu6Fh^;uH1Wi`ZR;l@&qn*hF-1*n+|k?Qc^Em63}pLIq& z5p*)ld6XxTPrSO0w&?8n52f7Q&?@5*PkNTYH&!U3@^XCSd?XWzl!+AJH6gfC^=Wi^QG zvr~!ehu6aWSg47+S%TG{)iIB+q|`c`tZzzkwZJsz)HGuCd^)W~aHepB`@I9Je{Ki^ zT&1sKtW5!QYi+}gATwGp8%j1+0iP*0_bjmQ=x)6k_!O|}*F|~S;@H$+J$AS0D{gUT zD&hUR!&5s}zYVuM+u=YGP@~QN?+MImA;$bFf@Aj^b;KrbGYBTp+*ybkZp+C7ZZ(PB zHJe$o;gN3@4g_a@b0*JyUyRycQfwm4sPG9)SvX|aWHA@-`|nk^W{;@xk18|1daqe! z)^w{52DgP1^}p${f6hWwqmP`3w*gC0>lx|UXbkZ8N7TgA*47-CvYCtn$5923SOxFP z2Nsl7?7eILuV}Vd_O-m=^K0BDHR-kTdvVB7td3 zHZGFS_)~=TAE%te0=Xo70GHmdUGhWmCqWp7`C9-mNcrrSt75U9w z7hIVc}9_qACntmN`y^5^K2b8b^#*}itUxPH0W zIN2l~D0M>$tQ3!}^th~L{sQA^@$0FQW~bAU5@1$csAI+Eza<*(t)Dola#zOFW2OLS zo_gdUqwfM$;R&V6W=+U99{}I-T=?xrVz19}`{>jAcfoltUkg?x6M91=V)vQ0d%nPD zRC>hb!&|c}H0l($%=ShWVu21f8S*nLTTIKp3?c~jtXPpF_s z-BBsx*(lv`#ODiNoQ&^Lu4YsHZH}KPoklsWnu|OyEI~0opL=jt2W5H%Dq>4^ZoSja z4v7PCCBq81<>#YVCO7?vom(%OUA#~v$90@@6w33R$iz`Y;E0}Kb{0Ntpwl|i-2cf= z-1=s1v}1=K!wc%HYDA-pcbTDLHrI$F!9iPU_CG~*{AR_;!T*Bfs}-MJ7b>CT!nR=1 zvR46MF2tlgAvZ-cz=Oz= z$G{R@U)yBcx@;Nrvm*9(Q1(^Vq^}wnSt9%oBMSKYNVwx58`q-V3)J?=IunB{K=<@f z$pCqPCwXOEWmA?1lSQf?+HY4)L`2yL0DLoIU&Qq!tE|&)UW$E#Z&ir>xrekSyZ_u3 z{S+!*jt8v~oz1V0M^@I>f7f46)*hMpDZOAPLj^fzH!-EV(YC$YPR;55Nb&J%BS z4~$o$9MFcC)x4xu%&=y5R0b6~dht45-~eDxjwjWwQ}U5lN_$Mx5(rL!jzc>VWnN?1%t@RXHlYf! zG%BXXyn#eR6lWBw&oW9W*0#-S=9_h?z`0z*>cI|dkWTefZdezxlw<8skI8CT3W_dxTWRV<3*( zZmI7?-m*h?q!2!-(yqy+^d6{@qNU?1OapyE{_?FqjIkbRRT(HaJF^3O)8pj<&=D~3 zXzB0(rNd)#twr3cwW`o7b~9Ra`}aaqq%djiQcd^Z#%=4=#ByeMW&Z}15*?ODU; zZRCyyL=(L6oa3f>Uo@J_7P`T1^i_Xcd>=190UjV#@|SS}1&|?h>K&TKYM7;KTt{lpA=w3RfAPQU562lED4*{VW*)YJtZ7zQApJSmCl3WqVZvxh=vS~4&P(? zc_idtMLRj>ucZD0;+n!%oMDXwKL^l#`}CNHh6ofO?0IfwmXuaMn>`UK@ zGXHA%)Uab)>RZ&E7fg}07pdS++P0_3UzG`p!PUb+#a)5Fc?SaKcX(tZbgsg%D-&3W zZYQl24BG!Y`c(f$pZ;3lJu$Gm`#}Hxa}1-6r^Cn+E2!;%hciJ{0#G~T4xs}A=q`&| zZ*}d_{&jXdw?i3V)N09Nw#SENv_oA~aI5I#m9gyIECIBldCYn0%e_P_b2{xLMOYal9U#fFs9zTz%NCCrzxOVv z9WAPuV;9WAV|kZ^mV^jX*mrg}4G`89O>3a~Q=n0&2~hJ7e476(CE#DW7s+6B|63=( z%pM5=Zs?B1*Q}}n*Z=ofAQAWISAXQMOwn;X3Mbf)3M>cwgQjW0ZRsfH3w9pmyWdyw zs)kn%>Ya=Jwan?Jk~x+y1TH+5259^q!*!D3Z4cVSuU{BMcoL}0pmK<}srhWeId(Cf zx<6+;1RYRkl%!&1O?SJrC4^xoSTacs{1}@PW%`5cOj93j8uo<<-<_AJJxTHEiQKWL zq`ss-ghs9t$G=BAPTxqN2zSm!7ZY>&aZ=c+H(2h+B3wF z)J8mDqSi8UkUebFYXV6U@uknCz>T=FXS2hX;+2SPR;l|-@5Z80=ae9^sZ2FM5{<_^ z0FwP@H{eExt`DaF>yP<#+7>$JbH5qN!OeZO{`Ru|pS0zlEpYDhX2<^j!Qf#P+hi`=veh0t7ve>F_xF-|+Lc&X+618E zoZTp+8`}8JJx|(}l2`awhHm1QOZVXz9xqhOT5*On6F(+}y&r%Vzof_3TXVzi*=V|A_j^sJNn~*(A6-1b26LNN^{};1V2yyF-BB?(P;e zxVyvP?ixI}`#apb?)TQ>PgY>&$ll#m)wR2AVEvN*6J_3U)Yf;pUH}EjV5P26q2@;b zQDb#`vZ-)rAWAHbds`Ygy{e78Yhzk-J>=L*@vrQ%i9ChON2y)J7GP6G9RHIlkc)?@ zfdu@`fFHm-uJ2YXF3Ty%n~L@jhGnW0FsJO80s{n0Db2dZ#lpC^`S{VL$*6_{w*V;@ z@WouIkx37U83nB5VLE&@YB4oQ;B}rsqm4karF3#Rq8(-90D`lP{bI`DB(Nq85-DyE zXxBri4;2oIoYXn!nJC}NdB6rc5@SK4T(*NOB`kU#<=7uoLq*bueyLahmn^Cf;4!{Q zC}O=I~JqjS@G;N2`2hCS#H@=_esB%49|G#MQAod>h|Fb0&A^8cU>*Xn+n!^2G!bWbh!EpA5L+;$=WlLj z(#KLIa;V7d^G$d3b^F`mr7mmN$=h%h)Ak-o&oHk84Pmlfmt!eIGh(wX524MiH+a@%xS}^KXMWd)ktxL)hv*e)w6icA0LUdgB3Wzd&0oroJW!?b#B8p zHqi0ecY2K4kc%BiY`0{Q{U-enKHY7P3{;w`9UA|>H_Qmt*;L8j7Ec4^s1GYUl9@6! zpNs5PAwu5kUpX_pcB(9#K-mkvY!~uV1qVLx;JlMwqJ+Et-3ig(~xzg$m!>NXkg z2}A%eso_8buIRCz$021}dO93*!2d-G1V2=B?;d-Q+eH&c9!x77G2XE`B>B`T(MTqo z2Z}^U7_r}fkfL4puz`ZXJgC%Pz4p?gEHL6D0Oj52D;@hF3q45m2f$^T7t7^3C3H@} z3of|og)ZL}<>Q?XX7tkwb!4?YVlE2@)8GbFQ%r-ISN2P|vZfbbUH8zdVWOF4v> zGH_yu8tTPcD>hD&AXn468HX{JMvfC^oJyMp^=C|`gbd@Kq8*Uk{*=^NIBd-{Jl|~m ztGcjA53Dn&Qc*;s#pUW^A}bU;!}`ffO)={#)vEmxACh zk)XJl&c1DGIqfNe_@_T(BbZ|&K(s1TP3%o&$Tber4aKyjRxX&xV_2a^3-wABJ!X+@ zhj`E19BZKz1{jILiIj&;4WB7sivH0<(<&La0Wj2RKG%7MlYR%&WcEbx9S*qw<&MR8 zxr=q&7W32_LIuF&nV!mS_U`-jhe8ON59~Dn-or!o+e3CW!n@A}$aqlwUY{7pL~lL` zcN`LpaAdCEwZhsUPP(5{9O2Fdx~`Kw*S00_e?5bnsy2b}Bb>s>=#{@|dr$?LAHcLO zww1&W4fpXfF~2tJ)n(Z%>%(Oa_g5VRx4N4WISDxsa&GX)dqd$Q&^ilTtWg(1lpsXBab+T)x@H4FzBKUFYom}{;I*kE!+VMu=t6%RJa(u7PeNe;q^>KjqJjbR(h)rdeDw5c9`+w13B{5H26&R^q=6pzeiCJ2M)__$m>UBVU%k+YDmJ+QYjT zrW2W9GMa*5{1sGYL-)hoRE6GohQxyNNkP%Ur4XT(~)P>~6*4DJ=Px zy{$-$Lhk;|2g)uy%v(%K2+UCI>Ki1=DOl)YL({H?t1wNtR7eg@~%#7ObN zB+EoVkiwHXV5B=0^K8A~2Bz>iVX@tdDH;hP+gDJEIjDL4hj`MZNgLqLe5Op~3RHkA&4kS3YrvksK zrukr8MM#uGU|~-j5_65pGb?GsB&Wy)3-F(MOir% zf<48p7r2)qoRiHq2v`>#gYfgO0*hN;X&n{)vUrG#e&Q0h8`BjXv^~;XBOp1SyWN5O zUg=(@Q9CR8w^^K{Tv#PAO<`rBGXEq)YwtN9#C+>ql}_CB*XZ-MP@J%yGVujz>xtMw!JD9@)|LW^1EgP@qs! zqjiqit#0|6%A$c5L|M9*xpp$^jcgg*R^clSVY!8tY;O@A(F*4_WNC6xG2X?L{7&be zBJJl2AUMM^(N;E;dgXqT*$#YdI)tPJ@MscQBr`TYKom9uUwJMvnwK{{(i52zc&cR4 zTW>Hu<7k1Nz(urZY4emT| zhpy?v7^4fzRNi(B<+?(_{aP#!fas9ZhIY;D+S=-+jHWl;N~qnpq%wr5RYaaid4kNj z2I*NdU(9GOqf8ym<_7i5>d*VpVHQy6OK65_g;V!jUm&)LuwaF@Rvjk<1%RHDZtd&2 z&Yf>BXBIX#dvoggg#WkTtOoA?urvKIb@!X3Z4}@Zm=)AgEQF4YL~&5JMhNKt5TLyb z_is&ZVaDfKK5|y5@zK6Rj{GLd!B>G7AvZv`m#SgUzrM$T&AZUmh)phmr$7rtSsVkivo zn}j-mC@ua1U4dsacI}jvIfhYy8h9pk?P9~d3A+zg+ylULYx?*9bZ$Nf-)5QB2u-$Xx$w}YH z#{ppZ1Mn_S3~-_`p3)kq2Z9X6O-si{PQ+av;SK!& zyYPR{Qc5;=SLdn%(}fz9cP8&6ObeOQJDCB)1(R#9QZR#3DGgw9G)NNNQ7{w2AvbQX)h;K_Ern5ObT;Tn5nb%!!| z7QeX2U0q8wx=5 zd%KT*ns||s!bd|g}98Bf8MOqN`1RIU>Rdl5@SI=~6wzyQF zG!6N+Y07(3cl+d}+|J;kEM%_6`pJeDj?7RUq32o-lF^{EMj~ngc;OW(aN{#@KDgF6 zEBtmpFGsD$+<+2K>62mwAKf@zPG>_oU%g=l3UaI@0fbj4|7)w{fG+pyKI0lz_};&BIg({ z90GrfO>HPYWI;uiUml;1#`%jN}9Ue!ELF8a;tnN9-de+i@?04ZQy-;b9o1Mj%^5FAvh2@2M zbOAe4-yD}Q4Y@V-eHHdG`DQ}&b~F)NXbbO#!0~_pZLE&yL!uuUA53Nis=`3^d>*d! zk;g5HK2Z+*g80c7n-FDiM5V^Nv?GzN*bF`U&@S~gN6oQtn7JoU6&y@fUHrCiK4$#Z ztc-66k#Z?(y+;m5xod!lf9EC-jqg!VzS2y-7RCC>XjXXL`;ih4>K#{2-IHW)0Rfw` zX7sdxmnt=gJqCPXszaUht`QVX09-|)2AEy5;LXbRWl@X?H2^R{0WqE=Lk7sbu^geO zMyR+cl}o>Ar(-A=_3R*)%szeWkpeVi;AA1+Hk^n@m>*cz`&-WMO$rT_0@gXx!r5OK zX@D38fI{|On|xsK2Y@~YekuT(k&U2uwlrioAg7PyD(y_Bm^QL0BtGzXK7=tT1RIav zzb$#*9q=4Iy*_c?E$Qm2HAJYB1SBo~;^g`YO;GR!Jz;v_Q)9o41754Ntk`sXiXHOe zusgiSzCewr)(`GZ{U6kV(wIJqzccsYsx2U}7Hod5!=@k{^J=A;ev<0j z79jUx`oYhYF?c<9FjT3wRQJdqE-sg01h}`K+dn zntgl~50vPkf31whGkAeh&BL6zHMGrKvTo-=1m` z%U`ub4}IbAY_!B7Cf7DtsU~Gsn_|a_EAoVpd2k;eA4&BTXW~rC@0ankI_l$gt#t|6+P0t^!*b&ticjIKEsk@4jCAwz^ zJ%Zi`&e?6?EPuF_NwYmGV4ji!FQ~=RnSd@^K;<3CZWLoJabM_tZZfUfeRY*II2si3 z&9!PGl2+7ecgq%L9L~^UV=~S2b{jwxcY}upSjVR}R9n2p1R;agX-U|DDvYvfHM@n? z^MzZLCsvl0WVsN%xQ{`kdW3_oatLJ|N;(rGPYV4z^a?6ZYFuxk_L>Ss(d&q+x>I5^ z(^%y#-dO1!i=&Jv*Ybsl{P*AHw{8So&E5-Ri0(?OEZwDZAEjr9jxI1M=1#=)b9f|jK>(lJbj4fEbnSrQOFCGJVzBg5p0Lr?;lDD@eNgLrq-v_=9y z8H@x?UHQYqlHf!B8{b`86~=@&>z>kK!D^aqxVHlF?jPX!{oK#UtKDqyQ*ndkK;oI0 zY_1d-p&lXoGR1i0KDb-_BASbC_OYOR+gW6q+etv1tA= z^YjR2G$L3L=U0I=8Ts9OrF1ONZZYRZyk;;&rR(yiiWeI{;71fHTC-)qUmDWcpg$PZ zEKlsR`)_6IDbV>ANmuwX&TOVgzOJ$HYA@YZ!N3?jRE#WEY8<*qE@$rUL?Xdcy^6Cv z)x>1Yt2Q^*d4iuO{|sZV((o!;O^Mj`;B^68ZM`}$%it%^js9}q{8@RRPHhT&-mm5PnFXjjXVGe$C`qYlwA5 znb_Zx)JoOwh@H!9FYm-|vH7$0cxGbPrYu%Zf6(MhC=VBWN?ccUc{?pMhr!`xjgfw) zIS_VcL)Bg!JFmg>`7kM(HJj;vaMc`x6={HklyMqe`i%}saega zS(S$5$`NbVvUJ^_Sl--8abFY9;cZPW+}4_k^;VO0g2HSD-omi;*>)tf>L?5SHPf5) zr_y*1r6t_Is|J()bV+Vd{YdlX1-Yg5Pq9&_=wLRzRYUUB#kQIn#kAFrw28FLLTjES zpJRT)+${OhO6Z^0;ezo9ooyV40blZhX8XAW_E?gB?Fj#zu_pVl9=k)~J|i*DSbg}g z4=VSZ{wSz$RD)?RDEgR6^w@K;t_ZyO_f1t^psb>4uC0U48cG8%O#FE(uuV1_hp2nc zYsJ{0Z~HPt+!}U`89iuRWaTe8T6kbXU@6T%XPw)>m(NVe``=;vTfL#81*5?1%>teo z&%ba^W>SCX;)4Ul(GXNXZlq^5)cZC3$!5MGt61?x-8~`01ihQzyLSd(M1kF6FB*qn zFK=SdXP9eU!}9|Tgf(rGn}C4K+_Ht`BpVfT0ReoE!2Vx%y7agFktum@i525E@(aDe z-AIw9KCd01wTEH^kFny_^F!(J#Zl{l>-wda4{yfKNeus&sQnxNK`^NkI7vz<@-l25Cm(kt z!c-5n7bp5-VHNbCtr(xG#6)_ojJVdhf`sk*g$_+0!)nB`lci-vLi7d8)Wp@fH zb$)rSl`V*K$ z9O2l7cWMBxU>vnw9Lr4RtUU_9ajJ91X^Rd4k6C_0 z8~M8mNEf0&n)n}#;8%wzq(X-{7hNPcLf}b7<+WgQt*=GAJVR?OyP|j63$ApurUi*v zGzYgXUC-^VI=q$e#QgU~#!9VQ(#e{b*_1Qv><5rPd)fUGtsJz2B`}nbUZU~^X%2`t zd`$(K&WMp={`^&WQF2MMkO&y9#Br*L26tcm4D_7fb4LP|9tE-`gKGrX5=ITEc6!J&O} zsZ4yt6IE8yafyu;#=Sd)1%r(2KGyV>NeM?NM`%`rRVR7hN9?2MzdK~avBwcIkF&Q0 z5Ker#0zN_Amac^z#69Cxh&16kmH6?gRE^7_=K9C%YHe+_^M+!(B)+;co^de2%xUpSnK`DQl#g{u2LpF}^6cYT8KP9l zhFbDkf0K)cS$&J%0AxfnyAPgQY-)P*-9d0BjOCZQ88E#RtE*){)ndSPIphav?uxUj-|g@pwpv3)E);E6+k8;= zT^5T&)F#^S6ZKE>)s%G9M8UVQHZjvg(C!4h7>EZPe)CSTen+nkaxQwuF;Q=z3* z08EnQeA$-b%6ou)a98~H(4~fTgc!glYi2)7Wr5p2t=lXx!O!$3Xozq?71Pw5F0qu) zMaYfrIA$D2WQ)&$2Hv?yA=ARnqAyPbba*4Mei1O4$jpuvNGESnR9Ulevv|fQz`K23 zqrGVdyDS0)TpFKBG3yV%!^Q^+=u1m^=2O(srd zh?eRxUhmf~pM{-7FF$YhdUxC7Sx- z8K~ z>)8X%JfSDMRPgo+iz4~ha)rEYM0_2!f!aQ8{zxd#F@Gm!W}hDz8OlzLRw@Xu50J{A z)_)uY^EdC_B2T+ul-bI4%i?RSbwt|0-0!RLsc|^&N79==O5kLkN#ueYkkdoh_kK9D zLC}6cwl$e)FSB@*2{RF1mwlXPY7m|lUogsa5}Fs?Q$0hv!5nVc&Ia8uu0Ei|%c3)zy*{y{LCjnbZo@#5jWRB%*WoqO=PFz$@6 zaMjM8eh*#%2+EPYi+6k^3Lk|~XQ(qb)xpC;Vx7=l%>4*_S{WhVnTGrzhW8f~%Tvwq zOJeTY%K?h?4o2O&cR(VC1_EIZGF1Kvnc_^y-yn|tR1w3fGIKA+(6gP=FAAaQfk3XD zgT?j(DN`|7vbk$^DG_`nY-@IS)i%i^(5IT%&zg=;XP9AT-Umv|Y6JTsnJn>cPjZjx zmn#fNp`Ndl_uh7+A!B(#i%c_Xg!SZwj3Ff|F|i<;9vxj|{t*??gLT;_Ai^8E{E^$W zqQ~R#RRxnNQe*WSnn|Sz+sdTWesA?joKdQ+wvIlUNr!dZq%#{OPR<)1!)@|Rdxm~w zuDz~%Li9kCz(sn6rRwiurlD9leWn^jo8J*iW_ZN{(e#igND=2n`>}T$Z#!m5l^4S` zu-P=>1g>d~0@=aPl5WoEerh@@&3tMZzE7KdO_IsF#MLqj@TCnWRuF6Lg>{^xnvTFLKlm8*8$Zgp2br-_VT+&z=wwrhCYd?>_3Km zZpk~J+#IUIL6xB(reFZSkEH^JV;J?^`#vQ5=C-$I`uX|MhROX091g?y)vD%z#M=-_ zf*l3S%H@hwCB}EeLO@Gn&HOIPKh4e*=Ac;w#D6 zlgMLPWlJ*am@M+{PLaxAbs$QP)nZy~pvpd)y(u)jma_Kpy;CUkr0~$^F@#%V?{KZ4-K5~?xLUfCKbiYIH)ODtDmx8_ zl+Y!WlIYj|3Wf(_bdi0mNel~zVQCm{59BwRq|3Ati@##P!bHW3-A0r*DyqCB1?Olj zeEY_u>L3S?QIu!bk$W}uyZ<|?UC!o(9Mc3qmCY1uAtzuGn~K;}7Mdp6eow0Ekh+cC z+*@<`YAGNQtCE%W$jRr=&uU`UYY^05Kwe{c=?&w2M)ZqcrAaL8*wV>AK(BiT^6C2} zF$p!bn1QJ+16I2ELdv61x=L=~EB7VF7&s-SgtGpt9v!f8P!ZYBM#1bx?`#NCI~`8o z*F7%WK92>$%kNrG6c5@z=pHtujH@O-2Fa3RCrerj;R)Wt&3!{X2S~i~I#S^AUI}Ug zS8CxgLmlJZ${y`RJdXdq15;35hS#=hw|TZpiM74^Y#K+fr2EVjuj;wm+zo70%PsE) zhX!W-z4>U-!j)Ua=7oZ^hI6cmgZu3ENXXc6;lpu0wz`CM(96#NC|i-?iK(k$KmWmQ z|6qNsb510&J|OfepinO6mTn{|Hjo_gO;! z2K2q#sb&BO*1Vs^&vj}h{DgaQa`JDf)(oCJ{+(EfU4GsAhiM**k0C(FE%FrNndlfs z98*Bt6gVKsHCb1e`pAcmTzu$L5MTL%jC5B%06qN_?vFveCi@5G;s`IUYkU}6Lt7N7 zYwNlxE);o9xG7NaWiu&sORqXAYURkDs5wx(L*0Q;X7(GDF&hRL)s*e!OGfFB%{AD% zb^11;7C_q)-w2CuYe+SbO*3yP3LT(V=2)xCDx#EMbvU`P;>!(RIuJSmauL1ehBw(^ zim1n%QvUT0T+Y90f?@X^8#RYrdj08SAw{3>SL)9g3O5i-n7f*5eh)tb3?)BH7%GA01- zQ^xej5a`4kf8RT=sEN&TY0$*X;dW7a|M0WMv1PLq?$B-WRe#VChcD?6hTFxOpn^cJ zF|H3cc2R510?fN>CCC>MN|r}n0@w!jv!+=ln+V;t3R(In`}gfT3QslJCZ#=+`CP=& z;!Q(bC9|r?O+@eC<}?l`?#sK(t%F_to1NM>#-r=z{>D6=XQoqLA+VZjIEY+v+%&GJ z8_`^{KfQgFNOSbGj=A2*SYVMQkN;O7$ZgGjlpec??-lQyazK za!w~xbG+Tsk?aIXsYr}JWAve0``?_ZDxx*MRQGKOfJsUTp87`*YQUT~bp&;E9Essk zVXZ9`B0@BowE&s$2L`530*f6mEpT$3Hg>)+zVi)WGVuTL4HP`H;xFLi{5zI!YNBlR z85R=#N_xWWFp5S?y%sG#HKCPoXpwre|TS(J$SUzb?$pdg_)pJI{m`3ziMX_*fy}6Rq?>cXhZy;h&x5n0#fgXyl%{ z*sa_NPZ+qhAYkKPeCV?nNgdf%?f2`*A27z!4CO)>iBD3c~BZ;)!U-Q4|Gm(KR_R3*HP{@xMLTrs>}N8 zk7?h+Ybv`P{`*h}$QNrseY zvQXqfq$cTJEdnFKi~(&xbYtf5C-_OHYh*vW$4m#d3+#e}6jZ1lHHpSR{u)(ClM>b= zp49EUtK^hJp1dy%tze2K*bXEGrs(BoP+LSBjUIJd4DGXcSI+P z55f3H5T9F(@9sm8xABhkYkp&Zc#RF|*Y5{U$}$PJ>nRPrl*L>pOV4a7g7bBh(UT!D zWoMdqWcWJ%VFS$gGTq`|AN#Vt))87`aY|_({g!q7MUw~%0Vbijytw;@ZnZ-2uiT5N z--1;Be5vGnfkoYc)TpJ=kRSK)`1bJzg(gQ~{I8HQuLfUCY2gv9!viI~bMZs+NUS(2 zfzR1gP`hr1b%5NT%rttAhWN=b}`RkR3mMh`zH{*p`FKP6ls-0L2*!Z81D_m0^iJ}YKHU_1pdxZ{7z8aVp9 z*tyi^^Y@mv@I($S6(>+ify@q4%XRXEvH|y!JPN^$c3##4T$k)jty$fkzW*#1Cr@jO zv|`FC>C1QeV`3`L zC`u#$RKFZ|wX(IIpG@(tDGqxMn5U)z3;0wg>(q*fx&WnU#>Ougx+aA#_qnALkQ*_p zAEXNIr!N3?24J>_^m1>><8frb_!2-@2f`(6_nW&}h?%21w8*z8*f3@!Aa940Vc(#o zr?yD^*`Lwn<36=tHIjLja|H-$<`~XXa7OP6DQfN)rSc{g<@;g(qK=<} z&4x_>#`lWbwP!2kF5x-i)X|k|;d5eK zB2)6Gu1aP*Uu$Ob(+sS2dc=Nz8yEtDynouK@Tt5u&}n_AyBp01ht2P##AZUJP~w}zjIG(5C^}s9tt5qYL)mdcCX)hJQ6jf4otWZ zP>R$@7sf4q(bu=NIO8=MmjTt5@))`&=3aFuJlg1d-F5_q8~qNSrykVr8?g9sX82?+ zJ^j{_A>K&DxG7Wh?-o=*wEksc5rqp$-#WJ&I_u2%xMSO?%qPoq#~E37!~E}~?`dii zfuQscJ=O(}8EUl8yt-D+!t&sSIF5~$pdc8nCEn9~iYYuwB-w z*kC+kd24Cvyl2|sqr*O0Ky?e2Ra1T{53;WC(f57(=vbbyyYk{fF8M*Tg-Kr0L_!zg zwScQcsv~^#sCtE?oURLN$%zpQa=)1!ViwQRcZ zPXU1Dogv-v4H@D|H+sDX7XH@=tyuyfi?FIWNjD3#k1Dc@0$eQDD!eL=g+mBLvRT|L315hCv+2o=BTap(EY_RGHtPROxCfHH` zjl|Y-i{J_rcd$~l3Xyo0;cFEzG9_a8fP?eE{%ME?fDj`1oxFaQFK zie~WBI&KfM`y_VXb!Su^Rv?(1%a=VrgRNe}M}fK7j_B6QC*Aq}E~b9iO>YPXz{>}W zZv76vX0cz6u^PK_{eyjOQ#>*`?@7TbK(%#qUfZ@1poV}YH7fGy&iBoAzET&Az}&|2 zKcyrUS+3#>Sa!w{HH2EzeZtg@0tu#}W>4QW&OIk_9wzO6D^kAP*BB=JbZsQc3EERZ zP(Ir-*PV%{m8)tm>omR+nt<<2Q*j~k*g~r&mQazq`XQEx%_T0V5NuvrYwu#cxyMfx zX2ph5ZhE7LxA@#lH80$eya&U7cpC6Gag0Mhv(IJPX?0y@|AG$gfL6`7I1w7anDt15 zVQOuePS0-CWv4aBYGr=lJ1wO;@YI^B?LaX9~(Nt*sgr`NV9)$cv`eK8Mu9NZAfJPJt%9j1; zZPn^&B>j6~aL@Pj`y6MPd5b4Z>z}33hC$B*Lg-e$;k>;>hSre*cMFVkBA(QnG|`1M z%L9#?)Fk@T0!Op3C}P*Cc)z|LDm5P;T-ue~eNRh`yT#U3O&5$~{)HJ;PA>nn=6>Jw zWtXa_+iCMZ+2gi4ipNICZh}@#)`SbfZBaqY)`hJd@hAKNU4Kbnpf>v z(&})i`Yl+gjSZeru`>`Pm}8GUWj=QfdF|) z_WoBT>jIm!79SL;n-dS1hA-)K%yX_^d+Cj~z8Ag%y|xM{e-nc(*&lSIiy3Y8=jAy=%R40m z@J$$@uofj=X*7FwCMNiFiAfJPjYs<}tHN+Ct`BY@x#dJ@irK+%Q1?c%;qc(AVi?xO z8mWil&i2DNTkNc&NxIe4v}T6&;6l7)!xeorwxm#p76n!6pV!m&e$b0k|HTd-_acH? z$W5lFxbN2Q7ZQg&*L~CK$L0KGgKoO&moKM7#xOoKX(v-B@*#V^iwrJzdsIxNlgxUD z%QRX{;fgx*pyU2^f7I=YF~cQ)EW@3hcEg?w+Y{{c&Uw307mDOc4DHtFw1(M^R^Ju{ zj)hE#(^;-?{>Bp_(Cwf>YJuZ+2O8`c;7h@ z8os-$6g$g_rh@8WAymt8Hb|b-WG&IG;i;hWJo68CJ8Ox(uf=hD`>nJRbwS*kRaEI0 zoCuUsMM+*aTi-^4WFO&N;&$skD12TsaT@^(&A#3`c7nOaC^NknKk zlI~*Rh02!KUT4ocd2v&|GMtn29 zSW2?x6{)m7UawXcckJ~2A}g4jK}?9^sh5l6ecvi9xA#)9w!0A~u&hIIw^e}K;6PHU zEL9;|NyU3D5TN6lA4l)Z(x$)F^YUACo+7wNJd()`rhwVg4AO7}ZvG4w6stR3GQ@ z8ooXAUA)ax_U)IB^b3GdL8K#r^!W|p_CjyT!O(^toRnYCsiOD$Zx)tQF| z7UFVFqp6HO?0?k$$?B5$@HVP>b(DII?C`1dimaf!j%AS&y-d1qFQH^JBkRRszNvXe z-8+e^&ZY*@r0>0$1Qvx&s3(S3ICE|{;*6m&7asNH%EoO^Qc7RUiaYjgOq3&z@j5vD zo>slMaV+iYn1wR3X6=ygAn4)371mKF!rG`1loSy9qjs(1WrZ)#)yCGTu*&Kg#6$gS zUxRn(EAkdDQ|Gh8#rv@ljP;&^84LRvd2V@kD~Ff>g1;m%yh8?$NHT}fC6rkOuiHGv z9*0W{uH~L_MAYs}WO1OFb`j{1D^Bj^;C*S9>o3;-o6DLz(PeSlRu-Je?; z`T#H!>EKoak@;QXcVpq7%gt0WJ;LKw?E_@{fj2}GcXOap9cY*7CxpSAZ(>U6Tr`d! zm>0h)8bB_)wWIBAO_q_?|=6k0sjb3Wa}o>Nicpfxd|&s3gF-%1*6eDpnOdW zE||D-Yv06~Kmf@7j-u@#1x*VTC1T`Ki-MzgLLn9_S?LIV*5Daoaxk>SegEY3DRY@D za*Mh|cykrak12H;zI_{Fpa{}Vdca)9k(iX4xGIqEe;MaF|84l;u7A3ICjf#x*Ws;V zTGb{?QyM%PW<*ejj3wZ6e@jAmhWKk6&yX!`B#)s2D3fG)e2w%+72sj%0dD>}xGxj1 ztNaQErpLTjy%`%<*|^5mCUuQCg5A*kjg`)HsPIcKd)^&wr0#Bs6{6#GpW;lcI>-O-#s4&$1ZKi zFTARx&mSJ=ww?(tTc&cXDYmI=-mg3Ioj5%57~kHV6M@kw(WQp~@Bye1^yE}zsMjq} zuc)wWA~B-hN@)79pg?}jMPF5KXq$-0V1ILR?BVhyhKUSZEfKpBTtWzZtZx}%0OiX0 z$;xG_3uLz)V}L+=8qhe4RGtLMg5=1=4T#vwRF!$>PyWFrG^6vX<8!JEN)aU!SGdTK zP~*^`Rtg5lPq%+{B>YJqy|X(k^nl64v@3sAOq4L8e9oHMwy~vxe|s&^kpG7q0Cgn@ z8$UnPPE61I&8q{uBtmjzi^eaobj$KxSnsIh;9C-~z}J!eV4=bm;F6cAnlZLHC zcfP|;KzLQ zU_(o(&Qkjbm+RtefMm;rf(T0&h5jcqgG%Yz~r8fYoyqe0=`7MM5I*=L@A7g#R`;hNbB* z!59=E+=9snXxyBTOdfXaY)VD>@>9Y@R6#6QfeSj(-ck6aIOTMJl5AMW_4(Qx`SGJ7 zBEJ)oqOE$0l9f1VY3b-JP^A(13j4a*^t|wm3$q8J-3d{(ln!{9uXO@4fki;Me*G50 zfz(6VD$#+o(!#Cl7%JP$!Tr^f2ArKx;9LXMJiHaGh< z)v@I@vpMp6>;{YVQiKH^^10jI-HT#yJl4)lcY+mBNDq4peFZXXT*{L$dAyrJ4>p4- zLYXNe|2UxpKI~I-P6`6^o-SZp*{P1v;a@5hkyB!o@yM3}<;#JTc&DlKXej|-mW2OL z)Pf;<-hWSj3H&NE9tA|caG_$3f9s9ha}^V;C#fxb5jYCt@&M*5^go2VD?6P=mB7za zTzR3(t<0Ur#45H6`3KTV4nR9DW=pFfQ) z(%R6!moRzcd@DR2WtE5a7l64E^3GCJfc5%l`}i>_&n~nwo<&{{1=6(RK1b!7*HAeG zTA>pu$0G|)2pv2C*smDlg`1#|G2z>`VE+DPR|*w#2uiUwXNXz`p1nY#vm4*>uTsqD z5;}%3Egjr?CBMO7LS#&V+hD2kl)A7_5#ng!%}K0tTN(CroQeH~1b~k;qy+xZ%dfZw z`9B4Q-gt!iqH%yIWR_e-?O*w>2u3>TZCh9?MnfoWLdJP_`OQOYngsQ{k_!s%MEbBvU_nk|WbwUb)~R$6f_GK}cA8W0&T1_u|{G!Xf-UzV~XBcFOZgeN;1 zG8wfShyo9+qtB*u|Qrz@#~VEnUDTq%R{Cn@P? z>`hvDc0>sEiz*P7F5GW6jvtHx8~X?Zm!BS=KS;tto+lBb!Zz{beKYzzdhR6$`ly6y zMheOIJwGRTJ`nXFk7lxTo^!krQSaPK?<(Ae(7-2#84!yY;B@y@3a8~2NbYsHqKWfr zV+v_zB^iYDK?)0YQGh=4*L|=bCD!u`V8;;^Pv}>|msk1>?`Jvhww)$p#L%;$nwYP| z;M}&s2$bky70s>y6B=*OcriGC7LO0`A8%8?h~9@xCO!~Mbo&niwuXl}yC@Q|=5H!T z_(Hm9j6^tJ6xVlOM_B+s@U32av1Fb@NE3UPncm2p#{3=soOgAxbfReby63)MKm>iB zq!^=QSg{7C&yGlSD@)+gN73D?7YGd_FLIw^CXefckfn}$@ z_KE0xxQ51;mFaXw^AO7OM$&UeP|l%@ZIk_BX=!0;xg)FpIK9|p#RXoj zw|p4%eIBHZ_^%y7S|j!o^1G4{Mr9^ z>7)iWAV2(by+pkKIF}ao(=#bCk$O!2 zL%_}@F+}h6)5kwJJt{rNA~WARtbvqBz~I)V20X1ZbnMUrM0s+PbcQNA zADWRz%`lM>F5p)!LY7A-RoBnGfV~csrT|!4hf^|_3XQV@eS;S6p5#|TKpVKHB0$yS zqVpRwI{d<#b;LaV*GU`ih@39DNvaOdcqn^i$$RkXy=q=$?y~#o66&#y zoQ#(Ez+UIo@%yhj?M>^AL7XbbK2mO`Bw&T)5T847P29`*jN7}fpiH#Kh+Xiu zTe}*3mK+b79)d7P6TnXX6U(>zDdZwID2J z*z=!s;<;)nypkYV6%YgG7xAwj5eqell$0(?)=TwLa4R0l_HSCQOrobP#$6sz5UMs@Biow)OuJ_0?ffM%&k- zA{~Mt-QC?C0#eeTGy{T!QqtWa&Cp#Ef^;`hLkfblbmx##-@*I4_j{iCgJ+m|=bbsR z*IsMweGs`Q9dOb-xrV5p9 zuuHd|`1s1!f6N`6)sQg#_~D z`X}hpdb;?BnM{U*tYdqu>mTNdG;tG~4nccNxf8Ug*XW>#J*yw1IwAeb?N?IHVxg6G~&aJO2JrNn6a%khn z{#?5I?eqhO12qQEKLC-Ok^;@OWH1de+He|}Ge0N?Bo}`A4Ij8dNCZe`VgN<5?(~fi zeFw_6&hNO3q!w(Fb59;)8X2q=X5PfN(nV4lf?Muj$)hJ2S_C2(sD0&i8sT;t;m2_B z`}6%U{xjMhd!iZ&8Z;O9JCijWuy+{+d(eaA6Eq8o!GNbe_UUgHiHE`UM@X5Axfg(% zKbb0&^qX#z=!YEMt#^lay@XNd{AsqUoygK;rB+bV30u3%{F|_vmDEAE;E@p4co-GF zBWrw{znlx(Xl6Q0m~xx?5sv$DLj#Mc+Ba+0g598`1u2H~YCuWCl`Pkw<+QQlHJ?dye{x$vx}aN^vj!`9UtXrUCwQ8^mcmg(<_Tv68$BVEb5Goyz3aFWaknIrI803{|g z_Y(!^w}{&`QZ$%1#Eaq0nNTo|CRbdj#!|3_eDWSo%^i&_I(p4j&Y z$^nDf`PEBb<}&T$KU~IOMg$3M8Jq0U5NCvnzs?Vv4}f1GdG+c#m|l(qGkB{dhQkRk zT!X(Vk%7ANx-xx|J-ABbuz|#>djcPB6Ax^SSMoi%Q)ALPUFA({kDYAwIA1Cu0^P=O zc}8DMv+u|FTF@Vt8Ig8^!IN;Xb*iG)biGO}bZ};onh;1TQv(AnxY5&gN(Fo!y$_5r zu)zR+q0d`b_lO{YN*tJz5Z0y1|6<$P+IlXd84(aqFDCT=VOD?eP!3zp~goar3 z$6f$AOIPCL4jy#~S7GyPGzTB``hWshqZ`6!{mLaWiXD|%x~Qe~&IQ>#(my5EM;0?B zroOH%kHz&*IzeozcJt;tyd}! zpJj=9i~dyhWi0@+WaJ}3QXRmor&c=2!&a*-h9AMvH%5s3*w8UTCEj%Qy*n`Bho!hvwO#iIh{lhqA}mQ*$7;S$q6_|ihr)*{uIKQ8t`*K zg-WnGxlrNVJ7Skbx6Q!grMvTb5FzQ~2b9zx|4D~w`s7e+R8WA|;014!^kLgW9gxlG ziz~C)UOF*;*{UJR>h_S+EoTSkxWBUkDs;-DciSGvHlW)L4&TT!nLFkn1jN^6S*>uR zTRLY9guQ{6*jJCk)jfT8t`IU0HEb_WJ;bQJed)t1@=&E>&>jae2#qCoY%vqze#etQ zPM7%e%zuCh!q~xLu!;kd(FvzTTs(RLxGA*UXBCY<)P?X;dr4r~U1M&{yGIVl3;Hy1 z7ZLoZWDm?hJgj=!{#begoysr2c!D4TSRxJCT}9Gh6RQntpo$2@%|25;jB#W}U^)+8 zEjV!n^hKZPd9w7IUaa4oE8n@(^7`zHYLARXIJHddhYC3@xYv+wF5W-^_IQJQac74A zUoXH@g}k9^P|W%q$h9w%pHch$DSjRT2osQz_{FUG7cl9Q)mnwl07z%C!_=DD2Z~^e zs(;iWtDQ~1$zw!Kdc{JN$A?CZ545iTE0Kjdm^3w)4F9W;1veVCimbhK;`upBpe4q| zDpdATcPP_ep7uTN->pjAYDV!V)7l}x_(N##%9rG`Gz~&rxaSqjs1UFo@DbsUHuIpx z)dTne*2A>_f**O6p%-X1EBR0!HF9#F)xAHizVSI15~-P+6Oh8cZutvC!F_dAREyog z)*ICu1B_9dHY?Fq#G(TwS$h@>c$gVRWh;L@BCvGg_-!pNL@|zzhGkNPlQVzPru7Qf z!MCR4P8U2x2iQNWOzbCs`jYs(+&2X!lY~SSZV2rz`irMeJYO5NFrg-Pkc@7Uj+*sc zFox!8K$)M;fDrE|tCqi>)bp+|7h4j6vi}O99Jx2W{*@X-6YkJYUbd)YP!Q94^%(5g z1!`%sl?+I&lmHNKyrqjUd#XU;bD!h~g`O>}lVF$AzwMlQvJl zPHjc>^s%9n!RN@e%Zt05V$A(Wus*@)tbG0PvSje;;*QcAO1Oc?FG9RqUPCh)wI(^BWts(TWg95OuAUZ^2RO2Lbs^hk=Jaqu1L9Zrgs6?oT0aDRa~& zC3&RcJh}-!I)^F*@`imM5Yscwr0-l~eA!Z(iC6RiDQ?e#c4qLkdTkn~3$1YS>&J^> z{%O1_pYss%Iv5C$5N%(4dPb6*nc^*YxOtW5@obIMh#=X~t3(CQ`EUBfbmQNh-SkZO z>c#5DjzBz5qPMv5HD~*e7Yb5RE8jQaA)aANn-R%zG8#jnJp#{Flw*yd#qcW#Z_?Mn z6c^WMLzbD-hBo9eoIvOP6LMm&YIz!*v*>QN1e7d?%zOkE9adk)^SNJ<#W%(cpk zhm=K~iDl9+fz0-%qF+f1PYDH6h)pz8wK7h&bO}E5u{qGB15$hQXXhJ52i7u6 zy=BRMFN6131Y^;p2rNP<4QSJ{&ajS4_Qzb}szl9V(TBnbhq#=3OHtn`;)k^QiasYo z(r`-DE9|W042aCZeI%^NC(IJ^O*SH6(ej?X0RAy+wQ{1$EeA4T8-4rJyjwkW@K@mo zFK2*WA*aLrb92%1J{8#VkGNqK7+vU_PgBRA=P-p8G3Q?Md1P!2p;;NM?j%cU3>l}E zn*>olT%0vzGXg)P&-K+@J{32!#iv@UPhRsBY!PmhdIJK4!WL2KRy#_Q2`7j09jMZE zNj8(z0ee*$oZ>3r*UViTWUg5ALn8YF&$_?qZ(3Y5oSmJ$9FO+q31`K97$Qjl{+CK& z-FxxYGe=UiU2=#MN3_3&iz$<0>lhu04?+>t&QR+&O5cZ`QXm z{NH%dqJ+Y@R<#l-0uf|;F{IM7(+@xRmvAh+iIv)N)?YmF3h(^n3+?mn^P_;ol^BPN z9R@cfJgF%x;X+z=$|z{a17k799Q@tU2KKlR~?xZ>3wdU1N75On|3n2@}sv$S8cs1%aY~X)RNLtD_dLhAK@-yet$!JE|I_(F(kguo8)>JAnZVwO@EZJ9WPT} z=C&n|6*MhE{JRC|vex>PLUxz$YPHE11sLfN#ec75qe2)vL;|j*No=-Xyd|1Jn%L@( z3mLd-!-pt=1s^W>=jw(3Bcv^RFT>t~S5VNTmZ3^XN$m(FrL12+w;%l}B@$`UZFw|a zU|#~NA4+)Fdef`+LpYRtZ1rj_06RXWJF_pXE`l+I(6m8&o#mA)mWzsg& zm!?;Y$TPbQEu@wAzYL4|d3K1L!-ov}%qmu2o#()xFKueUexOJ@JpXH0pc(YaKsuJ@ zT!;-xKRSoPn1SjEB_)h!hbd{7X!?h8;m+GetQ!gkxF2O=g%OILX~pVs(`wZ>%j4kH zxCjY4UJa<_BrlP3BC~QvAd6WDS%_$s^m9VAc;3X~rrz`h$==E0M00R;57Ou)R(dW; z_f(p3-A3^SA&WQEu$FaqlH(_suOKYwrQhc1mH2rI35iN*)X=3C&prQAf$F!&AvE|3 z-2?`PL7eNa&)~7mG`r_0`uaI?lN#+;trtW!c|LXf_M(fQM4DdneU#;Z=@TRV!F^8PZkf-fJ?hB9J_w_>N?8__Z|=;``9>sZHU^1v`@Tr`Rv=bZdEc_XCSOvanWW%go0!ecILM z+t2Xp*~~v{fkH^#?!wl?c_FubDd^oWRqFfvuNtiG=bu3>*fry8u1s^`(frDw>-HI? zg*Fwko231r78hQaor+o8cPQ<>^%Lq=jisKI=AEo`(60g-R-qbpV_DIq{@|uVF*!t@|9sz){^{nds*J@?{XdPq61=HS@;68uBRjJ zHj43?Q}xyO=c&7sJ@st!gSW#!ca_V^F}3f@cGuQf-?Lbp>AW}FsGnG@i#p&w%Stgl zFi_Ov^5IJv!02HZZ*NZa zw%v0xkbJ6wR^_OZA$CT+Rn4gb`8yO@1=rh{Q+HqCWg`X;3-g9!&39E2o5NuGGNzbY zI<^vl9{o7rkvK9Ts#ld^hopEmc5q;acSX9gHMH0xP5 zWKMN9UFTfe=<1W8endz6$YzD#->)b{a+yeM>5 zsI||BFu51Tbl=4PNllh~t_Q>91k0g=@x9C;@>cn!>gpKv7-z8WN*IV3KSLk3p3}uRXKo%xc#g#!q z(|)~h_^Q&}p8^>?4i|#Rv$bMx2e`BsXNICbDpnp@E6R&Dom=9w@(!<%+vVRLpwk(j zS!`GCSf(y1!3-~Ai zlDmE=BZZ-3b3AFqbkO{qXQ!GO0Vsi}SuvW z+WD0aDl5MKRT`~VXB9b>L4uXD)(`B!VyOq_uZC+p?FldDYyF`?)>}kjPq_!?>mt`( zx(aRR2M#|U{TXH~Ya@ZC&|Gm^Haeo9RT%ZORD2YolV?_dy9m#?8fjcP9>9Lak8&K= z{b0G8C(=F?iHLvsR5J8YmIFSiFtU6 z4rr?TL3ZQ&rsHq+_m9J*_^=s9^;Wflj>EeEWZPY(qdY2FxhkI%`)leTs4;S8AK#s+ zI%Q9-Gx9M#m%}g-G@w6qTSt!uQF>GsB0>X6IW8H(YwF!g?vz`379iOnR-dlLK_2^v zmm$d^6OTK&q?F_wPyqS>d);Z)98+Nja(UV&=avpdCH46eLjyinN5PB(4;nwkT9M5iiyW2*sqhJz&8<8g31Sinl+!7)6(xI=Wt?66X`(6Gsb)6# z2}aY_7x@|T-P+tLROz;wnZ0dW7^$+3*JUp=S1XMA9r%ohuIKCZB`V*U)K1;6vQ~b_ zd2f7UuIn^$3)!*&*%X3G6z9obzw9SUSl2iPJl$v&i%8)ra2@zqt8%g-6vHS>xjS%q z)D2;ON?m(t=F`T%b%c!6A41t|5Pi?~R)kM;?YNVQI3(N&pQTQhuR@UC;>9rnvFpN_ zYm?>iT+5GMPq+4^4aJ)_3NPh2lX= zeyd4D%DoyA@5QVlZlg%eUcbmCcaO;f^~%x(sxOcq6ra8<+y6^{q-;Vfk8-< z`jAj>viu%Y5GoO%bo zr;{Hk<;Yww`#HYl!^Ho+8`?oDiOog=`tjcUK@v9xy)>vh^(3*6fcgDG-}`EvNTs-dJk162rf7(_Lx|A-st+ix_@#l=DK?HdHd7V z#QHv;c#Pn(7q{&kjJ|IDjw7!P_Bqq8@q=?Cdl!f2?J|_Z?PfRrWeAqD9cI0YbD$z| z^pZFp+b&BGxUISN1t+K5FId6sSmf}K;T*Sl&UhE6KvD27Y1JT@dV1l|RoH8bEpSUFoC6U9$EEiV`lI!MSraA_z9| zX}Du^gk(WOJi0j0yYDa*Rd4hQS+TN+n8>R(m!Y_Sby@zM`$YwaPgRUPr4wM{K!q_pE(o--mAVl5o zi&RnC4ULGkVdD*kD*QD^1n9M*Eci^eAA6h~GUYT;#&nbYbK z+-kXfqdw8$U6o4JsJ%s!nB1H;gm|_^y*GJj7`uFqp0Qu%L8x6 zTT9`z5zXg4yB7ONcBcD`h6jra0kXIofkH%@TcQWzaqHeoox!W(I2CDo-o_4b5HB~8 zT#IBEFVye9@2*!{qsD zO}vqXUnjcdSUNILnIRY#7AI9aw+~Qw>%?tK7u9HpX~Z}Y+)JZOxp{5FKD#GSn7&jB z#Vxi6Rr9hrjCP-Di?b%Yul1wL6Lq4>0MPfA1BhQ${Py&J)M0?LJ)&g_9VbK51#=>`!%uFmgovdAtF{a8 zjZ8>=jUJmu(#TLx{>um!()RhGovUFUFL%mqpSRtg2-GGv@yGL}4hAr%vglq74ngG8 zB-%ofF47?Z`s@pRGMf(=9+6$~Vr0T5Sul$?5<24E47pLF*${sm}={ zWZUE`zQh@okJcZ36OPwX;;!jW^cT}kq=Lsb3>bYWeU&qhm8ywp=QVM5Y1X;&vN0!i ze!6X42(tPaGLgs#+G@Zz8h46)S{(c`i zabT3B6m`>lG4AZ--JAjyjL;RZ#jrkq^Z_^G!1A#>*m5xFEyRViwPJgZ zi3}<4w;T`4y4EGWQR^YT=@R>}WJBOh197Pl-(8tdaF(Tmk;9pKHofNw*rC(Z$PNJ9%4;{6xZ?MB9u^T-?C)60;ZTj)3yi9RFpd$XVU3N>|gC%-DZogoIrnx=qv z^V}3(BK&U(ly3A=%U9dNo7>7))WD`3Qcr~9KhqS9cu~%tBq5U6c95qR<32rcycSS1 zKhu*d%w2Y+!mr;P7{u+{O1$m5f{q~A?IX@Rtg)u=UgWYc;=<_G_mLa&O{KJ7bav$LEt;PDFDan zGr$#-ixUlA{lE&nD_I5Y=$#%WQV#DL39vKG}enPctC%`Q~X6zadfxJ zwWD1>5jiFV8*(llF^zYam`mCwh1s;#;gr?%OvN$*{rWHotl4xe?D*RtHE@!ANMUkyM`ypTs8w~*Yr zWtT(+|Bbgb{uv__f^PM1aFJgY`#QMM2{MQagcC_alkJ#`2roRL%uDCpk%d`!6pP>+y7bzG6`SC!+bG~_1?{dpo9;!Q=YTLEy9%0` zbtcfNmkbu9c0rV7xo3Xb<;kCa^f!US zRv$dY;IIPz|4Lv4qA%rqXZYnA{_6#RrkKohTkDAsZq0S1lG_lvG1i--=~bi*)mWqw z=U9)1HPaWF8~gA#uKGKa(F^@<@ZnUfFpy9*qsOQ>@7T3iP_0iF4ER+(Y;zb;s2S`A zk1x9#5Jsa)x_T?AodYcSo z<$S9?c3q9hcbc*AoT!k;`0><%T~pM@rc{doQus)LWRcYe{sj+T%{V2EXJp&%o4Z=W zJp8TfImZ7tk7~+R0g;S=7}ok6Spr+-v}*kgYFBKWau5XtaZY8-&lh$jQSqEkhA#Sd z7qOC6QN$@HN=;9ve_*7Ru6Xv3ebq_eG*aJI+T(z{8!zNGTGN{QqVx>8WDERAk~JS56+P2p|7y-LsA*_UVrlcQqG&IhQjSPr;?lXvB!6O+}F6o5~Cl zYY%XdhowDea}EZ1uVUT)DJuPrvWoMtSQ8*%t2{ZLasX7Bp0CObE8>KqGZ(`Gl`rEu?p02`w;EoH(gx zw(@pD%;@HP`yrKfNq2CbP{BdiW03Z8QBinQPh9llJ6{E%i9m&O%NT7fT-cp6?{I<< zf2j&SW1{Ku5*szVhp0*JGf&F(S-}vmUlL!X_q5fbSbePWJC?V0DwSK-ikDNk`;ZVL zjR}_P<^srw^IB_7)OnH4$=D5|$nOtvG_ct$8=+nGn8wVL5Hpq0F^GfGvu`wx_wD4> zrqH0EFg%h z86fBxcCh8J98;RVQl*|qV7pM}40va~@>TwYzb|n5;pL!{6>5^9@m58W1_SOFtnzzK zT?oTtNrn&REC9z?n?2*#=_`&k4>##B5zl^+Q)#T(E0tG%3?Sz>UX*ajj%@N6c!0bC zGqLj*Rm~p_ni`DH5Ik(6#qn4(30NXOPmG`$#L4&L03p+Hg%0fl4tmHose@=H^V=Jj zHl7mO8;SvvR#gEpJ8=AGOpG}VxTHKK@)5Jq7qLTNb+FEyT4u{|1Sv97hp?% z^sVsY=c-%9zQDP!3Pf~8gvHOMn?ZvZ{jTs;#aXw7vPKtPG_rTY^Ubr{ui3NBx-F{Q z;vp7f5eIMOHCkoQmu9yGD7OYo;Y}Ej_PTU87xqp~*1EEHau<4to4QVQ-?DEvFrkLE z>0d@cKP5|gy;8rKdREirbedD=sw!vF#*6t8$HYANxboV8uKZ4f_4X;3lheAqidF8_ z2<=eyR8>B!bRX7R`4OYRo#q@z*fTzi!^LS?o!bw5;-YEiMmB}Q@8j++ai9x{2<|gS z`ynH5ax0V0eLlRux-rlH=o31e;b`Skm3F6_>Q>L1LtC2yG#|?pN4Cv`f>ru7T~Qy( zZL1E&{Tgwv^WxsB=x;^Uwrs=P(DBMn$iCS^j1u?tgrcqhHEgHdEe5e&cX+;6mZiNS zVzN4;%%f^kpGY8gHw3Hd-~bb!pRK@5@yUL)4c)u&*v#e_TK+W9GE*70pW@85*}oD^2@V9SlU$~ps4n%c=VIrh@?`H~v0 zu(QhxYD{4kdah0Z0K+isTx^R8I2XV%jRg+2AP{qOPohZuR&#JI zw>&l-*f8$dQ1JCqxe_yZ2d+9Zkx=+adLE)O4}lhENlP|YcE-?_M-YQ=G9Dc)9zjub^@2Khxso~{tXsLePhBK!3eElnANR$%-6p^;Cr6Eb9&2KcKcHVI%;Kc z)jndjxMXKCA-~>lN7e$DO!cV=HeWIrl9z02W1FgFHQT0crFZLdsmj#v^l#_1xo&(VC1M?SJA;$jmY!3v-^U}~6o{c}ClJCf@aj+qx}b(6{&sl9 z`kn5%grd3E%Y7rGp47je-`W*99QiKSff;KR!F1aSIq!0Ne+cJ=v1*qd=#Ie~|}qS23BTxb)R4DJTV) zY+|~98gogDD>-B}8ovpR+jlBuHOT}ijSD29K0 zqh(hf<*4XPA{$5bGTZz$PPN%HBO)E;UkX*SjPi+(SVN39PN*eYDP=y40KDCxJMVR| z0Jb|Wx0AJ4XJS5^Yyik#8hP5kct`gyHTh%`$8g_EDja8(TK-z&Wq|r9%&B$KW6Jz! zG3nyh>(jl1T#tLg#WT-Z?v%n}MrBf3_on8p1JQE>rMUR`G`P;!H&r_+QQmMZS04*Q!T=uxTXo`wnf%D2Mby6KQQjP+$9HD&|eHS zh1Gg2{otIWNfE5J`WpPRZQo|*Y~+(bwU}%iNvqf4Xi;qXc+VcA^H`SoHJYBoxH}*9 z!=1<4r}WQ>mWKjx({FRZ zz3(=6$@RbW8DyzAHg}Rcf7R>uK&eYz4cz1$-rVAGJNXUQs`Ij#Y7VjK0V;gi>5gq(2%9 z>l1_j%%#e!SPG34AG5<;)lsdi%?Vqo*yBy#vbc1hvDf76y+SGgS6^fq! z{vSEm^|=!==DxI6W4`zMBevRB+C z0vMpjoRFRWMVN0wJc@4ybXaV<8}-REs-rPC-QLM77zFQ0+vs8NYa3?0SfTrb!jpj= zfnhDqxbQBddxpI(Q%x@a8}q90XUeq2{d-j;-u#;R+(uNJ*D~*U5@t;L&*O$G9NgUX zqxEIlu)=BVornIgTbBY~Q(X8^Hu-*)z9d0a9t2+MC*on7q>ufj@)1Y1gYD(_9JNx0 zQ#Uc6p`^<*W50BAnZg^}L>3TT*4X25)bZqBO@N-u(I3eNkKi(vkHCKuqy~XV z!0efza}CU&VS|lX(i;uS%cc8T{h9iMItH#C!;n;+mS3u0ZrxzgPdS>0y?nw<3E)=$ zQ&WPt9vWrys&X!RJC5!#*B`;@hjQgLW=e7L#i$smg9y`Rasw9i`>*IOC7^?Z9Bk9P z;U@ixv>}^{`0RQ>Fho>-gGXn@1X4_pu}UJ#iDXTa^5YQtuQ<4gH7HGk5P4*x(T$cf z_t~`);yCt2W$cH5tVvb5LqV})aS8TgP)uXkSHN#NV*uEw;-=RD+IR3Y+~Ah|t5}pZ z6(%lVfh8`;WMPOxqNl7?}tOw19Z7yZ^pq5eY!Ow>u@xRC# z5dnU7Hhl}UQlIKLD5Dh@w|eqv)%LF9)s$l10>^(KiGu{NrgpOavJdw6{YIMxXe}{* zA}oU-hk?Rq8YR%vgj-9eSnCDFY?cot@})-Sig3$&t_c~O$@Lc2TpNXU-*J)+*~sHe|A1YDAHP0&r5>A7R=jrW zD~<=7hIu_05x8IvtLSACFa?KzpMp*)nWM^Xp~?9n%Q9$|xx)U>cXXt@Q>PK2!o$?(Z zKC84w;&2do!TB!&h|j%UgRDq1nLTh3l}_^hAbnzff@$OuZm`9kHGSj^3C za$=(KK0A)JcnK?XaGH`$5hT2q5hVmqygMYPH)&xej^n0sJ>?iWsX~spbRc^{5Cm*klov;~1V%f?dOV+KfZ$LRmr9LfhPqpl<2Rwa)m*m-Gz|RW3&dzG4pR4C~h=zz_Uh4T*kgA-g^MutS1vjzd8MRPv>v z;lD$rZL$rKk|8ss|0jKb&*E0jAkwqQ+N~-uuB^4JhJ{b@a)<9QPX|Z$z|16sH)h9H z-E7!&ACPz*N$+2DH@9_{Zgcl5)v;h2PHw4b81P}Un>cvQi!9eZu>%UoFDw?25^IJ!djtmXQXh5dw>w=XrG&son)Ri3zY!uRJ`i z{}6^~pSLd?J5a|qV=PQdF)oZnv;|v4(9`T?bs<^f9%h~m;eE6ZIKi07iPTdHp|hDy^^2*qv-r= zo%4Ax*phBOf9)qfDHylgaO3p+@+LMW2H7v>goH3K@=CA@oRjKG)td|X)!(#i-GeZ_ z`e3>yC7PRtEpvVf%9&7)H&&S!FiBe$6HKY(QUQ^1UM8}=q*QFV_N5|UYx#ZolN#WF z+6>2!UOQPoobs^UBUlOfKH)$WJFJPlsJhx0T?C-SM{jr<^==mj1Tg-f@Nik~yJzb^ zV`0~|@>9!yA)f+y6H>7XJeIy}3VTty#+V6;)enV(sY1f6X&JQi4z#RbCK;`ttljwD zJ|D!SP9TiyDN7zob2pVB#@gI!eH1@VSK%G=!P>Gn*{gJ0{mG_%hHd3RDMd1jP-r0b@-cF%Kv- z82MK_;HQtWwy0J$qg^G4owK{{B>i4nX|w4;99Bp6j}<&om5t~`9*J$X4auMl0UH~C z@8y{~DBZC7;)JHAck7aa%_G*In=RjrS+Li)~C@g)hg zs3iWmWI!1}!I)nh-U;aykNyRK%H0GMy0MYfdB4Svn*)tc~ z(&Sw0qIBYr>orJ)rjbdxxDpz6-wN#3sZVIcmlxib&Mw*|ZM=jR*~j z0yJ!T8n+_L7e6|Oh^{IZ8)ror^GZ6TpIk`hk3e8KT3le6)z@PIEnK>ouUT)zqG+B6 zQ<@O`!4F@F_4M*iwgMau&n4!F{FzK6 z)zlhsmOMN^n+C=DsCQjs-G8HleOY0b$Vz&hb((q;sl~3@EcfZ?%vUW4kf*Q+i9j-` z!SjVQPI}~G8=lKcpB&fYs#OfZaRLr};BA=MY>MqSRHJ>U6Zp~;Os8;D`DVp@&IG`K z&oaGTlY>`2Gnn5%GJZpDX$M|LtoIyNq!Fsh6FR*sA0AjHA1EnL;LE+H zCIZnA+Do`ViOP&O%)@E#=_s3s!9!7qMZS$GB%D6J_udv0yE?uX{E5+Qw4gk)9%bXQunO^Oz5`gd?Cv4(-IiFpQo?vHuq~Pfmd((!vul;?MT*Nss5v3Siw;qi*47GkcNe(a z6nAtTwF_@;ZTMm8CazVm^HVX!X@LYxcFk@HPK+0|ElbPOhO1*RpF;7pg0VS|*+;B- zbs5)fdAkFmueDn-Z0EiKyb&3_6 zU#?h?yH~0ns6Sww&m>~9?_rl=ldyKDwT`1xuwkCr1H!wzn70gB=og(AcXCv{^rfr$ zJctG~Xe+=rymW=5x*l=bBnBqElwiDZWLoK}4eQ$*i|-x8QHmAB8AwC`;{dgnt57AN z1oV@zVM}l|{VrdzDNFSRYY>5uzegDevVTAknh&UdYIX36Eb*j$HwmmG9~;F2o`dG^ zaXott1OBN`HFy(`!=_qsJOvZ$Vv?LSRz-1)(p;(IuZ1s{E?i+2M z73Z2&q2Z6dMI_M#U#MNq`Goce)|?^o^?S2!iED`gugM@_rT=oHCR44R?*7MW;~>uY-6 zBB(uixfCyityu9`$MKF_%w{h^Nb-w~XA1Tmlx3#_+jb0b zIz1`p+b`nKJ-i){Y7pMKCk_@k?k0n$Dnz|w)U&7`76ZXVSqAAm{LHxsYYYdh5P%m) zUIS*!D(*wno}!+^%b|~~@spA07=^N<<#z6UU6CIO`-dz$YTUOLe_h`h(ZpGCeNh@X}^rwj- zSn^i^cujJl#mS2mTso5BI9h}_CG22L)l`{dd2#Kfxdf7zKX}GUOBHx{-iW$!@oE%e zKSKyKxw>`ApgGbEI5sB1`1qn{{5_*Gh z@`QlC8+DZ3qh*cE>JO2=XKxH}34Uc8yM@D1`THy`mwlGwfu z&njCJhX~YiVV_b8Pk`71pau&S*20Tol4Kr3tp+{|U>F9zC3u#!Y}4!W|3}kT2F39` zU8BJX?(XjH?wX)MgF7tl?(Xgm!7aE1cL)x_-QDe--~X-W+ium&+*`A?eY?*&ecFQi zvQusZO%n$XsL%l2yxp2<vpj7lODAYB-uhX)XO(WSEC`(=%Wl^@YVTELkBfcnuD zAiaNEFRgtDlv!yE{NMVt!O+!Htc|{)tAzmV1Hboy*0ft)5W^dbaAPn7yM9WW7_<5O ztIR)u0^J5!fctPg;-tt4cXd*|QP16AQhPokzyY;0d?F64QjO`^!)KxwX2Vg?RqbH7 z-n&cSVb#HQ0!V!KOX}^ zNadq7F(}~v^DchW64QflmL+47r`Y={BtlOmPrNLis#Rj2XpY*1jafpnSNFLwJX+sm zm9h*KlR1RL8AHXHmJyw&I{5Teo&8A)juFIhq@h81_XE01sl+N$^d1A9yds6#N96N= z6Rl}#_%|QF$JJE&$}&>qLqp69*ko>nvA8nC1tBpdPs)^llh}||7CM8Fa zz>);gw+4TsYn%HL@)MukmK26EIb6b_Mw3dd4D@=#-1w2%GfYj3zI1CpEi~o#UiLYb zz#T^ls}GE-AA(rd`e(28Y}FEig6jv@ADXo!8k+K${fK9$C8x*I$NxN1ff*!?A0J#A z7P2kEbt$*f;)Eh1cKh=hVtutJW z@v}aekPkbM!KwpVV17i5_n*CN2c7XeDQ$ks=#dzMsE#82JJ$0cBo|1;#bmj&-B0Wi z6lnp+b?KejVv$(Q&AfYo&3tY!!u-W{pDNd-lFXvDi594lBMjTcCcNSiNy_Zt);?-D4RKzkmqSdM7f<6JUk>{GnrFiaotp!@_3C zP_1g)QY$49Xpi`YKU(p9+;NQEaby=%$WbYJLN#!IUW}z=d%kl{IOF-LVgaZs>Z+hip|on8zI0=XGidIOdNA>kgzyWC1^#f*fOSCvUwk&0IQGY z@&xQXl0UzzO=U^n?+iZm|8%TCFaApS5>BpDs*u5EIu%9+TLoM0O?E_GL#sB9RwhrP zz7WEqn^}|Kp7+>2N=LDgX_QO40`{5AmgqwYhNMZ)_cqc!HsEMh_ zE;^}jQA@u)+cV%iN+-LML@JyI`}~}Av98%@a>>pNS}vJp1NJE@OwBm$;ylpOMq3W@ z5!wBnA<#2=5J4*>gnL5{-ZOcy`TJ`9&wfg$=oDy1C>YLa#FgjC9PiX@Y{T12Py30d z54EuuSpDM(yqg3yw+Qv!Jy<0NzIE>l(w`Nu-S*XrmmjjIaMO?9T};9Jn!oxCm{bWX zAEc+XGi#Nhh0{F+lCjsqv!ji$cM8KWNnm{`*Ch~vi!f0>+Ed0Hxx)_^3fR)cEcqsu zMT*{4leqoP`?rliu0&xW1)L7+DZv}USlY=X7S|*WmnMa+fDf~e8YQ}NqBL-u+X-XH z27(hlp#)saiPNs_!2bEB?6SaaC@|u5*=1`<;NjQht>dMi!;r~?l2qFnm~S~!fO4CaneNt)q$W`WL>p0*89MrkY++&pn&6Ddcz%~i z;JQCsAMe10j)3`a-YWru@H4I0!UDl-Ke15LQ$#~F%{Xk~QI{#Tf>1fZ=R^yGO@A-# zb`uBi(_de~LCAr!S@f`%?t^)YT7oXxljX25^GNCx)SuSIP{37t9rPSy<+s_~`qIbT z4Q3=z$L}|^Hj|b-%qaSgV4eY z3TcGAb3nhR$8r^IR2s{2WE7sS+%=8-UOO&`ZNX8IR9tZ|O zz{QwLJbq36euG&TJB{>Hbq`N*`!+?iG7{Np*U5O*bvcRqNt=g7wMj3;n5z zk7B$PcQ9INg+A67X_7g6e*_>guoA)=!l8|qJx1(GFuh7aY@qt)qZmGt2xe8H(5low z#urVvs7h~Ii3L+p{%9PHfg_k{3|tmeYX&!^UfxC}G3YHEpba080e=uaIT9cMY-xJq z1@~h+_4AL*eGK}!-+A-WQyTS0#%7LtuAv&KZdpO7X|!lm{coheMs+i$S}@e;1R(r5 ze=(Sh=dJwi;}VWX9n94)y--NfpiGuWXSknjq(H|42!Que5H;*F)0dN2D+Ktd{KnXx zPMleDBnyp1!pEwjd+Dy+j`H0zj+v?c)3co__{>@Y^>M?UeF za=xeH%WI7r(BwNhJKdiXPRGzW26K#VxwNNxe_O9={T;L+dYQSJceFFhsrsXPMQQgt z{xPjxf#jlH$u0k+1bdfF*RL2w<;TPpjvZ_6x$7h(4&UaW*d@=l`+6n5+)V`|+w4?k zs^z=ai$=BxOODM&1q>OXMq4s7Qzl^`-(gF`>LA{mlP3~5G_D3gezsTV>oFz3MuSbQ<6nW+JON<_PRhrtxzKv zgqSl?Z;V4u-r5qAGM&Wl0$<&LmRG6D>c;d#k}{B{pllA2kWb=ZPxewvkJ{^oqULmG zj-zQzE?EUfH4#LJt&6?nGKz%E*6JsmSh&T9e6Wo3TtEsX+I#p21Z$c;l0X`z*fn2 zbXJ-pU+U>irXAZih(FnlyoMM@llW(};L`CGfNKo>8=aF68)WKa4^qr*7B`E$M2RMC zL=~(B$CJ9olX@Vf1t!K42JlG(O6|m(&2p{ucY4cNoJWvN#9c@}&0iE1%d20yhnf}1 z6!}dO=b9LYp_t&)jC7|wcL$vykn)CMu>`>vbC(@lN)MTaVM=Q2()S3t{{1 zoj(ZBnK*>sXzf{?Guk2<>8H|mkB=%%kF(R~pH1-I=r|h&%EWxJXu5AV_;H7~zw+h; zp58>-v03pGa58@QFi6W_teER&p3cTo{M}-nN&`=Umo>>HbCTzg83JilzQhMuztOcI zIALb2Gz?UXR|$6#V`05Yii?=4uH;-#E18KLE?&e87K5X@0}{gIe&nCPqwRH>HwkO0?CaUe`HjFEGX&3m&F_GiA>CN?_WM$B#O=~Ad`2K;%XCGcq$l_+4MkD}B_0Enl47?# z-ji4HWWR~}FWq+_!i*#O==wLYDLv+Zy6>Lm-=A@8A6w9p3NF2X0ciQ=-)xdEN_K0w zc9t%U`fs?n{&iN+CexCACLDv5M7PjVE}tK#K!Nb%P8Go?(}-`MJjlsZ~6*&g<$gnU}iCZ`Uv@*L$wttk=S; zZHu0>*3Z)E{zNv-wDUn|5U=?fAbjWhR@atF8&-x6R0PVnw#XA4E-MSoR^{3`F|LS!3`-CpI2wcS0q zT@HbeazPSOzlZvff(e@#F2p9bUHu!t+kUI`(qcF$pf7>q)iD{-M3KT!OmT;=i3qmZ zO_cM7M!f8?ctQd-7dfb*f2gZJQ9=C}bRyubz;BoxMFSup|)Yaqam30o%KiYacZJe$$&-{0uJ~$8;bs4 z9_YJln>IOeT|2vrktC$Dd&kb9HM3PqFme=MQW6IYpgBL{WN_3`ROHq2?}^Dtv3?1u ziRSkhUUyVYeagh8%)6r`L)pPvco)zqs9?x9Ff-8d!Rzm9sz3+KrS{A7=1_+YkMJsu z-a)HlXl-jg|A~gLq=ZvPIhs6ub7UB19&*H?+@sPUm-nW_*#fc?HB}nYfK>OXe-0x} zPtP)`8=Z$II}o9}`X3OCk_S$h;CApYvl2kRKd1f8{M9lvH1~mNYpPZ$?LRCy)*hPj zgsUM0eD@NZq|-M%CvP@QYq~sm=qLImNla+(Ik+Yp<@{#1u^0Z+)@*`iR4AquR&I(& zZ-M;lJhNap*bQ%73}`cTnbsO?bXk< zqliaGyy&7Bb?nGOid0Klz0GB)7P4d?xbO+kqDqf3tgE%`uDZixe1_r=!2zZ#YRuIn z0>jD==@G?|TO#>1GjjK(xI)SOJnFq%dNv3{v8P+;=`QM&z};^PMKVI*ydO(_{OL-=aB0>+}G*KmaQQUVlE3lXzq=R9RQK|?8B$4L8E!ZcBzY+>` z*ig9M#&Qad-;Ipc)C{zvWj~*d3-hR{Qtp#jpINS;DJyFb(YjazHTK1$X!O?${n3)) zrv3`Bb|X+f#u|R^<2?XJY-#XJ>c6p4`@z=y&&O>hBHxBb1<;Hkc8+qMX)c;=sYl5d z4QBq9`)qouzg|b)HE~GeyByU@`GPG-da-lPJ{U7AjknsQpa&VG|v3b?xd-uO?$*K z-7)Vbi0T)!iwuU1Nyt1h1)`^`O82*D>EFc zO4%Li(rWSqK&XeGm7}v(F~j zKDd|ZL$x+$>u5)7EfKNn=D0WO^HT?@I9fi=8=In+8EpvD4E)OzK93x#DJ$Z`kZVU# zT#ehOlN{A{U?eSO=sHGxcedtp#^1lZS&-Wf3ZWqd2rWxrI^_twn0&1`*0*57sI|2P zAT`SH={Z9lNrP$EmJbUUpSci9w6gtJu1tHThyHr-M6ZsO>m=lMWTi6WuJq;qs?GJS zI0@Lrd6aD4q?w6~Cvj2=Suv5TV5LC+;z~qfr9?p&_zsocdItDs0S$fWMUKE(nu8-6 zAn8gh%vV!G$rePg4W-sf#K45=L)YAQ1Ow7K3R$&@YI2O2Z*7L)DfbAl^Yih90)sO; z_6f2cK{dvi7?H>Hx@$vamTCh=!PbW=+CBbb&WDq>T;%pWigp%9;!y^^7U2bu zFf3A1s$!z^k#Z31=4j;=qJU%c8W}f7u&K8L*ENv8J&#MGLj5W9X9$0S0*7J7RP2`M zd?imDK~w*kaAI30$bDklO2o>@mIlf!1W6dySJp|~gN#**^zRd#bQzWyaUYw?m5u5P z9hwb(ww0=oMi6i)Amc!LHt+>eHbs=fLtrM#47sjY<8>x-d+2e?rpXwTCs3xA3#D4a zFFmPOQbhEd1wfhwq&4zYpq(H@g8h`0aMRUi@ASQr+b~>ikQa+rQ_sdvwSuRIz+(p* z&`d!yG zSf=C0e^HWWr31L90wBH`x`B1AN zvmw%;k$Q+SV|Z~^O!+Q%7&3#60zOL?a!VGqS~iUDtdNJy2B3e%e3pTyz*pRiU!AqC znuHl@UC~q5tQg;APlTl04u9?m=6L?F>F<;EdQ7oy4-e$1=0O0Pm3Jx+Hic3h00wpN z!Yn!VLGxd#;57Gv8;A@YrlC-RYl5vXZzIUT*7$Rp8Sm@W62Y8h2j#e+K%th1Noh!; zKugH>9;RJcqGP{ok(O`!tLnP7_1e;K34@`Av;lh+{?eH0%GSyh`{vfet>-In8 z{efv*7-|Y7>OP!4f*l^=lbc@tb5lY=2+^jW)al>W-Kp_YAe)?u)USu_+UspKdjBZn z09Fke+@*Oo(=pvI3D#XLq(aKJ)B$X+8I7g>E2W$mVejNrKAAF?CYj(Nb+{kh zGjcmqfIA28V4S5T{#xFr=8qFFdc{h=bS?2e=zHE>y8_rKq}RQ!e4nhMYF`9%j7X5w z>Cq_`tIFO_&uzLIGdl7z2!@*W8Eu|^1Ufgx?VTVwd-H}09W^U<(2CyLP7Vm?<=+kw zIt$K(rz#a$qmtoq)apr-tqzp+xYa}^EM(FHkj_)%|wc5R^ z)VciK_}AJ>9iF?;=s}?fz2`WVt3dtF!nh+oivp<0-_3Krhe1_39T69OjWv^jrI*fg z*Kvb5MW_)L|GkLneNnVuT(j(wBA9K*LM_5w84?&XbH(5KQ7kDy@(8vDYrQQUb|vT6 z-J_@7N6RTl@Z-rI+%(%LAGqpj^NVan-9(fq6a+D3)|rRFoLpn0KCisZetC!GrkNXu zk2WrVK+`e!?N%LbpHZJ8GheEhn@Z(%Xo8 z5>5uA((4^a+X_fyA1^5HPw1lw_zwuJ*I1Zl9QBe7<1>g~ahz&W(t1u zbh|NA8+gT>jV2NQcpHi(9>&23bPp1;QokZuoSq%6cE)k!kx1y_%f1o~;NZW`tg8J- zDy02ai&BgE+QD0O#*g04Ifw2-N6k?tcFSWx)jZI@DVl~$M#kZ3@5O8XP=-127824# z&8IC_C70!?8UN*xlow;dV}ga#BxgN`o8P0dwJGiN#`G&~q6-Wqg;IzRzK(9M>_;jJ zw0l3xa~?VFe+&WIX-rasjc>;2^{GPcT&f<~Up;%fCzFwB^M3G3Q@FgXh{TUWnN-ai zDcN;w*1=%|O(<>Lt8W5$gUKVp_@fRJO*nJ~TFG?d93ef`u=Q%Us^s#-E>0gt|80cO z<%n79O|is5G+@zyZnpw=lTG2Hlx=`Pn~cJj$8wYjJM@sg^LYh6+M0fI$%F0{fx*Wv zI8rSDef;gLqXbRR@%qvFDtYj)A8`SlrNaq)jL&bi#0;Mgp^kj&s7zeZCOu^C5FYRE zM?TG7l_J*e0b?K28V#E)ICumh+#7QhWrNM&MNf!VgsD$~V2Na&Q>uaf#_oaCOMQ(> z9D3Q=QCsjMnZd>3u!UgmMl{;D12V1~=s|7BB<_a}&e*CbSI?%k*ntLbuvPPgBC6eok(srt3Jbj}hf|;{AC}9~@kSB?xKe)PDNIgT7{wL`oCI zn_!K=v_Gng5)!fljPCpYt{qFGY$3TuBEzd9!xLFh(RoQo;dk;VsT@Tz!$-qJNv#3u zL;fH=mIf}oL1vIlcwsyc%DU?=zGXWRcO=hX;y)mcEe+@8bZxow{11A$Z|kdW5spv# zb|W!dD976t?x8^4^B>GGviY$YYE4u)@V(jTM!_0$rlU)j1hs+?POw6Nvg|w&8V?ar3cA~;Pqg6XE85pjfrwmXHn4oohU2hY9{T6`G%Ytxm@Z3ySR{juu?OOs zvTOXfhGRcQXTypizq6 z6Bu*jPanU|d9F#dzeL@8o6-aMuSoR-FSqgC12SJv3JK7Da$cjcN=)Cb6S7m~SDqAG z3p{BT+0)CuWcMn$1^maZkBySsoa+L7OIMA!B6(Kc@lJQvPLoehl!QfkbzZgU?Jcb{ zqtrP0^xx+co(Qj1*|#IR_A>m|Dt*3|`?~E_DZI~`lu*A7iOUsR{WUQ%sI!Y=B?Af(kV;U_i&Y3Wy&x_yL68;|0gnt}d1p-sgTYuf=l{D{%@q%o!H zfP<`}c)5hgA&VcFLD*%m!!?RCYLEnHrC!7iyV^0!T@j|+(knBZy{YOm@Ap6K-c|9| z>AvK5$HY=|&1fYRzOJ4Bd!IpmVaxrsl1j~Q0gRI8BVG}Ii{hWkR@phX(f&J}dJrP; zri(@xv%Jb^<5!pynsRQ_Zj10+NS{IVcW!JMcT)JtozSAx>C$hH3r)x5p;`bVEx=m* ztV`OnR}6ZX>8h< zE-sE^Y>Y@KgeZh7nwVa10%t`N+|z(2J9o7-zg1h&hmA-gllbT_g3{|ESg(${?EmmsMfQFr1B3!hQKRg zBSm%*hpJ%<1N#zn{hwOLm{JmWhk>T2?;A9%pB9rq9lTmahRlCs>m0JxP}aam?UntO>VOi76c~Y zv%$CB?myP-oAM)X0B-!CPTNpf>2RS_^a4$><3SW9LBedDjd%{jY!nUIq0kWYr-9c3 z1BV_wZ4zWf5kb#Md_U;y3ve*Orl2ZAP?MpmgPxfTTB8pdS#I5}Gh8+KR9J8tycz&t zm}_S#gDGMpK--_S;sh3skSz=&fuBQK4_mGsNc4S-5ISIrlAI)^Gmc|p#$~W`PK5X> z4ZL6e+VCz>7-U7KG-h{D_Xnc*QOc!QKIeGhjaGm|WpD3-uM)%D$iz*~qr1yQflCK~3j!rOP(Aefp5ryXP8&`=M}B?ncWONNO|5fl^&a8)b;X}|G7Li^Iw zh%Vi6$zJq(*hFe?F%%REWe4b7o-s!FYAW9rnpE^i2r7{~iSL0F7?Rrh8Bc$CHeVLs z|M|Xt^3FD?TBm=0H2VFVBi#IXow=ghWh4{`+xka>mq!2BX`32cp_^SndBI(cBH$EW zSJpI}!$92%5lBH6y}31*E+d(+bjSLWjH-}BTPYdPN=8sbC9!&hUBamLVkg5+&jD%? zq0554a=Cn|>$9TicJ`dWC?PcwVmgu+C@9=yT(nri-oJ!w!!C~03Js87E=)Tw0BB>v zbSS{wTbrABXsmeci@tMdC5US>1DNyasbjIWm2!NM*L^@%O{^h;kG2vpc=P zi|kFHCE?s$yN4bHx+iQ*lzt!4naSF1mQ0mp@qHACsJka_WEBeyRYq`O^r2DFd`#EX zdjO((XVWD{g19FI)8LZtyTo^Nar~nKP34CB4G;)RBy(e!>+0&9QJ|epY3CN{>UE=0 ziKv9DIYH+#(+D!{!t@j}r)jex;A!WJ#=M9!yw<;+3bbk=zHUCIDZ0hmBCZQNi@g=* zJX1gFVatxP44Rq8BCb`Uti(9ZxnTgb&{}K_d#$l8eV_WmcX27Wo7v2lL->31Jfaco zi`Vj7zul_66=?&9(oGFcRxUFg#XSW-(MkT}xQ<1Yj;J_B`&VV+zk5l9&YNp8x6P-P zT_E0*2CU?%3uMv;(M z>)e>z5;!oO4p`{B5zS}GZ2I%#r;Yac~xiX*= zWxxM8riLJm3^vMWI#_@q5<*9ISZ(lN%{q+N-g1EBr5?n{P!5BvLM%tek1dfXp}El% zjR9mXT|4A7kpP_UXbZz-;@~y+zXmWeY-UmSG&2aoqQzvxx%#s3YY@sQ#K3D*eCB1)%Eri|5+wlL z%q#}lHW*0pXN$7gOvAGa)iiJf$Ts?WWL&B)KAZfvTXB&h{p+6{OtnW;>&Cn<&PnK$ zB&!0%Ko}gXnyO{zO)Qn10=11@lB2?Jp+oudrqUxc`G-_0kYQ}K`^%lN=~;(L&gzH< zLo%pQ%^7r~|9`S6wVYU2*Yyz5H)S+|RcMvhOMog54u(lCpA+kb{Va*8HN&0tCHxRYEj>XD7;17`RlCO+QAcHH*t1~XZVpc8o-u6vPF-0ZC%%h6_Qo#Hbf$B*yTZ$4S zj;682y9>DHng50ljclM$fsqsER_`(CiMQDF_bNwPyPhjRD$$(yl5eRGsMUulcM7tL zPe&~oZeMF*d#sHi^2~yR{+G_Sl@buvCN^|wCF6!TIp+u~K{hi4?i0b-?FGxK9 z6qioTmx|`z6}T&ye}klk<}#rotU2pmj$V#AxLX#+9}ZtzFIRc4vogaSHM$pr^lUbL zG@_DZzc7SrbsTvfFub;_C7R&jk)u{Jv2Z1>|s2GFK=R!R9LfI$T4<&%`9M@H>YNnKm%@| zPxA~x6&P1jd(##P#s;B1yxnAKoII1MiVh7CDAP=_gAGkUa>xUiEupTJI%K%Pv@K(k zC5~|Vrc8%I21_PXonEC{&L%B94{BW$*&XDi0Gq>*teMBKLw?c5RT<@F8b;u%-2EZE1OmIOn-Sp@j@6q^hp+i{ zddo?lPPU_Z0_dz2u#T)~6~84ymZbGwlrcv5kY8T4+z{0vQsB4#Y<2W}4HNHeC{(dp z?#vgVgG8KQjBF*qkL`H`fg0Aok6?}Du+`rXU%Q`rT0ZIOPA|wpMOr@pr+gZ`&rTUy zPl=3G-&N8J95LbT^g|#Ubo{C+cIs2o%hqfO@VYBGPtOcmJXEK zQ`*cwybIEKV)@r!o94bNMBrrp0u|sZJ;+-u2wg%i-FEKLh3BiuK^;87PH3pmn^aZF zUj&Q3h)h{~9Wz7#de!e{i9sF9Nr9p5m>kuSS64}MBawxyM(t(xU?P`Amn0}LDE7cy zJM)aoU^EK6Qf>0ncIqEr)lqq+SI`P7Kr1WIN9QX+zB+*x#^@jqzNB>6`Vu_I*Ke1~ zoz3>xUSA4G@g8@so-#l)8ukURuag!qd=}Oo?uCRePJ}kXt+@~Tj8!_EBD<4#XKSLv zQ*plQKMtm+OGsxL67RZP1CX(8^Pf|p6g3CKr7Ew+{Yz18Y3Nc)yCOM8KaM#%O}Mpf3Zg^l_={-t!#w<1s0+Wo%+fW zZ)!nvH;)yP5<@JRB3Z8?xI&^zzJrlqHbf z(yPt3m;+(xS4v!bo(sWh2fc}UR)CdPW%c6v(Hhtrja!b12^%OPsYj@efL$0D9j`<+ znj@s=y|ranJQocQ!G3ZIr=dws58rKgMOeG$LP#*abNBI1aB@Kc-oqY}jV^MQhHObA z{$ZW=mS5b#^7nrd9J*S#nFYuIH z+)_ShOE4T7FX}aaF(gFuneDH>DV1^C&lm(=uv7$2j`QZMd*m!RqnAm%NW=iX7b2#B zn%GKF6cy^>l!|#D(eqX+qK)2@_BSB<0cd>0VN>O)4rcvPK>s{3mn%h)a0-dH1fy0n zs|Hah@|OX4y1DYkRzB#tgPv(l&5owjCHvP%v29qI6Cdz2{RQUBrr7Urk!0LZ9Do2o z_gu3)St2%bQNm!^O#}X)xLH76oJj%{k9$VRa5W>K1guPgNc{B%kGW%_FhmdrEJi%H z(UGK*@wfOSd=#?>N7UUT8IUy9rY*~}W0Ub4vNQ?b&T{sG>J`Jprku91)lk&Imlz_G zFu-X^{I`sbxl)f6!s8j{`u^JL_DS9aSzwIA>GO)BJLsi}ZT#WNG4d2iJ2l&w@cVK7 zmElFryAb!k*(pyCZrzj2ey<2tH8qAA?AY}7+gkd(!>;wtFdbX|du<}Tp;6X>BnaVj zuxvc3OH{)*2dry1tLHq(fe?vQTj{wxa%xaelD#RqHgiKUOn6yCwxKUwzl!IbIcQLutLvT z%+{fKzT;}YRG#VV%$YPeHd+7rGKFF!X}>mB+frTT`WVEq-g*3{-OWUXyp}8b_aOym z(qL0!CnLr=P9A*^r`o`_2xJ+2XKj8gc4x-WuPnb-NOKM9f&lk)(44dIG zxjSGc;2Fld5qA7XnGvMg8JabkDCe5&UH!Zf7e}{KUO}fukw6{hfKyXOwSW#%oA*#s zrPlWdL9gwGZ;3hO83_RE9+Rs~(-j2(AG*S3j5~pvU9@b$tku(+{$|?=o79PjWKB)g zeDx7CR%}MGU$EbKYmpfVzKH%OS3KBQ9=U1oT4J zt}u2h9%x|&*}OV`@Gxk2%|y;7%Cz)FX_uK6iQO~-Qpwn zTtPf1QPb=>s)#88o)pQv*!?cYlg9vS?BGC~&^5%)V}r%>t#0ay#Mz-+1{eqFu1L_7qbg>Gd;GfLPI$AC(tBoRoLQ%ikTpy_4A1g8)cf!bhE$W=0TA7@C8 z=CP!s9p6dIAefFhsMGsxqMulsAR&YcKl2S&LP7*>OR=bzog7!6nX~}U9ikdg{5pz@ zNMb-q*@g)pAbo5Wuu2iUHsmn_9J!)s%wi=A8AKtNY-8`VbYo{WyIdhN!yJZPRIqmW zh)iIwj#L14BVSIxF=ewEJmy@}I&Tp~-qwA{e^2t^7`AVGc3MP`E$Us9WIfzpRJJnB zSl9;pBo%n(e}8&sB}xJxCu4{-4baGNQ(Rd4l2Am|Zg=%IL*peS*FSo1LRu1I^> zZiua0)k!Ud#)+ctU<1D7iW+4^;Z}(=`XC{WZbYFg(c_;E*#Q;~QAkH(wWWf=he=TL z!xb~@qAPED-TPGH{e3v@=KRt(YuNV*Cy^o4=W|-69@bFbzfAn*|CNpdv&SA=c0~I34EQy+=C9)*zPz(SHxcPy zF-fh}F$X1hFB>q&PtSXH?wen^8_#3Ut7;9D4-ruL@>V4cHk7OCLl)I%?r$jo7SmiK zWmQyj+6?WNQPX=d{%6v3gE?5`4&35qcXT(k8_KgBf_d`ErQvQDW7U%{`()gi(b6QL zjUTCOB<%H&j%8PM0u8O}TkCFDRAVIQ$k&jZ@E5hFzj3BfXur^!ON{ zA8b7SussAU%K?Jq5Fd$yDJEb;9B_S^TU0r?+5L-RkrOtuT7BkTo>87seEJb%^P-B~ z6|^fy5OY9G?eQ=^CquhQ`NGfp-BOYj@YWquAn(RA7r?HZ%47U}+@#gzEHK+28ir@t z-Ia2*t0T*(H{G6sNAPc|#cf-op1w=BY4uHIegnq@buXtI!%CMT+R+2OP0Umbmn zXSa`w4eni+;$@IBy^bd{#pz#JqTHLgjtD*AuwaUus7L|=OssK{y5{aOml;)%zdtj< z9|Jw4Kp9{6bTO_d<29McKw&gejF?1V9>rP3cR3t)(bS7)sh)K;<`z<`@kD)QsAtwDZ_{q93;I z(P@rf$XmXnRs4e}+`0!>{~5|~EhcsNHSp1Ej&|J453UUh)}KM7FGTb9i%+PmGS{@_ z8dF4fK0Jhc)NWr4cnof$%p#~xS8hsC5e3Smv#X5TnR(w9faZ(U@q9!BBf77y{f7wh z2Exy0%+udwxsNCD_Xx@;pgJMk0~JN{mAO~SvffC`oH`9tBn-f6g`c39*U8JRiPDAy3BE^92DbtfBOf zK6s8}>f zS>y+~2m!e>4mq?g%tW-L8Oc|&a?}h!8QiuD?Wm2;xkJt(EgJR2G7OKw#$`72$E6R4 zk!3M&_^&MlyZWD7_`O(c7DfcW=D1#6Xaf~7VcU4Y?UJnQ@XeOIiJ*Ev@EbffhcarpXDW7NfAtGrk4 z;{2SanAZYia|dV3@Vd$`v}zf(cr8&X84gGa6Sj=B=EbVC!#Ga3TDtti_-3J{=8us~ zZR__%`wN#%w}X$V$Fc~C(q9r*;xzkcA)-mTWBCqs;h=$`#UOJw5)u-BXKHIZ3$o|h zuXQhrfV1(O^Ifw|WQ{ae-Af)({;AgP_&nARyEYi#&Roni?zx*BGy6{wZv3A1M8+89 zy0d{(Em@-0j*u5=qWt|6DGl#m37BBVL|i@{8S2b6CTp5tjNaL1MTcSImUtGX{j2I6 zo9&sQI&pA5nlN9hbi_}MN5AHV&0}43{^YHI;jTM50QSI{36nG5h;RA6inppSJP7hy zv-GM=8Oqu{(pj_IeC-p5;}K5pgMTCoiSY4=j8kG2O$p zjOX2YfV3;7#(Y}9qb#Mv-`{_Z%O^`H8 zgEqmMRD{&*4rr`&NhKWwC7ASculjdggSMEd=>T(k_zf<5opVlKm)Gc5zG1%;c1*(^alPU1UlP zDPYAtnP4N)VI15(uIcqady^BjQhiTaQ*2#-Q@kUX(2@JcqOSx)jBSz7P*6}$sH!Mh zILOz7kvM{(qw(iYO8K1M6P|6fgAvp-J_%^+Jb2_+T}PfxNI^{|bJ)AAxuaO_RusyW z6yaQYX+PKej7_FM?xeMiyg8;bEj~#>@icWj1UpgJIL(m?x@f#x{SC3hMm+k@Yo9q& zH%hZNiaIFJ0g~G&zlV%7I%f!}P>`q;Kct50b%3!K)zU<=3iHI)&#E|v}HOaY_T8b_YcW72G(h^4A|L6`S z1zTEx^_yS7+fT@Ghu(lU|Gp7^Xh4$h=!&7h@`Z6PUgiuU=0^Lcopomrf9)%tYO~E* z=I8YvV;j%=Pvgstu4HO4Ef0iuL)2!4Lhn>5=k`d`WfSDR*|4bA*r<$V91m$}#OAt#SnU`7K#dB+Xe}*me5U~j?C5Q>jBbJ0bCjG?BW$u|a^6VXEQb`i{Xx~_ zatYrVinPD92j@k+D|!4v)Z)mghG~vyg4NlrL$le*DULhsO#NLRccQm~(3-?lj#`Ch zg)HBhVhWRGO}?I(ygI|fL}ARuYOb;ZL1U{^q-;0#M=<}!XAX7Z$M!v}uy-Cel5_oa zY>7>0N9YSQoE3dP%lve#o?!8&sjS{+cR~shzBXrVz+fZYPnyx#w4`Fjn9?D)wyD#s z)r>e;BNT5$W8oWkr4LueLzjw?o2_DrVX>P%O#Ud$IhPysHC@ebTb%t>y zy^unbn7%OQK0AHDW>^4@jS5XmtF3n=ZmwC!E)*k+|EmQMP^pX9nd{^KO?}hRo`wl;NCS0a6C?TjlT%S+Mk$ z0&XQB05#Sg5!_H|Rx&gCp`jxG#JV!?Okc|_RmH_2Q5X1#Ib_g=QB~N-B{g$3uPWW+ z6bcGTE*Ll;CZ)T}D8J~*7!P4w<1hol&x+<$dl%M3gNe5xYJ?7#chYmQ$_dLkJ;gga z#U_k}dd)x7RWNt{{0S&4El%b{r^GPa&Tzx_c(QQ}M)EL0tRqIaYm;?;bnd>8Dx_5x z0IoY!C@)@7ERe<&Xs?2~@axmy^-V0V_vd%Kyd!`@IY%t7w{R|73?x!kN`ZiYlByKQ zW&-C(BINnzTl)!F37gA}&$FgvI=S7RXwqW3I$ZQRhlq-<6{W?#o{%a(cmSU(fRRb* zu}R}RP*|YT*tC>}@q276^gc7K5+6FLsEB_`*ocg%K`M9K8mV{yo!)7|W$MW(ln$OCTXimz3U!XI5hc9)IER91`N@avedX+W09d$m^rnQ+) zenH|i$pu>0?;5HYIFR&`5+wlmrcQq%gPknkslUn4*}9Pj&#)P^@lKp3&Bru00vRi` ztwwMIq_P`UJ%>dzR{%NJuG6JWCXw~KMplWNqom*18$~BM1O7DF?OJib33T07lcz8<=k5sly0N36oLx_FJP+x!yHm zmM3l~8aC)ERB)ceS!;@jP@}t*IkV|?plGHej`zFgwW|(CTJX*2;bty2LEAV)$)x~M zGl4f0GABYt|1yZvM772eU#Y&Q2AsDTP6Yvk@M6Z$c?85R%vfQjI8d$kgX8Pb-fL`l zk)QRkrr-0l>Z{9E$3*;5VY!@exsO2Fd%RxpC6}G#RZw(e}l^B z*UVnx@y3=*euw5p7jk@3cttb&G~Kr1e3SX$VCI`cvNE2T$te3AG*jLz_N&dt`dLN6 zZdhJM-+vb6CD=uPSaI!#*kv&T*=%PiVMP(_nG5Z0SAgatbA~mpxq*fY^WCz_c%t6{ zr)Nc~Nxkn4hNEm-ylgb7#e?S0-Kwgb3$+S}#u3VY6B$H<;TzNMURT6 z7rJEdTtq?-`ss~rR=H(onfyDBROftb!O)W12|9PhOn& zMJotrOM3|@_4r7qzKGxFO4^O-zGyqZsOJ1op#ZW{>0$^uWNtIuI9k2f0r$~JV;hN( z?2i+9!UNCr?x>OF3s1Sn4aSv+h^U}4#5&Z_Rz(;c&SHZqXidfoA>Ws9_QSGW7G z$5k@dnUVTKce1*SGDdAMlEe9*ISKN3V`O|DvxjiGG^x>U(OyeSiu`GS5S%QvETmWG zxXtWoadTRKpd0Zfu*RMH1Yi69y>FqM%DuG)v@FKG51IUsXO-hvd^DV-p#_V~cbXBa z=0QJ%J*n`qSBK$}Ib}XAtPLeulR_$HW0*Cnr-UY=gz-f2e`iS{=t=0e3(X9WHkxa| zr-Nmh2+D)2hA=$%kc|(+{Nf{QGAC6I1U{^ehQxS<%^0K?B8`?6V(DE-(@i5v27+r< zI$!L*{VA7qkOgM=ezS~O6=g|Ss=w(?L>21Ilbe7?hDjw7%Z?Dg7P;*~RPv7ZXoM%|8L_vX`@*&mXN z67^({)W@8@OK-WoJK`n>x12Ei>8y|9W9G1DTarC^#p8#cHXIRn6bgT73+bqe zti=Lq7a0%RoQh$7d-B!Z+=xRF9W}|OvW3Myybcx}TW)VIVIv$0VQR*N&O@4nl z<92n?OAe`w^|m5h^RefRevZxpSwJl+n;bXRHlgOue4WPP{9OAZKNRDm?3C9f!ZCp$ zzjp7RwkiKpE8_X)p1-0yz(%KN`4-_5_$xnDg2;cwAFAgGKL2ie;*%6qg)jaRxTG|i z(MAzwr%rkEi>Q4VT^t$667;Jo+FhvZ1t!AzBEl)oCo5ffCW$!YTcF4|&M|F z;bo-@T}%(!g~;zk>Z0tT@cjdjW}sAGAZq!~J07enwlg07?WV+o%ysMZKiTj9jXl_l zVYSKIJS?>QgZtCRx>8>(`&TCa4jswqhccw82AaIxGqx#1ps{-?H-&)8UG8t@hcAlBOt&{VdQmCsAP4H`o@RTju3${}4aPiKh^0C6za;-4D z`RR$4zi@fQTn!m^t=`D7O{}n5UnO^&zMse9aw7u@K3<6M$~IKyQzDf>+WlIYRUTov zbpKkkSEi7Cd$=0gTJE{7q;oaaGH(RY9z)E59j1U85svWcfNb@e_#9Z5^;SK z*(7$*(}Pjr^SM^Udsl`;L$Fd|auYMNdf0V_@9{L4c6)Xh*r{i@d$j!y&!;CraDLV}tU zVsTvYR;e`6b4ezea%Ip;=34Q98~cccXTZdpIl-Tys6PJ=Uv+l^0gvD2@vzE`5FnA6UNQwgPc|NHZ|WA4j%M-)5E>*=vWOiYHSp>x2~4? zG#6NlV}REqI!hwt00VIZLVL_c@jeiJ4vkJ$9qlgwomHbxTmssu12r;h15TZLm>SX~ z8(suacrpp z@lj^VZg&7VnWN9>?GCl|OcCEcoX)jNFb2Aw5)KeZ{K(-j%t;*lj8<@_F#h(+4S0&* z*7Hcl!U(N*GpW)4(o3MseS6raI`tr-u-#`Ts}_J)imo&?@ks~Uu}t14+_>|pat*GP z?-f?9$``GU^mhQwh)8A2Uni9ked~^BhIbB}tF*?XP7K(VXGD5z$}AdB_WvZVt&E0! zNt!ISFo%TID`_=eHSdrRYL2I-CDlCYCE@cL>3vCSUm7|*bBWR$RVYgX%j%Rr+7fG) z{_N@Rm33tUa4vZ;_(ca>J)4)FM zJ=ew(P4K7T*QfTjpjimtK6#Acuv${BcXU$tZdC}`T>G^hby9DUs=bNLn9Dme0aXP-dv|e>zZLj(+ zY55CvG9iQo@;oY}TKgR~#`#8>2=d9_cD_gAxuX&GS``pDf90odt72f;)}d#PFml&R zZt4T6vPnOVvUjm?&c9qHk6Bzd9(M^xv|h3G#iFL)QAXz?BVWzdjmHw=ZJ%3JWzaNp z`FHW!P1KpdSDrA`+pRfN;d|PA;bylH3KgNmx>OJHP{QenRpxI}9&#GLoXoZU(NP>n znwW@%D}F$S?Y!f>dfNpR|C#2mkTbdl;SJy?&FrMlije7yDZC)*D$q!Hb;XbUgo7 z7x*o>jh@^A;p}UpJ4BPNA2r-Ri8q)=5e>!U{oH$qBf}I>Ng{K=@|a@@o-K>Y@w|_P zxDBAV1Y%&chi?K*Kaf56PNQo?mR8x=%O)Ma&uGZPH3W(fVrj4ZT$5o#tZ1s6oa5!*QuI=_o{wX#1nA$F;~K~`0^7IG1+lYFT5+)`B6R; zteebR<_8!hce-_ayoRhS+I(3<_WrLKW-~lcVt|UG3(Z>DU`A$)vLwpIu>gefg(!YMK3JYj7l7dMJR#}WPzQ54#|5ES*Er8LgWJ~*f zsL4l)lTotQK}UB0m&egKnVk9I0_iH9AvIi7GlaWz$RbSC92akQgBVAzaWFCpF_psc z>9?b86_r^t%|_#SsqJ}u7lKw0e+0c28DE}_LFM5nx@{!n-*kI`Lao%aH#?L&%Ni%B1vp?x8xNcmu5G~Hq&QlN}{Rf4glWBzbR|>OZk`@M% z1LU_OA3ppQ@CtmHl8LzeVeCMpc_-huH`@T=jpED4&gGcylkY| zf_P{CCtJoSbXIEfwl;!mxkI<9gM$xxWQ3E3?qdYtE}Zb9uE-{E2cu-_<2{ z(dF?h3*{g5{Wq|UCcqEh!2*xTfp==~A3wx<6SZrjY2*j0W2-*6ix5*~4o(4l8Hmc0 zbOg(i$S}9_JF$o7Xl|7h#wcP5aA<0yA}JPS624*iB?AQ~;aL*^o*i)mrIZ42J{L3? z78DuwSzo5H&`P@jyti51kEenI9LJoPaRWlMy}8vx39%@Oir*}-q-_MvqN95$>XcIg zHA4Uhwj22O0?ACszO#P51lRcsf-XB*Rfx}Tz~v1rr~#NVvOSJtn&jiZh`Iwu?I<=M z@uJyvgBnSkFYmKILwQAjTAbr`V6GziKtNq6LTOS^%T<2>eO3BrO2CTz9hkzwZ;-yr z%u#fksy{i`mMgL!dC@JWqCv=dXnGO&LvwMUo@_}uFiH_jla|r!pqr5Wx=qeMxcJAa z>Gkmla(lA)C;aKOC0g(GGHDB27vmRpp^yns}#5AdNg!rMqy9Z zFAU;8Q+ikO3?-0ml&%fk_mPImi?FtJ_nWLCwFFdfVj=l}REfv1vPDS+qmPQXDGUlR7n{nN^FtL}BJyBfF z(@Y~pJz ze&#UdJ{{hR-Z8TYYT>Zbw+Sv7UEGNCi)@l@?5YDYk2y|yXiXOvmvWt!#3j29A8S3b zcmtqy(7z5<|My+HqkgU@!?|($bM?|uMb22|FM@ZigWI&11wPMIx&NQ-L&h8SO`&KA zFr~mst{SzI+~JDOk=nFCIL#m4# zjK=#4Ql*qJ7?(lf)@j0g7VxNw#-%ihI%uKuVCjC>{RZo`YuNQj)Vw!#8o09G(x6{p z*(!rcqhyj%kgp_AD^__3^o4@lFR*>BexPMcBT0a^nNAoyj58yOCq4xpCFscqJh<;B zrs*K^qFimX*nqrTwIhtT@RM1@%rPmTC$E)Tm%cgF^O~By4)FBk%uUl&JL+Zb1xT{O`CRK{1zQ ztLF%9*6cp8sAi5FG-@fb6-N0o~mH4J=arCD-F+~lQ@8f`8~R6V=InjZW4S|Z3TjLjm8V;k^~ z`wSw-RYV#k6pQ0TSD9#E8RGU1to?tRYyq`ddt4S2Cmv4hGl6*FuSEXEpA?^I;Qrmc zdpTyvS#&eTCD;P~OO#vZZm# zMqJAD!XKIO_i# zQoch32b$Y4_yk~ur?MFqe>!ny|w2x zh<>NdVG3D9bX?Xhs`OvHcndYs0J2+=+vhuNXdE}5M)Dpg8bhUF7zE0Jh2n&yF`u%A zBg}*CmN9#B1rkUca;T#Jz}UT-Ur2SW7qp(HT`;X1(`ds*HDK~@n;Bj&LlOG=<#E%Y z3o7lu3xd~xaMFIF?QyAr@E`wRUJt^x)dy^bw$mu9(UY#{0V&WMj?eeyNH5yR_&)?6 z@C*HyyAE$?qgZoQT7EQQ5R|{_|1&H3q8R!)g_i(#`cl}J8S58i>h z*240N$h8ZwLRY%!-RJd<>+0GdBelmj2j@&{W>SsGlEDdA{xssWwTN66Zj9jGn8>0z$(l4b!+2H zCgWbizr$moef>>)Zm4S(y^-acBNltF%rY{g7}=DgbfC84MF#|~T76P&>G!Bpzd4Hb zrjd_KW0V?)0;_zW?Z4-wt92e4`gJC*x5&^SG4WAC^hZYXU{-(s@Zbs-)M}d19*Wan zWH%&6&(mIU1_GBa2*Ax^@b(^bWiXn!asdMQz8+e$4kP8Dz_IK-dK%Cpvc~m9)3)UV zT;mgrOlS(2ivM&|{{KM~8QRxjzv{GLyMRi+)X}LkQV4gp12KyEKQ+R?asTeinOY+; zSh&lj#%D8?7_b;r-b`4gW?jZbr)zpI(HuzJa38t7cfC=tV6ZHR5+O#7KMtC=@jeX` zM!$RKQuHQM*&R){20$C^xlGls>MssrIFs@i^k=SMX0qzXIO{l9hR+98G;3q|# zxZ8A*M+)ZuhF26ohY|T^qQMhSeGaiUXzk%9r}!x#!NDcp+)ndTBbEA;Dw!vCFvFFy z@(M@g2hdKAUReYvB?m}fS;KiUXwS2V0cd`f&Lo<6@2CB3XQx%OpksQPy)s54P5EV?JHp$Gwy`5x zsEB%tEA87!$4kT3t>2l~nh~%J#&ru0VKo0p9bl}}OrWu>OnqL_+V_6RbHJd_k0bHQ z;XjE!(^-ua$j1C1h_wDe20}~AXEtx9*-l~eX}yt-+a+EP!9-Fc@ob0<22VcPc1j1W zHN`iGq|9R#UgJ+!0_DCKL1XzZ25kXAD*%%4jjFk5+Ok3a}f+#?27s+I0jf+ zsxTV58`$t3A}SKt^JpuqPEw-2mbZ|-dgdG(9or^9^qkHsFc;02P z&jaA0?;WxRin{V4dTv2ex3j2eRH^>&*Q7%_Y;00et1JzKMM;4l@=XAg)Bs-Jbdfya z(p|XT^Ur_Sa;3%X|C|nH!LyC2!R!^FhZ{{UJ$WB!wTT61h&7uJv>D&pXK2m;Jw^CB zopqY8J_0~0@hFOxM#dGdRrJ0Cn+$wp__ziBuo?&)0yWNwyke8=C}IYp1a;Ou%fEbFC!|33E-YRq^o;-tm%vN{O5pQ!_+YG zS;&zSYW3c%Y=DUa5NtBK(q~wxPhnU9fboqbxX|u<22I34^ASwmFHxF^K*z?62c)eh zbm(A3*9d$EFw%RV(OK)*8yAz%s*CqdJ;xAk&|so-qE7Qci!Wm*Itx8qS$Q#yk!4AJ zI*B`y3@2o#pmi)ynAlj_q?>u_>Z4Ns4d{8{P6xC&~gFv`?XRTsjD?zl^c+4uh))cHVj0RA@ zU&`QujxNgpJiO<;N~yV>K6nO~3kQ(Gy10!@xr&sbttaZ+QUxQ=oid`PauOSt_933K zqUbPyu>??{?#L0s0}1jwqDkrt_g?UVmSf1lr0iOK;8#(@s8UA_^_|TaD0d^_eusf4 zfdDjAnB4&7-5`w0D084KCNX#zX?lI;=OEpR@jSVWfu)5t0CxbmQv91FPArz!G?stQ zS&7f_`*)a-P!LdWL8Zqy$@bi`OMd`-A#4TYv+M>bAF?Jqq=tb$Cs#_(I(Re6b0h+? zh~>Dv#lWzLgXUw#uw&LR>v7zCpDF$y#lj2t|bD1Gqu(WwKYD#DA#I;B7D1t z?6D;Ncb%DqD$V*9v9PQp*{YT#?nX??Umv9s$I3*fpAI|NO1`|}@i*TGCe8N0y_+7en_pv2$eZfIX`{i@3tl5C+aEP& zEAn-Zimvnsv$sS(6uYCBwXetk9V)79@}&70*=_P|&39Ipa3v=OU-X)@#%iXm{%SYG zdD+_J8pt6gFd-Cp&fgky+wh-(T&$PTiPp$_Corw@caCUT=p_}Xh5hW^>9H=g(uckS#l@oFCI#(x$r zwxu>(*GdrAp)uZHk!cF@U7^ynlVkWh)Bh4pTGC;HSq99*SCtguW_o%?ZV9BjsURdEZvP-<%fi95MLv^ zM+1<;yk9C@|KJb>`V6o|V;SG6=B-kVUb=pmJc;FlNpdg#T`e5{A<&4!KY>L9L>dKzs9Y4*+)| zR2}TP2fN8V7}JdG4M#^MfzFR)q9D^6fL7-h9}d0nPXTEaPQ8*+ea%5ZtKURR8yj5) ziyxWW4~XTq0e>1`?5au7xbn7q9Z7_j^Z|;C;*$mtgB$*bynz>0LxQ(?u|d;8FyVb=eWFkt z+WJ@7Y%N>kqx_A=G^R&_^#0U69&)I29klxf)oY@$evK)73Z`XQYuj9=01abz7`z%6=$GO(ge76=&ym>>VwlX^#}98 zGfME!(U%jN>E@=lp}zWdZy|z1)jFH;k6#bAGfU>`7!l1!d0O{iH7%RXbtVTdvsR>k zecZ=i=DZo;}U$V%->W$XmUl4 zO{O0#ofRE4t2WC?e`dSzXm~RsBXT&j)9$LZLfgV0=oONla9)B--L=@lm;4`hqVrRs z5Ly$-c9UUxWA)}IfICVA)sf^fO2?v}FMq=${2V7%l1NH7qs&+Mk8CPGam+Ta`3{IY z%w;_tR7EgSDyXz^0E7iwLs5=~1$~<$3M8lpS^I@BbRHp_24k2~pb3LV!#x04wukMU zZ7%!RXDW+P{2dd3kOKgI4C<2h_@xH-5pY`Qdo`wwLjlTAx|;~V!;K1x*baEQBe=R2 zJ%d?Lo#+QMR7~(vbb@}9vfwYR;PW7ZN1=39E;gD_cN+s&38J$`>+z%G0o+z41_0T{ z>$(%cLje&X>TV){z!AY1SfG274WDy~e@_@vS15sYlR6X^(!aBTk`#auRyjP}EI3u& zuhZ*LiQ=y*x(iriYAK)X^cW#+v>N|kqTzGS@qC04N$`8Q6*4piLuauoD=rFIT+g81|>{_R-3)yJo zaF5bhy7~wJq<<6?cdJFJ(HSB*Z%H@LU9MMS?Y^IVz5xi1ZI)-fUKfp|FbAJ`?{WKc zQ2z%#w+eoeH@{w|y8cvE1g?!68j>=tnirY+c^_F(&wu+4QRlAO-7~tub@(yS>G>Qb;Xx1raY~84z`b`@E1j=W+qoR+HdR?JULzt?3GK$p>>a3<}YQM z-GAy*GK%wSeL0b><zv#z>H+7ZcBJD`BT1dh`;nOs@c84Aao@*B>>D`zh@M7z9p0!mkL%*Rf+pg+|Xjd z@|8LAU)H*fE|v5OC^O~R0@ljCr-s|Q91pgHg7lf!QL$#1iNx~Uo7sB}U4zXHLjS~B zk)v^-^^7O6KgI!t=9VSF>ff<8c9~2u{Qr6<>w2bCOny298?){a52;+M8|hA<+)fq6 zNFcJpESd`Y1zoAJ;ClE85O~TSpz6|Mx1*M*41==50w10zcW98T z0Q!knELIQE>_L`HeCk?W3)`gA(Va_c-AtV6m|{N}VDtdJ1>lvxF%+a%e>*?gzO93!TT3d{KS_B4#pm;DqsUG}`cJS}HT*hlhI8nJCkwq8OJ@dsEjf)%gkOG7` zKsC9P0{RGdqO(7NHcdb6q`ncPBa*?T`zF=) za@aW$P=>ib@!(Cf3&eXW0m}8!IZ3r%`Y7T0BG<2h0G_xb6SyN zz0#a;RM`?m@Aoj=`mmd}g=g?zbF!cyY;yNf|13>Ti7!C@Fz?BBa;a+-VzZlB1@x+j zm9|?O=wHi!7x{n~4yngnL@d*A(!u-4rS7!!6?}}JFt?wdX=$?4z%7AZbZ}H=fyXN$ z7Zc+){o=@evSwp4d?cQcI5o~Ea1`D0J~9Y56%rt)*`qW*df3M{%RlQ>&y|pwf8|Bp zw6}!ou^ya}&xbG>tSxU;o{^wuX)+z30R;O`5@^eH`%_!KPDo6--btPM9Tt-(zdmBk zKCgH-I~O;3AktpR@f>jMJ|$yYe#ce!aKl~6i_$)@WvjF*fo% z_vSRV*P90q4<8qG`83TGuGGIu5k%zJCb|Syx=aKI>6TLo%Yfsp`qm7F1^#{|HgDER9}5>9b6Vy;}Q_@!z72 z0gqgw`(ET5eckdVPz?h=$y&CD~GX$v2-P0d~65>gGyqtqTK3`2rB9X{@H>AX4~j+D6@qV z(Fzr7@wr-w;>CZc(xOXOT5~GYZXGTPU^8MY~ zm^1eN0B_MCjii}Mp+M?U;NFva-oA%?zpm{vqw;*)(6LhkAuyWE6@Ay*bSL||LHO!l zSV;DI58;op`|)2_pYU^rO~-<__ktj`$>nn=LUPRjR=8BY{W~qrMN!vALFuN*f|R+U<`LemMu#YuvCjd6&`bYkPD#(Q0XG_Ba4 zY=5S}FZV@qEvA@9Nu-^JIX*T^jI8o)R_v>PGIyNhIaH&j-Iu6TSF4kIM>MH$a^C>K zHo+6$iPrb@bM34JpWo(@4qqWY`2mSbR^m>BlV~&4SvKadxdXOr?QMkze{(4hFAI+QNMg?REO0 zkXibt$VXf)b&oBj!=u*4qDO(a%u1w1!jtSh68a68asHxaaif=p=B{b&x8T}DwwcCT29V*mFe{5P>CuSJb6oB zv|pcCUu_`Di?^@;(&0kz=8@Ug2BFsz8%|19=b;zW{!se@q`1`VOuBM;t?_I9_e+MJ z;VHW_6e89{QLDuckkGx7oQ@_qu>J00+t+0Z}S!Dl_`?FPg{86$0 zWthE_^AF@RS_!l%PNeScvg+H*kH}9ai?h^@+Em+q&%Ak4!6$37;D?YFSIw>O7>(u3 zOt@b;rhYvvshBMO-Sf@LJXFyvKTn9}W$>)d;fd)~XR0@-l7x2LdFn!$JVTyWaBsLM z?*j+=6p5aEW<5J&6@h&8@9YEIyD9fDV)RrbbCScoJO^uS^lxkVlD8RB^$O=w+(YR> zN)km!;^kBhTAf@jJ>fX zyz=O_p{4BY0r@oMsM*#4NUqVghe+7EYVD@mr>EPiJ)1XhKUNC8@ww?anjfF#n9a7x z&J^5Pj-K{>T8`&@hQG@qT-*Z+B%OK{56(n|%Q~g`P3d`V@!dVmnM3sStXv6C-ElO}boGem?cir7q9B zLBeb7-3Rc$;OnP|=hURd~a zVq$W<@O;y=fzh?wW1Iz9v#sTj{}z9=Ya(XJ@7^2Wx*!J?b!ohK6cyYCz)o)>TwBOpL75h1i3|a zad2+d)~}m;FZ{0g=JHdM+o;X+7~%5kML?FFCa^Mak)d_1I@o<^2aY+K|ZL1m!SCw@~| zTq}4xy;S?NstQN5vY|$ZYh?p{pV8@=v{BFKj^f&%z`%`|r}c=Ef7iOJP|~_TV=in4 zY<>GavGC9J*SSNuyFh8vrl-BRCZ8m-<+aiF&KLTNWOlREcZ^Zua;KG*_HN$CLU$)h zY4Z8l%E^Z#+Z0hQoFONe2!hRdS2hUi1$WKH)2IIv6&!`GREE?Uvi z%?QLZ)8hr6$rv|Us}M4s(9+Z6lg%=F6`$pJK=4NC5s+GZh#?wx+?IYoWMs9**OAOAae{Uh+tZZhdN+`S$(_D$hBdRoSg*>D+0pWz~5vQ<%+Fdmbtr;-{`y}uL9$`pJbhy67Bq+mgKlH_)I+kfyzTDv+wggwJw{R!dfv}GBk8%~=AGjcETS{XVo5CV2|E0@%Etv!(-D-5Xc^u0%XAbZeJ zb=5nLLz&J+(JBT*+&7bjjHKb<-!vGlNIfM9ycp z)8Vz?IKZbq?F*;;i*MPqQv{e~%lY+&)9mJhirH)d!e2j0C*Sc|JAxT91PdiyJx?Vc z@fq}oGoq_BQOJP@U;FS(>?VW4@TGW9y>~^>r9#LAHhqp(`^X|bm-1}QqgQy4W7JPE zmmVh;J`BO7xsl89ge}^v-hBHI1>^VfwlXNKTa2l%cb$Bm%z8*(DGyaA@Ak*($+mAm zzu$QIy-NZ)P%10Qc(jR%RTQ~f5H=k)14>ey(m@xy6s!fEQCOPb_l^MtR%z;uhjAp(kW;9o9HQzS-xXDB)FgBT^ z8)5~BFAH{PQXGSl?X<_Pa~%_H2HqNWaCh9>bORPyABmA;JqE$~1WS5x8eBcS=!K6+$iwWn;_B45T2N&|DMgU)uzLKq*2r_iCM2GEgsLQ=Zb)W!9 zI<1x9l}}xyiDo)+=v+!Km3N`rLAF^n;lVpL+Oi|beQaAT)OV5jBjplZ2v~t8)O)Dt z0yzg{d*eY7dr28){b>a10J-w6c=9aLK$dPU&u))M}z7ONC|~%;j;P#pU_!3U12y5dZdd zGjp&7gf*_5nfxZ%`aX4s`7mF;7!Pilp@4^idQe9I z2MV1hmn#_aX>D&2iep|y=Y>5yDWDPvuJ^TLbnKsQeOd8&cGF8e`B3sh+);)^0QK@@ z<6abvW05c2`w3fHOjG7LcYr3V|3gl0j;llS&a{7P&ot`vW~8!d@k+YIgOz5{8&p3& zYE1M~X0JgOVn=0_DfFcUQt+Hn^>PnCuJteRBg9P=y_RUg@GtbcfTz74N}kzybOUvM zIZXfk`}ZFHw=4cSzqeOvZK3~JuUMH^aSRkMQ^u?m9pO=nMDa{Q1w3WCoQp5fsIQ%zyuYb9O*2o?RZ0C$wxk-C^RaG`WX>l#!<)$JuhL9AYGsx3anZu5<;z*7rz11nCJ1U65%D5hJ1}<|XGQwT zTy_QIXLV@HZtWT{hBVadQcHiUNxp1jWZ~57cjAXwl)ibQA2rO>Icxrgx%yS^vpXME z_SmioVj|JC+-&0bA=ao|WMsr`tv)uS7OjbS_>`)#FwvX4Hiw@1U7BTLU@^YHwDsLs z(W$12tgrpz1fa6U7w@nG%E{h+x%x~UisgbrXwm+I?%#lcun|iaSr~F*7;APgiS9DL zC(N2qeyw943>HIb`Jq$|;B%R(V3@9VT1*5>+sH3C zy7H#`f2<>*PaO#BxyEAlMG&mLjM@B+;D%1{KGM-hcM2HRCnThIln!l6 za>%NKZX|zvW34Ou!C_Mc&doz@qn5&nnV%4uZbz3#_w(hg;4duz*9Lh^XWKA;(T?s7 zD$Ls~7aTz{eEJdgtxE}!uHU3NFXazz6n&PQwHrAKi89wdW`Uv;fy2I}>AR2-pdlgh zq6MxmRa+#ho)s>5^LflcYJ@E{^GyGsfmq~BN8miAKkw8)^LO7Bu|WE+UL~P=)%0x@ zeDT9vJfYkg0kN%+I&~4xXKiKwS&v!Xl!5R)+hU`O(MTQ-?bC(bGk&3~KAOVte`DCB zm-w@CF%xE(jMgA56%jW&xRY1>8d+CIhI&e;M5@I%Ryu;X*WUOi$**$;;*|KYe89-Bni-5DN`y% zb#Myd;jQ@(xo_ItfAs zxsbRc@fOPV12I<|<_)&{Y|My5aF08}Nn#IDrJ{G*woRTJC+wDvxgqUVo4ujs>NP(< z5qh8RJ3KyFn49b09L^-=CjaNqp(94gxCP7Z!{_~0nL~+9lLu+Sp=B0MHk}j?NqHSFi2%g~X1R8gDcXtgg0fM^+cX#*T-VlPjySuxF-~_!ZXV*UWylleY>weC=`bFF9|1n4CHwG|*+QDf|WwH5q;G?yIH|O7W&>bz8N%HeiQXD zAW0Xa%mKr@dCtxGF$=HsAdJq+t1h)ztv9&zTivs)+^`_A9uX8nM^Nm8;&sRgi-{wt zwq!G_A4^E71T6h*uXxuR?gAB$p7vNNC#h>{YAYO0E z%+82ZBo)~0GbK`}@&i*i;qp;do`?jZ+zcEopHJ|0e;X>?HVs*B7)Xs( zGBny)791>mT~%xjpSmP0E%LR+xY*K@Svcp#PUf6l=5Q!kah+F$bnB9ylcP!{=P!+2 z<@<`Bfhs=N?qNO+mEcn$pCspCo@2OimzHZXG001tg=OygC7Po4*YwM`j|{b)(qo5m zOFC`M|1LdbpTcei!I&wWzmKM@eRQut|8HZ3UKFQkcF$^|3Bx(EXQ!_{%@#4K6oMBI z*EC&&-grS*c7EV7PsPNq_oZFYPMA4z|4-v)Uomp*$cJw#4Q{LD~j&+bTLzbw{ zCo&q0Tqh&Jii}pm^q@*Q zIOt@zw{W?~@-JF-Q8<_^Y#%%IkZ7G9aQuslF?Q(D!ZcA5J-I38a^a$b?I-_rxx|9$ zn4442mFW`1kk$3$t^qq{>u{;LVR(vLXV?CN0a>P3gxuqmacRO{%G{RTX~)hLb? zag0B|)gK8XV`OA5#kdUe-kgm?D#%!+A7{h2uL@QvyH>qO-ma%$Tyo4bI?~YDSC(`d zqbWo!vaa(es4@nnQB6zW}UhrEHz#8%H(7$J#C_Py$NC$OoCwlhP{XmYr@1n%ld+< zhJ7{9w4^L#z0Eh{iXH*on(^5*l+pP6!cA4%=HPW(p^M-ZNba(hlGPn8p(RQi@wjbG z`~7C2>Sf1^m(ht=@;?}REPx(97?#jf5@`DesWeDMpB3zCjDbfYrT$q6&5%*9-FW4N zr+CgDClVSG`npDDATb;OFdX1xtr_w8gKjEBOgVIOaI(AH@ZoYc%cB}=-wqV&=}4e( zM7sTlVsJ1SyvrBPOS4aJiHy;3Fu+&L$$dYlCBdqx1~FU+Jw@ESiGNnVwxbGOh}F zFxMB$r|;x<4QCO8GovLd3RQj`L6acMV&kuij3vK0k$i{n7x{&@Pt2Nb)<0g*=cq{R zpG~xDu1d>Ep(Ib4ZN9oD+gko;smj%jY0w%V4YLagAC=7r|gw#c+1(KOi)h?Mt?7pQD3qs#YYYHNV3|3|D zTJIWdA`+%K0(anNLZTvIKX?A7!DrI=BuT0jCM>t8SfD!}Dw~dn3PR%Ls=tys^nK;= zQgmOhiDl!1wzV!Whg1I#Kaw&}&SVYmm=+y}?x;?=7Z>>XOM<2-=$eNkc*e^6r@1hD zGM*~tV6M)1njbM=bv{i!xueyo;{Z<=H^gz)()IAsBDkt5^7uvf+mU3%WX)&R%Glzr zG74RexMMC|X}xY9#fX)jr>#ctb<^<-dzfyrgnLNOxzPnv=z((zIsd&4@cy!+6AVnN zcSdvef4%?*v{dG6?J0{gx}0kbJYFA3HR8tV30Z94(#PxQvP>&;2dGg$50a8O1TFPl z2*z~qBng$exZ!Aj>qC?%7_3z(AHCJ)oFY6itxTZMAQctpqIRe>+;i)a6j!4`o1(Ou z95$(tDj2*h9z7~h)sS96wl8*h%bs1SusC6eZ`wwK5j>eIyRsgiR+k(j+gOxNGawuT zX_O3J5=mQ^87(8*m%8ez@m`+j#HIu55G1lKSsS+YiqB<9Jc^mYI9JF~eDhVeRBS5N zV`n!wpx!uD$uzUXhzI%d>!*JYQ%C@lGt2a^cBB+A6weu($;AB;yvEll8LVaTO@E$d zS14|V7#jO%o=AJ+KJc9uGh;FNyCxJKP8!`m7Nhfz&77|^ge}^xHbx8)5Fh>OdcMG- z&-l;&Gn~J-g^hZlJ9&zAH_xaiyU<&dN3m&rI1&o*6CA!)r=cXDzjVf#-<6f_^zW)V ztsT~W(sxznQfU&)O;?t3l|C&KD?yYX|cin4Rm=Df1`t6Xm(0Q-wZPS!K zw;{av7X!X#wA*5>w&H6Sr!#hB@XcZNp0B|%`@1E@gnM;KQ(>lrVQr{yOk`7HtMM>|YXn<&&GodRP&{Z#<+~L0II@9{Rb2tq z|BLvQv>x9z?`9hkh87L2S$%KKIV{x*(38B)ieVQ}kz44CtKXMm;BR^EopNL~>C#h@ z6H8v@`O6-ru;4mg3Bk!Z)9ASz%7)!wlnU!bP)YL08nYJ5r>qk`-IA*(=*c>2wCypo zD^cdnD!JCm(OCWEgJtkh?T-^2x$;g^yfK^_$7w8KT`s57FC2>!?nEjp z?Ea*1kZa^WVHJcDqt^r92wNL~034u*Y>(D5%jKCJY7ltUYPC!Y>9Nk&#%x(Q+6hob zD&3fIXSEgp;-lAfaoKIGtc(f`h5ZNm40{p*b@U&07P-YHM)=6@bd93potO5rbeZG+ z6+ieg&!;Qabu8nT9Z%0FE!hsL0qbo)ujQ8Sb<5#06G_3>4JWdOuc`*n868=cYi=%U zKT#AdUW?43Wl%}xgWKz}VVLNp=%P?FR27Fm-nxTbo#C#M6cVY{bQ&yqV+^B|UB!3| zSY7O_icCq1u6CUQ1}uoOjI(U*_7kQ!uBDmf7owRzGnw)Jntd~P>2G8q*5-#Gw;H|E0O7O5m12|QLVmVYt%Hk57d+glx*H4G)Ds0}w z2O9V`)&-tJGp}oFoCQqLs+#&@;&y@&%e2xSnUY6MML4GewL>X~FT43El4Y4tMD}ik zm5dyFjV}%q3Mh+U7uobb>PT*RTRfA}?GbkbnyP$Vp{s49#~FNatS+mIHN~dOS3j>= zN6quC=`Pyhgu*2ke1EEseB#m1!PcMRGlCI?R%%8JnpY>W*YnMFT^bD^rP}_l~YCr8+4*Ss?ZHGIFeK!NYyRqa}*(^MmP;6L(3(E-*_I zXODz0bsL!3fy)LocO4it56jKX2vy|F03}Js^E>#PSx^On0zhcgbmZ)gWSz6Bz*yj9 z5dB<#ll;^DB~`sQidP}r5O|xNjJEnmup`&za5ElTc-IZ`mHQUOn%`;INl~ey`MLtv zjyCp{`(}Z6*csjFF6%6y=@Ycma(yGdH*>a`X@E%>wdFR}*nzE$q=#=$8@Ucp!L^En z1%x`gX?~yH%3UmIgJXrOf`o(ozx94+dsPvZv|JtnfL*XTW)_w$j2Hq)kFW{{l(k_5 z>?nn#(*+hQi7Xy`rgcnO+_uK?9+PHK|D%mW*%{&ZbAPQeUh?7ozh@ z^wfz|s1EzKbilv)x3T`}ysI`{tTpJ!1eW@f(#@xd|A8a}2ffngcBQrtI(9ac#~uwK zv1&e5?gL7vy+4NdEaURN)g}>@1~nmBbOF*)_{`fNaC}(b2yK#L^C&1c-_&%iTo6=W zl*8#hdKK6r`@I0J{CQQiBDVh1Y}wl>dWE^s7q%&+R;-RC@i|Fgp4BMX9(82N3XIojT@NLKERVL>waF z9h*MU4pjeWD1wos03Ate_I9{>lLJz%?a7Z)TXTbMXUMze=3_CF!s&G9`|rE~&aq}fFRJOm2>Ay@JBmS_0;xFiFqPqxf=$>xJYzb7?~mAkAH`Jk)@5Sj z+YyrYIu@};9u^_L0Fg7PeKdVK{DIE%)K6$Y?Hye};#37dI#JYP$@1CK5(-F3moNNt zzdO=SK3aYZ?=3_o%v5f2jAk-Yx#uJQ6CM%(nMaK&=wGeZ1n!U)7o}f;&VuK6-y(b zoSek#g*2q5*W15#xt)aK8-lQ~P!`Z_^@~K{j<;m%%TObePr&pK863KEKrPb(d?lk2 zt-Syh2_N2V(?)vz6Eb}_T8#|Pf$zU*5CA<-?_^icO%{}Z-!&){5;-HD@O~Vu)EX;A0?KtWVN>C z7*J$7jr^yuu-pt?Sv($h!d8G& zLM*#ghVM^Y(7o~E2*#K0NUvHzn2 z`_P#-yB~rpJ}B3|&}z$(!1jB>-6g|8eO9GT=WiZSA^Xpg@x$jZ^v#vo3R`8RcLWOa zN)gHr$Eqe%zpi&%)ym}e&aCXd$hat`QwZ7jJfBC|oCYg{Mhl-y=dRAZ0#TOGI^!SF zOHZC-=BH|?p2X?0zH-&S-68WP<)?&Z=(MG`uCd<|S!>_C@M{0v z!{)N68q<(4dhy^N7+#=RvBV`Y0eC2k#4SU?44joOfB{NN1yaok&-qzxh0hsL9;v*B^j2U zQCSDVSvZtJclSK-WFh?y0xV7IAwE9^MfmJV2yWz5l;63we4p@@7n8}YzFrOg9#)2| zM$h2qRE`Lo`IGbU z!(&>1?eP6MyAT0HHeX^%8T5|S3BcY$i6LBz(G&UcuMGut0%$Z$;ogEUjB$<@w^RW* z^Qf7M%kd|R#tIORGSAtaY}mlK~C&SMwK|ZjIX_=X}F{+K{aHEteKr4uQqp1F`8!%b(xEAO6Gg7! z#3>R-RW=6Y)3j>gSGXsp)COXIZid>XzU*(Liff_wrZCzO*t(oz7evB^DXB|J^0`Y_ z_8-ID7%c80y}scv7Ju8R+t~UK0T$X!IN?79R;$(9jBMtmu7a%uM^vW)(lfr5j$=|;PzDx>$poDR<>y!bnkQ-gwh-q&{6Kgux;7qkaVmHL80JW67 zN1zp2+8iFSuyBqeKAV%{Ar)8nQj!JSUjBMp{BD#g`>9e2Xq&nI@vkgwc+s7L&?2PDoU!#> zo5Ak4mhyeu!}lmBD=kU;0Uw~LlqlIf5yQ!fN)#m)*^w<8O0g^f(nM%pA!Te(pI5c_ zXA9VKuq^Rn#k>de=h#o`ZCb~Bz011ztglTB5hL2I6$_LLhJ8ARrG6R~RY7buJw%ZK z_znnvuo)!48x+^TrzIuZ-e~F`0WpndXY39b))B5_kcWFjTtsBArOuCr?$F>r{z=>P zd6F6Q#@xtRti10VSznbHhZ3Oh2>zqnv_<*KUzJ6xfsix)Sppsm8I-vV!?6x3v18>j z+MIrh=74RWu+CmPs&0Xk6|C{U3o;6Z3fHTWM?w>d(L=>tWVl>kV#?KUtT3_P&}6 zmt`OQDh_YWdqqUl&j`e8v~?svguQa1x!Q0SZBx7AN9u7=(bynX^1!cy5w=k|Jckw| zEdwIt+!Uf_qT%tM1aiJuZDC6Z_1VwgMBc#^sc;rWo*Wn)N7P$6+mQa;fe2vj70H?O z1`-%(LG335HLgIS6jg-qFK%?Fyg4)Rrx?tEQWEYN=@6 zd4Hmc95f8F&0H>#Sz4?nw6PzWcZI^BR94j)S(Xm2PdGXMJ4do|_q?UX{+&Nh+k>Ql zMs4}^DR22^kl+UjF^DLR{Q30}n4uKfm%QPEQ4o=G{_=VW+(GM44A6D(_QXR@P6U;C z&Z@P^uK4WrAq-k~h&-Gu#ko*j@@Shho*%c={lTu4m-l$BA#7%@RE^h{S7J#|%xIna zk!w)@zgYm)EABQf8`4gzIhr%VO!f$!_m{4+r&2$YJte>1!MvB?PT!#~FGS{pz7H&C zdG9zS#&uUz?_svU_`Ye2Z>0YC@T8vnz=9!_CEd4&1-eovn**z3R$t#!iWvx3MNeV> zZ7u~dO?wF@?B1y#%HoU+9Dtc+6LA@$)_*@Z*+=97Bq#P0cOm~)*8bm3brJ4^WI9$k zNvxacW0NPFEb@{Gg7QyY7Yg+(`nc}ZA~I%;^p2HEd%5UBNg5$}L??R|8@@0*==)eO zl5*%+72_QgkiTiJOnDvp8$IZ%Z`L+3?J$@?^cK0 zF#7-vT5=41&n&`Q7Ha*=t`s(OtTr}aPUK!H0Qm7q7Uu@63_5%c2`~BgY*$T$r2hE= z5^{c_N8U;8wQ=jWp^>D_y4ZLOGCs!nhSaIzvFX@EUa3dkYVFHufC<-5zkaynVX2Og z$8?WWebz+Z8ag-zvM-IH)9xKp`f0c~HZ))szw|W6?)GpsWM&*qFr-#6Opm8Oo~S}0 z-J9`?WFPR}r($pGJ0JGm$G0cRNPuWbx=V&y$$Jggh`qO3sjK~SmVX-X0_2zG$F#wf zI4#ZTBk$L)l;2MZ08*#>GZI*5;FScv$^WP~z#@yLuW4PX!Dw5vTJvS(>$mjVv)M>= z*}eQ}c%5u}qzA`6806MC=N5ZHI7PRJ6Rr5t!MS^xv%6=O zz0AX3Bz+=-5-Hz=*^%{;?tc# z#COc+;GbP%iU)fl76vgL8Tltv()jkyIEyl|qA&%s2n)xU0Cwc{d8Al%IW;6@B%a3y z*Pc0icZQl+h`9O(t_UWYIo`^dgsO&9#-|n+e7-b3Uq~3p>L2NekqAFpXE0gbrK z=Q3yis?qkjkxNww>m`LYXiQy~nuWTv>D*%}`!O#RU2{P)X&6kIyL&g|Q>TCgiT*gX zZH=kN1p>y_G!h{1Pv^2M>kHc!Oe4sWxj%CJ#hjxIkM4l?%=28Q>;Dv=S=3}zbo;{R7%}p6#evz0f0RQvPQsX3YQQdRM zLmVEHekn0d+K!LqzV=oY$Rk6I@HexQ1*Y01t5f@Q)(;K}{SsCEj&bkiTqeOMhL@i0 z>DHsSJ)O79_oH|7qsbhtI?Z_@6}JSh0eU z1R!-OXt-}$NSow(Z8E?$$2&zK_%;b+5d_-baC#~9|8Tp)d3mOj`8*5rc@Yyr165ff z04Nm}32}ha82aJaiBb}h+X4w4-vQ;h4U$V@!wu+s(7v8mVhYU%jWk5Q|16eAP5Kck z^@Gk(!4{Z>@aPmQ-4%=}L&oNd|1l8q6O|Ar@Ua2mu89(PV{Yj354OgM70guI#e(Me=r z2+qIXKU?$tQ@2bED@cDAzzxa8dCVi9nz7)4F1TTK1U+eOgntn|*$`ZI`wpI%$+iS^ za$522Gdit{ONifx!(a1gd+I|YL%=mdJtPu$lke=z?^cR+f0id?3rqP~4-UEi2#-y# z-R<7h7MNw%>S(#~{xbDGJw4qWibPQJ-^AI!*x4kBR{jC-#rbsQ8ii0hH}i3ir(|sC zladO=RvD_qfq8ImN-(9o@SPVL1;ScWox(?8p6_stJ_v=Vcl>KTm?wHu5Ih0`PbtZ8 zM{jP#06+f#9Y^G@b?pG37klJV)DLP>_;7Ia?%mkxb9WfegwXim6 zpT@BLo*75ibY75_wA36wOl133Q1W^$w z(;%Sj0ij(Oa!E+)B=fIc0`hm%$FY6yOB+*sctM*`(tEI;B8n+feLzf+wsz1`r*N*( zlEm`kms@(b00m|O04}Z$8=~Olkdtc%vl7bq6SV(rVxBuP&ZeI+*ZJUEG+7eu82y-! zT1U8?IPxn*!OFD1O#+Fkuw2ZxKr}%{dvV&ep2jquc*nLtKD7+L?ETY35NY?KyxXyX zv0shDYOgD?IW;zhMo6+b%5B`=CS`alB}o24W@b&VKk%LfN+A{5s7XDR{n2_NKa=)k zRyqA-&h`nzG6Z92YmXWgRRM|eSkPri0(&^DLwW}KQbORjG^wX>=?#;BOUII5 zag@_a^Fitt?Rpa!_buOt=~n$Vw;AAz(e?h^^}puAKM<(LT_X%=A_v+o8w$3^P78(D zSUX4|)Qn6P>gE)iM)BJ}F;rf^%lDDaZA?hncMSA&b%x9=grrQE9Dt8~eQ{r9%=`@U zDIiul1u?twx*xCpZ9bi|ML=A$9k7?%Eh$9Abw*2N38g<+nm43}_UxbtcH3dF%vw3c z2AS)GM@H{1pibb(~Mko}?Q`Qanjqs=Qr_w@3N|k{%>FHN!ql!$Ua|ou7~Ls=ZRT zK#2gChM8l6&^uBo{|K92P+k@&oMv^E);QU)@oJXci^s$vvYliQ11E`vhI%7Pu46<^ zX?9y@U2-~7WJSL^eFm^%Jnm2BW(7ZBq9 zlU(JLPRzz(=RwwFl=8D6ETRfHUx;UCf`wNm7W|4}Bzh$nRfJQTyj8P;uAgg>fBj5j8_I9#52#exLFl z+?(1rqcPxuTpyW%&Ph^uE^p}OFf)51w;lk_0Cpj%%gwms*JE-ox8I;OKTqNp1b-#e zKTt(x5h~zdcT(RJwyN8W5{Wdc8GF9t*dQ6fgADlSBnp6qDPYFKZYDNm`#gm-TRBd% zkMR7xMam>aMTZGYl&%M35@5&5D?03ygPDW^&b z5N-MUW2p}aLU(uL&RDO&q$Em{UKVPQMG|r{0J*izNnBvRLL9^@7EQ=t-9}|oNpXbe zb36Wdfp&=wtqh6;%AQ_n`S|rW;Dxj@L=j2G-pg;Q)GDuvW{|OIXaJdMRv8Wd_U^(d z+UO=`!Z=c8P{i#Q&MYv`=7gE2ArqmyhzvwmdR!0bpm6JyI%ITG1u1~B00CKfZwUzT zynN_lf>T?%TgBFd)W?SM#Hlus`ElI5wHkt+gedV9VBw9~?x&Ny$ZIi#e9`O5y1gvm ze$2RDkAveze|q>AmXw|>LD$G0pmyh0dCFwlB*D4d|8h$bbn#T1*R1$!eeBZPDAyAk zaJg?|vO*x2v@UdQSp2&9t8)Md_2~NuZcVqA=6(O?qugJtxx>gE?*8`zKogAazq-Ik zLI60`nBrA>$VFXwZynw;B)q}YW6*CpoINS-yd;=JKcv9KhO~d z^@L*T6Ndd!$9j&>C|vj9Bd5Zs$GDr2CTHNxkc|$U%+zRZ#RE5&8PV%;-yHYg^_-Cc ztZR&K_eY?qH@%N5$KTB}V`k_rRZep9Jh~25!%r zS-I4{jrW_=fxJ$S zm>5Pfj!|lmV*L58vagvJ#*_^GXsvs+V3w&b8CwG-yT!3k^l_B{c)x8H+z_z!P>8C<$uRMCZ?8GFP z^AfrHh=G|gh4T!gV#J_=MJ+D<+f1x09AUTU}oa&2PQyBTitpY>vt2v%!>Y>cd7BzY;C2POSkVhmRV5slzEo61YtFQPQ; zzh(3YsKlr*28{Rj6e}}XyTX(Fdrd8kt}7wdX-N`M*#F95P1oB~fopC1H6oB3Yiw%z ze`qG3lywv~7>uX+EPV@d9#5L8%SvjV=zqD=XzK-}{*Nj-1iJ>l-mTgc1XSkP=NTzL zfR;j)0H3e}6JxR+7)(p_m8N1ZhKW&DT=2)3hbh&LBZz0iP{?T!6Umas%z!`m3v;HB zrOB8cIB^RzCVd7fnkHk^%$n4bG)_bgA0U2V2qbh%Q>yp~`sAetoIYUqJzo^CuC@?1 z*#?0=53_1x$C@9geUwFq@11s=Z5@wk-3IPoTgdC0@;yw?G6s2NOyo?;wOe{` z=fn6vMn8%Wq0A%2Gw6ZxI|Ci?eeJ6|=TMlWadeWYS%f24yuS!NkpisvJv%y!(i=?a z6|l}F)6Fe$h>^*=Pqt{k(ytJO5<{O;A`=kYYmS?`2c*AdyX`L!Ay-v-(V>DAcfPCS ztEw~`sPS++T(|%a98H*`b!?z^Ia2VT_jW~((?~g+uzH z6C78|E6KwUrLJnZo!$T4{L@=w6J!&3eZn`jqi+kuv_l~Sg`c)X%rpij&97qdLrzgh zrO_*+Q4hHkp5>Moe6asy^dxiYcQG&x8d> zr%V{*!`|bqGZA*z-wX*{@4%gVlxNKEsFiYmn)>@CaxkW^-ZpzLZy4o=+-*v#>i3(8 zU`ho_*JIQ+PMiF*zKiq^WWUDlK!&h2cV+XB9IXmjDA9yKtB!Gh=`kt6SK|;`wvAG> z;S54YLRFqHL1mBH=1A{FJ-DfoHcwV%BX~BtRNUuLeX>C>>*H+O#!h zJ;GjlS2}_n31#dbUUHq`kD}raKtlix)I(*rORsR+7rO!ivUdXyI!q$?)U4kb8@Rod z!ax59#-vcPoc^Coq9cd`oVe&x1VxxT6Vjj_(aWGVtEl}2oZIjcR>g#4R@=Aa@jrlK zqRpx00HrzR=<)DwakvfuRW3RQ?jPiaqa17dxfy zncZS@I$o*G$1us4lkhYtSMS{GR+4g`Q9f_=obP)U&Ndfmo5I~B%TEf)1C0pgfd&Tz zpM#$3CLeBwRuM#?V1l7n&Ybnn$f|zc`@S#gKC~|FywzMPap}yZl`3%YSf)sR@!$Pf zK;P@aF#PB*8@G4;Rq^PjO~6Kp1}n0+iq0VhTFjt!aFmz<;<~D-6Lt4QJ-k+^*gOoB znSR=@8{UZ(ev)M6)1`vrx~QeG>`A-1>pXqgc>R)zDR1Y-FPvOy66u7z^=#_zEe$11 zQ;ZFbQ$%??rohP){#R`I*?18ETUlDWN0+Y`j^9Fi2EK0V$z^miPYhXgd@sw=cyC zotjRpvO+XQe8k-?;qttH`~X$d2#+`9w;f2P_xz;i^z4SPHn@AyRd1|!)LbN0nFC4Z zjx{{z7o%fun-lUao?V=Nj9_mcg3KU6J4!3mWC}QdizDB^{20K$-*muQz-w&r!Bp3`( zlt?T?E(7)96Ws7V%V%-+{ZNAcl&_aa4Oan$cvk=cDN(Xe2fvEEryera2qDlUmv&J% z=446NO0^G#2#rar9zs(9L5coslNL{}Mx=~K@F{-eq&;U2ubMg=Z@?TMjIV&<2WcIS0Jd`u}qn-jH1B-{yvyl_- zE`s3?BIP$-SIl)A_g%hkXyMy_R=4@60W^?HbqqlH6veT^e}ax~5s-FxJ*b_21)0)* zb{$}RWB#z_wybu<7x<*M*O+XIzPpNCr*H=3dx1GbouJ2~a&MA=hA0D3pv z7PwI|(Au7c*n-J^5n%GAOjE-I{IH`UBxMuk8uIbki^j2$VR*py7xcb94vvzG%dpe% z$Pi~}Uz6CRE0c#-z1>g`JG8OPSIK2#S!!wd)N*8Maee!+7*$MBaPSG@y$J>!R{O)-U5!F!G-5zxTw-{Xu=A(M)TIXS_jqh;-7vDa67b*?#+Ief#e zZacil<`K}Qz|3C+t6QSw%i{O5Q_;&)QKT>gU@(uQ>2j#Z=cJxRS7@W#+u6Cz*c2vI zA~gx0U2(6FZW_$+XnYAzeWD(1yb$sYOkTcvr#`MSOgy&G>j(^*JZ4A$V4bg>*=ku( zxqTM0DMxxn^VgT}*+vu*4$Ox}L{CI56P6AnMTeBRKHNiE*Q}t$2o&+s3v%oGY|Dok zoQ8iDzlWX(V${+=?;(ZL6Pb>OJ;m&8gG7`YASl@76Tk|WMmJRti6|gl0|qjr4u}jD zGs|DT1}2J&arbkm#N>pI@Ohf{&&o$*y7oXUiHku~M7UqWUgAV2AX{mlxaut)y0qG+ zDYS}g`km;p$|J(GP@RiTYYdF&_%X;k!bB%n4#`kK}C_rFAffNnm+9B47==RCu%+MJjB zu5S3)XE(4-s6!WNf07tU)y)I!SfsVc+S2 z*vreK?p#!icPBEA6xip~iv!`+FTUz?W|UM!$ggGq2RW>e8e(f2H5uBSXzXxrT%L|W zNc7VlXqIDV$GUYPf&2b5uPN^Y22l-vuB0-A7!=po4EJ~PeoU6h=iLM)U|Cur zB&u0Y-y*Lz6<=iydkzj=J@%i;EDp?oX>{Gc>v`?PA=E?PMKFgAeBefGg zKCQ@w9d7XdyQfmDY?h^3G19-o~ZnY&4nr7|?y!{P%fd-0KWigt++;wdioO0CK9 zm&8S>6Z<*)XaxdN?Z9(&xON$PC;Ufuc{e~mtlYKyNyycoODb2}e zVCD9Hrj+mC8o%b%DR6z67$0*^8kj?QWKu+{%Nx9AB+);(qer(t;EyNk}_U(nYT<9*1-c7`*?0g zy07o;`4)<3ynsji?Q<42iBPQNowlS>t~@oisXVKU%{sRU$KJHJ7x#4!-0k^_SV5cj z^1WeIYi9rLiFjpY{hbM-6lfGZBES_8N`PqxYR9M7gg+;DjN%ybHyU-)=uqQ9HQ|MWjBz7U=a+@GzT-b~i;h3nW+uL2W~r_7`^Pyr_BwIoJRK1iSlGvo)hkrQ<|)Jq}P z&@)UBIRz&*3g+A@7W@c$Il9w09*(liH<3}Z49*R+HkDSUtY2r8?=wloYmPk1qBQMh zBN+K^e2liOBhRfpoPB1GphEJfB^20<5*RD^u<%h<^i890G~uddq~$O&-*V{yh9erc z2cBSFsmf}v&H6BjgTsry3DHg_(|AH@+j@lV((NQ$$N(Xa;Av~D3F_}R!T)6&+Jn7e z<}1R4=RQzI&!+J){*&jCL<>E6B-FdA93%r)j-kS5OS*I$HhJA^m{_1}W#fQBXx-12 zAKHg731mwc=3zd_FF>&ei^(Iy#L5J9%+)P_O$UnCvU@;Vd4T)GCrqJT$SLFBN%hPJ zk^FU&ihX8Tc8)*#p`}4tk8joq)${oMjf5hvX)52~N|!hdRy-&|deUhFGmO}soFsugv4RjPg!LBiqi>Y8>1 zw>5E{W(y*qOidhQgo`NW` zeeQIC=Hi(~_i3pO*CdC|mk*kWtL$L|XOSQNxIscNtn?SIB5U%4<1M%>s9hR!JTnB3 zV905wXYY_z`P8N}u2Q_oWwZC!Jwea9+INF0a_u)ykCu1rn>+-%S~Kkz?NN5x;ZvDY z?FclPhBgAFqK!{*X$`lNpv>IDzb#)^SC?jYgg!h+qr&~Np==bIe5|Y~JRGG%u*8Q* zq$j6A)GQDldL}qoZcbQ#drki*Hac6LX^sa@KI&+(*d1y#H-%WQ0QPRi)Ler-lP?h* zcf0w=*cx)1to0qm*(^?$Rrc~6jwqHigGgI^?$<&DnZnYJoZFIzll3<~Cn7jh4=Ac4 zWe8|23`$iUEvbclxqw2oBp?>UIs4O;YNJiC`}_p2=@qB4hLXjWw>}g9T3;U^7Fc_O zrW4sbb&68fbYBaEKPQPm_4D`?T)_7T&WSn^)U_0?P|0!jG{gf{ft<5I%^~Vobx3%23!^*Y`Q7`I{25Gpc$Nu-S|+-t%66A^M$Q{StU6- z4GVuwpRPfF<1pG0u;NisUF5m)TOxFrow{C~c9sfJ{anXo=oNCaKRX975JG1@;j5V&rO{OFT3{pE9W2j~4jw z5%zsE$^4g9$~?yvE5k6!ps5}{BB~Z9uWcBYGcQo5DE68uK+}nj;^KQKdn}SPh*%cf z+CHBXoM8aK{w9!g5WY99CVC`Mu12EXQp7*1ffn-^HW@+`Iua$I!-+MXcuMz-S46vx z`_XxUG_5S{*@+OGlZavYH=8&uG;kd+&QZp}Lru2!bOgKwR+7ngW#y&M(t5r=XQqE+ zCN@2lf!5^=jDZRAn=<=9G<^efUET9`8?A;e_>i zh#UR8pWa|289kPFm|COGd*}%cfzH?)?3M$)ek<3+>|}G(IW5VCnLlyPoYR~-Cw7$)n9iL$9$|lC)yN5 zW#t@PT}>M^>>Qb3#JLv)?OPQd#-o{Z$0hP6Y7LJw_{83Fov5%G>t>38D^7aGuHu{D z^Vnu1k@@@!Gl<(bvDHqiK;$bJs@(BYVStgOlhxCRk|*{YpY_+$YAuqvTmm5Pv_hiD z$VkT>**BJC(TjHUT2Qc%b_)Nb3dWDa&~~uL}qcIv%HHx-nS&;i1)*2(SXuf zygw_@vG^D4*P-r@pGuak|5$girA=SU6&|D=#p55_uGAbZngvvWF@3mght;w8q@xEh zE7648h;V62PmOe}LJVayJ?E4W&tAYEB*Jfk-A;Chu(A?Fvma$vUQk!y`Wkofbvsfn6x&dFR`0YKOCfgBxJqe z8iY6%^l!mLGmRL#e!&*&K|t7J=|6LH#E>fB+*W<7CnhQi0)sFL1tbN|g4dNU=em&QO*&VAusETC5DM)#9l-3Fhf{&rBotX{-k z!c2vkLtm07fowKfv|eXMhv~S2;k`K}C!K^vAfGCKN0xjS$!fTB_aW#OX56u_q!afRi18;M!Bc5=!?hfR5;KDK!^Sil5SSQJ9V5 z?#^`|wfT9Y-nz}GKHpV92}M2xP20hsPCBwov5?yIdTOU8gjAujECOyxO=wD$y9xY1 z-9Xk8fyJ^^qt~lWr_|9JS4(}_O>}SlG$q6{x&JZW{X08lC^U`=$L8$7WmSOnX26_2 z3cQWS)WazR=K3Dqxt$~O`9zHAD(MqWqh?G=-h0`nrS(%+>kzE~_awZo)9sZ}np9UQ zvg0t}LGuA;m#Oy`bz@i?DvZ~QkV5K2*-tY%fAXl^PjNN zvVB5t-(*OwQwDLZ=4;g}xK-<~pAgK5_{~%KNk)dC8$2fvjK^|`-d|LCvP)9g;@zKF zDv}6SaIvvjgM{hO=($mixVb&;k|slTvA-nkPPG`pJUL>MA$|f0#gPUeHYdrvOJMBB zk~AklR)r&i@g$RMPItdIZ4lQR9Qe9)0lRk5uhh|80QXpXJ8$!}3o(KID0h66OvVGxO7Ld1lo zE)XW%tfer5D^5qhAzrkSBa0$;S|zGR)l|BX!Qesxv7ncV`1S=8MHv9v?$gn~(gyoi zowPV)8UcIa<{mV#ovg^<Zi>r?;81P7EUa`cr7i0lA&MOo1oBq9;&R zI_U}6XlIR(0K}S771bG&960#qhiq|2Kowl5@5s0jQdM+NDO}0W_w@6#@bOlcYGrC^ zc(;ddEImZ#;O4^xHz&oCDv!#vV=_$DbP!~ZncH`LXCTIBFNNPV`ko;7~FjE%STeHqK-`I11cX5evE^qp13fZ=x8v-b^ z)l}O-n>36f{ip~K*Zh^MB&&l9ZQF)xglPpFf3H2J{w|R)rKQBfd3_}EUUeh7~~93 z?YiQy3c0@fP7gy(fh!p(oBG0`HOU!1n?zSjVO_l8q~Q{k2~Fk<^1b~0l|{7U;)sEB zxq+KuP*=(OvOZrRdymQO#2(!Dj+*Mm0HuR_8ccccmG({_! zd1t+=?+T;0SPEkIl_u++_#TGviOY8tYW8#PmD}$|v?*1y_q+WSOF!gx!C}l=fB$-x zJUo|}e!hlI;+qvR4k6xU*`K`)Y%|SB%Tb&^T3VO9aiCGVl03$=1NDNBs>J|-u`9(N z%-Mw>lVI3o%oWckkhHpsT}fg)MUcFnE+laA$jW6?nbrnpqcrMQS};clnZAR49c{ln zx>{q}sw#`c=0R50#($fV>fM{*&G{k`(3_~f;I(P0y;YB@T`kCKI$|@GfX=J5Gn*ds?$u{-T6Uiw?{B)_m!!Kz-?+>(^mc# z#?79s+{Hv5>#PoiY?>(OloYnHF}ib*tG)isI{cDc_p?>(*d$#2eF5Yivf@Vje9XJQ zw({xw8(z5jk80sn7}|Hi(dj!{n@zF{t)ZSa9FXi(4v&oHC=Bh#JM~J?%Dj2T@&oPd zPI+Z+oHcjj@49Cm>Miy6L9);qUqs|qquHaZw`5=S#X=c|^#tcaY4vHi z+}^t7T+Q~xhwKE&Uw|5{8cKkB=H{h!gZJi(Qc|SD#4`BZZ@mByi_O8h3+LaanIs#OKq!d}Kyzl83biY|`(wOHhq zl1P0gPTn_NU+=mqXVh*fFCB=RZBWHF%9D=*$tB5wep)!w&E&{=gLhhU?C7xG>2wJJ zA?gDT%%$?ERa1Ui1aK@wIWxPhr)*a4xDS{n%P_Gev_MV<>2JbC5msaI-dk?^v!rnV zQAuy<@dY0Zj1ckBjKRXW)G~r40$?0?RPDd-JeriHFJFEgG`0>lAiBPY-(=Q#PQ>sp zo~Z8h-_W{)9TY_ib)((3(g)FenK+p3M)VVI?5#rKEE6*d1#T5+tJYQj^y`5*2yyNU zxCnm&d%J+s&*a^yyIj zBShN9^52wvKC}UwXVxzQ&Xr)~uC4zEMxZ*@AfI0Af~05>c}_;W!G96tT^3webi?s9 zwv*<+N&wURg(?a%6IwFW#mlK~BDfyY9d|AoGc}! zdFfYzA9be-5bh>lw8K%l@b}j{e4kV|`!j-nARxE)rM_X%sNapdkt%;*oVJQw<`_44 ze}gf5wnn+ZR}ZAXnUUD2jS+SEb3Es6EKnC$1o~vAxHZrK}WwIJZnTjuJ~|@ z#;mzC*6o3IZ(6|1ukBn*`sTXCe-I~Xs^m(fu7TZT_TJiqC zu;a1m6=%JTx#9czO-VLSaK8;KcexzLm)}7HFX+?Ct3nSJ+|k|_RQroUyH%Tg#lWv~uIweE1GnWD)2B1hBWa%IvVM*Z=P ze4lS_)7u-t>EZfzl*Tme_;;bS$(K3Kt4GgsuPr8gFDs^-0|CKNK)0E?+LAGNTJYat zAEvV6VU=XeOYCMo)Lq8T({{elXL(9JtSsY&t2vq|c;MLld{4&qMO~T9Hk_Y`?`oD? zdqOSuX`XVBo@FVRT}QOZu{-xXf1Al?eLDj?cW+OHm1nW|9NuX^SH@(ggaTs&=4?^% z-pDX@eRcJ8I3y8Z1SB-;Ws^A!1vc!)Vf=*QB!+0*wT~rbB1im_(0=Ek^|d_ZSsqGI zA`S}d?Yf9C2jq)*SoOydQrKuH?lRzWa^ zP91#1P4K8|_M9QQ;uwFxqFz^}iR?eYkDsp+$R$c7DbNu$YEut+ul8fOpaDlZ8EC>L zdvMl1@nfA9i=rDE2&R-!@Hf+<(hheQjS30wi?CJEazhy5CjaKjOvXLJ4Hm0AVeR`IM?a%yMeSdtC+x zZmS@5`zmvI0Pp~pf~pEN9SaR=p;U9P3gMHV70or#Y-44>gU1U}EP z*KD5`(EAO+2mUIjofi*WJpC#eO4 z&Nl2W)LNypSu9*0msbNFn|9V+rX~`_x!#vYr#sy4JyzYkr*q>? zi*ZjU+8>G|DLy8O)Eyq+;ZbF^@+(hnb>ufo(Wb0?S+3u9K(~P1+KR zna@=DNS-1Kg+vwi^H%zFlAph+Hz5Ll;o-oq40zT*%o{V22P!)C8rA@=lUWppLK1+#hV~#o; z(Byf~u^8@$D0J!p;&ryzF&$Gn2sgSw-+fu`Anr!AD|Qa86wstJRz>q+G01f-6^0@T zSekEDacqB?o3@f<4J)LBBnm)W7f5Gl5d53z46BjvN=+7kh^N081z-EFn=T^E^koN5 zf7=Jmf2l!w>__;GiVUl#LkDm-J!KxETC)(xps2~zxzBmqC;e7j?LTNUH7~4+(-7;s zuKku&4iWM2grF1<8P==c-W&7D`tppc)7W%DP*(C|S6>%hVeZe6+Y}i>2cJ)bQ0`p# z$rc{aR(syA^8c2CYD<<^v)8+{$@k@EzC;P`EEMX?1V5y+>6U%G)#ipi3EbZc4*Jj` z*Q1CxQSk5TTq$2QSAH1xPCq$h->+EfCA)4*)r)52ztkTEYj(Uf?ov%-o6*r z>MwJMvt79u(DW~sjr8NvQPLxn>0hNZt9gJbA2n10CBC5AiPO@0GkQlnP6yQPG+rNu zTr|Px#eJtl7D^-~%Kmy4(MP&#)zvf2ej!)LBD3hXlRXfP^ukb$@j_pX;Xz-HvWcxr zR%F(V6m8X9^zN_~bzSoK(29LE)4vNa8|W~!MOFzG9XM$6t+8%x->6^cPNt` zH6I~R=jp2eA97G%x0@A+Do0LEobpona1;l=%;c^4*S&q&EQh&Rcq?-I`K{cd7~54f zN?EX_6oJ#T8F21aTH=AP%2#)_`69=4+*coD{8=wAqq^^PhsVdr{!drYKD6XAX{d9Og@XdYWj^eqG!DJ}c{|F35e(HR zE*N2Vb6M`M;7)H3B1qW!Zv8VSeaV%p{k@Ya+4Wu}>mP~=)l6!W_I^$m9^INQ5>}#u z?Y5hxT^Bf0ysysFgnT37G_%f6sUb~uTS4OL^ER4>CZ_NEiaO07WNGH{ zV=WrH!->pd{Q@b^mMuL6?|s7+ijM(I$I2z48_}sKKiQ@xRpSL_%2C!%A0?%8P_tsV*Hqy#3w49 z$8&p)8FAGKOV^}e0;qf+BG3aluPW=Y8Q}NMl~3KDLDD{2k4{^SHq`CplE=P7p>>3f!sW#o^N!}Zpj(Hm*McPemYK-_*IYnBC>q~#u6!y*Vh#93GZ4=J^MqG7_mua=@L51hX zU=KpHq;|F1T5p#%32gw!O2LO`(uQHyP*GEzI;zulP71s=PW}H}fEb6RfSeIWx;_91 zHlz%Jv82WX!od}zC%6q#gKVYQUPa^N>pz9NbH*t%PlSkb>;uvFMr=clG)%YN^AnD0 zEZL99abUirJAya$;re~4?`2$8X8gzRdLcch;^)Vpep?*<_G?#HFW3;^o^e+Sb3$0r zVmdxe4DuIC1pmD>*L~06#J*s%x=&$OU;JCy9`$Jf&Cy*z?BVU^VDjLqT3{lPr3yFY z0Vq^hZ#aycmYy!o$o!87NB|I!aBSM`{*axlSXATLXF75NUX8_N_E7WT6ORBdO+PMGh zL2kTc;V<{4#$o{C6ZGxAV+s%w5)zOr3zvN%3@e?P&y8Y;z zZfrYVPTJ*>>j+F_XsR{Uh~sKv&wJZi-d*HEn% zV+K=mqJDW-@(LJSBR)>Y>n7{Ge*Fm5Z}z)`%*=K+;WAy_ zqrc5i5e0}>g6E;hwY@cuZZ=VHkog6Q%ky89ftI)1L8d7sw7XE<-plC+O)WwIohqQrR!TiUbA(vLXt-?Dnrxy&U%3AM^1zigTK_>v8Q#&ly;FN#itL@Ll7XZ{0LXQ1(&b zfm?tFvaj!x^?}(isa|h<^|%}DFo@>@J0?}A_#cb>rO5}U<v)44=xvNcbVDAT zi*cZ1Hp12Jg-l`81kkKA*l(l3Mt1)85^wXk<_C;OUAKs3;nymi+0T*Bdq$=O(V_J` zUY=`^9Vst2wqHvT!uz1b@nW8JIXoLMnG05eSGIOKmAGKU-{(%Ij!!@(-^tk=qh@b4 z7MglbK?H0?-9|+cc-78%o1cykE$|}u=CEzd=5f*ARNfE+=W~v}S7aF~`omEi^_;S2 zy-iT#zi)fSA#{qETf>y=S{FV2PF8!99JL$S`_*V+F}Hbz89k1dH>Pos{kS*ETU^QV zlptXT$Ohr5nD%uL{rsfH8lTkDkrd`e1Sk3mCerV=5-U{>-8TFA7xjCO3cB?B zE>V+qW2$Tev~=siZQtD)Jsv~tUqLyujmrjV0i=`LMiFH(4!GQOg4w%1fnMx~PFnno zbne>86UeW1>!^NjN#j9&0MS7VgXArSlNW+C6rj{30v`wrb{COL&3y%*gH!?NPfl+B0Db)eHoli^2HhN7$A^;!S-%XuKr0CdiL}Y2 z(~*%59Cfh+$7>yXUB?|)wKLh#yQxl@@sMppkoqq& z1b~f21e7SF0+1x|?asaW!Fqbx2iE3n|7gNt5q;LP`X5-WSAB-5tvMrPxu2AT1%Ys4 zuu=VL0}!Fa<@`!7a6m(}+@`YtyPZ=wjO`g8-R5SxYhHjx`pzTunq;nF;$!~Uu(fL`@6CWn`YgHF!FUKU)R%Z@t-LdyK zM*Y%{r@7PBuX^{D&=oVonZ1I7Z!~h)I3rg{-1(J$HRC2|Vj(lhpKdVCBpO9<9 zhWAEE>9~T?p+S)-6jIMw2tGT;JJ0Tax5HC+tHA+f?`e@*BLEpgZMHS z8|Buc0imgW8~>^4`7qq(+l$gMO=36*@! zdfZC;FOP&B4c2=-nZih|K#KDB?q19yffg2gEEFY>^aL1m40roWHe9y}L*Ly>T&K1=7cU%?vxc!va+OVtqa9DAAH{ln_$1>xBnZn1G)Q6)z+>@C6lK9lqKGraf&O zqdNJ(g+Lu({&et$QG@y&p2nUVnu#5>S;tI(RH_i#T9u|JfTH|x&29FP+IR3^yL3O1 zx!~6gq`3fIqPL0KYaYemIgz3yK|^M=%1B3je_<|Rld4Dw%$K0w8}l7ptr@RwRADcp zU9VD|?|0QGkz!x>`QC14fql|&Ns;O4zbums1TCMpJMg@Ulj<(-A*a^X)+i*yLPdfJ zVkd9gz0ilp)XY64ghj@y`*19mw(#1vco|)b?Qw$s$J@M}u;QDPt9$GBlX|zRw>B#2 zw%RB;uRQCYv6<(FvzwL&cU>3!KO|$0_Rl6eK^L3a1HWC!Qts4t4(lwF=Azke1{Uuf z4*kY16O8AxC$_8bc0pZ~vKYC|aL`@xIR5DFF2h1QTmW@eFQFza2Vi zJEx$3wG6JfoWTURsp?+`O6Y%A0R<$XB$?wNf=*@*T5%n{PRPZ4kN|*)V{T#xHi9!5%m0ZcIj2AH)Xm~%qqVd+(A)juxi~yras)OSY zv42@)4NDd)WV@&kj2a4;XXKn@kdv1oAN!)G4q9PM7rnyi}l}bXAloKn!Yw1*oXqZEl&BWJ%a- z2e*fI+CYd5x`y7SrYZ*@sH9>ln~k3UX*W{m?jFo#DuG8DA)^gjH4AN`9McmlNauVH zYrVVC0uytkN?-Tio)^1}hvUfFpZ3#9FjN1<)T1Xa8O>%21kGSk4lLA0DxTSEvE`aDl6?A9JQ@@IBe-^`eEU>nuLlXXJ2lP3$pMN$Y{a1?heG8~TdbkB>93A0L%s`WoQL^8vY2 zGUg5^c391ym^Ztyj$XQoduC|?qWhK~qUjNy8Mmc`Dcc;W?>a$c`&=iyW1MN4?4TxH zL)4$8ZvBpx@11c}S4;Y&^Su$qT@!}x%%t|Zd&!KO`xqXb^K{X#myz?57|tx|<*^$)oN^!&(i;>8Fp)lb$Jd1RvD`wy`MV z9Zy%I&LKJSja1zd=JPO4#;S#zS({{_$oK8|X~z0|?0BKidpDN0_M{S;@YM&p+bJlEr8Ok8Ym3pn01^O=^Wf? z{jzFx>MrKEUCUzys3c5yZzzf1z_9ZGEfUpnosgLP=XzW6Nqh9`_tyi%~1&CC7SV6)-f-5s1m z0RdWS*kn}RGjie@!wl|{0n_7n12>QCZ|KwE8K)xfJuLq$4!IkzChJ&_>fkl3A5T|e z6df&rxBE98(%BCEkVI4Zs~QU~Lc+wu8Rk`SJTC zuAoPhS_V;ax=4PGP$zD|I@H}#n1>}mxNCNpbJlsfb2hK4aO$mdeW0S=UjD%KPpaJ? zuJY9ei(7~TtDvdb#@d6WK759p5C}-6ke@M{(69yerDYxE_du^{YNBpiB%<%;J_|y6 zi}fyV_ex!FylwY4l@|zig-HyVQYGyXF|enm2LAbFPPVp~ke1&m4vZ6-j)pScd-Yi! zOtSUrE@)_#Q@-~!E@!eY@%ecutTb{NuHZ6P8kjSF4Xz$mP9DSaMo6=&*PPtT{4RxD z_ZQAc@MlvNQCZE=xU|ro>kof!ZgmtK_0C(7ILEHD zoQ-0hzF_}t^RFAL0kC_*d<)IydMc)N9r80-Eww%6=tWjKr=)m_%Qt(w-^_0zMmvh@5afMXmT z{drf1ppzH0Cw*E#+lN-^W}OUTlfFs|e^DNPXjAdi!oN4h=Re&w&vb9MGqFQxXwZ}| zIw3xRLdwKXO0=317C!$9#m&3Vh5E|^*4N}TW5+!SYUBVq&wLxTrZ=$@hLd3{4~276 z&#X-;;`pIR)^z#viT6h&Vb=3Xgg&hQ?pc677~`qe1oV}v*>Z`3lSv39!hGFMxOoUx&bQ};m7ivRc0&7gd3K`M%FQaP3yzQbXLH``ZVW^dR%t*fQ?vIW zqsF#6NuxI(WdHi#2!;v2QfxGwc5LcNN|4o56vx>OH-qn`QZY34Sd(@bc1%ZSz&!)1 zK2Vtb6~}iKja}ZbT&`Qj=Mar^?G)y|Af*j&ERfZdG?9`lrjWzsTl4##%8~xHo{xIh zD0Jg?32iF_zSRg}zdI>`eSbagOAJIxA`XhN$GUVJS*vt>qhTWfPz~gWiCjRfvBm+P?Xp@%@TC%$tq&nz=ELF{~9NeYT}xm z0ngN1Kv#GWxpgPKTw1KY82>ZR^LT#fs%28Y=y)f8tv!*m*JHV{z*|S^X<>2k1^}~2 zMhEe!|F5PgJORJw#*V%1zrnc*lnAg=TkZ)(p@>>K&velFh|&5J}0boo+h;erd79kH*`@pWBbaq3 zEmn?wvd&GGLQDN%*pPFO^I0GxlY`LUSJ)!29_i?ZbQMKX?g5HSZheu^ zKzGmD^V39a-pIdJ-G#42BtMtd(IA*L>{2R9&jIK3`;$CN&;>iZwUkg-Ar6x=9>@l+W z77Q*_t|GBCDi{R&17!>o@`NdkXE*j2H@yV!G0)HLLb+30jjB3sfk3%1cAE{}<15bp zMuwHL3Lg0o5V=?gIdi_);2R?=Z)@{NAi>j)aJirIltQS-PaQzxz+kc#Bf`W&CO9=3 zqefzm!&?j<3Szz+Q9taCw6+KGRN1DFo0L=!+Ew& zQPR#ba9vE0?`#bxWnIN}uTc@X|ICdpFmLbfSIuJBpdV7LIdRQFt;WtF@;5qJ-b`d# zhc_LJZc4`|#*Gb|28URAqI4pxb_cJa6O~ADQ*7QM+GsU1$st~Bw0_jI#e++w@b4V2 zBK!-ES*3vRFLcDW14w1(`Pz1GCKZ@u`Nqp7i>oub3R5-7^|V>eRwN@888Y6E3^IX| zg8f)~^Pu*MGxNeL6DjrQ^1~PoQ=_BIL`U8ZKQb7aP+lFk)8FryIJ#;RaoLqWcjd3H zv&4S9I?&Yi3vht~KoxfYC+3V_Q&z*l3H-2UX@?JtZvP@EYFDA)N#?* zk^eV3*|Uq`79NU+me{{`iY=#yC+f`Z7|=yhLY>N*40uwd?bg;liHu&F+r&-IVzmx5 z&-TjGyU<9xP^}%Rw2T#QjU-YYb45pe&L4(Q-+^xGQ7H?z;I#&e>&tQs(msMsN7m3u zD98R;CbbXU6kbZ7+JWT{o(cgN6FWs9{zJBKve+YQ483{L)WvZK&`ykAjnw3&pyXtE zORjQk>iLh9eML^glvfWq0V_}@{jA6+O76xdYr!0OWG?fx(-{^^(9!7>%fY;g5o;{c zWhgPE{sIQ2)#_oROtsnHz}`Gn)Rc2)yFg8>g!PDcQs?6%!D;b<#^s{F(KjVfC3)Xt zDZN091}iaj740p-m|KQ`P4Jo*Ld@xRsl+5-cIn8O!sN;k+tXmhPQeC`voFe`qx$2A zqOR_wOXp2yx0Pm-bzyGqFQ*g0SRMMmC(6I5>+|+=xo6d;3r{b=BS(aoNje5CQcRq4 z2J;}^y7A45V|Bs>7akrS$~FroD;oxkXru~Wp`zgMwITBGy_)I;mow|DV&++cRW#GF z(2N7VzvSgHBasS8BaP%>i*nWzIK&%bbbtK;VRCJ|6^v9>RDEk}z=~6`o3Xj?<-DFU ziP&Hi{EkVfFxcz}RB+f;OkNv_9fq*iwfzU!{XgX$-`+bY1eK*`jZ$v^g6P*2w*E4Nd4@o>XG+wP6*}}W z9x;zGJ$~OA)!P2?ctb4Ug64|FASE3`s__yJERG)~3r72sYqsT+z1bK~P!hy86s+uI z^+s?vR@S!Pz`_SG>P$V6cy4FZuPh-k#4rHbytghtRj$6+2R@%7$_ zyFYHOdy!o5iUCFlF~wng{FR>M!4pXb>jP(353eSmm%r7C)RN8^r8#0PKz{Vb(^NJ4 z0b20=xcc4Pc6B;m9O$sUMeuP&Flk`;e@}X1Z#X{qTb-n&q?qNyhQ|dQblryQZlprg z%s(@;F9PptWo{pk6Z0b7ks!A1ieU(gU3+HLH!(f!?@(6KP84ARKv*_?p>SUO@*0B6 zj(+;SKwamRhgMTinf<^3n}5s+=`fHwOmZOfXmX z7g(He9sV;iY&pGJWoT^BHN}aImQU+puM5LeV@Z({jMno02NH%uK{J>{IUF<>Bfmjd@}qz^M(NbC0! zbjLk9{e;&V9*5j+R$n|TK?|G0X!1iNI-NN>on{@Hsn^g#^1#1fVj)3R-2D_G3Jg)% z(66rVZo`t^&@!EWG>=ctUhfmI9zjW|6+_YrhNwg*)XkccHBtmGEuZ!VAX9D1pg)61 zjh1nlVc`v7?~R!a=`A~Y7mL0le;YwoZPgyTZ*Cd*WK;e7|8oI$@lj2ULaJbD^ zJFdZmdXEwtr{E69U#R|D3r|tBqrD^ONr{P(OXoL}0tAl38eQIe!3YHSe97S(E*&R{^WH;hti-)Pz%iU))E+ z?+;s9_$o|0pb6qpL*I^S85D6ti9vgs{E02z2(wzy8`aI1{OBpEqk-kXA!w=1X4kSp zyOHmxct^0qOy{&}#8PWITZKKv%;SX_@(?>)TejydGnKX;zmkEA>tq=2Z0MHJN#ucU zr)X!NZIrRl4ZC{-x!Y4$gx2+0c_XNn(l0y|s%@GuZy{kP7y*}Rn>onm8nN(>TImI9 zh+o49T!U_U;nO<*(K*BQ?c?sNr_IqMl=m)<|0=)7olC>pF3asj$h8mEpU0kR$1#}5 zD950M&IFRFe`Yvlua?KzZ-2iEp7UmK(Wh(Al9T6}y1>;&uKpKbhUnpOe#s`~&X>0l=k4>Ldb2;rbD5 zj4l|R3To=Mvx3SYnU(NN-J^)yjWcn7kcju(+eMT^#o75DAp8!YclU;&TD=TK%})J=*j z8Rj!+k2^Y@2c{i0j2N`K6Ji!SlCNb8vuvlACbbRNqb@LBq;%mrv&7aK1%r=Egx|K% zM1Y?1Z1@~aFCEf~b%j1IM_(?;*mO>0GA7iw=o*%04-<$HCXx0n)eBuEdz%1*Qhr1 zqDK_hkFyz;W;r|kO?gskPyBt?bqXsE-&4i)mX6$5a zz|()Z&MDaZq}r^#1~`dX3S?~99!!-a@ zgsSw$ThSoBDB6u_;*)6H5U^BmI;^V{)*nTF0gF=x6iG*wsqOxrz>%>N*8<3P$KW{Z ze4tUUcquC|JN(i|xY)b&gg`mjFV#T1t3(T4`Y_U1FEfAOlL(6L8wq@TNM~siMgN@T zgFl!q$qwOQiyrGh&22k83i(=Jp!>~9euw{RQ5&lDt#*6ilGqM&a!;fV8pv1XTcnj+ z)&~i&9v#}Pt#OHf8Dvq$*d?#j?G|>G)l02( zVIpGqhesT_DGrZEuJbJT51rbd1yGR`>tymZ!T=4Y*>_t~li<7`3hMo?ij=@&AWymD%EK zMd(94PiFTBiXikKH0!`F%4-%WCn9LD;A@GDFN}i7Pf?q~PO$_?pFzHIcR-EtBa^nI ziE=F-1D7ctHz1Rg)Q1Ilx9|1S9A-z+4NcyxB*$jMGd>G!#85s}9k-py1dPRkT1 zVJ)ZV%@1kBS8wR|d%afyEmq4Ho{w7upj~3Be!9qj_F5tAzbyxM09{qvX&z8<_>;+^ zeMM&QVYLe%c6^#EjTylbgN)|BKh2o3-etM;Uy&9i- zwgDLC{{|;RGsLf&WBs7j{`ZJ(cs{KMEM`oK7er8B^x5K@*ynV%uOsn8nbSf}qP z6AC2;{&^GGm8F*}WBA2r=P=jY_aSN-BlRMCWX3 z#y{i8zc91pHihuXkC2e)C-^E`W=YcidclBR?^w7Nq8=j#fJSN&OWmfSle4Gta(?7O z`9g&F{eh?B;b>2u<4hTj)&j7{?tVBOj^tL#pjlK8435rOd*(sdXgcvUNt43$B@-6=~ zbnlH?S#h2$HdfyUqrUDD^?kqEYMi_9k=hgx7{#$7$hE+3zM1Tw{|}Sw(SLos>V;6x zl{f8kCh&gTW=yVdN`DvVpLzc>fO0(kIAQu&f6AvaG|jL z7@n%ki^jM4`7c}4_tAe}_it=lY$HRA@LIoH{FxjG5KGqM2CD?x;f%EwcvcS$cJ;q3 zr?X3FJSBnylhfmy4fLdR*Nvm2ifndsmQ2=yg+NOMHfo>~k|JrSThrDdIs^dS(ZW7b zDHsA82u~wT;GRrjC~uXW0FVm04LOs6916LruRtAD@?;pmXb{bls7~EP zNTFNZ&rg_0a~1HI!E&EaR4)$ymDE!iX#OFC_o(mtEL)5Q19otEaJZ|rF-(Hdj^ zS4EqCEa{BRGBCMnC>Qyw4cEpIuVts>hKEP>F_0Pj_M8Vm_4NyKHemGtAn^ta?ZMpY zMcx(#LhjiA+5)yjH4BJs6>cC*_zvY{fL6q^hQq71GhNmR>2_EszV@PBseZrr+9oVjjxlEeF;w7fjl!`xW#cm%6+ENhsjW zYKPWeK~kGtidJBMI)2JFQ_m~(LzXPPfC^X~f#WS+v3S(Z4Vl$4uf)!qu{IupZ?dtvU<2VuxD-0dIBzKfEn15XcYorT&nMbH87Q1?3^n=tgibEJp8S4u zJHl2@89@27Dbl62LH`(adP_5&#(ie zg^v+1%8EkIv*|HoGO5ktF8(eBzhabru-6OqV z7@)wBRDiBCnWoOt7XB0hP+ShSb}h@L$`zb(+1KfLB+dYc*6|?#o+1)0;(q^I@+VE1 zdjDv6&9$H&+nUUFxDMTY<*$qfncb##c2u_{q?d%gpZ_+#x}m>T+-9m*vsU$HL+f|x z9R4AdKH#aUmme;^ToYzgW>8=!cjcEn#$%Ti-?7~(8R&vP%{gP?`@^%ttNU=n-Sy)C zakl9OV)eYb$k{IbxS9*!tADVFwtZTS?j`g}>`49UP3sA?^6dJ?@Bi=f(=9{Cz(7DV z)pH!cAZ>a9Sn;q{Q}V`}6!l zAXwkcf%Bhwkx#abHjrhaXfFFMytvix0Tn1?8euF|z+!S;`abuBXr&4aXCnEQ`2q=S zv}r~&>E9&xB5cqF730%()LQ$Br%bebN-Q3Uif>Ba(ZvZ`j#{AuNu*2@vN{EpGQTaQ zNZ-hl49NSQ!aG6LAqs^g49{0Y!R3x}sA2Jy3;-;j-7JX#156FoKh=)M4+%J#A3Xx3 z{h>vJ64Y-#VH`B*(j-7`3^0RExzg!Fa&cDE@e>YntV0blQ;NH*Es9i;(W&I>}urBrpiUKg?9JB#M9PwO+`Ch@4|nQlnN-8D|fM32f#y%1kQKNdXVE zWQ+V8=ZD~6-UkVejZcA~V#-wn1aYdc#e}O4@O4sK3#)Uy$(noVOV(x}O%dgtn z_|VYMSsG}dE+LjvAnQK@3@5zLiOvQNy6KwN$uH6-E~njLCZPq3TwnH4CGP0q25SQE zmY^xu{L}85GV>=EBUWxJPcLYlzNqqcO3{Zw@f;7*p6%yiRResY=ROhwpYok0M+l>e zizr1`o3yEZ5HuE0)G3X&FR8dzKAn&ViuSR;PhX5Ur#->S%tUdlKZDk6J;42v_8BXWyDZw^X8uO^plB|9pT2}eF z5GT8Vw?1g0m*ElajYsfzR)#m0q84TWSzZuksj~vluWl>TyLS0}@nL?2&fi_WUxf6Q zL=Wt(VQme1PwR?f_trJG_V*gP8-FgGtA&#@9EOyTr9)lP=3{;{{)P~DNiBerlD0`Q{ zu%ielbD9vMNJ#>u;}%ERj%(>b14r^8Dw1%BCNq;viV;$Y$L&OXyyZ?@p6o&C(%vQ^ zu1x)vrXwDYpMQ7?Zco>u(xr`#xq;!5?Ja2q)GAbndZF&C zoVK98CVD6#Frhq)4Zqmabvb`J@wR3d(s<4-YHvze!(;kpWoQeqAhWMN?+ZG3&xeKe@838%zg!}Sl>h{aifb*P!poDm_VO*caW>1UoAy;i zK`0gJ$=pQb5LUwizzTyuxl(O$v#G^uIvb5dw2>9&+Heco(5Oej)CUE+poiyk43H$2 zr2xYHjqvX$1hIX9$N{#gSR4w#FkI@z4imc@=$%H^)9gb)<3m%g%3(AgVzdG{jR3r5 zIk_jypVXCot{xsuTh!F@(;bzXos6}~iu+7ER}NLURqpYW}M-BHWo`?k&)Kdu?eYicO*5RvS>-QT?Yo;Tic z?YrOZ|Hn8$Y|!$04FYyE3@og;rSox)4Lo$y??8*Bq(T=?{5c)==E^p(jW?Z zZnb-VNunJ$%Ubr(Dg97WsmQVTt^PH_q>qwIblkaS=5dFKCU1cIa4wQM9a9i`+g_kI z=*hLg4FRt#;h^v&BFV1kd=e-9ZB@ELhL~Vc5fWS#o5`5ca|cTtOWr z30zKuMO9TmFssQwQt{4#rPeA+tNS~7@^OSK*zqd`cZLn@xxJ~r2MRr@ABJMN)p?0k zm)Gh&qPp6|ZZ8KbtUAyig#yz63yig)n$r;iiqiBUqO&Qf;uxdBYA6=_NsnW4qp2Iy#_M#=oX-3Vm$n>k(CSSL<0j{C+8b}T^#??6d+KbR*Jm^Eo~dy6fnGu~rYQ}7 z1DW|k`rUTflRmd8?n)@w4Lz|Id(v@x_pG+o;6IB*Or;qW)c6h6Hn_~g{YR^_LK1n2 zb`nenn-1cz1>w6+O02FliS}&~ebg$K3R&UXSB5L><>z*are28t@vcBzKrzK$z8KO_ z?kifZ|Gf5mR#linW|U50P9frRaZtp9?PdH;wr9fhxAR5mCkWXzlzm+1{mo2HlnwG! z)A{j~f&6>7+Xi`Nf}tilS-l}O&2ax~Q-;=k9BKQO_?{$c&5{T+EiR)p$%BPong!uj zUp3QjrJ%LX`-G)IAnKPbq;IoU+|5nds(Ea7&wFE!^#Vgvu3irp?oir@2T8_KyXG~c z{?xZK7TUJ*)q5M_Nu{Tve%Ir&#Zcf%0P*ZIHkip_(1q2+PFgy5~ zUXawEPJRWxbWa=|0hVVU>q)^Uz`1Ae$6%Mseg|9w4GqmdIRLQd;jAundt#X|U zT)MDDf})l-l<}#lFR&BiegbNLP*RfIW*#q%)$QXFkH;e1rEM&A>!U~W#8+xa=J?w( zECq;QsQoQ50OmzZD*YxV)ruTj(<@i-hF_IsZ@tPH?xq{m4j|Nw1-jDXbF(V1BC|AP z8&T;>t*23^iXcaJ{>A`k$n7eYBZJ1QHj7k6%<$Rg4I8anQ+Rysd(EvU*Q(b&6IK4Y z1hblP)9I5Z`lMmPz!Yt%wJ15&ZY7zk6@2*-fiP#ufWM&>>Y6Ib1d3ZicZK1;Dt z@vLM;WLZUcLVrIti=r<-V#fo6w#H()!g}u(#BR9NwK>TE@gGweX^F{TXpZ3&hm7L3 z^zyc)k|SH0V#W$o5{qDf#!DHJ%eAVNn_cFS-jiTpMNJuKQqB0D0aUYP=kSg|HWM*{ zc8pVwOC(V}Y2&vI2Tc_S_JoFufwKi;JLYXNTpL@u$UrU++;cf$W+|CcSS)~=AziD2 z=LBcZE!!)M*U;dvVP;7^TQM5`j=YixKpL5sGgRNTq!+iLKnDV}9>4{`Q1jVmVc;7E z(S4I~b^dOb1E|12#@tjqMZAVWOF?QXO&efL%fF5(Nobh7dm;)SIJA@w| z4m!-~yBj(0JP?fR1zEb?2mj%i9mH2%X5|2FsMYx(cB!Pa)B-ST0fV4oostkOpiKnl zAoKFA{^p4r8+secr!5eMXx;WX7!=mQ9G4*m-Mis8B31G4>zeg1JwBiiWU2L5J|v@f zwnUowuSI`?+LtI}fWGIby`9eDgwGQgJq{xsW7z0R05iP2YrsLP(0Wc}R^_(z$xETs z7cjTZJF_%D>LjN5o1)@3sZ7G6e$yYD&jUjpL2tGW88b9Ny*^kGN`bl2`Q!4I*<2wY z=3AX{wM6CT5ggpy^1a?v7$^mtX;+zuB(<4$4{SAo3gXv3G}i8hl%-eL{3nzOzXjg)VXsJ9Y+@oYorA4fwOGvvYs@-@`pr%~zc% zDm&kN+~=?vAi+VnUmHtG?GQP3{*>TzH|1-mymTqLhLEScTi5 zy>%?q7@&;wRO-7>bveZL+sHIjQ3h4&QmL5&9L}D4F3bj1s%e|za_YB75&MK@)bfte zkUTm^iNI8VwSDZba#n6nF_-JeRk)MYzZ2_XA?kS2k4MU-+C+tNv&PQweqOFFmWp;P z75f|rXijjih8>*Gd7V#yYsrw0MP?jAn&L~YsoVXa=c>!)0o}NGvL7Bj+_1uu@+5U zBA?AoHQcrn%ag|GxE+4RZo9-pHSBdW&LIIXbT{G}@Nzb>iC4o$n5)>ISlM4oj?#Ww z{p9>*qfhQ;@MH6rnrhj2gEbAtUVZ)E1$&dkHExGgDRkWYR`?f_ZCA4xg-SHTn9u&cbJm1T`5-Od*gVDO8o% zB%ljp7Bsp}#W8$KBGVa#E$GBo!Sr>;|LUP&D%2FX`33B!#tvY%c!MXS33@k2l$;st z?8Z=4zCXLEXK(HumS$Tf<;&BRh=wjn#+}VGr@Wfe%j^pd!8eY1dw4AOvK()`bFO_t zE;HO^Nb8`75OrZ7I1mk1kw0DA7&1S}#%w&G-5M<^ zLT}WVxKOGw<mBuXmqX_si!;i;N zQhWuztl?VvRCw;1RJ7hCwJ%?;qOo4!ED;o3cfqnbgJ9(p^996Rb}CulZ>;~y>s}o{ z2BT%^fP&#^sWSCzBj$cSr*KjCUYrj5oA1(crzNx{rT6Tp{oBhFT?WZfVhtTS)yw>m5INfGWE@$5_ zpBJM1d80mU_!X{i7NSf%Yv~?=_00)`o=3ha2ToVx&o&IE;~ow#73F;!<_n7cPOF%#aUDY28oY)zmy7L+NHG>n74qGRP{ zjzRCu`cp*p-Sk^L4+!=t-+5A8+pjfi&|Ttrb8?f#&7lPrRyI?7Ygf4e7~F!02ao{# z&nDl#=uQ58*P&pjNewdm+?4HmNbk-2NGVrfI75bLzag$50aIShpsc3{47N0<2riZNFumz=Je!IpdbmZ@ZilT7BnBb}di9R-G!_Vj{*kyeRTrgl+FP5e*}dwkf{aW5*QG7oSJ6{@m3- zL+Jyj*!VjE4ChxRu7ZrclQcm5J6k%Z@y!nQ<*lw5gaSs00w&EXEzJ?#xjRf&Rx!z*4= zk*UYe_zNQkSSs>t*a#VvB6yYMh}8R1TpRy<->>^c-R+MZ$A?PtK1!03&Flz~^wAKp zPgw~&8c>ptO|$1*S=MF$E&hKfi!|wFz$RR--g`1m=j;Asw!@nmk+az=gt=1HCkZHcWNxtf6H z*vv~V5X`x?!>T|q7y9y`V{$DRW)aeL3>g2P0fZ!RbY@2zi^_MFpa}Zw(EBO+xLUVy zW}4stOiIj?P(iL_cMUX8)6bQJX%f33TfuII=giuEH(&SALc9FA0(mOSo<@vG6zKD; z%gzV_a44>~E30(Bjv@-Y;bc@4tZT`QD`3_?2YSwRIb_YK%~Ew8c(T7T3v0%rU1%s# zmX*1yD>>U^$Q-OsL?+T`tMxt58I8QI24GPYKIb#%LEa@}uwEdsTu{oCeHPu~fP|n= zzFdpaszcW1W=DQjLyOZZMU4yQCeGwxdl)nC{RN_aGJ~hRKt#Tn0f?f}19j!j-;q;m z7;~L`MMD$+iG`X}T`n|Yvn5W3GPn|M7bO>)Ld+SV>GFxM+wis^VS1WA7CSs`1;!L3 zqE_9q5V00`cqZ5EcSsl}R)iJSZ>%w@8d&R&JBq3tV!%{$Oibc%5^E#k0hLl>Pu~8A z^J1F=c~ptmfbWUtCx4jb$Wq}I9KSK-=E^dE4lqmmni2aw14z7fok)RUzQRpK1v+AG z?eXZ)fH3r9`lj+h;r&zZ$tYD8FSff8apX`iQ6y|ZK&b~F@Eeyt*4rC6ICvoFVZsst zxdq@s0qb)A7gGCCTraVB+)kPsxK3MzV$V)SDT!*N>ln>JQ(uFG2hsR6BjeaB=mYRU z8B{>?XesQGQH*!sBG=$F&Um%(|7USC#%8gX?!=TL!2t9=OpoQPxko+wAi%3_oL)=I z%bAm25#<@e51>UiKhUtN2V0e8VWnM?)wBX|0rFA}-DDLXYS+Q&X?ywR@=qCx3OpT9^A22fg zGwy_a>%Chv5CEXt+x-fP#G_q`BpKkcvUR8N<^;1`(>f^32Q-IQFdDN5`ohy97%B=T z@IxB$yIs~VzLZn6yV7)idV%VBobErY)Ohbr=SK?RqZN(MTnH^*)Of+PeI(0=6KC&@ z(S8Zg7dqL|H_mF*8e=gTfj2rsBHNqafefY}&7p$a84HgVWy-$nKj#a`R~bOki%Ii& zO0{0T$yL!IKp>}m6-|Cp_RrG#7_{y}fS9lHpb*xa4}YiW3kq{?lzaoY6FcMiNt(yMYM&c1F++H(te1LHa#Qnv zRTdYOq_^Y;Y7e;Qlu;;ai=FX-XBhCyBbTTvdMm(&PhZby%bO`;q;*G@0O9Apx%M~^ z*45^3I4;fB6Ug%Q4t12!y2w!n_r`Btbms(AmPJ_dTti##{qV?LNTUW{2@8RLqHaMC zw#Q81%|$zL>|sV7MKD3`@H=Z@lD*c+2m@rGEv~bytgVo?NVA7vQ{R{UMnCsP)rVGN z0R!$T&ISNI(-Hc(>04bMvkil64Bhg*IllHEb%I$7ANrsIN*L?ViXR7ywb!X}N>9Vm zDV^+zVl}zjK{UVe9sflnobTO{iZ6%O1#ba(MX&j4tbBTM>Aw(B+IR{jwoBXrXh|gd?@~af>FUb1f_Cu+3~y0Yj%_w>Cgs=aWlTFP{;4dNJ@ATS2v7uxq0t6KWvdI1G|q-VM) zem()r)v#?eXrTTh$#WI&n;cMk33wHhJxQcd1Fq`&p|nVdBJf7j@W#FZEDI2cCfz*> z`+7J%T4nM@<1fP@^h%_3qzPxMnMl7$rL->Wm>1AF_A>!KDxaTo%SmH#Fmk}$<_OVBHBlg4xDe&0-J|t}-jbpmtZFX;B}2e~TrM-Q z7nIq60K@VLs5csFnp?srg{~t<7y_Z15pZyLsF_zVfXU*vIWZ)@%nqixFWiJf0QGq> zl+?=yU|#v6b($nQe2saHJSHS}nz}QIuCqAs=&h#FB!pq`-C30BKcudsSjFAVFLO>F z^+%W77GfqEzEVa2wGO(i7JOdkjV)GY52>Q4DRQY+LD`*gJn1IOt;Wx{M*ubCe9`%U zXm@gcUIG+~_&@&JxKy4&^B_Tdm-Y_)h#|eV@ku zRRAQ@(@|4n*RBCplTXlEzkdBH#4G+YATuEs`E?v=v99CH^h6T}-@ESROF>p%`Rg6P ztNiULOdY39dl=SkQ&?!RG3BV4HQtPnk*8qkDwjxD{M zNHO9NIr_ME-r0;B_|-tCr4T>%)s=kR$&;JamA_HS?)iesJK7Uq4kk?IV_Eo~YI{8~ zETR7&VKqN=dh=XZ<;U4Kc1_Rgwx;DlD#GIij-7{Ks^$+LV^bhX@L9$60wRc!1F@z? zOJ8o@#c;BcwbKdCGX;<2+LDb}%VdY8k@xXBfG1JhWlfpHEVXZ%IZ zE+A~__oE`W@%`hp)7t_4A@JhmXz2Eqmn`NdSVSr|0ekSbrf^5Pfw;UMG4YICHnkH3 zh0@2IPCoJ^S>E3-*V}7_vlAQ>q>0Ki*{;^em=7`}%e7(R^$d1TxiL?$NS0D;gX5Xf zz)7b9^b3c^Zf|d0HU!McWF&b_2o`REnGqF!vL8STiE{(@kFK}3Sl5f|WR=<(7;)UY z$(r7Pcn}{D!y(S_R~l*4kzTrUKuO+UG?{Il2`cmvu(n|NrTz1lKp8&9 z&exJVj+5nUMXt$eSjFc%lBJc5^+~t|0X)It82XKJ)01_V)&^uiFZg|QPBd9fS8}~F zVCz}%G^^|l5Bo98OyhTDwOYKOKlyB+ru=@R3>PU4I~>!HV~;mOG`}9Y$k6~#V;z>t zkQXs(Z(q!{hS~67y4T5(2dhdEEz^H~_?ZWE1r1z|Q0}BR@vW)$ z32$rcdV6%7y#4o2YUcwW^i<;!)@>76ef_GPm4D9Q6)Y4wk<~lpnh*i?w}zQ?$#lpdZx205p(t83=*VB_zmw_w{QV97cI<$p4rnDO-SG{=w65{6Q)z;`p zFSA@iXdwI4q@o6vNT~wa$ps9E#Ah37=;4&ueVrH1zB8H2;FUz%p7E+zNLQs~a}-3% z&nb8@UFbr{Em~B0QZc`=S)Qo*lHk(ZNX&zwnv1m2@$|U=6ycIheCjsqylb)@yhBI+ z-PSfhD{_pF0PCr)-$vxyI%{=K&$Sm3P~8?acqEenwe$J;3~L)(X0^^TV$hQhbtkXH zBAQ78-LSmEp=L40NUH;Fma`fcFZN`y%~B%M~G)|&)O>*C2aK@I#}71CL#9-IMT8>%rD7-p^F*q494)@&8e7_d;rC%c_k&G4v)gQK=lsYHL!hnVl8)f zphR5#Rg6BW>j(Zu4lYLdr901UG`?P&_^%h{!!W4q!0|^ifmQscnks8;=`qqxf%eFA?#qEI@Ma?>xMg`<)#n~&Wu>dIS-Vm96oX2z z{8TQzUsJQe)Vp?PyR0{fsT|5V*`+D7m%v<+OI3V7T|XYh9A!f_rA$pNZ)O;piL1h( zRQOGM`N|1bVGXmTpxDx{D|X?+uE26Yn`VEZZf~jVnol#7&~imfW+y~j$`9MDxzey< z=2m&7W%;`RqsbNg6gFHjGrK{x#ZbI-1!j`cRX|+mS#C~jmzoXLILvo@d{>wmGc7e~ zaAZFdtQd>j)~!z!kyt8xb5a(EtI%p1s|w{voC}g~v}jrHX9%Yr7Aynq&{TR_JuGL$ zU*Sq^5q!z3JbM)W+;66#Q9K&6o#=N6u7M4MFI0U2!|{GEwhOYIXOd$)C%JVXhjvd@ zDqt_l>ft`t($MygB}72u#ry|8!nFT zDMsC`V~YDc2$?@+v{=oT--+_~(@PcXnH}c|?-cAOkpRNKxK_L}vc;}0GoK$Nl27Vl zYh%U_UP9$c{N| zFzLiUB@7K5;~}+~<)>o;!ej2I!Umf}jUMh*4$}yd<_b82$*X7-3-CispR%LZT7kYz zvU5f=Awd-7_|j1=`8t>*pXI~StmJSs%8Wu^Kt{6#)2^rri(+Mh`;rlhYM#3E0ebcp}rR9I0|P1wIw-j-Y}hxSGTg zC}7yK1(3w4U4~bW)IXDdc}JaRqKgWVhjDO)(vIVQro!d0GupDz%+#X=V`Xra=Ug!viUmh2AekIQzcKcxL7}VC=zBE}3#I3|!9s5pK zS=;=AXsq?Y9Y=lNyLl9$h2mQlcJ>2N8zTjqw2D@K>2n6LHGZMKq~-uYzqF?KVeXie zd!i~tMGqO25LOhtdSUS50klJYR{Fipz3~AK`PS{iB9GTKhnCj#JSAyEA?jl1{JY`D z+&g+$K?&Tg?)`ba7Xt0J{4yfJ5jaAfrWpK56%D(Rqg1o9Fq?9^4Q3M48U1Rrq4-8s zdTNXDNcqSM_59Ajzia+)-u->cA!Pw>EinuA{_^)KSArv+i%4hoEqmIM z;PS^@#y7#!FuX-U91Tkf6vqjOU5SFqsLd(`et%6y)_y>2veQvGa)(UncKEsZkhydx zjV9NQYqh$Tf|{xK#R=?Vb*{TrESdK%4vj8REv*e~@*3@unZ2SmFT75zIB9jev?n!6 z=96l2P=O2Vep$+?!LGuYg@i-W&SI%${-zebFiv5j;tv@ z%-&NqrW!vW<-0%lr`HL%H@xGPdcf+AO|^*v?Dy$zbyAEor0A4HuUb&dK7(Y9waleM zh+xaJ+(3Qd1K}>ND16SL6YlGBVvyz*!C;>7Slic6oHy&ni z``3Fw*kY2;#(5xd{yM!S=+^Eimo0ujrnNh9H#_h4v$~1Bub1e#r^moG%hr~H7XNdw zKVkTGq9~&LHu#VcCbvqh+MnPUkrFW(I(Zw}OoyN2=GV*`@ml-J=|?{~lbM#*c?4zX zV);i3GeSpzw{Fu-dDp3KY_Ff?bD=SVsG!mdl!cl1k~; zGI~_2*vUR1h@B_tsP?m3MGVfqiDbQhafEe>gaGNvr?jd@uF7AVM*NH~BF8^yHi%+b zo<(?z9Aj=CWll|mmWR2z^%a(pEo9?x+jK?f?)TZf@LaVH( zFohc9>=dMVibRyH}qRGST;>hq%$mp?S9)^_ignqahcs7nq zl4j?uO(f-lX2v!(Kp9a_O*~bK58;>EWr!O^mns_0=4L$L!mpaRH-vz%4gziYKCBH5 z#^6#jyx;yh?ecvoD=#-%tk%=;dHIKq*mLbm6mt2+f3jIjWPMJxv9iM6NiZ}2UD-IE zOd`8;FD{H!RlJ#RU6E^F;B|3`Vn$fZCU@$!s&JXR0GNcS!8KMua!|QnHoNN+Dll}G znWTU2>S)Q$k6xLa{oR`L=-SW_JzAr=V~o?b5M!IKgdfDZ5X5)AsIr*N9#EaHDz^Ln zwv^N$rZ#uxm%`i{?>g{M?@DquIFQGt)XgHf=l+(&rzCeYfsk90HR4A@P+8;=A9wj) zKX@f^B)IVI!xy4&>02ASFXQ>;tNuc&OfMC_XbX!Pn5$6$NwN~6Hh<*DRkLl2n23nj zT?H0X&a~y5BROv5!{uoOGrPTaWJ>a6k*GncQg@*L>Yv^W5@8;~{9W8eiz6IWh`=Oo zZA%C~(Go`lXzkXr>N%-0gq$5FOYPCt!^jj;$+dd`^U;+a;wGcNc|iX9R7MMG^~bcd zUr_SiB=H-p+=iIy!-{UeEx8Nf&d8xFa1n#XfN!eXgZxc82xv-H~O6lup;czw@I^Wn(yW5x2X7KnvS z$BNr6&}pRgu>*`o49VWucxOER*A6gR8Qce5KubbTPD>gL#&U~kix?sL>*HW^Z2Via z)xo4FAFjv_ARhRvyO~&Gxz@IInAn=!JP9EWB)uf(0I#m-##Y={PCq=MgyE}~tMSaC zIb3^^kCIHH{8{%$rs;Kk?hXGqNdw0Eix!|I_p`Np%#McNfGG$2k`p9<9E1AO-Nr^(F)QKx4{qvuj(VtJ@j!WxZPOlPfjp};8)M^r z^pTt_zv<~*XkNd^rjj#2ml92xq@6}t+g{+4S*Q22h_)P|Lje(`i;FypI^l;3vSox- z2RHiO229~$$$%*#$rUa2^q(^;6tS@e4~~+n_H`kz#1W|tiAS<{Mo-mu{@|BTBXe5j z2ea1Jm6JZt1(rjlwawx{*k5RzzmKgX%18Q*)wXc?8J%Z@iIgPu7!!J6zGXjm3Dtel zTeT$v8t_MX=_N4Ate(2oGI79{Qf;P5=8;DLxQ5!PxSFr;=+u<1* zoE|%eJiL5%Q@;yLqBIARG#{Y*;8&nAX9y5mwptHz+KpElYk}kGRYhBy8&#*p=jr-$ zDwpf=+*hFmpj&&j6ZLoI_{)hq)$g<==Uc`(Ud15=-(6W7L#8_XBGrEt8;1}!wnzLu z5O5WlSzqc)Nu~90Qwz95pnq)U_s*{y@Wb`<{n2r`N*8Z-1ArA1TiLtT$C_e5omM_tRZuA z%?xVte3X95ZLE*Iebhy4x7uian9@RfXO{UFJ8#E){SHt@kqP_U3+rlf-{n}yKc;@T zVc)IXXO7PaXb=5`@dM@TGrM(kgf+<{bc8@fg32`U1M=0a{n-L>bwd9|slp=it@k1KEQ5|YzR_|J?DXvpT*}*0 zn7R~LvU>a7`5o12im1oFMjGI@k`BPfelC< zt4AwrXz`!Go>b;n9lvnCl~A7a#ywnp5v?{6dwQT|EwG4|>KpytmYNVT2A3>^jv$;gh` zz9IsXkNcOueR0VlL4})sxEc~w$Q6eV!{+rwon=z2uXEVwfRaj3eH4twr*=4@l&%7GXjZ2qws4EWXG7;K_d?VX& zq^0aR?1Bf|6p5 zX!{8{5L!M2NHg5MRP7Y;M91g2etxbE1%pP6fR5}_PVGZgBbGtsLS5v-Q<%b=KFl$# zCOi;9fvO{m?=2FmBsh3Wn;5zpAvEET?V_ulIx>u?_&vARPbq~ri-xy=)`33_Yo@9r zi4bd3GVtCq5$JOJ-GG_v2wDoP^{C4zzCv-=ErC($$CqHzE2xY9Z69<6*<-5qX-+8c zII2wym2);Fy6qCNZY$Jru>2gd02%ZV?7j8bcqV|lif$1W8&h4?Hcr?O7#61a#7Vn` znZQ)i&0CFoYccG(CHs(CxB^|oe;!_Xk?*81nEtj;1nfmB7Y>O!PVwoqRk#YW_g_ycJ=D#HDPbdOF zAnj5LJYBwO!GDoK!*#2J1{ zy`;Y|8h9NR%%h2Px-_H=S1@TVfEtCwfhuU&W~Gl{=8E-d!%26rc{cM^gO!&r#k3-} z??)=CRhpn@o<%=y#yROfgVq&(s~){jb?_P@ka1PIB8LZ=<=T4Edx^z=bck>F)hh^B z1kXfqB1m25x|HRvtO@^~x5;2d;#Zo1oH6LUJHmU8X&@|FbC>#9811*>CEn)VIwH5# z)NJ*WwRwH=a*ly-mn%_M^@XPYfR9@H$sA3<;pkg&KDcoomwPq*C148WKX>u zo|r0Lv@gpURhxR6wWiTXQE~NtDvPoFalcT%1#_}ox2R63D-x)l=3p>N2ud{wAN8n} z+^Xukfwi6ZHk9gpRFIWVVQuh5`Kcwh4n{_C$TmJ{Px8aDz5^ZAKYQG~Vg-$Y@nI z?g#d`-8_9>;2#4lq&0FEV?CD(hJ~b5-6R&6K$+u=@=Bfyh&BkE)Hwhf3~L67_B}6rRJCh>8v#KU*4) zhbYSz=sk*_rO#MEw&l=1lFkON;m040kDulB@*NBc1feCanzcLD83@oiSMr(iBqhaA z+Mz-u)kXuxU$VIedaicJ8s|D5d%&dhDBUOU$ikulx=714kcg;VRkyYEOEw}3k8@~m zZ0wv@NyNfR6iU>$?^njWPoA7>40!sJo)61)V4!~1FJ6eg{qd;==7+bfFBGJh3eTr^{pcWbgDAWPFWPy96s|Y*O6hRqe&12<9MlSt*TEuI!_(JUc3|7$AW|u7o z0DOF;`Woo?!vW64KfKT@$c~idQ>MghyyRtRAeFrss~0obC}N&q%46i>I9yE>ua+?S zrlIbE!AqFsA}Tid0xpFq+0%_;(g$ATw25hKjd2&9W6k2ghH2|aA~{}A&z47!|5@Cn zA6<^pLCCmA>>%2!KV*D7l`X071?w`jwnZXuW%ubw&-=B{W9-T5<0x2jlkQ{JaWqi8 zA|Pz@F;#@pJE3HnvhP7Xiu1wHpP%01Eg3oW8~dU~1|!yk-ia%?#f`ds#gQ~eu2K~6w;A!u#l%mwAI9&}lMHT!4M7kW!r zJXbt?kWgdl(Ih#DT#SyvMW`xnGf+L~K$+i_<4X3)xCtGK3J!g{AkNUn+VieAGGfuH z<{*CCi=B?jI9&ki6A#y;J}xmrUh+UJ0$O!Rrv|94yWA{$QehfZpp_xqm7wTO(6Yl^ z$i_I^z;Lbg-nA@;P3sPAl4n8E)suAo&x&LJA@8cR&XDIVqLUr>6Ah5CaWlv}GG{Qw zD9{yN9*Cij2RTTr4BrQJ8%T^q%|qE4h#O({%QsA|z8`^?f7~16yyt@v8VOtNWd5yb zFXLNG(bpd`UVO}GEqaD-fV{J%s3=ki}1VzDV?IimJ$YrXg|kD}(yUbIF-j&t}-iTiP_B=4e=phE$tnM^kz= znNh9!g2e51HB0+Ew}->G8B4!*gtJ~_xRg}XpSY8#>yPEnsd}pPUuJI$nHM@auQ0x? zuF6hPk^jz1nrWTl4pg3PCIZ9%{zF2yOcgFANpWdS)MiMl@&A%eTycUj|Cd<{^v(Vs zX04?kh*B!we0tx|!e`)s-{+%rF_epMRY<1~s2z>E($YJ(J zY_0m2TX6})heh1p=1GvGjqGv~$D3(urbL)!ke(|cstvFJ1*BH9;Xj1?`;4M3(MfRz zj&8Q7vjPJG7B(h(MiTpBo@-^%NC_n1!)j&WMPyo~V>p$IKbmD}JL%Cv!-}hvZs=`f zwdg>7vJ@y#;8IGzzd$PSKBVUV5wO%UOsA;r(ti$;z&wwI8zh?22nF66W9m99_q>vf`4{ey1i9- za{Z`4Ie)ZmZG3wLhZs#FDNTa&S99H11pKn0!GK`psAfz8#qsE_zy z6a}KD&#rOAlAiK94M8ZF%vzjHEvLAF@syb(IU2(I$nJQVWAdnr6ef)+25%95xqi$9 zwzml=3XG84fApX&ahv!NC)^HS&`<&aQ8F0kyu48`3GysioP?c>ybZH%RNC$&DxYMY zKteM}If+6#sq4s3a7f~x743w3waY*n=Irbw{C7_LT?rDVSrP-RG#RWm+*ucXjL9MQ zVc2X0vSD6~LEIW>@)$qaSTInIKtl8cvzrtdTnw*p+R+&$r=(mtUf~x`c^$X&2WMjB z*IPBYPfC}zm z&>w{YDKr4^m_=WshVOAVwp2q3H&t4Y)FCT*%3E5MbWY5^=q#oIg>Ob`c25K)z_+dg zyY14>i!QMWe`DlUX)V7eTCL%{?KdGqd2alEZ~%BXqosQ)hYGy;TJ|WCf4Z-9`9?O9 zrMvI}t$Kldw!+posgqG^g#qGu=ha2#E59qG ztd|_)D{o!QP1_K)XYx}Kwq`=?DeLN_WBYyjyBSTx^6Rc4p8ltQqpI(t z#;$jX@(O(SGzp6X`zXO_oV}aHimD0z?#m8o&CNjwP&qkS`*PiEmN?KP(-{Oe*~Buv z0zcCLf~f`uW+;U-G!56PD?T-pN|K|tW+>hL%My#RjtP@n1RllAns2;JOppjRmq&mq zM_67-6D-V+HW2im-kokoDeEriUB|bT(E2F zb~}R)f9VWh&2LQN@@#J*Z&wuynJtG=Y5+DWXz+;t>Z@>iy2;uaSpW(3B3)`2Wfskg zW<=t1&DxlqhA>@c_&A$h1&O^^LtrZpy&N_q!wtd|&TNqUzt0D{b|TRzkt4l|HO;-{ z+sL93N06$jZha_2uD3gIRJH;Duan+S~~jfDn^+qU7M<|E)A zC<}msJlFC*peF~J)-a@)!Mc-FhlQLz`K%0ox36s;+#!*Vsc?+8s6dV(vMDXO{9%Qm zJ#5FaMm%dt=1PaMYG>85jrzMQ+of9p$!uij=-c^{rT58Z1 z*Q4gerXz@QG=XmCLwC*Xe2#}~jL+|xHZmf0-h4oyo@NNl)7b7+pnB);3-^s&KnC>o z=Bed=#^(9ZOBjJ_3`7)HbBgj;{S2PbN3(^B3JTpook#1?S^&bv?pP@)dUYiC>|uQ~ zL6vPV4H>7ZI4VlL8~D}G_OrY8+m|x0Vu<%U$h)+lXk048GhcE)ZBvrEmN+n1rL64f zk%&Y!P-k9H*G_m_ing?(Iw2bU&RgIJ^``IFwt@ONeCa%4J)(_A*!)BGSo%9KkC<86j2u*73RminjzACbDnDIM0Iom_I1W@ zsjw}-6{n0}q!$K>;i?mC^u01z<~(GpslDDSE>;C@Mujl^=t%*-?8qYYTY(c9RQ=ia z)MBr?h>>W$XOL^Vb)H_`G~)M5pHysiRr%22cftx+xSO7Gn|#k{B}5ATVHmMUBx|R~_w>d>Ya6 zY-qB?pQw=A*fg39)7c~x?LTEyIv@jdv=|m+g!48Yy)DM+3i_Ni&7@(nt8Bq1Zn-Q2 zW75{O-LdA+AO$4R&x>=#E-=QMW5dLJ91kpE!Zh9l;YqqJ_0|6emq`p4kE>$6*v6#X>z0hMG1ZpseOLFbITmkvQfGD2SFJ zv-n;PXIMgOTU#<^iq(cc-q!7cn+g^vQ!U<47t)45{}9=ISWiEr-2W|@RssEd^bUzl z7E&gbUG|_p8>_r}tZLCY6wC@x!_fk3ys%{K7oafSmuPd%x>6q!=q6Eb&Jf>~H5$Vu zD~E4;X4B?mEHuaV3BvnUm7%!l2ss7)w!Gck3gH9ZRAP{GzNBjyFb2saiLroN8iE#) zi6tPFv#gnfBPT2DvUc;CWL-~2`Mj%L}juP!BPnQWdN@AvVLoN#$OF@wZ!e}3!<6T%U z8c>hMQZxt_m4lcBA*^VM#RQqkm5AH-`n(y8xL#QBEufx;o1KQ6j42qLU#S&oxWkse zy!>XjS{>4l$Bd7WUw zOqlL7<+7E#Ov~0DIr!~m2Oga@>4ZsDetmv z9CY=+Pq|X;W99m@zMrK!uhH^9i6t#q#;?93;>>?56@YM@TlaUiGP*uTVK2W_d`iEK z!?84BP@3&JG(0wei?3}E$i3Azn+!p2gBF74sj-942AC!@N9uU_gaTs|zx7qATYcOj z%S@g2|A}H$_aq~;s(Cr_=WiJ=J^8|f5SHZ}cHfkpv*UQSc$W}-jCx4O)i zU41`fVKp_hc>VSD#G1kIwNjeOH79xCi(pUdcR*4n*YM`>WzV_X@KuwPTk_;?T#2{Z zfB#$lFWz6H2?sQ)cP_}@^UB~;CVbU<$Ix|6VgKa>+c(}{;QZuvh9~uxxBGV)G=h-B zNrFfaDxnl?bHqvTJYLya5bJZrbBl+9eF<~SaRC2dz1Mjc5t+Hd;i?VV!Sy#N@=_=gK}gd5;z#%yVK7q`xJpsYPZk&ijS`Y zy2*U-+i_p-VIz+`O=cO+VDjyoLK345=soG)y3$LgFy?z<+|zMiWt3c#8sH$bzD~cEVV$Dvy%$kn*9Ec^A;$RT<K@LE8w8v3pkW>PnO$L{k;OeFsd#P4Q+~3h5ru zp`4qPJ2vfVx{8s$)2)XOh*w1O#`4_FQ3kJW{Q{jk)hIb`V?g-0`E-h~sp;897zmsm z>CF%0TTueqI2QC|8|J;DMg|?1)u1rIay>UUX9HAn{MPYGPwI$hw@H$#ct7X>xKnwQuQ*U7r;8LD zP#DEdF|HLI05q|f5fc*wh(Cb-PApr@?d|OVND)cE>lQC+y4l6?LCz z*u?92oujr5JWK-kWhqWJsU`U2uOc+18vS=`YL!$~=TVivZm0k5AUA60k+#>Aap}uy5o~S1nAYY-mex<^HTH3hJ-boWji8YbV+ob!Fhv5X0=_LY#3U za`42Ywf^i4uv}wcdLG~_E6`5b6(f@QI+Dntu$sjiTvJ?cE@_$zB>c^NhZg4fbgXWz zG#wzmIh&v<@H4S=^emID{QB}qFvnlWqP0Y;(@t+YUgXVlzG1QGT3nPWu98;+XucQQbW6vX%r1w1r;ivqWOKx+FrB5+Xb5X|Uh9u@y&m9HNH;UxdQi8X_BceUW+@E5Pk%OI1;nOS z?-%dBIq!EHE(eS6W8CjAlW-0)XdLN!!{0l)&)#3XbozGMt|#9S&)%OZNv{)>`Fij- zo(a}_ga9e5AZ#F0tYn!2gP1()_u01@>9nQy&k4F=$;PqRL3!Kev=W>PnkQgOe>Dt8 zYIu2K62sNeiqDP?`Y)ART-)T5E*ySvlBd=;gDg()b<{6D6{1MSBshBTaA-kvB&YWG zx-N~W;05^zFlKBvwts1x;v9!p?aC(&>9PQuBZ86Drh(| zMa%8SjL%QwWCf1tZ5pjY0IKie0_+fN1_9-E!GL>hJvzi`Qq=id%MR~vQ7?@t8juNY z?zs2>BhB5y>*>ipu``ar1&#r^$m3m{1)fj|9h`Isz?8f+6lQMR!fVYkYgrm`7<8mt z5u(lyH>`g?7OzMBj5K>e7BGn~`RNKzP9e5@L-Ops@0t4r?l_i==DMbMY?MN}?H@_k ze$arm`_tnr6=hfF`*Wu;KyuP*wYeB9XTHA}f2`Fz;omDr>xTRwp1pW*|2Btqr)IDlQVeTKUmNYCW6me zLmjGI!6chKMc6X2LCzU>yp_QaKYYr2!JZ0TIiyot)RoV#!8-r^FFCp)&lXX+wU&lo zhV`CX$@$MM2|9IWt+2{yv7+|mDG@7;#2)fEslw3 ze}&r&Hs2PiiQ|srXUY~cKzslM_U2R-2#IbVz_)$OG*ye~%oXYXvPV zFHZh*u5e##D-#KFnE?u_1RMgh!!cU=MO!!%2lR&okt|2yKV}VqX>N&AEX)80QY2S| zOCH(nUbF6;Ktxg~ima=LnGRAo{f3Y?WPL-PnE(oq8HoisI#0V7;ZMuV%sO4p;!AW^ zBNFnTS2eEGq?*QupG&xqw=(|A9`Jv#JPr*js+sE)% z!nL76bJqZ*d~&#wz@m4rZ;POrXWnff@X6pa3dV1w&{>Q{(}=!9NeY%6It~bL(W8^@ zbgOvk7>PbsrZT0m9~8vUV9dqtzP@T{?6QTNCAI@YVGTsx66y~*>V^TrIsB$G7>kcT zW=&;Vx5y}MmB$>0z?J-0G~~c~BivHtS_`fdiw27QqLD2>|2*p^&f6v+zBNg#D;sO2 zk3vD^^ouh=%_7wW*2p%@&}#+ARc<;PE@%#PJHxLMoMUU-KYxgLM{XBCA9fo^aoJIL zFfg^G!-YzV#nur$a>hPzLg?PldUywYboqKtE6wfvS%W>?n#pM1GJ`s03_ zOgpw^B0lGc{CWIXGQqV-VlPB=EWrff9~=i*ZXIrdVTy=jdh8aX=JS2zONL=eQh?yk zMMb^*X$D#NFSD${4o*4u_x4Y(_sHP7eIBr*B*iC((^SJQzeQFJ`}6?LIm0BbduI?C zKf?AI5U>Q_*d^F{!uGj%@n^O@QWV}_09Y&o)ztChAt{ORgbt8RxmZ{`?RR~Kl*k9}%&;cNK=t{%~;9;)*3B*TySt*dz{$Mv&>LVG!o6^f2)XcH#$G zeMy^w*OI$WOt$f8nl8TlGdT)Iep|)>3&t4}1dTW6paq9$%e-cNSiojFiK>kD;KS|s ze%cI|SlVQG6?lmR{7fd6+c(`3+ABc4ue@YsM|M=>r=2Lh9)|sLjVk}|FgG$nCbVA< z2#qddGhcQ~;(G^xWB=H05a0O&6_u8z)G*S~`J?jwLgVGhMn1&la5$w*pZ}kk8IaUM zsF`7>zLlrcEO~;3!uh$ULxw+BX0qvQR`-1uz^{S=mb1O~`zj%3|{bY_Nnwb{` zc7)_4L?R-f5Tnf>;5-qc4L#15{p?Wg%~%2vRh)9d|N~G**IWWc02+Z!|IjCn#r#R@A6tJ8S67AX`zl zi*<=GbQULk*3clr#lvBPagA6P%tI_DD?^9qOCM%&M|U@T$QWQGRt_}4ZPa=8QtJ5& z>}iE7qOAn;rifY8CENMt=t6B~c9SwT9U#+CONba1C2wP4(-AasB;=VT1FdWXW;x?O zJ2HmJqa^P|f%0g^oQ9|a4@8bVO|6x7dR5a+~J|fn)iU-#NJ0w&77o zNhFdF=@FwL#B(wq+#n8{>~}i17)dz_IB+6qG_h@>O0v*}SHhRdK?3n#e7pq!Dvk#L zYkop^&u+K?gE`!n#%Vv$ham@a%j?;@J6&Sgj=6n0snp*4x%?M6WQ>^Avmk&psNuKjs_(S}_96`bo&RyoUk&Vi8ibC7y?v*~*dnCmXCGz&Lf|A70p$)SlAqr;J=i6LE+Jrx{^_+%2b8S;v}iM!a%4Ys zZf}||Sy?%ACg&SyZEVJpb?hoUnkA$Hr#4an6zDw0daxU)*Bt)8g+rEi+kVB;p4w6o!Pq%5#6_1Pv zraNu^8`<_>v|>RYJ%(Xo8eZ0#ALXdx(W`sBIFb8SV!ik=SN}Wq6@gAd4uO4Wk|cU5 zY3wpjVPvtq^AmJ1yAmh>xkBsA{ox98U3{GNZMj%0MnWQ4fYUc7Ufz3pm2+38Zb{gNIL1?%@IU z$U9ZZ-@TpwDV8GJulp@&LR}&Jwfdo+eqC9&i4Kj6Y&GYP73hXi)-8+-*c=h78M1={ z0ifWna!`$}>1CHK*vzs3k_^R~4up&=3TJAV*CkQp1!LLvoE<`|%vWa7#9sSyCqjZc!yG#_t-B==l4pi=oO z>{F~{4(7CiB-j|$8;Za3JNE>4hBSwf-RbQsZbpbza6Ig`Gue&|99Q z*GwOA9-o-4ypZ{BQ?i{s-bmK767X83^_OZ4^+iD2;2w^wIQXPPPnW%jm4cGMYo)-X zfd~adE5S)Wv-D%$iJsnP9Ur)K4GT4C(?oLFn4L^Lg;ApWWNF^K$v@cB%pPB{( z9blX=ot&s%hxt^ntMWBm&tV;Fj zm$GhxZ~?#Rzh5G`fV7&f0yTZtcN>8y6l#%>_xso9fc3&UoLZ;ZH;P_+PNnzK? zP8gEwShi2xHXYaq^E-$8@#mA)$bPM;^nE|mEDkc{0BtBQa=35qxnd|U4Y^hPxj_st ztT;VUQO5p#?f&q4XtUS5ws=9Z?-#s>POpjg$JxxQ!tO)#mBLYS?SzM#@8nsXSSh49 z?m0M$rwp6LNTz8OkZrr%&Z~&O0qH^o zK15@pLd_3R?zX@IXZkdzeRZXQlzGvI!u=kdC|_VZf(y%#W4`xK>7_b%%yC&;fk8tjCG_tS=%rzO6#tCy>!xfGG=gvL4Res0Ol+r@ z5%|thiVtwC3{6TvhUib0H{mOP1OCp0wO610_rF>4fS0rtrMl&4pDLZ*;QR+jy^KWa zHZC2f0I8Ner|VFnzY2iThC0!8pJ!7sAZmE|#;N#hwIBhFh?6MjsyR9l5t*Yt3-Nl- zb#Oy?=aP{wuSyS8X5U}_G!QOFG z!C*g8f^*8G+9W}kZnL6TVps% zp>YntMSu(+z~64&+Z(HgvF1MQ@s}8$==Y-yAw7-1K5UrsG)_suSKTE#TD;03cQCQA z`Yk>l@o`o_w|?aC#UykXi6JXX1=KA;P=4S zIJN_Tyqq8~fOLP>=K|j3AT!arEf%nzVI=lg1p3B)^*#GvTpc#^NCs)}Y7Q6Z_^0Z* z(>5}I!;!3Eup$^oVHq}%*oPkP0*j^S#F%~GRZy|ZC;;#|H>Dd$lTbSNzN$%)O%qJw zIg6&+qcX|f4LSgJ0erz&t)Y}-hID-q)m{#8@7^o$OfpEZg7);!j&|i#4idlFM#oPT zOcCzpvvq^S z=lIke*oFT4>&U3*O)!=NL)GpRlEU)hD90-WQ5m~f_XBKl`ncPL7QV=k7E3&|OG6TW z2-Igh%kEpePQwL=v^=4wQZku%EGpR!)a>QP*$!6CJs0l>(PZ}~{()x_>YjG&op=fD zXuoADrR^8YT#e02@UI0qY_2I#KT~F}Tra6tF}U&ZEkW@+Xk=gyU9Dr`wMMoO1PZp^$$Va?tvhLQ@g+9Ez1E7szk-AqEScZUy%O3J zP>VZ$n47F>W{?$2@XTlKGdQaYqyn1Fixmltm7_uaDOjgyzq<`DIYwy1QWZIw*ww8}aDeG0m)FxRml%)Y;5_ zlL6_CoqI{e&rFW&A`U(38!S1>-|-pPaC!PM*_(B(#&t(4TwYZGD4NgovR{oi%{F zHIfo($x<`dw+tM}*;C;Zj-1l{{r$u4;^_9vI!$@{fRi~IC#Uv;iE*cpwKLB@U8H2k z-9k}zXcK21geCe5HB18i$R+}YJs3Ff&-E>0Y6<}vqs1*^yrpXy@@{u{7;gvl zV@=Qe2%5Q59zF^0cUTuMvpc;N9{-Zxo90Y_$BT|_V$T!d3F$#hFD*06cC0@jn*ZKq zYiiFEQ`6_5nJcBtcgw74_2iMsKA4LXWGqjFWzNdV3K#+gof@lN3J_r<*bf7h{UgPi z8ZBsNqXU7gjXBkNbab&G>s%SBK40cx(bo|UIA zMcH{yQT?+=x+TzJAy}Nyy2IpvrZxxXdX0|fWy*~GyvF2Z*nhNjJ3D@^1cT12@h*;| z)UV$B3w(WK%u$QY*D;0)y zfxl*K^zrL=zGY1T!cvTe_v1l}^=ZfRsj$NN+%5GJlQeis^~LI|Jr;YV*#}@NSyA=h zSHzRQHSb|HlV%3<-+xWn$kH9bY>HsgjmuXZ6{?%!7atqZ!E1Z{K@Y|Jscz|G9DQVF zcwY;As6y9cdI}>5UH6}50|p+QGYIR#q@t5)IJ@^0z2pMCc4-u*b1EP$=-yuZ!pUc& z(Lz#l1oOlA@WqqH8{e-DROLEocNj8Nuq-003j(FB#4?pALx|$IYtLmO3dg8ou{^#i zrJ1IP<~cK1%Bfn@azJULH?mQ2O z5RuIuj}Tj%^d}4e?2U&v>LBaPW-NSSm2q;exs<0HpxD)vrO!hkJXxX&N3Z>G<@}QL zO;(jNHd~Se>kFb_!L%mTfy;J^PFNTRAk;*i`>`4+^@RuT(DAg!&;tg*DdCR(y#x&< zLu5i=^Kb5HczY2J&AKA%pMGA^C4zn!x_x;42M$>MiEF4A?$A|y4S2j%TBJtiSw~+^ z=R@bive(ucb)HchpzK-%3rxKfzII42AydqwwDlm`1YsN*E&UUSP4VU>=hez#Wr+vD3W5$rL*Is;zT1nXY5A+}V<>w@`T2_0ABsjrE=q_g^)JR8O^% zYw4vRdqNBI6}hLtRM(pbv$Auzgk%a2Sl0E%81(P!qcQv|P6|1M<_BCj7|zp%=#^fA zW8|!>DUg-^mhue|4x-GOmsLnems`V@pr`N%oXz}DDx*C4+1@DKZ! zwi!IUS6cwvqQT#pHgCG;a>d7v`ee#CBZztm)ns}umLImlU*PX~x{j@__18S^|NS*D ztna>odRSsfRb^YGZIE|{oMSz@fgx}?L|!;o9SlMD60QAVs_En>ApNnT0v?*tDEg0- za<-JhP~c}?EvB%wEoiI0RPy^QQCr{kgz=RG)L@1;Hp!fy@x?#Uj&~qKw^nw*r!a5gl6i++o;T z|FP2{AHhtq%!U3&G?8{^-_t+c@rHsQZ$8 zeQcB=jdC)mMJ_&vhM3H*JwwNT zk#pfg5gjZQv#RLpM*K*D|~mw&GB0#%P6&Ffb2pZX5P=q)<#n zbt|$F-7^MZ0?4k^=yB}p1Q-{vzFXmqCej%%{mY>;9|*%HEm&!^-l(ebZ@>@VI05T6 z_Lb~K%-o!AHP80IHSg>Q8I&R+ws#{v@$5(zw{ra>8`&v5TJGhT(i#Vm2YNWmtgbR= zxnC&PKWW7%GR0Z2-U+^-D>(0VEPG0|Cce*}8GV`1LvYmlGja$uY=Q zn-tdkTi0>kS-vIDmBmRvrx5<~*nT2=)k6f=ud*WJwTc85l)UEq4#*jSmDp65d9bnm zvgg(uj?y#Cjoo$r6%pxzq=vWbaGon?#Ht4dudx>GN&PeP#Glonq#g&6uG`|@if)(x zKApvvJ*~v3gIY3_y=s#Q`Tq{(@_WT4JOwUgKrn))Z?H=DQyh5f6VSa{qW5F|(6w)V zW`A)YElsr2*>P^DzHBvK&}LkQ_D=XOoCNdM86%OlDKEBnXC8ox7z}L|BI^e!P|!=$ zhNP}$1ThWHNqYEH?pFRX!tOWL5ggNLsfdOZS|3_zi~45MWp@}EMYTs3Xb}jw=sPrv zWog}10AteJxibhm(TA)J54G3BlFma6%p}Cx2D1l z7&sgVOEQVtW>vR?cCPdqx+Z=z_30}WEudM+_dV$4V4W)_WYynjoYHap-VL*4YNQ^f zr7cI@Pr-=~5lTF{7OLnn&$r3c*BsPPPr=0)fHOLtPQ?XRK>#Mj3JMbtK>^=RYYd}G ziljhpac8NUrxnfLw?P>C_jv?^{YlFOllhxZws{-S9flQ<37*zYYF&ClStL?E*EZ=6 zK@sYgxo5KSZ{D4*9MsD7r1?y0K#PI9i-_b%c*3%pI<{dAEtm;K6R z9k)yb>k4SMX>md-h3cxVCu$8DN-D0{4ez&*87`Nmzho=)hr=l%@tUs2&|d4?(9R~o7h`d2LUqjoM&$^CT;AKX?&|ZR3Tbqng8XmsEOFaQLH1%(mjmPO7#EXOeAbJqeT+GN!>P)r_!OBBM<|;x$jEv6H_S5TYY!$$*n} zpOrji?E5N=@RxoPVSfo98I!Gj4%6ruM>>`%flQA>aOe*q+Ov=dm#<7QoxxYdgeY(N z$(?)+?+ruP#8#JF9|}pV7$BP5X)p*gG_*})G?+sCt8L@rMs!~d4y%IO0is15)ntCy;3u+z2?|vf=C#`;?8_p|8Qug!weYE+{F0g>GnT9 zZ{&F^kZ@*ht`DeZN8dtg86mwwiF8b8%NwDQM`|mR@X(fhHvoJivo_9-(QO^BAt7n5n!AB-SQEL+s}@`#hB zMiPOtHzk#h5m=nH@Gt`JEEZN@YB*59u_`tkp5gk-q+t=aRQ(voaYCl`%@V(Bm-VP* zQsO+ef(lZoOlw%*>x(77M^fvXDR((`?6UfW;rJ69>v~PVc;}(P@XVl`{Tohl1?BhJ zv%v7Oq?Mr&2y;_Tx-s2b-ft!nKDWz8>=z99r+<5T;ngQ>>)|ZVu(MK9N^oS<_|`Cr ztn#iPQQI&YtW5cymw&OOW||s~vpLc>=YGB}RIjQ!to>wW+EnO$jK6Zo)h>Hyp?B8E zKQ08r_x1lKZCLhsaXGj>ziSV{E>GTQq42-k>8563!5HX%_`sQy#~0zrPjnEeFRG2c zRDeqamQKJ~NM4jV4d#-9ZQ)Pmjb8svZ(P!>S~BMZM~>c8qJe?kfrQnkfYpa=q18Mm z38x7GUmSn~{1wIkdKUh7$Sa3{GN&pNUjF|I`_yBNSm z;ssq@AESuOAOGzEdn=6l9Dovxy*(KFcFhX(#RBjDv~vHC763`s%y>Qq(!@I7vCmMH z($Z4XMw+d@)@%|5*RjDlgAVB*jH+;@GJmVh2!()h$^;?n)a9C@P=13joyEq|VCi^d z%|k*x&?SU)$T>xf^Lp3pBI zJX&OU5sv9Y5qpZHWJ%ElTs)c41k+=tGv)Y&^*I(y00@lCf|A46^;%7>A@qmEH(EKQ zjM-tmG8Ckm#?8ynj>BuLlDj3w;lGN0AUK5K-$?0)v5--% zz{c1e&Lt_E2j-^9gRLeHZrl3#?-61UeRbso6}JAIT^dk~dX5IKHo0&)0jATvebDZE z^W4hg<3O_f%E$IfrqbwZ%)+!Y_QBqm>;@dTXN%)F{j1| zG)|f^zGu(9D{<-px?~SRk1oBW`C`SMJ0Q5)+uIW!B=CB%O-V^Hv9^9ss>kB3@$52p z4NdUzNWfi@XuD|oz3WDm$ibW5=0p$8$-bEz(S0-?d1%e)y(y(P978UgQ}$6QxsTPu z!vp9a9EeCru=f)N9PE#SsH6a!$+U9>YjR9zU2+-6bDndu&lU&+L&uHI;%yk39_TY) zZ8`{vv7tF0lYe`ubPbKknGUz&c?GU{Uzu}$?hblcGfLsrd6N3IY9{1_tL{1Nr1r!b z`fkUPnu-&uN8L4IFl0b?2@~~p>SszOtM|zaACc9vNnn|kji%0R>h3z8cDQ0^x?sMn z$%yG&M|~3dh8uVpTsb#;?N#OXDjIbjemIroyY!L|8(YE^yfKhrenQ%7Q)I`8m-#-=CA0x1f1z!R3Li&ogUA^WP|Pcpt_>HrF_4quHfFd@c10i6lik61G98#A>i zffEl|A57@hHsqkqdl5Bffb3kH^vL3QQ|6)bfPt)GL$(44Wq?yxRjspi)qcaHOuI9K z;rAA-@KL7Mn=4>iE?51S{0pyq2zw!8w3_;2rueq`c13emhQPnV`Z;c} zJD0lPJ(mFB2g71ChK12kRa0Zv=fKc@GZRI160f3#{b5=@(N%IZsdM)3n#pEm4}@B} ztRW5xs_E$tZc%qnLk^KiJ`HzrSq*4Lmp$GX<;IPd4$m~d#?5xuaTjJ@aOT#X8Kh-~ zc$$+bvP4u1EL)T^%0?u*!kg|rZ zpfms-0n%8M%ZRhfN?_pnRS8~9$|F184BW9=QuVCCds38_hTV#!u&ccqj`$KE3?@uA z(U>H{*+(-P$?^(?d>X({ywIy}Hu}1{wHAlFfkVZs?j z&Go#H-dcPGMY!_;f!;t3$8F+6V;hdkq}{{&lkms<>}V8(W_`*~(W3!&yIRLjR%oi(1ynV%c0P2btsUq4AK);>|nU+z4cf$HCM+4-6y zFsj2^%Km5Os2fNut{ItozDGa2r=M2BI5>4=!`mV~A*qlhrCjt2-6|-RHV7NQw0D&E zVuUI+#sStL_yZg;6q1Z{SiR=dX>Pj^$wf>f%O4tJWHn>;r=L9dGHB?$Zlv8E?8hBK zEv-~a6U*vPof1Ni*6xfYjo78JWG!abvy?_)@r~;K! z1J^Ktw*Tw_;r1!@-{@pqxfp=@H>F{52nUwS*S7xi-_w$(Mcj8AKT2Xm>Pr|E6q9sK z`V52ht-7Ep2HhL%n?t|Tgejr{K^X*-?^9B@g>dfZ^-^r3>&6|)P6?%g2Fp0xEpcG_ zZzP+(E0g-1X-sfq#eyN3MYamMule)|jdZxzs6lv&HDh5j9`RpMr{C@an=ic7IUUw( zXaVo?(2eMMS$%OO$wVG3nc_BVc`Z2%@maG%{$A8m6-ZKuHxo5B{^{F{n+Fo>dktVf zi)G?kw?*%bCf5Fbw8O!{5tCs7dUeZ0-2!+@xE(bRMCH%SuL`9u3apj6;ZO)mKVyF# zgT&BQzsWRPYJT>iSIQN0;$Cr9D{IP)7;ryUZR~V>aIKFZzn%Xhy3(-_O550fN2hN3 zx`1lPDmC+!MZ3HDQWcwvnH$kxeLXasI?76OpNxYx z3mA-scUfxi+~U_XfAG5!OD7b#o*rON(`kOgN3x zB_lB}0hl0k3G6Ha7h60kj@I73$H0_%z(JFgUVM_XWMU5V3*!Js(YU5y<^rlMruMJG zF|5ArtQ{Fj%~(#;aE(D4qGsX-!oI1!24Bb@q9cu6pFfM&7%R1|>ybYmv_DYj@2Ux5 zn7zT&FoUZmOYUIslxKRB$%DO=L51c#V7S{8nz zDpu@+sx=@r;bZRkLdE5ib_!cS8x62ch#D#O7@hcI03#U=;D*SFp$J$2e5*|@AB6}8 z`SK@>P(&;XvY#?`lGCM(m$P4|*E7yNF z&Dj%Ek3X3QUXnfwWD?qRIX&EW^Y|hsG0gweF8UEN=?kYSC_xW*c=e?WdK@`G2@mro z#uJoCWmT$84%O`n9k8j_;Az!Pdj=f5t+ZeJdzfeo15eA$IQ>pvW$?ULxX41Xu;xk zTw{fIdip&DX6W4S%38P;_|r4Uu9bfSIcoEoR)&{vXbvWv!)l-JMDKfdt_&>q7xsV^ zP-6Pa9=Ustm444a38;Uar8$4Cr2Ax$q0xJsxlsF<4N0(eg%IAkEMg zoBde1SaUQ*j@ECkd(Dsvs?}jCB>TWQ0A$&Cs5D)ow8<$O)Fz|jH7DnMLKWr_bpbI71n#fQ2hUrUp}R2 zX0o~ps|FReG`j)l0X*EQS>v`xSUdF8Zo|k1zz3c(K!y54JCF4tb%6N#t8Q~iTDOH| zXz&$ChyaKcz>X$-WD8Gh8HIFLDNbkr(_9>c0}x9hzjlZ~Ak_mH15M=BvJ)E~;0~uW zf1_d6l*_3<@JBu?yYymGQSyZo=rJY-jDGk5Y8Zf(_-=>sOdD7v1Fu}tlhf1M(>O*#fq`M2&uvbpNfhb5j1$TcCj-q7R13%?gNQ7JHHsoRoq%COMqmW8#O|yy< zE&4~|Cq=32J-F96bwy&h$Hli(kPz)R=q2-|CIxI(vEUW!&h*=pMMT*AJ%Znn6XEaS znHG ze`~0FB+p3hhL&KjuQ^AvS>1B#(#>M2>q8-_A5q(<@=iCOgxgS%1z0P4t?T5HX^Uq^ zO1z^f`>X4hP{QS|?QKm{ce5|fuSeR|Yi0&Jgbcdl@bG1i!zc+aqSu_@YC62N3Dy;r zTgDrfd3O`@Ja)!cYMR{aHOIKPMGw<7zjXCd3JpgrjL-1l>s~LJ7FHL#N-okd+}Kw{ zuXiGA_PHac)9CQ8)s`LvzPwy2EUa#Heevo@f|6tC%|5eunowJKy9xUd?KA2F9;BV{ zzttUJ-O6LY8-p5*pH(Fwup~@!Lvz+wRneejI4BBfwLU^UooYuKH$u z<#O?91@hm6e%o82eR*+h33LBNeE%azohp2CWjx1`no?tSuInl(nZQHhO+Y{TiF|jkTolGXS zZ72Vo@B80-clFBZ)wlcPcHdLy)ZVqL%HQt@D{ubxx}Tnr4&-CL)lpR?kgTB>Dr}!P=ZrO}u-5M1UNN}rbWMTh{_9n2GtDW6~vEJX^Hf#ilvzt#cGIul7 zWPPI?i;IsV`O6x&dks023O9=RSzez7u=roj==bowzC90b1R!OH1=1T=NoA!b4{E4r z3TZ=sCSVyWO@F!6E`sy~fDF&?cx^N&J`O# z2&<&;#8Qrl-gn!fS^KUq{Z4#eh9Lup{Pq4t(K16SR~|RjZE8*+S7_NG-TETJr+ZQ6^-0hVvRR28P zgNh$}?CO&_M<{7U23vqLB(iDk}cn<4d1Qul^XjjVB|`k5{9Krke>Cm$?Ya4#icwACs^v!}q~_bmG36FdFa0!LF<*A5>CiOhq&47fYB%?( zj+Ce2 zCjM>U0Y&>*wuytS?0~pVz)tF{aZb6D9_OgF5D|-D8CkDcKU>eU%%57l=_CrJ&={Nb z_T+!8G0sXyY7!w3rMY5}*a>ZQz>?x*{IAO5(K@WQI8l0D+0gOVXVz83?r1~MbN*fQ zJ``ygbdbPrryvi2WSH_eKW-0|b`%cy)97{M^s{?SIP16pB8rv`&r`-E<^L!Hdd2@g+O44^79mho z2;i{A$*?Fmf=D0~f($rKI6WraoEO?^2hRy3mH--iTV@PUQH85Tfk_A^{D38Z1zQsg z@RmbR)x*!fM0w$jFvv?I6=e)hmn|eqL<|i!_^JHT_hFpOY2HIs%~y5f^SgQjN81PAe02bgX0K^SG2i`a9%$92N z@H=sf26O548TgUKcOrL`Ae@_r-yRjUKYMCVw!LY)nax=PST_8Wo8sS0f*#a!$dBv7Ru1IQaw_esQuT$iSszkCkKkG)g^Lb~y<%f|kj>i2vcJZ8LE! zL;4vtv7UnAX4nQIM!j{p^0W<;&)1v5db@s~TB|$CV!k9gt){rxME$SebVvIM08YU{ z1(Xqcguen?ll}bpj z%dXk4p-{@w`EpOJYK0O^j5SChK|!a9yv{Ji9?!O)R$rm4GwC5`b{q_MhZ8ecqoJHm z#pN<3kG_Em$fKG|AcKj;I=-E^9Q%CwoOSDZ4+~IH5wZGmCo`Eb`r6`-LZJZZuk?@+ zbX>&YIYMC^4^v#QIM0ZcEtj33G=<1p)d}(H8x+VShkc2;`0u4uE0Z+tMGVP4+?_0fH9D;Ui&QI&^ab#_? z@7`_HQ-?Cy;T4>uYz9-qs5<-OCJz5pnpNfC1|z!T2b0l06{rR z!fwv>_Nt%5^OZ|+TBN$>dOsm(%$Ucs_RD-k-y~Eb*Vqma@7bvz(E1v-3A^Xfpg)Ub zAja~!=gkp!$g{ewF8oI}aJI0fCI;}{Z^M9gX+pz*UO`q#2?ZNa)1)-3EH16Bo|y28%J>};d81M0{ocCm{9t@i39q;)HyVIYOxb^t8CKR zhb~Vn*wV3cD;}7D|Dorb>5u8tHm4rGc1n20N6?~um3HO7Xr26(;(JyFqbq(CSma+MnYPP9x{#`*q83^(PTn4M3GpO5 z^81@dOw--G+YHqKjO@OYG-FyTy@;h}XPR8%b@rD{s3Q-yabT2sTvdi#gapkAHC-#l zU%Vm(D>%qn&$2%+!GX&-RF~otsD-h;4qA+zCp|3ieUOz3g{ z=V_F`u4-tCxIC)|au8yGeIsiw+k`(QmZnIq#l1iQ04gm(MPn^5qhlF}D*$5ZzjhH0rE z7l+*}yU9IjY)w9CCZ;htn_xnS53YbXjoPeg&%jFJ+9NJPzuP%fSC4hBxvMeYoC&m6Qmd-)O{d?lZPvk)OD9vLuBN6C@Py}Z@j z*jZ#~VefN!qnzeZGdNIemT5m{n&(dkvJ1u0TvB$)YdXL^yhQ z+wo4P5*|~5&)Yl>WMpLa9NQXh00$a< zXd-_mv`a0oP)iUHZTypHx&CQ$6fw;yV7kQdn2+#{VZs=K67=-WMW9pEUc3C}P9nB$ zl*32rhw)cH+!mFLk*3^GxuVF@sK|5(Q!Q10EsK%zFllx(<**-@N65lNMUYC3eyBW2 zCQ^ZcEI^ml8)j1gar=tJy=)TV}nIU7d#i*;G86eI)ei%6F=mZ;xSJgvz zb>h&Vo2_7AIGt6uu>aYNjh9qn^5X^U2+BJ)hRto;_~q9t6M1_;4yD*1=LzSC(WOoP zM=ra0o*6j}7ZxR3ZQ-i=gn%j8_J@l>y1nZg4^*bm@396YRN^u@g7uc%`0Vgt=jTPG zGDa^nEr^7(PFFv0ySm&%ycymMsAG_0k?_?L5Vezm00s6g z1RI&*8Kn)sm_S_qI5MCnkxC%F)P%1+s1gspMacrB?7NHF0c^Lf#Nd!-|K+~Tr_kJo zT}PsOC(Ggi1OQM>Y-G{^#gxSD=$`d!!dl2kf>6|_6LW_VBN#w_?j&Z{G5a(4@!k3( z$S}JQQplu$yAJ?{uo&$0D;pw%Zv=pLr1pRs$TZ>6Wqt`Hl+eatY6Xx-wS|0jxw989 za87qzt5I_*4TDy8mN|u38VCeUurw8DDfb>EXASa>#{l_#0PvC^9P(B&ODIV>7zdr? zh*Vw0TBkQqgS`9;-!oy{#$a1VjAYcD|4%A|rCO^y`Eq}nPH)gR^Gok-2jibo@1o;U zcPK%pOSxRct)?6UE1`kI?Amg}u(P0!*nrUr_Tlos8mXK>9?D0m-0wy^a6nD<6Y&b+ z?%{muOBBcE(L_tiqLN|p$q1t&RA?U7cN-7KY}R1JS_b+#XwSC3;OBi<9NIVzb$$lp zxdy|er6GAk#^plvXWC5d(xC5&5(}6kp~BXkQv)FsF9-*tIMn(v^AgkH3apFZSTB4d ziI>y|OjIn$ESv%O30cZ-e;Ypab0+u$o`kdS&e%sKNCU8E+{mT6=kx9RNOTJm%Vq_j zC8nba%^Ban!R*Cy5R;`B9S(%c%{bK4s#XfsG+;t70B?KB3NRc|{zEcr2%R4E^-a)z zgB7@vBcjG|rXd|#DoRQ~18xdvw+!2TULW9`M(d|gR0RGDX%+(z&HwQTTNU|+L$C=f zEaunj0hhCnAFtjEYf)AjMWz#ZhJUC@feK@9fnQs}!0wuxk+IbT?wghr7_887J6s)| zA8qS#abaDZ^T-m3OQi{Td^lAa4(WZT4jo=zk9q9<>rX66*X?=48O0tO?cHBp*8)J+ zK71SN85^B5MkCP`8uUR%uT_lUaf^f!#AVX^76zq`IK0yy)N~IDv$-6;L0ma;G%7>W zWSbt;n@D#&n<}!fIQP6ilr?RR&O{{;XLH+|f|7?A!45x_MC)54rV^hRLHMQ73V}Xo zO{JlmOP~s^43eZjGi1LiO5`Zr01<3&)Y>9`MhtZ~aPR*4!zd;_bO=b7 z0$>r))y|Oz(89iT+9A?`o~9@I5D<)0M`5ky((bYadF0?7nfVFh1j;(r)1XF-YjVMQ zRO&a7FpcO3uc4W20b+=5XDk%ukRQPLUL?a(OXa6ii@Z?k7Ov?RkRdNJBP~nA z9-j1s#iN<&GK)j;s!!Vmx&)*u=wcJ87ROgHTseURouePHM>{wr5?jKqRf+j|#a!@c z$ab=bd%9*_!z2*%nk8fz1EyyG&6_a{nwS(bs;3#2rDp4Z`(@Rp{SkH!xPXcm;$4g+ z169i+%UyE^w2tBa69qiW?89XvDL<4*1EU&O@nNJe41@Of@oEUte9g9Lw&<>K3R-K(b1 zX-(DdkGDP_WQs{U?F@t)1XevfJji+L{g>2HL;tU`Ft9T8uJJfYE`37ZjEpA?p5ba% ztTiRXZgo#Ci(ge`!Wfw;yAKcZ_ahIg&aiZ{QA#SxU)JSV-o7bgNFIdgdh#rG0qSHy z7FfkZGNY2Qc$4(sx7Rk`l+h$q<>A2e6u!i%psBC{Peqo1XXSh9NJ%x=PapD}dJ0!0 zQH*1ppI?@i2O&+MO?Fa;b^L(#B^>^Nx=JH43+s+2>R;^PSk@oCgdL z5b<<<&18dN#YJ*nJay!G(1Zu3oEJ^z55ipmAW5;>f}XEL37=_(2&cj-G~WT(ZSa|b ziDbhcZBl(wCNBh;*U<_k1ykB+OPs1L>dH_dI4TyB4#roIhQMVK0FuF@h1m2Sayh+W zH1-}d?{HgaX*WFp=TfKWcgsPB)$^R*8_6T{28;67 zL6dbUjdLk|2#rG*&KZ^cMiHT&HvY6;K{83JljN< zi`ctQ=RXBy}d|M{K2aH6h8ckmt2PHl++99tRJIHCr7q_*q3>78+hzA)XLi zg!)yh!XVH51q-y=u>1F8JQ~^{eOy?u&i4v~lp8n<*Jy}QiCm+(0+FH;8M2grOkDBH z2yw+wA|_u>GcMN%E*CAhW?*HYHzE)&xo+N>*?s^vf6weP;Hr zkeEIkUFe_FbO9#d>RK)-s+vzz`BsB3rX zLWPM$m9XJT`1>Lc?fZ7-mc6zq)=?_S`Eb`mLvqOH zCCThmoF0nR5YyrrNIx$#FQAONKHD$*206Lc@ytVeB+upRXZ&PNEo@ru1ZV2SCd&i}dCg`0kHrujg33_Y;TJ%bri)?&nE6WR_VmFsvS~CiZQQ;oZ;lnwz#} z&`7xVEHrZuS$}>+6_hhsFgFuOrzj>=q23E-3k_qZy-CXbcMI~K5v!l^qCUtXbI-lX zQOYOI@^AsB<$GS#H@DQHEh*_MDn!&I1Np*#j4JwREoJi$D^xYP2#PyFX#SA5S zMuxAvi6EDpMEdGhnpe{%! zh5YK~m~ahP#N(ZO7GJKEZ8w&kA*h=nDDVkwH@1)skEdkD`)h`*aHt}nGtUsF&n_IQ zPN~(g;teitD+&s5wynnY?7}vpt4mo-tQ;O;H(AoG>LbuHc`U!5*db7fT)(+F?(~Rw zX&I<73NGvO=begZ*ZT(qrGsFx1Wu7Nh)soLY)S<0aABHbViNA0J;rhKv1 zVaZO~oEM_ymUq6El7{us-w1s@#CpD;Wn@tIq-}82B6Y1u5l5b@hQG>Dq}^O)VB6RIy& z-~_ti?~Hm1Q(GV7kv!VNS0tf;;nNzqVhL~v=%Vw$@&-z~UkeMfAzL(jz{5BdpH-wx z%0I9G7_N0-p>2YhKIC^|!YH{xfkaMZB(~3hOS42viJ}xTFqGF@9Io#Sa{-SEq^5F+ zu8fdPl|!r;!)st1+nPU^%wD}Yq(E5399!6GNj3OFVsJc6D{qvjU)$fA*^Ll?HXm0( z_z434p4W?x=kcDm@!c%_kK^2r@Ylodx_Pu_Fjh<0AQ+?i9ZN4u@N8Iu2$?cm*jAtWORS7K1uk#d$If;zmAOA4(U zww^_T?30vMmWxwp_fw8l0zm_9D9c}_jG&Zf4#-hsxcNSSC_Ow-6Re&9j;Lx>pcz#_ znO5z2az_jvQKOH_j4Jd43{ny)Jk@d-Sr1uxZnvyGP+>t~Qu#}12BoNiP^N15x-;MM zPfRQ?C}as_ac8NoOfC>8(B>t9iv@+`&RRYSx9!9@yk;le}udn~Y8LbFMQE{fb; zoU=~~wYQ4j)C$@NOr&h-4srrh}q0pYaJ^dZGWuH3i?hLM|V!J#90dkmsH zF0RQ_aq3aqjpPBHmgp-@%a)AXwv3EXb92J!(eLz(oslVAoaOH9n|z@kB*j7B{(i1G zO>~@49?2!Cz+<@a{;%2AQ<~ay}-h| zY{(?1^luS=mpS;JtcF_CLc_bBU=~m_S3(Z^0@72)XDf7Q5_w)fr-l))c-t~=J?^0aimOb2}`ln+++Ph4oei^ z6kqK^EQ-0$g;VY>Py=yyjH)(k{Q;=`@9_ElcndUq?kRnqVjqhqKUiW(HM6|1IOjtj zRNe{Z4}B}3^r*S$n&x<0hbl5Aj)*Vnt1oBo<%T0L;E}-O3F z$%X1Clb87_f`K@X=)!XIU7`qv5nM$@aXYc(OZgA!24z$ke(=#>$AS`BUmS$eNWcYA zW)OodIM76pM)*ritcr-l=fj18(JRV-C^Kl0t#ni+G6|fKCb@RBq7X!o$~Q9a8N8aX zhJ>JJ90&N1)d}I0U|n2Z@=cLcHZ(X*8S%ZIH8ccPndSOCL?w|C0UZPbiz;*XVOFms zgT3wap=3|7HI1LRQyJ+p6mgUCxlW|%ossC(;dq*q19m;c^+)_JuvKz~J*5mJ~7 z_b0Xuri>y~o*%HJNB{?kKQutSNgE{8ZIV1{Z7oKQ&y-CeQ4l`z5T}@>hG{4cVTX)! zh*B6aYHE~MKn>JH>(M5Ccvni|%yveK5UlCSe)#acTMOUDG9|xz$k#x3K+L+z)GOao zqim2hdcLr|@$ng9&*$U})T3o;GGp^)K`}Qm&WdbRWW*7*egqxr|4GUi11e5t9rB}; zJWbI4#IBMKhf^h4R%TmKsZ>hkS8$-{Elnr3pnZIeLy(Q4EHZpBQf)gg9T#40Tj_}$ z9qfuqh^)*$G7}sKiuh>2kDaf>cF?JLS%gQ*D(G0>m;RD2t)k}#$J3kE;56;SDtg- zb{yaOzPiV`YDg%V8x96nItYW+fWC>U8mk2Prh7`S{`fHgt|t&`DL94e4n zK?p7_%8=+VQCTxBWtQL5xZ>={1L65`CM|&B2w__}>Au0a&DKI&H=cmE#16v|G!pI* z^W?5{nG04Hs-IuuP;H~AEDMyp>G*!5xZBpY9g5w0+5M{C;d*{{3H;f~+ip0dmh$lFU|F*hSJ%BGCp{eJ;&*7cQ8Q_XW}8%Cfe13P}X!fibG_kxTI&2 z9+ymdfMLUn*jyzfuad#HnmMML@MsQ|I)CE8ggIim?C3-%J}Z>IG5`@&L`B~Ds{o~I z0#d_;lwwIBMF9WeoXDj3S4= zr=x3;T@pQ2v<{tue%hJCRm* z7xJaqXZ*wF=5LOBQ@3T$kJDH@jFOq!SLEU`bcWYxtLmU#MGymDB*zFJr-yNyo z!QM2Z=RV$}Y}O+zG1YZ+)NRi9I5}JQjM$iNZlu7Ak*5|=!}NU6O0@|#*JY-Gec|B| zr429s66uAv-KNl-k}*79F)#_$(=)Bd8jA*C<*@KfJ^J7;}!+%I~4)OI0ho01LGJTKDAq6iJpCD(U(oT=9*IDe1ixSJct zS#FNL`FICUPQ>Q}mZdX>Wqa`D^KbvKi34~#L3{$+`WL=(My%X^l&4EDu#{dg7!GHU z)lPpfgYV6i=~#E5IpuAg7Z9*)@ri$t=eJ4(WA-@`2Sa_E8=QuY6;*gON3Ok|ainB$ zl^`K_a!ajfwRCcQWKa(rL&Mn*(lf^GPH8*d>MR6Xi)|Iq*;p^WYAO6ZE#qLejZ2E>}E|glMPQPwksP3*KhAdVoK?ZF3l52 zJ6GbE4AXXIgBqTqV?yw+x$J%0lk;Z#Z>0q`x^xJBKuzq?+_%v)*3HMZ&yUyVhn5~6 zbf=W-fFbv~9Aa)ICl4ZCkKCmi%C)qX)<4beB?mXo>&0_VbER5Rt5H^Gg`h(iII+N& z4@-P3>8cYx*>MG~xzd)?bet+M7Tpo>336)MxOJT5(0OQyjBLNx7@1a1b)r>UOq?d> ztx{%#eN`6f-1V&>nSl<}uAPEo)1D6dX1h1`=k)37ceK-mUbSj0j8-dK~d+TCemGqwEs;DU4bb7YG5zKkx~3~#bi6*W)zZ$So*EH+32e!;zG_kBjC z4mTyd?}Fse)$i}l-dkW3dd*qSg7(ibZtN6+emgfu=rWuXCpP zZycjhPEHAdiRa(T_D)kfIv=#Qkm#}H3g?$%k*SK2h4%5;1H!N_&d40_iCminysVsB z-vG}NG;o1s7%>o1;)lsRhuEZi1d6UBw=U-@7Dqq1e}2*9?~fktM3t^>rqv}oR0RYkSlWAX!$;oY9pQ!_3rv!sHG zy1wSt!fJoI`RiUS-;rIFFdCViGBzgO_JNtUwm2gd-mqM8Nryfw-QS<&OISU>2Q|Jl z7hL6Mjp9~+Z5(=?Hb=eA^lU%cggp|}hwe2LIs~jwE8^kIuH!v!m=a#dOyaj@n%%Fh zA^4XXJFm^DeAb+=@5C`wcy*D?S(;a@YI&e_dp_gKTucv^>E*aATiROIfss9TDjzR3 zd?HMf%Qk+GZhph>kDJrm{bAFFQ;c8GkG@mgqVKaCgyHvbMFrec^zEmN(uicn(;MD0 z$ZFF>^r>(p%HhnLE+hogT;_un6X=JRHa!> z>7amGIVm#w^27&!=^_4rY6JY#xHq?j(aPsP!%d!*A5lm5RjEC zM~HhfGe8N0RG0Su27|pG`Q(mY!l)Gz(U?m%^7*$SFIu4#{+1Y?B9iH#=BRtO2 zB^iw)66AExq;@DlO*^)_X1eXhd_k-;l>c;%;PIF*@2R*pU#HXEbronZH1uye164x& z9vD*`aO|EzVpFW#!;L>F22zXJx0l<;jk98K*NyP}!~cU-W{uYFn>|33uDzC0Jr!>v zb_q-}F3Z`6B#`lHIXe#^I*(s4QrM~D2LuF_^5J&calF0hOEMLVO%Ltkeg974nVQ-4gy978eit4a3;LT(%K0B zM+?xvxPhC_PX)jkqTNn{8=pW=Tr=;in{J=h#Ke)I0RP8KE#efum*YlGRjb! z`Fed2z#ECNUL6|P(mz2=CN68k(aaYgP9RxGiJ6~U6$6A*pw-$|Q~>OklT+I0!N(F2 zr??(B>GRBv8I1g;8PQ0i8N9dxEtsdparWR^5nUGw_)f++M7x-Fp5J>kNi>_Iyw%7| z31Z{@%mPx9j*Uf;MWip*MlXh06+FV|R6~M2)O3?m9N+^|5CZ{|xlJtwt$xpBbGmvy zERT&raF@Gt_JWY-5UhF-H(Xl)BDOrSy9OIL^7tFYp+=nd> zvM4v7j>)O=e%3KlqB!#Fp{Q+?Rc+}LnO^_fRmHMRf6(gli{H!i+tV-~ZzRWfT4c*x zoR2_ouu^DOZj510bq7E`JSpzr&$Ho#8~N%uJ=we;-C{9oQ*2Uo3Io<~8;XI*8bgD~ zt?Qy7!dcQ0=Sh`bL|8Hs9WRbbg~m0A#7}9SfkYHyD-=acBC&?Z@C>EsZ&+GDgA^z) z;)$aaHxfJ(E#60rM!^EENeQYPZU|E*gd-lD0^K}A5RMI6P7m_kHJY{5W0bbgJRAy<&rqyi zE_?LH?R5LGxo)=um;iTbL#YwuqSKCts*1qZ@e@MSt}E5f+kxbrd$8r>N{gGNkfz>K z9+!t4@uq6d%XSd= zUF9qXfl2wC;)VxbX)e z2)peNzquq#y)~tyr#quNzSRAymUWw^BeA2~`&(tooq@=F)P;LQ^rqKOnGQKrS&dYn z9T)!k)XDfuT>-KX-Ft8to^MjG;BJ~2(6Xh+Gbulj^%I@y^9kglwIWyLtG}zN&$9qt z=X(EYd%TxlYx2I|+mBNSZV11tFW7C_-#)x?$2%msUocMHkM`4d8yT+B@2ft~C?U`v zXKOm7@o@}K?eGlx`FICsR_nXpA`$8@C}Vr^*TzGA#@lXB-5iF)fZu>Sbi+F$`g2&w zdgUb#zRybq96^oUTu{XDUKs{Ma%Dmw}aW(cSQszGBTq6Z$pzX2sZ za)-?=K)`*QGB^!LBq$p#FZ1YYQ(yjKnp#l_6bs7N7A~_s*T|m5zyk|Nc|Ji_IfXF} zir8#bW{ROEfSiJ3g!b6WO2SQ70bT|9XOKT}jDX}0J+VDb01diJ%~Zn*UX_kp`~l&nsinU85j}EZUzY znGpAzgDKxHf4+p0ngxy)sJcVoUUN}D2~##O>F^bGP99N8Ca9dt5);RL2D`O0K zK5ugY5@i$x=>PVXXAz9aAyT)%tZsM&EPJRbUuoaWeVqyjMyNn_AYDB{I)dV=Yvk@h z?GOOcg`}j{-=t_tqhib*wP75=eem9693itrM!U?4n!yDfn{!uTq9@79+Qpl6=ZT%{ zCroldLEXZ_v%iVG&6HtI2_xF@*~7e9dB_MxUs+LJceXK5mA#09|IG` zU0*?fm(_G~S2W%r$>5Q9w%&RC(v;*EAf>Y2GO!Jzs70QN>n!?nzqSf4RK*%9( z=ifX|5Z{sgri{?>gLp6mePAml_y@sKwUWAdfd9(RNH*NK;PSN5^s8T_Krm_ssDXzA z@6eCPQmX%W{I?52B1xWSZ%2*LIIG=)V;9deG9pLKqKiC?>HCf+fv7@%PHp1p4Agqs zN|~5^B)_11WLdO(ux!+Fjgq$hc1)G$7 zjn@ys%I=d^%S>2E6Th;@p6wLF*7QXU@A2*YvCW4dNfJ+0E92sUuFB{hzj`MIA0Bs7 z%7DY|^Oh8^vl`=zT|uzht)}hgZil+xCa3RByq*1HHD2aMYiii{gKD3pn%xUNt?wR{<-YJU2k-NgAUfRKDeG6BqKCE`-y=4Jj58O2vtQJnaozZKQ&#o z6%)%XzPV|)^V-s+kimYS>1|8%-cr4@Va8Ni>l7lL2iy(dV+%3BCJ^^tq>JH* z5*t7Y>bp3{ogRaTY)Q)^Em)3_3r;TYt*ihX?~b(0jtZr6SQr%Uw+8j1_npB;>NL3{ z59y1I5GD=@I+^Wq6<=LbI>>WGU=;qo(cr{TK9tzT$eN5^sZ4s-+z2J#EuMlWMie7`%2 zn0NtXde*WCEF6GzcR9!NRBV1$iIW+A&HH&Lr>jCi4!!#3FM~Gfj#>!HX&?TNLY>Q} z#1s^OgiHvwOt^}`mX9{HEYdSRKgh~a(T2LR-dV&1!0wYx!O4;gkTl-JcGsEh!+fchIM76-oBj4Mhl~+`LX_#*+A1Jh zm!GDFC7a(WKmU3ZJu?z6+RO^?Q?r~2iEJU$7=*W$T-y#PIAs;!ks(>RV%@DkrYMK3 z>+J2TS;K%gh|vj|FQxRXPB1(i$*PkPK>*(I=I=+b3BvBfFGom=j2joOFeD0it?Jzx=%*HU`L09L|nY3shu zE#rM-!@jl?wC}b{QbTIK`y-ex7;|FMw-DJz%|P z-UX2R)hHZDi<-fD5{EzDEyefaf@XeSF#beeCAP)&VO79S0SP0Po_ljoD9eZgNA4KT+XeGrmdfY7P{4nL#3q1Qhsqu6H98pxt6L~b)IDwG zbRZ4dl=w>(oCc@iK2FnOKgqH*(YCq$OXv;2lDB(_ayNGedPuHIN1cSRiw645r^*Oz z>_!CJ&eC(-oBRN~raj~Cj>M0h`|{$sg7=Ajisu_KYo2kA=Rde&XSW5cckZ>k1MSnB z{e@iLFI3nzCWr9(Mpjnww(|K_2P!@p-6s@4s&nr*z5M5P^$Z5}to2X9XPUD*eCvRs zZzZX#pKr9PA4hnsY%BBoe$4^jY)?bNC%sSks&)g0L$4ZjRekRXSbe>~9??Ebo^Q~mXV&&qTX;If=;{j@B4p7v}`w17J(&5Z4g~7x6$){KJ)Rpz@1^uI3eFlYBwhfaPW?SQ_iD@R#bA^4;}! zyBhx)J!p3JRuG%2`@`o&uRT?zg=gRZsxD=HP!8{v*9v2EG>A`2mKOMru*@|EmzH=> z$J5V4VX00_OMh;DH^k-?SYw$*{O|Hc-{eLIqzn!)*u1~1)6lf8uS1H&onG`_9239` z4z<`6Iv&x-UlykE+Li~aRO>f2&hglDv^BE=Vv4`(>y6afKW$eRhKI`Vc%^;3x#7gr zDH)o~5LCUmOr>Df)d0yiLjV^;!19J{O#@6v1B#g=^5IDQf(J~QoHXP0AFTn0sC6I= zfTp%H#U&_DYvkf$;NqHpc&iMLKZJ$dU#UE${=VPQk?yvr@|TB)*x)A{k4$%I7{Gd( zJzi6xWtB?=dh)=74vr|=>ivNHss zjk~~x>|!QC1%;zU6(4UL7iQ&k|}l6+ltfMh|}AQ(+0NItMdi$@-KyIN^O5wpXH~BlM*x& z>bfLWg0Q4T==Ib9AqXZM(Z(I9uEU&{L5tt^CQMv=$&?l3ZR)->`tf%og@HT_dwOYH zrA!bZNC1@U%Iq2n^&$`yPH+HyIQJ6=7D%D4*IY!P)o#2!dDPG8{4F( zYZAiq?OL z+G9Q0TcEC|+dq+88%y?cr?L7|)mvYM@(|wlGc_z{SAH7)hwhFOt)~sa~H3xK^Kz9OHI6QkQ;Mdrx^GU3bwN{iWTV+huWO zjmcpbnyy6|_N$HpCky?X6I|SAhx?3f-TpXS8o|X@m?us8b;YJPh z?^EU4lzv8kj;+k|*n#WrZBM=NS)13J-po9?Ju|i*w!3({4KrAHEjc`5yaXt)di&sR z`aG0TPOi3ud-Xhhp=#kBIYFpBtcmqbt$iEgx=8Ed9(>{R{5i?=?B@cu`F^}!^{&YG zp6apYwXWvweBfOucfGY~yK{lCDZBcc5~5LT*>k&xG8g0jQa>=d!E^1FI+a{@qu z5s3}_5uq)2Nje>$5QV0>`|mDvqUD32c2`?ap73xZUp0W8EqKZ#*yY=o{PI?%d4R1x z764(CSR<>-1=((Um@H7tToyWpAVg9X9a%^rh_YPeOnfBBa3Q z{{3;7Q)sd+sEJOUXElmUI8F56)0h=vxqnqsinZCDJvW2c#PnohnO_>VQCUOCSBp`r zJw%mUx5{D-ZluNWK0l5gnyu?60J3&gqS3tu?Ne=n{nEL9dtedrKL6AnI zRZ?!cQyKy3?k?%>PLYuA?(RlPKeN&bEs%!v5+a>q6mN^ul@m{Z(DB| z0!H`DjtOaAzgvkck}I9wiad9OYL1myZL%2O<%~ewQ^t9w$y~i6ezGiP`q|(H34Yu9 z8z&6~irS9MJeaL6+6gg6ZZMr_^HjYzl5iYCW>y1(4!~>~W&Gvm>FTh&|Ek%5uGE;( zZ>Ge866B9^6u%n3=WRODul5ypWa6+W!PkH7Zn23oto$@X(Sz`-%>BN2yP6)}Hu-aB znhK^>CGGRCz~~4_Y*|F>;5|s;J*{Ma=o6AT%@NrM`;%yt>)-bp1zDEHLYco3T?j?hWYD)H56-R*b1rsm)Pan@!G>)P)%Y@ zj^t;?U*&mOhu5&gZ5$35GS9zCBi=oJ&j)7ciWvO6x#S*MwCa(FWIBUm|IeGe%kEr)DtjuPV1GK_@Na|K4Ue`D*M?4 zdPo@|?fc$Ws+ffmP(g_$u1dp69u~fF4Rd&KJzK)&QK`>XM@%kT#XC(}Rx)-|!8fKs zp;je)Evj8H+R7pWzEB-|n__t6jXOeeS>_xdrlRKYpl%VvSu;TpNT&n|z@w)gm5hrIvDns` z3D*fa86Y+a;Rgk+s>FGuU-VdlL};txheF}rL<>8HXV~0upU;|II~5iUF~mo!EI5tccW2+jbP(!Qn!al@C~xb;e{hq&hK`mQuXNc;~hSC_ZR#T zLn{lvx9NF$`!Rmhk(1B&=R{cWwqcnWT%(aHk55kv|9tfsn_9X2H?;V#xlV;2^`yAV zy@Gt6K0kCk5}>OTRxOu%yYYLhYpk>filG_)+7ozMpbk_5JEYwyI5kgwz7i_}A011c zqn$Awp1*bX?#L)%&<~aR7%9t6yw)y$Z!*2>=pL84`dwc4{*TP3;C`hW8lms(_ysE@ zv5dAb8CAe17L1sOJ0XGEu5W)Sez4P8XD~23Cdg*U9bFPEZ@~w10>9rCiiI+GZPamv z_`H&?E3IlX6vkhCT^3S0^+a21V&a$UQHFC3>_!Ok0|UUg7{%KRJt&uxNqiNq7n0@p z=%Kzn!bhy-X%QNP&y_ge^4{C*41XZClhLbD($N6smnMJu7dbWutv!+P$l$Dfg6ovx z_qey*0hSmXsL7`CfA(`2td|dXziu$_vcm^MAD;`TAcqPw=Gc4eS|fcmFHDrr!6T&* zV8H8A+)x~3)lq0{AEy*Tz>phUW-t=z;K?d45!K3*Qn<}5!hmmUqi9pabaM!E4UjH6 zIu%&TQBc~QWc7e?6>7r-VMnvLq(R<}{X1?L2Eg{tX}+ev2aLEG%_j@vjZ(l>?aoQu zWj9S`(C)E=1apkTNE2BX2r4ypv#CWf&#l4TXYZl0ja|<8>lPKApJs;e*0A zC@>qI8(x0fCO^(wB%#zx=_@O~d7y_z*Bf1f@6h~5Z=KuY3DPL$ePM5d_E+P-}F@`R^J z^J?S>5GLPD^fzorDe*#VfO>mvViG?OpN5OUfiR_)vAcv?o#l3s4}Gux-KePca%YSN zt7PaCYb;Ax2AblR{yVMyJ52+kC`NXX@oF{8SNIZ$xUeWcCq9|@&PoWfx=p+Rfo#~s z2bq+KxGY9owDs;{-yk5u^FZHpww<-!rX$cg@jN*+JbW0jI^AU*As{f&*t=%l(N}zr zdpkiO`p+L`n$J|@Od+qth!D&fjpRBg3I{z%vEUHmzM%#akHdVh9|JTeb{$H_+Kt2Z zLj6iG%Shr3c;BC#hNuz#Ojmc*@bK`%LT9pLnO=*{-XM&ppiNo#}Cu>50r=mGBL z;g5-5xfyIep5Ks%ZxQ*T5dm>M&s&TSTO(rN_~K75!mV>lH|J{9n}B7q-)D zZJ{-S|KntddSu9olhs+06ix5~&m+Z2!$g@qH~jMHCv`pO55r}Ln}NFKSQT;K(9u?pR;GCWRVR_*)7 z0{n`Pr)x7Dzw`1PiRB@AZb?|U909MWEZv*CW13H3EQxx5rPgd0G&ZB%QPHBc?9Clx zefS03E)!c%+--4>xU=+FNNGOpB?0WsuL|U6o{>E=+A6Q{^LaU6$z8NI8K)s?!Ef(! zzT^M~-CwNH?1+MkND-Q{N6XD=SdhhoMu_>0Xo79?An^>#Xtr3aVcH$5HXn>}m>|2P z(>|#t$bRp-CPn@AmXiC0^4o@qHb3DqVUst^ZAx^%B?H{8W*@@1;?O{Qq_@mWbPi6p zQ1qO<8cW+Y{z+LYqm6)36~(M(wr9-6WtIN`<;Cn5EcFUrE! zL))eqgV(CC8^PL*U!kmMp>D|YX_xP`00{l|SXMl2tSETixQp&AVw^deQ_U=pB_zM1 zpXSkaXtwVbYb;~r1%YwokE=-bcbq-#2|sr}Lipl0fgfcsI2lEj3(*zB-=>I1MnP=# z+>FyYWB$|yXXjZuqKgT9%&%S{c7ia8ck!YVMf+_f_I)(_JOv|!L6Q84%(N*JU4HI3 ze?71J!Y6bh#!W<^8_-}orNI}zb}wQ#H&Q2l^;UE*&_kFlf#TRnmIYQw zY9#J+^!)e0j|79kHAds4Uvrr@nNlV7>h{0~Q;19`U2(zW;l9mVFU@g`2DC?ylkox7 z8aI^s(nfy(u**_lZa1Tjv|J(6AKcKU5In%j+@CX(w`fNtFr3*1u}dZ{EA^ysyS3b# zb!M$dzu{zz!g#~ZC^nh+-in1sjE3^C9Ag?ol*v|ESh)K(wC6%BKHkmR-6!m6W~ubZ zQq;waRM?!rg|2++YB-Q*NoCAe2=#XgFMn+;K|yD4Dqr(NV*~>8O?a(--kAGov3*7- zb=--IwUDH?9e&5S`netxtBE?UvS{-SZZI>qLSczoy3Goo?qkl!U2k>soTerQO=$N*Y)5vi6+8Qai*4n zn#rEUxge?#LXNF3IVn0jI(aAhD?49atpbu@M$9N_L{?1oce=!*CX@cLCQMi+j;2&N zNu1U~jBp!(ZQHl4!!*o}a1yXz(^3`bK7xyr9kUy zRVjr@T*&s-e7dT(2=P}!{Y}O~2n9SQ6u5ulT{h`DcAB!Mt(t4@QEhTQCV;90pG`(} z*T;@44AT9HG%W4~w3lXa^~dkY#dJovVdJCW;PODHyj@m( zEV#B)pmC;YPKXsqA&}WBn2huW3miH-a9J!pU?7sHEW{3|dhMTg6j4oaET?RA-+f^| z*`oJO0ykSCTzeV}e?~ln?sa$z);eFS4bE{*AqeVBXj*QR^U~D0jhYl3S$r|vKG2NQE++*`WEU)R|ybK$*A$>)HxW{^a&1T9hhEyu|d6MCutj_9MLC3&V$e{ zRCR^;z!wYBO?fV-D&&#JhB=qVTwOT5!TXG}7()X|pg#h@}b4}w95yv*A zknlB@bK02A+#Sz?m0>JNC|Kge0typ(Cj7407{BD$o3Mxn%y9<#x@;mC7a#hqgFv6w z*ap#Dv`s}=1qupyGqFK!KB9{${@vM6ChQGm#fhxnnHxpsCU zs~B1J70%mt-?V>c;-oTTjJ-7ufCcBkP*xGM&K-*D!3QQ;_`5E(FVw)Q-Gr_RTJ;iA z@`u=kDowLJ7eXD7nqG|AlJ;-46 zeC`OYdEJd&3VoZRf&y8U6VQxN>V!hFiNpl8Srz`MnE0(iK~uhU@O;%0xr3L`$8H+D z(~b%5iv4C%HPvt^M4VzLUVkz^UdkygKJr)@ajR%?=5acWq@t}9=cg2^Mf;8>g}ly~ zePx+-X#0+n#|pB`IG#vA(l&g^JANtR@31n_w&=cK!z7I!J$7os$@oPZokw`G&?h)H zSe7DUT~3u0bF#enLG{@2N%bcpVz7KBfnwS1+nj)gD@}Va6410C{;}=s>D`%6+v`Im zB;A3=a}H!v2Vd}5!IK-Ncj$&Jdk$M5@x{yxVT*wEV5L?OM_{74IUV{cag|R!@Yzh zc6Ov>#(^B6?FguRmX?-4R$sb2Pu%|sieROfie#p`?&|6dMU*bf|7=+jkYAz4K!U{8 z1W*N~8wlR6kQ4d}UR0@XR+2_V8bW{}i6Gt|40#S8Ea+%IN{K&qo2^lo(5R|x$;S#s z=8MYFtBL!znYtU$36$sz*i9$)GB zh{!mBd@oZ5y_k)&T6FCP{oaJ}=*1HZe+woTA}xWiayhyIJUcDzKI|Jo=X4;$)S1VK zdD;<~2AcxD1(lOdE1{v+g96;ifBc};{v$xRF?)3F)}jx`g)AnA8vYApG&)#ckP-tk z$xevi@Ix3U(1i?Z9;#sCNxk?s8yXitV{1RYO5ZP0IH?FsVFek{KA;2uch9u?TP2lv z%_?si7-B6(Qw-n7MVE~*;Hz5cushyr39NleADl>JEN>8iv&OAtSt?QJRD(Muvzk&v z3#4rb2Uq>|(l0}-S0ifzIn-%PB`u)3F;W!i!V3BaNsZa%If$C7w#H8c>%buF9lpT|x>|v`4bdOgLSH zq3z!wS$)T}kg`5RBSz|>{MRUIHJX@MLNlvmvJg=Z{tiDuzdQo#!nryc3Krozo-(vF zM;P4bPChAyzfY8p2k!XZUq9kaQUsZJj%_#KJ^_IQ$!n41i8{E*p1kZg3_=&mLkrlv z2d|WeZ+jO|QMH67?FLm=E~0`)$S*7(-yopSsHtG;$fJ%=UpK7h&#>9BLjpC2OBZlM zY;f;G5-w6exZ0ijwh-7F80sA1JLLPWLvEERn=8|4YrD#s|krdg8+#w(P?weM8 z2f;uVIUW87Ig?-1th9()MqJGbm97=5qv$bR1qi_cKgyW~CL1+Fw3QtGLIr9jM6{gS ze8SHG_AWmNF5&EBUNNJfXvNQ(a~)LUEz^c(D|EugC>sDLDf5tUHHvM+&f1iF?OI4y8P~4}QxGY4?f6uwpIs(M7725LkQ?F5& zE-sN~QaHDQ1!T}h_goI_HIot9?kvdJvZeUF<*UKPi-dm?n zkKPJ4n&MbVBuA^B-B?|>CdA05j@;7e5$88(;~Q`Xb$BcgR8E3r(oIMTk^pZdp7wCK zWMR@Whh5_b`=nyzKTdI{InMArUZXQAsYM;g4x z=~<)D7&&)_@<%tP3Oe4A2nY{9gUKySj*O`(rSqb#NCuJl_F&S>{Dm50nGB-+E*zcQ zf&ybd2_Sn7<149wIXs#wC(_bqimGmkeLoT5dh-ei38SVnS757F)_=!6(|E3S>PuhR z51PBbhy)sKUcC%qr;xLM3y z!riftx!by(l}~#Yg-ZWgOU$0sr}U;?*)OT6)Rew5S?QhlHIPbz(Wd%8A#+WpT!SRj zrfvs8{a=S?Sz9)f=YgMV_5Fzt`9Iaaw}ZgD%$&;lzMzCp%%*D4`yTY{veSni;~3W0 zBwkNwGiiIBX~PjZ>=0sV;aFTYJD z_FTAEV#tZb@N74T2RVR;#);8#_Ryt?y=T*xaa158EZx3ZUJbDv!%N}BPn4ZAO?^sTQyhisgA$fO^-rYL_T@Wt~fa@&NsNc88r z`QiMfgB3SO8i7bXN|;7dJBBd{=~Wz_fEQbGgiPaJBE=>52sxg% zVhzQuw<8Pgl#fHeNhxM!b<$fPD?-em584i%0yZRVfliYmts0d*51v_~=ruzo={99q z%tB#!m)gVFE*u(}Qzj3r?%MI@RY-cLe=wg7+DQVs7_7 zJML$A=iJTw^Zl1blQXrhyd%y#!cv)2Yj@4jw3RihqkC=%lOped0`6rh>zDRh4S6!> zxcpa+5%;~9&sl)DXRCaC6Lut{l)-M(y_J0AKDSLPk5c@?p76TzJ=okD9fg?^PWasP>NT7&YqX)^-z; ztHk$I9iGsOlL-t3uihvRJ#41Z!R+UWxL&-bzIj}7EPd>-+RK>lopu6-fAN(L>0JRm zY*p)o@l2IH8))mSRaY7j)tmJZvQJY5b8;b@65ln;^#?QM^`5*x#FM)pakn-lcXao*(Mk>2L#II;cfA-I`>0uiaRbuH5 z>}Tu*fQ=L~@eS0fEjaJ~=>Fn^fy8!bz#XR8F)S##9io(_87=B3cOx`#`3FAW(a;fC zlGm+cjiY{gNk+jm;Sg8*A*U0PokaEQGPPA5s>r?LfmZ!702Mx;2ISksYD^B_*(1`6 zwEL4BaoL=b#dz@(0hx53_>SSkOV}7C|G&9y2Y&nsgq1T+b5ZrKq#BvzudM8nAwXr5 zi~sp|DZdQke1XY5Zi{)=8v@JaG z2cy^#7Ag=gB9ss<{CuoBcNQDS!QG0*z!t%1wE}tF4W5DRADUl1uWoQE`+u`&ZPgUP zC#dnxDM%kXe(R3?yS%o4nHOaJ^E*iN%{8%6T(59bgZK+T2NetSDj&HRA z#CTg%=bXomx1au~758eE7rFRw1P^~+^7?J%y}8|<*JWJoQ&@h$kgFLbHo#=8CI>}8 z41O(8++f_?bj)H&h)U9OmZXP(FMZDu(o)xfsbm_q_Y)V3n>x=x|`Apx{Yudmvju6z50&#^Twsz<;<(ZJY{fj(dpsola^XYn*WHO75 zX7P-+dznn+C6Iv*v-wAg^CalNJ+|WBl2*pU8Vl)2yQ}GE&QQ{IhQZKMiHk#u*uVyL z;gcP{#5?c7Y-8oh)2XYrb8fh4q}R41b|J?f%MHdB^P+I6C)&4rRI019f=InxAmShK zA|AAn_7mv89`p3?!C_ba87NWn6S}*SD%ENV7Lgz@6mq!GV|Vc`O_;9yb0j_OeXSS2 z+!Fl5`T9X%J1xwk;8bs#dxGg;3oVr3-?~G0k`Y3|pDh_3*@4Cd-xoM4g!%W-K}=B; zGD`&mrHA`P6rFSQ?wtypBm%r(DN!dvJCxun@y|M2I@W&*(echb<{y0C26WSCZB%ZY zO1I@p$|V|^#F|p|oMYeV|Ji2Jbby7@2&Q*Ru?*Cd>=YAI`=UL*T2u5nBk@FV!BAp& zU64zAJyjgIo%9C`H2el}G>z&Adw^MHt-%A1>8+Ojf^bz&JJ)?rP8&XViCvEnVhM`@4U0aZ@E^w219tH3G)w%y z$8h2G+#9<`Z!DmV|?rM8KH zu#w=FXcZhVeUkg|+>Y}(!k1A;c>$)$G}_G#GO++}`(2fJb+|A?Z=q*wyaS)`j~e+y zCEK}dS*PGPi0SREAdQC^ilhCGtP-L>3D<1Xj-pEoIbm~n*h(=(D&Q*I69$wBMt8Or2YKhF4zKDh~#9ardu*KIEr+y_?3 zl6r0(5He|~J*^5%^O;1KOA6MdNuH{1CrrpWbXk0r!BQQa?^G#<4D$web^j`5-_fkD zps3*K4~C8SqWo-)Ak)X!U<1D^tMA}A==Du)B*A;zB&YuErGJ~H-42fwzEKi{}-pb@J|zx_M%50-h|NQx>bL@()o4=!Hw24Oc1U4 z;en0X$8)v_=d0DOPqlLk*z(nbseWx|!SbNeMGF9RE1U5-_e>h$;g@iDmA!Y)38YCW zEC>SZyLZpU(A*pbl5^LxF_u!aY;eWeOCsd9K-D1}w_~It)z>el#Ey}R>qqdcFBR0( z!~_Lj>fFuG{H=p6mpFoZk{)?I^SY@*&f^HI3xzx;U7h6%tpS1oJ()pGO{nr|)+0J8 zYV)@M+o8{_`W0gK1q!?RDojw1z|l5gK!0zZr^_?nAOMAP{< z_iIi9xDk@r6Ajmt`ZJOzH1}-|Fb-<8-?_5yd-vUfZ9yh-YH^YKpRNtMEppY+WVtTM z{&HPegbQao#WA?QQ9_laBD^yl#lnSB@NT!_MG1~PAO1=5+!8mkIqWVc_EKYHQ@=FZ zlP<~7VL?V%U%RVg;wK|(W=oQr7T>A)!D(eir*4#ItG#CtGKM|HLPTbkILczl`eXaW zbB-f7zn9Gp=k1ZwBL!1V2pv9Vtm+MaDd0~88ziHOl(8lma)%r_)^6Dg=8y}2!>ECM z8UxAgu;o~TbAW@QLlc*;6;;QS?nS5Q`jz;36$6<$isUE4U`4>4Pw1Nj{hfr1&xgVMN*k)uf|3`L4l zv+NreOiC(^ZK2qb`^af8Tq<`eB1(zcS-NAayIxPmJ(2>f zo`E8_3q%be&JyYQC6h-*c#?u2Z2~o6tpCUlftV{fajt6GL8 zi@NU=&32snnqoPW@!nq{;*=2=G&MD45S0L*&EF0Sb(Z@WhAqIkokT3T!=tvG^etsHA;wNrM7!=*j>Qd>b8LL(@77FnDMOUcz3n;()>=W zlIyklv}X~v$Uys5LMw2StyEN_BxJ>I0GKA`ltt~lBVFe>leP?<`;-;lAg&u;T9=SjX!R(zo*n7at^o2-G~ws z-^6nQpxcU*;jLkQAaHt3VaN!E*a`~lRE+0=PG7$Ia{_+G)oUQa>rqA1XITV8sn-2k z&7}edtV49eoN(H143?avYQR zxpUr=&h35BC!*hBf@9*Bm`mls8@IZAhDoVLg;=ZUwG?Mqu+>>j>)^s$v59!!N-aVM zuMZiOzp?1w1eg%`Kryv#AN|w2BfN!kClKotr8Ytg#jM1Hp-B;TOF3QZ(GX;O8Sp+H z8gvC?0d(k@&U|6%4wAKrg$3mH@n>nO>?_hBIhwVbRl$XO3@f=z8Mw3U~ESUx@7p zUazJ34r%vn74C=4s@&uN%b21mrE(^gZ8FLH-FHrCl|5%J^}6;f!gO{45JrAE(SCF| zyo8r^16RIX#66@K-&)&ZNx?_G)7o-VASWG|&FbmP4l%+joX&ov z!v~2C8#E3vjET+{;V3_vxe- zL|J6@O$No@DN-Od5)o~{dEk9J5B&2s4*&tgSs7ba0Gl9h_6bj%6rvBn3rkR%pR1^J z-_Nzg8zQv&dB_GFGXMIcFZ?ja2@4CmKTG%pvl@_Ov>aLae_{?7C)??$CDPp4kWy)bJFz3{j4eJaVwuM5&5iK1w>3|SM&R+u zP{fkpL%LGw?VddLv`&xXrBdW!?ymF5*}=xX+LNL}MoIi9hSdKnj5=OKM}IE*Y-`Jw zOYXO!_uU@c6UGm~v-Py&{|zF(xKfsQd=h`GHi?_5+oavB;ZMBtmuGsjxe#}A(J*i7|HeQtX-qA7oLT~ zJ?j>5;>l2fW$Sf(UScMN1-+`pUf&n$H$T;Wf$if1o6bHIKWhy zMCcKwoW9f^!FooTBU)VGFNxlr?~qF!(Ms4h=F9T>B9$Z{GKUuOH88#jVyNc-opRfY zvQ07*AvG%_7~Rk~i(NjcL{`K^h#(lMnhih|j91U!Ze=1lhKbrasAXH6Z|6KlTWt4& zKU()*UO_?dxrli@OSr4Myto*ho$YOM+!wAgNMM^u;soy$W>L(*2;g3b+eqBeyX)Yy z<~q7G}% zpvKFA=6!y;n(GG1F4b$)+;a?^f!5x7Jg-|Sy&O>K&@kV~-2E4Vz(VK^Bqns{1%Rvp zS|t7^Pvm<6GUQ%Zo1}NL_vfdZ!e{>a=UJF zxm`Qb>`p_oR;4Sm^+uO2KMk>jq#|biu9=R8O?&U|hR;TKzhSjzR8k>@W|?^|)>}S5 zR6e^QGe;i8jb4o2k2L~d5Qj(z@xHtxC`B_7j@}8ZQ7oU5r@@Ip!ozlGN}3s?JPv zY6*zZM5|muogEo1N{~UveJS%V7vRSDrx`*wP61N&_HY`PZu0c>Gy01iR!#~mzFyOEDeL?On>T}6EK{sfW(=^#u_qi_-vOp0tI zsLYV6A!8OC&GHTbCXU@QiN!J!KljhY%YWAaHT?xr+?_9}+GLafq!g=Uh|>+o0uHJ_ zX;SzMkyx-SP&rQ<=|Q9(iGu)*uQU!PAihv6T=#i1Sn&M(d^rkWYyG_7UqAh8pBais9QA1c z$}W8*OQvxZ4IQD@WA*!v{U$dyl?M?{z=1RO)$2<513zNIJMafe@aC&oX%v)JxaPN1 zhE7xgzd>386M2Uv;--3mY_z;3uTQ-2C;A@*e0uRaBT1$I0vm#R)rO7KVN9j9x@Z`% zw7PJ_Ad&urO?fV%*k6SV6fVt+UzAJk z1P&YbJ^)dYTDnz*w}WIqeo7!kuMQR1jI9M$34uq8COFogi)693$)z4kx&842z}Yey zSZhq@9%8he+{b@k&d72^BW0IksvAfQ%530-r($^5FN51Fu7~AaPiY0=ZWxQ+(~zCb z@U}be!bBERc~A@iLu#mr7QnUe^eyFkJdJ2Ly2-FcdVW+O`tALjk-+$MR}Tym?6MjWjX#1cq#S#PIBbE!PmUd*crICur;xU9>P7-yt{c0q5GpZel| zJP&`&Ja6o?t%18bV9xWrl0c({EtnKTvtLpfa~mRM^bQBR`!tuZGDr7(+4Oo?si`|P z7f6#MD=~`1I*k+*>GlYZE)5*kuPl@IHUTjc&<8CqFOQJ!14VI?XYa^=PCy$uF|e2V z&tH7?NJu3HC6YagvSY)v)UFoF(M-Dh-f3;5S3|_q^2q`GjF)`I_LByV9=S@t`h-RT zy+$hSNnNhp9X2pRlfDj!{t{M#ZFnvzb3yvVu48jVN+~f&fAvjFtvj-(P^(Rdp=0#s z{0!ZQ)B#y+J(my+Th>p93C{R^@MG$9MZvm~dGln&1_k>Pi`8~6R!^V`I$_cf@Xd9I ztwapXW)d-SWu2>FCn-mZYSR3^r$a#D`sFTqIU5W3=*s<5x8Zdh z#<%p;tZ`kW&wa(nUn$xqID97_?E$rWriqE`l=lJb`k8GlVdXuly!Ygf@QAdAzPJUxU<(82#jszr`-ACR9U56z<5{$4#%y?gb|mVPvu z!`|pur9UYtDX8kTA}^;ktpAJRKCkjl$bW1uo|ilTg&KLzoU2(CSuHk#zmS06k4!9< zf=NtGH~}J%eWiP=uS;qPPZ4LB|Nh+s3K$X@xi1?are+8$ERz2Y~Ysk^8QrUOIYx@VC z3NvXpKsv2RA%i6`m%`(~^`J&;nXYp{sX|>L$;t#^P9T?JKC;2@BKq1MqdSlVK;-g! zQ!hNPu(ZgoXX%z0cS*pizI`s9!L}2Aaqt8GYMySvZo0vFUJ@uMpripX*EpI?379m7 z<6%FbA@ZZ8oXW?2sP8-D$0O@8OY=B1*U15C6%;zHmcMSg=s}-laDB9d6X#q{SUF*(o@#82m|9^%9D5sllbg%JWf z&H0wokIv!+6Av(I69qDa3`^x&KmYpE(qOK?VbXej41ywCi=;HEdS4Eg+Vc+&zmY3X zOfI#AlAiAsQbCoJCDGDz59K>E3D!iY^<>}e6+r|ikWx$tAR2?}*h}@R6M6XhiL6Mf zOcmHnQWjoWNo_JixpqhB@k<cyNwcXWT#^*n_3Qfi( zuKuXJOe(9rkZv);y<-3ribBh(A7a&gsTcCEjQtOp2m@!t~tZF>&bJPUb7>3OSuys`horlYFv4baAEx zy1Qk9j`J1(cP8GD8215J&(>;8`xvsAZWEKdto$z9TP^4CLw%R3dx6B_e_Hx>MPD)C zpB2!o@%?XaJg%PrU6dhj3`^rL?k)qRw~DC{T=zxy;}+0PgS!LGt(F?~R(arP?WDU~ ziH1jk5`6&sd2;vwj_fF=_xygsAF5#B^V{)J^Z6erxBm;M^lh1}ZPZXK$! z{iJj!;$^smv&tvC(59yC4x7cn9P5_LX z_p2!!<*6?EFU!fJbE3kpfP8z?u?ZyAhZu5IcW+vwUxd?DRts**k5hsc+%EG*KjPz_ zu2@Qpp;Rp%rX6YSkH`l}jd%tF!XjiVpqGsZl0D$|L$c}4k<4Az$t4&xKH7{R>F7-m zDH(XJ>80Py$q!zkEGlrh%s2f1@w)>>a9%6pDiMJh<}^<;sz_0(9C*%RyaLfd16Xn6 zC)D9KZ2pP8&oa=_k&aX===l(afio`WXM+HxSIMVweGyfm=@1( z)2KAH?e_jI7}QH!1nOiCQycyEOmT(h&*h{O(R$5CwswzR-HEBRg(ziMoS!W=x&?+CpO%Pt z&YLw8)j)Sq58z8yZExjNJ7I#Dch(j3F^}PM90>Y~5M;Fvu2HTL z*!*ajnwdGXCV={L!OK65@4Uz_B-G`ztL?fK$D2@ErcodMpYa_7f!K&v*WZkC!`o68 zWo%q_yCX_6+O@lp`^2pY;u_1B=1)Ds$?92W`FY$IWpOk&XA!RRX8LO@mYiGj4#anw zUlNg&&o{_b#?G#lES8xE(`Dj9TsFP$6Irik1g3qNAu7fS1N|8m21^fds%0r^PuA~e zFTA)WX>_|*_y*53lutVq-eND+1(dxE&XUBw-xA+@%wT1CeWq^Lwn7uusphLEs95oD zAq?Wqo2h>o2;dMGP5l_78~z>>O$w6D5rvptToxD#gTfS`aOXzL!Tz{gl6FGmZ8$Zq zsIyiUsW6TRR?_cisKo5TvKZy$zL2vQjwykh3$_@jo`B^msL!@7(qCJCWRoTfhA=Kn zHs-L1r4=y?Df~Hs*6zb{Vb#d&vbF8bu+shX!C5GVJ{D3q_Ji>!yBDLTiUkrVjHy}T zLXXcuQqTLM@!g*NK>2#o#g!poV@s7RP5SxKe{4Ms^IDiG*OJiJCn@K0m^uHxajNN@ zt}eJirL`e}Wr%0H4f72R zJ3(w8?dW;pd9Yqt7oHK&s^cXL@%S^YWh=?ckJDSM4JI+eNnW?X5ndo^%uY-&x07N$ zQx_Vx<9}Fq?Y`MF)!V3#KfMSgcUdoq`*tM%bZxH2h+pd5+7V5kN_OLFit)a_u4XGw zr10tNo$|vSS!>Ns`*q`FVKP^sy6)@))exzN_kK-jao_0uL`9|DK04cz&2A<-?Kx73 z>*k|)uZ7W2n)8W?4!)Jq1hW+8vRizdy-L-##L7-OVHz>rxw^@`g3yDMgc^tQP~%e1 zpirqxChB~Osq%gy*95#21LXhe=ubqrcBMp!JW&aPh#My%5B7{|N{JaPjjV>zNCE&D zOegvt#uZ9AFv#KnpcY$!URWr?Szz&oXff2)F~CVI0oXc0#lDmhs{Eh8Q7z(%!1?Bs zDTZE@EinqFMmPh}g`%K*#z^;`UO#oo7gtb=WGa%u-SmxAp3xU++XetI450<8vmf0il)jtx%i^`}cFdyr0x| zht|3If5F3Lc9e_24>CDgN&W$JGeB(YwlEo8=8XD&6ex3dfc7IK%25Fkq3?FBlFLM^ zoRUV86hI(!R2i==6JC$l(BT(1i-b4>N1;*)l}@*3LQK$q2{8_ij+Yn)hrkWM0O{G# z)>liZM;WxRf+mY_1!*WU*+z~Oxjkrf#n_VzK-fp#IeTj>Mci) zf~?#2tG6GXQxcZrw*u4KCH3iFEZ?nFF42{}?GccUOW`uFT3Jg=eq`R7PT!mC7coRm zA*tSOVbLV3h!_e%yUm-d)c6}`EdGvJ80o-~lv3zYo~GC71L#!%J?*U@z9ja;6qDK4 zD`Nt~ha~9wK{A4eK4s( zz%28jh_-f7t%qE3AC?g^V;)NKzXk+!b-f&a8tz-U0?EV$8<9$0)ZG)k2v1;> zf^}aE{LN|*#3A-=1Tw_?bsQ^MJdF2*dXFT$2YgFC(iJHVf%9Co;d5Q&es$1lN&oAf z2>`>*7vmB@c9lv?-)lTq{b$3>8ShvR8XwPG$FMI?{?d-y{^zLGq0}zv{Ryr8{Xvsq zr7VgL&2|MBzviSGfP_WicR14Fa+;Z$ftoj!+w}~jB<}}D?fZ?8`_nGIv%Qjv|0X6h zW1w^L*d)=-Z1G}+Nc^YjK8Asj`#lG}^* z!Bf{LUfLQ9)351niZpxsD=M3!tb4-QCG^ z_thM(<>S2{^pqd>5#w1c9v#-+*QBWaSQVRJa35L6klj~huRyPyJsXdQ>QWk_x6JC& z__Wk4L_?!C(tWV|D_ND^;>&;vPSu~sIGWq(ZDubx(V7d1fx_H0@{GA)*Xw>6d$OHA zG_4B8@c(PDV0?*pGB@lR8hUX%KZn|IYVrS$*ZkVUV)zH;fi6=sS zyCR>ekQ=gg|Jam``4&MfxE=kWl?yyyE@ex-;{3C&amX`xCW@|&dzNl^em+bv&*Q!L zlP3Qk`d=$|7P40GyntqrV$NuRa~zo*1R;n*azP=90F`~Y!5S$a0)U5A2@G*c+JL;6 z7q@t*qJc{ksVf~lljM%DUWQeu_XHB! zd0bnS9$7)ugsCaBn%$_jrlxv}eM<}d^ggY+sxB=#;ByGbXuQAS&GMeFPNE^{V>0`| zZ>ofqm!Kn^-Hex0n!0$ZkLT`sw9Vpr2?=@RDa2(XLqtwnaP zwfOq!g=SI7r@ezU&}ky9LMBrPwWk&{5drpd?`{-Q1b z9QG`C6IlW;@k#2c($gLXsD0FHfn?g0B_~CkC4RJ!rpWK@cxLh!IzBn&Jyrv2OTI&a zjENtmKC_twPx3o@m6Y~{yZWb^OjCx z@(0NLO%KrX&XyX_|AWxq?Svor57-KrO2ChqoX{xpI|WrRFcvx7Yzq z(Zd%hWl*2>wiiWaPr_j3db_O4Hn|q~{ND|($1=yk#ZTRNlOa8Nv4)K6T51dgTl0$9 zuW%Td{2db~NUrxW{-r(;Tv4Vw#B3aZg9j~6C7STL$9$h%<(8|@;H#Kvak1pA{WeGa zY3Ints;i?sn%i+iD#Bx(;eNRI8VVHJ2y5LMC9Z}~C7Yb_9-fz(#AriJU(2V_v?~}x z{}VBF2W`4&kwj-EGfB}+5HQ53TAN}ZVBe3igjO?!R?A=AZ-2b-xOn3v^Ex_TFLy%I zX~QC)Ruwm>0r}hS>r;!A@{T}`+AYUwa%nWcKY+s2u@eWzccvzJd6KCdG1S|`IqUt@ zVlpY+RoBkz4%ev)nM&FUf?ZP+N$d}1ROO}o(=3=$8?#4CcuS{j|F0)V7!hR>O<3 z7D%j3!i_W&TRQ4`jl#)9$a89yu2eBwnH%F+IgzsekEg4EYHQoJw=G4ByK8ZWQrumO zI~4cguEpKm-5pACio3hJ6nAg=oBQ7Tdn5ruMskwuvt-V>)@n28{`B8smex#~^P@^U zZ2^8STFo^rGBLa;Ai8c%r0L1^ZtR#O~2 z7P9I}%gUab43(9Y;ge4zKCd018p2~N{j1;eWeQMt_*`55M(DQ)pSl{s*FvUQxRoNp z1lq?SN7_f$-6yiV$7_IPyGlX^-K)->0Gq%4pO43=DbK zm%}BEht#nBQ3m*YvKu0Gv~BtRQzeR2X>1XfX44Z2RIzasag`-GHkY8$@?uqZY_1Qj zfow8=b3-DSNBSnj(w)nkWb*FwMXE)#5q8IyU!1mE>HD-6ID><6DKD`c> zlyn6ihf3Vbq6}0`jj))|5Lu}nNOmJPOuIhmgjv0F{}!+)l$DVgrhv+rKEz;o^lSOb z0qI$#UwOlK9LGJR<=O=}KfX7?#NobXyXaZb?;ZA% z1nEyiAay51 zv#rByKe#)b^qQFenAchUdGfHIS#+@+VF^NCG%0edGcuzPs#3v45m?SEf#5T@KYRK@ z33sNGs1S{M?D@px%E~7c1Ep0}0LIM`3VLiZ#OL$!IDjPv8PVI$g1&4i`8L>WmK`g7*=d8(0q+Y6=c!&3z2nQ;Lq#KTXpz03SA zbf)gEX?l@eo1c6;a_%c6s{fDevYAKhB}GdJMV7hV?mT9-r7O?6nQ3UlxJGAa6Zzb2 zk?WQxJI&t>^#|6A9fLGe>|ulj%FDc}{-Z^Z$6TGY7k}3_&KT1ZW zP>|P@BGDFjYB{sfABQqEDmW-GQkt1#{+((e9-kP?^N5`BbQ@v#2^PXvZv)h{0WDN0 z*(6S!h^mjd_HI~#1dux4(WPaj(}GfuogNYc%VfQS73IX8LVtlDg?*Coj`TpH2dYAV zgn#<5Psrt;FCeN^PBi@1m9G)CUKUuNd%mdT%Ow>Ds=9#O3OIE8Ro69owfa6`|FRyy?CC z*R52u?&R7|;XIjphHKqgBNzR{o$)3;OY$7{HGGlY{@PA?&Pw`HLMLp*nbjY0U4^uG?9%fV zABfiCU&o~br){^s_U31jj_v!{oV=t&eIsV1KnFseQ0wJ<`ZPfiD|mEOZIQ}t_7tI@ z1JiGN_m$efPIX;*Qkz>y$fgP}?kb~267Kh8DqcE?%ri}!p`cQH{oyd_xC0GBU5L|P zZ^H)?hJ|H7-K9hqQTEe0a%B4rxrREnn>t5GC~HANLUIY3vFoCZ(yWhZ2!uIvNUmAT zfDA7>iGm86p>prwZZ#(uoetANiF6Ib|GS~ml8L~HGPe_!A?cvRu!uI17(fw^Hu#~} zeGvgwor^GjG>!?t>s1+U&pH?Px@T)80x6c$c;4uZK6-7bg5qmVpJQR@>mwwB`J-`S z8BwRQMEVQ5AeAT*6atDYB7Z zl?iDpen?&ugt`yXQ-(TI2S=Dd#nPHc*CY6=^dC?Y2;c;DWk#|PL8g@jK-!$Njt(zA zH)irBp)CtqQ~qEEio2L5B~SOt)=Nns26H*@gnDW)s#6D;(gPSz%mrB855lTQHVYS` zGq$6k%-4mt`vfW_-mtLPd@|>*3lz%EV9Tn%Zt58Lx3QNGcO;61(t4nB#51?NM6n1V z`4rH+r>KT)_gi5QOjti(rG!N6_+evF@tNgD$Vr)+`!KT#AR`*u>!Z={<^{;@=5eS3&)l>h!$;K{|Am!{ataibq+4P` zrcG>Gn^Fu$TYi7D>aDYy@s}8kr;68d!q%=3J6LE*TDjPUs0@o6otj+=O%?y*_OP2@ zB(tq1^8V6{!3{Pe!((Pf_^zKYj?XK-tHwY{IwRBso>e{AU$#_l0|Pdld%_oDM=q1- z`DM}l>YTcgYy3%ZxuQ8NpN5Q|Ss&RLl?`hU64%l|b0Gt3IR&AI$BM<(y;;5DJb>vzq?sqH9*hn1HAWO#AyPoe36rHl12u_@kXB*1;2@Ac(WEeR#zt=Q}D@w2a z+E)4h^Bwu^o8}wWOgDbz{q#rW*~M=e)_=U(qt4h36(pXeA=O6%_2UhVew`{F2jWtu zFn%AH$nhtUR}zAf5R5gv?s^;EB^Y_O(E0uI`i|1ZEX@W9r98T^2s}A1F41JobE4`X=8&S{WK$c+NeiAYEqi1qs!u?a}RJVY=zP|RzVJ#v^JtfA{4@avBKYNa&t>E$JIjFEi};iNgbZiaE(5@1?Pj zNiel@R1)D{-*D%ekV>GEu}F9Ln5)W+Q3&;)q3|RlBcu9yEe-w;60vH{4pdS}^gP?1 zzv{+$hXJYM%V<1L$wdpLO9ln>bTkkVa|wjgw_Mm>%Q0Jj99}R=Q8N20>v(Y*wTyJ> zWSa?|j>B-J+ym*-c|F~#%y=Jm;=T#YSyZ)&+S{MyguVTDT?S@2vXbXetMu-qeYbDb zz*bUKHTWmQ%27Q^Dk*l~4yDSd7fvb}+plmRv*x@%N#1m)VZs9?I6+a}DU(%ui{7KKH&$wtz*ZJIEj!<-$Q_<)gg`&ONJaON`=D_8(U+*(O`w!kBei&$$3r(M~6qw zW{EYa*FB(yQQ>~KRiJQR8I~cv1we@6?0-bykO?_p^C% z3#P-1o6yHkdr^HMYIAe_9hgg4t)NoRS+GYGi}<0rDW2Z0Icpn=h|VePyzu~~Vl;W> z&4I+9*TfqevD&i#k&ur@|45^c%bVU-)h>Bdx%!=-W+RtU#qcy3>semUUv_*yuReg| zASp$bR02g=G?kRbv(0k7Z8{Q!@9k>gISmJ}S zo07n>yoIzE1w~NBW&Lo}v0{PpuWbI3KQIz};8D}~kNQw#To7K8_nGvSN~TLH zUXca20@^M)DK76(T==kmf z0cMMdN1vf+zC+-?RKGb=xYA-9a(NEo)0-rFXYs`1@%xCuPTf&d1^;H5 z7R%s^y)#`O+|gJ~hn=yb3f_;p%m`I7Xx}k0z3-ANIW36PdGj z0s8kGkGpa`{K-;HWq9Rj?}7|bUKFlO$0g=_2%}3t*1RJ>(F80sSdHIcdi4)PMEs?s zF0_(%LQoe%Aapn*Z19lYN+ilV;wvK(Kk$M(&e)-ee_fr^!mT&N7-7?)h)&kC$Zb8{ zH$?0-2TMcJ*Jl$!WLj<3Qy^hOeO?SX=T47AAX6vjHiVAJ5t_`EpQ@->2ysf^`9-JW zM8Gpdan>QX+}>sy11&0#Tyu#VoRAdvjZ37TB5R`AnZb#f4`cG}qa0AbsSNETAIY06 zEx1;1%%SrAgnqdarVwMHr~BsRDv^RShh0j2T#dITrOCSB$Cs{&X_PvIM%v?|-Hqn^ zVqfYPB@=e*aRE&tAq{gR{Yg+d3M-zPxrDpvmY!M&N3ol@v>S3;5T^mjlEtb)1A(xR zPS(v&Gg&bn&YE*}A_aLeWC%q@Hn5^lsLia#Ihy|Qrf(p6NQw05<3arX)k=vIulREQ zWlx@=(pccnk-7JNBqDp&+qJW`iy#Z$n_T#kiHlnp;8^JIXeg1}X}4g$B+1zls(@HO6Q{zl0&v_YPSvn|=gUKT3tZvldk=EmN zu%j!eg!sqh@5BDXc{d^h^?Evo{i}(tGZ{Z!Q`OZS2L}57rpkL&jK+;36PJNvzbEt` zWw(RYJF;x+6+{1IlsT#)&wHn#n?>VA*6VYuPb%}t`Umm5r%k`%8r0dAr74_gg-hHn z#=FsX_B@<)0zP%9P*G8F2t_Nat1ntK(`h!OBR5QdH{gZx@7A7h)=+!e##H~iv9087 z^gc}2BiMw^naXQx4jW=P;=So55bq=%+;; z?s}|dBO#c%_H&Y9Lf7Ef<8T@oinyW(dM&L)RFufn`>+&7&dsK=*c_=tONlM0E1quk zogv>=_=M%nUb)hkU3v|XoWLD(y9=DW1DoKFQ(!ofYaJG%`u91^Q2ly0f|t2W_^24U zw;9aJda?rknq8b7R&tkNw`ln7S)UzW9eo$4w+5a;V<}3)M}$3jtj|7@+S@r@lq@8W z^6GuJ?;Q(A$Co)lt(#vveNTdA@UmE#zOZ3RFzvLV=5r-!FO=&Xp^_3mPVv#tl8#49AUgpW9MY3t7Uu3ScY%G#8Q=%)<9Hr@jM#k9olA`-i+P$X^_ zQd*laA7o2PZRA)-x<%x3YvaA&(vcMgIug*(XA2IGp}HAFC2SVllC{_qM7OSZG&7JM z1!qoDmiEoqkuuHHqln~<41zgaN>m@;d3^k$&15QXjjH0 z<5g(x>QlIuF7|{sIWA{ZpF#LctrQ+0t)fX~VLO9k>Z zHh|Eg>2ZAyI&!fqv~`mc;eI;X&obJ+o<2-2%%V5^`!e9xF43Wc-U{Qe&O`a z-n%985u-SrH>t^4Szk@2{P7WG?&h4&hRXF(=C_~hd5ALi1I*3j9S2-cQ}^1pl3hq@YFu}S6+gZmch7eNs-+#QJ#GBDvWvopL6 z(M{XG9uKfHpHF*T_sXA#%;)|Z&Hl!(k^JCe3#a~Pb7k6TuFCLKw|q#lH?n+d(0VLy zFUUUSP75DCs=}yS7S2E#9+8JVj=4Mcue)6BbNYE~Tg=y0xQ@KvH33R}IT!t93yesQ zoa*ftwY)^~uD zK%B5y+SM68+^OXfj_Qik2lv&#Pyu_Yct%-z-K5N{Zhmay*v%EWwge6)co4;?RI=!- zZguF~cB#-PI;`ICtF*WQxTy4eZ6y$lBXe3tXgT=+&aas8G|V+LC74jd6us1;Hx%7s zg}r_Cy#!D76!D#72hl^x(S0Y#ej#qq+Oalz6F>dxxxtSbR1#DW~o865oZ zXfyDh^uyM6u2Q@RG`jFXFqT7lLg6eMrSxIA+_GwK-*^7F>}n!kZKO`l-+FjXM7G~> z#o@BzD#flo-lk2O#?O|ivN#+}oO&YiJu_bIkDHt<+3Q~626j#rNVy)C6pbx(==ZWb zck|Kam^9wbTd21eVjY6Zv;#V!A9mxh(Ygjzv^oJj}Zwtup0g)J)1NZyr6y zf_C9x(Nk#tpbdRWU?NV?FYsQQi)|kVA88JO4jzN*;yaPv`wQuoJKn-odxq)LvX6LS zH>uzLJl=p)IqW7M^IuQJc+W(c$r^WP)`mw_k>6b3zg~rl6^#n@qk4~F?<>A*BD!vh z)QLe@@o0gRrFV?U-*3oLIviY#s|7p1Da`RmKYwEEn`O4vIvb=lz=!L&GYe2Jf9kZG z<7xD5LT7P(4oR^wM8{36%w03rpWXhEJgic^Gi>krT#~}QmO!`I6G+I{9owNfSQv(u z)jM2PoT=h@`X(>D)Xa!SnwqqH>SVF(LhLHVqT*}sRKN^xV{|E${h-F7`qdu__3ILn zdIFJ-_E1b`dc%uGHOZANeYec#>?MUv&A3Bc2 zL55;B_~F|dUs?%i_#l^J#vvCT;gmv~t{WE?vr7$T8L7VE@h??{qr>=Sw@YK$RquFG zEDyM~uyTf=2y9PBQnj0n#Wg$Fn~hK!pp4=KLTLh%RLXkZA2_TN!C;y3+| zOqs?!iP$DCJ=F5?EP|3a;GmH+kW+_{l#K^IQ7ho!PJvIctA}8di6MYAa(EcOgatw) zsqC00K;_H81lO7ILWVQb_1I!h-!(ylO@Ac5iOV2pgEl7Q$^W{3-3YGD`04pa?@5vXrz5pA zt&DL6Bh`s5=0Jg4J)-=fB}naRls#eEyqFfUt|F!HB%)|qi|j_qB05ng^gG7QxOW7{ zIG@Dg=&Uq7qL3!4V_KT{^({_c#r_}_irlTn40&cb=XlKy&K_nthsn>IXCeQr4sj{n zWV!o*Iwzf>E6(!|b)_HJzG?F3UOnDrzW?72=jOf~AU$6C5e76_x>kx~!b716hBDoh z)Fhk^SZ}MBmnHDn#S81M!oT=;VM5P$JGYg8rj~g(KI}FXO9n*P3TXaF_m%DsJ=(Dl zvHmzANG+R?p`uab3L0;HX4hn&HiaDUIDD;jpOdC*OLGr7|GsbkrOHZo1ath>$*hJ_ zgj5WdjDtUB41-4cLi%hycDUf6H3nz*< z@`3=4)OCYOG^Q4gtDv;2zIyCBSfFhG;%SWaW^d!hYch^Rq)=GCx%|t0)QR7|2mN()0ylc$B!X$ODco)sO&(VEdFPL6 z05*F0)BEY?^Z3gHpX)(R&}-JhVmxxd`*+R#tj2PY`Bk+$Y^_Ep{=oZmTwc_M%bFnH z=F-oZX3h1NB*w^TkoVcGXydrc)W%aE8UiiJP7?W0`!8+II zN%@ohFUl5c4CO)5%vIMPbWPk^%N@f1350Oy=;**kh3mIn0M*8T;^5w2H@vii3~Og6 zlMoE+g+|B7>4W8m)|w`pUX&=z!ymVm4f+h>f3~^AR%zu&nh9pYq*7ABXn<>5c0nPoOJO_RBDA-5gio1FVATsvKOdXCkS z539$Lxh*jZLc4fs80&KN`i^jjCG>-gu8gM)>&)!GM*oBpiA}~C8$%V%RG@U_kuY?> zO;v0k*OZ7mp+coW>{>@qRTk~*nh}mT^$ZYW5th@^5qRU zKz!Ncb2#IA9F$M|)6M+%?&a@#(ro5m{RiKuX$<_#C?^%&)Z6#&mQZh4)ex{_$P$li zxVW=;T#2H`Rd1I87Mf{jQ0lEewsttUOWnfvp{m^QuexNS?aWhn`$A{>(>IT# z3hUOf+t2G?=b_Ht*$iD>ng7NAH&j7Fik`<}d00}lsPW>;a(vf8<|zUVq4DN*wJGT8 zMx8zR3lbMfr*y?rDUM0lgRZFGYEW;bO9 zdk7%rP2G-UB0cVjGlCEeel(Dz%X#OJ`5)Y#&N^j>_*u6}^v96y%Mj92>(7j+b1|F8Fy@@VEHoTQ&V9pRHX{-DFb zQj#DcGkRGy;;_W;(P4BGiX$UGBL3S*DXNxe<4?5vWO!NJftORVf(vJ_x$p}^-I|D@ z-toL8Qc1`EH1>^lB0vKJLFXnEF=l#eGMP0wM1=VzOsSMo8)w>)V>PU0Oi&Avhy;3s zMt_f{1x1{C>Vl9OT2Vh0$*sw*gz9l)$pm9(=vK<q6=o!nYV$!8#Am9;Qw&xa*Q~3|7 zV}w{}?gwkt4Ib2iTPUl{@wAGQW8PVTeIf#eSuJho-#7t6uqk*^j)cR|-{~Mu+E}5c zF|U=k+P-$aZNJJm^DuAr_4Q@xQGYF>RR_rAn8-8a84XW=U|q-{bIyvFCbZ>?!}!<7 zw=zR+>`N9Vrq$_iw>a)6BaYiO*MfIDf-WTPS@cesR&WAE`-lfYq=`ss?cTla_Zahe zqgV2eR6e)%ch{2ftC%E{ly_q(-8?_+8=c4S$W@d<;5=Tb-P)x0&br(?;`3+A?7F<| zbXFaPd9?rTO(aI~8i3)P>L+Sq`0dhJ{uf9*K%aM9Y;|S%^y$;S42#>fsc00zDB+(; z!i<`Zii(p~ou7|K8IlTUutURCExQ=?;{LbYLBF}(&{!ttEFQznVz`|?&|wI%bj3#! z%I)U}ITTL&>odVpQ&Unh^bfO>A>emeN^R%{B6)+oNtMDL<6`tNGcCvU%2@VfQK
      tI8)N+S{N{J=E?Y%xqd*T|$Gdn7n%!RYpvqM{pRMuk z9>K|r?9JIYS+ctae#xblp8BLkybyat5y#UbOv;+@qNFvk8pY|Cza30v=Tv^Mo2eCS zP$`ySrh9E&0Xe*h8A4`jv>|xY#P7L8?isMpYaoR42|2^=hqq3ptShf$p=X~M8*r#{ z21=t=;aNOsFm-1}E85O?seOkBU&oiNYoA6xFI?SfrY|H}m34pTlmAW}u)kww%X9ej zMebkk_|+ree@N7=X5#58z5F)q7dnl>e-pqrwjW#d2=pptK-k(cZl3)WzPa82Qh zO5nbsDW3y0O$`6Fvz|n3FamC0@N%IdqdvrmSmZ=&Q!hk~{r|K8nP4VRG_M=ld@a2c zR&P5B*hx8`SA`w!ZI~Nm4tro?M@Q8t>ika5-o4B*!2D8(crGu`XkzCl(O9q(>tK!J4f$rE&G=HCOrc zpm`br(cZ+twZLpa~|2!)YEj#_ASZsl% z_vRZ-nV?Tr8R-KdQ@|Q}qcChl27i}>TBb8Ohpwl$k)!W%0{yD47&Kh!y6qM$Odz>O zz9oIGrx{e!-rek?oYia7-95Hv&i8nc{yt|!{bX5>D~goiiaD9$i~@cPMH9CbvK;Y| z|M-oskhb>m&m>gwubmZ9iOHf&6HUS+iGQ=0e>0gM!vD24>=U76!3 zC1cD5mX9sLJQ(J*}K&K(}Qfsbsg??QUwLU z$$^-GSmAmH${gRfur$!=95|o1bz@=9H-aw)Y!b3es`cen-MiIPd0S8WfiZgHbz)E@0esx zuXJGRYL=F2eJcbmec6e!tNe{ZF5H4InnmL>^rA9A>S=pbEEA4U5yI)B z?AVna{81Ku`Xa{Z1c$eAG2t{bzH;JnpE42sdn`p*D>OvxsOr?WCqpXJNm})4oBg@oLNa3tH@%- z@?ZsJE`$bFMwV@61~Au&(tl?HqT_GE^&fpJ8oCjNjl;~Q_gwvSq9GP*^jZmWLH><8 zNu`XYp_Rnr6c{zl)^akEjbJp7Dia$#gu=ve)YOOU3;x5?&>dtJ)k&V_kclPAXBUWpVGAj#%``8ApYK^eVo zzi+st>7tgQy+Xe>d=9G9L|52r9yc}qL^tg5H-5QE^60R30~&13x-CTx*Qs!pE5*`% zNL%3*n0xAVhJSp=rr&W#@8wQn0i_iS?^!|dZ|wE&%{<5Y_kAmP!JgwQ2<*>2frM^l^r&T$lux-cG~OIW>_^(t7?TIWhtrUNCK~f|m8l)z2|x^A z;X1`I6x$PTGp9HfK^%diY}^s2o3kQnjswU68xvOP66$TZPPXaI`4fp-4s4Cp=ijKM z*GO3mp_9L#TH}}(&6m)MwB$r5P!qnubOZKQ9i!{sBmS@hn(3RB8 zZfcmYBebBYW-|(w1SB7+w7ab|g|#Ona(%&T)d3sZ^`q8Had?A%7tECdE7)*X;(GBY z%ETm6mP{{_y&=bMx{NTroPFqmmIZF`N%8Hq={xDq~K$opwV_i}+rqrsBgachSo2R+~n zJV+%s0@Rh*a&j^*FI98O2H9L|Bd$AM;O{H8IW{GVq(PwGVEkTal9)(m?H9yWSP~7d)S_t5ZX*AIQR!Q{t z!{c5F8BrBo=x>KH7rIP3;`B^1{iA_fi8q7&>F)^mOY%eFHObWD+N*BOXkw}O5^7S` zfYjX|_VrAZew$K8lXERid%h*ep-f-{+d zgHS`Wk8S*OwT02ETE3Jzz6AEC$cJw*N8#{h^@iNHMRbQ#Y{1#%rF1fADSZstG;grR zE3*(b3fZpg2N1n17hhi>J=o3SGDg0YlUr_`sePD!b*gR9 z?Eir$h={(P|BrGR(;JGX0&*EeZEYFq1QMKx+m;b)@26#2_1b)0qsBq9E?agLRk6c3 zIq@v+kXffgUswM#A#%Uz#Ettox_k|dXmo4|d46b*@otGiaRRQ)<#Q@POZ7BErGbkh-wl~*wSBABiqa)^|F$JBV`p*?E_3*s_5MW5 z*~G)O6%9hxz!dkmkSa9v*`x!7wmo@vXbp%mXBbpwAwUbh9*9EkfmQ;k~~~s zvROT@@$um{Xe|7K8)g%Ste+LP`I3H^Jvg`%z_@RDyT|S80*$Z}v!4&}e~$Oa-@*>U zVa!yQ)87<{gV^s=aYO(%>J&%=;TyUi$5;sqtPpm-|FdbiKEw)Id*naRLS?{_IL%N#B!s)Qiiz4^lh!HO9vcV-%PNxoYJ8 zckv6s1wjygt7l2qQAA;cqDyRHkP2G~_*0Yi*vRbWA6*y^?VJGiGOiPQhmV-rj=&eZ z5>UGUGo;U9c_2M)%7KTwlRKJBYwzCkRaPLM%VCvKSQ!^NNtY0K6>R^?Ovy+e-X!f^Au~G1z*iMQmU&%~%+oCzpPRrj*)w3na&+ z4h7~9)`Yvu$Ci;(bX#*Nw8qswI{wW+%OWLe|FT${%XqT()VQ1Jp5nCbxx#*vs58uC zyTh2K>zzSo-QKzPS%<=QOSt3s7!GE9e0ZJg|J|LRAAdGFNc^Jv2WnU7dJdbg18o<_ zF4ESY1BJ#ZDsi^N6YW3}{~n?d`sF_Ojj^@kbKtF6Umfl(YztriTNZiqj)Y zba-<#U*eBr1CdjSuwh6sEsL-+P%Y)}*R9&Q6p%XpkikU~j1^WkyCc9@biu{x2X zFFj?O2%HFRLeNu(R%;kh9U|fx*bfZv8Let6Nh8vr?gWNs12#(~Wz_cT0+5x+6xxA2 zMQ=Am4Y_vheO|3}NG?+1N9MP;3kV%&($gtWf;^v8F+r$bA3R2gF5KK^a$?VHDXISK zZt`fJ#zFK!Q5kFz;BCK`t66tsZ2lNy?Z4!2#7cYx9PHt8DNTB-mJLi6jF(!cCSRJ* z5Avce|D1VutnWI=tElw-mx+7SR$-qfG*!5T{Gf=Q3o5IP`iJ5fzI+6y0xSp&VaD^i zudb$OtaT^yE%{iO^A%9pT&fubSuq8xXszs7w*jqUsT+Oy$HF`kCFUbAtl)zkGffU@ z7A@PK{>p)=j0iEY)5tp6v2IX_wC|xcvFEzbKtyIVoXPD-?L0qc=X`>9T3I0imvQuF zw8m;}t@``V&*l3k@VKU}AI|RS6QutiH?T=z+)|P)B|9ZIU0M^~GGDgmpaeV|No0a) z?!~X{#$2DHbpC8d4#uJ4RHevGw&}*UfWMyeb`eMpDynb%Y9*B8aWO{Sam|{lcka1!f|`NhK_F_ya3vv$=`wvB~r=kF~);e&L`lF3Tr z^6O+%7&y_xg9RMbiUbvHFUtujr_sQ-_YDqLnn@7k5P4=-KxkQKwqIaV_i_6|U}-C_ zzLyQ?KjS!omjmiHpgWRgauAH|ksaRjtCwjrvt^8GrBMlFeSH@Aqwph>gUX|rMiLfM zeMZ28&Q633yy}jCE)+1yYus>-*fvH@+mT@6rQ3}WO;trj1gN%?l$19$a{G$GXd%AI zpS<3pjh%!zg|Q4}%f9II?<(tSq)>m_{8`+fV<_<8G55ju$6+Z$RpDvJc+cZW66N2O z($1W1=*G&Xp|=(6%7}9c_@Ap$A}n1B{`yLe)GqHaTeJ$~dg0?b=?IOQEX9?3x-%(< zd>SEa^1-Yko~BR8u4{(Hs#Ciha>Ix))0RQNXixm|Ysb2Io>f zV04YUKJp&ANKDL^{PLi5-JcYTnPP&U24L$6=);*wb4jI8@Le}Pl~LG=?2Q$7`fj~7 zBr~MKB{|xSL?bLbX)T3&qna2R3Jdalzrq`y5eIj7E>Ov_x*UnmWol}=alYA|G}{LQ zdfSENDq$D(riPLczkyHeW!bXNW@Bw@$$!$0lqQp=G7k4&Z0OA!%zy;b!r%O;DpJd{ zY#)jKXCS-lVF1stROibKnh0>@4q4?_FX@toeP`$82GOl=~Z$8>qbb z(^Z^*d&QFTx7R{SnnN52+Vqy{%}j!8N=r-WllyDSS%lTJU(RH{DC_EaPd2oIzR|CS z1Bl(OA2|O-tKLKGh%A))u*3|y$&@k+raSNe(wU(P?ZyyjMU4E5KbVnmX90EU1CiC_ z>4WPeIZ0Er4A8u?O15M)GWf%+9-pm1T7!py;n0^}V)aia zKC&ONBwKhI%|Kf8&paWVIQWRe>P`slZYU=;HlV3;Hw)YT<~8#^VA`NNJh&5DCTH~u zJV`?uf~IuP2$8C0_=FNrtb=Fv_uG=ch9PVouN8VBSGHsZ0zBh;U582`_N-K4d8T@-G&+kk59t zna^k^dJ_r(yT7)4{JgXBCt7?b>Bf8;UnM9&&e=?Ke?mr?v-Qa%8 zc_r}RZdZ)C8UW+j=*2ISK#GKhpTHeTr|Eu-Wi?r8EdhN%nLd_ZnR53fM~lYL+B3#& zM&u9D;F~S+SWg7;<6|p4NDKJ4>YN!p%8K>2(U;i54soR?xPytUgw%V z9)NKU@NrtF;2G#2wv*ZY>kEC?OM*sqiM@v2BDl^ecwOdwzc}vIcf45F@*-O_ZQ{~( z_~@-T{o`fwbW=J|mCI9!y(j}MDvWs(?lWV_#Mgml1k=-2PEp7Y(4*K%^PJPi4fq5R zn2f(k-fLLp2_1W7M?-!V>YjvnT03j}`gk9WVm!OnpYg*!*-@8{bez;-rP-0jx>9#M z2ry+qRn|n?THb`j3+)5LO|Jg~1%GX9;2@iRnry5~FO>*WtGO0o^Y9cxQeYt3;4FM@ zz@h$b@shCkW3*U4Zw%QW0*~X;*HuGPa~wu~0W53H!=s~dnu$kH{xdu+#}{Fb-#!Ba z4LxA3B#|qqSTdmm7yvL=#)N>5Rgf)QJfIMCA{I;kK<7#>89Jct$Zt?wI&tU<48pNM z`@m8ha?>j;w?R${qDx!<#zMg!EeY`TfdCzXN7zx#M2k{5>`1|63E*Et39(b3BQbBGR4Z0@DD~u zzNEEbTTtNf&?)c|`ofgU7$B39W));rV*@aBJ2#BCX5tZ?v9QB8Ho+N1i?mxtzeCyYro{8g}BtB`9#chy5sd7oW@GjG( zk$mJTR53ji35kJZ0bL7AsmVMO-l{hrJmsYLE=XXG4%(EGPFrNLxZhfycD#6jsc7Ax zKEsV}|NdgT^>)dkT(=_=%;AX;3PQNqHvcbeP^tT<8_wYaC49lg8_onW*(7EqgKh zctno`L&bYyi{a_WTi2Ih&}da}x&G^ru+ngKP3IEJXvD*k81A$zr!+U6k=#lQXYoEr zx%}CcC#0^hf7ZL*_q`%5j(4-aG8awBpGy)9-Y+snO!c2W%fAd!t8jOO*#CKqXSxc5 zQ$Od2Pbh$#i*cL#^Q^AYu_id1#bDBj=2xgotGDZ}j=POWt3T+MFwvMw;hi3arNorf zt6Npj>iUkR{U^fF@zF}t_gOynamT*0l)K&cBN;j(O?s29&ZG=~Z9X0$C^4Uv1dLFB zGhTJh((CShWRTwm2QGi>Mm}JUUSA?s!tWx*<@Tl{HwXeQk z{nC5(E7_6S4@>xnZ|h@kekC_~99f%F@wR?Pe<_O`l%qA7e3yWgrh54@H-Ans4PX8^ zOY5EEjGKJTKKxRPiTk#>i48*In=fWkh2E+CdhR0)joM|HI<4y&$wv+IPjE?e*+Ztr z-QdVp7ZX6^&RpxUf>_ZxdhOmqtr`>7$9J>be{V!aI`U%eW^>J+AXU7*!CO+xR#A9L z&%#H7Mo9W4?yTHq$lq&5m<6^Y7xYTbo#ZAA<%)^Bv(>k|)c zjnK*_=B5VvR8{H@_tQ){TIwDzVKJ1{S^qk4l%@1vc4+cDn)zaOH2EYD?$Wz1abx_I zp!*a@9fHeWn^I_%=5i4*Ysqe7dv{aotb&&l_IN+h?PAB*L&EV~4{2;sta4PD zbQf#Gzd6WEbU8lQr|MSF* zW2(f}{haPt?tKrW%HQo~miJ2L%HKA8_U2X3N36#=#~WQej>_sN$9P_J2!(pJFuXnK z>j;V=voB*lmKWD&+tNvSwf=T!{@^1p3(BSrCN)Y$aVF*jw+nxiKTn3S-p;i?GP`I6 zz0Tp>53T_XKs;WARjJ^6-oD)@7>{>ab|ROoUg<&5k~;G$7mR$$~9HrxHrpY#!sby28zo@sG#ds9qwh^ zL;Yj}F+O{Haj0Mu^J*e(0y8NhUNAaZ#rCDJbc8C{#+g+*ppXRM!=N?TRiqu6T#x!c z+c!u6Y6cx4xM+hioNgblM5@$EsaH_p>~(21F$GbMYw&eW#Or$NTX=dPK6n9iKwIAL z362El*OArr>wcdG?D6`0|{Q9ozBc<1dN+grHho>8HSY(3}{+s ztyNQ7^=augf8l00&p!`RF&1a>>$0EUUidH}=QJQKJQ|3)g88#WnhG!Z1whqR5sAZv zRq=iHsQ>y?K3xzUl;uCUZEv+&Pv|Gnksl&&Bker$e}WVnd;_JL z^P-OJMKKzte_}Bb^}cd5M)h~p27l7^3qie`PsdfW7?twW-VU|?P^h}2qPanc zIZvPr-xZ>bvNs8+t*;Gb}2R2RSA;L|HN((`CVD&>`qik>j0->J(`_~_Hw zM|!2U=9%#|zOQcnL5*Ra!;IKM*EP}A;KMHx+o>)W8v?kFR-Xj#n%K(@^^w+l@+GhP z54iMui}9mIy;5cB9%6V}VLdU%OX23mYoC)`b=7-v3F!<^Rdw^BiEUXv zKP0I+k99Q)oTz4PYU%io@X=7r4B;1#*q3I`ssIVUy;E@?>ycJ3I;p(((#{NhtH~R9=4(d@aU1);I zTh87*s@JS9dFLzsn)4A2O#uM7+sZulqK4c52Nh zXSpL0d^CS=KMc!0JErbXf89e7`bliU+o{9sy1GoBmhQQ-PNd>n`!_F3WkZy;!Qi_4oUfT+|8GiE`QWbh zqI#SBYn39jeic^4*kqmST63MX2=JdK<&LSg-2O*GC7QM6L1q=2sckdeR8vs>(}M^J zBFTHwU28X1g!_kgKJd6xtgZ7Z&z&?G__V&83{CoUIS$^zONRV^E1J#k2xmZ|eqiwC^{ug4chSz78}8 zBcY((O)EE>6S2YwYsC#7#Ztc;a+CWoI;5zvIJ7)k>F<@TvdU`;CkwY0g?k$6*VY-7 zu(P{Isxf+nQZCMy+pO~2`mz?tcd%3mo|WQ$<4yaaP(h$g4p6CF7S3@?&hJBseYhP` z{(WYN(>~G7(<|uldAbFle8#j91ppDBJjQ}BkwTH3J9~_s!7&Gh<{usl)?Z8LsK*Tg zi^5xjK-X&}+dEe>Nd~J0pqXA8-cu zGlU&JBr0?U^{x{a!~s^>#Q|3vN(?cZGITETD9o?Js-eclWCoII-6u^5^C|@+21?=> zaN%$RQc3%H=6|tk-FGN!--l3kswE?YOUtyJzgF*ICX<1Rs0~!+kv9oJ)QB=w=m-g- z5i+}C;g=io)J0;E0(-&nAc-E3sT(6_>#X8cTJiNlt&c zm3HN^#z;$JbBx!6Yx>{o-8Q)7%}3UErbUCcEuXf1$TBf(rFby{&@M-7lwAvrO}>t@ zaMR1Q_iUF~mf0y(V-9HuhO@f{&a&y#uWM@rmV?15FIp=7`hWOn4rDla=p!~8)n2RA zp^2rhKk6UuuR-$<8xNiYF0L;1#9yK7js=WSXrip?)@5M{Jl^xC&(wZL3 zg{Hh|mR`z=x-Nc+oCE*0$`&4WRpYK&1awNmbcP3KDfowzK7QJk_yt=B@>fS0Azuzz zUS7_8iCGT}gn-`W;JRF-@ij6%cwp{+dNVnANS$gv4%zV8*SHV4ZL@vp?H7G%N>dyj z{oemzq$p}TV^ndJUrqTuQ+4a{SS&MCCX(fZW7G`#d*!ifSFvt3wRbnhCYPiyKOrQ? z!-e=YB&Nf(;^STZV{W#zW6?2>m}+q7E?;94=33nX1I z^RG@g)rr*;l*ky8Sz2=E&7G9i2ugfPql)QFnnj8ACxaR)zr8csbi2f6R2Q=p=*o^A zuzZ}!22V7~el5)61-f*@&Jmd28S<`Kz*!QM>Fsm+wt0m^Z9Zi0w-%49-QVEqEH@-J z2DG_n1`s3}3gEEtDVw`jpz9W8jU^h-+f*1XlM>PpQW;JNAso6er(GdO_})M#!1+I_ z(j6wHAq4glO?iFVgqs3+3>zjcp6z_R41Kxpn*V)hn!MHOi}S?7m$%D2Sm>b3k&u~l zsWsk}nY!6^4flSX%}tqW^8VadJ$>6OO%tsvY`%Wkau`iU`#vfJapBq3T;Wlq+w$uJ z_JP8(H2wY?7?e`1Ho8i;w1_iI(571k&PP|6cE}{C+ngrYo%b)5XI|R$!9F^liqyD$ zkFxLr90Ipzb^2dICD7kl$u#FrkehOgijLJ#8ei3(^vKFLM{e_BjFkY3Y1i===;idm zEcF5X9q49%p+c3eDSgZx#BwT|Nw)Z^5Wa`po8#}9jFes96!Ui>$W{j>XSU&qmRNkV z)WqVVzQW9`*o2pvS7Bu513vcz=j&+JTZi(z^u3}YYurLQSP7+D@_fyE5OugsdEWCo zF6IYken@g>g<87Geei~w%syLrDPI8?>_yPReCHK=*X19DL)+~OU5H70h3|Y!rjvWg zn&FhxZH0?CG;C}S6~n+9WcHIuY}1x!nY%_l9R>@brS;vgLuTb zIn;=J+%MK?lh=DAunZ35!g_56yU}=%0zX|1?4vC>q3TJMkb2xAq|Ku<)e*ny40;qs zI4VykPn(AixN+eQSDWZA?TC+URhng-$6@;@e@leaU;AX0$6wnoYEC||kF8$tO=_r* zfLkS%%i#>2%SyUVBeWRaMP!%RSWqi#1XYzo0y#xr?jZ;#9HCj{pe3t-DzENa*^Vj; zbAQY1U`GWhLO^FN`|3C9mwEPVqqvAP)mjI!=*-mcq-)I7Nu%&{l%xZ3cwen=oP9!q z?Z&`q&`mhdJHjzQKOdB$io_#%%7$iWPvDBtWN|uhl$Qx4V&Jq7kKmpX99rJ17((lM z#HzE19`930P*WmF+nC-8Xp(TZa-1`1L23CvR&#IPF{hoH0LB+0&3f|m(<62J_stkf zt0QLr2$*pu?)C$ZSQ%Bi>qhsLJYY(bKQhb8Y7=f`mTMJrH{SBmoX% z>Zd7LMxMg^=SQUvZfMq+lK8M}86o+L3&PK>BF3(?K7|p$mjVojJ4N~4a9a=1RsHj7 zQm6ihd;s%%i@)*>778zI`ZRrb>0`5^{@FY@kSRJYIp%xOudNiW zYLg=ZWrRfV#G~QTTz`6e(ojSqbQHCq^ik$tM~DGxsDXcAde@l{n$odRg~PZ}QP`{( zK$>~HrT*i4gF!v)NtIbx^BfE70E00eE-!EXZVtJS&S=@^5qscUp0o3;&CKI&*^(tPus6$r+rs%WQ{1n9B0{qhSV@zsK3BG==D6_Uz#dSd6rn=<{` zk|8k&gO&iPp-b?b+}X{&#Cwdd3*w;~OYv2l5Q+(GzUoHtspeN5)UO?%(k9&jy265t zI*DV(d28nEx5W`(C|+%zUZbZ1w( za<+<`vvvY*MWr&+yVf56sQK4AKMcn)dv~epvAbiqI;i4^XkFTKSCo*A(!vucUaz}x zJNgQ}QcpTde|`ZDnr_WN!JjLa%2)FTikV70@>63_Jc&*7@(!1h)WsG1rQmPl+D>p4 z8OpsUyyy9}w1wiIoBq_5iNQnUd@*}fha6WAqF5+2mZdvGu8W{(|4PS^yBTm*v;E>lX!Sy@8uvr zXUF%rFw#wmxS7Au+Z4{~ZHCGolYf;w&8H(duiGo8)-}n#^Tr)9%cPg>Ph)ypI|13W zDWloPsN&h%(0F3>1LHeukoF<;ehE6lgI5bBe1*~VgN59nF#?cD8KzN&$rJ6WfHDX< zjR&!YQQ^H@3Iz*=hW;7diz0Jay$;fWGZjmbLP3W7tp4eK$$I7gm%?fMXSl~zW)_}C9|Y*9>Y1iSo&J}fbglzn+|96QETBURc- zsa%`3I{uQyIV>yx9{9nbw<@iw1Tux-ULED#M!QIaOmOZ~G1B58$j>O^pI?-toO5k> zXT-YfYA@HWI0hx%br9Lq=nCKi0Ei7ly`A%G848&O z{!GUAccGfYA|+mDgP+YClxG}G2PI+2xiBP_lT7XE?fe=dRu^fDE?LarFTZr2=|8rf zbsdt%g?InL@@f5Npnj~;(Xcj^$B_8XME%$uB|ZuL+hE~jh|d#0mT=DLVNdkyCIq`k z6^!`qy3Xvldv)9M&TtPL)u&op(%A9jrpt~G;jfPXDt|i`ZO>u**G>O+93GF`oR`we zj-WO}E{hwNop#rqPems0BYZa@IZ(SWyfX=JlY!{~9jSmdy&~SvRlJ!FS^D;@gu92h5|I0Tfad{ss%wU$w}fJWP_$^H{r#`;tO3FL zR9f}sL>g0KuWt>05=mn16Z#l3w+tWhiiWFX#zJ~`HviWj8$snn__DFrg^99~ww}hj z$HDm26CWU{8&^w84nq9E4Z*jSgU@$XeCR~NFjc&FN+wAPq~IaA>fIl=POlYD#^5xE ziP?-a95k?n5ne44i``Y$TLirbcg$~MIL2s_>fDfNuI0=fx3IlXH1_ng!^O+Oin` z>K5P414jNMq{uH|;Xu_4mM(uySsD}vmadfe6mi}9^Us$*h~#b@@>9>Q7L=){gU!R&czXneaF3usXDTQbd41o>&>LZxIRr8!Hx~XvFtIuCy^sM+&7&gC3sKc zL^hh$@1dKrFB}l7AfZopXV2p?sqZXEbA%aFr>kt4E3SeZiigz5D+3#w54V^}a=w2t zPJA4KUy&f8kAJAxC!B)GdT!$RG)4!2lLvqYMuY8YFL{y&)H9sj%YMDa^y*zeCYdw`HB$r=&KgkTmTWXmNF?uHK@Ad z4?a<`d1kPjuben}*Yl?#BGVx~29>QQKQ1^zf6uAJuTfKuzFIP;5#KIOcRJs$YkG8d zRzX>LK`xRE+SK>F4#>yw5v*8mcb!}JKJVCK9aJX=#fiZ_bmm+WfSAJb;;WG z;6q$zq!wgYqp;)fs8kmk5tpwjpe;QuLtSY@Q(9TQ6hzEL#^F0sz#Q^4z@@8Y*El)R zIO9PYC_3s!Zm9sNR*|Qjay8Hc_`1?N~2*6Y__RgO^FY>2z7` z7uB=PVIdmjwi`6%L4(bmvzjbb{;s2mj3Zk?P}RsWWyA9InI}Q zeAvN$ba?NQN3yebPSp~ChHlj^8Vh$sm;+uuFIYJn~Q?0dc`k1yiSkc4Q%P5 z%$>dIKv{oJ12;lP0y*-h7xUc*eY)PEDrmaJlAhz;z)2`|C*S|GvWVS^+-CiAn?Cso zBsVVT>Dl22Z^+ukvZ&9iRbLN(LT4j;_&%t*S2$f6OTQ|hBF{aT+6kp9+t}QMq-DQo zSkl?-lA6y$u*QfCi)@BZnyZJ_zLH}!o3jiby}|3I5imc;l>6gt6NT?xV1@Da{yUfl zhltRaS}#}Ok4$9&DjJ_79HVSObPPL>D-VpN$~+tG@n@kVB^eFrC&8fLs8s)!u~N08 zFY8k)hv}ZFZ7sG^djZQdzaaZ6>O3#c`icyzT zekJ1+`%GAozW&RK@d+C)kdWMY{2FAFwXCqrTl{a7WWQC5cEBb>C5MjPlI`F$LfDN z6eo9^pGwRT;Z;n9vjlsiJ`r;wBHZ6;LErJ0Y<~D{ z&fgp_b`3AlD{t9blf*8cbyVZUfZ@|4k(3Gcx-X(~J4WDeZ3I;;#TmzDDpDSy#349f zI5i;79^PUQw1eXKT+sES1?D6(B@_`z$(p^N02&Cu8nhTiy(YgaKo8gaq;|!W=J}LLB=`94!hl zyr?PT;C;y$p^!dFDLSylY(EqXkX~KK{km4JvFvsd;JtN4@3AhnE%Z~P@Pm@kDc<^T zfZTIsx?D_*6N{nOz=8n_-upa`2{0#=b&rTU$Yr=+ysFT5B8TvQ3h$WGsdHtnAo^uv!$viIwX zCM$aruhxcvHLqCz+v!Ie_YL+e%G~NW`fu|EW!(I-=(eu5}sP93P%y#)G^>jv z6Gc}iwf$)X!=6X{>DelcKaO5z9*yzX1+xDXF)#vl$EGS;hLkub5BatCy}0k!BUC^S zudrSh(mvbBy*02Fktq&{a#Y@-r){#3Tt8PB_`k);QV731;ofJ7@o2Xmx0UKUU$MOF zU2(6l6OtuldHP_KA7rzbYE?zrN3Mvki}EQWd8&5|gw!!u`|q~7QgwmJZzZpAk@3o7}n1=>mzJA0rx)zqPwux^;o1U5Pf{(`aE-OJOP4VJUuk0)7$w<@Y_`Q_Bx z@}VgN;5>Xhq1j=?SSPevBTv{nFM%6A^WFzxEQ#)*0`?oGeTxEp&CoHZaH`DW8WW&Y zXctm7UY@=tn#GccVT7bRh^lasWj1`X3WE3aW(EaZ_mIY%la7+D0-58^qfgFVVMqedd=D;=%=>LQVd zWz>}^66hAvxS9AA93&+dVI|&a)Qk~-c^i@+y%zfZ3xa^{ZYDvJCW#_hR7aAit!wo8 zuW;NcEn}sIzpDYY3`!DUa1YlP(AhMMN!Mtk?8-k@OoVHrvsaJ-)~+2<70Oh+DVGE? zHd$DUF$_n&86lfOhBWyTv($5+n^YV9+CdG&BngTXPJ;!EMkB-^gRrg)I$~i&;7KBe2Qe@6+2a_62FNxf1LgF$7!`pKpkG4ZG}cHRX5S zV8-fHj6%iE3hIYY0`AN#J?Y*PvTUK*0;<>iF#bZ4JNd}3f_gmnJHYTkopv%PJ#!2G z@7rW(MfQkfhz&8SX5=PUQh4dxeS}qdrLQ#FPiSPmWzYu^Xvq!3?PF#6Ue4R{32DII zOO<#XFC=DAA?r(Gu2 z9iSkQMU1I+Oo!NJ#l%yQ(Rw=Y7(XcOYCfXVsdg|Jl1{S3W=3!HZD6HezZC?Q>S_+@ z`rb&*Qz312D*FlDoq0CO6&lgk`@Z01cPkTj+_>vJb!Q)JmHR0gHou@yYxoZBMX2WX zwhkN`QlgcUm=>6MOx2XnwzR_B`7uf!B;{4C2HEQYM`M9DvR^^_Y{PX zQdSz>v2pz}1LF)@(;(zRdYgy=e=VqN*A@G5)LEA2g;%>;7_dQ?AkQ0zmKka$QOqa# zxhGB6#KnFFe~)H<$T0 z>Hoob^sXWt*o%*(aXh=bN@VL;09@BhJC`bbElN71+m;96>^)+`PQJ*?wp!suHPs70 z7`#e?CQ<0d#3b585if+O?OHjzi@87Uyp>EwtL~Dm$A}ETh^0$v8Nd2T%K`rv=5x!q zdGUz8p;l2gFsB$L<70ClfQF$JDl~AIw0gbka4nv_>%UVN45#1XtqD;!XM{W4xvtsL z#e*i#Yk#ODr(8BLt@CzFw*%PdxOSWm&99Jb+nF%R7k@(Ig@M|ke*gwUe@S+(KY#V}Rd z#PDno?A>azLf16p_Lmdgldm;@!Tz#iZHrngLY8lAkhCVT1Xz-xoWA3A;Q zL8;~Mgf~>GB$-2`l|JB7s?U; zo??%9qy~swTC)HGkAvWJYZcLP)Gt@|Bob0UKRS^e+Mo7y1MuxpwGJLOZgLAt7*RJa zw-z4H9Zq|pB!)(D5-K#1@qs^kV0cEujN(;fiai72=tw`ql7=zV3CHyhStCL=)7opv zUHcW)(qJA|mW(OeI5~mr!b#YcY1dYUON#+73b@Id#Qb(`A{yIh$n^{bHN};U2ihY~ zACZBle>Ln%+?tp>sAs4fQ5qbwj^1u{&^EX7=XWIKIxs`~Hxl5;9$nx*uZOrQP!*!( zJjs8Yi}0-puGe|3uvHmd8}>7eQ+0G9L&_sPL*d4c5Kt$>6YM;7aBNZJ_%9w8nk9p! zznC6qBqH9pmYVTh5eP`y$x#;#!1(z{y}*h{ja|WWup}iPXqP;^*!@b}N&5O_CcNcJ z8f3J4#&t%QD2V^)s;&jnZ*xLBxoY{pbt7TTXGzdj0ZJ3O*j5fN9hi^8XD zwf}{_-KoXM%z@8n^JzCCg_B?!@W=|=T}xUyDl0Pf`q}ia_Ouc@S|-Ir3RH3(q zu#s1|7y7kqKJodUwN8wj3g&HcvJNdb(T`|DD*}&YVAd(Bo;>LG)AT zo3ExdIO!xCv0$R>wmkOr%KcglANbnPoR!tmxAcMqaw~lqG-fC4JxG@3qwZr%nU=W* zG4jxTvvK!aEbV1k65sXF)1c~l;+0%OHnTZXeklW-v!EWX;SgINDjTIVR$UmZ_TPJ- zQ%4PJytUklTIj2{CI|kFJzRqhrqC9w|c&?Im=0O>tV&}J4fcoY0>1Q)V{>w5x!BdHpwLT3*Iik4IK8m|gF@Gi#3 z_3O@8oMc*%wcub4yxU-A5MSwaz?8jxs{6s&{dR84 z;c-g|6mHtn{kYR@1$revht+R*oYG~vAK<9G?RHva@}?$?cgqx9u=S&wrv6XKq-g!P zoCkI5LKX&=4UgGBtRH+YKH=i+nCqA(z`n<|E8*FtWm%R2bq{J_k@0y&C(SK5t;hzw z!l|btbqWgA!@8+GzlAqwDkEJmT4d1_p)+qrXv#P^<3-B9MsEGopItR1%jTvQs60G?bQ+| zI5hguuxKv*q0hh~m$*&R^Q_CJr7TLLN~2mGfcc4fg0IqGB3@KQx;)RLrd$#U85#_d z!0V>7rZq->SbMTe%z5DE?Aefdu^JtJ>!7UPE_uo2yEVg)EG+ z-1mH&zB8fb16vaWD z=YIDQpk+AHf!|NY|qVI^bZ4?_WRpJHR6wKReA2Yh}pIzdCiYqux|D7V%-;l zgzh^gSn{9GCmI`E>%^yXMEdxDwRMJMe}40BqS1ZDG2Xn&IoT2x7;Q(tYnMJWbj81G zFL!%oB~*?{0=;Ag`vg=!tkS4)eun;2?_-!v*Oon0>C;k~Qg?~DLp-ozEmJ&(ZBb<2 z4R|UzNiIkwGR#&4W#hkAEH_j5ShM|-9S+6x)-`amuRyH-zJ^M}WBTXj!k2dzEA{rs zKG&=~C!M=N*Zlu8b%$`iNdU1QsH@hcEGU)PEN?Ud(Sb*F3%7?r6;DWNfZa`#$ zx?s2;Sh&1oxyU$NcBld-ji}eL>I#@{GrykY{e*^a&a{rht`4rZw7CL2kW?7U;zIbg zc&htBW}Q(~foSEQQ&cLz6ed=cjG#p2_f%VQS_|p=Sc2M4)%3%?$HRQi%NNZ zfu>^l28FIi7nh=tl~h;pK|+E}=lrro8P(fPr4MHE!&n>wBHP1)7P3!cn` zamD6|n6t+<9aVmfF-zn2aA}+Mk}?NZu7}E-7?ZJFvix5swDyC_Vtrp|V?m&Yf*Z{1 zDsCEqwx4auapOYW-&%+8kNn8GY_=KZ>g2msFbMl?I(6y6H?kHOg%3VUs4DN~D%0~O zT(1b~61-}DO*-eVP%|_C<}fM$di7T|mTtT$QaxX5jT&PI*(wJB@wX}Z7tH)xb`?n| zY*E-;<6{U%Q-rbY-Qq_F*~t9Nl~a>4h?Kayp&=E}9?lpfrMtR2!Q5JAzQ&rg!pFRg zMCEp%EPwYC3tHjhw!WCN`NH(Bzg(@u9)k>Nes)J)TH71Vuf~5|b8HrBjEY(w=Cv%j z%`v?GlmEQ&7qZPcnKPhe?HeoKxxPFsH~KGSd0sIAo`ztSuT^$#{qWC(g!|RHRQku> zWM1y$Ty8$ye%}P_HtGU*=-olLpKO)+7WkZqd&;Ng{$4z^96IU@p&Be+E+Q%!UYPfM zTzu2ws}J;iUnB(itc$aKADW~yea3<_*KEz``MBfqO6ZXGy+z@DQ)Ci*UvluE#_BQV zB=mqQ_o+#%FX?FFF|q{wKdqtw2dqhj?Wr?&MLeGgarSg`NH>W?9z4W9zt_o$csy85%sDI z;>KaL#bO0&R;rXut2N=v7+Z>{dTl)32!M_NOw{2735`5^mq8^B1N#Qr`Va}+8n$Fa z>sA`v!vtDbXHMl>1*>MzUd=TUW-1W3t1`>bPQ4E`lF%JFW@1BMw%(IKjpecN_>{op zC{!!7Em|HV&Nx`LRNAE%Tt5ylFQhK-evDcO$lx4bGZfX);1XVM=iC^Fk+etQjBVNY zTWk0q$~qyw^5mK(!5tRv)fC+Tu3=_BJl)r6r)Zr(&ljK)!Y!JydL{TvV39e{#|dbm zi^E*`u#0<_sXrt+o3l!fMUg=DPH?#?hcrxI(OJ#hD{W@+pHYaGkc+a?hPwG{RsCiz zDRD}BD7-Zl!6G&p%d*77h-CuHLDSBRW%D^Yq%B(&R96z7CX(v)P+jN&!YFs8gwUzT zIZD?V%ko0p42C^nTSTIvalUcDq*rvmAC>fKPAVQ$%l#BZucGiI3}>89Ab061q4QGK z@Y<3w_>61uUKp9@NprmcXJN_Y%tvXsUtO&5U}myNd~o?ORrnaKs(2%eVf;{?bM&sb zDhRA?Z+ntuiwI3^1V(RC2=lbm!-f2M{TjGac8DR_!>usZCHcf^lZ?%hL~j!bqaOb468f-uG`7Ya=wT4B)pUmy&5dnu{t>1Apg!U-n)(7}f;HyFxMLp97hh=SIqYZ@IULgZ0+@f8y5rf}ufqY4FCmd}k)c3H zeGL4mHL`g`4f4^GyVo)f8!%Aw3nM>I!hXv{|Ke$gOYiJ7mpnaFSMsbgIHsy4OTJ9I z1mX7$CbKAX>{4jGGn!+WKbq98U1&R7^l%4R*h-yz4I;&=zHVUOD9vDy8X9jg0pJxq zt&iH|iH5r+-$J6Lm?gEkDj_y=SOG^8AJa3H-XBa@2k<|!SD@Ik@WBD4*FqAPUb^nW zqfkkDw-b_+;v9mg*Q(ZcFb)40G|t%{AqMN%8;+CCi`qZ~RA&H{gKyic(x$Uo{@bhr zQekwrnb~={hNxV*I(4cQN0?;|X@n4?&jBXhsD761|GY6P@&;!XjCz&)$Oi@HR%Fk- zfSwCXuwp2UC0&`?!sp22lJqW-+^fpZ-B3Cjvd3)}9nBbuDR8yl+Rb?FEVkXxg%nFa z{Jvrl`w!1a<~>&*I3BFV5tSdpR1g?R>Gexu+N#0GV%bmx`sX&pMQ8~Jq4A5HE7E^3 z6+%yGWq1h24w)t^yuwpLzMb|5D*XL?ix^DMBRJSyl{R=&**$q-Jgf&j!pk7b8C&TVq<4 zTFBA2Gc#g3+cUM>-vTEKxt-l9(+-F?5o_-s%$5l|al)6a5a6qG=LGX}P}| z>_b_!F#D_NahS(4 zb?TI(AmF&ehK-*9hZ5wOmjJ9bGnu$go!chqL1PT=uZr*det*Q$CQswA0S?Qh=}@>8 zY^BL*Ysg3>hEO40u3~zsX~e3PT1LUYetsm~j z@Le3nJKrA7+w_ctB zck@^`pJfi^wNAZdM}Ltb4zVB(p{+S-tOVGT#u4O;wUuZ8ixmRV!c_ZBm0;UstQSAP z9m{Is<<1SKdpErvoluga2l!w>!C)+rh%w5nM7ftC7UqVmraQkoh(F1@oDFHS$29c6 zlg`rkbN7w`&X$_+)nK7pw+^4tT&~q&n%y)m^@%;-gl09Ovrb84(7~S@4kG^XuUJ!` z#Sxy(VRZ1V8A#`mw=*Z;CFD6#z zKed=HFv%W=xhc@Bli?%}y_I+6GQZ>+g=^x&O8s@Hi7@T@_2g)pB6mx=sA+_0Jk*Sk z8RtV%7FOKos>(Q;&H1gtB5cFKwOHZxa?*~^?~l^pSUfjHQ1Wg3teA!Y{|ZlJ5*cvs zso9=oogXV0+XY#qs;KHIr(5LZK?s>BfDnSu5<~(zp)FotF~|77G8yy8Nb^+*__xY^#>|GFoFrT0U|{_0Ee2-FxH^e`-Ty8pW91 z=XZot^HDJSNXo4{L3N5+@ zDG*8k9({YBJ>YwisBb~%g@W0r1NxB|4(zhb{=O8~)4(2aus)wYGJ$MJ-N?pysb$b+ z*CXOLMO(D4j2&rie$=bYrvmNyHOw&c@FcWRbYE2#7t!6b=s|Zrsb|5Eqp19)>`tZ;~+tpwq4Bs5OnDb&N7nfSm}5_`bcj$0ox zN)O7(GIC{}oRrpuHtO}FitYMdL<#heA5f1|3fCi%AVPbm_1yC?9r_NdML)(a5_gUQ zV{QbQ-(n$-`^ADfNZjLsSGRYoHZYoLSBb^r_Q*#cjzTtr{RqgeIzPoQ0>CKWZv@>f z(e6(;P^G0p$eDu*Uj(!dTe1eMYkxJ)rPqNZkvOrN8G>Ja$R2 zUmBx$);)Z|*PJ2+VWx-v+QgZci~{g7eRy0%9`B49&ow>shuA(Mn~W7UZC3F(-c9>{ zA`|Q*o~Nwjd%Xb!aHi*~|8$mw%iQa&qR1+{hlxApKg3Ndq#Y{ zE&fN;0SM8&08$S?9zW)6`VCnKU8T1IvvvS_Bp~QO^i(4m`c5nFAFK$3tDcCmwtQVh zpa;;@QD&<{O2d=>F%c9i029!OT+u3~#0o(S#_U-g>$4d3Wht&^TmG49qfZs~x6E|F zq;%l~fL3jb-LS%L7=#AgL|&u&+ehRM~LNq@RpGQwoXUpo0k$b5D+{fq+p7T+AWeG_LCl z9szaM1XFf*#Oy43ZL znV=*z4^(w_N9-OXCP$6gA4~HXA}Ej=a%hP@Z^s5mMT{UIT>_?@ayS z#^C>K7$anWr|qRfB@?3rsx3jk3@nu<6RoHWd&W9dzqw&yZqjZ$TVTuTQ=RP#7b{cK z+8NxX`_dT@?RujAaj2p4k>}SFs%%XwlqK6~hx;e4Ue7E@Jrk^%1*|1h3KGv@HlSXlAYlGCBmrYJQhMT3FY zrdT*M?lP+-TD1zr1d48vh%4B(wH4)-Q&VXVixAVmqGM3pKGEs*t2;*Lj= z2)S|y1Zl|2i zltz&uTS5UXui?GhI5ibu*|urW__v@D(lP?-28co0 ziYT)>8;j}Im<$D+8o?A(k`P_xCT}&`(VpVn4QU!3aGtMONlhUTTEJ|Cl`%VsePIub z6b7PF_I1*=+S_pXc;e8)3RJSB2_@>xa+qU`WE`;dc(9-FN6`TT(f2%hHWN~ihhq*) zOM!E(R9xc`MWXPLUuqf;|LMk9_JCJltOLzX0u`n|=Z!XR0Z7KMqjtvJ%!>;XcuqY* z<5@mUG#XtqT^hK>MwP%>g8UppdE3UDNq-KLc^@dtYz$BJJD0mR;QU^}ip;TgvNd3e zJu~2<8OTBhth#jDE{=*iZA7JSZ@=rfinf(20@~g!f_q=C2Vyhn^Gk0Xd-QG_9`pdF z;mTx9rLt58DAt)1SZmj78#E8~G6;&Uyk=Sd&w_Cfq^t1W(FA_RjH(IDwn{IVujZ3R z-^cP;YrH&&$E%$I3#kz-!=How;uwz}Ym#=MkWhJCA`8mmXD9Jw2a5|wwBsWXw?$Vb^x(yKBU}}A_2r^BTQ#a9z&H25oDAs zq~Fv(bdfTonOa>T#;GEZ1BA_+g!GHnCH+WIq)FXr%IcVk>gbCy8D59P4I^n8S95=8 z*P=)j{_|eJ%Z9FL?IBPg0b>f-p@#;s5jJQpcZByl{s#~vt7HV2Z~*a4NMrB!mlb9n z9*TjT$AvTK-7i2iXYE41W#Qkk7=Jt8pon-*tsyHf7h9OV$QlTPh@^hIETtr+5?1*C z)Roz!Xc*Y>DoKqdUG|rf+@$!ouWAYKYeE_u+?)X-J(N1~$!xh=>$?6oJ~YUzA`-wH7zsx)#u)1z(QWE9mT;nORFnqG3obi{GK+5( zSZ;p0K;Ng-!;cCT*_VL^h> zb&(VMJ8d{jsYf^ZwX1O$g^L`gd)xg-VGz0bVhr%$@uLlBzi18VDRXLCQhZZb;3E3{ z2DkZ}G~#G6Wt*BD_9pPL^M2-@n)?Ap$T;XnvOSY2qst0&#_muYlL@>ibx@q-HOP_4 zUYU#_%78S%6vK=v|8I-_1^(~XXI~-yt)=%jQ!F!?tVmZ04hflW4reJ;(~P5>Lz>3_ zG|!iEX;Zol>1Z_}! za2!iC6lDBBCWi~=9_Qov==XPI*tt0A__6pqVH7`r(_G!^u$({i1nk*}9+EJg@jto4 zOr<~I1T>o%YG4HlMOGBBPy)dOcRIZBvU|I6M%P2mM}sPG3FIHYJc&zA{}C5|UC^d~ z{l}n09J_G`tFz(_oDSNY;~g!5d%Q5A}HF`na6rb z%lGqO8!DR74bu}ajnr+^d5(BXCuIRvRQ=(C>Jwo#^VN&@;=xPIt+RPCv)FOxcbWgC zDg65_N)A{$|5nt!v|R5)S|tV(tXegYp*rDn#D5=7Vc65*BUsj_*uWuqy&fjrwXbMx zRdaNlLBoYiuoZ1m1KJ*Z(l&i5Q~V?l4+t29`i|BgD1S<*Db*j-!ZlghN(Oi~&9)C@)l?jnHV^ z?Z;?xm2YkTkZ?KV#E+|C=GU?zAlapgwpFYK225u#T(y>QIQNGJDh!3zqt zTo3w{&5(qRmKb%y|K|dTDeb3Z{SIePK<%-tzi)fhq8QJZP5|!W#Q^X_aKlh|MWdSw zF40U()-Yaz^Q1m|U{3r()k8V54q&Jo$iRaHzZz!QP-HRq*1?y7BymJxgGe6Vff+rM zB|eL)99E!!7itOEY<*%d_|+4fw0<)KVQ5qzJ6Ml9SlvH8Hx5y>pZ>A$ywV?|&j(zs z#4ML#dU`J?39|=3pIe9#@yJTRTeSdZI?TLpxY6h4`Sq~&U`Yk;tF@bd<0O!w*SMuz z5&Bbifjw?Oc6gdG8D4R^qx)$B+2u~Pr4 z$`_ka##k)@MYg&#KB3tPB8zawG}-U;e3pGg(j#O_W6+_GKCS9^Uw2;me?+|nR9sE4 zEu0V}XmEFTcXxMpcXxM!lfm6xLI@Vz-EELy!QI{AKi|FYy}uW0%`9N%oayPVuG)K7 zm8%;p5U7NTq`dkM$>+u0u;uq67u<}XfQT;L`YxnuR}%1%h7_`g2A*zk_l%Aj=Uh{Fc@ISF-`{!=jG`>=3?(v7c*!H0Zz{O|M# znq+a#Z+kve$y5%@))Mu-*r{tSm$TO2Syk|1`_<&h(SPW zaB9y;QLSOu&{Q8S+53Q6j`FmEz0Wzp@!d?Z&QdcV9*vuWs$+3=u)ImLN1(uY`W@A?W=CTqxt{L4`5~pB>>nYxHK{ z81#8uw0mk$2K-jjzWugktOAO)BBhO9BSLbu>zM{#?S4$@vx*ihKL88f{+-EBw95`n z58vKf&0ezKt@D!)$ea+ zpCDDcSxJh(nOrZwnS7 zbYq>y@7+jy+?Kjzq*bUYoBtB}>aESi3l_4}aB5H8P_1c-m`zp=LgRXJ!(09R42zc< z`9sno|IZla_(3&ueF=;f%aOa=xQ}pRWVC%^n6TZK7il8ik)A}dj4a8Dj-2{RFm<+I z?rou1$v1+M?uO(LF_>9av8Wh`BI)JZqZD9K&-8{xC4G0m#(v^|>JoGn5Xfl7Kl%cL z&FzoPgW5~NS^$o>iJcJ>V<;QFO&IZ`+ExiyGtg$R({4DnWO>s zZuvDPG*k(s6KI=p#H~@IA3Dc!cvPlRJ>mM$6xfu2ns@(qS7nZ77YgFQ+X% zvj3jd5_d51wnvC2m090))3EaU=Yc^V!O?elw{iNQLIB6iw`ny~znr*aJ#BZ3K0D+X zPR}w)rAC0jJV<5o@GjS4v~c5?Wps`PDFEu>=YAV1G-K<#qaS9?`PPM z!b9+^4tcJnXSca03yu?#X>)`$TDXibONmlEWMCfiw7KNboVoRWhGxhni;($kQ;g9o zQ1ky*>fQfasZA)5uUpJ@*^Wj2Q}}Iyj|pacUP))?L+Tp-y~K$$YF{^;zfj%#D^CCG z+*QiyVO6-5j|iz@+*OW}X>g?E-JuMv!w#h`Dg)o1ZN#I0-OQkDswpl78?TOpe3I3{ z2}wc~*BPpFc<3!AMvhT1y`JPsCc-Zf$}G9)`FwrE4%#Uw18bK>3!#ffOS0VfAZT>j zYiPLcsF$s|z))~$qEORFAVH(RIhyxs#~IU)&3+RyeJB(1h4^Ln-6k-zn+_J`;pK0o zE&Ki65vx3_MD5o87AxQ8!Ov2X(9j-5jRQA@@^R+6*xlYcbDeFcK9O@+y3+}}SE~=? zNQC5nq|5$TP%UDxmkV>qU(zNceSQRFDQcnc49GLZg*}90ls%c-4{xby>`aI82rjv+ zT3*c$GDmtW$vE3-?m44;#fYp-vA|6I?#+yEo@FG7Zk%3qlU|4qtmg%$2$@VuC&WE( zuIzF-E}FCj5uaX%T_-XT;5}aM-4$;L+*(9s`k?^x5MKnww zT&$cZ)NE1DeaBQjjGKRsR;;T&_K+*SpbE!3Ylc~TnOn8=q9P$xv^42M1bUY)t|&fL zvrGS~E#QtGoLwhu(7*|MQ-!FU(^HnhhC2p|RJ-4@pv05K#xSsji=X7TnHZ`5> z$y~NfzLzMPIEqx4Gu8&1_$zlAEGSF~7B!D`5K)cW40OrtQ<`) zFXBM4c3F6(%_A9#dHy%Z&yb(xz$1i0=WvbJPve?K^{B$plCY^-1>(h!va*-qqK~2^ zqI-Ma$Hzw>?$D@dTJ0^aTewsDR{vQfNjIBZb+e}b7BG-OS1FK3kB)je8v_Z>rg%l<0gg%Y7cSY=A&(P`2t{6mHFEpB8C zci!|};$SF>q%+A~v$qd`qc1dJ6*H-=m&)gd7u!=2a#eJTX$q^%F0>9M@z+}&Og@d= zCev&@@7u99YMtG+ zkNiB|H-LykM4faw(%aWLUmYCZE(RBb2kXMv^-ruxLGOOzA)80W^0_ZLw3_dt!)~ zx`2SDBxN@uiWYW^N}1Fw{Rd*`1=IB-t4L33HGVDAc%T!13!ZZ;ilUKVi{vH-Q1+sY zXnDyw?`4`asftXAx@-Ireq`YIkc)hThds;GeCM7EDzxH}=Iy+0Nzyze%G z%>v-SOj#dF#u9lrxu8F>K|$Cnf&8&6`4mjl2Zv@KQ#D2lz3o3MeJ`O@u~NoxlxYDy ziqx4wGsA;vCMZiVDh#Bgdq(GxuBX+|`}AtyuA| zih1(29r)wyz$O5tDVpuM{%r%9twtq9;eREDdHvdS7Sn+6Ww@!gzE&MW4~#5bQI*`(qfY`!`Y(^taNK-2BPSf}Gs#I{5H6~V)c&H0e{i-Cc#2&9H)j6 zR7w&m#1?atg-JH%@eFaRd)8^4*`b(N`me4C5aHek4AIQX)4_;ru&_>wwLhf=(73JX z0P@QgbLY!Lp}`QVk3POZ#7UAWZHznmC?#4Cy3YQ4ZQof;&~C$n8|^QhKh%&ogoK3U zY{ttS=^Fp7(9$FGSo3~LdN{yAZV{?ZP<~A@7@8T?f_H-uwCxwE5_60iuRgmJQQYgS z9%Iz7Dv(|g6-Lh>f>YMZAfg&44UoXEM-XlxXxd}fZJ-5q&c7S?vlh)n$Pm8J&*$Ih zCe$DRPuf>LcCmVFF-JDC3M;o@9kBM3cEAlR7urhfVR~e5$6#Ejzslc@hCi_?>1mdV zfk!b$v3Uq15yKX%>CS&6(yiej=pT_9U{;xDuGIDkka(Rr*VQ*3AKMc89u}ggq_KnW z)CKd2$VQ$|8>WX8eh#}E@$wp(c%+-S-qNC(UCg>05{)q1#gJ14O1`le4M##2p+2&S2 zj*=|)FB=YeA7;tn>`8b1$bID}^(1pD_wwJO>1Y&+Z}E$D_b+l4j6@&E9!BsdLD%ed zhUeI1^QxFNg-6YI)K(M16n{L(PV#gH;q@3>t0#)TUP+Or$mdGd7D0?NkK*%1tmF@k z9k{@4(~2Y|Kz!a6{safXfDeNYGhFX%?-T&Dc2VU zmA$wm8NH^K=%PrA=*h;=lr}=iTOk@;M%=xUkIotKsgZNoqwy|UVI&2ZPuCA%8*3;) zhT-3em|%dA=gSuHU1?$Bw7qe871j@7IS6qPVMzKOcj~MejZNOcsL){YuiPz8mRR6B z_?9iixA3ihCETmQ>egSIkH-~$l{Z^McuwZC6}90&n+Jl2 z7JycB7EidlUvmifG=6dZl&KQ&*q*WuUQ<@9^W3u@phD+9`?%k zZ$Mu)Z;jp(l7>~9(LP;i&CV)H|1G30V4wbXERkzz7nCYD5QjjJ2R%R<`Bm-FGs+S! zp^X|bSuFlm`ryBM^fmND$}^go$T~~!);FT3#p_~=Mbv7;-a)C{S{8CNKkJhfrnpmK z``x)LD^;HzXgYAPp!zU^dThB=cU-DzizZhYR2B|qchB_Xd@Zx6o>A3|(xlAju1!0B zNo%NSjTmUQ^V!x=D%o>!`A(@&WP1J!k}5q}sr=~dh{WwQ;{@ap&BF1ctJ4n|Qre61 zDA$9n$zlthR=&-L(~?rGiFgiG0%f>~#nlHoo{%D2mP8h{OB(iF8WO*vV+ToemYT}* zlsGrjyI33<5>iDt#e#CfmClVYFhk#Hw-MO{<3Ys#_OAWD zyzj$lsn-SJ+-M09nYSGCSY|YuyP6Hy5FK#LNuaJU5`Ue5e{L0nRi=&Z$esi{XuIc` z{f#;a$qXdA2@SM-^vCCrH#{dY)iV^M3svB7?oXM3hi);rLPLjq=T5Ky-0%r{!d^?! zD>o@-;c)t^%qno2+HxsIe6n$=(mvAQbZ+mbo0LyQ#50A*{#i?p+`koCmc0a$S>**a zJem$TJS%WL6XRg^>Ie8KdU8dC7J5Ggsu=$+yRk8}(labpW6Enn{`Qzr4w-SD%wwAI zD)oVU=7ZP?oGy*bTx*4p+CXUuRH&q^UL*}OJwv{q%9|ZG*#wqjudK3Vc~2a_=tj+D zNQsaxD^YvK!ZWk82O7tT7st!kL4Ur@w2!y{Zktob*dO=q{Qa2I-MIeDNvuvdj{^E8 zxMK*V-yE2zbG!i~??pFdF7AqKadDU3cV=q1R}1Rlz{$-D6ISc?GrxkFuA3&dB+t_6 z039YLzEfom!O4@;Sp?wlNosaL%BzoflwSaX_ebjTT#mCX*L<4B%R|=-bq~P51Ym_A z!inoAYAxpV5UKG#AfXP1Cv_*nGx0j$l$<7?E9*Q*&N>Vt zkw>l;zJ0n(O+&7(C~#k4H)Y$&c|2uP^uNaulZrR3G#tKdY2&ff?GQ-W={y~6%4%?^ zm#EL&#)7O0gNq*|1p8*=m zl>gQ{SU7^QpFT_QQ;qORwgrkWeXJ0Y`4e$DrUp?(3Iz}cYwM$u(ziMK5>!q7JVNl} zD6Tj*%}_US{L7z0W``C3)3BBPiYt*gJ|!GB79vo@__yVy5H#zla;%+W6xM!3)GnOX z24iFRHj1^(8j<_-Vvb`8tyU6z+KoxM^QAcVA`rD8wp#@pAHgY`Q_VY+ z1JQMt5nWCeooygIGOI()f@yelA(kt5Ok#-hxv;ze;`C8n#~08G1|bc+TjVy(n&9OI z_*~aDz6@-U!7aR4Pm`|1TXUhx5tu(!+g-cJuePFExMqb8)Dn0IM}MEzhW%Z}=6(zv z>7H!JCRH#a^%mO0CENcRpz}SqYN{**As=)3d8q%tv7?IIX$On=p*;NB>QV%ka75W! z{No1`*X$h6RA2&r>3&^mwKjkLV&Pg(Ff&| zSC(bL-M`9x9=NTjU5*KzjGy{!w>4NoC56^=2^t-3ORnxfbmny7KdOTkR$*>hSoK*# zG~KUc7x{CD6P=-SHQ=?bOzD647Ny<^txA7{(dpbs=e##b=53%_?798aarH|9Z3y&& znW&`ZR4kXkm$?-4>x5LeUldEMo&0_bZP@1!^XKt#SNm6k#4Qk5WqAMDY=;|hCI@*F zoDeA$bTy-{qxNr%Ma*zbyv&p^_%6-}Wl+R3@+UtBt#IN}kG3mYa+z>4l$ zz~|SMbNB(_is7*ll;~lTdd{_U)wiEaQ@M$>qEu62;=*x-ed|SK6V#CC(QU`KK6`{t zOJq2BJg8AY#96K7M zh#G#W_PmZeq3kKr$ZXJw5_zOjhV$K-=I4Rq&L9->@4WcyXCLkjixr=(Oi4}pz_jDc zyZMb@GuP+hR&?|JUJP;v!ov|9?1Aj}+Q=x_=Qz zQBiRQ;zo89ag^QzvCF4g2Rt=!ox+1i3TiA$O+}9jK7fx`9I;1KneN^IUU-@f@k@Yw zor>9UCzCtqaxSQTU)TS6{NWTcCNnf#GVpa7?` zY4q-XuGx!eWo8rSTl|`{m`I7|n5Fs_NgnDCR-bcyQ?BVD7krS{sp;m7$#p;g_VOtf zsq;-smtaiXs z@CKW_h6>B0(qI4my+zWKULAd=R&X|7!qb5=7`ZIW57T7%Ts-TIm9KUpM+mtO1^ z3of`Eaya;Q1-B``AozMBn&@dwclHD9Qi~BKdE2=(&Ul#`*WZ9l11OmLgOLY)9u~a|izIn-*H0Dw}iyfXVZG55!+QMM)#T1>tmx)VQRNDK+W`CW629yGYxb zUC=}fC&!&7%p~o^e|F+mqnH#;)kv zb~a;?(FnL(cF+b9JeC69wl9Q=e%$EpLrq7V^!CHKT(0+{VK+_vj2h)W%;PXTXN`aM z#cg6CZnLer?q~M|?K7-FJMTJ}{kFRK#I;&W%X#U`KXLHcCz#9?Z~hnC3{Zz2VlI9F4pNW~Ut6}78JSMj3AASY!c zSCXX>WN)(GN3A?!<;ie2j;megjW}tf{L9ZfCz_6OrmD>k>Sv%b+x5p-IAXQ_S9euT?8?hH zrB7Dn@YyLoa@tQ}zA5p~Hm?@&M_U)uUYBh%A>q^mMXvP(jKSy{_RLy&{O(QNQu;HxR)BQJhd&^YmE-%NgWISsqJBuRrL+e2Im)J zs-5=Lj+G7v)?sDQ9T$T=zQLQjGJIwYb&M2gg1d3e`fI-FhTB<=a@cL=LZCx3`}-1ZiaRbw zxV3uWdEy>BFt=^tcGlV4uDYMY+ng9E7{9D8HCU3mEK29eEHWw0q{t+8AqUKL8IWsK zfCeh6c*pD9(rS-kT#{Vb6o`IchSJOjSRwu-^cw!M7q7rCpnF(4KYO`Gi#rCS=jlD% z9QOTT|9D?cd{%fUAyE}`cM%xxZcmB`;^i>kfuh&tXM_(WCXOVdPNv+7P1)o&-oL>X z6T|*ugAc|hW3Fd_2M`VpL~#@v^uDQsItF-=v_y0$7UZ5Lf(d`ZRpuU-D0NNNy&7Bm zRnogrD!^is6{6ksir9n6InAJDWoSzOlwcz~U>ES#ky013GdhFS=gp64` z0K|UCsW4ZjFs(!AZxjy@)`n%{#7URZEO+M9U*T+=CM(_ZtX2+m&l^e| zc#!hj?-io!N=7?_ z7A}7~L&}MaBz6|jt5jvy{On-V)sFoZ$i%h*39TtbttR=747pNkf%{VOxEh$_uTAFemn8ewKn9IE zTFb$oQ5us6(HkB;jlPSW9iX<6QU26$JD)3<1!~KrA4-!{nk=z8SJ-s}OV;KTCxr1| z3bL?{V%)|y|FENwVdf83S7B=y`Q)XkryO5!&fRuCW`HHX(O*p}v31i*SCdNCnhGj8 z$%g1-YfB2e#0a+KmE|w0W!hN1T|W)ThC<4Pt~KpKt<0%ZbuUTpB)c5i7rD6M?n26S z85~prj)QV{b)GEo(=)U#CF)%U0lU-Dr=od&Z9dN2Wsmu(2z4#EF}sR(KYPZj@IU0{ z(w$)W6K;*1=XBlgf8jXGJ~!kZU_rt{L+yX;X!j~FG%sGe*G88{6Zgho*J)$KzSsR= zhl?Iwnql?}t^c-klg4GO@TGZ4MN6;==@@fLN=2>2msmw@IKxG!veYsJ!j^9`dzd%V zz&~*|cE5rUfsO}hp{aig-@RD9Z$f(ceM%)ybt`jSRH+s`L;9_w) za{3Z=t`9(J1YcyPL`_-E5QcD*lkbmvHy_0%w-BJTk91rG!i>^;9Fh_3S+<_^=c_DS zEn&_$RfV^()CAc?QpK~rx`62R;|d0t`#&@Fc*?fgH*~;i^WTHr*Mf}J&_JP!X8Gv0 zC$^ESe434|Zgo<}EyiN_aK`IR!qxzyHi`!A+a1d!+0Z>9qv2~;envJx^_PQAh8w@b zMB|cM1tJo|!|qYluy?a3Yx4Nw;f(Cyj4X1G(zONsNUtnb9+ z%NS|K_b4Yvlg$zaK-z#F;4(dpln#)bG&z_Z@q#SKo&rXCiHlA-Rn;^`%fS_4Vc4zw zX*Fi6oJhvmWiKCFtZ+M##Q3p0wq^F&r_pG)r~fAF2=Wylxx62dB^kMDxW}>JQ0SSc z^mSy+$Iu}tC;%A>Pm@_B-ik6RGqsIV|{!c--JkG_&N5_NECN(~1{O#nDBlL(=f7@e3>2A_i-$r|fi)rEmo zCP|t)(DD9789qCG^%|FGpB?FN$b+be4k!7*WL9lx@WJ~&cM?LnCO6%!tEV;jn(>;z?9y< zyuwa)Lc{+~x?e3;1f|a(_ps`|OC)B$vPK8z;{{wx|5Za-3b=JsH~@F-cdn_FkfXwO zJ#=1N1${hh+?=h$WW26Yk}3&uXy)v3TRU8^J~DkwLV5Qw-m{W7 zzw%j!faOo(UBQ^hy0E}_XRq_h#eq6t!R^QGfG=f;O`M;@;S3+#mEanm-h_zH&|-fE zjm zQi6pi$4%se!yYbf+EPKm-2DxeB+zHBl3^NrDGzVEJAW&{-{oC%N;g~u7cOAC0C|`4 z@kRVXapp>1KB+?1HtuCeJT7_DD-cXDJ$b>@MS;6fJJIk{_o8rtrd7A zLt290zst7L&xBK+FX*XA%9kIn?P~t+%|ah55jYpgY1eVXS;F82`t2up5CF!+wavQB z)r4TdHES{5h|DL;no@Q>Y(Y3{anedU=oSkKs}gKWJvUWl@pG9Q|M#N&>^1mL$08Ip ztSwf~o|k;{%yl8$n7=I%zDKp{30$ft=j`8_BKisfy36)>QyCkRCK8;8o_7k`m(fR`iDR|%mWha^QAD^n^j zse&7yks;#!4$ypc4B{%{*H4$}Dae&=iS>YxTDpEfXmf!%alxPm;oj+rz_5r#hQfijve`)7ag59tj%@op3B#ncG zTVw$Bo-M_i=H{l_JeaNjYQ%(yCNzx9w}iHrbP{;=OPdDZ4n6~jYT3=RaD)(|rOfeA zD&w|A`EdQC9p&`+TUg`4p9aSqLnd*G#Fu`!cqPWYJmp|zlC^`f5c=QW%$L1zmi}sG z9R+4a%8B{2;gYBzUj}9^{Y@a;K9fIh`*w$o0(Fi^!!FMVzy`{c(fErB|L`ZSBHbg9 z{&=s50;-|HB;@#%R*-P_8D0s;PgZ5|P>J~D0aKPV2EC!~_ml2=rwu{Rvz0-nz$F=c|VS*Q@5Z9~fp!Q*_$Ta?`NjeLw^HF)JkQXV~w& z={C7}7lPn~V0pxEAA zu9<5qJZg-xIz1=0fpCqh+Irg^)3vqwVhO|Glt+k2^XKSKG@>0pf0u9#A<=d8p-tJ* zLY;7KE) z?aS{oJLA1mUrl~oi=A;QJCf&1)nmYpuZV+n&bt?yFjrLRqBjhs44!V>OV&<2*UOt` zuU9p_T`BIqEvm>w;tjE=O07dcu`;kbb#X`5-|ka#=FO2a^GSPt1{aBsV{jJ_&`aE; zd1~wLv;}wSBF9ZKMg<0fC+q|~_<`wagM!0rZm}7}T10{2ZR&7Yxo}glNJ8^>Fo95B zzTd~o$%<>UK#WCYN>K7h=KZsEZfDt_rY58= zXwd5@%Q=_};IVyDu_da8R&8`}^swu+`=YeukU^ZxK03v&ETiFr0S9$uX);?hq1PAF zj_YI6&byzppD%DWNZADeBpg$Zr^sjar3^US5(&yrALN6ZgM@5-U!g5_T>-fYS)}L) zz$G|!;qax40pzE;p`!Z`0;yV=aTRUA=$GB+7iW6-VV7D5`0foQ?=f_FF{w`z`k+no zrSLH$-IzqJ(Y!;E>9(!U3xISJiD+ov~)Ac>{P7rbdmI5AE6$MCOv2H zBfqruhLEm(zo%9dCsuY2p23G%_oQxekPO1Z60^w2ur#dGR`moyfEf;1|IPMmR zKLGcT9oAZey!*AqQ6x}>xbX2wRwhahLeL!s3D3%lwIwfV6ct_+Zi5=Wm#0MND83(wo|Ym3Tz}FN5O;TQq?qZw zuOM`LbRkS5a=ir5$3a%Y!pzzOS}IFFLo>C+@4ZOTq+XD3^fd5hJG}L$ONhFxJh}~7 zM+recR2b#vBSHb^&E}NAd`B2MpV(QhM{3ctMsHX_#(7wBgL|qEMMWG_AB(WlnTccK zPMhkR;3M%jf!qHPk-xuO5ItnLD}4+2b-{X6{L5Nzqo3Dzmo@!*Y{p5)KLL-A((@QP z7pr#l9wX-$UbOz3y}>5meCN4bCAYP}U8ZU! z`QbCGomQ9JZ>Z-Sh#OxFV_g0IN85rv zr{PKInU0;5gsgb;oH1NM%avvzTeMC>SPI{~)?F`U;o+E$wvE-n$uY&8nJ17?A zlxGVMaTS~88SggkQ}ubwf7Wshud^yeIHhTAP%3}dCFQK(PnC64160|I=_`uM@aGvA zI%eI{Zl^`Pv>uLBsn~?J+lH0}ilw`jMTeDarRV37)AbIS3te4)&^`NU9;JJB_1oqMxjjy zr|1h_Jy^yx<^M7tR2o9j%9G4WWB64OKmP+2EK%uKOANi1RKhX)xp>gM-?Yb_&dHvK zB67?YXenOoX_zx+9an%r4VStA6+fY}6ch-M8sp*k(VKJ(gIcN13GLkinro?oAwy?6Ld=U4zlP-A6^ zgCpjEz|Kep_B{#Jeti3}#sI;SfYNRI(c)*f^B|)7RJIggdE)Fr{y{?T#tGW5yZRj7 zkIYnpA31=Ij=Kp_;&9CM4~s-v1rl`2EEO0~l%{DhJ)4wA4*wC)B>yi@B5&L4MOe|S zVq~aHoaDQfJSw2%^d7EX)*v@UcOLG2D*WX3DtO&A`LW71LRDqRPBH-zD(pes^J*OY zBogkbLu#Shc(A6>M^F_Jkn6ylk2vY_Hw`SgKiCjH(`uLi*+Pb003b}`g`d>SE3In+ zNaJPs)qvqGt=6`{)&HsGiT@I-DSt{dxr$r12EbbhOql72^*(97KI8j93?}#GD z?1Go~?t&$=8;cX*d9B*jU-7L-YyE#)UExpcf7 zyQI1RrO4(3pOwzo`w3(fYhS7Cru_rSWm6FdT;r@EiG=`y{u75AjlMji{UvTc1)jEI z`CBQaZlJotdLKr0MrR(@{pUS7ojPW?qaXI(d+Hx$SJL2mAH3t@VsSPAP2row5Tuwy z|8?Qn)0bS7`PiqsExfwF55_N=!n;A0HuG$rnR}v-M!~9`Eh56;0L%LMrod~LfZA-K zR2|rxe}R$dYW~E`X&oz8SK!Nj`P*8OUg97(Z1bi$=?-3>mAv_>z*S<4}o$)4C!R77I39% zFkk55Hte<DEtN9=AxeEaSLC4$uYRBE8-hYqgtW-pX3*V=YJQU-9B1j--5UDKzCI(Hp&k08ty9+@+_ZgH z$v3S<<>p79m4(+RNs^~_4F0RtU7UvkFcdg3vD4v6KTb?>Kg6l1I28p-&agAe;Bw2~ z+#=MK=HSqMd&|Y9^%+Wchh?phm7!XvJ|d0nPJu(B9Zp=b6-U8&AqKSrGQ7RE_aqd% zi_oGd!~*}Gqt4_8_n5HKWUv{n<5C}HRw`W?D}0_#p~Dlz8#2FdxiZOX3s;2WQHba2 zxP!@6qCd>HDm|-=JbA13Al&!ks_p4kIZg}mPwKvxYPEmICPY&u@$>RgOdzwKwS$(9 zs(}>X8BcQjQBN0pzT@f&_HMLt$~L05QL zTxV!J4LderS)bswr6Xyr3@?GT)f18T%BL&)sjDrApV~CZK$dlUSbVblIDMy{C6kq} zH<@L`1^&mTFC6|HBzHZOywh@!dsDQBYVdPdr%oNi3^*b|NJ&ZJ7ykq*0vx6Lq5*%I zEuU%wET$v{Q$$Vt^eP=l1hO#0;mzC`#yRDWVqyPomc(3O86LFP{o zU%zsLewgtg5D3VAyua-#=JZVLOO9Eua)w1Bx!AvWx(>&a$g+l#Z*wDYBL%!Xuz6n+ z>lzU)>ZD})Qi?qc6Yao5$^2G-$vp3nCmdqG9w#s7nM z;)BfkD<-r51^CU*+2F5wj{D&tI}>$jNRyTpX@9k#1W6}=vMFi$N$pm#TefHh`ix5H zSq7<4(8Wtav%B|#&$;p07*xxmw^|OULwm?oh-sr!q)|(gq=%Yt*cs-U6uQq680N#j zsy~rCrdZTBDU8)(H#(e(zNe$H;BOP&qNVtwLHl{l8})b zo(-0)GI|EuB^%Y|PFF(T55devi(($dS?;LG+m{T2%d0)(U_FQ~780aMQfn9%8FNLz zlT}uuPA3OtQogW<#k=DAv4{1Nx}aq5CugEvst_PJCmRiYW?wbwX^QQms1Qd7e(Umc z`{2Bw4_yaH4*mNR2cX)Kjt9}Q+Qz8Z_%?R{9VC7CNg5CuglW1ohR;GmhM>xr1NnL7 zIQ~Vp{$;iZ=%Xz_M%@JLV~YVS;JL?Ze+}a>UzXUa2ZU<-kp93Qt}q-?#>f*D`vKEZ zD+PAJpK%c@G?D_Y8?D^$o z_-pLC~uQD0s*n0=cH{bP2n>6qzYJ=D_97xNOW5B=!DG(j9l_ov)ee8 zyWDw&dmCOr5a-z=C7<;7=h5jxT;hR{MmWbtu52(9O(3NVsTcGY|NeTZl~eD%`~Q&~ zTyn#(%B&a~D6RfH`5gX8W@qDTgTe8w+H$h~jy`}#p`H&>95%~FcS9guT6$)E{f8_> zDXF4<#5_*y)trVVv!GUv9W|`0zaZ~lwc&}hl4GZ_}8!F`hNwV^oV!(fBL!Lk1 z@~tSULVXXq|0lp*b3FC%c4~ETzF52m1K?+C#%SX##yk=47?HTOb~ zJ{G3U$G;gq#IGk&=mk5_k1qbpuhOvi`EdTn_s;3}AK%{>@9*61oK|;rdt08I|GKiC zSC^DO)?su!rO=>p^88x@UiE+PxKxCJI%jH2qRVu?nbcInG$ex#!j$Z~))KPS=-ONYE7zt35c&b zmP}Na*6sCpBb3 zgj`25$s7`5>%}`QoP+&)?b)U`2{I_`^20V{e{ec{Rt#rYjTEQ{ zmYzmVzmP`1v~nW$2>9u+TkWt|#&0yxA0~?zCPlWMTvEr~W_i|+&+U@veQ?S25787C z*REX95Y$TCgfp;^n%Yed^8xw2MMdwwu0@hT)>mhm z6<7j3Vqw$)8h+zHv=H!lUfzO5R{F3Ey|=12x|goJDYZ8D`ZB$49Hnu|%`I|jslpqk4iKb;#(po1C#FX@+ zidmK6Rx3qh8n`y;@lovwX5jdK!f0d@D*F?gsGkTIj>V zb~~(n0|j+1cGdDGaKMmzHfiTbftS(7h@sua_`3NTi<<@qAk+1PJby;1YCkcMt9mg1ZKHC%C(Na9Dyn z!QI{6T|ySuZ}R)g`(C}SVyT*)-RYg4zW3a7Pv8DJE4c&eJk5pd#ZM$c zw(VSx?({|=SrI>2k2g0p5saca^vuf|j~KL|ezba@)r^yl|IwUhUW`zqL12UXPu3OR zhSbJJ3db&rOKa0TScbnIM9Zj;|CH&FX+rVJ93RmDz=^ND9aKLrNQax`oUwZ9MKrRT7r1h zqgmhO%;bH-Fqgw=-}$~1%ZM{X%293Y%-O5DBggRdF0a1(a!2^MI|3SBQW^tZ$}pOYRU%Gm z2!qA%T{6mHCrD!-K}XnOQ)fZ~E+>(KRWz>Ti;3xQS3&^;lpeIaMhii!UU|{)?1O}B z7%2_I?4oMwB6JmFZPJp&cdi(Iy-Ip^qYx=+4B)*YkP@j3l4N9)qa0f}^c+~az9{w@ z>Y##D&`w|!<1X41-OuegaG=`(Z(K7rufc4}nHiyWL~cS=sGf0B_QLQM`iy4H5xgq~v|KjD>`R+}WHJIecBAxeDx@rd0h3A# zh%{+v(7XAo7#KKZfe9LTNJ_ua=!|M~3j=@Am;sfYEb_Y+3Z-%y)iPT3L)u^p=G{kv z8p3rrDbVN_?EMmiksV=Bfpe6=z>a>`F8xYh=Ke`h0Z65s1~~Z8)K&l4N(?LR*6V>k zMo@E0lU3)qcjxl2+}>*&bBCzW_w@xZTT51UjMA_IMWv%OVa;zH+9#A2@X1Tk%V|~1 z5Ev#8ns!@`fYD;%P76)fAhCyGU04*d;ryU+*rlKg{| zTK4JnpgYpUNWOT`*gCWv-Jq|SxK0^XTCnOZ;DtYu-*U>5a`7XqPHzYvc7^(*dKZUX zJ2Xsab-rC8J%IOup0~I#N?9G_M{oUtwT+~%jp|1OO~oIRko`WByHR7Oj+gA8X2=KD zc+~qq)Y@0DqZPG!Gg17(ro`eH=i_%N+alcWqefasck-BHGV?W;Wm-)T-)R2ghl&t4 z(-TWe7XhIiIee(Iu5o&+m0!uWjMn;R-t<<@W-F!MJI6TlFLId95IGOu#4c!-80%aJ zFESgwg-MTIz5M}s+7x@$L;IIwRi>P^?gmlftsS$Rg0_)@`((@Wr{j-Ai|hT8a+c}! zg&t&Nlo>Ltr=uv#L?^k|7sux9w&Y_g7lqzeK8_mv8$Le+qDJHz)>Q`5C2EC&Z_Iuz z)#YWk{F$j8?4 zTH*$QxZLY9i}a3azapyn8RnmuN;5z2HR+Hel#TUH=$l2dcq-4PZ027?`O7*wqSILp zeXJ054rWmj#*29lA2sQ&^)v&R5m{nfqQF$51CS42l_t`E$$^Jz&PtwpQcXJ&kwK-XM`)S zbDR|>kQmNtkFd8P4K?TZT2x;%vGoP!gw1T&#}*o=Yc|=KN%DK0^el2IVbUa4jy{C- z`FO;neHU)2APN{QEuk$lJB#6%7W>_z!~vS+xfPcY6YFixe^ZMUrYT;enXKe@s~yvm zEjo`m8vn_31S6dSuqO$MdE{y_U%T6in=Y*P**S6rn+GvdW#VW+|}&e{w$frKr? zS=2L7MJ_3l%!LKTJp6vjXqk^yb(4K&e-Os&;YB%j;?m8dM96G?H}(t-1G668>g_KC z9EAgf)5gq6E;E|=-umEi;Cjx%^7Tb_tJn9|6@wQJ;wVe(N1Zi-t!m9+4^Ikfls2R?SY+DZ}mBi@A<(l=Dt46`W!To=O zz!lDOd%vF8ad1s<=*}_e%3fM-H=f`8?|PNrFu+efWYjckT`*WNdDMSPuIa1il-j)_$YX%CQVfw4fMZDdh`oiPe2^q|!oPErL5#qeA(-nGE%!X7pp+Xhsrhdf3=;d zfn;ABqcgd077sR5zigJf8xA}V$NZS-#%lK2>sHP6iQGa%vZ>*bqU)+(+HsPff28eS zxK6vP;KvB&SHOagj8^$)A$)4 zJPv_0K0D%{e5v^4{TSfn!ZvxMiu!!X7S&jh+uV|HlQqW1_$rwsCYH&XQY3_!Q1N(S z0vV>#Xmp~F>ChfXmRLSIXJ@uNHg73Q+82l2KYwrj*hgcQkxgu4e6ki(>+xdQz?Wk< zlAm>jwNro($RaV8edBWXZmt%=4-Hf6^>IZ>7Mi}x!cTEjOLK^7&T>Cr%KEPOYNBS< zweTG0?~!y5mQV?AD~r#P>FXFY1`-$-YWKoWSWJ;eY}yi%_e%BOJdV$^K6$tJHUw4J z&d*d)Bb(xC`ONd%AQOLmtR-|JvMt<8Hq}=hZpP@zOWW7-)8;)>$O>8<9-DN8mMqkO zw9)@og+&n@e|U92KYO%eapGHfN0)A{`}Xvdfc$|JfL=D{&DBAa*dE!w4vB{c-SOU5 z{3jQdyHu`hRhLUTYyvG&Dn_h6JP@M<~bWGAy6~iy4Vdn69I9 zI$S^P^^J8>V&!J4I<;^o%%#S)PVu=gNQxPq8u5WSKUASxYRl%D0P&_YLR1yb(^P5Zs9-(32Lh8utBe;zHx7Md z4KkV$Nul*ynqb*5^n_3Q7PK;$%r_bwnvxuASR|!`z`1$E1j1<&4Bx#=BELuj2wR$^}PuIpj~S-JDF+NBj_)2mjU!$8JcKNSzB&8lzg! z-BE+^Co9syM}NR$v|g~Pr3|;aL;9PH$I@8MR(Ev0F8k1h=N%{bUB6t=zf(Wu-vA?Me z+C)BiUc>N|&B#Wz=kuI#aD#}h;>2*B!+4Sy1IX!?OGF5+*JKC1PhaeB>kaz!INP>* zlcK?~wjm8U`*weGmaoh9c<6Kbmc#4YyR-ZT9$>GgEH=W8&Z3K-h4&TCvm5Nk&o>RV z_b=C0ZdN~?Xdh2K(qDe2gtRwiCu5gsG#aWB##kAiadOPC*VuoXex7KYN?Zdt5lxGS z;YN!G>7!4aG7~prR!{S=4d>5?8Qc3RC(UO>0Sy=BxdtY58@k+2+zr()74@mNCg%N} zOq7dklw^ijDJ4RPgDzDs$&@S`E2AyH(#@Ykic~819u7U+Fi+a+(<)X=9042SG0^sV zC+er}vh0Z<+k0QZ^)XT3+F)yBg=q&5ew*Mi-xcY#o(zk&YQMP+D}8pMhLG}G_S&00 zb|)VgrtL`iST})y1^21OD8>y3D({Vr-sP1H^XGj#!PKiWw@_p~Erk^~)USk#A}cER z=1u%T_op}wnF`CTfSF;;s9UuZssOmB0TgZWyfhXjJ)47}+9B|s%goIhho;Z0^x8De zJOd0QOb3%<(m#8{DgHjhV_InczB-S1aB^wx9o_MFB*GP{BIGwsAC|vxDm|T3a;&e( zLex9tXn2@W>uT?TElk|3^4h>PPR|f)kf#efe!DXxeIrM#?y?wUT16r?q-F78kdnj4 z7N5WQ*0&f@ftXOixn~&mM@)s8f{a?~*$*R5zexs9Q_u~6O)|SP&GJh{Sa79P!CN?G zY@6MN4)^aUwP_(QTI46moYm(NQEWc>5&gd0|As%L@6^E3%b_s%zZ*sj1`vA{p=t`p zf&vdzwwjFjiM8NVrShazO6Qzw+WUBu2b31_si8byZ~2II;;Gfuz|L8&-pujG!f3{A zs(wwXns71)l70Ed}Qf5hi!b1hP zqo(=LxWrE^E+qX+YITdm@oYA4>RX13F<^5d2TC$_6J>GVNx5_3AXP-2s8X|pSf>E? zq7sY#MlOF=i}9uhp-xYpw&(#Fm;``0T9EY|4&=mr zXZ!U=5|nxVnKi4~Vb;rC&FYES!6_4nAEjjCe_AX9Su`Ly2|%6@6vFMJ;v6D$6GA~B z4o(HZOoQV37>ixo#Ap0(WMY5$mt{GB z>Vu6u<~hchRm6TD?BVY1it4>%887QWw9;uEV@<-|k=^2iZ6AJR=5Z)+^^%ddWX4&$ z|1gGE?>x)+ll1&5VQEdyboJRd;hcD51Wa66?4iUTanP5$s9!kMiF z>0FZr%yT(s^=w|pNfwss#TQA_P5vKa)`wR}ES%-O8XebvhMolm7Fy^Xm_GXND#>QUwX(J(Q&<`P!P37-AI(wKc!?BEu zM!%YXTFFUL?TXo(3jr_gdZI(1}8e)lqsg$&vh?E{S4$H|V*gaU1QiE3D#t=r5j1SZcKVs??st4Omj7pzpD|Nl55N;P! z!E)n~36GmsDB!KK=KDX0Mf&n{4|Ze|^!|Yn*a{7j7T-Vrfc^I^GY9dP+rLxjOG$sv zemI5eM9F5b7?MUj-XAX?2gC0x1%MS*=gA3g|L*%oNT;ZbRIMN4Tl zxn8WtXxqxh-~AayXy>bS=oOX`qQQ|D4+sp@X88z#A#foe65t-}p@OCAqxS%RxL8h; ze93pxc_B4kF!{%m{>z=dcRb=TkLo|oH!~yVKd_T_(c>iC;g<29L zZ{la&sXkE-(c9XKg<8rb@||CaY2N%!w^<`_nCR&C9FmfF@v?<^OfqUEQ&<$x>3Kf} zi+gEm&@!*QxjVN>D7r^4by3`vUijV)k0y@s3x1wP^3~;)_TU(n&iCrZP}>5@n{sF-Nz?23=csO1OCj} z`g};D!?YhtSesefP(*{|CcqD*;%4^MX8KWvnn=(i-_=lDdeG=h02b4g5S5d{ zyNbF<#q1EI(A%VqI^A@gic_h@QHdpoKx(g^_@;T+4V?HwiRLB}NQo01Ck@H}1Pyea zXePHz-(eae%KW*XB8-Q;iNUlCfpIsY^~BBCii)k8NpAt@#qkbv#cVwZjwh>zG@${((HH; zN^$}i==RMsJk+osmHxh2VPr5gK_&%9f9`I?2h>{n%lF_dRfB+M^UTp{>SOzUh`1|e zm;FNiK-~ZzUM&gEEU#!&@n|8gB z>U{jUgmKc9!i^DfQFG-Maj`d`N%r=y9(k{&xloKa;lQwwP8l$%B;CtuWNOi26kw&L z5-=oXlSygg$JncbBkx;27lI(kJHJ=7218D-H7) zDXT*=>GCr5b73C9G#rAk+{rS`I&VeEC&RfCS{d)WyS5LONaa0zsI{+2?#6x(iA8pl zfbs#lbXL(%P*c8SKHNfQ4-s1`naWU=mL-|dtx*3G;z!^eji27G$i=RwtCY?d@?nkY zemYa>st@J_Un;)8fc|NhN|5{9ULu;{1Nq?b3I3}=XXw$`9CH+RdbhS*VJ!9mXtG6l zp{b2*C>~zczI6hD=nWpdQwvX#qlC!^#H$F-F_#Ih|Kv4*5Ufcx6k0QvwC|W$V7zUi zxKt~i(nM%Ku735=&MAT9pHVwjEEEzd9KrxY6Zya07`UcjgQks5Gy$_?zmLhoy&Hr+ zLj5F!Kv2weJz0rLZo|qV3`T^fh68BP9^BXz3IdIN{(-^;`!E@dy_V0)aa`vjQxJd! zHwl+kg8QROfE@uMK$jBISx6AiAfy*WU2sFYWOSjclTxz7IP%6)F@qFC$dxk zk0`)7$3eW;c?RS%Ws;V_-F$L;EpCzDc6cCcNj=dc>+y7hilKo(9oKyXIZ;^MMk^Ow z`Wq~37SbiJ^it~CV_F%ctY%HSvb+t5`-nZ)aqu^*pQ^?T3u;aphQ34M)~?Ka^5`_; zMPF1jj1RRdN+siad7}a7xHp$K78VPq^ajkH=@+r67+L`zrXQJF`OS
      &yw&qqPqag5z)8s}rMeLr*bP9$LJJ#Wtum0f!a<(kP* z;2ykkgeB~HZ;p7)`Y`;@ z^ZF`b5ee!DiLhn8p22yrW=x;?9xeb3kS(bDH@iI9n zT0W9We(9=qw!S!ve0c?Ip7_lEf+)<3{&Fj3-pTfHYCrHfZQK~8vQl!3mF{kk+7_#c zy?_=@@fVe;9+QetzzUf4{_RGY5sxD!)0~D_C$OI%pyt@0$PqlZ{{>X{+KJz5+4_+3 z&wcyP%XrRV#Q}B8xz^`7ZQ1M^t!tH$!IVvktZ;Bt5zCYo0SrB$9RrNcxIg>cSOyj?R$3w%1YY!@zd+cV z?=!INpE)l;Jg(Xyy)OaEdyoMfuX(&!<<4dD*>A)3-NJ4*@6c1WVUsjzantHtNNHdf z5aPVcR_J$et2eJESKqaR3$$d3RmK7+k#A9WIr6aE1%C0r4Cf)}vKNT?Kd}&h+-%jjQ?Kq5Hk3afF$sm77EiPlD+#%lv$w1RQuG?!rh$bSqlii=1366|$ZjAo@ zD;BsewU0SEIl(6%M9AD|Uon{p)&6oT0uyEivPNMQmknn%zs!|#se!1n zWKuO6TXr2OH$$ekcgl$8i7x}-opT)|J``!HS;&3_g&$pc5()Bh_X>WAEE-@OIGHaT9ljEkgjStAxSVo>xEg-B|JiM?zwvqdBq zv{yqPMmt_pu~ zvvuQ23;Stg2~gy~<<>om?X=NSE_%J5&M?P0dRkyFv4ZiDt|~}2HOzg1OEYh}E4SYT#F4RQJEs1Y@ZBKXnCH;V-O#o+U}77PPU;!eb_ z)8TLw_rCEZx7232fCOC|5%6#-VR(9A+JlXUkUMvdfv(svcHCYzn@ZU~@S+2l!pA2Y zxFDZ-!9ZO9W>U##!X^oC79t~OHEt=5eq8?rxs2#sC_wlj>&!|OMCTL*U?GqK-W`;@ z8xcSZG~A#Db?ex3;jl@G(7-o&cjEd3sn*73vRCf0gOM%g?xV;Bs-FA+a%iH=Ek<=U zHTKW3_4-}@_9v@=k;F>@%^-z%8ua!u5#&^$9n@Fw8uJpQ`#X2O9oZ71@CpC#q)KHX z`zwt3+jNT4 z@R7PL++ISDelfOGgAs@GAPh;U2;m<#6@oDx#9%c}gZAHP=z*Uw8@#oDLn>9GTxE~a zwI8Ys)M6O&73(eR^G_YGx6k@0xA$Xj(rCHWRMRY!hP;T1#m<_hd<#k3z^rSx>A;>u z%rH??XYV8VXTZ4W$PT=}0Z0=pYh9Xj0_UEcbhc6Sl|A;EykF*1m}Fa)^+gWlxwULW zJ0Hn8YF^-2+oDIl6^#ML@>@|5oF5k=l-a^J0J*a}9b+;B>~M!kZLxW6nYsNS%0?4_ zA{SNa+~(?z7``r&h6N=8+9bYy=g*NRn9LY8V*L(_Dj&%=kh<`i7blxJi1L*`oPbKn zvZkoK;D^oO+>sud=IBeQ1lwz*InX@lwAZ;l$6li6K0bT`=@xJ5qoaKl}*Hb zFhcToABoL3K!Q-cgayH0U}Y=tBzkF7=~I|S_-GPXR-_Ytpl|~6;mX@s<1<=lb+ArD zaLzi>ixx1<5`fM7D<}FLw22$w?vp|n@0;UPfIfpN9^XV+0Z}h?xX}`RNL~|<@PgA; z3I?#CfL`2Yk#S}L0bG<(|8ntU%9X^SJBS-418!J8)us-b0<;i(; zL4EmYWw-`b^C~J0Q>A4;e-yY~btL!yiL2*j&mtf#Ch6Yeu*ea+gIXjfKykD}{vXUh zMkbIcqxi!_v8^QfV^4vr9;&z55l2?Ko&=9cEdR9J{#|c_ohB2VoVPUsYew#YBF9~Z zlH6L}N2JD->^5&NtbE)2hUgXzSW`VzezV6<^0YM5GSdaKptQCRHB$ld2c7pi`G9rY z>UqEJ$gj(3txCZ#qdKe>^!6>KeGtvb7pID|_1 z^^AbjNH5$8T%kp?Is4jh>}dcMS88RMYAFJc#*EwxG@ZG30?f;!EWQ>TiYCfM^Hx&> z0H^CJ@<{9lUAVRbzs02`noPG01Jn$F14o>rfB}v@aO9(4whO9=pJx|HV!Csar6QF9 zaN&9#feVh@dJSO>>0&RdaadhN+&nvgD^d_CL#$E+H8}=EFc9lC(GYWFdx3~~*n~S3 z-->E+6xr|1JAWsWqiJV*9lpPzUi8lN#eHrXe(;n`DZ@d@@ZbhQ`)1RLJsGq&>ARz^ zObj5I-qc)bfW7&7;K&A@L%hkN2GFqDm$2@=aT5j0rWPCSZ{$j+gRp zG-(AbTMA8P_fguAG@yL%R2~p?H`;FCrTo;kc_<9N^5e7)DGos(k2V6Fv*to7|I@D? z7kdRvu53GgmIhHtr?7bdT0R>pToXE4^<0Tsu zK-6>39EEVdofK)tpCelQzhd#NX-xAEa#mh9QkrF~d`>fl=WF&H$EX3kzEu%9t2UF) z8-^cWOU=47+)ESMJrRGkFT7dlkZoC?=nb?`A%x3`h?>;CuSaCF>w&&1&{zRKw3R0mdosuNg6%|tX_#^O|ki9MlRHc zkwQkXQbOE*wsyt1-4-{J?!iX^Mr1+ylSws$AktmifSNSCxSSb8dg$0j-E{|T?<|`y zLX+R{@F+n z7^ReF*Oq116meHvjEh>Bao^V?*R86GPu#e8)TpebmXg=E0({H|p6tUSTQELA?V;Pp zZDR6OYh2}OE2Yx?@F#)EjSLjhe>dQr6VM>4CndJ`Mq?}Cc8g`Mcpi5&78>C5Wb_{d zL;>m5#6jpz9H#$N;~BI*0v?usLi=Val<+E1)UnI`_!6|Bfe@l&5HR2w3k8+-@pEPUEoqmf=5vUGNJ# z0HACDbRINt`q5yAa`YV*IlyxPDEpN5Yb!y#o8&MHt6Ex_QA z`7H48D~Cr?Z8qUHnG)J-htKd487gmv@=B-y!EciQx@ZzbbTg4{aIczOYGU5+O8}Bw z;-Nj+d~i`jT=9ZO%g~b9RuGUm?f-1ZSs_#b{`il`HWIGJ<#dsGs65ldYg1=nZ%xTC z$!Ef-q9{+gs?7XSxeF-@?&+EOK>$ee0C^kblPD>SVfUxs8KuJ@4nu&BWbn$D#)}tI z_c{IO)R1Qvm0Rlu6=Xo1wD^D616+*!Fl50Mk&)VOCChR5k~D9M5uIHHdv`Yc-dEU~ z^_-X5jH$*Mjy-F+RoNhxHTZH%-{S(0fs)7@lubmpk!xxk`e6{aq&PKmyyaHv$z?Vp zbu@;idm#jshaspHh)ENtXS%cB6koB~y=8U)eMdxs7mhibym%yV_IAkU-~qh_Tn~(% z-Q;y?6(LBE>Chb@@SaImuz;LKXeyl7TTj`Djs5UbcIyWb>Umy(3*b=SE%YDqq2uc= zu$24j@;NDyar&K%X-1Xjz5^Jx*(+}2K<-8hP&ZiflFY%?& z)c`22GhLgxuMbETc!uM2jN#skPG#Se675`am3=AS-p{bzXMDNB*`KE;y5+h(Ypl}s z@*9svc^UA1j*ni?PgtFf$T6yzaBL=f1Z6xY2Vh2*?!EhPo-l+HNbJauvJ^L?@-LkH z&#Mr{WJ@f_x~t{5baN5{Acp(YuGqLMgU}N%eE>5*&DZ80uF-U3EpiF z0`36_g2?Zpvp@S>oKn`LT*vUy9zH*aB0`(q9L5JS{H0mRp#ywk!K`F_y%b@opj=>X zLh0Qtl7_!kiw77Uc#VE4J7*wHheSXmZyjjJ-n9^132Vp4778UoyxIpHn}KwItuh|b z`-78@zREaeYVJ@gxJXIUXd&V+AoR%hEg5Tg_VlV>7k~U%_hlRpc)|R;#<4@Z%FDb>sRW5~q>OWL^sD z!GIdUZ8hNL13vc4T+SIn3Dd@=KxqOm7ytY12rkmSz^@3L4!l9gI$IWF3Zve5&bk94 zXQid#9ynuwzn^h;$hA$8mbVJE9lmotm+yHgcgX5Ikd;p_J7xz18Wkv#I(gyVs+yY3 z?AVUB`>6Ck+A3fgq#)pi2z~nk z=nrdxi%w1?Co2361-*gfircAh1K-MRdkYRG6AqBiw_TX5qlntNnQ5#{81Su2v-X@2 zMos|d@11{1x22sEoRu+keZS(f{Q1$Z){VG6I=REP@aO>t5Mx$q^b}n%_Kcnxjy!7} z5v{+nPqVG94Id|67kmSU@;+Y?9p^%D0rmD&54YKypEf`0XKm+9^ocHVJs)w1yb2=P zS#L6tryColJtWAlA!ViEqOa9R{5ofK&u%L~$)r@x=4517w&_Lv@0y}B3&h4M^98Pt zlpKQ2U=~b&pZj4=P1{l`9hm2~4=s(2)kj+u_K&?^CuL9g>DlO|62MT=*HdfPclX}W z8pw4%ZAtrk7M8$PSnt;AUay3gZ=xPc%^!|o({V*iS73>j?LDkiXP(Bc+2&GDAC3UU zMbN`9&YGfJzZJ0GDa*W%E#{bwAfxMzy|)qJmFx74!ph-?3t`&)?D@w9#p0Wp`=0lU zE}I~MiIBeDpOo`HWodQGG6T09GXgg4eOPjOD?*MRJsNEZuDw6ZuC*u6^L{MN$mzDL zy*fKH9*H5!^WIp}v&Fr7jQA%&Z2~IZBPzS=6w$U?aJOpKEveL9hS|`Dy#3HbNo1tK z_c;wzU90~m`y>ch?fL~#IdyD7O}>Q)HHW}heF{MioK*m-1)=A+W4)&l&pxJ<;{jH6 z{LRNJ^a3&cu6K?OOau@cR^;`4$BmZTO$Akhbi;!JyJXc2CfnUOg{a<*-~!anDQ&tF z?oW#g9QH`EuKGe|1AvSnPy?3lRhQ}4l;LUP8({nq+4TQa%ti@#v0Sv@D7A}|5{3p9 zfCQY+1zXyid2D}Vd0Eq@{eB<4_$R=**vIg$KO=14>Rh$`=FRrJX|~t7Ua!iuz@Ob{n6Nj+)DNDX;;)KFuX%b-K8;cZ zpL2}ZB66+}NHZ7u0`yiWT&`2bdFL6!<&WyNPqw>w!4h*uq4Te_2&93BPme9t*Ohk- zZbhzltv*v3+|(YAA+NrQR?WZU@rZA@BTX+8dbVYwtQ@ z=)n#Pc&-03o08?-p|;UtA=`l+5>7sMBiNzDHullEH65qS*F`aMc7B7-!}C$$SrF1> zuETcoJhO3%q-$l%e|>MeN}=m2|EPVj(B5%EP%Ij_c#Y}|g*5etSeWXf#kcMIV^Do<$A1GS zcOPNL_*&+3xUE(O4xpg%Vm%B&S ztjA&}zM0{q%&G*=Z7>T%9~MfusEM?hA0C@JH}q8VFp^5dKGCK~-b029?(UyHUS6oH zMlgO!4s+1JVU|k&<05Y25Kb$#o&5oOdkLm~JET4(Opqobf<*&IGt>}Z+!=h>E?6$h z%J##7ym}~tI8HDH{5_fZig6-0n5^AhBWbbr(BaZ_&CC7{)8f(=`1Xn9zT#Hv1hw|B zX;>@M?AuW-biKKKkiLo-J%*RZ)5O$L>h9PcOvI#c(0Nu8Mh8$3olB8ZueFVfzM=42 zZ#ni5jqQqY3c#sc1~k|9okUci`3e?G1FSZB%BNgOm5qiW>K2MHAosrAh-lgOq6~U^ z05@+}mJLhH!%vG(jt@~I8l~S66K8y4i8zROZS*MmiZ&xgCRY6>lwECaTV35p_OvpC zab1&7kFTTZ%hTBCaNPYL*ZYnL*LM3# zxBOfmC>uulDW6UA{l0-G$+?GxeR^Vm2sy7%BS-G+)nj>6A;2on19az53L)A>Lkv%?l#TvC1{xY>E7>eJ1>}H$~$M zX0fFU_N9B-*N!&SNS=8gU-B^%VrAbm%VnY!NtJr3+n9waHy3R7Bf8Qw9nl@mhB!c9 z|FVU{0pb+6^B#3+&y21;&1ngE6{rpdyAhO{BCp7HmYD63qtmQc#?(5u-4wM%NZpWLnV6qqDvOEsZB6J?v)|sc2Olp?HY`xoZ?9P0 z`ylo#;gntY#D=sd_7A#TcIM10s;P;}$ziKOYt9eAD(W*7WR_b4nR;376ARtL17< zeXi>CgmBi^j4+CLNpIZvM6W-LvoY>1*KEJ_p8fW6((2>kYtdP$)n@z6MtcAKI&%7j zWzok$zUrjt)eu$Z2Iei7nTC2q%z)qyZP910oa%?@$oCUJame06guVBs>;8^a(WszKAHlkVPtp4C2tWyXQZIzJe^L8C?eWq)N%E z8ou$Qmd|;K4HlCSX3^Mrn+EV?EZbe}FiSI(+y6 z%BA=#2-p+FWxiZ%05~WS%`BHdmE#rP@%XD_r_%Q8_ym4s@$c6s{-+12_y7$g4G~yv zQtHHq?JHoqiltBt8>b=cJxOZ|yk3RQWC?GWDNJoQYsZmC%V;NaZMpwl4sep&?VhwC zhc5xA4b7j-f6feOh}L;y+}F|lpB{T(f@tsUeG-t0zhn-2Q04tcc>fPLRH2(pPwGEB z%k#YbLex|lbsl$Rs?p-x8a+0V@ne4K%Itb4GqankE{ylJDC&HtQ1IHh>OLE}&dl%L zwPt@FHJNwr^$b=M+_hTm$L{+pDcb-&az$dHqt4-i+*>%kxsubj$!?h4;I1(lf7KlC zrNjQjLo)?G*4pgZcSYziS7pA}o0p?@zunr8jtFJ9f}z0V?U*5lv6LrZ>V?EW5S z#0$F;6?I10>-_Jo-}Ua;#_)HNn+y^PCEk(ID$U0kkUHeHg9iR-n`)qg-S zz*TB3dA!Kg4v*Ae<%o{w$AR&qyxd#k_S(0a!X6W9bnf&ztt+){9`f_RecpC0`&ws% zc;XuBGjD|LN5XrKFMKVT955}f_S_?{m#J4FK@2>vPB02K@ArS|&xx9muxHdp?zx(F zofJVj1iFLQtA`IC4zRsW?%P>0N3u|2s5w4Y@ga^xG}OKv9Spv+zOCfakWJO;|Kpi= zQ~tORRV)kP9$xAdo0!S60=+>bHod2(x~U0!f3D~6*VpfSk~bR>HKK7{?}F6g{s*7V z?N3x3Ud#N~Ejlt20^pMHe|M$J+>ai-$ilMm%s$~3%Y zo#V^H7OO-8nWHOh7xAw0C?^}m+qH%sg^=L;J-Z;?Viz&){9XQ>6dCN71^qDV1d5|}iN9#qCwdrRS?vj6Vj;X9nvHIlUO&Admn>Jzhuu@b+`SKg}HMTh0 zBi#G(W@>J(57qZhwEe1(F_&7R^7Zewny=3tude6K2SgZQ&>gp)9RnM$&l|Om0k@0> zCq|Y*Zzm2G3Ta?etonbPP{c_uJY2_p-~IZBu_|}O@F+`z$Hp?m z>{oxKuEl|$=knW#h1c8Vgp=IPeltCi*LrNWwf4lmeh&^GaN-4Q#D#_!rhZ$C00vQ3 zQ(=zn=Jhm7GKWjm9c6$sqg)kfVV37bX(z<27Y4{pawc2=i_$7muKEJE_VL>Bf%hq{f_}nt~ z_WV5IKUx4P#N?l2KfS9n)F8_mUK1FRz8ajlB|~59Qc>P5*2W>PD1alQCTuBQqaY`= zF4JFhwFew|)vFxFm6JDeOrB?q;y=~s`F#HrrQcSaTu)Vh0X@z`nVk>mV+VPcM49O6 zbRTb6aq)a9N3A-&k(6yZPa}F0$(vHcCByc`HirxB&eOq@f;>#(ecxR=@Wgk~k-Gd@ z62pTsAbaS?Ax{mM)EK@ywi8lSXi@NpqSp1de3(t5kAl`a{kfnE#r4ewOpwAI$mVW6-QR(IT7WU^pbRtZZWWl}@mvVbD&UB$rrRP76d1@~ak2Q=e9OHpKH#{g0-nM* zPNMH7-5djGfEPohwyLQ;UHm{wC$n3=*@Eibc? z=6VVGJXHN>=!+z{a}a!}fh~m&M-x841b3PB=G$Z+LsQ^eG%=Gv=o*GxGqtP8@L1@0 zBm=Z02w31tS09Z>;MV0{Vqj!k)G{T7Uu<-;qcjn4obGYzraRwzdK$q)UYvbzXBfsO zRK=+pR>zB%t34Ci<4fNlc(BDudqYI9_oGua0)rnuk=!3gge#sP<66J;SeiZhVejH> zMC^EyrJo5_)Ar#+d#zEdUVDPJeZBuQFOFtD0VA7Z{iBqWDmNc|xg~-kC_Gp>LUI@7 zorW5ri4gvs*L7a9Q%ehc^+oKtC3&rHR~^mK*nBrBJ3kX_iV!BJKYNBN&`(i{ssIq~&wZ$boh~c@z36y`{4K&+>AZ zs{xJm4dU##Hc zkYWR>=O><2h)QCJ#KQ-C?}ShzUnTfn@WTo`#dbEp2aqV+!uw?pu~?jIJ2>v^8?&S? zfzU8uNrSv|CL5jUBwQ}~D^=k@5mw*u

      E=udk_FqS+q$s@{-N1XAQu%GMdjcdxgd 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

      CVLbE`=*g1|>?CIj|QK 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�ulWKaK96VhPxG%s{XUOsY%fQ@ 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

      Ognm1?oTllH*?LcvHOK)m$>8{}< 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

      Hi$ybJ!&kk6QwkI=OZDH2cjX`8PyW7o~DK_{+*D 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%0AoF{ACR%Q016>cuU!S-NikBCd^}}O^ycIDn8l*PB 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 From ae3817a157149a1de4a140f2f22490fff3fda7e6 Mon Sep 17 00:00:00 2001 From: Bill Sideris Date: Sat, 22 Jun 2024 03:50:32 +0300 Subject: [PATCH 168/227] CIRCUITPY_REDUCE_TX_POWER --- ports/espressif/boards/lolin_c3_mini/mpconfigboard.h | 3 +++ .../boards/makergo_esp32c3_supermini/mpconfigboard.h | 3 +++ ports/espressif/common-hal/wifi/Radio.c | 3 +++ ports/espressif/mpconfigport.h | 6 ++++++ 4 files changed, 15 insertions(+) diff --git a/ports/espressif/boards/lolin_c3_mini/mpconfigboard.h b/ports/espressif/boards/lolin_c3_mini/mpconfigboard.h index 0faf4e6775a4..cb1e3cc4b633 100644 --- a/ports/espressif/boards/lolin_c3_mini/mpconfigboard.h +++ b/ports/espressif/boards/lolin_c3_mini/mpconfigboard.h @@ -26,3 +26,6 @@ #define CIRCUITPY_BOARD_UART (1) #define CIRCUITPY_BOARD_UART_PIN {{.tx = &pin_GPIO21, .rx = &pin_GPIO20}} + +// Reduce wifi.radio.tx_power due to the antenna design of this board +#define CIRCUITPY_REDUCE_TX_POWER (1) diff --git a/ports/espressif/boards/makergo_esp32c3_supermini/mpconfigboard.h b/ports/espressif/boards/makergo_esp32c3_supermini/mpconfigboard.h index 6f3d33c29302..2c14f543f138 100644 --- a/ports/espressif/boards/makergo_esp32c3_supermini/mpconfigboard.h +++ b/ports/espressif/boards/makergo_esp32c3_supermini/mpconfigboard.h @@ -22,3 +22,6 @@ #define CIRCUITPY_BOARD_SPI (1) #define CIRCUITPY_BOARD_SPI_PIN {{.clock = &pin_GPIO4, .mosi = &pin_GPIO6, .miso = &pin_GPIO5}} + +// Reduce wifi.radio.tx_power due to the antenna design of this board +#define CIRCUITPY_REDUCE_TX_POWER (1) diff --git a/ports/espressif/common-hal/wifi/Radio.c b/ports/espressif/common-hal/wifi/Radio.c index 71ac1469758f..cf63b16783eb 100644 --- a/ports/espressif/common-hal/wifi/Radio.c +++ b/ports/espressif/common-hal/wifi/Radio.c @@ -86,6 +86,9 @@ void common_hal_wifi_radio_set_enabled(wifi_radio_obj_t *self, bool enabled) { if (!self->started && enabled) { ESP_ERROR_CHECK(esp_wifi_start()); self->started = true; + #if CIRCUITPY_REDUCE_TX_POWER + common_hal_wifi_radio_set_tx_power(self, 11.0); + #endif return; } } diff --git a/ports/espressif/mpconfigport.h b/ports/espressif/mpconfigport.h index a2d632a20ec8..dba0d6cc6b0a 100644 --- a/ports/espressif/mpconfigport.h +++ b/ports/espressif/mpconfigport.h @@ -59,3 +59,9 @@ extern portMUX_TYPE background_task_mutex; #define CALLBACK_CRITICAL_BEGIN (taskENTER_CRITICAL(&background_task_mutex)) #define CALLBACK_CRITICAL_END (taskEXIT_CRITICAL(&background_task_mutex)) + +// Reduce wifi radio power +// Only for boards with imperfect radio designs +#ifndef CIRCUITPY_REDUCE_TX_POWER +#define CIRCUITPY_REDUCE_TX_POWER (0) +#endif From f707608ba5f2885cf9292862cc8488de4020c093 Mon Sep 17 00:00:00 2001 From: Bill Sideris Date: Sat, 22 Jun 2024 23:49:58 +0300 Subject: [PATCH 169/227] Switch to settable default wifi power Co-authored-by: Dan Halbert --- ports/espressif/boards/lolin_c3_mini/mpconfigboard.h | 2 +- .../boards/makergo_esp32c3_supermini/mpconfigboard.h | 2 +- ports/espressif/common-hal/wifi/Radio.c | 6 +++--- ports/espressif/mpconfigport.h | 8 ++++---- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/ports/espressif/boards/lolin_c3_mini/mpconfigboard.h b/ports/espressif/boards/lolin_c3_mini/mpconfigboard.h index cb1e3cc4b633..c823a6886900 100644 --- a/ports/espressif/boards/lolin_c3_mini/mpconfigboard.h +++ b/ports/espressif/boards/lolin_c3_mini/mpconfigboard.h @@ -28,4 +28,4 @@ #define CIRCUITPY_BOARD_UART_PIN {{.tx = &pin_GPIO21, .rx = &pin_GPIO20}} // Reduce wifi.radio.tx_power due to the antenna design of this board -#define CIRCUITPY_REDUCE_TX_POWER (1) +#define CIRCUITPY_WIFI_DEFAULT_TX_POWER (11.0) diff --git a/ports/espressif/boards/makergo_esp32c3_supermini/mpconfigboard.h b/ports/espressif/boards/makergo_esp32c3_supermini/mpconfigboard.h index 2c14f543f138..0e870e2287c3 100644 --- a/ports/espressif/boards/makergo_esp32c3_supermini/mpconfigboard.h +++ b/ports/espressif/boards/makergo_esp32c3_supermini/mpconfigboard.h @@ -24,4 +24,4 @@ #define CIRCUITPY_BOARD_SPI_PIN {{.clock = &pin_GPIO4, .mosi = &pin_GPIO6, .miso = &pin_GPIO5}} // Reduce wifi.radio.tx_power due to the antenna design of this board -#define CIRCUITPY_REDUCE_TX_POWER (1) +#define CIRCUITPY_WIFI_DEFAULT_TX_POWER (11.0) diff --git a/ports/espressif/common-hal/wifi/Radio.c b/ports/espressif/common-hal/wifi/Radio.c index cf63b16783eb..abdc0425fcee 100644 --- a/ports/espressif/common-hal/wifi/Radio.c +++ b/ports/espressif/common-hal/wifi/Radio.c @@ -86,9 +86,9 @@ void common_hal_wifi_radio_set_enabled(wifi_radio_obj_t *self, bool enabled) { if (!self->started && enabled) { ESP_ERROR_CHECK(esp_wifi_start()); self->started = true; - #if CIRCUITPY_REDUCE_TX_POWER - common_hal_wifi_radio_set_tx_power(self, 11.0); - #endif + if (CIRCUITPY_WIFI_DEFAULT_TX_POWER != 20) { + common_hal_wifi_radio_set_tx_power(self, CIRCUITPY_WIFI_DEFAULT_TX_POWER); + } return; } } diff --git a/ports/espressif/mpconfigport.h b/ports/espressif/mpconfigport.h index dba0d6cc6b0a..98c1986240b7 100644 --- a/ports/espressif/mpconfigport.h +++ b/ports/espressif/mpconfigport.h @@ -60,8 +60,8 @@ extern portMUX_TYPE background_task_mutex; #define CALLBACK_CRITICAL_BEGIN (taskENTER_CRITICAL(&background_task_mutex)) #define CALLBACK_CRITICAL_END (taskEXIT_CRITICAL(&background_task_mutex)) -// Reduce wifi radio power -// Only for boards with imperfect radio designs -#ifndef CIRCUITPY_REDUCE_TX_POWER -#define CIRCUITPY_REDUCE_TX_POWER (0) +// 20 dBm is the default and the highest max tx power. +// Allow a different value to be specified for boards that have trouble with using the maximum power. +#ifndef CIRCUITPY_WIFI_DEFAULT_TX_POWER +#define CIRCUITPY_WIFI_DEFAULT_TX_POWER (20) #endif From bb5a8110e0c6b1da36fbff73c2dd5ba341f343ad Mon Sep 17 00:00:00 2001 From: Bill Sideris Date: Sun, 23 Jun 2024 18:03:41 +0300 Subject: [PATCH 170/227] The check is unneeded. --- ports/espressif/common-hal/wifi/Radio.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ports/espressif/common-hal/wifi/Radio.c b/ports/espressif/common-hal/wifi/Radio.c index abdc0425fcee..a89d5702c2c6 100644 --- a/ports/espressif/common-hal/wifi/Radio.c +++ b/ports/espressif/common-hal/wifi/Radio.c @@ -86,9 +86,7 @@ void common_hal_wifi_radio_set_enabled(wifi_radio_obj_t *self, bool enabled) { if (!self->started && enabled) { ESP_ERROR_CHECK(esp_wifi_start()); self->started = true; - if (CIRCUITPY_WIFI_DEFAULT_TX_POWER != 20) { - common_hal_wifi_radio_set_tx_power(self, CIRCUITPY_WIFI_DEFAULT_TX_POWER); - } + common_hal_wifi_radio_set_tx_power(self, CIRCUITPY_WIFI_DEFAULT_TX_POWER); return; } } From 798e38e4470cbbc9316f40a9b161a37d9c8c52d4 Mon Sep 17 00:00:00 2001 From: foamyguy Date: Sun, 23 Jun 2024 11:14:35 -0500 Subject: [PATCH 171/227] enforce min py3.9 for setboard. create init.py in board-stubs --- Makefile | 1 + tools/board_stubs/circuitpython_setboard/__init__.py | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/Makefile b/Makefile index ffbd813c8068..a82e473b33e5 100644 --- a/Makefile +++ b/Makefile @@ -274,6 +274,7 @@ stubs: @$(PYTHON) tools/board_stubs/build_board_specific_stubs/board_stub_builder.py @cp -r tools/board_stubs/circuitpython_setboard circuitpython-stubs/circuitpython_setboard @$(PYTHON) -m build circuitpython-stubs + @touch circuitpython-stubs/board/__init__.py .PHONY: check-stubs check-stubs: stubs diff --git a/tools/board_stubs/circuitpython_setboard/__init__.py b/tools/board_stubs/circuitpython_setboard/__init__.py index 577b24feb3cd..33369e347244 100644 --- a/tools/board_stubs/circuitpython_setboard/__init__.py +++ b/tools/board_stubs/circuitpython_setboard/__init__.py @@ -35,6 +35,10 @@ def header(txt: str) -> str: def set_board(): + version_info = sys.version_info + if version_info.major < 3 or (version_info.major == 3 and version_info.minor < 9): + sys.stdout.write("Python 3.9 is the minimum supported version for board specific stubs.\n") + sys.exit(0) parser = argparse.ArgumentParser( prog=__name__, usage="Install CircuitPython board-specific stubs", From 01ab0ea8ca8554fb4330cedbe36e6d5a51d4abbb Mon Sep 17 00:00:00 2001 From: foamyguy Date: Sun, 23 Jun 2024 11:22:44 -0500 Subject: [PATCH 172/227] check version first thing --- tools/board_stubs/circuitpython_setboard/__init__.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/tools/board_stubs/circuitpython_setboard/__init__.py b/tools/board_stubs/circuitpython_setboard/__init__.py index 33369e347244..3a73beb3119d 100644 --- a/tools/board_stubs/circuitpython_setboard/__init__.py +++ b/tools/board_stubs/circuitpython_setboard/__init__.py @@ -1,8 +1,14 @@ # SPDX-FileCopyrightText: 2024 Tim Cocks # # SPDX-License-Identifier: MIT -import argparse import sys + +version_info = sys.version_info +if version_info.major < 3 or (version_info.major == 3 and version_info.minor < 9): + sys.stdout.write("Python 3.9 is the minimum supported version for board specific stubs.\n") + sys.exit(0) + +import argparse import shutil from collections import defaultdict from importlib import resources @@ -35,10 +41,6 @@ def header(txt: str) -> str: def set_board(): - version_info = sys.version_info - if version_info.major < 3 or (version_info.major == 3 and version_info.minor < 9): - sys.stdout.write("Python 3.9 is the minimum supported version for board specific stubs.\n") - sys.exit(0) parser = argparse.ArgumentParser( prog=__name__, usage="Install CircuitPython board-specific stubs", From 22452c477cea1fd6d488096f0b8cf53b9788e50d Mon Sep 17 00:00:00 2001 From: foamyguy Date: Sun, 23 Jun 2024 11:27:52 -0500 Subject: [PATCH 173/227] create init in board_definitions/ --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index a82e473b33e5..4e1b38c0407c 100644 --- a/Makefile +++ b/Makefile @@ -275,6 +275,7 @@ stubs: @cp -r tools/board_stubs/circuitpython_setboard circuitpython-stubs/circuitpython_setboard @$(PYTHON) -m build circuitpython-stubs @touch circuitpython-stubs/board/__init__.py + @touch circuitpython-stubs/board_definitions/__init__.py .PHONY: check-stubs check-stubs: stubs From 8fbdc8eaebc1e5c3ce3df8e1311aa876a5ff7cb0 Mon Sep 17 00:00:00 2001 From: Karl Fleischmann Date: Sun, 23 Jun 2024 14:57:47 -0400 Subject: [PATCH 174/227] Reduce default wifi tx_power for the QTPY ESP32-C3 (Fixes connectivity issues) --- ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h b/ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h index 8fbdd1713e61..d3df85d1ed24 100644 --- a/ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h +++ b/ports/espressif/boards/adafruit_qtpy_esp32c3/mpconfigboard.h @@ -25,3 +25,6 @@ // For entering safe mode #define CIRCUITPY_BOOT_BUTTON (&pin_GPIO9) + +// Reduce wifi.radio.tx_power due to the antenna design of this board +#define CIRCUITPY_WIFI_DEFAULT_TX_POWER (15) From d676293297248f6dcec798d407b7ddd8b4ef5603 Mon Sep 17 00:00:00 2001 From: Eric Almendras Date: Mon, 24 Jun 2024 07:33:01 -0300 Subject: [PATCH 175/227] add headers in ports/raspberry/boards/archi files --- ports/raspberrypi/boards/archi/board.c | 2 +- ports/raspberrypi/boards/archi/mpconfigboard.h | 2 +- ports/raspberrypi/boards/archi/pico-sdk-configboard.h | 2 +- ports/raspberrypi/boards/archi/pins.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ports/raspberrypi/boards/archi/board.c b/ports/raspberrypi/boards/archi/board.c index e6a868ab2122..3e5e7f5de409 100644 --- a/ports/raspberrypi/boards/archi/board.c +++ b/ports/raspberrypi/boards/archi/board.c @@ -1,6 +1,6 @@ // This file is part of the CircuitPython project: https://circuitpython.org // -// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2024 Newsan SA // // SPDX-License-Identifier: MIT diff --git a/ports/raspberrypi/boards/archi/mpconfigboard.h b/ports/raspberrypi/boards/archi/mpconfigboard.h index b6878c415a73..05826b053f98 100644 --- a/ports/raspberrypi/boards/archi/mpconfigboard.h +++ b/ports/raspberrypi/boards/archi/mpconfigboard.h @@ -1,6 +1,6 @@ // This file is part of the CircuitPython project: https://circuitpython.org // -// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2024 Newsan SA // // SPDX-License-Identifier: MIT diff --git a/ports/raspberrypi/boards/archi/pico-sdk-configboard.h b/ports/raspberrypi/boards/archi/pico-sdk-configboard.h index 66b57dfd13dc..3d2b892a3522 100644 --- a/ports/raspberrypi/boards/archi/pico-sdk-configboard.h +++ b/ports/raspberrypi/boards/archi/pico-sdk-configboard.h @@ -1,6 +1,6 @@ // This file is part of the CircuitPython project: https://circuitpython.org // -// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2024 Newsan SA // // SPDX-License-Identifier: MIT diff --git a/ports/raspberrypi/boards/archi/pins.c b/ports/raspberrypi/boards/archi/pins.c index 741e771ded85..60d391a8fe62 100644 --- a/ports/raspberrypi/boards/archi/pins.c +++ b/ports/raspberrypi/boards/archi/pins.c @@ -1,6 +1,6 @@ // This file is part of the CircuitPython project: https://circuitpython.org // -// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2024 Newsan SA // // SPDX-License-Identifier: MIT From dc64eed5044b70dc620da0cdef345465510cc1bc Mon Sep 17 00:00:00 2001 From: Eric Almendras Date: Mon, 24 Jun 2024 11:19:39 -0300 Subject: [PATCH 176/227] add LED_Animation in frozen modules --- .gitmodules | 3 +++ frozen/Adafruit_CircuitPython_LED_Animation | 1 + 2 files changed, 4 insertions(+) create mode 160000 frozen/Adafruit_CircuitPython_LED_Animation diff --git a/.gitmodules b/.gitmodules index c2e219475053..d67884cd1954 100644 --- a/.gitmodules +++ b/.gitmodules @@ -395,3 +395,6 @@ [submodule "frozen/Adafruit_CircuitPython_Led_Animation"] path = frozen/Adafruit_CircuitPython_Led_Animation url = https://github.com/adafruit/Adafruit_CircuitPython_Led_Animation +[submodule "frozen/Adafruit_CircuitPython_LED_Animation"] + path = frozen/Adafruit_CircuitPython_LED_Animation + url = https://github.com/adafruit/Adafruit_CircuitPython_LED_Animation diff --git a/frozen/Adafruit_CircuitPython_LED_Animation b/frozen/Adafruit_CircuitPython_LED_Animation new file mode 160000 index 000000000000..251bcd13cf14 --- /dev/null +++ b/frozen/Adafruit_CircuitPython_LED_Animation @@ -0,0 +1 @@ +Subproject commit 251bcd13cf14da68bd176d6d2d97b844fac5cdd5 From 0c98aa70757803aef276b5c3546cc602b6adc520 Mon Sep 17 00:00:00 2001 From: Eric Almendras Date: Mon, 24 Jun 2024 11:22:24 -0300 Subject: [PATCH 177/227] add module LED_Animation for frozen modules --- ports/raspberrypi/boards/archi/mpconfigboard.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/ports/raspberrypi/boards/archi/mpconfigboard.mk b/ports/raspberrypi/boards/archi/mpconfigboard.mk index 023251c6a25d..0393219e05da 100644 --- a/ports/raspberrypi/boards/archi/mpconfigboard.mk +++ b/ports/raspberrypi/boards/archi/mpconfigboard.mk @@ -13,3 +13,4 @@ CIRCUITPY_PICODVI = 1 FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_MPU6050 FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Pixel_Framebuf +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_LED_Animation From 9f9f097e568e4b16ef6d1f8523df5e3531c3017d Mon Sep 17 00:00:00 2001 From: Eric Efrain <87373625+EricAlmendras@users.noreply.github.com> Date: Mon, 24 Jun 2024 11:34:04 -0300 Subject: [PATCH 178/227] Apply suggestions from code review Co-authored-by: Dan Halbert --- .gitmodules | 3 --- 1 file changed, 3 deletions(-) diff --git a/.gitmodules b/.gitmodules index d67884cd1954..1c523aa76d53 100644 --- a/.gitmodules +++ b/.gitmodules @@ -392,9 +392,6 @@ [submodule "frozen/Adafruit_CircuitPython_Pixel_Framebuf"] path = frozen/Adafruit_CircuitPython_Pixel_Framebuf url = https://github.com/adafruit/Adafruit_CircuitPython_Pixel_Framebuf -[submodule "frozen/Adafruit_CircuitPython_Led_Animation"] - path = frozen/Adafruit_CircuitPython_Led_Animation - url = https://github.com/adafruit/Adafruit_CircuitPython_Led_Animation [submodule "frozen/Adafruit_CircuitPython_LED_Animation"] path = frozen/Adafruit_CircuitPython_LED_Animation url = https://github.com/adafruit/Adafruit_CircuitPython_LED_Animation From 343e0dadf145d5b1c99d20468d24cf750df3e091 Mon Sep 17 00:00:00 2001 From: Eric Efrain <87373625+EricAlmendras@users.noreply.github.com> Date: Mon, 24 Jun 2024 11:35:51 -0300 Subject: [PATCH 179/227] Apply suggestions from code review Co-authored-by: Dan Halbert --- ports/raspberrypi/boards/archi/mpconfigboard.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/raspberrypi/boards/archi/mpconfigboard.mk b/ports/raspberrypi/boards/archi/mpconfigboard.mk index 0393219e05da..e3fe12e6688d 100644 --- a/ports/raspberrypi/boards/archi/mpconfigboard.mk +++ b/ports/raspberrypi/boards/archi/mpconfigboard.mk @@ -13,4 +13,4 @@ CIRCUITPY_PICODVI = 1 FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_MPU6050 FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Pixel_Framebuf -FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_LED_Animation +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel From 49e67ad08b227c9b67ac7104bf2942a833635ab3 Mon Sep 17 00:00:00 2001 From: George White Date: Mon, 24 Jun 2024 17:08:49 -0400 Subject: [PATCH 180/227] Add note re Seeed WIO Terminal accelerometer pins --- ports/atmel-samd/boards/seeeduino_wio_terminal/pins.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ports/atmel-samd/boards/seeeduino_wio_terminal/pins.c b/ports/atmel-samd/boards/seeeduino_wio_terminal/pins.c index fb908f930d99..2f95232ce00c 100644 --- a/ports/atmel-samd/boards/seeeduino_wio_terminal/pins.c +++ b/ports/atmel-samd/boards/seeeduino_wio_terminal/pins.c @@ -82,14 +82,15 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR_BUTTON_2), MP_ROM_PTR(&pin_PC27) }, { MP_OBJ_NEW_QSTR(MP_QSTR_BUTTON_3), MP_ROM_PTR(&pin_PC28) }, - // Special named pins + // Special named pins - follows the schematic, but see comments + // The WIO Terminal has an accelerometer, not a gyroscope { MP_OBJ_NEW_QSTR(MP_QSTR_LIGHT), MP_ROM_PTR(&pin_PD01) }, { MP_OBJ_NEW_QSTR(MP_QSTR_BUZZER), MP_ROM_PTR(&pin_PD11) }, { MP_OBJ_NEW_QSTR(MP_QSTR_IR), MP_ROM_PTR(&pin_PB31) }, { MP_OBJ_NEW_QSTR(MP_QSTR_MIC), MP_ROM_PTR(&pin_PC30) }, - { MP_ROM_QSTR(MP_QSTR_GYROSCOPE_SCL), MP_ROM_PTR(&pin_PA12) }, - { MP_ROM_QSTR(MP_QSTR_GYROSCOPE_SDA), MP_ROM_PTR(&pin_PA13) }, - { MP_ROM_QSTR(MP_QSTR_GYROSCOPE_INT), MP_ROM_PTR(&pin_PC21) }, + { MP_ROM_QSTR(MP_QSTR_GYROSCOPE_SCL), MP_ROM_PTR(&pin_PA12) }, // Despite the name, this is the ACCELEROMETER + { MP_ROM_QSTR(MP_QSTR_GYROSCOPE_SDA), MP_ROM_PTR(&pin_PA13) }, // Despite the name, this is the ACCELEROMETER + { MP_ROM_QSTR(MP_QSTR_GYROSCOPE_INT), MP_ROM_PTR(&pin_PC21) }, // Despite the name, this is the ACCELEROMETER // DAC { MP_OBJ_NEW_QSTR(MP_QSTR_DAC0), MP_ROM_PTR(&pin_PA02) }, From ea9a8df708e8802fa65523108de7a08ebad8723d Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Mon, 24 Jun 2024 21:11:28 -0400 Subject: [PATCH 181/227] espressif/common-hal/_bleio: use waiting loops instead of TaskNotify --- locale/circuitpython.pot | 4 + .../common-hal/_bleio/Characteristic.c | 59 +++++-- .../common-hal/_bleio/CharacteristicBuffer.c | 1 - .../espressif/common-hal/_bleio/Connection.c | 156 +++++++++++------- .../common-hal/_bleio/PacketBuffer.c | 6 +- ports/espressif/common-hal/_bleio/__init__.h | 2 +- 6 files changed, 144 insertions(+), 84 deletions(-) diff --git a/locale/circuitpython.pot b/locale/circuitpython.pot index feb9457088c6..81ccf055bb7c 100644 --- a/locale/circuitpython.pot +++ b/locale/circuitpython.pot @@ -2007,6 +2007,10 @@ msgstr "" msgid "Too many channels in sample." msgstr "" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "Too many descriptors" +msgstr "" + #: shared-module/displayio/__init__.c msgid "Too many display busses; forgot displayio.release_displays() ?" msgstr "" diff --git a/ports/espressif/common-hal/_bleio/Characteristic.c b/ports/espressif/common-hal/_bleio/Characteristic.c index a095add66736..daa5809af9a6 100644 --- a/ports/espressif/common-hal/_bleio/Characteristic.c +++ b/ports/espressif/common-hal/_bleio/Characteristic.c @@ -7,6 +7,7 @@ #include #include "py/runtime.h" +#include "shared/runtime/interrupt_char.h" #include "shared-bindings/_bleio/__init__.h" #include "shared-bindings/_bleio/Characteristic.h" @@ -14,13 +15,39 @@ #include "shared-bindings/_bleio/Descriptor.h" #include "shared-bindings/_bleio/PacketBuffer.h" #include "shared-bindings/_bleio/Service.h" +#include "shared-bindings/time/__init__.h" #include "common-hal/_bleio/Adapter.h" #include "common-hal/_bleio/Service.h" - static int characteristic_on_ble_gap_evt(struct ble_gap_event *event, void *param); +static volatile int _completion_status; +static uint64_t _timeout_start_time; + +static void _reset_completion_status(void) { + _completion_status = 0; +} + +// Wait for a status change, recorded in a callback. +// Try twice because sometimes we get a BLE_HS_EAGAIN. +// Maybe we should try more than twice. +static int _wait_for_completion(uint32_t timeout_msecs) { + for (int tries = 1; tries <= 2; tries++) { + _timeout_start_time = common_hal_time_monotonic_ms(); + while ((_completion_status == 0) && + (common_hal_time_monotonic_ms() < _timeout_start_time + timeout_msecs) && + !mp_hal_is_interrupted()) { + RUN_BACKGROUND_TASKS; + } + if (_completion_status != BLE_HS_EAGAIN) { + // Quit, because either the status is either zero (OK) or it's an error. + break; + } + } + return _completion_status; +} + void common_hal_bleio_characteristic_construct(bleio_characteristic_obj_t *self, bleio_service_obj_t *service, uint16_t handle, bleio_uuid_obj_t *uuid, bleio_characteristic_properties_t props, bleio_attribute_security_mode_t read_perm, bleio_attribute_security_mode_t write_perm, @@ -125,7 +152,6 @@ bleio_service_obj_t *common_hal_bleio_characteristic_get_service(bleio_character } typedef struct { - TaskHandle_t task; uint8_t *buf; uint16_t len; } _read_info_t; @@ -148,9 +174,9 @@ static int _read_cb(uint16_t conn_handle, // For debugging. mp_printf(&mp_plat_print, "Read status: %d\n", error->status); #endif - xTaskNotify(read_info->task, error->status, eSetValueWithOverwrite); break; } + _completion_status = error->status; return 0; } @@ -163,14 +189,12 @@ size_t common_hal_bleio_characteristic_get_value(bleio_characteristic_obj_t *sel uint16_t conn_handle = bleio_connection_get_conn_handle(self->service->connection); if (common_hal_bleio_service_get_is_remote(self->service)) { _read_info_t read_info = { - .task = xTaskGetCurrentTaskHandle(), .buf = buf, .len = len }; + _reset_completion_status(); CHECK_NIMBLE_ERROR(ble_gattc_read(conn_handle, self->handle, _read_cb, &read_info)); - int error_code; - xTaskNotifyWait(0, 0, (uint32_t *)&error_code, 200); - CHECK_BLE_ERROR(error_code); + CHECK_NIMBLE_ERROR(_wait_for_completion(2000)); return read_info.len; } else { len = MIN(self->current_value_len, len); @@ -189,8 +213,7 @@ static int _write_cb(uint16_t conn_handle, const struct ble_gatt_error *error, struct ble_gatt_attr *attr, void *arg) { - TaskHandle_t task = (TaskHandle_t)arg; - xTaskNotify(task, error->status, eSetValueWithOverwrite); + _completion_status = error->status; return 0; } @@ -201,10 +224,9 @@ void common_hal_bleio_characteristic_set_value(bleio_characteristic_obj_t *self, if ((self->props & CHAR_PROP_WRITE_NO_RESPONSE) != 0) { CHECK_NIMBLE_ERROR(ble_gattc_write_no_rsp_flat(conn_handle, self->handle, bufinfo->buf, bufinfo->len)); } else { - CHECK_NIMBLE_ERROR(ble_gattc_write_flat(conn_handle, self->handle, bufinfo->buf, bufinfo->len, _write_cb, xTaskGetCurrentTaskHandle())); - int error_code; - xTaskNotifyWait(0, 0, (uint32_t *)&error_code, 200); - CHECK_BLE_ERROR(error_code); + _reset_completion_status(); + CHECK_NIMBLE_ERROR(ble_gattc_write_flat(conn_handle, self->handle, bufinfo->buf, bufinfo->len, _write_cb, NULL)); + CHECK_NIMBLE_ERROR(_wait_for_completion(2000)); } } else { // Validate data length for local characteristics only. @@ -338,6 +360,10 @@ bleio_characteristic_properties_t common_hal_bleio_characteristic_get_properties void common_hal_bleio_characteristic_add_descriptor(bleio_characteristic_obj_t *self, bleio_descriptor_obj_t *descriptor) { size_t i = self->descriptor_list->len; + if (i >= MAX_DESCRIPTORS) { + mp_raise_bleio_BluetoothError(MP_ERROR_TEXT("Too many descriptors")); + } + mp_obj_list_append(MP_OBJ_FROM_PTR(self->descriptor_list), MP_OBJ_FROM_PTR(descriptor)); @@ -368,10 +394,9 @@ void common_hal_bleio_characteristic_set_cccd(bleio_characteristic_obj_t *self, (notify ? 1 << 0 : 0) | (indicate ? 1 << 1: 0); - CHECK_NIMBLE_ERROR(ble_gattc_write_flat(conn_handle, self->cccd_handle, &cccd_value, 2, _write_cb, xTaskGetCurrentTaskHandle())); - int error_code; - xTaskNotifyWait(0, 0, (uint32_t *)&error_code, 200); - CHECK_BLE_ERROR(error_code); + _reset_completion_status(); + CHECK_NIMBLE_ERROR(ble_gattc_write_flat(conn_handle, self->cccd_handle, &cccd_value, 2, _write_cb, NULL)); + CHECK_NIMBLE_ERROR(_wait_for_completion(2000)); } void bleio_characteristic_set_observer(bleio_characteristic_obj_t *self, mp_obj_t observer) { diff --git a/ports/espressif/common-hal/_bleio/CharacteristicBuffer.c b/ports/espressif/common-hal/_bleio/CharacteristicBuffer.c index 249a5bc05cda..082cd492a919 100644 --- a/ports/espressif/common-hal/_bleio/CharacteristicBuffer.c +++ b/ports/espressif/common-hal/_bleio/CharacteristicBuffer.c @@ -70,7 +70,6 @@ uint32_t common_hal_bleio_characteristic_buffer_read(bleio_characteristic_buffer } uint32_t num_bytes_read = ringbuf_get_n(&self->ringbuf, data, len); - return num_bytes_read; } diff --git a/ports/espressif/common-hal/_bleio/Connection.c b/ports/espressif/common-hal/_bleio/Connection.c index 5957cd5edcf6..cdba939ad355 100644 --- a/ports/espressif/common-hal/_bleio/Connection.c +++ b/ports/espressif/common-hal/_bleio/Connection.c @@ -24,6 +24,7 @@ #include "shared-bindings/_bleio/Characteristic.h" #include "shared-bindings/_bleio/Service.h" #include "shared-bindings/_bleio/UUID.h" +#include "shared-bindings/time/__init__.h" #include "supervisor/shared/tick.h" @@ -31,8 +32,9 @@ #include "host/ble_att.h" -// Give 20 seconds for discovery -#define DISCOVERY_TIMEOUT_MS 20000 +// Uncomment to turn on debug logging just in this file. +// #undef CIRCUITPY_VERBOSE_BLE +// #define CIRCUITPY_VERBOSE_BLE (1) int bleio_connection_event_cb(struct ble_gap_event *event, void *connection_in) { bleio_connection_internal_t *connection = (bleio_connection_internal_t *)connection_in; @@ -45,6 +47,7 @@ int bleio_connection_event_cb(struct ble_gap_event *event, void *connection_in) #if CIRCUITPY_VERBOSE_BLE mp_printf(&mp_plat_print, "event->disconnect.reason: 0x%x\n", event->disconnect.reason); #endif + if (connection->connection_obj != mp_const_none) { bleio_connection_obj_t *obj = connection->connection_obj; obj->connection = NULL; @@ -175,8 +178,34 @@ void common_hal_bleio_connection_set_connection_interval(bleio_connection_intern CHECK_NIMBLE_ERROR(ble_gap_update_params(self->conn_handle, &updated)); } +// Zero when discovery is in process. BLE_HS_EDONE or a BLE_HS_ error code when done. static volatile int _last_discovery_status; -static TaskHandle_t discovery_task = NULL; + +static uint64_t _discovery_start_time; + +// Give 20 seconds for discovery +#define DISCOVERY_TIMEOUT_MS 20000 + +static void _start_discovery_timeout(void) { + _discovery_start_time = common_hal_time_monotonic_ms(); +} + +static int _wait_for_discovery_step_done(void) { + while ((_last_discovery_status == 0) && + (common_hal_time_monotonic_ms() < _discovery_start_time + DISCOVERY_TIMEOUT_MS)) { + RUN_BACKGROUND_TASKS; + if (mp_hal_is_interrupted()) { + // Return prematurely. Then the interrupt will be raised. + _last_discovery_status = BLE_HS_EDONE; + } + } + return _last_discovery_status; +} + +// Record result of last discovery step: services, characteristics, descriptors. +static void _set_discovery_step_status(int status) { + _last_discovery_status = status; +} static int _discovered_service_cb(uint16_t conn_handle, const struct ble_gatt_error *error, @@ -185,19 +214,11 @@ static int _discovered_service_cb(uint16_t conn_handle, bleio_connection_internal_t *self = (bleio_connection_internal_t *)arg; if (error->status != 0) { - // Keep the first error in case it's due to memory. - if (_last_discovery_status == 0) { - _last_discovery_status = error->status; - xTaskNotifyGive(discovery_task); - } + // BLE_HS_EDONE or some error has occurred. + _set_discovery_step_status(error->status); return 0; } - // If any of these memory allocations fail, we set _last_discovery_status - // and let the process continue. - if (_last_discovery_status != 0) { - return 0; - } bleio_service_obj_t *service = mp_obj_malloc(bleio_service_obj_t, &bleio_service_type); // Initialize several fields at once. @@ -225,16 +246,8 @@ static int _discovered_characteristic_cb(uint16_t conn_handle, bleio_service_obj_t *service = (bleio_service_obj_t *)arg; if (error->status != 0) { - // Keep the first error in case it's due to memory. - if (_last_discovery_status == 0) { - _last_discovery_status = error->status; - xTaskNotifyGive(discovery_task); - } - return 0; - } - // If any of these memory allocations fail, we set _last_discovery_status - // and let the process continue. - if (_last_discovery_status != 0) { + // BLE_HS_EDONE or some error has occurred. + _set_discovery_step_status(error->status); return 0; } @@ -261,12 +274,16 @@ static int _discovered_characteristic_cb(uint16_t conn_handle, common_hal_bleio_characteristic_construct( characteristic, service, chr->val_handle, uuid, props, SECURITY_MODE_OPEN, SECURITY_MODE_OPEN, - 0, false, // max_length, fixed_length: values don't matter for gattc + GATT_MAX_DATA_LENGTH, false, // max_length, fixed_length: values don't matter for gattc, but don't use 0 &mp_const_empty_bytes_bufinfo, NULL); // Set def_handle directly since it is only used in discovery. characteristic->def_handle = chr->def_handle; + #if CIRCUITPY_VERBOSE_BLE + mp_printf(&mp_plat_print, "_discovered_characteristic_cb: char handle: %d\n", characteristic->handle); + #endif + mp_obj_list_append(MP_OBJ_FROM_PTR(service->characteristic_list), MP_OBJ_FROM_PTR(characteristic)); return 0; @@ -280,16 +297,14 @@ static int _discovered_descriptor_cb(uint16_t conn_handle, bleio_characteristic_obj_t *characteristic = (bleio_characteristic_obj_t *)arg; if (error->status != 0) { - // Keep the first error in case it's due to memory. - if (_last_discovery_status == 0) { - _last_discovery_status = error->status; - } - xTaskNotifyGive(discovery_task); - return 0; - } - // If any of these memory allocations fail, we set _last_discovery_status - // and let the process continue. - if (_last_discovery_status != 0) { + + #if CIRCUITPY_VERBOSE_BLE + mp_printf(&mp_plat_print, "_discovered_descriptor_cb error->status: %d, handle: %d\n", + error->status, error->att_handle); + #endif + + // BLE_HS_EDONE or some error has occurred. + _set_discovery_step_status(error->status); return 0; } @@ -315,13 +330,17 @@ static int _discovered_descriptor_cb(uint16_t conn_handle, bleio_uuid_obj_t *uuid = mp_obj_malloc(bleio_uuid_obj_t, &bleio_uuid_type); uuid->nimble_ble_uuid = dsc->uuid; - common_hal_bleio_descriptor_construct( descriptor, characteristic, uuid, SECURITY_MODE_OPEN, SECURITY_MODE_OPEN, - 0, false, mp_const_empty_bytes); + GATT_MAX_DATA_LENGTH, false, mp_const_empty_bytes); descriptor->handle = dsc->handle; + #if CIRCUITPY_VERBOSE_BLE + mp_printf(&mp_plat_print, "_discovered_descriptor_cb: char handle: %d, desc handle: %d, uuid type: %d, u16 value: 0x%x\n", + characteristic->handle, descriptor->handle, dsc->uuid.u.type, dsc->uuid.u16.value); + #endif + mp_obj_list_append(MP_OBJ_FROM_PTR(characteristic->descriptor_list), MP_OBJ_FROM_PTR(descriptor)); return 0; @@ -331,15 +350,19 @@ static void discover_remote_services(bleio_connection_internal_t *self, mp_obj_t // Start over with an empty list. self->remote_service_list = mp_obj_new_list(0, NULL); - discovery_task = xTaskGetCurrentTaskHandle(); + // Start timeout in case discovery gets stuck. + _start_discovery_timeout(); + if (service_uuids_whitelist == mp_const_none) { - _last_discovery_status = 0; + // Reset discovery status before starting callbacks + _set_discovery_step_status(0); + CHECK_NIMBLE_ERROR(ble_gattc_disc_all_svcs(self->conn_handle, _discovered_service_cb, self)); - // Wait for sync. - ulTaskNotifyTake(pdTRUE, pdMS_TO_TICKS(DISCOVERY_TIMEOUT_MS)); - if (_last_discovery_status != BLE_HS_EDONE) { - CHECK_BLE_ERROR(_last_discovery_status); + // Wait for _discovered_service_cb() to be called multiple times until it's done. + int status = _wait_for_discovery_step_done(); + if (status != BLE_HS_EDONE) { + CHECK_BLE_ERROR(status); } } else { mp_obj_iter_buf_t iter_buf; @@ -351,33 +374,38 @@ static void discover_remote_services(bleio_connection_internal_t *self, mp_obj_t } bleio_uuid_obj_t *uuid = MP_OBJ_TO_PTR(uuid_obj); - _last_discovery_status = 0; - // Make sure we start with a clean notification state - ulTaskNotifyValueClear(discovery_task, 0xffffffff); + // Reset discovery status before starting callbacks + _set_discovery_step_status(0); + CHECK_NIMBLE_ERROR(ble_gattc_disc_svc_by_uuid(self->conn_handle, &uuid->nimble_ble_uuid.u, _discovered_service_cb, self)); - // Wait for sync. - CHECK_NOTIFY(ulTaskNotifyTake(pdTRUE, pdMS_TO_TICKS(DISCOVERY_TIMEOUT_MS))); - if (_last_discovery_status != BLE_HS_EDONE) { - CHECK_BLE_ERROR(_last_discovery_status); + + // Wait for _discovered_service_cb() to be called multiple times until it's done. + int status = _wait_for_discovery_step_done(); + if (status != BLE_HS_EDONE) { + CHECK_BLE_ERROR(status); } } } + // Now discover characteristics for each discovered service. + for (size_t i = 0; i < self->remote_service_list->len; i++) { bleio_service_obj_t *service = MP_OBJ_TO_PTR(self->remote_service_list->items[i]); - _last_discovery_status = 0; + // Reset discovery status before starting callbacks + _set_discovery_step_status(0); + CHECK_NIMBLE_ERROR(ble_gattc_disc_all_chrs(self->conn_handle, service->start_handle, service->end_handle, _discovered_characteristic_cb, service)); - // Wait for sync. - CHECK_NOTIFY(ulTaskNotifyTake(pdTRUE, pdMS_TO_TICKS(DISCOVERY_TIMEOUT_MS))); - if (_last_discovery_status != BLE_HS_EDONE) { - CHECK_BLE_ERROR(_last_discovery_status); + // Wait for _discovered_characteristic_cb() to be called multiple times until it's done. + int status = _wait_for_discovery_step_done(); + if (status != BLE_HS_EDONE) { + CHECK_BLE_ERROR(status); } // Got characteristics for this service. Now discover descriptors for each characteristic. @@ -395,21 +423,21 @@ static void discover_remote_services(bleio_connection_internal_t *self, mp_obj_t uint16_t end_handle = next_characteristic == NULL ? service->end_handle - : next_characteristic->def_handle - 1; + : next_characteristic->handle - 1; - // Pre-check if characteristic is empty so descriptor discovery doesn't fail - if (end_handle <= characteristic->handle) { - continue; - } + // Reset discovery status before starting callbacks + _set_discovery_step_status(0); - _last_discovery_status = 0; + // The descriptor handle inclusive range is [characteristic->handle + 1, end_handle], + // but ble_gattc_disc_all_dscs() requires starting with characteristic->handle. CHECK_NIMBLE_ERROR(ble_gattc_disc_all_dscs(self->conn_handle, characteristic->handle, end_handle, _discovered_descriptor_cb, characteristic)); - // Wait for sync. - ulTaskNotifyTake(pdTRUE, pdMS_TO_TICKS(DISCOVERY_TIMEOUT_MS)); - if (_last_discovery_status != BLE_HS_EDONE) { - CHECK_BLE_ERROR(_last_discovery_status); + + // Wait for _discovered_descriptor_cb to be called multiple times until it's done. + status = _wait_for_discovery_step_done(); + if (status != BLE_HS_EDONE) { + CHECK_BLE_ERROR(status); } } } diff --git a/ports/espressif/common-hal/_bleio/PacketBuffer.c b/ports/espressif/common-hal/_bleio/PacketBuffer.c index 8640bf7e42b7..cf362d89e92c 100644 --- a/ports/espressif/common-hal/_bleio/PacketBuffer.c +++ b/ports/espressif/common-hal/_bleio/PacketBuffer.c @@ -33,8 +33,9 @@ void bleio_packet_buffer_extend(bleio_packet_buffer_obj_t *self, uint16_t conn_h // the writes the client actually makes. return; } + // Make room for the new value by dropping the oldest packets first. - while (ringbuf_size(&self->ringbuf) - ringbuf_num_filled(&self->ringbuf) < len + sizeof(uint16_t)) { + while (ringbuf_num_empty(&self->ringbuf) < len + sizeof(uint16_t)) { uint16_t packet_length; ringbuf_get_n(&self->ringbuf, (uint8_t *)&packet_length, sizeof(uint16_t)); for (uint16_t i = 0; i < packet_length; i++) { @@ -54,7 +55,10 @@ static int _write_cb(uint16_t conn_handle, struct ble_gatt_attr *attr, void *arg) { if (error->status != 0) { + #if CIRCUITPY_VERBOSE_BLE + // For debugging. mp_printf(&mp_plat_print, "write failed %d\n", error->status); + #endif } bleio_packet_buffer_obj_t *self = (bleio_packet_buffer_obj_t *)arg; queue_next_write(self); diff --git a/ports/espressif/common-hal/_bleio/__init__.h b/ports/espressif/common-hal/_bleio/__init__.h index 1852bd870a6d..a10083a24b76 100644 --- a/ports/espressif/common-hal/_bleio/__init__.h +++ b/ports/espressif/common-hal/_bleio/__init__.h @@ -22,7 +22,7 @@ extern background_callback_t bleio_background_callback; // We assume variable length data. // 20 bytes max (23 - 3). -#define GATT_MAX_DATA_LENGTH (BLE_GATT_ATT_MTU_DEFAULT - 3) +#define GATT_MAX_DATA_LENGTH (23 - 3) #define NIMBLE_OK (0) From 1019e9165c00ef98fd20179e0eff82b1782f563a Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Tue, 25 Jun 2024 09:59:38 -0400 Subject: [PATCH 182/227] espressif/common-hal/_bleio: int Characteristic observer properly; restore descriptor pre-check code --- ports/espressif/common-hal/_bleio/Characteristic.c | 2 +- ports/espressif/common-hal/_bleio/Connection.c | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/ports/espressif/common-hal/_bleio/Characteristic.c b/ports/espressif/common-hal/_bleio/Characteristic.c index daa5809af9a6..342c729baf4f 100644 --- a/ports/espressif/common-hal/_bleio/Characteristic.c +++ b/ports/espressif/common-hal/_bleio/Characteristic.c @@ -61,7 +61,7 @@ void common_hal_bleio_characteristic_construct(bleio_characteristic_obj_t *self, self->props = props; self->read_perm = read_perm; self->write_perm = write_perm; - self->observer = NULL; + self->observer = mp_const_none; // Map CP's property values to Nimble's flag values. self->flags = 0; diff --git a/ports/espressif/common-hal/_bleio/Connection.c b/ports/espressif/common-hal/_bleio/Connection.c index cdba939ad355..6c2afee906e6 100644 --- a/ports/espressif/common-hal/_bleio/Connection.c +++ b/ports/espressif/common-hal/_bleio/Connection.c @@ -425,6 +425,11 @@ static void discover_remote_services(bleio_connection_internal_t *self, mp_obj_t ? service->end_handle : next_characteristic->handle - 1; + // Pre-check if there are no descriptors to discover so descriptor discovery doesn't fail + if (end_handle <= characteristic->handle) { + continue; + } + // Reset discovery status before starting callbacks _set_discovery_step_status(0); From 6bf9ec7ed1e0efc700df2cd637cc2182450fd485 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Tue, 25 Jun 2024 14:06:22 -0400 Subject: [PATCH 183/227] espressif/common-hal/_bleio/Adapter.c: use busy-waiting, to allow background tasks to run --- locale/circuitpython.pot | 3 +- ports/espressif/common-hal/_bleio/Adapter.c | 70 ++++++++++++------- .../espressif/common-hal/_bleio/Connection.c | 4 +- .../espressif/common-hal/dualbank/__init__.c | 2 +- 4 files changed, 51 insertions(+), 28 deletions(-) diff --git a/locale/circuitpython.pot b/locale/circuitpython.pot index 81ccf055bb7c..e707386d0a47 100644 --- a/locale/circuitpython.pot +++ b/locale/circuitpython.pot @@ -2219,8 +2219,9 @@ msgstr "" msgid "Unsupported hash algorithm" msgstr "" +#: ports/espressif/common-hal/_bleio/Adapter.c #: ports/espressif/common-hal/dualbank/__init__.c -msgid "Update Failed" +msgid "Update failed" msgstr "" #: ports/espressif/common-hal/_bleio/Characteristic.c diff --git a/ports/espressif/common-hal/_bleio/Adapter.c b/ports/espressif/common-hal/_bleio/Adapter.c index 0a8550408d89..77b91b537456 100644 --- a/ports/espressif/common-hal/_bleio/Adapter.c +++ b/ports/espressif/common-hal/_bleio/Adapter.c @@ -24,6 +24,7 @@ #include "shared-bindings/_bleio/Connection.h" #include "shared-bindings/_bleio/ScanEntry.h" #include "shared-bindings/time/__init__.h" +#include "shared/runtime/interrupt_char.h" #include "controller/ble_ll_adv.h" #include "nimble/hci_common.h" @@ -47,22 +48,23 @@ #include "shared-module/os/__init__.h" #endif -bleio_connection_internal_t bleio_connections[BLEIO_TOTAL_CONNECTION_COUNT]; +// Status variables used while busy-waiting for events. +static volatile bool _nimble_sync; +static volatile int _connection_status; -bool ble_active = false; +bleio_connection_internal_t bleio_connections[BLEIO_TOTAL_CONNECTION_COUNT]; static void nimble_host_task(void *param) { nimble_port_run(); nimble_port_freertos_deinit(); } -static TaskHandle_t cp_task = NULL; static void _on_sync(void) { int rc = ble_hs_util_ensure_addr(false); assert(rc == 0); - xTaskNotifyGive(cp_task); + _nimble_sync = true; } // All examples have this. It'd make sense in a header. @@ -133,15 +135,26 @@ void common_hal_bleio_adapter_set_enabled(bleio_adapter_obj_t *self, bool enable ble_store_config_init(); - cp_task = xTaskGetCurrentTaskHandle(); - + _nimble_sync = false; nimble_port_freertos_init(nimble_host_task); - // Wait for sync. - ulTaskNotifyTake(pdTRUE, pdMS_TO_TICKS(200)); + // Wait for sync from nimble task. + const uint64_t timeout_time_ms = common_hal_time_monotonic_ms() + 200; + while (!_nimble_sync && (common_hal_time_monotonic_ms() < timeout_time_ms)) { + RUN_BACKGROUND_TASKS; + if (mp_hal_is_interrupted()) { + // Return prematurely. Then the interrupt will be raised. + return; + } + } + + if (!_nimble_sync) { + mp_raise_RuntimeError(MP_ERROR_TEXT("Update failed")); + } } else { int ret = nimble_port_stop(); - while (xTaskGetHandle("nimble_host") != NULL) { - vTaskDelay(pdMS_TO_TICKS(2)); + while (xTaskGetHandle("nimble_host") != NULL && !mp_hal_is_interrupted()) { + RUN_BACKGROUND_TASKS; + common_hal_time_delay_ms(2); } if (ret == 0) { nimble_port_deinit(); @@ -309,7 +322,9 @@ static int _mtu_reply(uint16_t conn_handle, if (error->status == 0) { connection->mtu = mtu; } - xTaskNotify(cp_task, conn_handle, eSetValueWithOverwrite); + // Set status var to connection handle to report that connection is now established. + // Another routine is waiting for this. + _connection_status = conn_handle; return 0; } @@ -317,7 +332,6 @@ static void _new_connection(uint16_t conn_handle) { // Set the tx_power for the connection higher than the advertisement. esp_ble_tx_power_set(conn_handle, ESP_PWR_LVL_N0); - // Find an empty connection. One should always be available because the SD has the same // total connection limit. bleio_connection_internal_t *connection = NULL; @@ -353,13 +367,14 @@ static int _connect_event(struct ble_gap_event *event, void *self_in) { switch (event->type) { case BLE_GAP_EVENT_CONNECT: if (event->connect.status == 0) { - // This triggers an MTU exchange. Its reply will unblock CP. + // This triggers an MTU exchange. Its reply will exit the loop waiting for a connection. _new_connection(event->connect.conn_handle); // Set connections objs back to NULL since we have a new // connection and need a new tuple. self->connection_objs = NULL; } else { - xTaskNotify(cp_task, -event->connect.status, eSetValueWithOverwrite); + // The loop waiting for the connection to be comnpleted will stop when _connection_status changes. + _connection_status = -event->connect.status; } break; @@ -397,24 +412,31 @@ mp_obj_t common_hal_bleio_adapter_connect(bleio_adapter_obj_t *self, bleio_addre ble_addr_t addr; _convert_address(address, &addr); - cp_task = xTaskGetCurrentTaskHandle(); - // Make sure we don't have a pending notification from a previous time. This - // can happen if a previous wait timed out before the notification was given. - xTaskNotifyStateClear(cp_task); + const int timeout_ms = SEC_TO_UNITS(timeout, UNIT_1_MS) + 0.5f; CHECK_NIMBLE_ERROR( ble_gap_connect(own_addr_type, &addr, - SEC_TO_UNITS(timeout, UNIT_1_MS) + 0.5f, + timeout_ms, &conn_params, _connect_event, self)); - int error_code; // Wait an extra 50 ms to give the connect method the opportunity to time out. - CHECK_NOTIFY(xTaskNotifyWait(0, 0, (uint32_t *)&error_code, pdMS_TO_TICKS(timeout * 1000 + 50))); + + const uint64_t timeout_time_ms = common_hal_time_monotonic_ms() + timeout_ms; + // _connection_status gets set to either a positive connection handle or a negative error code. + _connection_status = BLEIO_HANDLE_INVALID; + while (_connection_status == BLEIO_HANDLE_INVALID && (common_hal_time_monotonic_ms() < timeout_time_ms)) { + RUN_BACKGROUND_TASKS; + if (mp_hal_is_interrupted()) { + // Return prematurely. Then the interrupt exception will be raised. + return mp_const_none; + } + } + // Negative values are error codes, connection handle otherwise. - if (error_code < 0) { - CHECK_BLE_ERROR(-error_code); + if (_connection_status < 0) { + CHECK_BLE_ERROR(-_connection_status); } - uint16_t conn_handle = error_code; + const uint16_t conn_handle = _connection_status; // TODO: If we have keys, then try and encrypt the connection. diff --git a/ports/espressif/common-hal/_bleio/Connection.c b/ports/espressif/common-hal/_bleio/Connection.c index 6c2afee906e6..8c88bfe3ec53 100644 --- a/ports/espressif/common-hal/_bleio/Connection.c +++ b/ports/espressif/common-hal/_bleio/Connection.c @@ -191,8 +191,8 @@ static void _start_discovery_timeout(void) { } static int _wait_for_discovery_step_done(void) { - while ((_last_discovery_status == 0) && - (common_hal_time_monotonic_ms() < _discovery_start_time + DISCOVERY_TIMEOUT_MS)) { + const uint64_t timeout_time_ms = _discovery_start_time + DISCOVERY_TIMEOUT_MS; + while ((_last_discovery_status == 0) && (common_hal_time_monotonic_ms() < timeout_time_ms)) { RUN_BACKGROUND_TASKS; if (mp_hal_is_interrupted()) { // Return prematurely. Then the interrupt will be raised. diff --git a/ports/espressif/common-hal/dualbank/__init__.c b/ports/espressif/common-hal/dualbank/__init__.c index 6252b1c99fd6..c7f857e760da 100644 --- a/ports/espressif/common-hal/dualbank/__init__.c +++ b/ports/espressif/common-hal/dualbank/__init__.c @@ -27,7 +27,7 @@ void dualbank_reset(void) { static void __attribute__((noreturn)) task_fatal_error(void) { ESP_LOGE(TAG, "Exiting task due to fatal error..."); - mp_raise_RuntimeError(MP_ERROR_TEXT("Update Failed")); + mp_raise_RuntimeError(MP_ERROR_TEXT("Update failed")); } void common_hal_dualbank_flash(const void *buf, const size_t len, const size_t offset) { From b228cbad85e869a586d21916fddce3b4a2e2362e Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Tue, 25 Jun 2024 17:27:27 -0400 Subject: [PATCH 184/227] espress/common-hal/_bleio: Adapter.c: handle BLE_HS_EBUSY on scan --- ports/espressif/common-hal/_bleio/Adapter.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/ports/espressif/common-hal/_bleio/Adapter.c b/ports/espressif/common-hal/_bleio/Adapter.c index 77b91b537456..364a9dd5433f 100644 --- a/ports/espressif/common-hal/_bleio/Adapter.c +++ b/ports/espressif/common-hal/_bleio/Adapter.c @@ -290,8 +290,19 @@ mp_obj_t common_hal_bleio_adapter_start_scan(bleio_adapter_obj_t *self, uint8_t duration_ms = BLE_HS_FOREVER; } - CHECK_NIMBLE_ERROR(ble_gap_disc(own_addr_type, duration_ms, &disc_params, - _scan_event, self->scan_results)); + int tries = 5; + int status; + // BLE_HS_EBUSY may occasionally occur, indicating something has not finished. Retry a few times if so. + do { + status = ble_gap_disc(own_addr_type, duration_ms, &disc_params, + _scan_event, self->scan_results); + if (status != BLE_HS_EBUSY) { + break; + } + common_hal_time_delay_ms(50); + RUN_BACKGROUND_TASKS; + } while (tries-- > 0); + CHECK_NIMBLE_ERROR(status); return MP_OBJ_FROM_PTR(self->scan_results); } From 4dbc10e808aa47ec83f6cbf4808afb131851c6be Mon Sep 17 00:00:00 2001 From: Eric Almendras Date: Wed, 26 Jun 2024 10:22:02 -0300 Subject: [PATCH 185/227] Add LED_Animation --- ports/raspberrypi/boards/archi/mpconfigboard.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/ports/raspberrypi/boards/archi/mpconfigboard.mk b/ports/raspberrypi/boards/archi/mpconfigboard.mk index e3fe12e6688d..ac4550ffbed5 100644 --- a/ports/raspberrypi/boards/archi/mpconfigboard.mk +++ b/ports/raspberrypi/boards/archi/mpconfigboard.mk @@ -14,3 +14,4 @@ CIRCUITPY_PICODVI = 1 FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_MPU6050 FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Pixel_Framebuf FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_LED_Animation From 1f9848a8339ea7e4442b955c8b2d08a3694e74d8 Mon Sep 17 00:00:00 2001 From: Tobias Schmale Date: Wed, 26 Jun 2024 13:27:59 +0000 Subject: [PATCH 186/227] esp: round to next lower cpu frequency --- locale/circuitpython.pot | 16 ------- .../common-hal/microcontroller/Processor.c | 48 ++++++++++++------- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/locale/circuitpython.pot b/locale/circuitpython.pot index 465498879bfb..feb9457088c6 100644 --- a/locale/circuitpython.pot +++ b/locale/circuitpython.pot @@ -1029,27 +1029,11 @@ msgstr "" msgid "Format not supported" msgstr "" -#: ports/espressif/common-hal/microcontroller/Processor.c -msgid "Frequency must be 20, 40, 80 or 120MHz" -msgstr "" - -#: ports/espressif/common-hal/microcontroller/Processor.c -msgid "Frequency must be 20, 40, 80 or 160MHz" -msgstr "" - -#: ports/espressif/common-hal/microcontroller/Processor.c -msgid "Frequency must be 20, 40, 80, 160 or 240MHz" -msgstr "" - #: ports/mimxrt10xx/common-hal/microcontroller/Processor.c msgid "" "Frequency must be 24, 150, 396, 450, 528, 600, 720, 816, 912, 960 or 1008 Mhz" msgstr "" -#: ports/espressif/common-hal/microcontroller/Processor.c -msgid "Frequency must be 32, 48, 64 or 96MHz" -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" diff --git a/ports/espressif/common-hal/microcontroller/Processor.c b/ports/espressif/common-hal/microcontroller/Processor.c index d063f0f54363..97b41a97c3ae 100644 --- a/ports/espressif/common-hal/microcontroller/Processor.c +++ b/ports/espressif/common-hal/microcontroller/Processor.c @@ -46,34 +46,50 @@ float common_hal_mcu_processor_get_voltage(void) { } uint32_t common_hal_mcu_processor_get_frequency(void) { + #if CIRCUITPY_SETTABLE_PROCESSOR_FREQUENCY esp_pm_config_t pm; CHECK_ESP_RESULT(esp_pm_get_configuration(&pm)); return pm.min_freq_mhz * 1000000; + #else + return CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ * 1000000; + #endif } -#if defined(CIRCUITPY_SETTABLE_PROCESSOR_FREQUENCY) // Don't need a NotImplementedError here if this is false, as that is handled in shared-bindings -static void validate_cpu_frequency(uint32_t freq_mhz) { +#if CIRCUITPY_SETTABLE_PROCESSOR_FREQUENCY // Don't need a NotImplementedError here if this is false, as that is handled in shared-bindings +// If the requested frequency is not supported by the hardware, return the next lower supported frequency +static uint32_t get_valid_cpu_frequency(uint32_t requested_freq_mhz) { + #if defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6) - if (freq_mhz != 20 && freq_mhz != 40 && freq_mhz != 80 && freq_mhz != 160) { - mp_raise_ValueError(MP_ERROR_TEXT("Frequency must be 20, 40, 80 or 160MHz")); - } + uint32_t valid_cpu_frequencies[] = {20, 40, 80, 160}; #elif defined(CONFIG_IDF_TARGET_ESP32C2) - if (freq_mhz != 20 && freq_mhz != 40 && freq_mhz != 80 && freq_mhz != 120) { - mp_raise_ValueError(MP_ERROR_TEXT("Frequency must be 20, 40, 80 or 120MHz")); - } + uint32_t valid_cpu_frequencies[] = {20, 40, 80, 120}; #elif defined(CONFIG_IDF_TARGET_ESP32H2) - if (freq_mhz != 32 && freq_mhz != 48 && freq_mhz != 64 && freq_mhz != 96) { - mp_raise_ValueError(MP_ERROR_TEXT("Frequency must be 32, 48, 64 or 96MHz")); - } + uint32_t valid_cpu_frequencies[] = {32, 48, 64, 96}; #else - if (freq_mhz != 20 && freq_mhz != 40 && freq_mhz != 80 && freq_mhz != 160 && freq_mhz != 240) { - mp_raise_ValueError(MP_ERROR_TEXT("Frequency must be 20, 40, 80, 160 or 240MHz")); - } + uint32_t valid_cpu_frequencies[] = {20, 40, 80, 160, 240}; #endif + + if (requested_freq_mhz < valid_cpu_frequencies[0]) { + // Don't round to the lowest valid frequency automatically here because the lowest valid frequency + // can break UART/USB connection on some boards and it's very easy to trigger this case accidentally + // (e.g. accidentally setting the frequency to 16000000 instead of 160000000, + // or setting the frequency to 160 instead of 160000000). So trigger an exception instead. + mp_raise_ValueError_varg(MP_ERROR_TEXT("Invalid %q"), MP_QSTR_frequency); + } + + const size_t num_valid_frequencies = MP_ARRAY_SIZE(valid_cpu_frequencies); + + for (size_t i = 1; i < num_valid_frequencies; i++) { + if (requested_freq_mhz < valid_cpu_frequencies[i]) { + return valid_cpu_frequencies[i - 1]; + } + } + + return valid_cpu_frequencies[num_valid_frequencies - 1]; } void common_hal_mcu_processor_set_frequency(mcu_processor_obj_t *self, uint32_t frequency) { - // Without this check, everything would compile without error, but silently fail at runtime if + // Without this check, everything would compile without errors, but silently fail at runtime if // CONFIG_PM_ENABLE is ever accidentally disabled #if !defined(CONFIG_PM_ENABLE) #error "common_hal_mcu_processor_set_frequency needs CONFIG_PM_ENABLE to be defined." @@ -81,7 +97,7 @@ void common_hal_mcu_processor_set_frequency(mcu_processor_obj_t *self, uint32_t frequency /= 1000000; - validate_cpu_frequency(frequency); + frequency = get_valid_cpu_frequency(frequency); esp_pm_config_t pm; pm.max_freq_mhz = frequency; From ed42ca89d793215ba1a3994fa76a1373d4531f00 Mon Sep 17 00:00:00 2001 From: Tobias Schmale Date: Wed, 26 Jun 2024 13:30:07 +0000 Subject: [PATCH 187/227] esp: enable settable cpu frequency dependent on flash layout --- .../esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults | 5 +++++ ports/espressif/esp-idf-config/sdkconfig.defaults | 7 +++++-- ports/espressif/mpconfigport.mk | 5 +++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/ports/espressif/esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults b/ports/espressif/esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults index d24998167e9a..3fac9d404adc 100644 --- a/ports/espressif/esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults +++ b/ports/espressif/esp-idf-config/sdkconfig-flash-4MB-no-uf2.defaults @@ -22,4 +22,9 @@ CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="esp-idf-config/partitions-4MB-no-uf2.csv CONFIG_PARTITION_TABLE_FILENAME="esp-idf-config/partitions-4MB-no-uf2.csv" # end of Partition Table +# +# Power Management +# +CONFIG_PM_ENABLE=n # required for CIRCUITPY_SETTABLE_PROCESSOR_FREQUENCY, but doesn't fit with this partition table + # end of Espressif IoT Development Framework Configuration diff --git a/ports/espressif/esp-idf-config/sdkconfig.defaults b/ports/espressif/esp-idf-config/sdkconfig.defaults index edb4b6d86209..3bf498bc6930 100644 --- a/ports/espressif/esp-idf-config/sdkconfig.defaults +++ b/ports/espressif/esp-idf-config/sdkconfig.defaults @@ -28,14 +28,17 @@ CONFIG_GPTIMER_ISR_IRAM_SAFE=y # CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE is not set # end of PHY +# +# Power Management +# +CONFIG_PM_ENABLE=y # required for CIRCUITPY_SETTABLE_PROCESSOR_FREQUENCY + # # ESP System Settings # CONFIG_ESP_MAIN_TASK_STACK_SIZE=16384 # CONFIG_ESP_TASK_WDT_INIT is not set # CONFIG_ESP_DEBUG_OCDAWARE is not set - -CONFIG_PM_ENABLE=y # required for CIRCUITPY_SETTABLE_PROCESSOR_FREQUENCY # end of ESP System Settings diff --git a/ports/espressif/mpconfigport.mk b/ports/espressif/mpconfigport.mk index 69aba54c1738..14c3b83250f1 100644 --- a/ports/espressif/mpconfigport.mk +++ b/ports/espressif/mpconfigport.mk @@ -198,6 +198,9 @@ CIRCUITPY_ALARM = 0 endif CIRCUITPY_DUALBANK = 1 CIRCUITPY_BLEIO = 0 +CIRCUITPY_SETTABLE_PROCESSOR_FREQUENCY = 0 +else +CIRCUITPY_SETTABLE_PROCESSOR_FREQUENCY = 1 endif # No room for dualbank or mp3 on boards with 2MB flash @@ -246,5 +249,3 @@ CIRCUITPY_MESSAGE_COMPRESSION_LEVEL ?= 1 CIRCUITPY_AUDIOMP3 ?= 1 CIRCUITPY_AUDIOMP3_USE_PORT_ALLOCATOR ?= 1 - -CIRCUITPY_SETTABLE_PROCESSOR_FREQUENCY ?= 1 From b8c65427f87cb1526c45383aec76ba2cd030b4a4 Mon Sep 17 00:00:00 2001 From: Tobias Schmale Date: Wed, 26 Jun 2024 13:35:05 +0000 Subject: [PATCH 188/227] update docs --- shared-bindings/microcontroller/Processor.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared-bindings/microcontroller/Processor.c b/shared-bindings/microcontroller/Processor.c index bf9f808db958..0a1405978328 100644 --- a/shared-bindings/microcontroller/Processor.c +++ b/shared-bindings/microcontroller/Processor.c @@ -47,7 +47,7 @@ //| """The CPU operating frequency in Hertz. //| //| **Limitations:** On most boards, ``frequency`` is read-only. Setting -//| the ``frequency`` is possible on RP2040 boards and some i.MX boards. +//| the ``frequency`` is possible on RP2040 boards, some ESP32 boards and some i.MX boards. //| //| .. warning:: Overclocking likely voids your warranties and may reduce //| the lifetime of the chip. From 95ddf755144c05b73e9cd3c5373bcd813eddd1d6 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Wed, 26 Jun 2024 19:39:34 +0000 Subject: [PATCH 189/227] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: CircuitPython/main Translate-URL: https://hosted.weblate.org/projects/circuitpython/main/ --- locale/ID.po | 7 ++++++- locale/cs.po | 12 ++++++++++-- locale/de_DE.po | 12 ++++++++++-- locale/el.po | 7 ++++++- locale/en_GB.po | 12 ++++++++++-- locale/es.po | 12 ++++++++++-- locale/fil.po | 7 ++++++- locale/fr.po | 12 ++++++++++-- locale/hi.po | 7 ++++++- locale/it_IT.po | 7 ++++++- locale/ja.po | 7 ++++++- locale/ko.po | 7 ++++++- locale/nl.po | 12 ++++++++++-- locale/pl.po | 7 ++++++- locale/pt_BR.po | 12 ++++++++++-- locale/ru.po | 12 ++++++++++-- locale/sv.po | 12 ++++++++++-- locale/tr.po | 7 ++++++- locale/zh_Latn_pinyin.po | 12 ++++++++++-- 19 files changed, 154 insertions(+), 29 deletions(-) diff --git a/locale/ID.po b/locale/ID.po index c6162f7ef86a..c767f7660465 100644 --- a/locale/ID.po +++ b/locale/ID.po @@ -2027,6 +2027,10 @@ msgstr "" msgid "Too many channels in sample." msgstr "Terlalu banyak channel dalam sampel" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "Too many descriptors" +msgstr "" + #: shared-module/displayio/__init__.c msgid "Too many display busses; forgot displayio.release_displays() ?" msgstr "" @@ -2237,8 +2241,9 @@ msgstr "Format tidak didukung" msgid "Unsupported hash algorithm" msgstr "" +#: ports/espressif/common-hal/_bleio/Adapter.c #: ports/espressif/common-hal/dualbank/__init__.c -msgid "Update Failed" +msgid "Update failed" msgstr "" #: ports/espressif/common-hal/_bleio/Characteristic.c diff --git a/locale/cs.po b/locale/cs.po index 2ebbab940426..ad021386a3de 100644 --- a/locale/cs.po +++ b/locale/cs.po @@ -2032,6 +2032,10 @@ msgstr "V samplu je příliš mnoho kanálů" msgid "Too many channels in sample." msgstr "" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "Too many descriptors" +msgstr "" + #: shared-module/displayio/__init__.c msgid "Too many display busses; forgot displayio.release_displays() ?" msgstr "" @@ -2241,9 +2245,10 @@ msgstr "Nepodporovaný formát" msgid "Unsupported hash algorithm" msgstr "Nepodporovaný hash algoritmus" +#: ports/espressif/common-hal/_bleio/Adapter.c #: ports/espressif/common-hal/dualbank/__init__.c -msgid "Update Failed" -msgstr "Aktualizace selhala" +msgid "Update failed" +msgstr "" #: ports/espressif/common-hal/_bleio/Characteristic.c #: ports/espressif/common-hal/_bleio/Descriptor.c @@ -4362,6 +4367,9 @@ msgstr "" msgid "zi must be of shape (n_section, 2)" msgstr "" +#~ msgid "Update Failed" +#~ msgstr "Aktualizace selhala" + #~ msgid "Error: Failure to bind" #~ msgstr "Chyba: nepodařilo se nabindovat port" diff --git a/locale/de_DE.po b/locale/de_DE.po index 4788ebe4a47a..5f60762aec16 100644 --- a/locale/de_DE.po +++ b/locale/de_DE.po @@ -2059,6 +2059,10 @@ msgstr "Zu viele Kanäle im Beispiel" msgid "Too many channels in sample." msgstr "Zu viele Kanäle im sample." +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "Too many descriptors" +msgstr "" + #: shared-module/displayio/__init__.c msgid "Too many display busses; forgot displayio.release_displays() ?" msgstr "Zu viele Display-Busse, displayio.release_displays() vergessen?" @@ -2271,9 +2275,10 @@ msgstr "Nicht unterstütztes Format" msgid "Unsupported hash algorithm" msgstr "Hash Algorithmus wird nicht unterstützt" +#: ports/espressif/common-hal/_bleio/Adapter.c #: ports/espressif/common-hal/dualbank/__init__.c -msgid "Update Failed" -msgstr "Update fehlgeschlagen" +msgid "Update failed" +msgstr "" #: ports/espressif/common-hal/_bleio/Characteristic.c #: ports/espressif/common-hal/_bleio/Descriptor.c @@ -4423,6 +4428,9 @@ msgstr "zi muss eine Gleitkommazahl sein" msgid "zi must be of shape (n_section, 2)" msgstr "zi muss die Form (n_section, 2) haben" +#~ msgid "Update Failed" +#~ msgstr "Update fehlgeschlagen" + #~ msgid "You pressed the boot button at start up." #~ msgstr "Der Boot-Knopf wurde beim Starten gedrückt." diff --git a/locale/el.po b/locale/el.po index 621ceaabfd79..4821588ed09a 100644 --- a/locale/el.po +++ b/locale/el.po @@ -2035,6 +2035,10 @@ msgstr "" msgid "Too many channels in sample." msgstr "" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "Too many descriptors" +msgstr "" + #: shared-module/displayio/__init__.c msgid "Too many display busses; forgot displayio.release_displays() ?" msgstr "" @@ -2243,8 +2247,9 @@ msgstr "" msgid "Unsupported hash algorithm" msgstr "" +#: ports/espressif/common-hal/_bleio/Adapter.c #: ports/espressif/common-hal/dualbank/__init__.c -msgid "Update Failed" +msgid "Update failed" msgstr "" #: ports/espressif/common-hal/_bleio/Characteristic.c diff --git a/locale/en_GB.po b/locale/en_GB.po index c5aca1398c40..f83b3098503f 100644 --- a/locale/en_GB.po +++ b/locale/en_GB.po @@ -2035,6 +2035,10 @@ msgstr "Too many channels in sample" msgid "Too many channels in sample." msgstr "Too many channels in sample." +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "Too many descriptors" +msgstr "" + #: shared-module/displayio/__init__.c msgid "Too many display busses; forgot displayio.release_displays() ?" msgstr "Too many display busses; forgot displayio.release_displays() ?" @@ -2245,9 +2249,10 @@ msgstr "Unsupported format" msgid "Unsupported hash algorithm" msgstr "Unsupported hash algorithm" +#: ports/espressif/common-hal/_bleio/Adapter.c #: ports/espressif/common-hal/dualbank/__init__.c -msgid "Update Failed" -msgstr "Update failed" +msgid "Update failed" +msgstr "" #: ports/espressif/common-hal/_bleio/Characteristic.c #: ports/espressif/common-hal/_bleio/Descriptor.c @@ -4371,6 +4376,9 @@ msgstr "zi must be of float type" msgid "zi must be of shape (n_section, 2)" msgstr "zi must be of shape (n_section, 2)" +#~ msgid "Update Failed" +#~ msgstr "Update failed" + #~ msgid "You pressed the boot button at start up." #~ msgstr "You pressed the boot button at start up." diff --git a/locale/es.po b/locale/es.po index b7787786d422..c96ef2237204 100644 --- a/locale/es.po +++ b/locale/es.po @@ -2065,6 +2065,10 @@ msgstr "Demasiados canales en la muestra" msgid "Too many channels in sample." msgstr "Demasiados canales en sample." +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "Too many descriptors" +msgstr "" + #: shared-module/displayio/__init__.c msgid "Too many display busses; forgot displayio.release_displays() ?" msgstr "" @@ -2276,9 +2280,10 @@ msgstr "Formato no soportado" msgid "Unsupported hash algorithm" msgstr "Algoritmo hash no soportado" +#: ports/espressif/common-hal/_bleio/Adapter.c #: ports/espressif/common-hal/dualbank/__init__.c -msgid "Update Failed" -msgstr "La actualización fallo" +msgid "Update failed" +msgstr "" #: ports/espressif/common-hal/_bleio/Characteristic.c #: ports/espressif/common-hal/_bleio/Descriptor.c @@ -4409,6 +4414,9 @@ msgstr "zi debe ser de tipo flotante" msgid "zi must be of shape (n_section, 2)" msgstr "zi debe ser una forma (n_section,2)" +#~ msgid "Update Failed" +#~ msgstr "La actualización fallo" + #~ msgid "Error: Failure to bind" #~ msgstr "Error: fallo al vincular" diff --git a/locale/fil.po b/locale/fil.po index d7df8a28cbde..fd803fc8b4d2 100644 --- a/locale/fil.po +++ b/locale/fil.po @@ -2020,6 +2020,10 @@ msgstr "" msgid "Too many channels in sample." msgstr "Sobra ang channels sa sample." +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "Too many descriptors" +msgstr "" + #: shared-module/displayio/__init__.c msgid "Too many display busses; forgot displayio.release_displays() ?" msgstr "" @@ -2230,8 +2234,9 @@ msgstr "Hindi supportadong format" msgid "Unsupported hash algorithm" msgstr "" +#: ports/espressif/common-hal/_bleio/Adapter.c #: ports/espressif/common-hal/dualbank/__init__.c -msgid "Update Failed" +msgid "Update failed" msgstr "" #: ports/espressif/common-hal/_bleio/Characteristic.c diff --git a/locale/fr.po b/locale/fr.po index df20ca2bad0a..d59180cfc622 100644 --- a/locale/fr.po +++ b/locale/fr.po @@ -2080,6 +2080,10 @@ msgstr "Trop de canaux dans l'échantillon" msgid "Too many channels in sample." msgstr "Trop de canaux dans l'échantillon." +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "Too many descriptors" +msgstr "" + #: shared-module/displayio/__init__.c msgid "Too many display busses; forgot displayio.release_displays() ?" msgstr "Bus d'affichage trop nombreux; oubli de displayio.release_displays() ?" @@ -2294,9 +2298,10 @@ msgstr "Format non pris en charge" msgid "Unsupported hash algorithm" msgstr "Algorithme de hachage non supporté" +#: ports/espressif/common-hal/_bleio/Adapter.c #: ports/espressif/common-hal/dualbank/__init__.c -msgid "Update Failed" -msgstr "Mise-à-jour échouée" +msgid "Update failed" +msgstr "" #: ports/espressif/common-hal/_bleio/Characteristic.c #: ports/espressif/common-hal/_bleio/Descriptor.c @@ -4440,6 +4445,9 @@ msgstr "zi doit être de type float" msgid "zi must be of shape (n_section, 2)" msgstr "zi doit être de forme (n_section, 2)" +#~ msgid "Update Failed" +#~ msgstr "Mise-à-jour échouée" + #~ msgid "Error: Failure to bind" #~ msgstr "Erreur : Impossible de lier" diff --git a/locale/hi.po b/locale/hi.po index c133a559337e..f0f9a1615c71 100644 --- a/locale/hi.po +++ b/locale/hi.po @@ -2009,6 +2009,10 @@ msgstr "" msgid "Too many channels in sample." msgstr "" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "Too many descriptors" +msgstr "" + #: shared-module/displayio/__init__.c msgid "Too many display busses; forgot displayio.release_displays() ?" msgstr "" @@ -2217,8 +2221,9 @@ msgstr "" msgid "Unsupported hash algorithm" msgstr "" +#: ports/espressif/common-hal/_bleio/Adapter.c #: ports/espressif/common-hal/dualbank/__init__.c -msgid "Update Failed" +msgid "Update failed" msgstr "" #: ports/espressif/common-hal/_bleio/Characteristic.c diff --git a/locale/it_IT.po b/locale/it_IT.po index 1cd44cf1a26a..8d193a4fd6fc 100644 --- a/locale/it_IT.po +++ b/locale/it_IT.po @@ -2022,6 +2022,10 @@ msgstr "" msgid "Too many channels in sample." msgstr "" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "Too many descriptors" +msgstr "" + #: shared-module/displayio/__init__.c msgid "Too many display busses; forgot displayio.release_displays() ?" msgstr "" @@ -2232,8 +2236,9 @@ msgstr "Formato non supportato" msgid "Unsupported hash algorithm" msgstr "" +#: ports/espressif/common-hal/_bleio/Adapter.c #: ports/espressif/common-hal/dualbank/__init__.c -msgid "Update Failed" +msgid "Update failed" msgstr "" #: ports/espressif/common-hal/_bleio/Characteristic.c diff --git a/locale/ja.po b/locale/ja.po index 8830833be1a1..b615ba18e42b 100644 --- a/locale/ja.po +++ b/locale/ja.po @@ -2031,6 +2031,10 @@ msgstr "" msgid "Too many channels in sample." msgstr "サンプルのチャンネル数が多すぎます" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "Too many descriptors" +msgstr "" + #: shared-module/displayio/__init__.c msgid "Too many display busses; forgot displayio.release_displays() ?" msgstr "" @@ -2240,8 +2244,9 @@ msgstr "非対応の形式" msgid "Unsupported hash algorithm" msgstr "" +#: ports/espressif/common-hal/_bleio/Adapter.c #: ports/espressif/common-hal/dualbank/__init__.c -msgid "Update Failed" +msgid "Update failed" msgstr "" #: ports/espressif/common-hal/_bleio/Characteristic.c diff --git a/locale/ko.po b/locale/ko.po index 89dcda27fd1b..2fbf783524d7 100644 --- a/locale/ko.po +++ b/locale/ko.po @@ -2086,6 +2086,10 @@ msgstr "" msgid "Too many channels in sample." msgstr "" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "Too many descriptors" +msgstr "" + #: shared-module/displayio/__init__.c msgid "Too many display busses; forgot displayio.release_displays() ?" msgstr "" @@ -2295,8 +2299,9 @@ msgstr "" msgid "Unsupported hash algorithm" msgstr "" +#: ports/espressif/common-hal/_bleio/Adapter.c #: ports/espressif/common-hal/dualbank/__init__.c -msgid "Update Failed" +msgid "Update failed" msgstr "" #: ports/espressif/common-hal/_bleio/Characteristic.c diff --git a/locale/nl.po b/locale/nl.po index 71125881a9c3..2e68c04a4f97 100644 --- a/locale/nl.po +++ b/locale/nl.po @@ -2023,6 +2023,10 @@ msgstr "" msgid "Too many channels in sample." msgstr "Teveel kanalen in sample." +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "Too many descriptors" +msgstr "" + #: shared-module/displayio/__init__.c msgid "Too many display busses; forgot displayio.release_displays() ?" msgstr "" @@ -2233,9 +2237,10 @@ msgstr "Niet-ondersteunde format" msgid "Unsupported hash algorithm" msgstr "" +#: ports/espressif/common-hal/_bleio/Adapter.c #: ports/espressif/common-hal/dualbank/__init__.c -msgid "Update Failed" -msgstr "Update Mislukt" +msgid "Update failed" +msgstr "" #: ports/espressif/common-hal/_bleio/Characteristic.c #: ports/espressif/common-hal/_bleio/Descriptor.c @@ -4357,6 +4362,9 @@ msgstr "zi moet van type float zijn" msgid "zi must be of shape (n_section, 2)" msgstr "zi moet vorm (n_section, 2) hebben" +#~ msgid "Update Failed" +#~ msgstr "Update Mislukt" + #~ msgid "Failed SSL handshake" #~ msgstr "SSL handdruk mislukt" diff --git a/locale/pl.po b/locale/pl.po index 91ff5339ffa1..5bd13257de61 100644 --- a/locale/pl.po +++ b/locale/pl.po @@ -2037,6 +2037,10 @@ msgstr "" msgid "Too many channels in sample." msgstr "Zbyt wiele kanałów." +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "Too many descriptors" +msgstr "" + #: shared-module/displayio/__init__.c msgid "Too many display busses; forgot displayio.release_displays() ?" msgstr "" @@ -2247,8 +2251,9 @@ msgstr "Zły format" msgid "Unsupported hash algorithm" msgstr "" +#: ports/espressif/common-hal/_bleio/Adapter.c #: ports/espressif/common-hal/dualbank/__init__.c -msgid "Update Failed" +msgid "Update failed" msgstr "" #: ports/espressif/common-hal/_bleio/Characteristic.c diff --git a/locale/pt_BR.po b/locale/pt_BR.po index 960bea16135d..bd026e30b1c7 100644 --- a/locale/pt_BR.po +++ b/locale/pt_BR.po @@ -2064,6 +2064,10 @@ msgstr "Muitos canais na amostra" msgid "Too many channels in sample." msgstr "Muitos canais na amostra." +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "Too many descriptors" +msgstr "" + #: shared-module/displayio/__init__.c msgid "Too many display busses; forgot displayio.release_displays() ?" msgstr "" @@ -2277,9 +2281,10 @@ msgstr "Formato não suportado" msgid "Unsupported hash algorithm" msgstr "Sem compatibilidade com o algoritmo de hash" +#: ports/espressif/common-hal/_bleio/Adapter.c #: ports/espressif/common-hal/dualbank/__init__.c -msgid "Update Failed" -msgstr "A atualização falou" +msgid "Update failed" +msgstr "" #: ports/espressif/common-hal/_bleio/Characteristic.c #: ports/espressif/common-hal/_bleio/Descriptor.c @@ -4422,6 +4427,9 @@ msgstr "zi deve ser de um tipo float" msgid "zi must be of shape (n_section, 2)" msgstr "zi deve estar na forma (n_section, 2)" +#~ msgid "Update Failed" +#~ msgstr "A atualização falou" + #~ msgid "You pressed the boot button at start up." #~ msgstr "Você pressionou o botão de inicialização na inicialização." diff --git a/locale/ru.po b/locale/ru.po index 508060db73ec..b5a1d05d78f3 100644 --- a/locale/ru.po +++ b/locale/ru.po @@ -2072,6 +2072,10 @@ msgstr "Слишком много каналов в выборке" msgid "Too many channels in sample." msgstr "Слишком много каналов в выборке." +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "Too many descriptors" +msgstr "" + #: shared-module/displayio/__init__.c msgid "Too many display busses; forgot displayio.release_displays() ?" msgstr "Слишком много шин дисплея; забыл displayio.release_displays()?" @@ -2284,9 +2288,10 @@ msgstr "Неподдерживаемый формат" msgid "Unsupported hash algorithm" msgstr "Неподдерживаемый алгоритм хеширования" +#: ports/espressif/common-hal/_bleio/Adapter.c #: ports/espressif/common-hal/dualbank/__init__.c -msgid "Update Failed" -msgstr "Ошибка обновления" +msgid "Update failed" +msgstr "" #: ports/espressif/common-hal/_bleio/Characteristic.c #: ports/espressif/common-hal/_bleio/Descriptor.c @@ -4452,6 +4457,9 @@ msgstr "zi должно быть типа float" msgid "zi must be of shape (n_section, 2)" msgstr "zi должен иметь форму (n_section, 2)" +#~ msgid "Update Failed" +#~ msgstr "Ошибка обновления" + #~ msgid "Error: Failure to bind" #~ msgstr "Ошибка: Сбой привязки" diff --git a/locale/sv.po b/locale/sv.po index cba644bcb29d..e021726b6c3a 100644 --- a/locale/sv.po +++ b/locale/sv.po @@ -2046,6 +2046,10 @@ msgstr "För många kanaler i urvalet" msgid "Too many channels in sample." msgstr "För många kanaler i sampling." +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "Too many descriptors" +msgstr "" + #: shared-module/displayio/__init__.c msgid "Too many display busses; forgot displayio.release_displays() ?" msgstr "För många displaybussar; glömt displayio.release_displays() ?" @@ -2256,9 +2260,10 @@ msgstr "Format stöds inte" msgid "Unsupported hash algorithm" msgstr "Hash-algoritmen stöds inte" +#: ports/espressif/common-hal/_bleio/Adapter.c #: ports/espressif/common-hal/dualbank/__init__.c -msgid "Update Failed" -msgstr "Uppdateringen misslyckades" +msgid "Update failed" +msgstr "" #: ports/espressif/common-hal/_bleio/Characteristic.c #: ports/espressif/common-hal/_bleio/Descriptor.c @@ -4384,6 +4389,9 @@ msgstr "zi måste vara av typ float" msgid "zi must be of shape (n_section, 2)" msgstr "zi måste vara i formen (n_section, 2)" +#~ msgid "Update Failed" +#~ msgstr "Uppdateringen misslyckades" + #~ msgid "Error: Failure to bind" #~ msgstr "Fel: Bind misslyckades" diff --git a/locale/tr.po b/locale/tr.po index 3ae980b37c59..996efcd1d404 100644 --- a/locale/tr.po +++ b/locale/tr.po @@ -2026,6 +2026,10 @@ msgstr "" msgid "Too many channels in sample." msgstr "" +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "Too many descriptors" +msgstr "" + #: shared-module/displayio/__init__.c msgid "Too many display busses; forgot displayio.release_displays() ?" msgstr "" @@ -2234,8 +2238,9 @@ msgstr "" msgid "Unsupported hash algorithm" msgstr "" +#: ports/espressif/common-hal/_bleio/Adapter.c #: ports/espressif/common-hal/dualbank/__init__.c -msgid "Update Failed" +msgid "Update failed" msgstr "" #: ports/espressif/common-hal/_bleio/Characteristic.c diff --git a/locale/zh_Latn_pinyin.po b/locale/zh_Latn_pinyin.po index b9c4f34b86cf..58befcb40ffc 100644 --- a/locale/zh_Latn_pinyin.po +++ b/locale/zh_Latn_pinyin.po @@ -2052,6 +2052,10 @@ msgstr "yàngběn zhōng de tōngdào tài duō" msgid "Too many channels in sample." msgstr "Chōuyàng zhōng de píndào tài duō." +#: ports/espressif/common-hal/_bleio/Characteristic.c +msgid "Too many descriptors" +msgstr "" + #: shared-module/displayio/__init__.c msgid "Too many display busses; forgot displayio.release_displays() ?" msgstr "Xiǎnshì zǒngxiàn guòduō;wàngjì displayio.release_displays() ?" @@ -2262,9 +2266,10 @@ msgstr "Bù zhīchí de géshì" msgid "Unsupported hash algorithm" msgstr "bù zhīchí de hā xī suànfǎ" +#: ports/espressif/common-hal/_bleio/Adapter.c #: ports/espressif/common-hal/dualbank/__init__.c -msgid "Update Failed" -msgstr "gēng xīn shī bài" +msgid "Update failed" +msgstr "" #: ports/espressif/common-hal/_bleio/Characteristic.c #: ports/espressif/common-hal/_bleio/Descriptor.c @@ -4396,6 +4401,9 @@ msgstr "zi bìxū wèi fú diǎn xíng" msgid "zi must be of shape (n_section, 2)" msgstr "zi bìxū jùyǒu xíngzhuàng (n_section,2)" +#~ msgid "Update Failed" +#~ msgstr "gēng xīn shī bài" + #~ msgid "Error: Failure to bind" #~ msgstr "cuò wù: bǎng dìng shī bài" From a77ef3664ddc5595b4501a9139860fc09aece2e7 Mon Sep 17 00:00:00 2001 From: Andi Chandler Date: Thu, 27 Jun 2024 21:18:16 +0000 Subject: [PATCH 190/227] Translated using Weblate (English (United Kingdom)) Currently translated at 100.0% (996 of 996 strings) Translation: CircuitPython/main Translate-URL: https://hosted.weblate.org/projects/circuitpython/main/en_GB/ --- locale/en_GB.po | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/locale/en_GB.po b/locale/en_GB.po index f83b3098503f..97872b11cee4 100644 --- a/locale/en_GB.po +++ b/locale/en_GB.po @@ -7,15 +7,15 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-06-18 19:09+0000\n" -"Last-Translator: johnnohj \n" +"PO-Revision-Date: 2024-06-28 22:09+0000\n" +"Last-Translator: Andi Chandler \n" "Language-Team: none\n" "Language: en_GB\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.6-dev\n" +"X-Generator: Weblate 5.7-dev\n" #: main.c msgid "" @@ -2037,7 +2037,7 @@ msgstr "Too many channels in sample." #: ports/espressif/common-hal/_bleio/Characteristic.c msgid "Too many descriptors" -msgstr "" +msgstr "Too many descriptors" #: shared-module/displayio/__init__.c msgid "Too many display busses; forgot displayio.release_displays() ?" @@ -2252,7 +2252,7 @@ msgstr "Unsupported hash algorithm" #: ports/espressif/common-hal/_bleio/Adapter.c #: ports/espressif/common-hal/dualbank/__init__.c msgid "Update failed" -msgstr "" +msgstr "Update failed" #: ports/espressif/common-hal/_bleio/Characteristic.c #: ports/espressif/common-hal/_bleio/Descriptor.c From aa80f6f59583ae188c6a94ac7fe64e5a6b7f2046 Mon Sep 17 00:00:00 2001 From: hexthat Date: Mon, 1 Jul 2024 03:32:16 +0000 Subject: [PATCH 191/227] Translated using Weblate (Chinese (Pinyin)) Currently translated at 100.0% (996 of 996 strings) Translation: CircuitPython/main Translate-URL: https://hosted.weblate.org/projects/circuitpython/main/zh_Latn/ --- locale/zh_Latn_pinyin.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/locale/zh_Latn_pinyin.po b/locale/zh_Latn_pinyin.po index 58befcb40ffc..25afe5d56a92 100644 --- a/locale/zh_Latn_pinyin.po +++ b/locale/zh_Latn_pinyin.po @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: circuitpython-cn\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-01-04 12:55-0600\n" -"PO-Revision-Date: 2024-06-14 15:02+0000\n" +"PO-Revision-Date: 2024-07-01 04:38+0000\n" "Last-Translator: hexthat \n" "Language-Team: Chinese Hanyu Pinyin\n" "Language: zh_Latn_pinyin\n" @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.6-dev\n" +"X-Generator: Weblate 5.7-dev\n" #: main.c msgid "" @@ -2054,7 +2054,7 @@ msgstr "Chōuyàng zhōng de píndào tài duō." #: ports/espressif/common-hal/_bleio/Characteristic.c msgid "Too many descriptors" -msgstr "" +msgstr "Miáoshù fú tài duō" #: shared-module/displayio/__init__.c msgid "Too many display busses; forgot displayio.release_displays() ?" @@ -2269,7 +2269,7 @@ msgstr "bù zhīchí de hā xī suànfǎ" #: ports/espressif/common-hal/_bleio/Adapter.c #: ports/espressif/common-hal/dualbank/__init__.c msgid "Update failed" -msgstr "" +msgstr "gēngxīn shībài" #: ports/espressif/common-hal/_bleio/Characteristic.c #: ports/espressif/common-hal/_bleio/Descriptor.c From da1cdd9214fcec35961b82b17fc88e271542ec5e Mon Sep 17 00:00:00 2001 From: Eric Almendras Date: Mon, 1 Jul 2024 09:04:57 -0300 Subject: [PATCH 192/227] add default libraries in firmware archi --- ports/raspberrypi/boards/archi/mpconfigboard.mk | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ports/raspberrypi/boards/archi/mpconfigboard.mk b/ports/raspberrypi/boards/archi/mpconfigboard.mk index ac4550ffbed5..1189e6879b93 100644 --- a/ports/raspberrypi/boards/archi/mpconfigboard.mk +++ b/ports/raspberrypi/boards/archi/mpconfigboard.mk @@ -15,3 +15,8 @@ FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_MPU6050 FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Pixel_Framebuf FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_LED_Animation +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Motor +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Register +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_seesaw +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_framebuf +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SimpleIO From 21e7e0078340447b12ef199f48b7c393d85aeec1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Brad=C3=A1n=20Lane?= Date: Mon, 1 Jul 2024 13:19:13 -0400 Subject: [PATCH 193/227] remove UART object and use pins for IR; add asyncio frozen --- .../bradanlanestudio_explorer_rp2040/mpconfigboard.h | 1 + .../bradanlanestudio_explorer_rp2040/mpconfigboard.mk | 3 +++ .../boards/bradanlanestudio_explorer_rp2040/pins.c | 7 +++---- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.h index 2c5760c74968..a99cc12cd432 100644 --- a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.h +++ b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.h @@ -10,6 +10,7 @@ #define MICROPY_HW_MCU_NAME "rp2040" #define MICROPY_HW_LED_STATUS (&pin_GPIO4) +// the UART pins are used for IR // #define DEFAULT_UART_BUS_TX (&pin_GPIO0) // #define DEFAULT_UART_BUS_RX (&pin_GPIO1) #define DEFAULT_I2C_BUS_SDA (&pin_GPIO2) diff --git a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.mk b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.mk index 872da79982ff..1e7bbc173c48 100644 --- a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.mk +++ b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.mk @@ -20,3 +20,6 @@ FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Bitmap_Font FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Display_Text FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Display_Shapes FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_HID +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_IRRemote +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_asyncio +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Ticks diff --git a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pins.c b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pins.c index e0cb2c151b9a..73f16735ab05 100644 --- a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pins.c +++ b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pins.c @@ -38,7 +38,7 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, { MP_ROM_QSTR(MP_QSTR_GP1), MP_ROM_PTR(&pin_GPIO1) }, - // GPIO0 and GPIO1 are also the UART + // GPIO0 and GPIO1 are used for IR and not for UART { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO0) }, { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO1) }, @@ -111,8 +111,7 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_TOUCH9), MP_ROM_PTR(&pin_GPIO27) }, { MP_ROM_QSTR(MP_QSTR_GP28), MP_ROM_PTR(&pin_GPIO28) }, - // GPIO28 is also the interrupt pin of the accelerometer - { MP_ROM_QSTR(MP_QSTR_ACCEL_INT), MP_ROM_PTR(&pin_GPIO28) }, + // GPIO28 is also the interrupt pin of the accelerometer on some boards { MP_ROM_QSTR(MP_QSTR_GP29), MP_ROM_PTR(&pin_GPIO29) }, // GPIO29 is also the ID value of the board (an analog read value between 0 .. 4096) @@ -120,8 +119,8 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, + { MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) }, // { MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) }, - { MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].epaper_display)}, { MP_ROM_QSTR(MP_QSTR_VID), MP_ROM_PTR(&board_vid_obj) }, From 1e6d7e68bca93f075d7bb6dbe2022e93af060af7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Brad=C3=A1n=20Lane?= Date: Mon, 1 Jul 2024 14:12:20 -0400 Subject: [PATCH 194/227] requested changes for pull request --- .../bradanlanestudio_explorer_rp2040/mpconfigboard.mk | 6 +++--- .../boards/bradanlanestudio_explorer_rp2040/pins.c | 9 +++------ 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.mk b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.mk index 1e7bbc173c48..14f27c07b99c 100644 --- a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.mk +++ b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/mpconfigboard.mk @@ -15,11 +15,11 @@ EXTERNAL_FLASH_DEVICES = "GD25Q64C" CIRCUITPY__EVE = 1 -FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_asyncio FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Bitmap_Font -FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Display_Text FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Display_Shapes +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Display_Text FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_HID FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_IRRemote -FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_asyncio +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Ticks diff --git a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pins.c b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pins.c index 73f16735ab05..3aef009ab5d6 100644 --- a/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pins.c +++ b/ports/raspberrypi/boards/bradanlanestudio_explorer_rp2040/pins.c @@ -39,8 +39,8 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, { MP_ROM_QSTR(MP_QSTR_GP1), MP_ROM_PTR(&pin_GPIO1) }, // GPIO0 and GPIO1 are used for IR and not for UART - { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO0) }, - { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_IR_TX), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_IR_RX), MP_ROM_PTR(&pin_GPIO1) }, { MP_ROM_QSTR(MP_QSTR_GP2), MP_ROM_PTR(&pin_GPIO2) }, { MP_ROM_QSTR(MP_QSTR_GP3), MP_ROM_PTR(&pin_GPIO3) }, @@ -111,16 +111,13 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_TOUCH9), MP_ROM_PTR(&pin_GPIO27) }, { MP_ROM_QSTR(MP_QSTR_GP28), MP_ROM_PTR(&pin_GPIO28) }, - // GPIO28 is also the interrupt pin of the accelerometer on some boards + // GPIO28 is also the interrupt pin of the accelerometer on one version of the board { MP_ROM_QSTR(MP_QSTR_GP29), MP_ROM_PTR(&pin_GPIO29) }, // GPIO29 is also the ID value of the board (an analog read value between 0 .. 4096) - // { MP_ROM_QSTR(MP_QSTR_VID), MP_ROM_PTR(&pin_GPIO29) }, - { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, { MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) }, - // { MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) }, { MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].epaper_display)}, { MP_ROM_QSTR(MP_QSTR_VID), MP_ROM_PTR(&board_vid_obj) }, From 864f25455525e989e68ac12dd9e8d6afa42f0f74 Mon Sep 17 00:00:00 2001 From: aguaviva Date: Tue, 2 Jul 2024 02:06:20 +0200 Subject: [PATCH 195/227] led, sdcard and I2C working --- ports/espressif/boards/ttgo_t8_v1_7/board.c | 29 ++++++++ .../boards/ttgo_t8_v1_7/mpconfigboard.h | 49 ++++++++++++++ .../boards/ttgo_t8_v1_7/mpconfigboard.mk | 10 +++ ports/espressif/boards/ttgo_t8_v1_7/pins.c | 66 +++++++++++++++++++ ports/espressif/boards/ttgo_t8_v1_7/sdkconfig | 0 5 files changed, 154 insertions(+) create mode 100644 ports/espressif/boards/ttgo_t8_v1_7/board.c create mode 100644 ports/espressif/boards/ttgo_t8_v1_7/mpconfigboard.h create mode 100644 ports/espressif/boards/ttgo_t8_v1_7/mpconfigboard.mk create mode 100644 ports/espressif/boards/ttgo_t8_v1_7/pins.c create mode 100644 ports/espressif/boards/ttgo_t8_v1_7/sdkconfig diff --git a/ports/espressif/boards/ttgo_t8_v1_7/board.c b/ports/espressif/boards/ttgo_t8_v1_7/board.c new file mode 100644 index 000000000000..164430c88c92 --- /dev/null +++ b/ports/espressif/boards/ttgo_t8_v1_7/board.c @@ -0,0 +1,29 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "supervisor/board.h" + +// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/espressif/boards/ttgo_t8_v1_7/mpconfigboard.h b/ports/espressif/boards/ttgo_t8_v1_7/mpconfigboard.h new file mode 100644 index 000000000000..7e9d808b6292 --- /dev/null +++ b/ports/espressif/boards/ttgo_t8_v1_7/mpconfigboard.h @@ -0,0 +1,49 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2022 Dan Halbert for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +// Micropython setup + +#define MICROPY_HW_BOARD_NAME "Espressif ESP32 TTGO T8 v1.7" +#define MICROPY_HW_MCU_NAME "ESP32" + +#define MICROPY_HW_LED_STATUS (&pin_GPIO21) + +#define CIRCUITPY_BOARD_I2C (1) +#define CIRCUITPY_BOARD_I2C_PIN {{.scl = &pin_GPIO22, .sda = &pin_GPIO21}} +#define CIRCUITPY_I2C_ALLOW_INTERNAL_PULL_UP 1 + +#define CIRCUITPY_BOARD_SPI (1) +#define CIRCUITPY_BOARD_SPI_PIN {{.clock = &pin_GPIO18, .mosi = &pin_GPIO23, .miso = &pin_GPIO19}} + +#define CIRCUITPY_BOARD_UART (1) +#define CIRCUITPY_BOARD_UART_PIN {{.tx = &pin_GPIO17, .rx = &pin_GPIO16}} + + +#define CIRCUITPY_BOOT_BUTTON (&pin_GPIO0) + +// UART pins attached to the USB-serial converter chip +#define CIRCUITPY_CONSOLE_UART_TX (&pin_GPIO1) +#define CIRCUITPY_CONSOLE_UART_RX (&pin_GPIO3) diff --git a/ports/espressif/boards/ttgo_t8_v1_7/mpconfigboard.mk b/ports/espressif/boards/ttgo_t8_v1_7/mpconfigboard.mk new file mode 100644 index 000000000000..495a505fe761 --- /dev/null +++ b/ports/espressif/boards/ttgo_t8_v1_7/mpconfigboard.mk @@ -0,0 +1,10 @@ +CIRCUITPY_CREATOR_ID = 0x000C303A +CIRCUITPY_CREATION_ID = 0x0032C002 + +IDF_TARGET = esp32 + +CIRCUITPY_ESP_FLASH_MODE = qio +CIRCUITPY_ESP_FLASH_FREQ = 80m +CIRCUITPY_ESP_FLASH_SIZE = 4MB + +CIRCUITPY_ESPCAMERA = 0 diff --git a/ports/espressif/boards/ttgo_t8_v1_7/pins.c b/ports/espressif/boards/ttgo_t8_v1_7/pins.c new file mode 100644 index 000000000000..1de41433503a --- /dev/null +++ b/ports/espressif/boards/ttgo_t8_v1_7/pins.c @@ -0,0 +1,66 @@ +#include "shared-bindings/board/__init__.h" + +STATIC const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + // External pins are in silkscreen order, from top to bottom, left side, then right side + // Left Side + + // Input-only pins, VP/VN on silkscreen + { MP_ROM_QSTR(MP_QSTR_I36), MP_ROM_PTR(&pin_GPIO36) }, + { MP_ROM_QSTR(MP_QSTR_VP), MP_ROM_PTR(&pin_GPIO36) }, + { MP_ROM_QSTR(MP_QSTR_I39), MP_ROM_PTR(&pin_GPIO39) }, + { MP_ROM_QSTR(MP_QSTR_VN), MP_ROM_PTR(&pin_GPIO39) }, + { MP_ROM_QSTR(MP_QSTR_I34), MP_ROM_PTR(&pin_GPIO34) }, + { MP_ROM_QSTR(MP_QSTR_I35), MP_ROM_PTR(&pin_GPIO35) }, + + + { MP_ROM_QSTR(MP_QSTR_IO32), MP_ROM_PTR(&pin_GPIO32) }, + { MP_ROM_QSTR(MP_QSTR_IO33), MP_ROM_PTR(&pin_GPIO33) }, + + // Normal pins + { MP_ROM_QSTR(MP_QSTR_IO25), MP_ROM_PTR(&pin_GPIO25) }, + { MP_ROM_QSTR(MP_QSTR_IO26), MP_ROM_PTR(&pin_GPIO26) }, + { MP_ROM_QSTR(MP_QSTR_IO27), MP_ROM_PTR(&pin_GPIO27) }, + { MP_ROM_QSTR(MP_QSTR_IO14), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_CLK), MP_ROM_PTR(&pin_GPIO14) }, //microSD + { MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_IO13), MP_ROM_PTR(&pin_GPIO13) }, + { MP_ROM_QSTR(MP_QSTR_CS), MP_ROM_PTR(&pin_GPIO13) }, //microSD + { MP_ROM_QSTR(MP_QSTR_IO15), MP_ROM_PTR(&pin_GPIO15) }, + { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO15) }, //microSD + + // Rigth Side + + { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO21) }, + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO21) }, + { MP_ROM_QSTR(MP_QSTR_IO21), MP_ROM_PTR(&pin_GPIO21) }, + + { MP_ROM_QSTR(MP_QSTR_IO1), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_IO3), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO3) }, + + { MP_ROM_QSTR(MP_QSTR_IO22), MP_ROM_PTR(&pin_GPIO22) }, + { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO22) }, + + // Normal pins + { MP_ROM_QSTR(MP_QSTR_IO19), MP_ROM_PTR(&pin_GPIO19) }, + { MP_ROM_QSTR(MP_QSTR_IO23), MP_ROM_PTR(&pin_GPIO23) }, + { MP_ROM_QSTR(MP_QSTR_IO18), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_IO5), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO2) }, //microSD + { MP_ROM_QSTR(MP_QSTR_IO2), MP_ROM_PTR(&pin_GPIO2) }, + + { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_BOOT0), MP_ROM_PTR(&pin_GPIO0) }, + + { MP_ROM_QSTR(MP_QSTR_IO4), MP_ROM_PTR(&pin_GPIO4) }, + + {MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj)}, + {MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj)}, + {MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj)} + +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); diff --git a/ports/espressif/boards/ttgo_t8_v1_7/sdkconfig b/ports/espressif/boards/ttgo_t8_v1_7/sdkconfig new file mode 100644 index 000000000000..e69de29bb2d1 From fd0129dc8a6a7de7d1acfb16bf7021d119fa1d0a Mon Sep 17 00:00:00 2001 From: aguaviva Date: Tue, 2 Jul 2024 02:18:26 +0200 Subject: [PATCH 196/227] fixing board id --- ports/espressif/boards/ttgo_t8_v1_7/mpconfigboard.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/espressif/boards/ttgo_t8_v1_7/mpconfigboard.mk b/ports/espressif/boards/ttgo_t8_v1_7/mpconfigboard.mk index 495a505fe761..6556b6881f31 100644 --- a/ports/espressif/boards/ttgo_t8_v1_7/mpconfigboard.mk +++ b/ports/espressif/boards/ttgo_t8_v1_7/mpconfigboard.mk @@ -1,5 +1,5 @@ CIRCUITPY_CREATOR_ID = 0x000C303A -CIRCUITPY_CREATION_ID = 0x0032C002 +CIRCUITPY_CREATION_ID = 0x00320005 IDF_TARGET = esp32 From eb3632b20e3a4261eb275aa28ae92458e411691e Mon Sep 17 00:00:00 2001 From: Zoda Date: Mon, 1 Jul 2024 14:54:59 +0000 Subject: [PATCH 197/227] Translated using Weblate (Turkish) Currently translated at 20.9% (209 of 996 strings) Translation: CircuitPython/main Translate-URL: https://hosted.weblate.org/projects/circuitpython/main/tr/ --- locale/tr.po | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/locale/tr.po b/locale/tr.po index 996efcd1d404..58cb0d0b6e56 100644 --- a/locale/tr.po +++ b/locale/tr.po @@ -7,15 +7,15 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2023-11-16 15:03+0000\n" -"Last-Translator: Can Kocyigit \n" +"PO-Revision-Date: 2024-07-02 03:21+0000\n" +"Last-Translator: Zoda \n" "Language-Team: none\n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.2\n" +"X-Generator: Weblate 5.7-dev\n" #: main.c msgid "" @@ -40,6 +40,9 @@ msgid "" "Please file an issue with your program at github.com/adafruit/circuitpython/" "issues." msgstr "" +"\n" +"Lütfen programınızla ilgili bir sorunu github.com/adafruit/circuitpython/" +"issues adresinden bildirin." #: supervisor/shared/safe_mode.c msgid "" @@ -261,7 +264,7 @@ msgstr "%q sıfır olamaz" #: shared-module/bitbangio/I2C.c msgid "%q too long" -msgstr "" +msgstr "%q çok uzun" #: py/bc.c py/objnamedtuple.c msgid "%q() takes %d positional arguments but %d were given" @@ -407,7 +410,7 @@ msgstr "fonksiyon dışında 'await'" #: py/compile.c msgid "'break'/'continue' outside loop" -msgstr "" +msgstr "Döngü dışında 'break'/'continue'" #: py/compile.c msgid "'data' requires at least 2 arguments" From 21d2c865f1c26c3bada8fc4b7af8b460330b4a93 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Tue, 2 Jul 2024 12:13:10 -0400 Subject: [PATCH 198/227] Fix BLE adv timeout; ESP: don't sched handler on adv finish --- ports/espressif/common-hal/_bleio/Adapter.c | 19 +++++++++++-------- ports/nordic/common-hal/_bleio/Adapter.c | 21 ++++++++++++--------- supervisor/shared/bluetooth/bluetooth.c | 4 ++-- 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/ports/espressif/common-hal/_bleio/Adapter.c b/ports/espressif/common-hal/_bleio/Adapter.c index 364a9dd5433f..21cdd88b1dbc 100644 --- a/ports/espressif/common-hal/_bleio/Adapter.c +++ b/ports/espressif/common-hal/_bleio/Adapter.c @@ -528,7 +528,6 @@ static int _advertising_event(struct ble_gap_event *event, void *self_in) { #endif break; } - background_callback_add_core(&bleio_background_callback); return 0; } @@ -559,7 +558,13 @@ uint32_t _common_hal_bleio_adapter_start_advertising(bleio_adapter_obj_t *self, return rc; } - bool high_duty_directed = directed_to != NULL && interval <= 3.5 && timeout <= 1.3; + bool high_duty_directed = directed_to != NULL && interval <= 3.5 && timeout <= 1; // Really 1.3, but it's an int + + uint32_t timeout_ms = timeout * 1000; + if (timeout_ms == 0) { + timeout_ms = BLE_HS_FOREVER; + } + #if MYNEWT_VAL(BLE_EXT_ADV) bool extended = advertising_data_len > BLE_ADV_LEGACY_DATA_MAX_LEN || @@ -621,7 +626,7 @@ uint32_t _common_hal_bleio_adapter_start_advertising(bleio_adapter_obj_t *self, } } - rc = ble_gap_ext_adv_start(0, timeout / 10, 0); + rc = ble_gap_ext_adv_start(0, timeout_ms, 0); #else uint8_t conn_mode = connectable ? BLE_GAP_CONN_MODE_UND : BLE_GAP_CONN_MODE_NON; if (directed_to != NULL) { @@ -650,7 +655,7 @@ uint32_t _common_hal_bleio_adapter_start_advertising(bleio_adapter_obj_t *self, } } rc = ble_gap_adv_start(own_addr_type, directed_to != NULL ? &peer: NULL, - timeout / 10, + timeout_ms, &adv_params, _advertising_event, self); #endif @@ -694,11 +699,9 @@ void common_hal_bleio_adapter_start_advertising(bleio_adapter_obj_t *self, bool mp_raise_NotImplementedError(NULL); } - if (!timeout) { - timeout = BLE_HS_FOREVER; - } else if (timeout > INT32_MAX) { + if ((uint64_t)timeout * 1000ll >= BLE_HS_FOREVER) { mp_raise_bleio_BluetoothError(MP_ERROR_TEXT("Timeout is too long: Maximum timeout length is %d seconds"), - INT32_MAX / 1000); + BLE_HS_FOREVER / 1000 - 1); } CHECK_NIMBLE_ERROR(_common_hal_bleio_adapter_start_advertising(self, connectable, anonymous, timeout, interval, diff --git a/ports/nordic/common-hal/_bleio/Adapter.c b/ports/nordic/common-hal/_bleio/Adapter.c index 82d56b9c1b81..46db2ac488c5 100644 --- a/ports/nordic/common-hal/_bleio/Adapter.c +++ b/ports/nordic/common-hal/_bleio/Adapter.c @@ -742,6 +742,13 @@ uint32_t _common_hal_bleio_adapter_start_advertising(bleio_adapter_obj_t *self, common_hal_bleio_adapter_stop_advertising(self); } + // A zero timeout means unlimited. Do the checking here + // rather than in common_hal_bleio_adapter_start_advertising(), because + // _common_hal_bleio_adapter_start_advertising() is called for BLE workflow with + // a zero (unlimited) timeout. + if (timeout == 0) { + timeout = BLE_GAP_ADV_TIMEOUT_GENERAL_UNLIMITED; + } uint32_t err_code; bool extended = advertising_data_len > BLE_GAP_ADV_SET_DATA_SIZE_MAX || scan_response_data_len > BLE_GAP_ADV_SET_DATA_SIZE_MAX; @@ -871,15 +878,11 @@ void common_hal_bleio_adapter_start_advertising(bleio_adapter_obj_t *self, bool // Anonymous mode requires a timeout so that we don't continue to broadcast // the same data while cycling the MAC address -- otherwise, what's the // point of randomizing the MAC address? - if (!timeout) { - if (anonymous) { - // The Nordic macro is in units of 10ms. Convert to seconds. - uint32_t adv_timeout_max_secs = UNITS_TO_SEC(BLE_GAP_ADV_TIMEOUT_LIMITED_MAX, UNIT_10_MS); - uint32_t rotate_timeout_max_secs = BLE_GAP_DEFAULT_PRIVATE_ADDR_CYCLE_INTERVAL_S; - timeout = MIN(adv_timeout_max_secs, rotate_timeout_max_secs); - } else { - timeout = BLE_GAP_ADV_TIMEOUT_GENERAL_UNLIMITED; - } + if (anonymous) { + // The Nordic macro is in units of 10ms. Convert to seconds. + uint32_t adv_timeout_max_secs = UNITS_TO_SEC(BLE_GAP_ADV_TIMEOUT_LIMITED_MAX, UNIT_10_MS); + uint32_t rotate_timeout_max_secs = BLE_GAP_DEFAULT_PRIVATE_ADDR_CYCLE_INTERVAL_S; + timeout = MIN(adv_timeout_max_secs, rotate_timeout_max_secs); } else { if (SEC_TO_UNITS(timeout, UNIT_10_MS) > BLE_GAP_ADV_TIMEOUT_LIMITED_MAX) { mp_raise_bleio_BluetoothError(MP_ERROR_TEXT("Timeout is too long: Maximum timeout length is %d seconds"), diff --git a/supervisor/shared/bluetooth/bluetooth.c b/supervisor/shared/bluetooth/bluetooth.c index 48b186bbdf12..68b43871ce16 100644 --- a/supervisor/shared/bluetooth/bluetooth.c +++ b/supervisor/shared/bluetooth/bluetooth.c @@ -132,8 +132,8 @@ static void supervisor_bluetooth_start_advertising(void) { return; } #endif - uint32_t timeout = 0; - float interval = 0.1f; + const uint32_t timeout = 0; // 0 means advertise forever. + const float interval = 0.1f; int tx_power = 0; const uint8_t *adv = private_advertising_data; size_t adv_len = sizeof(private_advertising_data); From 06a2ffd6fb530392020917f0b116dbe9c61b8f3d Mon Sep 17 00:00:00 2001 From: aguaviva Date: Tue, 2 Jul 2024 19:46:50 +0200 Subject: [PATCH 199/227] removing typos --- ports/espressif/boards/ttgo_t8_v1_7/pins.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ports/espressif/boards/ttgo_t8_v1_7/pins.c b/ports/espressif/boards/ttgo_t8_v1_7/pins.c index 1de41433503a..20a8260cf9b0 100644 --- a/ports/espressif/boards/ttgo_t8_v1_7/pins.c +++ b/ports/espressif/boards/ttgo_t8_v1_7/pins.c @@ -23,14 +23,14 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_IO26), MP_ROM_PTR(&pin_GPIO26) }, { MP_ROM_QSTR(MP_QSTR_IO27), MP_ROM_PTR(&pin_GPIO27) }, { MP_ROM_QSTR(MP_QSTR_IO14), MP_ROM_PTR(&pin_GPIO14) }, - { MP_ROM_QSTR(MP_QSTR_CLK), MP_ROM_PTR(&pin_GPIO14) }, //microSD + { MP_ROM_QSTR(MP_QSTR_CLK), MP_ROM_PTR(&pin_GPIO14) }, // microSD { MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_GPIO12) }, { MP_ROM_QSTR(MP_QSTR_IO13), MP_ROM_PTR(&pin_GPIO13) }, - { MP_ROM_QSTR(MP_QSTR_CS), MP_ROM_PTR(&pin_GPIO13) }, //microSD + { MP_ROM_QSTR(MP_QSTR_CS), MP_ROM_PTR(&pin_GPIO13) }, // microSD { MP_ROM_QSTR(MP_QSTR_IO15), MP_ROM_PTR(&pin_GPIO15) }, - { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO15) }, //microSD + { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO15) }, // microSD - // Rigth Side + // Right Side { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO21) }, { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO21) }, @@ -49,7 +49,7 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_IO23), MP_ROM_PTR(&pin_GPIO23) }, { MP_ROM_QSTR(MP_QSTR_IO18), MP_ROM_PTR(&pin_GPIO18) }, { MP_ROM_QSTR(MP_QSTR_IO5), MP_ROM_PTR(&pin_GPIO5) }, - { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO2) }, //microSD + { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO2) }, // microSD { MP_ROM_QSTR(MP_QSTR_IO2), MP_ROM_PTR(&pin_GPIO2) }, { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, From 39306393b1168f971d6540ff3fba4dff33ac85df Mon Sep 17 00:00:00 2001 From: aguaviva Date: Tue, 2 Jul 2024 19:53:42 +0200 Subject: [PATCH 200/227] prefixing SD SPI pins with SD_ so samples work OOTB --- ports/espressif/boards/ttgo_t8_v1_7/pins.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ports/espressif/boards/ttgo_t8_v1_7/pins.c b/ports/espressif/boards/ttgo_t8_v1_7/pins.c index 20a8260cf9b0..97175b2a4e5b 100644 --- a/ports/espressif/boards/ttgo_t8_v1_7/pins.c +++ b/ports/espressif/boards/ttgo_t8_v1_7/pins.c @@ -23,12 +23,12 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_IO26), MP_ROM_PTR(&pin_GPIO26) }, { MP_ROM_QSTR(MP_QSTR_IO27), MP_ROM_PTR(&pin_GPIO27) }, { MP_ROM_QSTR(MP_QSTR_IO14), MP_ROM_PTR(&pin_GPIO14) }, - { MP_ROM_QSTR(MP_QSTR_CLK), MP_ROM_PTR(&pin_GPIO14) }, // microSD + { MP_ROM_QSTR(MP_QSTR_SD_SCK), MP_ROM_PTR(&pin_GPIO14) }, { MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_GPIO12) }, { MP_ROM_QSTR(MP_QSTR_IO13), MP_ROM_PTR(&pin_GPIO13) }, - { MP_ROM_QSTR(MP_QSTR_CS), MP_ROM_PTR(&pin_GPIO13) }, // microSD + { MP_ROM_QSTR(MP_QSTR_SD_CS), MP_ROM_PTR(&pin_GPIO13) }, { MP_ROM_QSTR(MP_QSTR_IO15), MP_ROM_PTR(&pin_GPIO15) }, - { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO15) }, // microSD + { MP_ROM_QSTR(MP_QSTR_SD_MOSI), MP_ROM_PTR(&pin_GPIO15) }, // Right Side @@ -49,7 +49,7 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_IO23), MP_ROM_PTR(&pin_GPIO23) }, { MP_ROM_QSTR(MP_QSTR_IO18), MP_ROM_PTR(&pin_GPIO18) }, { MP_ROM_QSTR(MP_QSTR_IO5), MP_ROM_PTR(&pin_GPIO5) }, - { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO2) }, // microSD + { MP_ROM_QSTR(MP_QSTR_SD_MISO), MP_ROM_PTR(&pin_GPIO2) }, { MP_ROM_QSTR(MP_QSTR_IO2), MP_ROM_PTR(&pin_GPIO2) }, { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, From 6eab2ecc4237c59381d6f6aa9ee4c0b5535ba16f Mon Sep 17 00:00:00 2001 From: Tim Date: Tue, 2 Jul 2024 15:17:41 -0700 Subject: [PATCH 201/227] fix off-by-one in ADC sample rate divisor --- ports/raspberrypi/common-hal/analogbufio/BufferedIn.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/raspberrypi/common-hal/analogbufio/BufferedIn.c b/ports/raspberrypi/common-hal/analogbufio/BufferedIn.c index 880e88f1c5b1..10f977e467c3 100644 --- a/ports/raspberrypi/common-hal/analogbufio/BufferedIn.c +++ b/ports/raspberrypi/common-hal/analogbufio/BufferedIn.c @@ -53,7 +53,7 @@ void common_hal_analogbufio_bufferedin_construct(analogbufio_bufferedin_obj_t *s // sample rate determines divisor, not zero. // sample_rate is forced to be >= 1 in shared-bindings - float clk_div = (float)ADC_CLOCK_INPUT / (float)sample_rate; + float clk_div = (float)ADC_CLOCK_INPUT / (float)sample_rate - 1; adc_set_clkdiv(clk_div); // Set up the DMA to start transferring data as soon as it appears in FIFO From 4620323c787c06402c18c350a0c78b98608f2a3b Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Tue, 2 Jul 2024 19:03:47 -0400 Subject: [PATCH 202/227] Update ports/raspberrypi/common-hal/analogbufio/BufferedIn.c --- ports/raspberrypi/common-hal/analogbufio/BufferedIn.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ports/raspberrypi/common-hal/analogbufio/BufferedIn.c b/ports/raspberrypi/common-hal/analogbufio/BufferedIn.c index 10f977e467c3..152b373ee7a4 100644 --- a/ports/raspberrypi/common-hal/analogbufio/BufferedIn.c +++ b/ports/raspberrypi/common-hal/analogbufio/BufferedIn.c @@ -53,6 +53,8 @@ void common_hal_analogbufio_bufferedin_construct(analogbufio_bufferedin_obj_t *s // sample rate determines divisor, not zero. // sample_rate is forced to be >= 1 in shared-bindings + // Per the datasheet: "Setting DIV.INT to some positive value n will trigger the ADC once per n + 1 cycles." + // So subtract 1. See PR #9396. float clk_div = (float)ADC_CLOCK_INPUT / (float)sample_rate - 1; adc_set_clkdiv(clk_div); From 6c0b69e5710d6aa2705b71fd97debe7808cb10e7 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Tue, 2 Jul 2024 19:07:39 -0400 Subject: [PATCH 203/227] Update frozen libraries --- frozen/Adafruit_CircuitPython_Bitmap_Font | 2 +- frozen/Adafruit_CircuitPython_ConnectionManager | 2 +- frozen/Adafruit_CircuitPython_DisplayIO_SSD1306 | 2 +- frozen/Adafruit_CircuitPython_Display_Text | 2 +- frozen/Adafruit_CircuitPython_ESP32SPI | 2 +- frozen/Adafruit_CircuitPython_Requests | 2 +- frozen/Adafruit_CircuitPython_ST7789 | 2 +- frozen/Adafruit_CircuitPython_asyncio | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/frozen/Adafruit_CircuitPython_Bitmap_Font b/frozen/Adafruit_CircuitPython_Bitmap_Font index ff53a5a71e8c..735d8167df6b 160000 --- a/frozen/Adafruit_CircuitPython_Bitmap_Font +++ b/frozen/Adafruit_CircuitPython_Bitmap_Font @@ -1 +1 @@ -Subproject commit ff53a5a71e8c7c977c8160d9797e4ff75cbf3e5c +Subproject commit 735d8167df6bffcda71b5338e7c6df0268a39b7e diff --git a/frozen/Adafruit_CircuitPython_ConnectionManager b/frozen/Adafruit_CircuitPython_ConnectionManager index b514b44ce328..67d649b363cc 160000 --- a/frozen/Adafruit_CircuitPython_ConnectionManager +++ b/frozen/Adafruit_CircuitPython_ConnectionManager @@ -1 +1 @@ -Subproject commit b514b44ce32833d07ff3a02ee7be9edb31be284a +Subproject commit 67d649b363cc3464b7959652a32cb62662ee60c3 diff --git a/frozen/Adafruit_CircuitPython_DisplayIO_SSD1306 b/frozen/Adafruit_CircuitPython_DisplayIO_SSD1306 index 85c854e604ee..40d7b8eb7a7d 160000 --- a/frozen/Adafruit_CircuitPython_DisplayIO_SSD1306 +++ b/frozen/Adafruit_CircuitPython_DisplayIO_SSD1306 @@ -1 +1 @@ -Subproject commit 85c854e604eed58f6b8f4e1d8e553d3f926f6a0d +Subproject commit 40d7b8eb7a7d8fc91a62414d4f764dd48283d86d diff --git a/frozen/Adafruit_CircuitPython_Display_Text b/frozen/Adafruit_CircuitPython_Display_Text index 9d604e6eb523..535317831ffa 160000 --- a/frozen/Adafruit_CircuitPython_Display_Text +++ b/frozen/Adafruit_CircuitPython_Display_Text @@ -1 +1 @@ -Subproject commit 9d604e6eb523b31ea4db6b28b6304b3812e50cc6 +Subproject commit 535317831ffa667180902595daa666be153989eb diff --git a/frozen/Adafruit_CircuitPython_ESP32SPI b/frozen/Adafruit_CircuitPython_ESP32SPI index deb2a5fef202..e7e129aa6d9f 160000 --- a/frozen/Adafruit_CircuitPython_ESP32SPI +++ b/frozen/Adafruit_CircuitPython_ESP32SPI @@ -1 +1 @@ -Subproject commit deb2a5fef202866334d4a1b62a328ab9dfa928ff +Subproject commit e7e129aa6d9fec4e0844ec195c184073c8a1f5d3 diff --git a/frozen/Adafruit_CircuitPython_Requests b/frozen/Adafruit_CircuitPython_Requests index fac4012e7938..4b55319f0c7a 160000 --- a/frozen/Adafruit_CircuitPython_Requests +++ b/frozen/Adafruit_CircuitPython_Requests @@ -1 +1 @@ -Subproject commit fac4012e79389b35ad6abd5af04ea4dd7fc3ad5b +Subproject commit 4b55319f0c7a24b91ca307a2cca49a4502c9752d diff --git a/frozen/Adafruit_CircuitPython_ST7789 b/frozen/Adafruit_CircuitPython_ST7789 index b0692952495b..fd4c53e6b0ed 160000 --- a/frozen/Adafruit_CircuitPython_ST7789 +++ b/frozen/Adafruit_CircuitPython_ST7789 @@ -1 +1 @@ -Subproject commit b0692952495b4816136216f077785677fa2ad2bd +Subproject commit fd4c53e6b0ed4805362362837aa7dd71ae7fe1da diff --git a/frozen/Adafruit_CircuitPython_asyncio b/frozen/Adafruit_CircuitPython_asyncio index 1f7562deb571..2032ac10a967 160000 --- a/frozen/Adafruit_CircuitPython_asyncio +++ b/frozen/Adafruit_CircuitPython_asyncio @@ -1 +1 @@ -Subproject commit 1f7562deb571c14d204af6a21b24332e4640eb62 +Subproject commit 2032ac10a967b10b3e1c8f72fa1423db6cc1b246 From 9bc4f628f6d4103465d02cc7ba88e61c072e4010 Mon Sep 17 00:00:00 2001 From: Tim Date: Tue, 2 Jul 2024 17:15:15 -0700 Subject: [PATCH 204/227] fix off-by-one in PWM frequency setting --- ports/raspberrypi/common-hal/pwmio/PWMOut.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ports/raspberrypi/common-hal/pwmio/PWMOut.c b/ports/raspberrypi/common-hal/pwmio/PWMOut.c index 07591012c587..40b006d083a3 100644 --- a/ports/raspberrypi/common-hal/pwmio/PWMOut.c +++ b/ports/raspberrypi/common-hal/pwmio/PWMOut.c @@ -218,8 +218,8 @@ void common_hal_pwmio_pwmout_set_frequency(pwmio_pwmout_obj_t *self, uint32_t fr pwm_set_clkdiv_int_frac(self->slice, div16 / 16, div16 % 16); pwm_set_wrap(self->slice, self->top); } else { - uint32_t top = common_hal_mcu_processor_get_frequency() / frequency; - self->actual_frequency = common_hal_mcu_processor_get_frequency() / top; + uint32_t top = common_hal_mcu_processor_get_frequency() / frequency - 1; + self->actual_frequency = common_hal_mcu_processor_get_frequency() / (top + 1); self->top = MIN(MAX_TOP, top); pwm_set_clkdiv_int_frac(self->slice, 1, 0); // Set TOP register. For 100% duty cycle, CC must be set to TOP+1. From dc77f3146f84bfbd40c0fcbb6e28c7785f405f0f Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Wed, 3 Jul 2024 11:36:17 -0500 Subject: [PATCH 205/227] serial_bytes_available: don't double-count bytes on usb cdc In 9.0.x, serial_bytes_available returned a bool and tud_cdc_available was harmlessly checked twice for any characters. When the routine was changed to return an int, the double checking led to over-reporting the number of characters available. In code that would attempt to read this many bytes from sys.stdin, this made the read call block since only 1 byte was actually available. This behavior came up in the discussion of #9393. I don't mark this bug as closing that one, because that issue seems to be reporting multiple things that this change would not address, such as delays in `sys.stdout.write()` or problems seen while using webserial. --- supervisor/shared/serial.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/supervisor/shared/serial.c b/supervisor/shared/serial.c index 068525f4a415..4e4dae3d855d 100644 --- a/supervisor/shared/serial.c +++ b/supervisor/shared/serial.c @@ -309,10 +309,6 @@ uint32_t serial_bytes_available(void) { } #endif - #if CIRCUITPY_USB_DEVICE - count += tud_cdc_available(); - #endif - // Board-specific serial input. count += board_serial_bytes_available(); From 8a1b3e7cfc283124779ba407c33f0a87582a735f Mon Sep 17 00:00:00 2001 From: Tim Date: Wed, 3 Jul 2024 09:37:55 -0700 Subject: [PATCH 206/227] disallow duty cycle rounding to 0 --- ports/raspberrypi/common-hal/pwmio/PWMOut.c | 4 + .../pwmio/code_extremes.py | 87 +++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 tests/circuitpython-manual/pwmio/code_extremes.py diff --git a/ports/raspberrypi/common-hal/pwmio/PWMOut.c b/ports/raspberrypi/common-hal/pwmio/PWMOut.c index 40b006d083a3..e0572eccd9e4 100644 --- a/ports/raspberrypi/common-hal/pwmio/PWMOut.c +++ b/ports/raspberrypi/common-hal/pwmio/PWMOut.c @@ -176,6 +176,10 @@ extern void common_hal_pwmio_pwmout_set_duty_cycle(pwmio_pwmout_obj_t *self, uin } else { compare_count = ((uint32_t)duty * self->top + MAX_TOP / 2) / MAX_TOP; } + // do not allow count to be 0 (due to rounding) unless duty 0 was requested + if (compare_count == 0 && duty != 0) { + compare_count = 1; + } // compare_count is the CC register value, which should be TOP+1 for 100% duty cycle. pwm_set_chan_level(self->slice, self->ab_channel, compare_count); } diff --git a/tests/circuitpython-manual/pwmio/code_extremes.py b/tests/circuitpython-manual/pwmio/code_extremes.py new file mode 100644 index 000000000000..13dd5c90ad1a --- /dev/null +++ b/tests/circuitpython-manual/pwmio/code_extremes.py @@ -0,0 +1,87 @@ +import board +import pwmio +import random +import time +import microcontroller +import os +import sys +import random + +exponents = [ + 2, + 3, + 4, + 5, + 6, + 7, +] + +freqs = [int(10**f) for f in exponents] + +top = 65536 +den = 10 +duties = [32767, 65535, 1, 65534, 0, 0] +freq_duration = 1.2 +duty_duration = 0.2 + +print("\n\n") +board_name = sys.implementation[2] + +pins = { + "Feather RP2040": (("D4", ""),), + "RP2040-Zero": (("GP15", ""),), + "Grand Central": (("D51", "TCC"), ("A15", "TC")), + "Metro M0": (("A2", "TC"), ("A3", "TCC")), + "ESP32-S3-DevKit": (("IO6", ""),), # marked D5 on board for XIAO-ESP32-s3 + "Feather ESP32-S2": (("D9", ""),), + "XIAO nRF52840": (("D9", ""),), +} + +for board_key in pins: + if board_key in board_name: + pins_to_use = pins[board_key] + break + +while True: + for pin_name, pin_type in pins_to_use: + pin = getattr(board, pin_name) + print('title="', end="") + print(f"{board_name} at {microcontroller.cpu.frequency} Hz, pin {pin_name}", end="") + if len(pin_type) > 0: + print(f" ({pin_type})", end="") + print('",') + print(f'subtitle="{freq_duration:0.1f}s per frequency",') + print(f'version="{sys.version}",') + print("freq_calls=", end="") + pwm = pwmio.PWMOut(pin, variable_frequency=True) + t0 = time.monotonic() + duty_time = t0 + duty_duration + print("(", end="") + offset = 0 + increment = 1 + for freq in freqs: + i = 0 + try: + pwm.frequency = freq + except ValueError: + break + freq_time = t0 + freq_duration + duty_time = t0 + duty_duration + j = 0 + while time.monotonic() < freq_time: + duty = duties[j] + pwm.duty_cycle = duty + while time.monotonic() < duty_time and time.monotonic() < freq_time: + pass + j += 1 + j = min(j, len(duties) - 1) + duty_time += duty_duration + i += 1 + if time.monotonic() > freq_time: + break + t0 = freq_time + print(f"({freq}, {i/freq_duration:.0f}), ", end="") + print(")") + print("done.") + pwm.deinit() + time.sleep(5) From 6c1227efdd19d77833f1945b2a19265b3ddbca1a Mon Sep 17 00:00:00 2001 From: Tim Date: Wed, 3 Jul 2024 10:21:34 -0700 Subject: [PATCH 207/227] add tests of pwm extremes --- tests/circuitpython-manual/pwmio/README.md | 8 +++++++- .../pwmio/{code.py => code_ramps.py} | 1 + .../pwmio/pwm_extremes_explainer.png | Bin 0 -> 32557 bytes 3 files changed, 8 insertions(+), 1 deletion(-) rename tests/circuitpython-manual/pwmio/{code.py => code_ramps.py} (98%) create mode 100644 tests/circuitpython-manual/pwmio/pwm_extremes_explainer.png diff --git a/tests/circuitpython-manual/pwmio/README.md b/tests/circuitpython-manual/pwmio/README.md index 11bcd4de6651..511424c8f6c6 100644 --- a/tests/circuitpython-manual/pwmio/README.md +++ b/tests/circuitpython-manual/pwmio/README.md @@ -2,7 +2,7 @@ This directory contains tools for testing CircuitPython's PWM API. Running the tests involves three steps: -1. [CircuitPython PWM test code `code.py`](code.py) is run on the board to be tested. +1. [CircuitPython PWM test code `code_ramps.py`](code_ramps.py) is run on the board to be tested. 2. As the code runs, the state of the PWM signal is logged by a logic analyzer (I used a Saleae Logic Pro 8). 3. Data collected by the logic analyzer is analyzed and plotted into a PNG image by [CPython code `duty.py`](duty.py). @@ -37,3 +37,9 @@ These tests can be used to assess how well the PWM API delivers expected behavio The plot at the top of this page depicts data PWM gathered from a device with an API that displays all of the expected behavior listed above. The plots below show how the tools reveal flaws in the behavior of PWM APIs that are not as complete. + +## Testing always-off and always-on PWM extremes + +The procedure described above does not test item 2 above, i.e. the ability of the API to support duty cycles of 0% and 100%. A different code file, (code_extremes.py) provides for this. This code cycles through PWM duty cycles of 32767, 65535, 1, 65534, and 0, repeating the sequence at six frequencies from 100 Hz to 10MHz. When viewed on a logic analyzer, the PWM output should look like the figure below. 100% and 0% PWM result from duty cycle settings of 65535 and 0, (and only from those settings, in accordance with item 3 above.) + + diff --git a/tests/circuitpython-manual/pwmio/code.py b/tests/circuitpython-manual/pwmio/code_ramps.py similarity index 98% rename from tests/circuitpython-manual/pwmio/code.py rename to tests/circuitpython-manual/pwmio/code_ramps.py index b7f10670e8be..6a06e4eff6bb 100644 --- a/tests/circuitpython-manual/pwmio/code.py +++ b/tests/circuitpython-manual/pwmio/code_ramps.py @@ -39,6 +39,7 @@ board_name = sys.implementation[2] pins = { + "Feather RP2040": (("D4", ""),), "RP2040-Zero": (("GP15", ""),), "Grand Central": (("D51", "TCC"), ("A15", "TC")), "Metro M0": (("A2", "TC"), ("A3", "TCC")), diff --git a/tests/circuitpython-manual/pwmio/pwm_extremes_explainer.png b/tests/circuitpython-manual/pwmio/pwm_extremes_explainer.png new file mode 100644 index 0000000000000000000000000000000000000000..25f30251976dde9641e7a0e3fb675547eef4eeb3 GIT binary patch literal 32557 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%0A8J zI=Wa09X0x4DbPCOD=1^7?_lGb1rk0$l4_j#;tYS^Bmr8SbueRsg6q_O>-0SsQH8;IScg$2Vat>UZRe9ezJMy{v!nmH~D{61tKh*K<7i(28p_(d=|v@MTkfo8x||1;2?5mX@k z-t;<>wOCA Date: Wed, 3 Jul 2024 19:30:53 +0100 Subject: [PATCH 208/227] Add 8086 USB Interposer --- .../boards/8086_usb_interposer/board.c | 33 ++++++++++++ .../8086_usb_interposer/mpconfigboard.h | 23 ++++++++ .../8086_usb_interposer/mpconfigboard.mk | 9 ++++ .../pico-sdk-configboard.h | 12 +++++ .../boards/8086_usb_interposer/pins.c | 54 +++++++++++++++++++ 5 files changed, 131 insertions(+) create mode 100644 ports/raspberrypi/boards/8086_usb_interposer/board.c create mode 100644 ports/raspberrypi/boards/8086_usb_interposer/mpconfigboard.h create mode 100644 ports/raspberrypi/boards/8086_usb_interposer/mpconfigboard.mk create mode 100644 ports/raspberrypi/boards/8086_usb_interposer/pico-sdk-configboard.h create mode 100644 ports/raspberrypi/boards/8086_usb_interposer/pins.c diff --git a/ports/raspberrypi/boards/8086_usb_interposer/board.c b/ports/raspberrypi/boards/8086_usb_interposer/board.c new file mode 100644 index 000000000000..68ed648f46b4 --- /dev/null +++ b/ports/raspberrypi/boards/8086_usb_interposer/board.c @@ -0,0 +1,33 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "supervisor/board.h" + +#include "shared-bindings/digitalio/DigitalInOut.h" +#include "shared-bindings/usb_host/Port.h" +#include "hardware/gpio.h" + +// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. + +digitalio_digitalinout_obj_t _host_power; + +bool board_reset_pin_number(uint8_t pin_number) { + if (pin_number == 18) { + // doing this (rather than gpio_init) in this specific order ensures no + // glitch if pin was already configured as a high output. gpio_init() temporarily + // configures the pin as an input, so the power enable value would potentially + // glitch. + gpio_put(pin_number, 1); + gpio_set_dir(pin_number, GPIO_OUT); + gpio_set_function(pin_number, GPIO_FUNC_SIO); + + return true; + } + return false; +} +void board_init(void) { + common_hal_usb_host_port_construct(&pin_GPIO16, &pin_GPIO17); +} diff --git a/ports/raspberrypi/boards/8086_usb_interposer/mpconfigboard.h b/ports/raspberrypi/boards/8086_usb_interposer/mpconfigboard.h new file mode 100644 index 000000000000..d9aa3c3d4e44 --- /dev/null +++ b/ports/raspberrypi/boards/8086_usb_interposer/mpconfigboard.h @@ -0,0 +1,23 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#pragma once + +#define MICROPY_HW_BOARD_NAME "8086 USB Interposer" +#define MICROPY_HW_MCU_NAME "rp2040" + +#define MICROPY_HW_LED_STATUS (&pin_GPIO7) + +#define DEFAULT_I2C_BUS_SCL (&pin_GPIO15) +#define DEFAULT_I2C_BUS_SDA (&pin_GPIO14) + +#define DEFAULT_UART_BUS_RX (&pin_GPIO1) +#define DEFAULT_UART_BUS_TX (&pin_GPIO0) + +// #define CIRCUITPY_CONSOLE_UART_RX DEFAULT_UART_BUS_RX +// #define CIRCUITPY_CONSOLE_UART_TX DEFAULT_UART_BUS_TX + +#define CIRCUITPY_USB_HOST_INSTANCE 1 diff --git a/ports/raspberrypi/boards/8086_usb_interposer/mpconfigboard.mk b/ports/raspberrypi/boards/8086_usb_interposer/mpconfigboard.mk new file mode 100644 index 000000000000..332c4f820f31 --- /dev/null +++ b/ports/raspberrypi/boards/8086_usb_interposer/mpconfigboard.mk @@ -0,0 +1,9 @@ +USB_VID = 0x3171 +USB_PID = 0x010C +USB_PRODUCT = "USB Interposer" +USB_MANUFACTURER = "8086 Consultancy" + +CHIP_VARIANT = RP2040 +CHIP_FAMILY = rp2 + +EXTERNAL_FLASH_DEVICES = "W25Q128JVxQ" diff --git a/ports/raspberrypi/boards/8086_usb_interposer/pico-sdk-configboard.h b/ports/raspberrypi/boards/8086_usb_interposer/pico-sdk-configboard.h new file mode 100644 index 000000000000..ce5a7645b4e2 --- /dev/null +++ b/ports/raspberrypi/boards/8086_usb_interposer/pico-sdk-configboard.h @@ -0,0 +1,12 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#pragma once + +// Put board-specific pico-sdk definitions here. This file must exist. + +// Allow extra time for xosc to start. +#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64 diff --git a/ports/raspberrypi/boards/8086_usb_interposer/pins.c b/ports/raspberrypi/boards/8086_usb_interposer/pins.c new file mode 100644 index 000000000000..44301159ead9 --- /dev/null +++ b/ports/raspberrypi/boards/8086_usb_interposer/pins.c @@ -0,0 +1,54 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2021 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "shared-bindings/board/__init__.h" + +static const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + { MP_ROM_QSTR(MP_QSTR_ADC_VBUS_IN), MP_ROM_PTR(&pin_GPIO26) }, + { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) }, + + { MP_ROM_QSTR(MP_QSTR_ADC_VBUS_OUT), MP_ROM_PTR(&pin_GPIO27) }, + { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO27) }, + + { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_LED_TOP_RED), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_GP7), MP_ROM_PTR(&pin_GPIO7) }, + + { MP_ROM_QSTR(MP_QSTR_LED_TOP_AMBER), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_GP8), MP_ROM_PTR(&pin_GPIO8) }, + + { MP_ROM_QSTR(MP_QSTR_LED_BOTTOM_RED), MP_ROM_PTR(&pin_GPIO22) }, + { MP_ROM_QSTR(MP_QSTR_GP22), MP_ROM_PTR(&pin_GPIO22) }, + + { MP_ROM_QSTR(MP_QSTR_LED_BOTTOM_AMBER), MP_ROM_PTR(&pin_GPIO23) }, + { MP_ROM_QSTR(MP_QSTR_GP23), MP_ROM_PTR(&pin_GPIO23) }, + + { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_GP1), MP_ROM_PTR(&pin_GPIO1) }, + + { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, + + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_GP14), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO15) }, + { MP_ROM_QSTR(MP_QSTR_GP15), MP_ROM_PTR(&pin_GPIO15) }, + + { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_BOOT), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_GP12), MP_ROM_PTR(&pin_GPIO12) }, + + { MP_ROM_QSTR(MP_QSTR_USB_HOST_DATA_PLUS), MP_ROM_PTR(&pin_GPIO16) }, + { MP_ROM_QSTR(MP_QSTR_USB_HOST_DATA_MINUS), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_USB_HOST_5V_POWER), MP_ROM_PTR(&pin_GPIO18) }, + + { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, + { MP_ROM_QSTR(MP_QSTR_STEMMA_I2C), MP_ROM_PTR(&board_i2c_obj) }, + { MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) }, +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); From e73e5b7e95c0b7262e176e6b269c9bdb16e6dd29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hac=C4=B1?= Date: Tue, 2 Jul 2024 18:32:18 +0000 Subject: [PATCH 209/227] Translated using Weblate (Turkish) Currently translated at 21.1% (211 of 996 strings) Translation: CircuitPython/main Translate-URL: https://hosted.weblate.org/projects/circuitpython/main/tr/ --- locale/tr.po | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/locale/tr.po b/locale/tr.po index 58cb0d0b6e56..4e564ede7065 100644 --- a/locale/tr.po +++ b/locale/tr.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-07-02 03:21+0000\n" -"Last-Translator: Zoda \n" +"PO-Revision-Date: 2024-07-03 19:09+0000\n" +"Last-Translator: Hacı \n" "Language-Team: none\n" "Language: tr\n" "MIME-Version: 1.0\n" @@ -55,6 +55,8 @@ msgid "" "\n" "You are in safe mode because:\n" msgstr "" +"\n" +"Güvenli moddasın çünkü:\n" #: py/obj.c msgid " File \"%q\"" @@ -103,7 +105,7 @@ msgstr "" #: ports/nordic/common-hal/watchdog/WatchDogTimer.c msgid "%q cannot be changed once mode is set to %q" -msgstr "" +msgstr "Mod %q olarak ayarlandıktan sonra %q değiştirilemez" #: shared-bindings/microcontroller/Pin.c msgid "%q contains duplicate pins" From 70bea611ec058621976b2b458f43af55ff8c781a Mon Sep 17 00:00:00 2001 From: Chris Burton Date: Wed, 3 Jul 2024 21:46:07 +0100 Subject: [PATCH 210/227] Correct name of GPIO15. --- ports/raspberrypi/boards/8086_usb_interposer/pins.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/raspberrypi/boards/8086_usb_interposer/pins.c b/ports/raspberrypi/boards/8086_usb_interposer/pins.c index 44301159ead9..b98cb029c091 100644 --- a/ports/raspberrypi/boards/8086_usb_interposer/pins.c +++ b/ports/raspberrypi/boards/8086_usb_interposer/pins.c @@ -36,7 +36,7 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO14) }, { MP_ROM_QSTR(MP_QSTR_GP14), MP_ROM_PTR(&pin_GPIO14) }, - { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO15) }, + { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO15) }, { MP_ROM_QSTR(MP_QSTR_GP15), MP_ROM_PTR(&pin_GPIO15) }, { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO12) }, From 92814e7bd98845b12d8906d3a595ee4efe0fb0fa Mon Sep 17 00:00:00 2001 From: dikei100 Date: Fri, 5 Jul 2024 14:30:30 +0200 Subject: [PATCH 211/227] Added support for new board: LILYGO T-Display S3 Pro --- .../boards/lilygo_tdisplay_s3_pro/board.c | 94 ++++++++++++++ .../board.c:Zone.Identifier | 0 .../lilygo_tdisplay_s3_pro/mpconfigboard.h | 19 +++ .../mpconfigboard.h:Zone.Identifier | 0 .../lilygo_tdisplay_s3_pro/mpconfigboard.mk | 16 +++ .../mpconfigboard.mk:Zone.Identifier | 0 .../boards/lilygo_tdisplay_s3_pro/pins.c | 119 ++++++++++++++++++ .../pins.c:Zone.Identifier | 0 .../boards/lilygo_tdisplay_s3_pro/sdkconfig | 22 ++++ .../sdkconfig:Zone.Identifier | 0 10 files changed, 270 insertions(+) create mode 100644 ports/espressif/boards/lilygo_tdisplay_s3_pro/board.c create mode 100644 ports/espressif/boards/lilygo_tdisplay_s3_pro/board.c:Zone.Identifier create mode 100644 ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.h create mode 100644 ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.h:Zone.Identifier create mode 100644 ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.mk create mode 100644 ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.mk:Zone.Identifier create mode 100644 ports/espressif/boards/lilygo_tdisplay_s3_pro/pins.c create mode 100644 ports/espressif/boards/lilygo_tdisplay_s3_pro/pins.c:Zone.Identifier create mode 100644 ports/espressif/boards/lilygo_tdisplay_s3_pro/sdkconfig create mode 100644 ports/espressif/boards/lilygo_tdisplay_s3_pro/sdkconfig:Zone.Identifier diff --git a/ports/espressif/boards/lilygo_tdisplay_s3_pro/board.c b/ports/espressif/boards/lilygo_tdisplay_s3_pro/board.c new file mode 100644 index 000000000000..ae8192d23943 --- /dev/null +++ b/ports/espressif/boards/lilygo_tdisplay_s3_pro/board.c @@ -0,0 +1,94 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "supervisor/board.h" +#include "mpconfigboard.h" +#include "shared-bindings/microcontroller/Pin.h" + +#include "shared-bindings/busio/SPI.h" +#include "shared-bindings/fourwire/FourWire.h" +#include "shared-module/displayio/__init__.h" +#include "shared-module/displayio/mipi_constants.h" +#include "shared-bindings/board/__init__.h" + +#include "components/driver/gpio/include/driver/gpio.h" +#include "components/hal/include/hal/gpio_hal.h" +#include "common-hal/microcontroller/Pin.h" + +uint8_t display_init_sequence[] = { + 0x01, 0x80, 0x96, // _SWRESET and Delay 150ms + 0x11, 0x80, 0xFF, // _SLPOUT and Delay 500ms + 0x3A, 0x81, 0x55, 0x0A, // _COLMOD and Delay 10ms + 0x21, 0x80, 0x0A, // _INVON Hack and Delay 10ms + 0x12, 0x80, 0x0A, // _PTLON and Delay 10ms + 0x36, 0x01, 0x48, // _MADCTL use portrait mode + 0x29, 0x80, 0xFF, // _DISPON and Delay 500ms +}; + +void board_init(void) { + busio_spi_obj_t *spi = common_hal_board_create_spi(0); + fourwire_fourwire_obj_t *bus = &allocate_display_bus()->fourwire_bus; + bus->base.type = &fourwire_fourwire_type; + common_hal_fourwire_fourwire_construct( + bus, + spi, + &pin_GPIO9, // TFT_DC Command or data + &pin_GPIO39, // TFT_CS Chip select + &pin_GPIO47, // TFT_RST Reset + 40000000, // Baudrate + 0, // Polarity + 0); // Phase + + busdisplay_busdisplay_obj_t *display = &allocate_display()->display; + display->base.type = &busdisplay_busdisplay_type; + common_hal_busdisplay_busdisplay_construct( + display, + bus, + 222, // Width + 480, // Height + 49, // column start + 0, // row start + 0, // rotation + 16, // Color depth + false, // Grayscale + false, // pixels in a byte share a row. Only valid for depths < 8 + 1, // bytes per cell. Only valid for depths < 8 + false, // reverse_pixels_in_byte. Only valid for depths < 8 + true, // reverse_pixels_in_word + MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command + MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command + MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command + display_init_sequence, + sizeof(display_init_sequence), + &pin_GPIO48, // backlight pin + NO_BRIGHTNESS_COMMAND, + 1.0f, // brightness + false, // single_byte_bounds + false, // data_as_commands + true, // auto_refresh + 60, // native_frames_per_second + true, // backlight_on_high + false, // SH1107_addressing + 50000); // backlight pwm frequency +} + +// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. + +bool espressif_board_reset_pin_number(gpio_num_t pin_number) { + // Pull one LED down on reset rather than the default up + if (pin_number == 38) { // This is the flashlight LED - very bright + 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; +} diff --git a/ports/espressif/boards/lilygo_tdisplay_s3_pro/board.c:Zone.Identifier b/ports/espressif/boards/lilygo_tdisplay_s3_pro/board.c:Zone.Identifier new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.h b/ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.h new file mode 100644 index 000000000000..c98cd4d307e8 --- /dev/null +++ b/ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.h @@ -0,0 +1,19 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#pragma once + +// Micropython setup + +#define MICROPY_HW_BOARD_NAME "LILYGO T-Display S3 Pro" +#define MICROPY_HW_MCU_NAME "ESP32S3" + +#define DEFAULT_SPI_BUS_SCK (&pin_GPIO18) +#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO17) +#define DEFAULT_SPI_BUS_MISO (&pin_GPIO8) + +#define DEFAULT_I2C_BUS_SCL (&pin_GPIO6) +#define DEFAULT_I2C_BUS_SDA (&pin_GPIO5) diff --git a/ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.h:Zone.Identifier b/ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.h:Zone.Identifier new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.mk b/ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.mk new file mode 100644 index 000000000000..8d3a28b3da32 --- /dev/null +++ b/ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.mk @@ -0,0 +1,16 @@ +USB_VID = 0x303A +USB_PID = 0x813F +USB_PRODUCT = "T-Display S3 Pro" +USB_MANUFACTURER = "LILYGO" + +IDF_TARGET = esp32s3 + +CIRCUITPY_ESP_FLASH_SIZE = 16MB +CIRCUITPY_ESP_FLASH_MODE = qio +CIRCUITPY_ESP_FLASH_FREQ = 80m + +CIRCUITPY_ESP_PSRAM_SIZE = 8MB +CIRCUITPY_ESP_PSRAM_MODE = opi +CIRCUITPY_ESP_PSRAM_FREQ = 80m + +CIRCUITPY_ESPCAMERA = 1 diff --git a/ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.mk:Zone.Identifier b/ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.mk:Zone.Identifier new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/ports/espressif/boards/lilygo_tdisplay_s3_pro/pins.c b/ports/espressif/boards/lilygo_tdisplay_s3_pro/pins.c new file mode 100644 index 000000000000..01acc869e5a1 --- /dev/null +++ b/ports/espressif/boards/lilygo_tdisplay_s3_pro/pins.c @@ -0,0 +1,119 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// +// SPDX-License-Identifier: MIT + +#include "py/objtuple.h" +#include "shared-bindings/board/__init__.h" +#include "shared-module/displayio/__init__.h" + +static const mp_rom_obj_tuple_t camera_data_tuple = { + {&mp_type_tuple}, + 8, + { + MP_ROM_PTR(&pin_GPIO45), + MP_ROM_PTR(&pin_GPIO41), + MP_ROM_PTR(&pin_GPIO40), + MP_ROM_PTR(&pin_GPIO42), + MP_ROM_PTR(&pin_GPIO1), + MP_ROM_PTR(&pin_GPIO3), + MP_ROM_PTR(&pin_GPIO10), + MP_ROM_PTR(&pin_GPIO4), + } +}; + +static const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_IO1), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_IO2), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_IO3), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_IO4), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_IO5), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_IO6), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_IO7), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_IO8), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_IO9), MP_ROM_PTR(&pin_GPIO9) }, + { MP_ROM_QSTR(MP_QSTR_IO10), MP_ROM_PTR(&pin_GPIO10) }, + { MP_ROM_QSTR(MP_QSTR_IO11), MP_ROM_PTR(&pin_GPIO11) }, + { MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_IO13), MP_ROM_PTR(&pin_GPIO13) }, + { MP_ROM_QSTR(MP_QSTR_IO14), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_IO15), MP_ROM_PTR(&pin_GPIO15) }, + { MP_ROM_QSTR(MP_QSTR_IO16), MP_ROM_PTR(&pin_GPIO16) }, + { MP_ROM_QSTR(MP_QSTR_IO17), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_IO18), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_IO19), MP_ROM_PTR(&pin_GPIO19) }, + { MP_ROM_QSTR(MP_QSTR_IO20), MP_ROM_PTR(&pin_GPIO20) }, + { MP_ROM_QSTR(MP_QSTR_IO21), MP_ROM_PTR(&pin_GPIO21) }, + { MP_ROM_QSTR(MP_QSTR_IO35), MP_ROM_PTR(&pin_GPIO35) }, + { MP_ROM_QSTR(MP_QSTR_IO36), MP_ROM_PTR(&pin_GPIO36) }, + { MP_ROM_QSTR(MP_QSTR_IO37), MP_ROM_PTR(&pin_GPIO37) }, + { MP_ROM_QSTR(MP_QSTR_IO38), MP_ROM_PTR(&pin_GPIO38) }, + { MP_ROM_QSTR(MP_QSTR_IO39), MP_ROM_PTR(&pin_GPIO39) }, + { MP_ROM_QSTR(MP_QSTR_IO40), MP_ROM_PTR(&pin_GPIO40) }, + { MP_ROM_QSTR(MP_QSTR_IO41), MP_ROM_PTR(&pin_GPIO41) }, + { MP_ROM_QSTR(MP_QSTR_IO42), MP_ROM_PTR(&pin_GPIO42) }, + { MP_ROM_QSTR(MP_QSTR_IO43), MP_ROM_PTR(&pin_GPIO43) }, + { MP_ROM_QSTR(MP_QSTR_IO44), MP_ROM_PTR(&pin_GPIO44) }, + { MP_ROM_QSTR(MP_QSTR_IO45), MP_ROM_PTR(&pin_GPIO45) }, + { MP_ROM_QSTR(MP_QSTR_IO46), MP_ROM_PTR(&pin_GPIO46) }, + { MP_ROM_QSTR(MP_QSTR_IO47), MP_ROM_PTR(&pin_GPIO47) }, + { MP_ROM_QSTR(MP_QSTR_IO48), MP_ROM_PTR(&pin_GPIO48) }, + + // SPI control pins + { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO8) }, + + // I2C control pins + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_STEMMA_SDA), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_STEMMA_SCL), MP_ROM_PTR(&pin_GPIO6) }, + + // TFT control pins + { MP_ROM_QSTR(MP_QSTR_TFT_BKLT), MP_ROM_PTR(&pin_GPIO48) }, + { MP_ROM_QSTR(MP_QSTR_TFT_CS), MP_ROM_PTR(&pin_GPIO39) }, + { MP_ROM_QSTR(MP_QSTR_TFT_DC), MP_ROM_PTR(&pin_GPIO9) }, + + // Touchscreen control pins + { MP_ROM_QSTR(MP_QSTR_TOUCH_INT), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_TOUCH_RESET), MP_ROM_PTR(&pin_GPIO13) }, + + // SD card control pins + { MP_ROM_QSTR(MP_QSTR_SDCARD_CS), MP_ROM_PTR(&pin_GPIO14) }, + + // Camera control pins + { MP_ROM_QSTR(MP_QSTR_CAMERA_DATA), MP_ROM_PTR(&camera_data_tuple) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_VSYNC), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_HREF), MP_ROM_PTR(&pin_GPIO15) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_DATA9), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_XCLK), MP_ROM_PTR(&pin_GPIO11) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_DATA8), MP_ROM_PTR(&pin_GPIO10) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_DATA7), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_PCLK), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_DATA6), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_DATA2), MP_ROM_PTR(&pin_GPIO45) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_DATA5), MP_ROM_PTR(&pin_GPIO42) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_DATA3), MP_ROM_PTR(&pin_GPIO41) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_DATA4), MP_ROM_PTR(&pin_GPIO40) }, + { MP_ROM_QSTR(MP_QSTR_CAMERA_PWDN), MP_ROM_PTR(&pin_GPIO46) }, + + // Camera flashlight control pin + { MP_ROM_QSTR(MP_QSTR_FLASHLIGHT), MP_ROM_PTR(&pin_GPIO38) }, + + // Buttons + { MP_ROM_QSTR(MP_QSTR_BUTTON0), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_BUTTON1), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_BUTTON2), MP_ROM_PTR(&pin_GPIO16) }, + + // Interfaces + { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, + { MP_ROM_QSTR(MP_QSTR_STEMMA_I2C), MP_ROM_PTR(&board_i2c_obj) }, + { MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) }, + { MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)} +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); diff --git a/ports/espressif/boards/lilygo_tdisplay_s3_pro/pins.c:Zone.Identifier b/ports/espressif/boards/lilygo_tdisplay_s3_pro/pins.c:Zone.Identifier new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/ports/espressif/boards/lilygo_tdisplay_s3_pro/sdkconfig b/ports/espressif/boards/lilygo_tdisplay_s3_pro/sdkconfig new file mode 100644 index 000000000000..03805d7f206c --- /dev/null +++ b/ports/espressif/boards/lilygo_tdisplay_s3_pro/sdkconfig @@ -0,0 +1,22 @@ +# +# Espressif IoT Development Framework Configuration +# +# +# Component config +# +# +# LWIP +# +CONFIG_LWIP_LOCAL_HOSTNAME="T-Display S3 Pro" +# end of LWIP + +# +# Camera configuration +# +# CONFIG_OV7725_SUPPORT is not set +# CONFIG_OV3660_SUPPORT is not set +# end of Camera configuration + +# end of Component config + +# end of Espressif IoT Development Framework Configuration diff --git a/ports/espressif/boards/lilygo_tdisplay_s3_pro/sdkconfig:Zone.Identifier b/ports/espressif/boards/lilygo_tdisplay_s3_pro/sdkconfig:Zone.Identifier new file mode 100644 index 000000000000..e69de29bb2d1 From 3da31218c41e7c81572b918eb71fc50b7c2dd7f9 Mon Sep 17 00:00:00 2001 From: dikei100 <96242114+dikei100@users.noreply.github.com> Date: Fri, 5 Jul 2024 14:48:55 +0200 Subject: [PATCH 212/227] Update board.c --- ports/espressif/boards/lilygo_tdisplay_s3_pro/board.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/espressif/boards/lilygo_tdisplay_s3_pro/board.c b/ports/espressif/boards/lilygo_tdisplay_s3_pro/board.c index ae8192d23943..3fc860d0a83e 100644 --- a/ports/espressif/boards/lilygo_tdisplay_s3_pro/board.c +++ b/ports/espressif/boards/lilygo_tdisplay_s3_pro/board.c @@ -1,6 +1,6 @@ // This file is part of the CircuitPython project: https://circuitpython.org // -// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2024 Konstantinos Krikis // // SPDX-License-Identifier: MIT From 84ce7a7f41b2c611f040c9073a4ee95be0edc6e1 Mon Sep 17 00:00:00 2001 From: dikei100 <96242114+dikei100@users.noreply.github.com> Date: Fri, 5 Jul 2024 14:49:30 +0200 Subject: [PATCH 213/227] Update mpconfigboard.h --- ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.h b/ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.h index c98cd4d307e8..262513f1f86c 100644 --- a/ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.h +++ b/ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.h @@ -1,6 +1,6 @@ // This file is part of the CircuitPython project: https://circuitpython.org // -// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2024 Konstantinos Krikis // // SPDX-License-Identifier: MIT From af1df0c5296e07924d5737b2d6e2421d2136839e Mon Sep 17 00:00:00 2001 From: dikei100 <96242114+dikei100@users.noreply.github.com> Date: Fri, 5 Jul 2024 14:50:16 +0200 Subject: [PATCH 214/227] Update pins.c --- ports/espressif/boards/lilygo_tdisplay_s3_pro/pins.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/espressif/boards/lilygo_tdisplay_s3_pro/pins.c b/ports/espressif/boards/lilygo_tdisplay_s3_pro/pins.c index 01acc869e5a1..6b4cc54c9ccc 100644 --- a/ports/espressif/boards/lilygo_tdisplay_s3_pro/pins.c +++ b/ports/espressif/boards/lilygo_tdisplay_s3_pro/pins.c @@ -1,6 +1,6 @@ // This file is part of the CircuitPython project: https://circuitpython.org // -// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2024 Konstantinos Krikis // // SPDX-License-Identifier: MIT From e1a5f01a6743765265f0e2d0b674abf9b330e6a7 Mon Sep 17 00:00:00 2001 From: dikei100 Date: Fri, 5 Jul 2024 14:55:47 +0200 Subject: [PATCH 215/227] Correct copyright --- ports/espressif/boards/lilygo_tdisplay_s3_pro/board.c | 2 +- ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.h | 2 +- ports/espressif/boards/lilygo_tdisplay_s3_pro/pins.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ports/espressif/boards/lilygo_tdisplay_s3_pro/board.c b/ports/espressif/boards/lilygo_tdisplay_s3_pro/board.c index ae8192d23943..3fc860d0a83e 100644 --- a/ports/espressif/boards/lilygo_tdisplay_s3_pro/board.c +++ b/ports/espressif/boards/lilygo_tdisplay_s3_pro/board.c @@ -1,6 +1,6 @@ // This file is part of the CircuitPython project: https://circuitpython.org // -// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2024 Konstantinos Krikis // // SPDX-License-Identifier: MIT diff --git a/ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.h b/ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.h index c98cd4d307e8..262513f1f86c 100644 --- a/ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.h +++ b/ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.h @@ -1,6 +1,6 @@ // This file is part of the CircuitPython project: https://circuitpython.org // -// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2024 Konstantinos Krikis // // SPDX-License-Identifier: MIT diff --git a/ports/espressif/boards/lilygo_tdisplay_s3_pro/pins.c b/ports/espressif/boards/lilygo_tdisplay_s3_pro/pins.c index 01acc869e5a1..6b4cc54c9ccc 100644 --- a/ports/espressif/boards/lilygo_tdisplay_s3_pro/pins.c +++ b/ports/espressif/boards/lilygo_tdisplay_s3_pro/pins.c @@ -1,6 +1,6 @@ // This file is part of the CircuitPython project: https://circuitpython.org // -// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries +// SPDX-FileCopyrightText: Copyright (c) 2024 Konstantinos Krikis // // SPDX-License-Identifier: MIT From 28f8a83b7c1b33f58b2573d6f95369fcef642eed Mon Sep 17 00:00:00 2001 From: dikei100 Date: Fri, 5 Jul 2024 15:49:42 +0200 Subject: [PATCH 216/227] Changed USB_PID --- ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.mk b/ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.mk index 8d3a28b3da32..9a8b9cbba023 100644 --- a/ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.mk +++ b/ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.mk @@ -1,5 +1,5 @@ USB_VID = 0x303A -USB_PID = 0x813F +USB_PID = 0x8211 USB_PRODUCT = "T-Display S3 Pro" USB_MANUFACTURER = "LILYGO" From 4f166f261fd019e0bb6f1a5fb4d6cf81e24a30d1 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Sat, 6 Jul 2024 12:20:00 -0400 Subject: [PATCH 217/227] add CONFIG_IDF_TARGET_ESP32C6 conditionals --- ports/espressif/common-hal/microcontroller/__init__.c | 2 +- ports/espressif/supervisor/port.c | 7 +++++-- ports/espressif/supervisor/usb.c | 4 +++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ports/espressif/common-hal/microcontroller/__init__.c b/ports/espressif/common-hal/microcontroller/__init__.c index 5220230765ae..4375f942f550 100644 --- a/ports/espressif/common-hal/microcontroller/__init__.c +++ b/ports/espressif/common-hal/microcontroller/__init__.c @@ -81,7 +81,7 @@ void common_hal_mcu_enable_interrupts(void) { void common_hal_mcu_on_next_reset(mcu_runmode_t runmode) { switch (runmode) { case RUNMODE_UF2: - #if defined(CONFIG_IDF_TARGET_ESP32) || defined(CONFIG_IDF_TARGET_ESP32C3) + #if defined(CONFIG_IDF_TARGET_ESP32) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6) mp_arg_error_invalid(MP_QSTR_run_mode); #else // 0x11F2 is APP_REQUEST_UF2_RESET_HINT & is defined by TinyUF2 diff --git a/ports/espressif/supervisor/port.c b/ports/espressif/supervisor/port.c index 694a10669e33..0b39302675bc 100644 --- a/ports/espressif/supervisor/port.c +++ b/ports/espressif/supervisor/port.c @@ -240,9 +240,12 @@ safe_mode_t port_init(void) { #if DEBUG // debug UART - #ifdef CONFIG_IDF_TARGET_ESP32C3 + #if defined(CONFIG_IDF_TARGET_ESP32C3) common_hal_never_reset_pin(&pin_GPIO20); common_hal_never_reset_pin(&pin_GPIO21); + #elif defined(CONFIG_IDF_TARGET_ESP32C6) + common_hal_never_reset_pin(&pin_GPIO16); + common_hal_never_reset_pin(&pin_GPIO17); #elif defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3) common_hal_never_reset_pin(&pin_GPIO43); common_hal_never_reset_pin(&pin_GPIO44); @@ -256,7 +259,7 @@ safe_mode_t port_init(void) { #if ENABLE_JTAG ESP_LOGI(TAG, "Marking JTAG pins never_reset"); // JTAG - #ifdef CONFIG_IDF_TARGET_ESP32C3 + #if defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6) common_hal_never_reset_pin(&pin_GPIO4); common_hal_never_reset_pin(&pin_GPIO5); common_hal_never_reset_pin(&pin_GPIO6); diff --git a/ports/espressif/supervisor/usb.c b/ports/espressif/supervisor/usb.c index 8719a925ce7b..3cd070e7c5d2 100644 --- a/ports/espressif/supervisor/usb.c +++ b/ports/espressif/supervisor/usb.c @@ -20,8 +20,10 @@ #include "driver/gpio.h" #include "esp_private/periph_ctrl.h" -#ifdef CONFIG_IDF_TARGET_ESP32C3 +#if defined(CONFIG_IDF_TARGET_ESP32C3) #include "components/esp_rom/include/esp32c3/rom/gpio.h" +#elif defined(CONFIG_IDF_TARGET_ESP32C6) +#include "components/esp_rom/include/esp32c6/rom/gpio.h" #elif defined(CONFIG_IDF_TARGET_ESP32S2) #include "components/esp_rom/include/esp32s2/rom/gpio.h" #elif defined(CONFIG_IDF_TARGET_ESP32S3) From 79e4ff3e599ef86e0dba4e5fb89ed755a135d3a6 Mon Sep 17 00:00:00 2001 From: CDarius Date: Sat, 6 Jul 2024 18:45:06 +0200 Subject: [PATCH 218/227] Add board Waveshare RP2040-PiZero --- .../boards/waveshare_rp2040_pizero/board.c | 9 ++ .../waveshare_rp2040_pizero/mpconfigboard.h | 22 +++++ .../waveshare_rp2040_pizero/mpconfigboard.mk | 15 ++++ .../pico-sdk-configboard.h | 12 +++ .../boards/waveshare_rp2040_pizero/pins.c | 82 +++++++++++++++++++ 5 files changed, 140 insertions(+) create mode 100644 ports/raspberrypi/boards/waveshare_rp2040_pizero/board.c create mode 100644 ports/raspberrypi/boards/waveshare_rp2040_pizero/mpconfigboard.h create mode 100644 ports/raspberrypi/boards/waveshare_rp2040_pizero/mpconfigboard.mk create mode 100644 ports/raspberrypi/boards/waveshare_rp2040_pizero/pico-sdk-configboard.h create mode 100644 ports/raspberrypi/boards/waveshare_rp2040_pizero/pins.c diff --git a/ports/raspberrypi/boards/waveshare_rp2040_pizero/board.c b/ports/raspberrypi/boards/waveshare_rp2040_pizero/board.c new file mode 100644 index 000000000000..25e7d99460cb --- /dev/null +++ b/ports/raspberrypi/boards/waveshare_rp2040_pizero/board.c @@ -0,0 +1,9 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 CDarius +// +// SPDX-License-Identifier: MIT + +#include "supervisor/board.h" + +// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here. diff --git a/ports/raspberrypi/boards/waveshare_rp2040_pizero/mpconfigboard.h b/ports/raspberrypi/boards/waveshare_rp2040_pizero/mpconfigboard.h new file mode 100644 index 000000000000..7b59b28ce70e --- /dev/null +++ b/ports/raspberrypi/boards/waveshare_rp2040_pizero/mpconfigboard.h @@ -0,0 +1,22 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 CDarius +// +// SPDX-License-Identifier: MIT + +#pragma once + +#define MICROPY_HW_BOARD_NAME "Waveshare RP2040-PiZero" +#define MICROPY_HW_MCU_NAME "rp2040" + +#define MICROPY_HW_LED_STATUS (&pin_GPIO25) + +#define DEFAULT_I2C_BUS_SCL (&pin_GPIO3) +#define DEFAULT_I2C_BUS_SDA (&pin_GPIO2) + +#define DEFAULT_SPI_BUS_SCK (&pin_GPIO10) +#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO11) +#define DEFAULT_SPI_BUS_MISO (&pin_GPIO12) + +#define DEFAULT_UART_BUS_RX (&pin_GPIO5) +#define DEFAULT_UART_BUS_TX (&pin_GPIO4) diff --git a/ports/raspberrypi/boards/waveshare_rp2040_pizero/mpconfigboard.mk b/ports/raspberrypi/boards/waveshare_rp2040_pizero/mpconfigboard.mk new file mode 100644 index 000000000000..d41c47ee1879 --- /dev/null +++ b/ports/raspberrypi/boards/waveshare_rp2040_pizero/mpconfigboard.mk @@ -0,0 +1,15 @@ +USB_VID = 0x2E8A +USB_PID = 0x1083 +USB_PRODUCT = "RP2040-PiZero" +USB_MANUFACTURER = "Waveshare Electronics" + +CHIP_VARIANT = RP2040 +CHIP_FAMILY = rp2 + +EXTERNAL_FLASH_DEVICES = "W25Q128JVxQ" + +CIRCUITPY__EVE = 1 +CIRCUITPY_PICODVI = 1 +# Disable native USB host because it won't work alongside DVI anyway. (They both +# use the second core.) +CIRCUITPY_USB_HOST = 0 diff --git a/ports/raspberrypi/boards/waveshare_rp2040_pizero/pico-sdk-configboard.h b/ports/raspberrypi/boards/waveshare_rp2040_pizero/pico-sdk-configboard.h new file mode 100644 index 000000000000..5790781bf064 --- /dev/null +++ b/ports/raspberrypi/boards/waveshare_rp2040_pizero/pico-sdk-configboard.h @@ -0,0 +1,12 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 CDarius +// +// SPDX-License-Identifier: MIT + +#pragma once + +// Put board-specific pico-sdk definitions here. This file must exist. + +// Allow extra time for xosc to start. +#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64 diff --git a/ports/raspberrypi/boards/waveshare_rp2040_pizero/pins.c b/ports/raspberrypi/boards/waveshare_rp2040_pizero/pins.c new file mode 100644 index 000000000000..2729649a3b38 --- /dev/null +++ b/ports/raspberrypi/boards/waveshare_rp2040_pizero/pins.c @@ -0,0 +1,82 @@ +// This file is part of the CircuitPython project: https://circuitpython.org +// +// SPDX-FileCopyrightText: Copyright (c) 2024 CDarius +// +// SPDX-License-Identifier: MIT + +#include "shared-bindings/board/__init__.h" +#include "shared-module/displayio/__init__.h" + +static const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + { MP_ROM_QSTR(MP_QSTR_GP2), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_GP3), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_GP14), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_GP17), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_GP27), MP_ROM_PTR(&pin_GPIO27) }, + { MP_ROM_QSTR(MP_QSTR_GP27_A1), MP_ROM_PTR(&pin_GPIO27) }, + { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO27) }, + { MP_ROM_QSTR(MP_QSTR_GP22), MP_ROM_PTR(&pin_GPIO22) }, + { MP_ROM_QSTR(MP_QSTR_GP11), MP_ROM_PTR(&pin_GPIO11) }, + { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO11) }, + { MP_ROM_QSTR(MP_QSTR_GP12), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_GP10), MP_ROM_PTR(&pin_GPIO10) }, + { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO10) }, + { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_ID_SDA), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_GP15), MP_ROM_PTR(&pin_GPIO15) }, + { MP_ROM_QSTR(MP_QSTR_GP6), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_GP13), MP_ROM_PTR(&pin_GPIO13) }, + { MP_ROM_QSTR(MP_QSTR_GP19), MP_ROM_PTR(&pin_GPIO19) }, + { MP_ROM_QSTR(MP_QSTR_GP26), MP_ROM_PTR(&pin_GPIO26) }, + { MP_ROM_QSTR(MP_QSTR_GP26_A0), MP_ROM_PTR(&pin_GPIO26) }, + { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) }, + { MP_ROM_QSTR(MP_QSTR_GP4), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_GP5), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_GP18), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_GP23), MP_ROM_PTR(&pin_GPIO23) }, + { MP_ROM_QSTR(MP_QSTR_GP24), MP_ROM_PTR(&pin_GPIO24) }, + { MP_ROM_QSTR(MP_QSTR_GP25), MP_ROM_PTR(&pin_GPIO25) }, + { MP_ROM_QSTR(MP_QSTR_GP8), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_CE0), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_GP7), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_CE1), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_GP1), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_ID_SCL), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_GP9), MP_ROM_PTR(&pin_GPIO9) }, + { MP_ROM_QSTR(MP_QSTR_GP16), MP_ROM_PTR(&pin_GPIO16) }, + { MP_ROM_QSTR(MP_QSTR_GP20), MP_ROM_PTR(&pin_GPIO20) }, + { MP_ROM_QSTR(MP_QSTR_GP21), MP_ROM_PTR(&pin_GPIO21) }, + + // DVI + { MP_ROM_QSTR(MP_QSTR_CKN), MP_ROM_PTR(&pin_GPIO29) }, + { MP_ROM_QSTR(MP_QSTR_CKP), MP_ROM_PTR(&pin_GPIO28) }, + { MP_ROM_QSTR(MP_QSTR_D0N), MP_ROM_PTR(&pin_GPIO27) }, + { MP_ROM_QSTR(MP_QSTR_D0P), MP_ROM_PTR(&pin_GPIO26) }, + { MP_ROM_QSTR(MP_QSTR_D1N), MP_ROM_PTR(&pin_GPIO25) }, + { MP_ROM_QSTR(MP_QSTR_D1P), MP_ROM_PTR(&pin_GPIO24) }, + { MP_ROM_QSTR(MP_QSTR_D2N), MP_ROM_PTR(&pin_GPIO23) }, + { MP_ROM_QSTR(MP_QSTR_D2P), MP_ROM_PTR(&pin_GPIO22) }, + { MP_ROM_QSTR(MP_QSTR_CEC), MP_ROM_PTR(&pin_GPIO16) }, + + // USB-HOST + { MP_ROM_QSTR(MP_QSTR_USB_HOST_DATA_PLUS), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_USB_HOST_DATA_MINUS), MP_ROM_PTR(&pin_GPIO7) }, + + // SD + { MP_ROM_QSTR(MP_QSTR_SD_SCK), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_SD_MOSI), MP_ROM_PTR(&pin_GPIO19) }, + { MP_ROM_QSTR(MP_QSTR_SD_MISO), MP_ROM_PTR(&pin_GPIO20) }, + { MP_ROM_QSTR(MP_QSTR_SD_CS), MP_ROM_PTR(&pin_GPIO21) }, + + { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, + { MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) }, + { MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) }, +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); From b2a4a20fb8abd5dfdff34def943502c918a645d1 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Sat, 6 Jul 2024 12:47:22 -0400 Subject: [PATCH 219/227] usb_serial_jtag.c: more atomicity --- ports/espressif/supervisor/usb_serial_jtag.c | 28 ++++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/ports/espressif/supervisor/usb_serial_jtag.c b/ports/espressif/supervisor/usb_serial_jtag.c index ab1e9ff41a11..1a5282de8e93 100644 --- a/ports/espressif/supervisor/usb_serial_jtag.c +++ b/ports/espressif/supervisor/usb_serial_jtag.c @@ -39,7 +39,10 @@ static void _copy_out_of_fifo(void) { req_len = USB_SERIAL_JTAG_BUF_SIZE; } uint8_t rx_buf[USB_SERIAL_JTAG_BUF_SIZE]; + + // Read up to req_len bytes. Does not block. size_t len = usb_serial_jtag_ll_read_rxfifo(rx_buf, req_len); + for (size_t i = 0; i < len; ++i) { if (rx_buf[i] == mp_interrupt_char) { mp_sched_keyboard_interrupt(); @@ -62,7 +65,9 @@ static void usb_serial_jtag_isr_handler(void *arg) { } if (flags & USB_SERIAL_JTAG_INTR_SERIAL_OUT_RECV_PKT) { + // New bytes are in the FIFO. Read them and check for keyboard interrupt. usb_serial_jtag_ll_clr_intsts_mask(USB_SERIAL_JTAG_INTR_SERIAL_OUT_RECV_PKT); + // This is executed at interrupt level, so we don't explicitly need to make it atomic. _copy_out_of_fifo(); port_wake_main_task_from_isr(); } @@ -81,28 +86,41 @@ bool usb_serial_jtag_connected(void) { } char usb_serial_jtag_read_char(void) { - if (ringbuf_num_filled(&ringbuf) == 0 && !usb_serial_jtag_ll_rxfifo_data_available()) { + uint32_t num_filled = ringbuf_num_filled(&ringbuf); + + if (num_filled == 0 && !usb_serial_jtag_ll_rxfifo_data_available()) { return -1; } char c = -1; - if (ringbuf_num_filled(&ringbuf) > 0) { + + if (num_filled > 0) { + common_hal_mcu_disable_interrupts(); c = ringbuf_get(&ringbuf); + common_hal_mcu_enable_interrupts(); + + num_filled--; } + // Maybe re-enable the recv interrupt if we've emptied the ringbuf. - if (ringbuf_num_filled(&ringbuf) == 0) { + if (num_filled == 0) { usb_serial_jtag_ll_disable_intr_mask(USB_SERIAL_JTAG_INTR_SERIAL_OUT_RECV_PKT); _copy_out_of_fifo(); - usb_serial_jtag_ll_ena_intr_mask(USB_SERIAL_JTAG_INTR_SERIAL_OUT_RECV_PKT); + // May have only been ctrl-c. if (c == -1 && ringbuf_num_filled(&ringbuf) > 0) { c = ringbuf_get(&ringbuf); } + usb_serial_jtag_ll_ena_intr_mask(USB_SERIAL_JTAG_INTR_SERIAL_OUT_RECV_PKT); } return c; } uint32_t usb_serial_jtag_bytes_available(void) { - return ringbuf_num_filled(&ringbuf) + usb_serial_jtag_ll_rxfifo_data_available(); + // Atomically get the number of bytes in the ringbuf plus what is not yet in the ringbuf. + common_hal_mcu_disable_interrupts(); + const uint32_t count = ringbuf_num_filled(&ringbuf) + usb_serial_jtag_ll_rxfifo_data_available(); + common_hal_mcu_enable_interrupts(); + return count; } void usb_serial_jtag_write(const char *text, uint32_t length) { From fec63786ecfe01cd42fff498c451d9b084de34a4 Mon Sep 17 00:00:00 2001 From: elpekenin Date: Sat, 6 Jul 2024 19:25:42 +0200 Subject: [PATCH 220/227] allow any number of whitespaces --- .../build_board_specific_stubs/board_stub_builder.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tools/board_stubs/build_board_specific_stubs/board_stub_builder.py b/tools/board_stubs/build_board_specific_stubs/board_stub_builder.py index 1dc6e0c55c50..bfecb79b12af 100644 --- a/tools/board_stubs/build_board_specific_stubs/board_stub_builder.py +++ b/tools/board_stubs/build_board_specific_stubs/board_stub_builder.py @@ -17,9 +17,12 @@ def get_board_pins(pin_filename): if line.strip()[0:2] == "//": continue - search = re.search(r"MP_ROM_QSTR\(MP_QSTR_(.*?)\), MP_ROM_PTR", line) + # (\s*) means any amount of whitespaces (no whitespaces allowed too) + # related issue: https://github.com/adafruit/circuitpython/issues/9407 + + search = re.search(r"MP_ROM_QSTR\(MP_QSTR_(.*?)\),(\s*)MP_ROM_PTR", line) if search is None: - search = re.search(r"MP_OBJ_NEW_QSTR\(MP_QSTR_(.*?)\), MP_ROM_PTR", line) + search = re.search(r"MP_OBJ_NEW_QSTR\(MP_QSTR_(.*?)\),(\s*)MP_ROM_PTR", line) if search is None: continue From 23b86b35d7d47decfb90e5e130a3bedb9603cdbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Mart=C3=ADnez?= <58857054+elpekenin@users.noreply.github.com> Date: Sat, 6 Jul 2024 21:12:43 +0200 Subject: [PATCH 221/227] Update tools/board_stubs/build_board_specific_stubs/board_stub_builder.py Co-authored-by: Dan Halbert --- .../build_board_specific_stubs/board_stub_builder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/board_stubs/build_board_specific_stubs/board_stub_builder.py b/tools/board_stubs/build_board_specific_stubs/board_stub_builder.py index bfecb79b12af..0a29122397d5 100644 --- a/tools/board_stubs/build_board_specific_stubs/board_stub_builder.py +++ b/tools/board_stubs/build_board_specific_stubs/board_stub_builder.py @@ -22,7 +22,7 @@ def get_board_pins(pin_filename): search = re.search(r"MP_ROM_QSTR\(MP_QSTR_(.*?)\),(\s*)MP_ROM_PTR", line) if search is None: - search = re.search(r"MP_OBJ_NEW_QSTR\(MP_QSTR_(.*?)\),(\s*)MP_ROM_PTR", line) + search = re.search(r"MP_OBJ_NEW_QSTR\(MP_QSTR_(.*?)\),\s*MP_ROM_PTR", line) if search is None: continue From 28e6afca478b61ca42e580493172dd11cf0b5c23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Mart=C3=ADnez?= <58857054+elpekenin@users.noreply.github.com> Date: Sat, 6 Jul 2024 21:12:49 +0200 Subject: [PATCH 222/227] Update tools/board_stubs/build_board_specific_stubs/board_stub_builder.py Co-authored-by: Dan Halbert --- .../build_board_specific_stubs/board_stub_builder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/board_stubs/build_board_specific_stubs/board_stub_builder.py b/tools/board_stubs/build_board_specific_stubs/board_stub_builder.py index 0a29122397d5..26a9602fe4fd 100644 --- a/tools/board_stubs/build_board_specific_stubs/board_stub_builder.py +++ b/tools/board_stubs/build_board_specific_stubs/board_stub_builder.py @@ -20,7 +20,7 @@ def get_board_pins(pin_filename): # (\s*) means any amount of whitespaces (no whitespaces allowed too) # related issue: https://github.com/adafruit/circuitpython/issues/9407 - search = re.search(r"MP_ROM_QSTR\(MP_QSTR_(.*?)\),(\s*)MP_ROM_PTR", line) + search = re.search(r"MP_ROM_QSTR\(MP_QSTR_(.*?)\),\s*MP_ROM_PTR", line) if search is None: search = re.search(r"MP_OBJ_NEW_QSTR\(MP_QSTR_(.*?)\),\s*MP_ROM_PTR", line) if search is None: From dc6c4eeb72137d238705e6f3adeaf08858c53cea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Mart=C3=ADnez?= <58857054+elpekenin@users.noreply.github.com> Date: Sat, 6 Jul 2024 21:13:14 +0200 Subject: [PATCH 223/227] Update board_stub_builder.py --- .../build_board_specific_stubs/board_stub_builder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/board_stubs/build_board_specific_stubs/board_stub_builder.py b/tools/board_stubs/build_board_specific_stubs/board_stub_builder.py index 26a9602fe4fd..a35f50719016 100644 --- a/tools/board_stubs/build_board_specific_stubs/board_stub_builder.py +++ b/tools/board_stubs/build_board_specific_stubs/board_stub_builder.py @@ -17,7 +17,7 @@ def get_board_pins(pin_filename): if line.strip()[0:2] == "//": continue - # (\s*) means any amount of whitespaces (no whitespaces allowed too) + # \s* means any amount of whitespaces (no whitespaces allowed too) # related issue: https://github.com/adafruit/circuitpython/issues/9407 search = re.search(r"MP_ROM_QSTR\(MP_QSTR_(.*?)\),\s*MP_ROM_PTR", line) From fa717114489ea36073e66ad341463bc63d8a104b Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Sat, 6 Jul 2024 15:50:22 -0400 Subject: [PATCH 224/227] waveshare_rp2040_pizero: pretty up pins.c --- .../boards/waveshare_rp2040_pizero/pins.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/ports/raspberrypi/boards/waveshare_rp2040_pizero/pins.c b/ports/raspberrypi/boards/waveshare_rp2040_pizero/pins.c index 2729649a3b38..7749eab4b0db 100644 --- a/ports/raspberrypi/boards/waveshare_rp2040_pizero/pins.c +++ b/ports/raspberrypi/boards/waveshare_rp2040_pizero/pins.c @@ -12,43 +12,60 @@ static const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_GP2), MP_ROM_PTR(&pin_GPIO2) }, { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_GP3), MP_ROM_PTR(&pin_GPIO3) }, { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_GP14), MP_ROM_PTR(&pin_GPIO14) }, { MP_ROM_QSTR(MP_QSTR_GP17), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_GP27), MP_ROM_PTR(&pin_GPIO27) }, { MP_ROM_QSTR(MP_QSTR_GP27_A1), MP_ROM_PTR(&pin_GPIO27) }, { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO27) }, + { MP_ROM_QSTR(MP_QSTR_GP22), MP_ROM_PTR(&pin_GPIO22) }, + { MP_ROM_QSTR(MP_QSTR_GP11), MP_ROM_PTR(&pin_GPIO11) }, { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO11) }, + { MP_ROM_QSTR(MP_QSTR_GP12), MP_ROM_PTR(&pin_GPIO12) }, { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_GP10), MP_ROM_PTR(&pin_GPIO10) }, { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO10) }, + { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, { MP_ROM_QSTR(MP_QSTR_ID_SDA), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_GP15), MP_ROM_PTR(&pin_GPIO15) }, { MP_ROM_QSTR(MP_QSTR_GP6), MP_ROM_PTR(&pin_GPIO6) }, { MP_ROM_QSTR(MP_QSTR_GP13), MP_ROM_PTR(&pin_GPIO13) }, { MP_ROM_QSTR(MP_QSTR_GP19), MP_ROM_PTR(&pin_GPIO19) }, + { MP_ROM_QSTR(MP_QSTR_GP26), MP_ROM_PTR(&pin_GPIO26) }, { MP_ROM_QSTR(MP_QSTR_GP26_A0), MP_ROM_PTR(&pin_GPIO26) }, { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) }, + { MP_ROM_QSTR(MP_QSTR_GP4), MP_ROM_PTR(&pin_GPIO4) }, { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_GP5), MP_ROM_PTR(&pin_GPIO5) }, { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_GP18), MP_ROM_PTR(&pin_GPIO18) }, { MP_ROM_QSTR(MP_QSTR_GP23), MP_ROM_PTR(&pin_GPIO23) }, { MP_ROM_QSTR(MP_QSTR_GP24), MP_ROM_PTR(&pin_GPIO24) }, { MP_ROM_QSTR(MP_QSTR_GP25), MP_ROM_PTR(&pin_GPIO25) }, + { MP_ROM_QSTR(MP_QSTR_GP8), MP_ROM_PTR(&pin_GPIO8) }, { MP_ROM_QSTR(MP_QSTR_CE0), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_GP7), MP_ROM_PTR(&pin_GPIO7) }, { MP_ROM_QSTR(MP_QSTR_CE1), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_GP1), MP_ROM_PTR(&pin_GPIO1) }, { MP_ROM_QSTR(MP_QSTR_ID_SCL), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_GP9), MP_ROM_PTR(&pin_GPIO9) }, { MP_ROM_QSTR(MP_QSTR_GP16), MP_ROM_PTR(&pin_GPIO16) }, { MP_ROM_QSTR(MP_QSTR_GP20), MP_ROM_PTR(&pin_GPIO20) }, From cfed2d10874accb9555281a88a4200d55ceb5c1a Mon Sep 17 00:00:00 2001 From: dikei100 Date: Mon, 8 Jul 2024 15:22:16 +0200 Subject: [PATCH 225/227] Removed 'Zone.Identifier' files. --- .../boards/lilygo_tdisplay_s3_pro/board.c:Zone.Identifier | 0 .../boards/lilygo_tdisplay_s3_pro/mpconfigboard.h:Zone.Identifier | 0 .../lilygo_tdisplay_s3_pro/mpconfigboard.mk:Zone.Identifier | 0 .../boards/lilygo_tdisplay_s3_pro/pins.c:Zone.Identifier | 0 .../boards/lilygo_tdisplay_s3_pro/sdkconfig:Zone.Identifier | 0 5 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ports/espressif/boards/lilygo_tdisplay_s3_pro/board.c:Zone.Identifier delete mode 100644 ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.h:Zone.Identifier delete mode 100644 ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.mk:Zone.Identifier delete mode 100644 ports/espressif/boards/lilygo_tdisplay_s3_pro/pins.c:Zone.Identifier delete mode 100644 ports/espressif/boards/lilygo_tdisplay_s3_pro/sdkconfig:Zone.Identifier diff --git a/ports/espressif/boards/lilygo_tdisplay_s3_pro/board.c:Zone.Identifier b/ports/espressif/boards/lilygo_tdisplay_s3_pro/board.c:Zone.Identifier deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.h:Zone.Identifier b/ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.h:Zone.Identifier deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.mk:Zone.Identifier b/ports/espressif/boards/lilygo_tdisplay_s3_pro/mpconfigboard.mk:Zone.Identifier deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/ports/espressif/boards/lilygo_tdisplay_s3_pro/pins.c:Zone.Identifier b/ports/espressif/boards/lilygo_tdisplay_s3_pro/pins.c:Zone.Identifier deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/ports/espressif/boards/lilygo_tdisplay_s3_pro/sdkconfig:Zone.Identifier b/ports/espressif/boards/lilygo_tdisplay_s3_pro/sdkconfig:Zone.Identifier deleted file mode 100644 index e69de29bb2d1..000000000000 From 032a0773bdec82de44b706fac3b6cb719bc88454 Mon Sep 17 00:00:00 2001 From: RetiredWizard Date: Mon, 8 Jul 2024 16:43:55 -0400 Subject: [PATCH 226/227] sdioio DOC update: DATA pins pass in Set --- shared-bindings/sdioio/SDCard.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared-bindings/sdioio/SDCard.c b/shared-bindings/sdioio/SDCard.c index 7c3874cec8ee..98a9ef6c8588 100644 --- a/shared-bindings/sdioio/SDCard.c +++ b/shared-bindings/sdioio/SDCard.c @@ -55,7 +55,7 @@ //| sd = sdioio.SDCard( //| clock=board.SDIO_CLOCK, //| command=board.SDIO_COMMAND, -//| data=board.SDIO_DATA, +//| data=[board.SDIO_DATA], //| frequency=25000000) //| vfs = storage.VfsFat(sd) //| storage.mount(vfs, '/sd') From 0b2bf2e2c0d7a2d5102a8cab3c97ee6d5eda6a51 Mon Sep 17 00:00:00 2001 From: Wellington Terumi Uemura Date: Mon, 8 Jul 2024 01:10:45 +0000 Subject: [PATCH 227/227] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (996 of 996 strings) Translation: CircuitPython/main Translate-URL: https://hosted.weblate.org/projects/circuitpython/main/pt_BR/ --- locale/pt_BR.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/locale/pt_BR.po b/locale/pt_BR.po index bd026e30b1c7..9ee63a84e492 100644 --- a/locale/pt_BR.po +++ b/locale/pt_BR.po @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-01-04 12:55-0600\n" -"PO-Revision-Date: 2024-06-18 19:09+0000\n" +"PO-Revision-Date: 2024-07-09 02:09+0000\n" "Last-Translator: Wellington Terumi Uemura \n" "Language-Team: \n" "Language: pt_BR\n" @@ -14,7 +14,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 5.6-dev\n" +"X-Generator: Weblate 5.7-dev\n" #: main.c msgid "" @@ -2066,7 +2066,7 @@ msgstr "Muitos canais na amostra." #: ports/espressif/common-hal/_bleio/Characteristic.c msgid "Too many descriptors" -msgstr "" +msgstr "Excesso de descritores" #: shared-module/displayio/__init__.c msgid "Too many display busses; forgot displayio.release_displays() ?" @@ -2284,7 +2284,7 @@ msgstr "Sem compatibilidade com o algoritmo de hash" #: ports/espressif/common-hal/_bleio/Adapter.c #: ports/espressif/common-hal/dualbank/__init__.c msgid "Update failed" -msgstr "" +msgstr "A atualização falhou" #: ports/espressif/common-hal/_bleio/Characteristic.c #: ports/espressif/common-hal/_bleio/Descriptor.c

      okxoLj&rMivLHYT|-@v%J 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 z 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

    ;GJPdAGPtu)xA& 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∾+BO-bzAs(pJu&OtCb99dAsx;eHOqsYThh)^Ob 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ⅅ72*wTkckB#xVq#*# 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 eOq>jGzj+!;r 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

    okxoLj&rMivLHYT|-@v%J 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 z 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

;GJPdAGPtu)xA& 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∾+BO-bzAs(pJu&OtCb99dAsx;eHOqsYThh)^Ob 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ⅅ72*wTkckB#xVq#*# zSDFqWaT6VuLbo}i8m-)*D}|fjRch)ZsPM22gMEXp{x&jRL5z&y$@?Tydz9(}d?BU4 z)m_k6&=Kus`MkDiG-YS53#ieCM_h9MR(x@Gbw;H&r-+J^#nn4^$$m`w=-xftXF7YQ z*(9|t%F=Z9?E0|DDS1|_%w~6H&`|h2lv# zBY5&*W%Bdnd2{>B@0I7w8k0D%s%Z=ARkZh})Ono{is}CNqrhtY`mDIg5sM)=vz3jC z?cz6IW;>hJM=(8RYRkVRDJk)H;y%Q8rBPjj8p$-ra>myuW@%XcKh@VMgPkBke0^z2 zbuIj9IX!_=P%~g9e=s-a3cQFS@pyUh%CykZ(sOYJo_+g7P$k}WW&Qf~B$AJ090Qa9 zrAZ61ZV%E)ED$~i{~ci`f!`56AL1XP<3~jEuqU9 zigarpe2)EI*W~(~bKBnu$BTbFXg097a~kNLt9YI%g|SgB{v2-2y3F7jUSNM{acePn zhw08Lv$c=AkpnUSNCt=guzuaj+T{KA84%#lEyKtETni{z7)*Q+Gu_I@#L9M#Hu(DH zlOw+ai&9_SS!_ONUcH0zcDHVU>md>rc;GtDq$Om41PJQb(g=f)A8(Z#Xt7)xs zx-as8|JKy7xQJWmY2JHY!_3dGm*=i@s@)o8q$HiWjOC$a?}95}lRx1P0oh7|Nl?{0N-mJboixUaQiOGw}!s1+j>j zzqe@<8_gRMBw8%oq*ci6B)2IktHNQ9f(KiS`3UkNd;$cTeSrOdfroRpn52@UqR3+r z&jHks2l0W!2PS!~0}CM$Sz&F(b3q7E9N=L2K}({nS)?Lp7b0^3VwM0E4b+Gyv@P=U zzQG_385rS!klKSQo;fq`l5Pwj&Ur9S64z%A5Y=A9k$Q7I?59k^tFn>f=reL-Y~7>yqp$VC!N1^aC!6%ILQANN zE^8uK1^fGpsC4m%B7%vL`HOQm7cbY%K)?Oz>FKCTv4DCvOAK5;gn^rHg2p5H8W?5I zK%ToMv2F^h+y%gaKx?7U=-`|Y)|<_8@)Uq(KDN?PA2l)e}~()q3F8x<49s80D-H1;?ry*q=v zWPEs9<;?ubgLj`Y)>6(5wl|lp9fpO$+}XnAtD|S_SY_3|Q3I~={^VfyY1Tevg8}~I z^lPs@KTtI1uv0aBhEh%IVbJ;Fhs82!tc>r?JN9ODjZsE%%C5hY$RuQDIbac+R`BOc zyxJXVvKx66gL@j}ZfEZDtQ{3t|2KZ5tRm&zZi#4X=8XL8ohbs5O0&0KBpjWY zJ|lgnM9o}2Q6nBoWpZ-76#i%j4pT>wm=gA zNZ%Fh$e@}z5t0pihW(&ci$oaS1+3(#M&AMUf^!1`4*sGfBkjh#15kRxn#28I@~hMv zd#O0Szkdq!>SwpmjsWBc8;AQ;nn*1VywcFyS4; z*I^|&s?1sjtsY*O;Ds& zrkKjPpRF?*HoY^k*P zdBXwb{YYL(Z}gRqSJ?fQaB*|9Z zNVx#nVt9G)I&K2{4PtP2mX+aqnrXxGL_(49QC1^99Ki|5a{V5CWd-+W14>s>%3KQ# z2BC715F&?uB&5NkfU6e50txVcpuhTv+UUrUoK{bSpjHCBBjrry>8XzWszCU1pwZwx zaKIETQY4QB9m+QWS0BX4MBJL38wf*+buAsZ4osu2(Dvrsm`5LT^_rh>)yl_f2_umK z;R)54L0KdmOfxT~wOB88tuF6^KlvwQN4pOldW0vF7_aba+`&PFD06Ju>xj$(?B2`k zqY^~Zg!DnSyqD*&DV~Jo6q~|Da9tolqtC3pIfO_4xu~Uy%gKTj-C`N90;cWN_|Cq; z+3C-&O?oLNkN&(&;k0N?ZfEGDV=`fXTHI=uZob!(BHf zN$Q|=X90>N&rbdhIg7O4$}1^__f+F9L12+a^{QI-<@MqiAv9j^nM^6S77lUc^Zs<2 zZz-==E?}zVjUzS9n^y*3s@JSAdegK{*zj=f5!pG{keaMC^u|ES=q?H|)4JG66&`n?~ES+t_nn$B8BU-F4js@N4<*#$>qS{LB{hcp;`CALMuiy0C z+BtgqKgO5VFeB_hS%WoRNBA-eOJIJSe%MId=188E8w}CErY&2NTLg9?4piB9Q=@o6 z^9IW2R-gQsPxtED1*>q02;@g3#+ZhjQavTKPmkKp*{R#x<;~xpA789~Zc2^-*6i!& zr;Dt2Fp}xToe-9w#Uua(v5buPF3z=f4oy*C1muPcN^1Hkg1PMnu9XUm>?c2se_xYl z<>Q&vcuVTP%dAneTDy{0^b6)dAcibr);j={OU8Si;Ii6+V7~wQE^J0 ztf)FC``D4^u{Fbp)U{6+GSpIzace7~$3~bUrZlAP{bHE3)VI-uSnd5_PmvY6dxPXd z?xm$Y6bJQ1@CGhHFb-JrAkn40crgzmWkgU%+)pp5bReioCX?#6&*c^>5B1&k#q1Rt z)=}z(tq)=-D-G!wUhgxf?=09>)7E~{;hUS_OR4jcVw&-n(bOYs{o~*$4h-cW%S=5o z@F1chThyE-EP*iJ*v`1ICw;>04P|;AJ}9g!!#2bnjYZ{>m*Um>n6((L)30{H=z{47 zB@>8w-wUJT9Z>K8K`^08%oEeoYdQJ&X#C1<7Z(>BiuNLk0xCP%Vy)jpV2km8AfpL# zHHgj$iquUvp-7>nqqA&GU;<^2LgC|(wc#I+NR&A$E{tGev}*p5yi>`bzg(jl<1bbO91NvYTaL<^n!Yx) z=2K$8Z32y@1X&evrsG(FBUuXhbST zHw?f6%7;!4xG(QP!+@_pUB$BOlGmbeL=#~HW(%ns()*E#{1@BdQ*vSw6&%i@G+2RA zoM?7+8&-8VyN;`?ZN-K6X6?8N051bs$}LU^J3vt1B%}meAO)BulS{@*V)Xp=Fyk!XCK;+P`Wj5d~MM5 zv_(id`q|i%Cro-BU;H~tmkhdv#>!2^dYoD`R0~{rMvu@YiGO{m3VC`y)8a_*dZquWDJEpjKroZ+<0-OU{>H z#yc~--5ISIeLz;6nR?BZEnBYpr0&FepWyJTH$`4PQ_t`#OMOdA?zj0^jre!(e>XZs z_aLt)fwqG8-=U_dxntVhAtdAw)6kd=XEwu$P}-Cak~yx|_q1QMD2ASjfGdluHexh) zQce05aR!l!4a>^9;wSFO)dI?lr#m82^5s&_r&40Xf!YG_qWHO)jP4aCUPk2;$8ObF zeVjSz)wHuaI@pwo`h>cV{DJE-pum7VXku8fV&@E1?v-{l&d`f~|5;tNRb}^V33hLNX#SE3%-| zBR0}fDR_AH9p{GL(XO4w`JStg^G8A;gd!TVtIe1qFvP&Yc!_kbg*f_TD3+8ec91B5d3#R^53Y!z=FdnJZECmk);VyTmN- z7xye)OHHk&rF8;>3E*OkV&mU6&$f7*;x7#Hoi`;my6bnXfmLm(Uv~8(5+`mzYer(~ zfkOQ#dxkTN%vVTJXi2$alyWkq83t0HMk~llsCkzIR}#Z7n4Jo~i(vwg!CpYt$LI-q zXe@*~qdaI=Ep%IR#jA_5>o)HAfLX)p6T2+J)1c*?Kz>Ka^XFBhr3J!Kax~y2I~9Ba zA~`5ku^JQH(#UhZmsQC&y~P^XB?8#oP6yrt7>42|RC_{k_dZ`nrv}`X4ZQOy12$@f3b7U);4rt3M}9H2 zl3cL$Z_^z=as^rL6j}fMbl#*_&!JM9)qd>*hRoZdH+{K|3qtlJl-^>x|AS$#e$V~P z7Hj0xh6g>rn>cPdMEk|MIY*Di`p=nTMw`w@=+t|se!44|{eEJd3*xWrrtRX>RPK~d zt64sN77+OKSo{Vd<1OX~UY<%hDJk_`M*1+vai6Vst9H={86GX^rCWb2nD=vLnxoCS zn72`KI(I8CmzsyruU(_Q`!UU|3(umW)X%jTze*4uI;Kzt(qN5`9tUHHZl;z z`#FDhEc$=1rGIsyqL%!ZHF`H#d3l>!_>BXY<)Rt?(y4dvd{+=}VfWuv?X_(of~_cW zmTP>y=SM4NgYORFTdB8>MXlTDZnJfh)U|?2kF|`nsa3v0*>~il-)a@Oig+NYdG7>* ziAlH}jBW#U(NvRtHTnG}o5EGP5vB4r>xF!D6gnz4`*~YEXSfsk`f=J2LyVn8r%PBq zYKomN>Rq_NNu(ucVjXO+`;i|Kc_G7w!X|U`Q?%GVm)aL!=JzFOn${6tD?9 zzM`g;p56R}8JckM&|`Q(YQXSqMf5;u#1jP{u1pFf5`IG1-avE8E(mr~cQqiR8tyc^ z-YOY9NN$3*8Ge{0VI^(6L!0xv4Ofjqxa0kAYQ<_Cav3#%wDI`0YofS( ze!{J50zeh`$FJdG@|Gj-^mv#DM*rc`>>nvdtwcMi_)y1LLLnwiY<7-k@PU%tT+rvsrbMxm^M{2od)WoEkcv77d zxbof=TgW8}E8kHv$(3zscF1wqO>Q;Rx>KiB71P4h`M>Pa(fZ!rb6?LecQU5N z{G&;c^q~tXyZIAdTEG3SEb8@GB=;QlQJp8!U+U~V*sK2LyZ0WD@-*-%QOlHyEwe5) zJpkROnufuNs?cl6Myk7oPTwzzdKMhRFy&pwIOxk;y!_sUZL_+to?1`( z=;O}xzBdcvf=HrWz^1)Rr^ZB33%xsZ+M!W|o-FgjFl9#DI^zmcd4{Xd5e2lcn{e324 zv6(!ch$VvN9YRHvfo45*{|fm&r12<OJpv}`c8;>m{MgfjN)dn|)IVq(m&KOu+^oN*l9 z-XGRt(0Ae*asH!sq!f2BMk@06jEl~o=>}JB6zU9})y<&hLZE#w;7{meC8vzAjv^4~ z5w{OAiXh+_Zia-^2c=^qu@2M=VOj8Ga~(bmj^DB^O8~1d^h1yT{rCQBYR^ zLdNTLQ{z}Su41-@4#1y#aJvJjWk4wq;BshsXY9>PP2WT7wzRxV{Pj5MK7v4-nwqj& zbVdy=&KpQJDPSN2juH#hnqmp203uWS7x#g@LF73TQ!I(Jy1pxhH%5z}q*7tVC;UkE zNEKb|>GX*P_kl@lfo;V2Cl!JT=`ktgKg3VQjsOwcim7_vX?Or zSwrFRE2(j3W##9dveeVh=F3k=&f5BE7|!pxZ2KfoNVc>3`K)+VsltD+FnNo2KBDl; zyk;MpU}1JlPGiG{!_SWF{dWvZp4}rPK@-nV!4sXy`~L)sdAB@r<4GM@})&+}{!${`f&_ zWmvLic58M6Z5M5b}(9 z`&Lxdt&rQo$mnH(wcYsqOH|Ff1 zb-JgQ)Q98b2H;gd`g?q1I+Dio!ftECpGa(^j7`3oQoJIGhTYeAO$h9R2DK=SbGE1K zi9Cb=#@NJ&y#$x#ab(e<7aRhoKd@jD#}VWQ9*Z+unVHKWx0XO$BqUQP&3dAH)zR76 zIj0&2$6g*D@25uYG&lngn1TS_ppIca*TsTLz`j@wb^IpD z{{m(zl=r5#T64(q=!1pegI1v+^2?*}TtYij}& zkE1>zVWbV1G0vk2m~M#}7Ds4hbv1I<_V3-9^FJ*B4?gfmD7nSS@OOGSUA`UGQbIw` z&(E86X2Wra_@7dI1c*bTLtjAJSPv`!?4i!`Vug&y6lK+Wle@I-qu*J1N_TA;7E5GG zk6)r*xp9r{r~2sh^S%4_1l=}}u6!zjKq~arYNou_e3%r+nPRmzYUJL5$fbgf)#lsy z&kfuu;%<3={*2d>e(B6f&f~${6X|rk4u7|zYi(+thjBaWa7viUlcAltPdq~7`#yIM8ayy>5W_+WlK_wr`Way0XS}P3<0$U6rvUK*cnTmL-glk(aKtr3)JIMU z0$>5(#H6^||H%)JXYVJ!+niwbOAJlCbqKj^vG`4pLKQJ@k+skje+lB(`B51hPN^sW&W9FwdqH_fvQ*Ohvd+K#>q__7B~?baM(K7U~D7=O~B4o%Q~1WU2(FEMAGmw-Ao3q9IAZo*Yo}W+)gCD z0k8m`9%6*WC4uV-C??3GP>Eu!n$Lg$NELV<*fUw|&sG>rcKqB+Ic_s{zv?We*& zaTL4i1li&0wG2(weK9!YP`Wwa;x#q)`D_&*RscQ9?&#}^2q?}1!|BZGsWqk4F)$#Gf zAnM=!Z-PS%StnCO6JYPx9+@Du19KAGu zTgXS&t1-SIwy9B#WrbU?pyjW;j4^6Dy%=%7DMiv zxDEL5h@0Ip4#7O_d45(T-|NV!7Yi${b2-ske0=p!ABMg>t*G22;CBQQ?*DzQRGvRw z&A6}c0-r-QP37f`sJa9@nrVS-S0Z3Qga+t**kZq>nVrU21^ED=fO|PPIS$L2pnmYl zPM|?V{rve2j|B@5qOgsF!`6k89}EC)JK*&sF&@PM5I(L|?x(^mi$^j7d;_TuK=Bab zlz611!Xc1g$D0F<0&e&<#o+L6bJjth5D}3O*#-@O-JiPMh>XA`n zz${3~ICO1ks&)SZWhTK+nYnwSC(>Fz=h$(CMBhDb{4Qqs(w@uoErIFkvRij_vL%J@ z>~~hUc&J0qpPutzU6A6Yp=b@M`ofBX@~mPCj7+D3HwmTa4bMAKT@1MW*0?Luu|FBz zl6X^(U}=I;2-6sni*g0(_07%q=DUpb;Sz@&2cvs*G|7?=0zatyA{A-i0L0)_hSRR) z{l$+0LBAB=X^ZT=M1y$eSY@BLY8S-x5#fiQ!3lNDB3w$^)qAPT9UBj|C%iq-3C{S+ z>rVqU<&Ia&W7Ye{01v-(Tdrpb6&BC_A*-;>*+a;ypWMqfQ#)eT^{6* z-Weu^N3fn_%&W4QoSOQCVv_1BAdl1hT5)<~f)nS-E8GeLp``P>oQY>}#sF#HpKQIe zMdtFV3r4t+Rc7j2;1wmVol$2Tq5OjR5CorYa)4ga8_XAtlEdfjhKK8iUGdrj^(#HS z9KK@PAQGk7xbdA`K6>XQAaz5*#D$+9ZkZY7r;6qvSP_G0PHfQ&upkAyn(+vgR8+*Z z4?&+XGt>#P*r5&6m{#9mtgc`qZ7r>F9T7Wwkj%mZWa)k%Wp!uA?>P@{`;nZr$2buO z@~dZIZcfWpT0uR-&o+fLl;(eY8dm;}4UFEqpe?_4 z)bB939)+Qp*wZO9Kiy>@W}go%*T6yRg}>%E3n~b`4&njRZUt z1y+3%8~{+E1Nj2s1S-ZGt0#$rM^eK`FCRicF(MQB1w#7B{R?L-2`<3G005jM-a*S| z{Oh)5OGD@nB&`4*fAjY315#Q7LYk7-sp6lA5%Mbmy$sUO>rWvU%njt>6Rtz#T3ioX ztMd=x@!AIv@DMA_fSv3mS^a<-lZ&(az8qPpX$~9?C^MCRr7dDx^K{PpE`7R(lx*>; zSa6M^stILf+@%dxPP?ou_Q|(8eK@am;@kKot-b!$LUpNLt1Av>uNoQ}u%7^C>5!8Z zWj#DP>Umdeq2ZP?{R#PaZtP!anYJS!5p9*|MRq|8@8 z&m4FJ;%N0Fj_PJboJL9k);Z#%j&T|5>}8ls(%w(35co)jI}5{sN`R$uKYfYfV7S1J zfLN}&$FGkFr^Iq`YNVvfZWrQ7U2WbmxOVNMM=w=ROkR-8*u1Z&RYKUs_>(DrmX3(< z^J=YqTFX*)?aoZ!uMqA>1^HWvNA@++g9Qq_eBUI*VQ+TJu0- zsMq2h_f1r8jx~N6mzzIDS3Yhu>1hxzTF~FH{r^4drna~Ab)`}+L;|KFR3hS9K7e*X z(?c%=6&C@P9i8~RhXPmMdql2YuN1%e;lqb-+{cxmG4ux$3*O}u^i^|+v><6l0DG`J z-vP5iY}lcTQ3uAa)6A4$l6GR7r=Ole^f61jxQ(|h%o_|lYRJ_ z?-fq?BEr+O}QD2!{4fuT>8KaOZO!crdc}&ZNv32rwg|31O&b zyxXSTrHS|$b!bWNt*tS6f?h_}dFPW$QDr8V%KG*BmzT5j-tAB^?`BA*pnv-CLy-FQ z=-aJ|cxRmsstW9J6o21hjd2GBX0t3QpTi~>S}OzE`1Q~7Ef?tTAKv-it9EJHZ6Srn zA!XN)t)GRare>}~FD*t1hq?LX1&RHPzQv(GW)~I>LV6a4`g>BAwY3Iw@+K-)8A<-l z`-@bx-ra%K%NXDQV|=Qut$q3M>C>mA8UrAsjYM`uTeR@~&f=mVX1~~P^Y%_%YlVef z826(kNT}W$NU1yNRDIv~4*#@qhoG)4a^fS)4;5w2vxuS<8oZO^P0?Z-Xx{ zZ{@y}QzxYr-2BFOKH}#6T)St_;Wal+3Rj+dE&HgWGO23B%P7A1)5z$^lNaW{m+Fs> zo?z;FH%7;9tt+pntR29ysBul^Y0M;z=5u8h1XHwf84OaEAW-ssc?k>$yK z75{Imb=ihN4TKv!u00h&1ScUIBIHvebo*{|5-bVg2erIY1Lzj_^c-M2`>MVUs|&zV zkpDdhz=(^AB4Q^H87xO#iEWtZ?@%}fZsc=K4RJa^eN~Tu1#mGWi3NMvZ=Cr=2LYNN z%2U~uxjhh7?Z)H>;aFMpN+~G}3Owp^a@8L` z3M{)!{h_hqsd?ez#dJNNl@CBl=4k0vi_`b;n_`^EXZyC1+%%T5w?1K=i z5wKY=%UTJEi-5k)J_tz4d4ASuM}p7C&IicLSQ3BRzGsgnQ!w||ZQDKqmGf1NJD#MC z+9V62rc;hJ!3h^}#6G4PP|p+0{lI!iJP)i8>BSuQxnjtBpqI3cQ$iw)bdAEENSJJ) z$;}r;S&2>>G2)-h)9bO^EftQOUVP3#CYJt%ba+kFf zcS=5>44z~^Af4f@+6mYF7&OwrSO}-AUAK;WY%tFNf`kkPx)`8@_(i_17;-8x;4_>V zqXY^-gz|{}IV$ud_sak9u>5;20%w_1+;0u6x&@q$+h+AfljgpHm3c@&sGsLCde61W z9e>W0hu6Nm=B!g+@M;VH^oYfaPmy2ymr@H>dubVG{fAmSL%DvcN%Tr#es^7T(`wj| zzi4{Sbs#w_Q|{{B^cH4$ug#nrL5MWBpw-hwSWgC(GR zP-~l)LS0QH zH^Up6oaDYn;}mpG{=3W*$I7D=ioAVR?mnw5#dQHo3oh63)AO!9||FPBQ6*Q3P;QqQlt`MI%%u1iYmOKUSTU3t0#T2lzNFW`_Q^azqZ$Pfn^wYBkM*vNpM zmXGTF85^qwF^hg$D$d=zZ$TIu45SmB&^TORV1KaDvG5vlu0c2kX3q6DG31$~o(Dz( zLWTx3&yV-JfiOixoB{mSHgLQ7Or6IVb7X2Kjh}a6!J4l0) zvSQJvi}Ot92twd8<;-sX#t~r|-0`xc#iGbZw0HvrzM3RA!ofe$q}rCa|>n3dL_D z74G>d%TX_rqY_F=pLR*goog9U_GZ|!CCH&$0n&-ZF_&+R8?WVYVM>(BO0oF)Gxdm6 zzDc@X%i@r^FRddlFE7`)Ri1|zmKcE1B?wC(N!}O)^I{X3(9BV(G>W z;!Iyx1^TD{;C;Z>Buat{@k@|+7b2v_CzA&4EO@u7#|7sS8v!(-AO*H1GejVeLQ|{* ze{o!h;4_w4__GIU_dkgF#yU?xc!&?50CYzAumZxffd>#x6zM65%Ad9}7K*Tl>@+@}FDQIT~iw)B2RDg)u!WK92==KTGk{-(i1SC*!Va zxCn?wi{g~feS%WT&p!^UGJU>FNR@UY?Pe#P?WURZokR)7sk%cO+rz314_fItjlYHs z9L`Nwj^adEls#*yFE1G7i@vbXB)*VjQuKD%zeZ&sJ$#J=P)D1W3(oX+#Xr!oishNo z@X_d4{3-d++|;^Z?&|*N*dD;7eYqzuF}*&v58zD=J7c7+EjisKwK4nE)inqHywvQK zZAEO&2%4tmX83{O!*-t%(NqFHi}S^9ZnwnD)KnHvCxP$8e%E;{#0?^kuKN=|l^^D# z93)X>=xM5DNLtcdmx_966H;5b|A{ZAOg}dM;Wt^@1;Q5_fu#{q=GD}__0f0d=pSci z;C;_kE^)D{j%&H0`Y^jp#enY&V}e)7&)Mf4yH!1DupQ^0!gI8_u=8LCoYvLy7abnj ztNRDzE+d##qhg;=v8wP$$v1Udq$jW8Ub?FD$VkgsU+H~Z)_>EPm2HcYKO@3G)21`N8 zm9peXs||bxPO|Ky228|LUw$2kiuuVECwsIvB$<8}bYTVTDDXfc5_x2<0hmOFdH?j1_{e*FPXlRKakvhz{x>!C-Lvm z4dME;dm|)Tw?gdfJF4OX$95o{OPD%3evEhzU?e~?uU^`i?`9-q*rvOk8~^cfx@n|a@5Wa>QPbaVRD9QCkIHnlaZ+V#|%L7Awf45;pV=I-hhu_8}yO5Kt48Pi-5KOX>9_s4pRgU4nBt! zTzClJEMkX%ECH61cMxTTfrGOQs65zyfN*Gn|1$;U9-J45DiAcNsG@+!Av!joQ6V21 z8k={(dGt9V0+IcS&8@DV!^#GQg1b;(1Yn3Oq7#Gx7^sO{RdJ)@F@$o3&`3xjh8qs4 z(F5TRd_~*Mzuf<~I|Wf?fE$g=bkG-shH!AH8&1PYg^;tz@0XVYkOAr60VOPtfXVZ_ zdqyJ&KGH4%tBeb?uYge)3G92n86@sArML11cP!sk0oYQ?=cdj1fHs9a7yG7e1{cdA7ogA z-=y*7lLaBnHXW{PWM~5~kC_=01Tc{Sc-d@L3PRx~FstwG@83WIKHblE+kuKeg4pZ4 zncl<3kq&?glJNpG(P&_`9w?Gc2EW}xfd|nkON!wlskf^O34L{19)WEJq})PCHY~W= zkR1_>bMy=hfsoaOsJq}DX#xt?>Yc^o$6*v9|3wbA1nMrQ^8X%UH$QnQHZj)ncpTVg z&g6uk0Amy;zhLrm>-l3{FZR)ZDWzY#uX^Gh?Mk~HxL$wn+B{v0m3|fZzDf^u#MJJ^ z*DQbK#?|fI+OrG!WT9%u>G*KcD}JsCk1Xj= z%3*hT#OFkK*wPrF_v=vtv-2%{)Y)*qo;7-NsG`V%w|H3oe48#yA*Jo@<5b{ww%31{ zYgJ&_2(g8!lh^c>;RuQ3F*ea{&TnB7U6c8_OMSf&qXN(HY%j(yB%_w_XU~xr*FDXd z-s$Cw^DH}_$+qFdYIc_w9YuE|%`!Z0p#8HTkq+1{u(|t{Pm0Rwho6&zGQ0lClStg! zGcTPAj88WD(J)y+bv?y|H2w-vo*nwjzjhf(Xs>e5dQS&KFH9Iiuz#*0+un#p7mE}=QSCkSzz&g z!3c^d^5Ee?>O$ZlqrgB&HR%Z89*`V;=r;hVA9$bWSy@A&>I~)*M75B{Fj!%0aHcN@ zpu+|>L0FXgjgDWx79d%H9WtrlKm(yZSUr}0J%CS0j&6Njt))uHv!eHk;A&f%_A^s4 zXa1iSAT#*!XP&%hYF*F9RdTO}u_64BPG6xXB*ldm=Zh=<9L25w22x)2p*l)ORQx0J;~wTcJdul{0R;kk8aq#a=?n9< z;T#ER+q;sHao?iM!E?dbo1{>3HKkqU5QL;Pz_tiVUjh=37XV&J^UcX;?^y0<7NkG&ed|we$ydg;534{F7pFcl=!H5&8kj^~DAtD!<$OeaAkZOUpp|{k0 z6j4bc(-*Ls5RSp`paUte&jtE{H z3<1s#w{jC0$H1(INO1u>ONPufaA-8ZxSU70aRJjcP{W*nBSP>dl3zsn#AyLW+ZMCZ zBJ)u;c&c4N?E{d+Tez5RLr@wVu8@I>bQ>b-L$Lb~t-{Dl4rNv9rR@+PfXLgBDY`F3 z0rauZ6ZjR-YcOX70>lYmT08TP8gD3ifa4w+pul7?E)k9F9|$N8r#p*gS^fkE%tWxh z8NkQ{ebnp_+HhI!V(&LEj?+tvvSry&EIFh9)1 z4?^1Z*GGI3h1`-0E}ryzyrJ(+uJBc0Rj506;gmRCEY`U+<*MuRIr1=5t6-&{Z20Fq zzjbn-2~)>3sq{AK6$TkuhLtzJ`h&!Y>PE_4eQCu*?-zNCQ!#jTVHxqZ&m$K4U*B<~ z?!0BH5=?}1LEN*U7&2fu9iL}BUcfqb(JbmY?fTKS?@qdOo{61W{aBS1(W-P@ zMFs!e-`Q->@zNOjbJR$LJRMd1E^b|S8CEh#hmz+U?P?ylf(eb@Cdf(xfJq#RZtP6x z$Mo|HGmaZnlLYvN0CT`{b?~Y{M=mWUg&gFiu&&8MV&v83^a(hwptOiS+Y^^3FSK%h z3DFD{7)HhH-7+8aPApRT206>yeFL1vuTLkP z;ps98Baw2kc{D{vcKh@N?wX{mBsEAxi2MnTr-&s`-uP_l$yR?J-?? zbc$ElvJcK#n$qO`pE2+88VEfIn_4fhdh!1Bk|;7#<)W@R9f;M+E;|mX_bkM_X=q7$cu@1*}V=<{<`lIxa^e=(t z#tJ#EJbPi31O@ko-(=+T+jo@~`E_K4pFJC4G<%0?&w7Pf8y_xp8i1CcbK<4@<;`P) z@p|*Ma;xx=Eb=A1r(~r*9de=R>aigIyOdSdU}bd^mbB7%X!aeeVCtHd&^aesoaqT~ zSc7m0zpLr4%Wur4bSDpN_X|q-ttl>(pd`z3Dv1_+}`i2H=bWpmUK+M*Y z&6{Dc>S}()aqP7mop*fsa!VQaf^lYa@QGN$Q2uzcmf!(?PT_#zzsL8MsHF#mbK;MM zy;-yc{`Rlk$f9+nllQVEtheFCjF4gIjzj75Trc|mb?!LroVZJ2EsdQ_JhX8?J?%uSeC`!0nZ`7AyW=mi=6rfBC zGyyI!9P&X(Ea+I%;T8a|D>!I3^hE&@0%<^C$eDfeYZ!__e}MWP#0-xfeFAC8?tjhp zi~s7k88wSnqkXw3e&Ysnp_wve6WrZkc>QuFFc_0zZ6F;(e>w2$O{`0iR&+@2#U;4A ziZO_f@#)i4aY9c_-04N(Te0V8sNK%n>vL337L%Nfx__P3q%5Bzsi1JK6?bH22LQXAsD4b45B5$88F{+tFK~Ozt9CO z5Ufa!k-g@CZNer*=6Rxr7}pqr5xoqgz3;&lIPzr&3lozHlofE%;N#&v(@M}+&|Ngnp%y1|T$dgUohSD=4B#{H6dXW57z^;EdlpoBY2~FvKOQ=AT^}{3I%RXWZNpJ*^>c= z1QJH!?s{xG_^lYvGbn9^G~Ce02yEZ7NMq#Nx0CyB#y***2&k@URf(pe0$CLZND2-v zf}I*7(8ZC1!VWScZBG|td2_V0hG4UK0T^cr@2(}lbco6=Kc5Bs?~oQpVpZ`0e4Guh zNO!<;lb!o_<+VA0a#2xHFn_^5MGdSbSnp7*C3?X(43o@aAX*&j> zeI$<>CYV<6enI*&EkA#y^zuDONaY^Y5(CLUh+7bx4YVHvnQ|n^8wFch?X*uv$MYX6 zLNFymz{wuW8`Ry8fe8ZqeZ=)6{HtVSWNZYIh_q@jhNmq9ni~NuhTl)vb+ekpOPZSI z@IKi6wdrwE@%p4CM93Xp+PngFs-yjq`{nH`;!A>?P8ov*2FA%=&Y06)7dJ%ikmOXs z-)9J(BYizg>oTMqy75skEk2;w`HZrlrT}NVrotEBl)iFzin2u7v@3 zkI6h;9s|0*d;A3e zwDvrDkT?1x%R>ooADsK_BLx{1*%;-Tv-8{a%L4=HeXCz~Z;5U|JaGfFU{irY?1teG z`-6i`qCO(sjbpa(5S+Q^8ii^#E{ELGCDz-8-1mhJsQ30Q#U<1$mf~p$Bo<@k978(t z`id@(rGE#}=sXDeX8r6_ZKv_te0W+~{-=%fcPq|AC9hs^S##IVbf8wlO=8Gh}wlx;;D``e^G>Ka#%GNr2Sl>xr0?P zpPmOl4%1`()x1J3-d2}%Kz?=`uEFInsXw*<41ynrU+cg4SN-Ww@;X&o<$=F+zMCPQ zRTgaP*9wS*@lmg7+6tX{z81|AE&u(_J)kt|Ac^Fq!bO;QZdb2LNZzO#!9czok<5M( ze7D5k)3+2X1P#X9r^9cg7)5Y#1%Fb#tk}Rz(0zjX{w*$t-&)W*Nti{H%{XCMeY9lw zO-=j}p7+01##)X;Lg`hmrZ^1zJ z8YGGZfs8;@s$OZA;hewr-&@SJ#YuKHxizKec>KptU7CcsVu=XH7UxaLcJp2~o<*lT zz|UE`1o2f=a~U{2*mHm5iUD94{@-<|4_^E;NENcJo&;63d~*IOZl)=*HwAo$mnxNV%|8Z(UDg;?@kunHur%!NZ-jf8~j*+bAvNl2gtry+Y3$fThd01;?H#M-uJ zaN0|_|3pOIJIB@6dqrA0L(LOhU!W2~7Cw*~Vh5y4KWhfRy)0d1c|;lo27sNA^%R_& zJ7o^mz)}0$*IBttfO*ddU!CGW-90IQWWwt_Yt-;9AXlIW%+LS@et{BtxVon1*>q~Y zcza)mn+*2q#bD+FlM=buZogr(@02#*-E^6l^OmbwV$1@#)MFBqcXfui;2Qk}SCk28 zRe-XB@SNX6S|+#Aebja!QXqoHbre=S`_+utz0>6sPKZ1~jNr+xOL24|s31-{)&fl^ z;EnJClvNf%G_3~;Xn6IY|LlVWy5{J&Y93*d{4(iKSCN+WHSF|(6-Vak*UGmHAXX8v z!T~$Q5bWLg78L90ZSP(kYR)vbw>Hu19Dv;fhun*4R*_P0uZfQi`yF0wqrK+8e+fT+ z3dqoJ}-l@ohax}UtE%zfwZs)98-)3jnzeuAwJ<+bA|`>!YXny&NFc8Osj$NjqG@gpw6 z1QM-_CVwkm-1+l@Xo>LE7i|~SizkuuIrMR7zn;-uo?#>3VY{xv_k4ru{01vV+RW)j zivRec(DJqqjr7z8DPz2mAZjpfuBljdQ@&0Tc(HZLH~PiP}-{;@%80GfK_R&wQk+!rj%)l;bv}q?A^( zu7pE0D9H0^W+wCPuqhuCsYyJk%E+4IzY&5^OY2OfWJT%o_m3j{C8+~Tc}GwJ(($UD zu32t)pv*X7i5yx7HCwf+n@U)h^jD1!Key|lkk2Uf{jF`ji(~3EHBuL>*=XfF>wuzh zxZLo)>Zj^G{0*WY#qD<5TWX_!dCOUnK9IIiVcx+pARLwp)a8m;;17TK;&y<2nOkc} zZtjTs#o@MZ_u}5AhyL-s#3RfDNreVQTLJa`dM|ujGC!~9T&?QEbMr~M9)X#;G!C21 z$JWArc zX(Ff6PegBduE^rm(v=t3bB@vIVU8H|l;Y#Q8e(J2_dq!l?)%!~$boS^@uc$o!hr3{ z4F{9>EE#>-zL(* zgQ}zG7c^SIQ8ytXDd}InnR_b@#@}K<$H0MEIA+n(+UiPA{0<`Jz@l;Mc7DNQVQ`$4 zS&Th{Z0g!928`>VXhZaj`5cTeQMQ0Iqo3=$ByAjgEbX9)dd@+h7QX-mD6~2F*izEd z-;^5ydPR8K_5K#AKoxDU;6Y?9K=r;{eySZo18iM;jq5(bxI)e>qFn{T zckf)G=q{Jw@^&RUlc6D6$KIG)y^?Z<|I7A(aN!7m{PapSKt_ZE91){6(A^-(R*l7>AGs3(CuduBGaBh{HaV&UfzNFgey-1WiB z0Y51ujRlAuG?z9?IB&ByHlISYE{`knOv_NGXTv{6(f@I0Bli6{z?pEWE2wSHu|FIA%9?f~N}2r#Ve#(~EL z=>%lu^+KQnxZVDqCJdhxb->7M_jWd5AXO zaC!ntZh&5dPG)Xc)gGz>BOlVe2nOHb>XZSKmPNZ+yGr1tDzw;wgVzdXHsE($-$%|Y z%EzIXh6=*Bq+{mg7J)ZJx`)9g56?hNkXsr9=pq^*mrowM`K*r^py2wMf;a}Sg`B%Hmwx`%d6xcCF> z^kVU0`(%f}E$Nt3w@#cWg6P51!K3`wCH_q{e^moR6{FT?@{Yst?^)1RovLqRzt3!{ z>XVP~{EG73Hef-Rz-NH`noT8>B7s`^xbE`}LPGbwdcXUQ$zMNpFSc!(oqOMxL!Z-V zK%n>*>B=P?$Ld2JDOOBO&Pc|;OX8+cZ5g1*6m1eeV>mMK70VWf>Slo zjpeZgAt5{)9gRM&Gnolrj@n3cLOx_FscLk=A2FShUGPuPN))Oq9ZR%0S>+>iqCY!c zz&xTsIF-+u+^p2Q6}{JSgRRmGJvgVTTmWB_uh^vo3&Fw>u4wfh3mWMlj2N$?Augj zV(fcin-VJVbiRTSZoX((_ulurII5Bph0l)|h#y#Jp?q=IWO)~xNO4?_=ivEx;OVnK z*_<_`m(V^Za`*#!hYOzGlDO(_v`RD;+X`*kBP3u8t% zPpG8v;3vHl@q&%=zcd|8!jNPNYsznPVMdJWY_V9?lSq3M^oJZAv@N4wViXl)ou0-% zom$SgQ@=Fcb8G(!fp>7b61gW3|KnzL6dkpEy0K!8SAJUoo ze=}A=Kdul?_7wEuacVUT(h;L|rxw|{Z=3-gLnhwp?Yb8LVu8`GV$w=kMPi5x?rNm1 z(3bBZ9FZ_8gQIf+0#_Fbs<)bEZFT@B19J#FHm2>#oktXJoN%Lsm|VBbiw%_OsV?74)RX9 zP$OKIm_HY*zZV^-7Lb@BBq-3j?i3v^L{Q^(Se8$=fyc?FQp+7K5=34A@m<9+Kerq} z+KPn5fTJ0Tv+t6T^@2M|3ZM>XLKoUz*v;)jX#lMlqB;echil~YI*7vX!6pvtR1>_x zeYv@wfWaXebXXeS!pnj$GXT9WTykQH1X^sdYBpdsQ;g?5mc2($M+bU~6TqM}d zX#t}s;9>cy%&K|A%#z?#i?`XH4+R5yYgUu*80iO7^B*pBzYl*;7To84n$ z5H_OT{PTHHMdYwFmge)Pm-u&!$Zy;%6ZvuMZWJ$Z#;NCR{PW#Kppzhn2kUm77b&{W zuS<_p08t~`vvj8xz6JpM5ACfCTe$a5wwvWA8`lHFhVe&l-Js$xWBbv&Nh7V_(N8JP z5Ncfck59PFIBqQA-I^Z-?sO{eE~(qR-5>svO_DJ3KjO~~GI7DOs46IB|vkGUO~7s%A* zwbk)wtZGF(su(Z`^bWN7TauMlh4DxQ%ZQq)Y1OOy`?5Q>7uwO)*TTjAD)e$&f73G~;9!5wW2Ze;EPxtViF|l8^KEHBeXDcF^ zl(+u8>Sm3FVo@2r;j;d`c1}WWcqb&gIyk78g>qFQ%ss`YS66?WB!|z^3fuj2=MIh= zMOWx_LRu9%{xJ8KlHsvGd!#2)DY`NBuxE3NtJ8dyqaloIWgzVJk4&MtX5cIA-|^lp z&)^K8-KH5Ea|?kPn(CLLmG5N))xD1jACuxAOr_6=y?Ez%#i6J$Tg=E613Wun&B z9S;-_l0Jx$(#I2QvJKUrSnJD9OevP^@$8?unE6!^`2IbGI0cr+-JJtwPWk|K>smQ8 zw|}ldoNG-ckKle}DA!nbEacNf70sr!f)0_HuM}jY&N#77M>MXvxm{qAg;vPdK64+1 z0eFHMLg36-^2Lc}_?L5M-)KJrP?QShUr-&ymj{oJ>U#CS$L}Qp8bGq`+`@(JN=Y60 zrZzh#w%5hh<(Y^iK7+stX0n=g3zpt*446m~H%$CU3vFB+qGh#HU3M$@M&3R5XSc2W zX((kko|={|ZDAoCH{rs`kS8)@!-r(BVF%n$k3j-%kkE%T21H8*>qfA zak14ND3N&_D8l7~?volrS}{AQJ!*1BuK4cPcm^U=ruZ&00pD1JmG{FBy+$q4N0a#Kx^#jq{E;4q-lNF z!cl)Rht)vc^@L!luZI$D3( z3R*(s-i4q1Q=lyk0L3b?n*7V0_H+_m03r&^{j`Vc;inP?V~ZU?GhC-`Dy7kJafsCe zmhlOQ83EJ_#u|9jXQ5it0J29ASq8F`0l~EobB0~t)8ie;4A_TX#X#dDf*cUDncX^3 zQ89!+4hogg3ZdNGJqTN;?0!rt;J{a`d1nts4o-u%+pvkjiU(X|BzSBPdUDo=?+*x} ztjZJMmUKI=T!?sq`1z6DlicIrE@Ihf#u0{OcO;#8`)mzhwFcfNGylbCIZSf>(_F4= z<>sa({ktk{pKe^VOE;yEq1t6NaMAC*$k(k53f_y46E2d^9Bp9x!WydJ)Yif)^d$%4 ztyZ39leD@zhIk;Gs;<|cpzpt4EBwUe^7Q#9Q{})w!%_K&a zjQH#OZb{g+Eck>Ef`(SVWn*9a#v%>0Cf|T-mSFf{uyly?!jFcNVd}v;)cfo}>O`*@%hsUdbfl7FSeqQ!ap{Wv?FuHUkmN&&^m)(EB zl;yub>6m0I-2@7uo0-ob94_}&o2drh>b0vK1Z z^UbJ|KT%!NH;c(i{^6LMhz$+p>@W{m*`EGh@lcRuoVUZ8Yloug{6e9JIJdRWn36N$ ztM`^UY~B|Vb4_mv2p?k+ZaC7QsHU0{OT9Xtcd9lSrW<=FnAO}kd!v3<=zDxJMR3V; zvj8uVM{(`pFI6>U^U9#f=T5~WTUh26Jx>8GU43q+Yv^2>`(BYk#P5PvpvwVIWu zn-c4ZilUwl=j&&i5kELRWw7Gqn4P`fi<>?6FnWRDo~wlFhkL@$Zd~tRV)!*fep7fqC>)3G(a*oFk}BL`WSt;{_U_e=PajniR(q0! z8GyZHGv~r#R2;Stb-$^JB@5M(`1DluXtO7+=9j3ruW%>hz-t!&SE^O26ZZ#h-B9EX z#ff2^UuM-bI~0D@kkV4&!nENOMkX9Ku6=QebLSQ%n?U@8_w^#XwXpUFx6!xApZLev z+RC~u2?KKIw!xafOV7s;SmS+N-e~k*Y^%7$T{7aX!e6p7GI{fPMv*}+6|b9`n+nG_ zA9i<8{P>C@H`Kw*FtdoZy|aZ?jB)EW5|@P}dH@*sE-yAo8dRB}nr;UGw#-uV$8##E zJc4M>27D~egdTAzDMXk(w7LK=XsLzo9rPPurV%BOaN3^Ie(~}?8JRpF3#^|JWDyCA z2Yriq#Cwsf$RMkGGVWTO=Pd9UW#ab~Ovuk~B39vqH4H)sZ-N3IDL(;cHNw&%l5*%= zhD9+`Mag_m{^8*kHE?t6S3i&GGO9d6ZIX*=#gy7dHfMj*eY3_+E+1gm!2tj*Wab@LL^d-s+~@khA6`@hVG z$W6#h%4;h`vJ*f$lHhIyX}L&Lf5WQ7NZ_HAghV0m{135jf@?$+*DSCP-XJ7B0RoP} z%li9_M285}YeRCp$gnYESJ~S&r%oV&xDx9rzru%Aci- zZx-wd`TP2U`+bdgyf2P3OL`O2y8*%!DwdPq;i5L4kxe_QIToEAPmi)#?Lv3fh|8u^ zHDY|)nQ1gmLV-aUncg7O;hD-Xu{1W400GjC?A*1B^N(at|5jhZ?x_z`q_V0i02;c> z7mom+0gEq^(>(fm+lCLZNPwHHPhHa*hlJ-N1doh^hNb@jq}t6nhbKNS#; z<@f&}T(o8!=qAg4A%J~dZDfGX>MYXEE60my6>pPm_9-E?OE%BsThMwY2 zQ~k92rf{p4bo`l(6_avy(!e}T4zhc5_;|NoWZ8T@Y{If@&g_Y9ujqBI%d-mL+ zp)LLHO!7kHzG9Cc6<*d*P`>#;lpR@A#fCQ^B@cDjg}d#UdaofO_gcdyopaok*tyubD7n6n>}YT zXqm&>Gvy>AXe7fPN-HVh73;Ws(607O2jP!w;v+I)VPVNh8*1oyhuJtXj`Qh_-z!Ev zz4c-ZNzDOzT=&0l+fos~RMP3)2_UBf!m3ZlGp^$k?tuX5IuXm8@yi<@g5KUWGpxq5J4XL*tgwfgYGjp`EYY2@u~9PF!|7@LW|z@2c6g7Y zq9SdIrzbTB$F+0k-XHne_P)P=Qyp#hq`w$7`sH#NOm{5xJ1B~*e0RV2OmTvk)XGf0 zn#6!)dZ1lGOpN-t#nb8g8Lo8L%%3i~VZYC_7$8!jRFrAntiaUgF8m zxBd>7YN3|cM%Jm?vfCPGF{%r@m;R<7>o$aScGD;VZ*QNYq*x?L8_kLqtUQV_5@qc> z)3}H>9XH0%4wwkyr-)kNnN&aCx~&!M#N&0zv-wZ^#q@X<^?Im%4TY)K#xI!{?l+NgQv# zJGkS3jxXh0U^u#_z&1y?vujM*@zZwXn#`c(7qLUF#{>J?#Y9iW_UxG63Gszd+(Ios zNI#yp{Ct~gd^w}gdG}V>mGXOvXXARGB~hQwlxcv}lG8 zw}h4LQ^Hl$4;R%VpJU^?z908BzTuj8;y=9%;m^)}X3t z-C3IQA@3yt1B+S^)(w?((OD`HSM^&8f-WQxG#vZ&>|? z$P=ilas6Upq54tLqA9)8)tj_Bn1(jJ@uxHM;>;Y?0XyZFxQfbzKCRzcr<-3$S(?l} zx$|q%?0DlGi3giEKi$DAulXDPKJf3TgaoC+(+^BJfffDoDq6}ap}IVo9Q&2ST2tkO z*jWkGrf3+~Yii$c+3q%?L`AFYZPTk3*-N3PxO0TDX+JfvlJi;Y_B0r{8ke2+1odXr z&e3^_>tQ`_e~l|{`yf`_-i}fe)w$^y)yL!Maq;~>6gsY!1d{1n$|S86F8c4J6yE+` zt7hqzt+>E0sMe>r8AfKfXV1yN&Mt+EiibZJ=QQo%U^e7`RqoD@C3K$Mn;Wbh@x;b- zxmVUzk0&EbJW$f-Lp$9^`V31=r>*He>OP@>b>*7p1QG&e=Iv3o^MN5&ZT9<1`^}8A z2~aU}zM1~Ob}<_229)Kf0m(5f)}^_Ksx>uo;yIO&@I^(BNJ^3eMN4fO5m1%@=Ob=$ z_z!{S%PgPn_CpR12gLbV56gf^57<^$sOCWu`wH91=7B-w{u=@bMHk1@kezQ2;Dzg4 zQ5N7qz>|Hy%`5d%24D9(iadD)ohDFCi1TBEuegWpw6&6E1)~f%7GX$jdH6{Fv&rXJ|Hj< z!oNZ~rtn`8Yarsyse<)GbM3rnyeYU|Gt4|w%_5X2>@^5U`}5T$ zFL!O>^x?6EZ%7t3Mw2>LcW-P>ji5YK#(gCjO9^7>Hm0SrWLn-E8{!HD8XXbw6dQKm z10{iT@3Wd*vnbD)Nb=q8BuX9xmb)aq;$18=@JQy4ZbbxdgTtBJMz|3S|0}($*b_z3U)i7Fs%5--7$xI3slLvBJ+ks}8BT z%RinCaosUjr(}zrS5CO2`5S)5JsQ5_n=Ok~6-N_Uu!FRs-O-F(Ka?YX&rRq1JHg>) zeP*%F$d7-~XFslZW3{F}H}W1FqTUj|{J^bi)uOU`D>FB^t32hRrER;6RkR1uTs zI_3#N&J&8;mlq1%4=pg#JAHLxu8}57x%Is}80_|OSzQ$6E+a(!!1(GNr=i(oq>la4 zZ|k_7{)HE=CUzbpxK!7ZgNU#iUo+;G`cXVv*W)N5Q!P(=*)#H%<-9g;_CmWq<({?a zm?;YDlRMe=Pat3X2fkPv}fn> z9G){?BpddlCwXgHWTc5LP4B{oH3}j_Cv3+)3LFodU0i%;yKRK!&EUrL=*CT6&z{Cm z-O<1DDia&v4)$1A9nnxTWi=j(;QhdB&cfa+&|9?J&h6sB56z$V7SnT> z=$)+RTed7qk=M9HS~ZZbVjNs#rhprFowz)B*LK(R9^MPjPQ90FSGx;$_O^qJAq=G5oI5zYt zI8yN#mLI#%oRw_MEl17D9HRL2T|Wy~RKE9hl(gn146L2y*E(dgA3pF+SgBf1%S*fR zyQwerGXMDITxxk%Ni`(@tw7k-Yx zM2*yM1UE5Vuk5M`nwrkP9L^mkcYSbOoUmPg7UNzM-JXeq{^qLAf@y=T>iDDaX1ouK zWIanWrD`L4zwE^xa8;11=J{}xvo5Tw)N^{yEpAN2iM|YsQ`05)8_PEyADRF7@RBE7 z(2bT=!+&@sB-hkYLqeC+21V^~HMDuL=`EKV)(at*V{NVRALQ*tML)mvtgOe)jIKIN z*ld<={PlW&BPVBS@m66W4K2-2*JG=HpufJ&PL zz|f#n>*KA5{I=f4(=I;AN!2?iCujHVS_x|^ZBm!DlnD=iFN>)Rqx;>1?GZ`a6Y}_n zgjIk+W0sIzAW0tZaM;b#kWR4Ih2BVx9vDP+JE+6o6puY34n04vzoLEAk1xz~|2CKT z$VU)*!rwsD!5?mtiNqK}CKL_LH~9~~48d}_YxLcC)c(gA3fuA>5n)CgtUbTHUUa1%E87ImUfqfW}q5(cRVdebY0MwKT+jThfEn1|__LY-0=Up#+CAn+Y z)C@pWA_igRV3+|U8e9{w)Pr>moZWX((iIh6exf%W+#nL~>n;!#p}Akx}XT)7yn19M#K`RTJ^1!UePTyRt@c*z$Z8oIRyr?;tjTDy*7|a#Bo*}V# z@bJ$AVPX8-OpdgDzP;i+G+wsY5LV6duO@8ablKO!9x^X?6xy$uafd!MSU+N|2>B@D zcyAPhZ6v?eJ{!itmHGgP!P%;^j7#$87>|&FC1-6 z$o~~pKrhf#WMnO11v7oHCK#|je6!zu6(i+7>%{!JoA_Sr+S?#GVRvu>e{hcbo^N$S zT%G+>{}lOd$;sEuXKi{U(PeG)Sj6H!5l#NXzLKwo9>)<#G^(nKzBIWw%J0#qX6&+j z&7w{epIhkBOjc(7XK1BtWDrx;qh#bvVBf^@EV&BS^1Y#r6kyOS+}iY^a{{5@p;$(& zR^5Uq5)_N!+6Ot?%f5=#V^wFoGTptRa(_`kGN&F%r}y|i%8l!r{eQ6T$R?lf1_m~v zG;n^Nl&Xj!{QJaMwjxo^9543P=v@j_?z+P8{Y*pOjxc;od0xlA9=Z(P=cr2hg2E-9 zlvItoR1&L1`}XU1<#@LL9hcVxuJ?z0&3@g5WmlPPJ;w;RY}~Q6`t-?Dma`qQBAo4< z(%Qy3g}!xiaonrR?M~s)vztOqlObM|GgIk50PUC^*>}cx$mJ z;eN4o`!NpBWexTxR~KOnV6VK$=W?di0ZQxX`935Hp_DM`)btHQFoPaYNl3;GxN~{q z1(#vjY2!FW8#HJLbw69}ZlQIYT^`=H9s9~5-bOMP4kD7#) zn_C2H%8K)_O?-R#Ojc=L#bu1`ih~=3Q~colI)1(SrIyqII9rr- zJOkBQBde}6yJIIeQ9rxwIFEQubA>ckbuh8e{K!wl-nG@))lc|xKMb-vj7ssy?yr2l zlgk93qkb-?L~IAU!{Tr4Tdxm=sLXXT7IN0V<{Y+l>Qgr{mW}a!`P?|HEr9=kpk;Sr z!p%+diqmD>v#?}s?DiN4{sM3=Ph|k+Gevx(icWB*X{p6`?d$W{-{>sm= zjw0Xj?@Bs4(l&t)igkzPnD6T8O?XZ^p8s4`t17WpGnhPjTEE{Nmh{zBYou~(nH6ZI z;S6R=JUo~4jM!TFhY&uTCFRUSiY;_y#61ZL5|JM|52cT3zW*4niIdRvl!lYn^`zj5 zc}ZMSLbm~Xo$s)!sFM{oqvg{JrsBWx4)Vqk@$oWlZUR8NJw*K8h!mxK%FR6Voj#dio>N zK6XlnW8r9%l3;Iz;f^g%vrACssLavQ}(ucP*J zSu3SvIcHr88&a|cQq4*HtUXwqKdpHE5YpEGmD`8g0hdrEX=2%_8e~Qwrf+-$`iY5Y zZn@@F2e-VI5o5GG2288+@#^W;8Q>x77}^z8qJia&#wHbjYi^Xslw3m5hVP+CJn$Lk z%^UXcH$m8G!&fuRrclqGSf>+X_`{ILWsA|+fat;*66QFJdmkcAOBNPGlL-V8IeMEc z7}sO9ogP3ku=`HqO|V4_Y_MpRf~q7A1YqjN^*Jr=?fd;=IK!2_pnvXu4C0)#(>wuo z6&2e`t*J^)MFJR*r}_e=zUkUyAN;a}wTF2gpZ(u|(1s9sLql4)YNp<#YC7!w_V&^% zgH*x=j1PMEI!+D3GMJdG1uul?imyp!;HxO!MQwZ)Jk{5qoxQOwDK3r*Au@>dGcB!{ z==MD*ztz!^hZPP)!nvdOsta#UW>{y=%az~bYB`bd70|kQfc}|H%`aUzy5|Q2@wit< z^JX^opL@&vCkv(2#ttH4R*T{$BJ6tQl_ztxTy~uM>(eU)=#ecABnJH?c{fw7V!Mh? zSC#*6gliF?}f{YB!I|`piLwyHkOz1 z#>KNp2vIXJ$v!?C5Tg9RuHzc*T{M^(-DpCU`r$*1gsSHFizW)LDn%8K-MOz~U#sQ} zi3)iKo>4jVT0UzC3}To~A$31xzDr19qh?L2+D`s&zykN$4zKrW)RE4h*fECyQ!tlx z>6efXy)foKEH=06hI&UzF$lQkcaEFqK3hsns?f$hKvx(>2O%o(^hnTX zeCDiEb#3IA4<9}tvrG)@)1z%5;@<-K>9F>@lXqaYxt-kiy@*|T@-&Kf1loKi+8cVDeuve$@Yz@m6)S=<7EWg?f7KyWMowBuVr0g^4i)amgv&nbXH^x&dgY zgG^;^8|wO{N-wowH9dH4*1S6*m`_OfZE*oI&b9q+7rS43_lmHP-xBG%b0`Bl^SsUfq3ONjx!(W(|Au5lR+OEUWK^n=TWt)I;9U z2nUV$AM0&tK99(U##o_Ki1zZo1&3`rb(~UJX=(Y$FPDKCNz@FyNwkvk86c6rd$$wR zf*`(3l6wS~1=Ka~KYxb(y57d9!^Uh=hvSLujGfb_TxLPR$DtvM8#h})k*`)2`)Nh- zZPGx>+^|gzzwa;qV@5r_3=C}ZNV*M_GS^AXqcxMIEKT- z4Gb_?2r~!H)Ftugef>PGXarc9VeSG-_!J1XBX#PUn3w?CMiB6iGxM0h8--LN;D%Ow z^X5CiKi3Ms&Vn4xs(w!b5l=4JH`y&qBOW{?AP3ffSK-5T@BU9r-?MBM?NSOMBA^5H z0~jCVA|j|oIM*&jEi$|>PmE{1&MYBX0%kFY9nIsf6j=8`(E+;Izra|5FM8-9<=;J*eh1lW_|vmXM_6dnz`J68j{Dgy z4e!wuq^Ljo&xS!{d~mRf6aJwbT3t$tomxMZ+u{U%>2-x$M0j{#WCnfwiA6}Is2eOf zHH}t|I->*LhuV;zP7P2=8_gxS8ap`|&8}Vu%&pd}Ceau`%xn<=03bFE;`eSNC|m1> zLt^l$<&T8IA3(K!zMpyp_<0N6gk!E9y%FAN{7-7-_HxfTPuVgxu zxP_i0SLT0GcVD-4PA$->DX4w_&oZn;leMAu+brX=iwNOg@p)g1n3~Nv>Y3WYKm(3_3dnOY8@z{? zUVR0QdnTj?Zf1BGzoq%uQWP2ak_bfuFgDK{=ZgIOeasckr5AHaY{s;N_cE@LkUlY= zL8})Dcrtq1M=+*2wN4(-D#c5+{bJ{c##Eyu&1p}teQYf#r+MS9X9Pz8WAH2QY%<@l zD-uR0K50TL-H3FkNoQ1cbc=yS)1z}K0y|J3)h#7E&!)p33bCSA*VN!c%p2JFfuX_8b{5$L37VBrWtv{IN-f_k(2<6~gpfrqjicmv#C=iIE7 zE4}N}GJneR@(_5>gcYr7?o~?Z(HaV!fdTK&j(lNXpbG5=$J4ig<#ZUwF4cth$X`!= zzqVpI{iEyL-Zq8((E=Cr{5+cKF1bT&B|SJF_4=(2d8KD5T=sFv$}I=CNp9Y-veHO7Kf?&TQ~F2yEz{0WyqR#2!aX@R5M>sVt8ClVI8%#HfcHJj ze$KI$^@e{?Ai)D-X<=J@zte+evvT}2&+!LQsjDoXc;(-Ss;&s_ag`w`al4BB2sw&~MH(QE*WhzOFm8{f4bfs7TT5_yfOz<4g2@h`u>t!>x+U-G$^(x8eZOTG z$@K3VJFrt@-H^z<9j)Yjs+u!QD~0rJ);8QPQv^Ie!^Gbfn1O@9I*wea;mk=LL7PO7{cwcn2Rg~uY>Y1^AGg)tH&EBTVl(}{ ze6MPHJRofDzq~xe4S+;4gSNpP5EP^z9Ox1rdDuz%MUEU zz>bH0Nitu|2mBZ?7XZA~c%3sFIGz!-;#G~94;a=U;5Bl_DhJ@rhiz667X(U4q}GOU zQE0|Drb^waDOZFGV>5pZ1o;xNhDhis3{4Qnw1%VHXOUP#qrT7Lz@|X#Y|G2bNG7@m zh*J@jND{wmv?QggKg@a%38g(yLA62m4ZQOE&-BpXlM%eJTH)wi#T7hi0c7$DSl2-2 zhN}QMM{uYe95{eaoyYU^1>{Y@V?XBO$6riG7w}^nD@?;i6R?(aJTMs}2Jt!|cL9M- z1#D>`S8iagGd+0%-UuDAxj|o3;byfD_Ql>*!BiwD9*&Hh9AiI6anx@B#TdY~hM>qX zvMFt*|I^CDa37xh5Sn4zkF)&yH-J4bfeORH@dC{8o|Dw!q}G)Ow_ zaXGH1UN_R4qD=L^(VaH*V(8Y@6*de{;vU{cbBVQGI?7En{3!x|E% z2e}0W|5Igyln6$oFgHS=32;OGhW8A!c0Eu9L}3g8t|XXX4(F?~LFfcRcs4aPMeZUf zUkQNC4z51rmkECe3?Z~a6&V|wr@&gX4%dQ zhCL@Q)5lF;a=3U{XJS(NkKF%ps!@(H+;MJ5c{WqWGd3bcuplg)^usZjqrtPj#`v#+ zMMi>S_u0o`7rTOXgH|hL4B1^;=E1uY*}MJKpT1cBU|`I)&)jJ1Xn+3gV(XO}>Wks` znlC%!$3nzx$!;q14BS1#pI@tJyBod?2vFvK?uj{%_vXQjBN4F*;e&O_!ik3r@fZJK zLb5y(H%54W^A&YbQDs`*&rD-Yw*w0qQz@LAr}bSceVy?xidfgc!U|~d6w&8^qPgod;3o=hR;n-5zmud~f&y^h%P^2o>b4l~c5JD6A(#A=A4{6-e>s=X@T zT{myE{}@F2n?_x;6Vay5kY-=Uu@{u0?ykchtQ!EF`X6Y5LI$oB5HVfc-K$R3-zX~j0TR@HrFQ`&p>P$x4m!aU z51g1K;8B1$!hkS7TiN&EY5{p7gek#S#lQz}Tdncy$iy=10v8P~5^}9+r3fJH25J9H zo$6pu1M3$=fH4ThctF&^CpgDC+?Lc6gGLpejt;yWm#}U?qN#rVd;{s{JWiYU0WoX{ zcFeeC7p>}Qh3d92N-^MQaxqmgSUPIdbdn>gN@tD-NJZ_kXlKRl+Z8 z(4{)}^>|vn-ZdaF{6mET+$qdGEJgzroaOdlkOWQ?pazOV6`Y_5g5n7(PspwB)hQ1Q zFdu#4RK4hZk&Fu;jp&&=lw4}M@fvscoXqFu{Cs6(;K*UKXSg`f zX{GvfZ2bKT8VP;RM=ug(J1ia%dD7JGeVIfO;zlwy)>A7fFaTQx!xN}%Dnp`}|;!I8#fg0tN}XRQ0_bxE9% zMOtvpTYAe13K`}70T%I3xfLU+7SByyYS42k5b>2UWq#_{Qe4gv+PN;ZbU7aBosg?J zemSD~qw*@{uVUsfO{%9C$NB4^uOoWJg)dicFkqM*x}l-kj5x>smjlYdO!?zxn;02BqYcYP7!ziT zBi5fM95c;x+z-sY1hm7z(hc01;2!9oLUqSXydTlz-V? zF{X`}prA-&fwBpSbwd6F1E?+JfA4pYS??BmUtsI#Akga;qWhl@f83pbc%1f_Jw2PP0;MoPxHBuSFF~9VKBZ^)Mwxz+}MQ=|;8D?+AXr zB^8HL`az-dtXn*aEKQBn9BRcFC#g*HKTKLN4^0T~yBAF*E5-po9R$QX) zp)vg1kZk(5#gh=XdVdW2hDHRs7>=*3#q;Zj-#^D#Bqesg+%IZp8;besL6~iajXsdw zNxe9+gA!}c`{jK^fOcJ$R@p3)l1KJ*Pei5Q@`+Y0uNcFGx^M6mdL5Ad+g#i#L0gH zo+0KW;_7xhopLF3bWh)FN|k>vZ19Dar#3q~5YBsE zitInqqGMN99EG8NBU-d19Zi3t?<(CZE64i!wLrp}QU7doXYKP4m9;fcnYy9FC?q0T zR!}#j;p<#5(tzhSAV1`+tXO@i->9faSX#2&x^);(6A^)VPdt6npv9unW^;FdT(E3x zV)U&!&=f!CF+r?f$6Fa!^~Y0Q8ZA7xB_Aj{;>4EsXTwv}gc43AAfCW#UB_<#FdjWX z8Y|H#L;`~W-;96n-pCre8j(0C?~Xxb(3ik&jF1MweFpCAK#1%En@Wg> z@V^leJaB~Hfg%)0C(jJKi9p8C40Anr+L6P6wmpnw82sME%xd5BiyJ5NmLS;@nj9PO zO4`C#i$G~cdNH*MvwQL{4~d}4B81Ha7`x!Ggs>E(5r)dX z9N_!J?P2pSxCwnmK+bv%rc6-B)5GgBn69=3RzKu?BZ5Up-I<5-|8@M+|KJ#eZWBp6 z=XU%<1gufeX!wuht0D<1Re!4CcsQAwyF>@eh3r5GOxqD~0u%t&mwQp(zwB8qULyDv z=<(6--2V>6O(bN#fU)m)Vbv@W34qokX<08P#O*^w)Ob8)zum{&}JY9E%ZE3!5Mjnl0O~-+o29S z)R~Hc@&HLo{gvCJ>038yVRYCM5P8S)yH(5wwix>~mCU8O;zoMGBcePSsJ3pY%km8; z_x3J2bn)zcnb8xeA=i7;{BYA;<5zrjSxT|8j+Da(3M%ubfi5F4BQB=57G(I% zJ-{}ldeF5VO_1V#<%#pI>EgRYP=EZ5ia$!tfDVEAG^ zp~D}+|APIsS*)6}GlDP3nuIb(AeTGfN1MR4A6Q9@O2IfprK4ZR`!|9L#>eCT@rZw# zpz}X`*v9wSrs^Y^qcxw=W1th=7uIk*EnF4QK!`^pW5J`Tc6Qf851}IQclr-#eBJ}k8e;j zWwAXh)hZcPp*6+X)VjpX1B~7cOM*JQIrA4mmCTv*Yp&PDm6s1fl!(M7KE7QD$q%9E z^lIap2=32Z-l2Cke)g#G$@eEi!SWyZo{a^*%PlKkT5gR*zk%lXH+zXC(s;Ar=^{o^6G|Rl}o3XX;0bf|EC4mNto-FI^)erc_s7< zKt!izl@AyO2TgAWm`Cg<#gmKvqq+viM39@64C!^-M2o}829f4GCWcR zV(#wYVS7(c7=!^slqAT_K7S^~r4k5d?m^b6upj~rEP(f*z=ZHtNM(nBI%#P=7(f*= zJy?Zh1^)Hx4b5uS9&A$<7FuVIJMUVxS{1gNfKJk~P`W>nJNPpLw4B z5U>x_NW^ic?TWX&abwq!t88@*WwDA$p(vm7yF~D`Q^CcR z-1fJo^!57JU|z1NeR2Z|eXgp&n9b0PGHV@NDJflt9sCfL4ZMX1cQiWYeg>pgk{kEN z%kiHa;n!bIx~UX#3&}=&`u!23h+^I4=)tqHn{`epzqk2_-@W+rwcrK&b|CA)pP8Zw zf!w_A(V5j~&zT4b2^`Asj2{-WHH7(n9r5X+_wD;QOz1IVCSDJ)YON*3|L8v4P_M8h z6g@jIS`Ne^`t++h_r)j5WZs3X<@Q3Z@Eq0E{s`^JYCSuC1>~u z`=LV?uGi4e&`-09>N-BOT2RxSZ&`aULAm@JR*Lh`*S62hB*Sb1384?y49WO`5HVp? zxVO7oy=h1uCc`vdx=*cNw9&aB%E$O);QQJ_L~dUA-@i1VXiM~(mh}2>$+Pa;H`tNd zca^|=74!^ab6@i~!xxe->S}8PZ|QhMt@uiFIjJ{W6ggft=&uS#lK1htQ}IYjnTq>y z=S+@YvI@m+jc=)lq3mL(iwN)YaW1|xBN4+FFV(M7PmExzwb_#drd%eYbf#Ppoab3c zFdbydfB;7E?b}}HO2&yBS^N7lW#5 zdwUyZ9<3;+myE$*zR*EDP8*ai6nkkP4VrD>0~7-xp*_lX86cr>@cKw(J_L;pG#+xP z0$T-M2Aqk=_+?~d1cEHNZ)wAeR#H_R&XOU4i6<<&3gu$+!j|*%x?!^$3DK}{vC)oa zmOpR6ECcqU02y}Tw3_|_NSz>+{AJ(;WP-g5=&j)rONLygP?Z3mbQoqNaJs=)K=lQ1 z8u*RSK7ERZA_8_%K{>NCWVbe~ipq3C{G2RQDA3*m6dM?W@XDduv0IAZDzjaZK!AXt zo`KB-5eZ+4D5z*4Z3spWp`c*cni^AgI=6%UgoL{K1NfA<&0}lML>`FGfF{1##Gzg_ zij*T1h(Iwgat0s}B_$=88^CVJD!rRGwvhm2RR{)uhfJSSUXtaHAk5>M+KD|ji`_YkI0b%*K#x{|dI;c4ozl|#QiSNTY5E?S)pZTf-PweEN&gh5G z-=Ah-o{#c;6w)94eDY&qT9JgAAZ<LIsiwmd8*1b2HVhjzP44o{@pwol2 zPT%6P`t+Y$dU#^^`6Ci2Va&TAx%(R}tt8&Aq}6J#XiRG=M(MRjslu!_u%gWOVe2`1 z=6_b6e4I?*iNyZn9F&kY3_5N%c>y7u?J%eMbBmUuMdGgUXr1-@6luTkk?Hy$UpZRZ zqXbX z(c8F`X|RVOp-_rV3=W^=b$c;!>((@%Jp=9O-FcniY}?_bC`J9}wo~!XHu>B>ngV$V zdpP@9y*!nQ)%5uIe;l=2x~=-h4ztA;b36fm|7sXD)x_{^ueJQvjOKQ#k56E~P1}P- zbx++hl^NQVy%a zuQXm(tT4HS$NM_J)(*_$f*Qy_n6+C7V zn{v8CBNp=%-wrQ0RZ{3o&+iMiehJ9P>%X}d6}&oLx$~9v@fR&=sz^(nPD|?oBkbb$ zPi=^{XN4`!&SmTUCVy^pG?nd4x&Cl^a$%Jq*D>2iK3SbKKHK_=(v@Vrj!SR%AS>_p z9oL{E+86j=D@T>=9Hw}4HZn%j9x>+8y2pC^T9glMWS@m>{tDZ?SqHnPO`W6pd-p@e z$IrS`7qCwV6|DajKX^WxoP8k1ar0{8!}-fB^7uHZ-in87FFE`j_UXMW?vwh7%?@Od zpYw9SF4ti`6GMBy;Z1tx1=%+N6Ge4 zY-)A=TYJr&+IHkq6V5eFO$P#@7Lu7G2od$_(kyd8sj$-2II-4BCZgW@qpI>V;}g4U zzxN4l$S3i(HxaYJ?LhI%tbA{;)-l-E2R5POjmg%|n6IWo@0>fCH11)V>Ss{%+-;BZI2akjnd}br zRmohq^yZg@fr8)0ijW4W{&wSSbyU(PNkAy4+Rus*h+8=Eu{9oY>d}tL&K!MnJSsv@ zO>QDV5hZVoDPz>&!Jt~DSbNJsqF@R3xyt~PvtxA!GEb6KFm#)6l)Utz{nr5eI0i40 z$bSG@g#xjHDSJxcRt%U+bX&6M-zTiUQj0ZApsG3_5)#t1e6G)_Su$n#TyBM9tuuh=UL5<4F<|_{|=2xC9J#yI}tha^#Dl#=niH zE}H5U=P!fi)oncnoa(0MtGooVKVxRs~5%oMG*Y z4!A{{RTcZjj`oDmAhw55JZnefRr6(Z+Q1fn>UHh{Q4v8SW`@8JLi&H0)-P>r^Z=#j z&&>Wt@_33>C?}H14vn2tVsd+r^Be8Kk}p;i(Gu@AXSUW| zJ88^P4G&#F-BUC+pN~UaJLxunEd$T;cH= zFAQvFy;9;vQ;E5qsQr=%T|FvIIo&J2Jl`n3%Fdn)w}^Yp!c4ny{5bMFx}Qt1De9Vq zT4Th|A40xUXuHEl?!mHVogt#?ecPh3h9K2S7ACpYpdFNx6J*~4Py#fR34b-)Po~mG z+|OxXrQ1s3Jl*e4W+kMoY{Y;56afG0vI^7LQa1&cRIrV8)b-7h@=qX(La>$1djo)x_$1y|Y0OeIV{ZvXh5u_UeO4+;9YR6=Ac!~F zf2N3=;>{SG$Tz+1KdOfY?=H?bdke_de@*ENR{cCe*`*So|KzV!3aR*?9CcZ)Hk7nB zO6x|)73ZoBmyzPF6t8rb+uwxo#5(w&lA#>dirjBRgCbNO<7t}8WSv@t4GsxWOV)AkkVhhVSk{!T~c-?S37y@;}u z-ze&}zuZkqO#F)fszxv{xtM~!ppNaD;iEj0;i=T21EzizOR-(D2{^xVJ)$zbE|<>KRIGKB4xPgPl*db+6qA1% zEw2~HnVDlxn?Z_n^^%qO?#%RQG~LLPs;Q(`rO)caZ#arxjQ@mibjz2WqF>oG3J_OW z2CXJ+1u=>PRKNB!>RL)?>$wZ4)#orf0iLq7VKX&@^RzOzKod{@?iRj6iJv(g# zyfkfSVsvN@uf%BViQeGTrwcdW-<V!;;;tWj|JzxN0i9%(jJ`VM*_^<=60prb05!6(`i^|Ir z2Wb=eAL?US0NRF@#5XERJ|^R|<84cSlQvtuQ@X2jQS4{~o;V88_`%?{kf8W$Uia*U zWLGyUb-gT}L?#)>iiX_sJ&1hL-Z>jycK~`@=I}anwLoFnMM4>R*$3XddE+y~y1x`F zlfSC~kKn9L3)iES)7f7&Qx#`;xw-2RUfExnl$9Bzr71#&qv`(6O7@W5tH~3JSWk*E z^AdihS$X+~Xv=Eiv}cD16O+1H(LC4t0@GK>&@juM^0xw_81C#`jjmc+j0({%hU}qU z67K8Z!Dhaig1t4JlpQY)r;S4U0&|_!46jw)7AH{mAW(Jzgt0524|1qPa+Kf#Bq&Z# z6M-y2Nm&`Cq~xEI^9T+caDPC4jE8z;O?`b5L|5LpdGlFfAEbpKsx0W?U_8B;9z>}J z`V(jsAunS1Q`zn1vecGKVf17GwQc5JHgWZ4_O8S zaZZE9jNk2m5y9VrYO-@?hN3}R9s~#_YRvHWy8YYi0#rjs8HFCz$SB)h9h5XsnI0Ae%=*;4=x(Pz3X z{xVMQ9TpbN+UT|69Sg;-DmiFz&i<`3wB6m}>+sXR>MtQX-TSq9oAIUniH_Wr1t1Zt ztY&uqnrVNxlFS3(6LqCXRJ@c@L|MUJ8*ORml!-aa~qmnXEIzx?ZIz7X+LD4rwJHDJLLJWgs+xiS#fK3yBmCTxQ?f0@Ww z*7B&BP4DdPS@mJ_Uj5Nl*fe`t(F@-t?z|`F@wUUSDNn|fI18uyIhIaQDhlF4!E8}Y zZd7+?xCs-pmhIy}+=0w^^pN~|vB3``MT4)}zL`#c7@{SLW!02$a&ihg1I^mB*OX=b z;pmh{-CxbgO3NOWm`7Z^x}TG#KS5Oi^5k~NOdp-P0z$6#>T2pyiAOsYY#=5V(}u08 z%0XUECzVkh^3FqRzD`DjhD|Q9!B zS25&VkI@!Z)_X>?$_F3t2XFEEe-B18)>Kwz=S~~SIz1x`pWroM=Wzh zzaj~{z{t?3^x#J^1_PBt_q9Jn5?Zvyy0U+~@$f>h{=8n@ZN{netmTgp#;khV@_~<$ ziAisLC^@b^`HFs7QZe~T02mb4QZ6H@6Z`aZ7s_KWEl38|!CA-D8>QmO}W zRog?S?Q!P`><~}~3qQ;V2|q-eIAj3g4qZsIf`^Un3({oz zv>+U^4#*NnqJKU!Jq=M4{ZiD0Dm}0;?}0g*dYuysOo>3wum6Iy=JIrdLQd6qM(u4; z80%&4H|*#&;vD*7wdT=U{`N2lJfWQb+AwgM1tOgpQ9c;nA-;CE^0h3defPX0uDKNo z#qZP{HCDfWXGQTmenv7%w^3TFhfbK9lR5l@R$bCPQA|4XK>c=+577bB1qNkVmNNdB zdu`HP#uwxquk@_n&=Z9o&v||zpn3Spmo@~7vrD@RwLEh(?j*1JcJ8r}U`8yoliR!B zbuN9Yf@pn!0xjw2$k7B4X+ySQ*P1uV_n=dP6uX%}jzr=MuXP_7V8*jrQ%6@(8&!--OAn*zCv!*ug@6L-oXd0V5U&i6T0Z z&CLscjaF_`KJ3AQooS(2V!|hRBNgHNNlu7&f-1VEc@GW@C#OoqUi-&WT=(y=?k!&F z-$D0NyaS$TuGPQ1|7{kimm|O~q%;R~mPv&M)cDC;Duo*D;Psej^yGtwIuhCq4@qQt z3oBG1kMkO7KCnX}_Bx0N;CS*rG&q==hQ_zXe$@^%$@XA80*TZE$i6k?F^cJGL!P;C zF+flV<5)r}swlY}T7Lc{Ac#Yp1Sq?i;AxB0sUYWt?+&itn-J!%59U{LZW|wvD5}su zuY=j#lx5W(jEIpW4UlqyBB~x*2f3V=%F2jL7hE?mVXioJffWV9i-Xv|a8eE|2zrDt zy8B#Kp0zh4#Y9AdhKv!gGHtBc!}=uDJO+|99;-R zG}?nYs~ptH@N=m{h86JG7@j{b8@aHKgd;MRO-By4u8^{4_}%9^B5?u*6L4i9{V$2v zF%*Wcpt6DwG7+-d=0uG1tZR^X81Z0{79a58$1`+ADd3d@0}E0B<=`@aI0W&VySTbO zgZPkD9z~)6Fam)II>-&w6v`)n)kVr!u3n2=T2712R??Cqk8`p|Im)?tQn3dLZ{UC39%*^~7$aS=k31VJUgWk}n zyZ8~#B{J`76Dv@wxHVjchHyZe0O3uD5K5K*i5iLs3mbdy-#;sb3hSz=i3)SBo9G8k z1!tUzeI_qHyTw*{b9Q%k!<4nUu8zy)tE#H%(!yZdopa^y0kKo7P5gOz04{eeXJaDC z0P7W)V8P%5#gooxW39~~(dwMyEi`5$Y^TJT(rLr`VH)_2(K)Tzv>zpcrVb>=aA>n| zHTJ^Frb{W3rbo?E#h~UyD3>wx*XJjtQw8IeeYdMZv9N5TI7fSm?1s&G6qP)9cq3;f z>)#h=6yzx|_J}`!A45%-NX>bC~jT~R> ztpC}0{fR15PyPchQSW*Weny^QJ5GIZ@c{N1IU;c-Wye^bpQiM^%1mX`HfevTAl7%g z&`Z8%<#YPM_DmSZoM&fIa-GXRs)5pzPFb8uOy4zTt%~KGRImjsztJFt>`mJx21?K0 zABaaLAd&&*dxbZn)2_51@`I(ba*UXY^haY3``AT3_W^pU)nt{{i%-UNfi zh?7Cs(D#=cn<33>+mVurOs`1dBA6DYttE#{)}OB#UF()JE;XL%JfOUQW{sjK%$J&g zII%bW%(&d@vOF?+=yUcCd&U>rSOWCUhB_}EejG~DyGrd5`#VOM>7K7Jw*0yj`sF1_ zP$Vb>WJvoomfqvDfr@xowBDjc!R%egP zQNKchqlHFSL>y){H7tbfRSjT?FA0`VB|tU~5PQ{&JD9JItp*%AdexO$kZ`MCJ(aCD@Z7o>RzM z0(~Nqnhj#ei_^MyF9hrdnS3ZoS`zkII*cw)Zgd-d%Sjt(;1kR^~qw!>tty#^8HxWRsUzg$?Ck< zHPz(Er0m~T58y2mp6ZG;xVJ!HXa|(lAST6z$M3(bseQ2Gf%FHSbNB8F98-gl0tSOf zz8*5<0CxrArU6S8_#Q^4#vnQfKDOLzGy#evM7KRrDVXnJYoddcQaFSN@bRw;LGk?O zQ+Y&qIO2pT6j*_WBqHVo?F&eaJV2uN&3p_x2v85^TUl zUAJpiS)~hz$;o@qPxenh8jMJktgNi2;T0jr5)?$m#caqi2ZT)zIAq{4xZh5q!!7>x z|8f$MeoSi%&&1u$t+KnFil;xUHlHcToEJS0e z_0gZO`GZz(&SM|P*4DQEAmz*Gv;U_B7?Qbv2VGBJ{{#k!FjK?smu#A}d8fiqDU?>;c%C8H?YLGl8KRqoYDP(V#I zxO1@^^?v0-ubA4}gos;&-BnUjqCy4qQ^d6ieh|nM@qq>8sHU|csD=8sB!QCx9JH`e z_FL%aWl#peAh{3jkmQk8i73hl7-+!@0PS&M*9JKCZU6jw40BZ=$1K8XZ#B=q2K*%R zc|>eQYNgR2u?BMuoDa=2tv53h$>2CgM`q1ILqjf`gOY5nf?yNlKm4sY4UvKUY13SD z%(^F`kgK#OiFo=nHG6z-VZ-a1hqQ4(^!EcU=iuP0s>ZSh?3L%3PgcspNSYu}`B|pq z($3DD-BQmFD34r^1b0yC>Rp0YJTY=oQvCx^s~|%I5Rug}pFK}_4Px&y;~j0I*Qwe& z=x3vDZ$zuR1B#;Vo02h_Xs~5h4|1Ww)t6 z%kOo%{z%(rYqj z-Pbgg^yUG-4dg+AuF$6apJ`F${)T+}tLX2SeLAohAuSBf%{yt1No@W;DQ?c=dX82$ z6Pd?Ew8BYAH~c^>oBwG@@S45v&$7iE+5*S;BZhIYC&eORzO9p=M?c}B3~rU@o>X3c z*fdZfm-#6;7?XD2#H!&Uxtl*Cs)_4TSm3bdBs6j;9B}8yx6gKu>a<&}$`v)#Bs_8$ zohn4?)xdfTz4LX+iM9Cn`0|^Mf*$n|2G*7O>|Eq(5lv6RVe`pzd%X{(tlTaeW3@5| z@wYluE*_I{I}CCL4^FkV;@ z98HXheh-T8i&hHX>hh@%mc(Y}OwZg-c>;`QuUm3AdcVAB?QsX~zm_E0wyY$w9{(W8 zr%bsN%Q;Gw7kc8K((@`mUL=@5NOF0y?M4;&Xr?cgR%c|RJg=Kb#pq$kVY^ExlcKU_ zC~7rC#Vk1tELUt75)r4##yfxBr6x(vR<2Azm`KJT=~EXM1gR5}rrDa}LCfXV03QwFwZx)=I3ccT8(ylD758`bvk z)s5>Rvlecr)D?y*)90Uw7bndPof>V!{mCZrhDMgf78eJ?tY2xKi_rWS;2z5R7cC*9 z=5YIkEXG7bL&G|_sQs2#Ri#XjKx!Yi7|qo>VNgiIdg?XwO=Jc6V;gMUJl&vLWb&P7 zTsm)>JfdQuhYb;8i0~Iv91{pPGTdk*LW|6UnQ8}UW8yCEA!p-n)(}#n<8j! z&)?Q7A^c-xviT$wFseigBSz=S^?- zq~l}mHw)t*w0Nkkzv9NI>o3Z=viXm5(gAVr`R@GQv;x*(RJpy>OG%1p8> zs#zgL$07aAPX$cyLf-86@9`+T&-WOjsv>z&)>oH@6)!+EL(cE=9+EM*G$|XNebZn8 zaD(B`G+_upe|G`T7<9d^Q4sJ!1Qxiq?wu6yd_QSgg$@#;jnf&brm|$>(3fmfhtk3X z2~?MZpFVoDdNt0sbDW)b8P#O%6tnFx+;Hu&XyqMY&ac6~)S|cEMqveGF?m6DU@xxo*G%AXC+L)lX7J3CR|{u_dTnpB8CNXLNK7C9XXxK>m(O&kL=JYwUv~ zQ>(~*c6Qd|bUg=W)X|Gf4CV02baS)nMQs%k694^jS- zWBe2HF?kQQs-v*a>PtC)X`F1&R26IU@j93cfFGi7kv?ogY>^|dT~GJ&N%2!x5WX)h zxw!wY?7AgnXGdV&P~$%VpBSg(*$#DPUMVu$>PNKxmpIUo;}eqE zw_7yQ($HKEZdB#9bTs0KI|^XmIm}s_r*xniPaoXU%g}c*FLK^@WgXlf5BX!pUO4sWy%+CoP1)`=!GEcXA9!LWnl79- zIdf!uvLP_a1P-vj6Ywa(%g-tqp zd$ndKX-x7_B=mZ^M#CNDVx7l>wH55&7or5Qq+|fN*-?IN?QrB^oh(dcqkU1_{SA}B zmz+;ADJuPgnE|gqPvaMkhCLLGR;&5z+$}9jM5OY3q2K9{l;#&*l^I6JTM?7n-USSN zw}KqTBb>;IZ@(b@IO#CwTKzg{tTVgYPHt06#$##&<>IQS{a(29a_Kr_KacnyD!!kA zoha@1|8)prB%Du+j9ki6?d`|ySMPjcDN-6X(_y*j5a`>PY7!|@AdDL#)7f$z%oo|Z zzdIdbUXggh;`x$hJ_k3wo+)*FzIJtTqD55fR^^I_UANr+=I4ju>zs+YTU2P@AM(Cp z;TKEUW_GPr!Zo&f$W+21Ebw8~vH5D$b%lyp^f!kVMu?@jQX;>dJVl#TMae}B51kel zhNu*#m+r!GfLQ6y)X_6lFbdZtpYv`>V2lI&LU*h%0{3r#Xuwkd9Q1F0cDYJa&ub6`EX8zc9n6 zH(C}C^=0rG8UotLTFD$;59Sx)(AUP$reDg`S2xs&n!)ihbuubGuOhW5tVU2cKP9b^R85k)nC=J#gx@^F09K@ma3 zA#zMQKfu*umOWIppSv2VDeq|8jXQO|VZ8fUV=D>UtYC)3%S)HcfTWtHPR8CaLV^}? zO@d*&$XHDo%2}}ICF0DQhj#SKI!}%gc`uXi_7=MxbJ;8RYgfRW&hYVDnVkOQH^0W~ zva_-vxPgF)=>VWrA&FMCm_C94$cAmwH?t8eQA2td9a2H_D7!6_t26{M5zvRq>gqnk z2I!8jNRANV^dB)FeV_cPeX%`EiwhG)G*RbFrRhBxs*o!Ne2Gue@%zvrMo2)|7rlsx zFWfcvnQ&l^obXT-T~R@yr3y5n+BuTTS$ex^!eBN9>gL(eRmTd8<{QS}YQ4nd8Gbpb zZdhU;DEOT1RyNfgmY3nN{BxP#1(wj9))T%^bZ_^t-INQPzAJG49_%2CS%2-aIFp|0 z^0R1sv&p}TYuLwynIJ3Q3=B_8%|^I>+_Mw$75!=Q0?yxC0V2X64uz)q5hFK-U-S2p z^j7fIY=hH%K+xKF=JXKlmMOk?Jn!;?k>azkj2}Jrt9#&VLDiH+1D+I?kzKvL1}C?v z-lxRMX?sy#tD13pVipmYVu{xo2c1uWorB&1yap*^1L~dg}1wUAH5z)An>1 z>^83Dlsuzl_X7r}!08%o+>@n%x9*m=!QBg7b5OP5!G!u~?#kyat1%>K7F{=UaB!eF zVsM5js>i`#C%J%K{Mk-ZYLQlLbz@I&FOsAsvQ*f-fVX#exUdjJX;#(8_9((rtRb1NQoY$KlxvuzetY!?NRppGVR;% z@D1m%iO|-Cl&>W`1*6$JeU(Oy#Sr57`)_uT_2pz(c}6ik*UMD4*^~b?x5 z^f0oFmhN^Po$N=wxE%Kmoi7oZbTk(idM{`!Z&Y%UNO6Z^I4;#|d@D~QMz@I!WZ=_Xl?%IVJh=ktCa6I3`}@|$+%AO%Nwk0ba-?tF}tWEU3R6Q&566Dz)Y09k?B zA*WrxIysJ{NyFi?)n?Ue#g^=bMmL_)hf}3AwzW<{)7~nvw|fue&Rt9A=omj6MJMUK z(}&cDNtNZEty_Qj1=@kF-v`eBS(G?sNxpw!bd_eU*gafvr+L{l9V^u%u~`!p{SguG zmX{fxa|<@+>6#5k#XfMIJSktSN8=ON{4~MXa6rje^l5nlgE<#Y^nMv2-d-_Kcj82V4O}p>e>eA*!h!K;fobO5 zo$S-+s&;j%$n`KYMRv~q@X6{dvK`yLT`TU$iledd(S9P`l}t+7)(l=i0f(7BMx?Nv(@(wQ%r7lK>$ zO_=$3IJR$BloH_>N(|zB)vTNp=U>O5#q44f6W87w7;JtZxp?DMq2}pBFND_KiFmjF zK0h&e^Wfs#Y=VAmc~#zoe`9MNeF;-gg1QUK)eVcHdrr7^z_f>l!0pG6&R~o*+={<( z^aD8LzW$~n8W6(kwsA-JB>Q4R!W39pPs*Y#Q9;d0#PF)kM7|JENJ6NNaTI2AA_S*C z_@o`Fzt!H(;0VVV9dty$2q{VUm5Fk+)P@|%b7#PRz?)epC8k`W8q>6e;~zJrF%%BpHsw3vQw|;c9-Jg zphbFjxnv8;+=dFut1LFY44Y**9CaM}TV>>5ZGX6dbz=%=gyRN6Ts?`66+jC&N%LnW7)sjRL*tbM0i{AwbRgO zHUM7m@%KkYkk|TbNg%?Vc-=QvM0;fAF7n^4;u;4==~ z9<;Qa`oW8w2T%3X;lw~m`v<4O>I>s7^vYL9>9NH`QOi26ub`j_j}~6i9NWo`!;#9^ zH;~epJuJfX@cGS9Koz zs%7l7p3XlG&C*!+^W#1~&qr(My&-p9g$7hX;aSBmW_F4#dW>)taWsN{3u{myDV(Gt zeXUc_K|M-+HR6_MxV+q0|MZ-CdYy1|Wn|*`Rx!J5nBvp7Y{BD-Kc}bNu4xxMiocw^ zGp}d*MjE|?Pw~N)JGFO392oPuj)m7dm^_IeHOV`r9zXDc~wPCm&1lZ*Yme6?$Km@cg3-*^ZLz;d&Xrw&oggtn#_**_E_f^ z#WMj{Zl(L%H?0C@FPxWo_3cQ;w>;tRl_MuU>z(J=kxMqbk4N>Pdf!~p(8zRPxI^Xg zts?aRkIVZ~iuWv%29VI5%rhM<)hyc}b(JCg>%>eY?OVV}VnN54m_AGvC#CM=e{i69 zn-By%@RW3Sav z>%4>AMnJ3lNOYHcmQ|pQS&vZY$lH6l5gg6UM%nL}f?l-F3g&TX1-s>CPL_S?@gANL za?<{kDI;$e^U?EhGgHvDqLV9Ob*~m^yf$p^arkWX+S}*G_?q2&JP@ha7@^qgHj^!q zQpa2DP9xWn|6tlafn7ba&C-n|tmrb&_bz37W$*h{1F_$ya-8NY eOq>jGzj+!;r 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

?7+}!R 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